From 6009d3a26b3ffbde1810430f12513ff8c0c39118 Mon Sep 17 00:00:00 2001 From: Aleksandr Kovalev Date: Sun, 7 Aug 2022 20:31:58 +0100 Subject: [PATCH 01/49] pull support for breakpoints update on pipes --- debugger/debugger.ts | 26 ++++++++++++ debugger/lldebugger.ts | 5 +++ debugger/protocol.d.ts | 1 + extension/debugPipe.ts | 79 ++++++++++++++++++++++++++++++++++++ extension/launchConfig.ts | 1 + extension/luaDebugSession.ts | 43 +++++++++++++++----- package-lock.json | 4 +- package.json | 5 +++ 8 files changed, 152 insertions(+), 12 deletions(-) diff --git a/debugger/debugger.ts b/debugger/debugger.ts index dc6c4ad..8b3820c 100644 --- a/debugger/debugger.ts +++ b/debugger/debugger.ts @@ -76,6 +76,22 @@ export namespace Debugger { inputFile = io.stdin; } + const pullFileEnv: LuaDebug.PullFileEnv = "LOCAL_LUA_DEBUGGER_PULL_FILE"; + const pullFilePath = os.getenv(pullFileEnv); + let lastPullSeek = 0; + let pullFile: LuaFile | null; + if (pullFilePath && pullFilePath.length > 0) { + const [file, err] = io.open(pullFilePath, "r+"); + if (!file) { + luaError(`Failed to open pull file "${pullFilePath}": ${err}\n`); + } + pullFile = file as LuaFile; + pullFile.setvbuf("no"); + lastPullSeek = pullFile.seek("end")[0] as number; + } else { + pullFile = null; + } + let skipNextBreak = false; const enum HookType { @@ -1251,4 +1267,14 @@ export namespace Debugger { return luaError(message, 2); } } + + export function pullBreakpoints(): void { + if (pullFile) { + const newPullSeek = pullFile.seek("end")[0] as number; + if (newPullSeek > lastPullSeek) { + lastPullSeek = newPullSeek; + triggerBreak(); + } + } + } } diff --git a/debugger/lldebugger.ts b/debugger/lldebugger.ts index a940acb..2b3e6bf 100644 --- a/debugger/lldebugger.ts +++ b/debugger/lldebugger.ts @@ -55,6 +55,11 @@ export function stop(): void { Debugger.clearHook(); } +//Pull breakpoints change +export function pullBreakpoints():void { + Debugger.pullBreakpoints(); +} + //Load and debug the specified file export function runFile(filePath: unknown, breakImmediately?: boolean, arg?: unknown[]): LuaMultiReturn { if (typeof filePath !== "string") { diff --git a/debugger/protocol.d.ts b/debugger/protocol.d.ts index b56b4b4..879cea4 100644 --- a/debugger/protocol.d.ts +++ b/debugger/protocol.d.ts @@ -119,4 +119,5 @@ declare namespace LuaDebug { type StepUnmappedLinesEnv = "LOCAL_LUA_DEBUGGER_STEP_UNMAPPED_LINES"; type InputFileEnv = "LOCAL_LUA_DEBUGGER_INPUT_FILE"; type OutputFileEnv = "LOCAL_LUA_DEBUGGER_OUTPUT_FILE"; + type PullFileEnv = "LOCAL_LUA_DEBUGGER_PULL_FILE"; } diff --git a/extension/debugPipe.ts b/extension/debugPipe.ts index da8da86..bfa662c 100644 --- a/extension/debugPipe.ts +++ b/extension/debugPipe.ts @@ -7,19 +7,27 @@ export interface DebugPipe { open: (onData: (data: unknown) => void, onError: (err: unknown) => void) => void; close: () => void; write: (data: string) => void; + openPull: (onError: (err: unknown) => void) => void; + requestPull: () => void; getOutputPipePath: () => string; getInputPipePath: () => string; + getPullPipePath: () => string, } export function createNamedPipe(): DebugPipe { const pipeId = crypto.randomBytes(16).toString("hex"); const outputPipePath = `\\\\.\\pipe\\lldbg_out_${pipeId}`; const inputPipePath = `\\\\.\\pipe\\lldbg_in_${pipeId}`; + const pullPipePath = `\\\\.\\pipe\\lldbg_pull_${pipeId}`; let outputPipe: net.Server | null = null; let inputPipe: net.Server | null = null; + let pullPipe: net.Server | null = null; let inputStream: net.Socket | null; + let pullStream: net.Socket | null; + let onErrorCallback: ((err: unknown) => void) | null = null; return { open: (onData, onError) => { + onErrorCallback = onError; outputPipe = net.createServer( stream => { stream.on("data", onData); @@ -35,6 +43,22 @@ export function createNamedPipe(): DebugPipe { ); inputPipe.listen(inputPipePath); }, + openPull: (onError: (err: unknown) => void) => + { + if (!onErrorCallback) { + onErrorCallback = onError; + } + + pullPipe = net.createServer( + stream => { + stream.on("error", err =>{ + onError(`error on pull pipe: ${err}`) + }); + pullStream = stream; + } + ); + pullPipe.listen(pullPipePath); + }, close: () => { outputPipe?.close(); @@ -42,14 +66,20 @@ export function createNamedPipe(): DebugPipe { inputPipe?.close(); inputPipe = null; inputStream = null; + pullPipe = null; + pullStream = null; }, write: data => { inputStream?.write(data); }, + requestPull: () => { + pullStream?.write("pull|\n"); + }, getOutputPipePath: () => outputPipePath, getInputPipePath: () => inputPipePath, + getPullPipePath: () => pullPipePath, }; } @@ -57,9 +87,12 @@ export function createFifoPipe(): DebugPipe { const pipeId = crypto.randomBytes(16).toString("hex"); const outputPipePath = `/tmp/lldbg_out_${pipeId}`; const inputPipePath = `/tmp/lldbg_in_${pipeId}`; + const pullPipePath = `/tmp/lldbg_pull_${pipeId}`; let outputFd: number | null; let inputFd: number | null; + let pullFd: number | null; let inputStream: fs.WriteStream | null = null; + let pullStream: fs.WriteStream | null = null; let onErrorCallback: ((err: unknown) => void) | null = null; return { open: (onData, onError) => { @@ -113,7 +146,37 @@ export function createFifoPipe(): DebugPipe { ); } ); + }, + + openPull: (onError: (err: unknown) => void) => + { + if (!onErrorCallback) { + onErrorCallback = onError; + } + + childProcess.exec( + `mkfifo ${pullPipePath}`, + fifoErr => { + if (fifoErr) { + onError(`error executing mkfifo for input pipe: ${fifoErr}`); + return; + } + fs.open( + pullPipePath, + fs.constants.O_WRONLY, + (fdErr, fd) => { + if (fdErr) { + onError(`error opening fifo for pull pipe: ${fdErr}`); + return; + } + + pullFd = fd; + pullStream = fs.createWriteStream(null as unknown as fs.PathLike, {fd}); + } + ); + } + ); }, close: () => { @@ -141,13 +204,29 @@ export function createFifoPipe(): DebugPipe { } ); } + if (pullFd !== null) { + fs.close(pullFd); + pullFd = null; + fs.rm( + pullPipePath, + err => { + if (err) { + onErrorCallback?.(`error removing fifo for pull pipe: ${err}`); + } + } + ); + } }, write: data => { inputStream?.write(data); }, + requestPull: () => { + pullStream?.write("pull|\n"); + }, getOutputPipePath: () => outputPipePath, getInputPipePath: () => inputPipePath, + getPullPipePath: () => pullPipePath, }; } diff --git a/extension/launchConfig.ts b/extension/launchConfig.ts index 40c6c9e..aa5bcbe 100644 --- a/extension/launchConfig.ts +++ b/extension/launchConfig.ts @@ -42,6 +42,7 @@ export interface LaunchConfig { verbose?: boolean; stopOnEntry?: boolean; breakInCoroutines?: boolean; + pullBreakpointsSupport?: boolean; stepUnmappedLines?: boolean; scriptFiles?: string[]; ignorePatterns?: string[]; diff --git a/extension/luaDebugSession.ts b/extension/luaDebugSession.ts index c887992..9783c87 100644 --- a/extension/luaDebugSession.ts +++ b/extension/luaDebugSession.ts @@ -76,6 +76,7 @@ const breakInCoroutinesEnv: LuaDebug.BreakInCoroutinesEnv = "LOCAL_LUA_DEBUGGER_ const stepUnmappedLinesEnv: LuaDebug.StepUnmappedLinesEnv = "LOCAL_LUA_DEBUGGER_STEP_UNMAPPED_LINES"; const inputFileEnv: LuaDebug.InputFileEnv = "LOCAL_LUA_DEBUGGER_INPUT_FILE"; const outputFileEnv: LuaDebug.OutputFileEnv = "LOCAL_LUA_DEBUGGER_OUTPUT_FILE"; +const pullFileEnv: LuaDebug.PullFileEnv = "LOCAL_LUA_DEBUGGER_PULL_FILE"; function getEnvKey(env: NodeJS.ProcessEnv, searchKey: string) { const upperSearchKey = searchKey.toUpperCase(); @@ -146,6 +147,8 @@ export class LuaDebugSession extends LoggingDebugSession { private autoContinueNext = false; private readonly activeThreads = new Map(); private isRunning = false; + private pullBreakpointsSupport = false; + private usePipeCommutication = false; public constructor() { super("lldebugger-log.txt"); @@ -223,6 +226,10 @@ export class LuaDebugSession extends LoggingDebugSession { } } + if (typeof this.config.pullBreakpointsSupport !== "undefined") { + this.pullBreakpointsSupport = this.config.pullBreakpointsSupport; + } + //Set an environment variable so the debugger can detect the attached extension processOptions.env[envVariable] = "1"; processOptions.env[filePathEnvVariable] @@ -239,20 +246,30 @@ export class LuaDebugSession extends LoggingDebugSession { processOptions.env[stepUnmappedLinesEnv] = this.config.stepUnmappedLines ? "1" : "0"; } + this.usePipeCommutication = this.config.program.communication === "pipe" + //Open pipes - if (this.config.program.communication === "pipe") { + if (this.usePipeCommutication || this.pullBreakpointsSupport) { if (process.platform === "win32") { this.debugPipe = createNamedPipe(); } else { this.debugPipe = createFifoPipe(); } - this.debugPipe.open( - data => { void this.onDebuggerOutput(data); }, - err => { this.showOutput(`${err}`, OutputCategory.Error); } - ); - processOptions.env[outputFileEnv] = this.debugPipe.getOutputPipePath(); - processOptions.env[inputFileEnv] = this.debugPipe.getInputPipePath(); + if (this.usePipeCommutication) { + this.debugPipe.open( + data => { void this.onDebuggerOutput(data); }, + err => { this.showOutput(`${err}`, OutputCategory.Error); } + ); + + processOptions.env[outputFileEnv] = this.debugPipe.getOutputPipePath(); + processOptions.env[inputFileEnv] = this.debugPipe.getInputPipePath(); + } + } + + if (this.pullBreakpointsSupport) { + this.debugPipe?.openPull(err => { this.showOutput(`${err}`, OutputCategory.Error); }) + processOptions.env[pullFileEnv] = this.debugPipe?.getPullPipePath(); } //Append lua path so it can find debugger script @@ -290,7 +307,7 @@ export class LuaDebugSession extends LoggingDebugSession { ); //Process callbacks - if (this.debugPipe) { + if (this.usePipeCommutication) { this.assert(this.process.stdout).on("data", data => { this.showOutput(`${data}`, OutputCategory.StdOut); }); } else { this.assert(this.process.stdout).on("data", data => { void this.onDebuggerOutput(data); }); @@ -322,6 +339,12 @@ export class LuaDebugSession extends LoggingDebugSession { const filePath = args.source.path as string; if (this.process !== null && !this.isRunning) { + if (this.pullBreakpointsSupport) { + this.breakpointsPending = true; + this.autoContinueNext = true; + this.debugPipe?.requestPull(); + } + const oldBreakpoints = this.fileBreakpoints[filePath]; if (typeof oldBreakpoints !== "undefined") { for (const breakpoint of oldBreakpoints) { @@ -940,8 +963,8 @@ export class LuaDebugSession extends LoggingDebugSession { } this.showOutput(cmd, OutputCategory.Command); - if (this.debugPipe) { - this.debugPipe.write(`${cmd}\n`); + if (this.usePipeCommutication) { + this.debugPipe?.write(`${cmd}\n`); } else { this.assert(this.process.stdin).write(`${cmd}\n`); } diff --git a/package-lock.json b/package-lock.json index 66423e6..0aa31f8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "local-lua-debugger-vscode", - "version": "0.3.1", + "version": "0.3.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "local-lua-debugger-vscode", - "version": "0.3.1", + "version": "0.3.3", "license": "MIT", "dependencies": { "vscode-debugadapter": "^1.48.0" diff --git a/package.json b/package.json index 5b61c09..304be11 100644 --- a/package.json +++ b/package.json @@ -117,6 +117,11 @@ "description": "Break on errors inside of coroutines", "default": true }, + "pullBreakpointsSupport": { + "type": "boolean", + "description": "Runtime supports pulling of breakpoints. (need to periodically call lldebugger.pullBreakpoints())", + "default": true + }, "scriptFiles": { "type": "array", "items": { From 42a03cc96713d05cf5e4ff07d939e282965e82f3 Mon Sep 17 00:00:00 2001 From: Aleksandr Kovalev Date: Mon, 8 Aug 2022 10:15:50 +0100 Subject: [PATCH 02/49] synk default value pullBreakpointsSupport with settings --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 304be11..30c6e92 100644 --- a/package.json +++ b/package.json @@ -120,7 +120,7 @@ "pullBreakpointsSupport": { "type": "boolean", "description": "Runtime supports pulling of breakpoints. (need to periodically call lldebugger.pullBreakpoints())", - "default": true + "default": false }, "scriptFiles": { "type": "array", From a2577904d80fed1ddf6b03a0d056cad20e481bdb Mon Sep 17 00:00:00 2001 From: Aleksandr Kovalev Date: Sat, 13 Aug 2022 17:19:10 +0100 Subject: [PATCH 03/49] Fix autocontinue on first breakpoint while breakpoint set inside breakpoint --- extension/luaDebugSession.ts | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/extension/luaDebugSession.ts b/extension/luaDebugSession.ts index 9783c87..9adcd48 100644 --- a/extension/luaDebugSession.ts +++ b/extension/luaDebugSession.ts @@ -147,6 +147,7 @@ export class LuaDebugSession extends LoggingDebugSession { private autoContinueNext = false; private readonly activeThreads = new Map(); private isRunning = false; + private inDebuggerBreakpoint = false; private pullBreakpointsSupport = false; private usePipeCommutication = false; @@ -325,6 +326,7 @@ export class LuaDebugSession extends LoggingDebugSession { this.process.on("exit", (code, signal) => this.onDebuggerTerminated(`${code !== null ? code : signal}`)); this.isRunning = true; + this.inDebuggerBreakpoint = false; this.showOutput("process launched", OutputCategory.Info); this.sendResponse(response); @@ -339,7 +341,7 @@ export class LuaDebugSession extends LoggingDebugSession { const filePath = args.source.path as string; if (this.process !== null && !this.isRunning) { - if (this.pullBreakpointsSupport) { + if (!this.inDebuggerBreakpoint && this.pullBreakpointsSupport) { this.breakpointsPending = true; this.autoContinueNext = true; this.debugPipe?.requestPull(); @@ -359,7 +361,13 @@ export class LuaDebugSession extends LoggingDebugSession { } } else { - this.breakpointsPending = true; + if (this.pullBreakpointsSupport && this.process !== null) { + this.breakpointsPending = true; + this.autoContinueNext = true; + this.debugPipe?.requestPull(); + } else { + this.breakpointsPending = true; + } } this.fileBreakpoints[filePath] = args.breakpoints; @@ -574,6 +582,7 @@ export class LuaDebugSession extends LoggingDebugSession { if (this.sendCommand("cont")) { this.variableHandles.reset(); this.isRunning = true; + this.inDebuggerBreakpoint = false; } else { response.success = false; } @@ -585,6 +594,7 @@ export class LuaDebugSession extends LoggingDebugSession { if (this.sendCommand("step")) { this.variableHandles.reset(); this.isRunning = true; + this.inDebuggerBreakpoint = false; } else { response.success = false; } @@ -596,6 +606,7 @@ export class LuaDebugSession extends LoggingDebugSession { if (this.sendCommand("stepin")) { this.variableHandles.reset(); this.isRunning = true; + this.inDebuggerBreakpoint = false; } else { response.success = false; } @@ -607,6 +618,7 @@ export class LuaDebugSession extends LoggingDebugSession { if (this.sendCommand("stepout")) { this.variableHandles.reset(); this.isRunning = true; + this.inDebuggerBreakpoint = false; } else { response.success = false; } @@ -702,6 +714,7 @@ export class LuaDebugSession extends LoggingDebugSession { } this.isRunning = false; + this.inDebuggerBreakpoint = false; this.sendResponse(response); } @@ -839,6 +852,7 @@ export class LuaDebugSession extends LoggingDebugSession { private async onDebuggerStop(msg: LuaDebug.DebugBreak) { this.isRunning = false; + this.inDebuggerBreakpoint = true; if (this.pendingScripts) { for (const scriptFile of this.pendingScripts) { @@ -947,6 +961,7 @@ export class LuaDebugSession extends LoggingDebugSession { this.process = null; this.isRunning = false; + this.inDebuggerBreakpoint = false; if (this.outputText.length > 0) { this.showOutput(this.outputText, OutputCategory.StdOut); From a638c2f2d2571c0d280a95360d79ae42774487ea Mon Sep 17 00:00:00 2001 From: Sewbacca Date: Wed, 5 Oct 2022 00:55:21 +0200 Subject: [PATCH 04/49] Proof of concept, displaying upvalues in functions --- debugger/debugger.ts | 5 +- debugger/send.ts | 33 +- extension/luaDebugSession.ts | 2 +- package-lock.json | 940 ++++++++++++++++++++++++---- package.json | 12 +- tests/functions/.vscode/launch.json | 45 ++ tests/functions/main.lua | 12 + 7 files changed, 918 insertions(+), 131 deletions(-) create mode 100644 tests/functions/.vscode/launch.json create mode 100644 tests/functions/main.lua diff --git a/debugger/debugger.ts b/debugger/debugger.ts index dc6c4ad..b2f0f82 100644 --- a/debugger/debugger.ts +++ b/debugger/debugger.ts @@ -751,8 +751,11 @@ export namespace Debugger { if (s) { if (type(r) === "table") { Send.props(r as AnyTable, kind, tonumber(first), tonumber(count)); + } else if (type(r) === "function") { + // eslint-disable-next-line @typescript-eslint/ban-types + Send.functionUpvalues(r as Function); } else { - Send.error(`Expression "${mappedExpression}" is not a table`); + Send.error(`Expression "${mappedExpression}" is not a table nor a function`); } } else { Send.error(r as string); diff --git a/debugger/send.ts b/debugger/send.ts index bc9f77a..97d9c06 100644 --- a/debugger/send.ts +++ b/debugger/send.ts @@ -20,7 +20,7 @@ //OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE //SOFTWARE. -import {luaError, luaLenMetamethodSupported, luaRawLen} from "./luafuncs"; +import {luaAssert, luaError, luaLenMetamethodSupported, luaRawLen} from "./luafuncs"; import {Format} from "./format"; import {Vars} from "./debugger"; import {Thread, mainThread, mainThreadName} from "./thread"; @@ -197,6 +197,37 @@ export namespace Send { send(dbgProperties); } + function getUpvalues(info: debug.FunctionInfo): { [name: string]: unknown } { + const ups: { [name: string]: unknown } = { }; + + if (!info.nups || !info.func) { + return ups; + } + + for (const index of $range(1, info.nups)) { + const [name, val] = debug.getupvalue(info.func, index); + ups[luaAssert(name)] = val; + } + + return ups; + } + + // eslint-disable-next-line @typescript-eslint/ban-types + export function functionUpvalues(f: Function): void { + const dbgProperties: LuaDebug.Properties = { + tag: "$luaDebug", + type: "properties", + properties: Format.makeExplicitArray() + }; + const upvalues = getUpvalues(debug.getinfo(f, "fu") as debug.FunctionInfo); + for (const [key, val] of pairs(upvalues)) { + const name = getPrintableValue(key); + const dbgVar = buildVariable(name, val); + table.insert(dbgProperties.properties, dbgVar); + } + send(dbgProperties); + } + export function breakpoints(breaks: Breakpoint[]): void { const breakpointList: LuaDebug.Breakpoint[] = []; for (const breakpoint of breaks) { diff --git a/extension/luaDebugSession.ts b/extension/luaDebugSession.ts index c887992..e241c54 100644 --- a/extension/luaDebugSession.ts +++ b/extension/luaDebugSession.ts @@ -692,7 +692,7 @@ export class LuaDebugSession extends LoggingDebugSession { return {success: true, value: "nil", variablesReference: 0}; } else if (msg.results.length === 1) { const result = msg.results[0]; - const variablesReference = result.type === "table" ? this.variableHandles.create(expression) : 0; + const variablesReference = (result.type === "table" || result.type === "function") ? this.variableHandles.create(expression) : 0; return {success: true, value: this.getValueString(result), variablesReference}; } else { const variablesReference = this.variableHandles.create(`@({${expression}})`); diff --git a/package-lock.json b/package-lock.json index 66423e6..ea7970e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "local-lua-debugger-vscode", - "version": "0.3.1", + "version": "0.3.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "local-lua-debugger-vscode", - "version": "0.3.1", + "version": "0.3.3", "license": "MIT", "dependencies": { "vscode-debugadapter": "^1.48.0" @@ -19,7 +19,7 @@ "eslint": "^7.32.0", "typescript": "^4.3.5", "typescript-to-lua": "^1.1.1", - "vsce": "^1.96.1" + "vsce": "^2.11.0" }, "engines": { "vscode": "^1.44.0" @@ -490,6 +490,37 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, "node_modules/boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -518,6 +549,30 @@ "node": ">=8" } }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "node_modules/buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", @@ -608,6 +663,12 @@ "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", "dev": true }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -700,17 +761,44 @@ } } }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "node_modules/denodeify": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz", - "integrity": "sha1-OjYof1A05pnnV3kBBSwubJQlFjE=", - "dev": true + "node_modules/detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", + "dev": true, + "engines": { + "node": ">=8" + } }, "node_modules/dir-glob": { "version": "3.0.1", @@ -797,6 +885,15 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, "node_modules/enhanced-resolve": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz", @@ -1060,6 +1157,15 @@ "node": ">=0.10.0" } }, + "node_modules/expand-template": { + "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, + "engines": { + "node": ">=6" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -1155,6 +1261,12 @@ "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", "dev": true }, + "node_modules/fs-constants": { + "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 + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -1187,6 +1299,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/github-from-package": { + "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 + }, "node_modules/glob": { "version": "7.1.7", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", @@ -1302,6 +1420,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/htmlparser2": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", @@ -1321,6 +1451,26 @@ "entities": "^2.0.0" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", @@ -1371,6 +1521,12 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, "node_modules/is-core-module": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", @@ -1459,6 +1615,17 @@ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, + "node_modules/keytar": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", + "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^4.3.0", + "prebuild-install": "^7.0.1" + } + }, "node_modules/leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -1482,20 +1649,14 @@ } }, "node_modules/linkify-it": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", - "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", "dev": true, "dependencies": { "uc.micro": "^1.0.1" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "node_modules/lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -1527,14 +1688,14 @@ } }, "node_modules/markdown-it": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz", - "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==", + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", "dev": true, "dependencies": { - "argparse": "^1.0.7", - "entities": "~2.0.0", - "linkify-it": "^2.0.0", + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", "mdurl": "^1.0.1", "uc.micro": "^1.0.5" }, @@ -1542,16 +1703,25 @@ "markdown-it": "bin/markdown-it.js" } }, - "node_modules/markdown-it/node_modules/entities": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", - "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", + "node_modules/markdown-it/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, + "node_modules/markdown-it/node_modules/entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, "node_modules/mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", "dev": true }, "node_modules/merge2": { @@ -1588,6 +1758,18 @@ "node": ">=4" } }, + "node_modules/mimic-response": { + "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, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -1600,6 +1782,12 @@ "node": "*" } }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -1611,6 +1799,12 @@ "node": ">=10" } }, + "node_modules/mkdirp-classic": { + "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 + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -1623,12 +1817,36 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "node_modules/napi-build-utils": { + "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 + }, "node_modules/natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "node_modules/node-abi": { + "version": "3.25.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.25.0.tgz", + "integrity": "sha512-p+0xx5ruIQ+8X57CRIMxbTZRT7tU0Tjn2C/aAK68AEMrbGsCo6IjnDdPNhEyyjWCT4bRtzomXchYd3sSgk3BJQ==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-addon-api": { + "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 + }, "node_modules/nth-check": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", @@ -1676,34 +1894,6 @@ "node": ">= 0.8.0" } }, - "node_modules/os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, - "dependencies": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -1800,6 +1990,32 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/prebuild-install": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", + "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", + "dev": true, + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -1818,6 +2034,16 @@ "node": ">=0.4.0" } }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -1862,6 +2088,30 @@ } ] }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/read": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", @@ -1874,6 +2124,20 @@ "node": ">=0.8" } }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", @@ -1965,6 +2229,32 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, "node_modules/semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -2015,6 +2305,51 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/simple-concat": { + "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, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/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, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -2056,6 +2391,15 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/string-width": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", @@ -2154,6 +2498,34 @@ "node": ">=6" } }, + "node_modules/tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -2214,6 +2586,18 @@ "node": ">=0.6.11 <=0.7.0 || >=0.7.3" } }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -2304,9 +2688,15 @@ } }, "node_modules/url-join": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-1.1.0.tgz", - "integrity": "sha1-dBxsL0WWxIMNZxhGCSDQySIC3Hg=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "dev": true + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, "node_modules/v8-compile-cache": { @@ -2316,37 +2706,37 @@ "dev": true }, "node_modules/vsce": { - "version": "1.97.0", - "resolved": "https://registry.npmjs.org/vsce/-/vsce-1.97.0.tgz", - "integrity": "sha512-5Rxj6qO0dN4FnzVS9G94osstx8R3r1OQP39G7WYERpoO9X+OSodVVkRhFDapPNjekfUNo+d5Qn7W1EtNQVoLCg==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/vsce/-/vsce-2.11.0.tgz", + "integrity": "sha512-pr9Y0va/HCer0tTifeqaUrK24JJSpRd6oLeF/PY6FtrY41e+lwxiAq6jfMXx4ShAZglYg2rFKoKROwa7E7SEqQ==", "dev": true, "dependencies": { "azure-devops-node-api": "^11.0.1", "chalk": "^2.4.2", "cheerio": "^1.0.0-rc.9", "commander": "^6.1.0", - "denodeify": "^1.2.1", "glob": "^7.0.6", + "hosted-git-info": "^4.0.2", + "keytar": "^7.7.0", "leven": "^3.1.0", - "lodash": "^4.17.15", - "markdown-it": "^10.0.0", + "markdown-it": "^12.3.2", "mime": "^1.3.4", "minimatch": "^3.0.3", - "osenv": "^0.1.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": "^1.1.0", + "url-join": "^4.0.1", + "xml2js": "^0.4.23", "yauzl": "^2.3.1", "yazl": "^2.2.2" }, "bin": { - "vsce": "out/vsce" + "vsce": "vsce" }, "engines": { - "node": ">= 10" + "node": ">= 14" } }, "node_modules/vsce/node_modules/ansi-styles": { @@ -2473,6 +2863,28 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, + "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/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -2827,6 +3239,23 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, "boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -2852,6 +3281,16 @@ "fill-range": "^7.0.1" } }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", @@ -2920,6 +3359,12 @@ "domutils": "^2.7.0" } }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -2986,16 +3431,31 @@ "ms": "2.1.2" } }, + "decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "requires": { + "mimic-response": "^3.1.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true + }, "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "denodeify": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz", - "integrity": "sha1-OjYof1A05pnnV3kBBSwubJQlFjE=", + "detect-libc": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", + "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", "dev": true }, "dir-glob": { @@ -3059,6 +3519,15 @@ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, "enhanced-resolve": { "version": "5.8.2", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz", @@ -3253,6 +3722,12 @@ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true }, + "expand-template": { + "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 + }, "fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -3336,6 +3811,12 @@ "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", "dev": true }, + "fs-constants": { + "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 + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -3365,6 +3846,12 @@ "has-symbols": "^1.0.1" } }, + "github-from-package": { + "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 + }, "glob": { "version": "7.1.7", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", @@ -3446,6 +3933,15 @@ "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", "dev": true }, + "hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, "htmlparser2": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", @@ -3458,6 +3954,12 @@ "entities": "^2.0.0" } }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", @@ -3496,6 +3998,12 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, "is-core-module": { "version": "2.6.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", @@ -3566,6 +4074,16 @@ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, + "keytar": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", + "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", + "dev": true, + "requires": { + "node-addon-api": "^4.3.0", + "prebuild-install": "^7.0.1" + } + }, "leven": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", @@ -3583,20 +4101,14 @@ } }, "linkify-it": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-2.2.0.tgz", - "integrity": "sha512-GnAl/knGn+i1U/wjBz3akz2stz+HrHLsxMwHQGofCDfPvlf+gDKN58UtfmUquTY4/MXeE2x7k19KQmeoZi94Iw==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", "dev": true, "requires": { "uc.micro": "^1.0.1" } }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, "lodash.clonedeep": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", @@ -3625,22 +4137,28 @@ } }, "markdown-it": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-10.0.0.tgz", - "integrity": "sha512-YWOP1j7UbDNz+TumYP1kpwnP0aEa711cJjrAQrzd0UXlbJfc5aAq0F/PZHjiioqDC1NKgvIMX+o+9Bk7yuM2dg==", + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", "dev": true, "requires": { - "argparse": "^1.0.7", - "entities": "~2.0.0", - "linkify-it": "^2.0.0", + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", "mdurl": "^1.0.1", "uc.micro": "^1.0.5" }, "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "entities": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.3.tgz", - "integrity": "sha512-MyoZ0jgnLvB2X3Lg5HqpFmn1kybDiIfEQmKzTb5apr51Rb+T3KdmMiqa70T+bhGnyv7bQ6WMj2QMHpGMmlrUYQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", "dev": true } } @@ -3648,7 +4166,7 @@ "mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", "dev": true }, "merge2": { @@ -3673,6 +4191,12 @@ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true }, + "mimic-response": { + "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 + }, "minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", @@ -3682,11 +4206,23 @@ "brace-expansion": "^1.1.7" } }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", + "dev": true + }, "mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" }, + "mkdirp-classic": { + "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 + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -3699,12 +4235,33 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "napi-build-utils": { + "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 + }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "node-abi": { + "version": "3.25.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.25.0.tgz", + "integrity": "sha512-p+0xx5ruIQ+8X57CRIMxbTZRT7tU0Tjn2C/aAK68AEMrbGsCo6IjnDdPNhEyyjWCT4bRtzomXchYd3sSgk3BJQ==", + "dev": true, + "requires": { + "semver": "^7.3.5" + } + }, + "node-addon-api": { + "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 + }, "nth-check": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", @@ -3743,28 +4300,6 @@ "word-wrap": "^1.2.3" } }, - "os-homedir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", - "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", - "dev": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "osenv": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", - "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", - "dev": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -3842,6 +4377,26 @@ "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "dev": true }, + "prebuild-install": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", + "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", + "dev": true, + "requires": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + } + }, "prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -3854,6 +4409,16 @@ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", "dev": true }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -3875,6 +4440,26 @@ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true + } + } + }, "read": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", @@ -3884,6 +4469,17 @@ "mute-stream": "~0.0.4" } }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, "regexpp": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", @@ -3936,6 +4532,18 @@ "queue-microtask": "^1.2.2" } }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, "semver": { "version": "7.3.5", "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", @@ -3971,6 +4579,23 @@ "object-inspect": "^1.9.0" } }, + "simple-concat": { + "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 + }, + "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, + "requires": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, "slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -4000,6 +4625,15 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, "string-width": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", @@ -4075,6 +4709,31 @@ "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", "dev": true }, + "tar-fs": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", + "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "requires": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + } + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -4120,6 +4779,15 @@ "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", "dev": true }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, "type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -4185,9 +4853,15 @@ } }, "url-join": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-1.1.0.tgz", - "integrity": "sha1-dBxsL0WWxIMNZxhGCSDQySIC3Hg=", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, "v8-compile-cache": { @@ -4197,29 +4871,29 @@ "dev": true }, "vsce": { - "version": "1.97.0", - "resolved": "https://registry.npmjs.org/vsce/-/vsce-1.97.0.tgz", - "integrity": "sha512-5Rxj6qO0dN4FnzVS9G94osstx8R3r1OQP39G7WYERpoO9X+OSodVVkRhFDapPNjekfUNo+d5Qn7W1EtNQVoLCg==", + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/vsce/-/vsce-2.11.0.tgz", + "integrity": "sha512-pr9Y0va/HCer0tTifeqaUrK24JJSpRd6oLeF/PY6FtrY41e+lwxiAq6jfMXx4ShAZglYg2rFKoKROwa7E7SEqQ==", "dev": true, "requires": { "azure-devops-node-api": "^11.0.1", "chalk": "^2.4.2", "cheerio": "^1.0.0-rc.9", "commander": "^6.1.0", - "denodeify": "^1.2.1", "glob": "^7.0.6", + "hosted-git-info": "^4.0.2", + "keytar": "^7.7.0", "leven": "^3.1.0", - "lodash": "^4.17.15", - "markdown-it": "^10.0.0", + "markdown-it": "^12.3.2", "mime": "^1.3.4", "minimatch": "^3.0.3", - "osenv": "^0.1.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": "^1.1.0", + "url-join": "^4.0.1", + "xml2js": "^0.4.23", "yauzl": "^2.3.1", "yazl": "^2.2.2" }, @@ -4323,6 +4997,22 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, + "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" + } + }, + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", diff --git a/package.json b/package.json index 5b61c09..618b31a 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "eslint": "^7.32.0", "typescript": "^4.3.5", "typescript-to-lua": "^1.1.1", - "vsce": "^1.96.1" + "vsce": "^2.11.0" }, "main": "./extension/extension.js", "engines": { @@ -182,7 +182,10 @@ "default": "${file}" }, "communication": { - "enum": ["stdio", "pipe"], + "enum": [ + "stdio", + "pipe" + ], "description": "Communication method between extension and debugger.", "default": "stdio" } @@ -197,7 +200,10 @@ "description": "The custom command to run" }, "communication": { - "enum": ["stdio", "pipe"], + "enum": [ + "stdio", + "pipe" + ], "description": "Communication method between extension and debugger.", "default": "stdio" } diff --git a/tests/functions/.vscode/launch.json b/tests/functions/.vscode/launch.json new file mode 100644 index 0000000..8fc3cec --- /dev/null +++ b/tests/functions/.vscode/launch.json @@ -0,0 +1,45 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Lua 5.1", + "type": "lua-local", + "request": "launch", + "program": { + "lua": "lua51", + "file": "${workspaceFolder}/main.lua" + }, + "verbose": true + }, + { + "name": "Lua 5.2", + "type": "lua-local", + "request": "launch", + "program": { + "lua": "lua52", + "file": "${workspaceFolder}/main.lua" + }, + "verbose": true + }, + { + "name": "Lua 5.3", + "type": "lua-local", + "request": "launch", + "program": { + "lua": "lua53", + "file": "${workspaceFolder}/main.lua" + }, + "verbose": true + }, + { + "name": "LuaJit", + "type": "lua-local", + "request": "launch", + "program": { + "lua": "luajit", + "file": "${workspaceFolder}/main.lua" + }, + "verbose": true + }, + ] +} diff --git a/tests/functions/main.lua b/tests/functions/main.lua new file mode 100644 index 0000000..2b583a0 --- /dev/null +++ b/tests/functions/main.lua @@ -0,0 +1,12 @@ + +local upvalue = { + name = "" +} + +local function myFunc() + print(upvalue) +end + +local value = {} + +print(myFunc) From ca5162a33836b5251002cc42e3210a91bd094aeb Mon Sep 17 00:00:00 2001 From: Sewbacca Date: Wed, 5 Oct 2022 02:35:27 +0200 Subject: [PATCH 05/49] Added support for indexing functions --- debugger/debugger.ts | 12 ++++++++++++ extension/luaDebugSession.ts | 9 ++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/debugger/debugger.ts b/debugger/debugger.ts index b2f0f82..30743d4 100644 --- a/debugger/debugger.ts +++ b/debugger/debugger.ts @@ -1163,6 +1163,16 @@ export namespace Debugger { } } } + + debug.setmetatable(() => { }, { + __index(key: string) { + const info = debug.getinfo(this, "fu"); + if (!info) return undefined; + const val = getUpvalues(info).vars[key]; + if (!val) return undefined; + return val.val; + } + }); }; export function clearHook(): void { @@ -1183,6 +1193,8 @@ export namespace Debugger { debug.sethook(thread); } } + + debug.setmetatable(() => { }, undefined); } const breakInCoroutinesEnv: LuaDebug.BreakInCoroutinesEnv = "LOCAL_LUA_DEBUGGER_BREAK_IN_COROUTINES"; diff --git a/extension/luaDebugSession.ts b/extension/luaDebugSession.ts index e241c54..f82f786 100644 --- a/extension/luaDebugSession.ts +++ b/extension/luaDebugSession.ts @@ -692,7 +692,10 @@ export class LuaDebugSession extends LoggingDebugSession { return {success: true, value: "nil", variablesReference: 0}; } else if (msg.results.length === 1) { const result = msg.results[0]; - const variablesReference = (result.type === "table" || result.type === "function") ? this.variableHandles.create(expression) : 0; + const variablesReference = (result.type === "table" || result.type === "function") + ? this.variableHandles.create(expression) + : 0; + return {success: true, value: this.getValueString(result), variablesReference}; } else { const variablesReference = this.variableHandles.create(`@({${expression}})`); @@ -718,7 +721,7 @@ export class LuaDebugSession extends LoggingDebugSession { ? `[error: ${this.filterErrorMessage(variable.error)}]` : `(${variable.value ?? ""})`; ref = variable.type === "table" ? this.variableHandles.create("@({...})") : 0; - } else if (variable.type === "table") { + } else if (variable.type === "table" || variable.type === "function") { valueStr = this.getValueString(variable); ref = this.variableHandles.create(refName); } else { @@ -728,7 +731,7 @@ export class LuaDebugSession extends LoggingDebugSession { const indexedVariables = typeof variable.length !== "undefined" && variable.length > 0 ? variable.length + 1 : variable.length; - if (variable.type === "table") { + if (variable.type === "table" || variable.type === "function") { return new Variable(name, valueStr, ref, indexedVariables, 1); } else { return new Variable(name, valueStr, ref, indexedVariables); From a9cc3d5b9dee296f9402164df334459562669682 Mon Sep 17 00:00:00 2001 From: Aleksandr Kovalev Date: Sun, 13 Nov 2022 11:49:09 +0000 Subject: [PATCH 06/49] fix breakpoints pulling after first connect if no breakpoints were triggered --- extension/luaDebugSession.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/extension/luaDebugSession.ts b/extension/luaDebugSession.ts index 9adcd48..aad099a 100644 --- a/extension/luaDebugSession.ts +++ b/extension/luaDebugSession.ts @@ -852,6 +852,7 @@ export class LuaDebugSession extends LoggingDebugSession { private async onDebuggerStop(msg: LuaDebug.DebugBreak) { this.isRunning = false; + let prevInDebugger = this.inDebuggerBreakpoint; this.inDebuggerBreakpoint = true; if (this.pendingScripts) { @@ -910,6 +911,7 @@ export class LuaDebugSession extends LoggingDebugSession { if (this.autoContinueNext) { this.autoContinueNext = false; + this.inDebuggerBreakpoint = prevInDebugger; this.assert(this.sendCommand("autocont")); } else { From 0970405d96068073cb8923d78cf457df83771e76 Mon Sep 17 00:00:00 2001 From: Aleksandr Kovalev Date: Sun, 13 Nov 2022 15:39:55 +0000 Subject: [PATCH 07/49] Do not disable debughook in luajit with pull breakpoints support enabled --- debugger/debugger.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/debugger/debugger.ts b/debugger/debugger.ts index 8b3820c..b65f5cd 100644 --- a/debugger/debugger.ts +++ b/debugger/debugger.ts @@ -491,6 +491,7 @@ export namespace Debugger { let breakAtDepth = -1; let breakInThread: Thread | undefined; let updateHook: { (): void }; + let isDebugHookDisabled = true; let ignorePatterns: string[] | undefined; let inDebugBreak = false; @@ -864,6 +865,10 @@ export namespace Debugger { const skipUnmappedLines = (os.getenv(stepUnmappedLinesEnv) !== "1"); function debugHook(event: "call" | "return" | "tail return" | "count" | "line", line?: number) { + if (isDebugHookDisabled) { + return; + } + //Stepping if (breakAtDepth >= 0) { const activeThread = getActiveThread(); @@ -1159,7 +1164,10 @@ export namespace Debugger { } updateHook = function() { - if (breakAtDepth < 0 && Breakpoint.getCount() === 0) { + isDebugHookDisabled = breakAtDepth < 0 && Breakpoint.getCount() === 0; + // Do not disable debugging in luajit environment with pull breakpoints support enabled + // or functions will be jitted and will lose debug info of lines and files + if (isDebugHookDisabled && (_G['jit'] === null || pullFile == null)) { debug.sethook(); for (const [thread] of pairs(threadIds)) { @@ -1189,6 +1197,7 @@ export namespace Debugger { coroutine.wrap = luaCoroutineWrap; coroutine.resume = luaCoroutineResume; + isDebugHookDisabled = true; debug.sethook(); for (const [thread] of pairs(threadIds)) { From abdb8165a2e5baa97aa26c577e04a1a1b36a3480 Mon Sep 17 00:00:00 2001 From: Aleksandr Kovalev Date: Mon, 14 Nov 2022 15:39:23 +0000 Subject: [PATCH 08/49] On mac and linux we use regular file to comminicate because fifo pipes have no support for non blocking read or seek --- debugger/debugger.ts | 11 ++++++-- debugger/lldebugger.ts | 2 +- extension/debugPipe.ts | 55 ++++++++++++++++++------------------ extension/luaDebugSession.ts | 10 +++---- 4 files changed, 41 insertions(+), 37 deletions(-) diff --git a/debugger/debugger.ts b/debugger/debugger.ts index b65f5cd..927d98d 100644 --- a/debugger/debugger.ts +++ b/debugger/debugger.ts @@ -87,7 +87,12 @@ export namespace Debugger { } pullFile = file as LuaFile; pullFile.setvbuf("no"); - lastPullSeek = pullFile.seek("end")[0] as number; + const [fileSize, errorSeek] = pullFile.seek("end"); + if (!fileSize) { + luaError(`Failed to read pull file "${pullFilePath}": ${errorSeek}\n`); + } else { + lastPullSeek = fileSize; + } } else { pullFile = null; } @@ -868,7 +873,7 @@ export namespace Debugger { if (isDebugHookDisabled) { return; } - + //Stepping if (breakAtDepth >= 0) { const activeThread = getActiveThread(); @@ -1167,7 +1172,7 @@ export namespace Debugger { isDebugHookDisabled = breakAtDepth < 0 && Breakpoint.getCount() === 0; // Do not disable debugging in luajit environment with pull breakpoints support enabled // or functions will be jitted and will lose debug info of lines and files - if (isDebugHookDisabled && (_G['jit'] === null || pullFile == null)) { + if (isDebugHookDisabled && (_G["jit"] === null || pullFile === null)) { debug.sethook(); for (const [thread] of pairs(threadIds)) { diff --git a/debugger/lldebugger.ts b/debugger/lldebugger.ts index 2b3e6bf..e63ea66 100644 --- a/debugger/lldebugger.ts +++ b/debugger/lldebugger.ts @@ -56,7 +56,7 @@ export function stop(): void { } //Pull breakpoints change -export function pullBreakpoints():void { +export function pullBreakpoints(): void { Debugger.pullBreakpoints(); } diff --git a/extension/debugPipe.ts b/extension/debugPipe.ts index bfa662c..500c71f 100644 --- a/extension/debugPipe.ts +++ b/extension/debugPipe.ts @@ -2,6 +2,8 @@ import * as crypto from "crypto"; import * as net from "net"; import * as childProcess from "child_process"; import * as fs from "fs"; +import * as os from "os"; +import * as path from "path"; export interface DebugPipe { open: (onData: (data: unknown) => void, onError: (err: unknown) => void) => void; @@ -11,7 +13,7 @@ export interface DebugPipe { requestPull: () => void; getOutputPipePath: () => string; getInputPipePath: () => string; - getPullPipePath: () => string, + getPullPipePath: () => string; } export function createNamedPipe(): DebugPipe { @@ -43,16 +45,15 @@ export function createNamedPipe(): DebugPipe { ); inputPipe.listen(inputPipePath); }, - openPull: (onError: (err: unknown) => void) => - { + openPull: (onError: (err: unknown) => void) => { if (!onErrorCallback) { onErrorCallback = onError; } pullPipe = net.createServer( stream => { - stream.on("error", err =>{ - onError(`error on pull pipe: ${err}`) + stream.on("error", err => { + onError(`error on pull pipe: ${err}`); }); pullStream = stream; } @@ -87,7 +88,16 @@ export function createFifoPipe(): DebugPipe { const pipeId = crypto.randomBytes(16).toString("hex"); const outputPipePath = `/tmp/lldbg_out_${pipeId}`; const inputPipePath = `/tmp/lldbg_in_${pipeId}`; - const pullPipePath = `/tmp/lldbg_pull_${pipeId}`; + let pullPipePath = ""; + + const appPrefix = 'lldebugger'; + try { + const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), appPrefix)); + pullPipePath = path.join(tmpDir, "pull.txt"); + } catch { + // handle error + } + let outputFd: number | null; let inputFd: number | null; let pullFd: number | null; @@ -148,33 +158,22 @@ export function createFifoPipe(): DebugPipe { ); }, - openPull: (onError: (err: unknown) => void) => - { + openPull: (onError: (err: unknown) => void) => { if (!onErrorCallback) { onErrorCallback = onError; } - - childProcess.exec( - `mkfifo ${pullPipePath}`, - fifoErr => { - if (fifoErr) { - onError(`error executing mkfifo for input pipe: ${fifoErr}`); + + fs.open( + pullPipePath, + fs.constants.O_WRONLY | fs.constants.O_CREAT, + (fdErr, fd) => { + if (fdErr) { + onError(`error opening input pipe: ${fdErr}`); return; } - fs.open( - pullPipePath, - fs.constants.O_WRONLY, - (fdErr, fd) => { - if (fdErr) { - onError(`error opening fifo for pull pipe: ${fdErr}`); - return; - } - - pullFd = fd; - pullStream = fs.createWriteStream(null as unknown as fs.PathLike, {fd}); - } - ); + pullFd = fd; + pullStream = fs.createWriteStream(null as unknown as fs.PathLike, {fd}); } ); }, @@ -211,7 +210,7 @@ export function createFifoPipe(): DebugPipe { pullPipePath, err => { if (err) { - onErrorCallback?.(`error removing fifo for pull pipe: ${err}`); + onErrorCallback?.(`error removing pull file '${pullPipePath}': ${err}`); } } ); diff --git a/extension/luaDebugSession.ts b/extension/luaDebugSession.ts index aad099a..ba6edd3 100644 --- a/extension/luaDebugSession.ts +++ b/extension/luaDebugSession.ts @@ -247,7 +247,7 @@ export class LuaDebugSession extends LoggingDebugSession { processOptions.env[stepUnmappedLinesEnv] = this.config.stepUnmappedLines ? "1" : "0"; } - this.usePipeCommutication = this.config.program.communication === "pipe" + this.usePipeCommutication = this.config.program.communication === "pipe"; //Open pipes if (this.usePipeCommutication || this.pullBreakpointsSupport) { @@ -262,14 +262,14 @@ export class LuaDebugSession extends LoggingDebugSession { data => { void this.onDebuggerOutput(data); }, err => { this.showOutput(`${err}`, OutputCategory.Error); } ); - + processOptions.env[outputFileEnv] = this.debugPipe.getOutputPipePath(); processOptions.env[inputFileEnv] = this.debugPipe.getInputPipePath(); } } if (this.pullBreakpointsSupport) { - this.debugPipe?.openPull(err => { this.showOutput(`${err}`, OutputCategory.Error); }) + this.debugPipe?.openPull(err => { this.showOutput(`${err}`, OutputCategory.Error); }); processOptions.env[pullFileEnv] = this.debugPipe?.getPullPipePath(); } @@ -346,7 +346,7 @@ export class LuaDebugSession extends LoggingDebugSession { this.autoContinueNext = true; this.debugPipe?.requestPull(); } - + const oldBreakpoints = this.fileBreakpoints[filePath]; if (typeof oldBreakpoints !== "undefined") { for (const breakpoint of oldBreakpoints) { @@ -852,7 +852,7 @@ export class LuaDebugSession extends LoggingDebugSession { private async onDebuggerStop(msg: LuaDebug.DebugBreak) { this.isRunning = false; - let prevInDebugger = this.inDebuggerBreakpoint; + const prevInDebugger = this.inDebuggerBreakpoint; this.inDebuggerBreakpoint = true; if (this.pendingScripts) { From b6b2b138d3dbeeb4853b67b3b79be56ba6f3e92f Mon Sep 17 00:00:00 2001 From: Aleksandr Kovalev Date: Wed, 7 Dec 2022 18:22:12 +0000 Subject: [PATCH 09/49] Fix hung on close + optional temp folder create (only if breakpoints pulling enabled) + cleanup temp folder on close --- extension/debugPipe.ts | 65 +++++++++++++++++++----------------------- 1 file changed, 30 insertions(+), 35 deletions(-) diff --git a/extension/debugPipe.ts b/extension/debugPipe.ts index 500c71f..c15ddc4 100644 --- a/extension/debugPipe.ts +++ b/extension/debugPipe.ts @@ -89,18 +89,10 @@ export function createFifoPipe(): DebugPipe { const outputPipePath = `/tmp/lldbg_out_${pipeId}`; const inputPipePath = `/tmp/lldbg_in_${pipeId}`; let pullPipePath = ""; - - const appPrefix = 'lldebugger'; - try { - const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), appPrefix)); - pullPipePath = path.join(tmpDir, "pull.txt"); - } catch { - // handle error - } - - let outputFd: number | null; - let inputFd: number | null; - let pullFd: number | null; + let debuggerTmpDir = ""; + let outputFd: number | null = null; + let inputFd: number | null = null; + let pullFd: number | null = null; let inputStream: fs.WriteStream | null = null; let pullStream: fs.WriteStream | null = null; let onErrorCallback: ((err: unknown) => void) | null = null; @@ -163,19 +155,20 @@ export function createFifoPipe(): DebugPipe { onErrorCallback = onError; } - fs.open( - pullPipePath, - fs.constants.O_WRONLY | fs.constants.O_CREAT, - (fdErr, fd) => { - if (fdErr) { - onError(`error opening input pipe: ${fdErr}`); - return; - } + const appPrefix = "lldebugger"; + try { + debuggerTmpDir = fs.mkdtempSync(path.join(os.tmpdir(), appPrefix)); + pullPipePath = path.join(debuggerTmpDir, "pull.txt"); - pullFd = fd; - pullStream = fs.createWriteStream(null as unknown as fs.PathLike, {fd}); - } - ); + const fd = fs.openSync( + pullPipePath, + fs.constants.O_WRONLY | fs.constants.O_CREAT + ); + pullFd = fd; + pullStream = fs.createWriteStream(null as unknown as fs.PathLike, {fd}); + } catch (e: unknown) { + onErrorCallback(e); + } }, close: () => { @@ -203,17 +196,19 @@ export function createFifoPipe(): DebugPipe { } ); } - if (pullFd !== null) { - fs.close(pullFd); - pullFd = null; - fs.rm( - pullPipePath, - err => { - if (err) { - onErrorCallback?.(`error removing pull file '${pullPipePath}': ${err}`); - } - } - ); + inputStream = null; + try { + if (pullFd !== null) { + fs.close(pullFd); + fs.rmSync(pullPipePath); + pullFd = null; + } + pullStream = null; + if (debuggerTmpDir.length > 0) { + fs.rmdirSync(debuggerTmpDir); + } + } catch (e: unknown) { + onErrorCallback?.(e); } }, From b5cb6c360f798e26c2526f8aca84ee27a26c8401 Mon Sep 17 00:00:00 2001 From: Ismoh <12631485+Ismoh@users.noreply.github.com> Date: Thu, 12 Oct 2023 21:37:29 +0200 Subject: [PATCH 10/49] Applied fixes from different PRs on tomblind repo. --- .gitignore | 1 + debugger/debugger.ts | 39 +- debugger/lldebugger.lua | 2016 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 2037 insertions(+), 19 deletions(-) create mode 100644 debugger/lldebugger.lua diff --git a/.gitignore b/.gitignore index 7104599..4123e43 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ debugger/*.lua.map extension/**/*.js extension/**/*.js.map node_modules +!lldebugger.lua \ No newline at end of file diff --git a/debugger/debugger.ts b/debugger/debugger.ts index 927d98d..82057e9 100644 --- a/debugger/debugger.ts +++ b/debugger/debugger.ts @@ -843,25 +843,26 @@ export namespace Debugger { } function comparePaths(a: string, b: string) { - let aLen = a.length; - const bLen = b.length; - if (aLen === bLen) { - return a === b; - } - //Ensure 'a' is the shorter path - if (bLen < aLen) { - [a, aLen, b] = [b, bLen, a]; - } - if (a !== b.sub(-aLen)) { - return false; - } - //If shorter string doesn't start with '/', make sure the longer one has '/' right before the substring - //so we don't match a partial filename. - if (a.sub(1, 1) === Path.separator) { - return true; - } - const bSep = -(aLen + 1); - return b.sub(bSep, bSep) === Path.separator; + // let aLen = a.length; + // const bLen = b.length; + // if (aLen === bLen) { + // return a === b; + // } + // //Ensure 'a' is the shorter path + // if (bLen < aLen) { + // [a, aLen, b] = [b, bLen, a]; + // } + // if (a !== b.sub(-aLen)) { + // return false; + // } + // //If shorter string doesn't start with '/', make sure the longer one has '/' right before the substring + // //so we don't match a partial filename. + // if (a.sub(1, 1) === Path.separator) { + // return true; + // } + // const bSep = -(aLen + 1); + // return b.sub(bSep, bSep) === Path.separator; + return Path.getAbsolute(a) === Path.getAbsolute(b); } const debugHookStackOffset = 2; diff --git a/debugger/lldebugger.lua b/debugger/lldebugger.lua new file mode 100644 index 0000000..2eb42c1 --- /dev/null +++ b/debugger/lldebugger.lua @@ -0,0 +1,2016 @@ + +local ____modules = {} +local ____moduleCache = {} +local ____originalRequire = require +local function require(file, ...) + if ____moduleCache[file] then + return ____moduleCache[file].value + end + if ____modules[file] then + local module = ____modules[file] + ____moduleCache[file] = { value = (select("#", ...) > 0) and module(...) or module(file) } + return ____moduleCache[file].value + else + if ____originalRequire then + return ____originalRequire(file) + else + error("module '" .. file .. "' not found") + end + end +end +____modules = { +["luafuncs"] = function(...) +local ____exports = {} +if _G.unpack == nil then + _G.unpack = table.unpack +end +____exports.luaAssert = _G.assert +____exports.luaError = _G.error +____exports.luaCoroutineWrap = coroutine.wrap +____exports.luaDebugTraceback = debug.traceback +____exports.luaCoroutineCreate = coroutine.create +____exports.luaCoroutineResume = coroutine.resume +____exports.luaLenMetamethodSupported = (function() return #setmetatable( + {}, + { + __len = function() return 42 end + } +) == 42 end)() +____exports.luaRawLen = rawlen or (function(v) + if not ____exports.luaLenMetamethodSupported then + return #v + end + local mt = debug.getmetatable(v) + if (not mt) or (not rawget(mt, "__len")) then + return #v + else + local len = 1 + while rawget(v, len) do + len = len + 1 + end + return len - 1 + end +end) +function ____exports.loadLuaString(str, env) + if setfenv ~= nil then + local f, e = loadstring(str, str) + if f and env then + setfenv(f, env) + end + return f, e + else + return load(str, str, "t", env) + end +end +function ____exports.loadLuaFile(filename, env) + if setfenv ~= nil then + local f, e = loadfile(filename) + if f and env then + setfenv(f, env) + end + return f, e + else + return loadfile(filename, "t", env) + end +end +function ____exports.luaGetEnv(level, thread) + local info = (thread and debug.getinfo(thread, level, "f")) or debug.getinfo(level + 1, "f") + if (not info) or (not info.func) then + return + end + if getfenv ~= nil then + return getfenv(info.func) + else + local i = 1 + while true do + local name, value = debug.getupvalue(info.func, i) + if not name then + break + end + if name == "_ENV" then + return value + end + i = i + 1 + end + end +end +return ____exports + end, +["path"] = function(...) +local ____exports = {} +local ____luafuncs = require("luafuncs") +local luaAssert = ____luafuncs.luaAssert +____exports.Path = {} +local Path = ____exports.Path +do + Path.separator = (function() + local config = _G.package.config + if config then + local sep = config:match("^[^\n]+") + if sep then + return sep + end + end + return "/" + end)() + local cwd + function Path.getCwd() + if not cwd then + local p = io.popen(((Path.separator == "\\") and "cd") or "pwd") + if p then + local output = p:read("*a") + if output then + cwd = output:match("^%s*(.-)%s*$") + end + end + cwd = cwd or "" + end + return cwd + end + function Path.dirName(path) + local dir = path:match(((("^(.-)" .. Path.separator) .. "+[^") .. Path.separator) .. "]+$") + return dir or "." + end + function Path.splitDrive(path) + local drive, pathPart = path:match("^[@=]?([a-zA-Z]:)[\\/](.*)") + if drive then + drive = drive:upper() .. Path.separator + else + drive, pathPart = path:match("^[@=]?([\\/]*)(.*)") + end + return luaAssert(drive), luaAssert(pathPart) + end + local formattedPathCache = {} + function Path.format(path) + local formattedPath = formattedPathCache[path] + if not formattedPath then + local drive, pathOnly = Path.splitDrive(path) + local pathParts = {} + for part in luaAssert(pathOnly):gmatch("[^\\/]+") do + if part ~= "." then + if ((part == "..") and (#pathParts > 0)) and (pathParts[#pathParts] ~= "..") then + table.remove(pathParts) + else + table.insert(pathParts, part) + end + end + end + local formattedDrive = drive:gsub("[\\/]+", Path.separator) + formattedPath = formattedDrive .. table.concat(pathParts, Path.separator) + formattedPathCache[path] = formattedPath + end + return formattedPath + end + function Path.isAbsolute(path) + local drive = Path.splitDrive(path) + return #drive > 0 + end + function Path.getAbsolute(path) + if Path.isAbsolute(path) then + return Path.format(path) + end + return Path.format( + (Path.getCwd() .. Path.separator) .. path + ) + end +end +return ____exports + end, +["sourcemap"] = function(...) +local ____exports = {} +local ____luafuncs = require("luafuncs") +local luaAssert = ____luafuncs.luaAssert +local ____path = require("path") +local Path = ____path.Path +____exports.SourceMap = {} +local SourceMap = ____exports.SourceMap +do + local cache = {} + local base64Lookup = {A = 0, B = 1, C = 2, D = 3, E = 4, F = 5, G = 6, H = 7, I = 8, J = 9, K = 10, L = 11, M = 12, N = 13, O = 14, P = 15, Q = 16, R = 17, S = 18, T = 19, U = 20, V = 21, W = 22, X = 23, Y = 24, Z = 25, a = 26, b = 27, c = 28, d = 29, e = 30, f = 31, g = 32, h = 33, i = 34, j = 35, k = 36, l = 37, m = 38, n = 39, o = 40, p = 41, q = 42, r = 43, s = 44, t = 45, u = 46, v = 47, w = 48, x = 49, y = 50, z = 51, ["0"] = 52, ["1"] = 53, ["2"] = 54, ["3"] = 55, ["4"] = 56, ["5"] = 57, ["6"] = 58, ["7"] = 59, ["8"] = 60, ["9"] = 61, ["+"] = 62, ["/"] = 63, ["="] = 0} + local function base64Decode(input) + local results = {} + local bits = {} + for c in input:gmatch(".") do + local sextet = luaAssert(base64Lookup[c]) + for i = 1, 6 do + local bit = (sextet % 2) ~= 0 + table.insert(bits, i, bit) + sextet = math.floor(sextet / 2) + end + if #bits >= 8 then + local value = 0 + for i = 7, 0, -1 do + local bit = table.remove(bits) + if bit then + value = value + (2 ^ i) + end + end + table.insert( + results, + string.char(value) + ) + end + end + return table.concat(results) + end + local function decodeBase64VLQ(input) + local values = {} + local bits = {} + for c in input:gmatch(".") do + local sextet = luaAssert(base64Lookup[c]) + for _ = 1, 5 do + local bit = (sextet % 2) ~= 0 + table.insert(bits, bit) + sextet = math.floor(sextet / 2) + end + local continueBit = (sextet % 2) ~= 0 + if not continueBit then + local value = 0 + for i = 1, #bits - 1 do + if bits[i + 1] then + value = value + (2 ^ (i - 1)) + end + end + if bits[1] then + value = -value + end + table.insert(values, value) + bits = {} + end + end + return values + end + local function build(data, mapDir, luaScript) + local sources = data:match("\"sources\"%s*:%s*(%b[])") + local mappings = data:match("\"mappings\"%s*:%s*\"([^\"]+)\"") + if (not mappings) or (not sources) then + return nil + end + local sourceMap = {mappings = {}, sources = {}, sourceNames = {}, luaNames = {}, hasMappedNames = false} + local sourceRoot = data:match("\"sourceRoot\"%s*:%s*\"([^\"]+)\"") + if (sourceRoot == nil) or (#sourceRoot == 0) then + sourceRoot = "." + end + for source in sources:gmatch("\"([^\"]+)\"") do + if Path.isAbsolute(source) then + table.insert( + sourceMap.sources, + Path.format(source) + ) + else + local sourcePath = (((mapDir .. Path.separator) .. sourceRoot) .. Path.separator) .. source + table.insert( + sourceMap.sources, + Path.getAbsolute(sourcePath) + ) + end + end + local names = data:match("\"names\"%s*:%s*(%b[])") + local nameList + if names then + nameList = {} + for name in names:gmatch("\"([^\"]+)\"") do + table.insert(nameList, name) + end + end + local luaLines + local line = 1 + local column = 1 + local sourceIndex = 0 + local sourceLine = 1 + local sourceColumn = 1 + local nameIndex = 0 + for mapping, separator in mappings:gmatch("([^;,]*)([;,]?)") do + if #mapping > 0 then + local colOffset, sourceOffset, sourceLineOffset, sourceColOffset, nameOffset = unpack( + decodeBase64VLQ(mapping) + ) + column = column + (colOffset or 0) + sourceIndex = sourceIndex + (sourceOffset or 0) + sourceLine = sourceLine + (sourceLineOffset or 0) + sourceColumn = sourceColumn + (sourceColOffset or 0) + if nameList and nameOffset then + nameIndex = nameIndex + nameOffset + local sourceName = luaAssert(nameList[nameIndex + 1]) + if not luaLines then + luaLines = {} + for luaLineStr in luaScript:gmatch("([^\r\n]*)\r?\n") do + table.insert(luaLines, luaLineStr) + end + end + local luaLine = luaLines[line] + if luaLine then + local luaName = luaLine:sub(column):match("[a-zA-Z_][A-Za-z0-9_]*") + if luaName then + sourceMap.sourceNames[luaName] = sourceName + sourceMap.luaNames[sourceName] = luaName + sourceMap.hasMappedNames = true + end + end + end + local lineMapping = sourceMap.mappings[line] + if ((not lineMapping) or (sourceLine < lineMapping.sourceLine)) or ((sourceLine == lineMapping.sourceLine) and (sourceColumn < lineMapping.sourceColumn)) then + sourceMap.mappings[line] = {sourceIndex = sourceIndex, sourceLine = sourceLine, sourceColumn = sourceColumn} + end + end + if separator == ";" then + line = line + 1 + column = 1 + end + end + return sourceMap + end + local scriptRootsEnv = "LOCAL_LUA_DEBUGGER_SCRIPT_ROOTS" + local scriptRoots + local function getScriptRoots() + if not scriptRoots then + scriptRoots = {} + local scriptRootsStr = os.getenv(scriptRootsEnv) + if scriptRootsStr then + for path in scriptRootsStr:gmatch("[^;]+") do + path = Path.format(path) .. Path.separator + table.insert(scriptRoots, path) + end + end + end + return scriptRoots + end + local function getMap(filePath, file) + local data = file:read("*a") + file:close() + if not data then + return + end + local encodedMap = data:match("--# sourceMappingURL=data:application/json;base64,([A-Za-z0-9+/=]+)%s*$") + if encodedMap then + local map = base64Decode(encodedMap) + local fileDir = Path.dirName(filePath) + return build(map, fileDir, data) + end + local mapFile = io.open(filePath .. ".map") + if mapFile then + local map = mapFile:read("*a") + mapFile:close() + if not map then + return + end + local fileDir = Path.dirName(filePath) + return build(map, fileDir, data) + end + end + local function findMap(fileName) + local file = io.open(fileName) + if file then + local map = getMap(fileName, file) + if map then + return map + end + end + for ____, path in ipairs( + getScriptRoots() + ) do + local filePath = path .. fileName + file = io.open(filePath) + if file then + local map = getMap(filePath, file) + if map then + return map + end + end + end + end + function SourceMap.get(fileName) + if fileName == "[C]" then + return nil + end + local sourceMap = cache[fileName] + if sourceMap == nil then + sourceMap = findMap(fileName) or false + cache[fileName] = sourceMap + end + if sourceMap ~= false then + return sourceMap + end + end + function SourceMap.find(sourceFile) + for scriptFile, sourceMap in pairs(cache) do + if sourceMap ~= false then + for ____, source in ipairs(sourceMap.sources) do + if source == sourceFile then + return scriptFile, sourceMap + end + end + end + end + return nil, nil + end +end +return ____exports + end, +["breakpoint"] = function(...) +local ____exports = {} +local ____sourcemap = require("sourcemap") +local SourceMap = ____sourcemap.SourceMap +local ____path = require("path") +local Path = ____path.Path +____exports.Breakpoint = {} +local Breakpoint = ____exports.Breakpoint +do + local current = {} + local count = 0 + function Breakpoint.get(file, line) + file = Path.format(file) + for breakpointLine, lineBreakpoints in pairs(current) do + for ____, breakpoint in ipairs(lineBreakpoints) do + if breakpoint.sourceMap then + if (breakpoint.sourceLine == line) and (breakpoint.sourceFile == file) then + return breakpoint + end + elseif (breakpointLine == line) and (breakpoint.file == file) then + return breakpoint + end + end + end + end + function Breakpoint.getLookup() + return current + end + function Breakpoint.getAll() + local breakpointList = {} + for _, lineBreakpoints in pairs(current) do + for ____, breakpoint in ipairs(lineBreakpoints) do + table.insert(breakpointList, breakpoint) + end + end + return breakpointList + end + function Breakpoint.add(file, line, condition) + file = Path.format(file) + local sourceFile + local sourceLine + local scriptFile, sourceMap = SourceMap.find(file) + if scriptFile and sourceMap then + for scriptLine, mapping in pairs(sourceMap.mappings) do + if mapping.sourceLine == line then + sourceFile = file + file = scriptFile + sourceLine = line + line = scriptLine + break + end + end + end + local lineBreakpoints = current[line] + if not lineBreakpoints then + lineBreakpoints = {} + current[line] = lineBreakpoints + end + table.insert(lineBreakpoints, {file = file, line = line, enabled = true, condition = condition, sourceFile = sourceFile, sourceLine = sourceLine, sourceMap = sourceMap}) + count = count + 1 + end + local function removeBreakpoint(breakpointLine, lineBreakpoints, i) + table.remove(lineBreakpoints, i) + if #lineBreakpoints == 0 then + current[breakpointLine] = nil + end + count = count - 1 + end + function Breakpoint.remove(file, line) + file = Path.format(file) + for breakpointLine, lineBreakpoints in pairs(current) do + for i, breakpoint in ipairs(lineBreakpoints) do + if breakpoint.sourceMap then + if (breakpoint.sourceLine == line) and (breakpoint.sourceFile == file) then + removeBreakpoint(breakpointLine, lineBreakpoints, i) + return + end + elseif (breakpointLine == line) and (breakpoint.file == file) then + removeBreakpoint(breakpointLine, lineBreakpoints, i) + return + end + end + end + end + function Breakpoint.clear() + for line in pairs(current) do + current[line] = nil + end + count = 0 + end + function Breakpoint.getCount() + return count + end +end +return ____exports + end, +["format"] = function(...) +local ____exports = {} +local ____luafuncs = require("luafuncs") +local luaRawLen = ____luafuncs.luaRawLen +local luaAssert = ____luafuncs.luaAssert +____exports.Format = {} +local Format = ____exports.Format +do + Format.arrayTag = {} + function Format.makeExplicitArray(arr) + if arr == nil then + arr = {} + end + arr[Format.arrayTag] = true + return arr + end + local indentStr = " " + local escapes = {["\n"] = "\\n", ["\r"] = "\\r", ["\""] = "\\\"", ["\\"] = "\\\\", ["\b"] = "\\b", ["\f"] = "\\f", ["\t"] = "\\t"} + local escapesPattern = "[\n\r\"\\\b\f\t%z-]" + local function replaceEscape(char) + local byte = luaAssert( + string.byte(char) + ) + if (byte >= 0) and (byte < 32) then + return string.format("\\u%.4X", byte) + end + return luaAssert(escapes[char]) + end + local function escape(str) + local escaped = str:gsub(escapesPattern, replaceEscape) + return escaped + end + local function isArray(val) + if val[Format.arrayTag] then + return true + end + local len = luaRawLen(val) + if len == 0 then + return false + end + for k in pairs(val) do + if (type(k) ~= "number") or (k > len) then + return false + end + end + return true + end + function Format.asJson(val, indent, tables) + if indent == nil then + indent = 0 + end + tables = tables or ({}) + local valType = type(val) + if (valType == "table") and (not tables[val]) then + tables[val] = true + if isArray(val) then + local arrayVals = {} + for _, arrayVal in ipairs(val) do + local valStr = Format.asJson(arrayVal, indent + 1, tables) + table.insert( + arrayVals, + ("\n" .. indentStr:rep(indent + 1)) .. valStr + ) + end + return ((("[" .. table.concat(arrayVals, ",")) .. "\n") .. indentStr:rep(indent)) .. "]" + else + local kvps = {} + for k, v in pairs(val) do + local valStr = Format.asJson(v, indent + 1, tables) + table.insert( + kvps, + (((("\n" .. indentStr:rep(indent + 1)) .. "\"") .. escape( + tostring(k) + )) .. "\": ") .. valStr + ) + end + return ((#kvps > 0) and (((("{" .. table.concat(kvps, ",")) .. "\n") .. indentStr:rep(indent)) .. "}")) or "{}" + end + elseif (valType == "number") or (valType == "boolean") then + return tostring(val) + else + return ("\"" .. escape( + tostring(val) + )) .. "\"" + end + end +end +return ____exports + end, +["thread"] = function(...) +local ____exports = {} +____exports.mainThreadName = "main thread" +function ____exports.isThread(val) + return type(val) == "thread" +end +____exports.mainThread = (function() + local LUA_RIDX_MAINTHREAD = 1 + local registryMainThread = debug.getregistry()[LUA_RIDX_MAINTHREAD] + return (____exports.isThread(registryMainThread) and registryMainThread) or ____exports.mainThreadName +end)() +return ____exports + end, +["send"] = function(...) +local ____exports = {} +local ____luafuncs = require("luafuncs") +local luaError = ____luafuncs.luaError +local luaLenMetamethodSupported = ____luafuncs.luaLenMetamethodSupported +local luaRawLen = ____luafuncs.luaRawLen +local ____format = require("format") +local Format = ____format.Format +local ____thread = require("thread") +local mainThread = ____thread.mainThread +local mainThreadName = ____thread.mainThreadName +____exports.Send = {} +local Send = ____exports.Send +do + local startToken = "@lldbg|" + local endToken = "|lldbg@" + local outputFileEnv = "LOCAL_LUA_DEBUGGER_OUTPUT_FILE" + local outputFilePath = os.getenv(outputFileEnv) + local outputFile + if outputFilePath and (#outputFilePath > 0) then + local file, err = io.open(outputFilePath, "w+") + if not file then + luaError( + ((("Failed to open output file \"" .. outputFilePath) .. "\": ") .. tostring(err)) .. "\n" + ) + end + outputFile = file + outputFile:setvbuf("no") + else + outputFile = io.stdout + end + local function getPrintableValue(value) + local valueType = type(value) + if valueType == "string" then + return ("\"" .. tostring(value)) .. "\"" + elseif ((valueType == "number") or (valueType == "boolean")) or (valueType == "nil") then + return tostring(value) + else + local _, str = pcall(tostring, value) + local strType = type(str) + if strType ~= "string" then + return ("[" .. strType) .. "]" + end + return ("[" .. str) .. "]" + end + end + local function isElementKey(tbl, tblLen, key) + return ((type(key) == "number") and (key >= 1)) and (key <= tblLen) + end + local function buildVariable(name, value) + local dbgVar = { + type = type(value), + name = name, + value = getPrintableValue(value) + } + if type(value) == "table" then + dbgVar.length = luaRawLen(value) + end + return dbgVar + end + local function buildVarArgs(name, values) + local valueStrs = {} + for _, val in ipairs(values) do + table.insert( + valueStrs, + getPrintableValue(val) + ) + end + return { + type = "table", + name = name, + value = table.concat(valueStrs, ", "), + length = #values + } + end + local function send(message) + outputFile:write( + (startToken .. Format.asJson(message)) .. endToken + ) + end + function Send.error(err) + local dbgError = {tag = "$luaDebug", type = "error", error = err} + send(dbgError) + end + function Send.debugBreak(message, breakType, threadId) + local dbgBreak = {tag = "$luaDebug", type = "debugBreak", message = message, breakType = breakType, threadId = threadId} + send(dbgBreak) + end + function Send.result(...) + local values = {...} + local results = Format.makeExplicitArray() + for ____, value in ipairs(values) do + table.insert( + results, + { + type = type(value), + value = getPrintableValue(value) + } + ) + end + local dbgResult = {tag = "$luaDebug", type = "result", results = results} + send(dbgResult) + end + function Send.frames(frameList) + local dbgStack = {tag = "$luaDebug", type = "stack", frames = frameList} + send(dbgStack) + end + function Send.threads(threadIds, activeThread) + local dbgThreads = {tag = "$luaDebug", type = "threads", threads = {}} + for thread, threadId in pairs(threadIds) do + if (thread == mainThread) or (coroutine.status(thread) ~= "dead") then + local dbgThread = { + name = ((thread == mainThread) and mainThreadName) or tostring(thread), + id = threadId, + active = (thread == activeThread) or nil + } + table.insert(dbgThreads.threads, dbgThread) + end + end + send(dbgThreads) + end + function Send.vars(varsObj) + local dbgVariables = { + tag = "$luaDebug", + type = "variables", + variables = Format.makeExplicitArray() + } + for name, info in pairs(varsObj) do + local dbgVar = ((name == "...") and buildVarArgs(name, info.val)) or buildVariable(name, info.val) + table.insert(dbgVariables.variables, dbgVar) + end + send(dbgVariables) + end + function Send.props(tbl, kind, first, count) + local dbgProperties = { + tag = "$luaDebug", + type = "properties", + properties = Format.makeExplicitArray() + } + if kind == "indexed" then + if first == nil then + first = 1 + end + local last = (count and ((first + count) - 1)) or ((first + luaRawLen(tbl)) - 1) + for i = first, last do + local val = tbl[i] + local name = getPrintableValue(i) + local dbgVar = buildVariable(name, val) + table.insert(dbgProperties.properties, dbgVar) + end + else + local len = luaRawLen(tbl) + for key, val in pairs(tbl) do + if (kind ~= "named") or (not isElementKey(tbl, len, key)) then + local name = getPrintableValue(key) + local dbgVar = buildVariable(name, val) + table.insert(dbgProperties.properties, dbgVar) + end + end + local meta = getmetatable(tbl) + if meta then + dbgProperties.metatable = { + type = type(meta), + value = getPrintableValue(meta) + } + end + local lenStatus, tblLen = pcall( + function() return #tbl end + ) + if not lenStatus then + dbgProperties.length = { + type = type(tblLen), + error = tblLen + } + elseif tblLen ~= 0 then + dbgProperties.length = { + type = type(tblLen), + value = tostring(tblLen) + } + else + local mt = debug.getmetatable(tbl) + if ((not mt) and (#dbgProperties.properties == 0)) or ((mt and luaLenMetamethodSupported) and mt.__len) then + dbgProperties.length = { + type = type(tblLen), + value = tostring(tblLen) + } + end + end + end + send(dbgProperties) + end + function Send.breakpoints(breaks) + local breakpointList = {} + for ____, breakpoint in ipairs(breaks) do + table.insert(breakpointList, {line = breakpoint.sourceLine or breakpoint.line, file = breakpoint.sourceFile or breakpoint.file, condition = breakpoint.condition, enabled = breakpoint.enabled}) + end + local dbgBreakpoints = { + tag = "$luaDebug", + type = "breakpoints", + breakpoints = Format.makeExplicitArray(breakpointList) + } + send(dbgBreakpoints) + end + function Send.help(...) + local helpStrs = {...} + local nameLength = 0 + for _, nameAndDesc in ipairs(helpStrs) do + nameLength = math.max(nameLength, #nameAndDesc[2]) + end + local builtStrs = {} + for _, nameAndDesc in ipairs(helpStrs) do + local name, desc = unpack(nameAndDesc) + table.insert( + builtStrs, + ((name .. string.rep(" ", (nameLength - #name) + 1)) .. ": ") .. desc + ) + end + outputFile:write( + table.concat(builtStrs, "\n") .. "\n" + ) + end +end +return ____exports + end, +["debugger"] = function(...) +local ____exports = {} +local ____luafuncs = require("luafuncs") +local luaAssert = ____luafuncs.luaAssert +local luaError = ____luafuncs.luaError +local luaCoroutineCreate = ____luafuncs.luaCoroutineCreate +local luaCoroutineWrap = ____luafuncs.luaCoroutineWrap +local luaCoroutineResume = ____luafuncs.luaCoroutineResume +local luaDebugTraceback = ____luafuncs.luaDebugTraceback +local loadLuaString = ____luafuncs.loadLuaString +local luaGetEnv = ____luafuncs.luaGetEnv +local ____path = require("path") +local Path = ____path.Path +local ____sourcemap = require("sourcemap") +local SourceMap = ____sourcemap.SourceMap +local ____send = require("send") +local Send = ____send.Send +local ____breakpoint = require("breakpoint") +local Breakpoint = ____breakpoint.Breakpoint +local ____thread = require("thread") +local mainThread = ____thread.mainThread +local mainThreadName = ____thread.mainThreadName +local isThread = ____thread.isThread +____exports.Debugger = {} +local Debugger = ____exports.Debugger +do + local debuggerName = "lldebugger.lua" + local builtinFunctionPrefix = "[builtin:" + local inputFileEnv = "LOCAL_LUA_DEBUGGER_INPUT_FILE" + local inputFilePath = os.getenv(inputFileEnv) + local inputFile + if inputFilePath and (#inputFilePath > 0) then + local file, err = io.open(inputFilePath, "r+") + if not file then + luaError( + ((("Failed to open input file \"" .. inputFilePath) .. "\": ") .. tostring(err)) .. "\n" + ) + end + inputFile = file + inputFile:setvbuf("no") + else + inputFile = io.stdin + end + local pullFileEnv = "LOCAL_LUA_DEBUGGER_PULL_FILE" + local pullFilePath = os.getenv(pullFileEnv) + local lastPullSeek = 0 + local pullFile + if pullFilePath and (#pullFilePath > 0) then + local file, err = io.open(pullFilePath, "r+") + if not file then + luaError( + ((("Failed to open pull file \"" .. pullFilePath) .. "\": ") .. tostring(err)) .. "\n" + ) + end + pullFile = file + pullFile:setvbuf("no") + local fileSize, errorSeek = pullFile:seek("end") + if not fileSize then + luaError( + ((("Failed to read pull file \"" .. pullFilePath) .. "\": ") .. tostring(errorSeek)) .. "\n" + ) + else + lastPullSeek = fileSize + end + else + pullFile = nil + end + local skipNextBreak = false + local hookStack = {} + local threadIds = setmetatable({}, {__mode = "k"}) + local threadStackOffsets = setmetatable({}, {__mode = "k"}) + local mainThreadId = 1 + threadIds[mainThread] = mainThreadId + local nextThreadId = mainThreadId + 1 + local function getThreadId(thread) + return luaAssert(threadIds[thread]) + end + local function getActiveThread() + return coroutine.running() or mainThread + end + local function getLine(info) + local currentLine = info.currentline and tonumber(info.currentline) + if currentLine and (currentLine > 0) then + return currentLine + end + local lineDefined = info.linedefined and tonumber(info.linedefined) + if lineDefined and (lineDefined > 0) then + return lineDefined + end + return -1 + end + local function backtrace(stack, frameIndex) + local frames = {} + for i = 0, #stack - 1 do + local info = luaAssert(stack[i + 1]) + local frame = { + source = (info.source and Path.format(info.source)) or "?", + line = getLine(info) + } + if info.source then + local sourceMap = SourceMap.get(frame.source) + if sourceMap then + local lineMapping = sourceMap.mappings[frame.line] + if lineMapping then + frame.mappedLocation = { + source = luaAssert(sourceMap.sources[lineMapping.sourceIndex + 1]), + line = lineMapping.sourceLine, + column = lineMapping.sourceColumn + } + end + end + end + if info.name then + frame.func = info.name + elseif info.func then + frame.func = tostring(info.func) + end + if i == frameIndex then + frame.active = true + end + table.insert(frames, frame) + end + Send.frames(frames) + end + local supportsUtf8Identifiers = (function() + local identifier = (string.char(226) .. string.char(143)) .. string.char(176) + local ____, err = loadLuaString((("local " .. identifier) .. " = true return ") .. identifier) + return err == nil + end)() + local function isValidIdentifier(name) + if supportsUtf8Identifiers then + for c in name:gmatch("[^a-zA-Z0-9_]") do + local a = c:byte() + if a and (a < 128) then + return false + end + end + return true + else + local invalidChar = name:match("[^a-zA-Z0-9_]") + return invalidChar == nil + end + end + local function getLocals(level, thread) + local locs = {vars = {}} + if thread == mainThreadName then + return locs + end + local info + if thread then + info = debug.getinfo(thread, level, "u") + else + info = debug.getinfo(level + 1, "u") + end + if not info then + return locs + end + local name + local val + local index = 1 + while true do + if thread then + name, val = debug.getlocal(thread, level, index) + else + name, val = debug.getlocal(level + 1, index) + end + if not name then + break + end + if isValidIdentifier(name) then + locs.vars[name] = { + val = val, + index = index, + type = type(val) + } + end + index = index + 1 + end + local isVarArg = info.isvararg + if isVarArg ~= false then + if isVarArg then + locs.varargs = {} + end + index = -1 + while true do + if thread then + name, val = debug.getlocal(thread, level, index) + else + name, val = debug.getlocal(level + 1, index) + end + if not name then + break + end + if not locs.varargs then + locs.varargs = {} + end + table.insert( + locs.varargs, + { + val = val, + index = index, + type = type(val) + } + ) + index = index - 1 + end + end + return locs + end + local function getUpvalues(info) + local ups = {vars = {}} + if (not info.nups) or (not info.func) then + return ups + end + for index = 1, info.nups do + local name, val = debug.getupvalue(info.func, index) + ups.vars[luaAssert(name)] = { + val = val, + index = index, + type = type(val) + } + end + return ups + end + local function populateGlobals(globs, tbl, metaStack) + metaStack[tbl] = true + local meta = debug.getmetatable(tbl) + if ((meta ~= nil) and (type(meta.__index) == "table")) and (metaStack[meta] == nil) then + populateGlobals(globs, meta.__index, metaStack) + end + for key, val in pairs(tbl) do + local name = tostring(key) + globs[name] = { + val = val, + type = type(val) + } + end + end + local function getGlobals(level, thread) + if thread == mainThreadName then + thread = nil + end + if not thread then + level = level + 1 + end + local globs = {} + local fenv = luaGetEnv(level, thread) or _G + local metaStack = {} + populateGlobals(globs, fenv, metaStack) + return globs + end + local function mapVarNames(vars, sourceMap) + if not sourceMap then + return + end + local addVars = {} + local removeVars = {} + for name, info in pairs(vars) do + local mappedName = sourceMap.sourceNames[name] + if mappedName then + addVars[mappedName] = info + table.insert(removeVars, name) + end + end + for _, name in ipairs(removeVars) do + vars[name] = nil + end + for name, info in pairs(addVars) do + vars[name] = info + end + end + local function mapExpressionNames(expression, sourceMap) + if (not sourceMap) or (not sourceMap.hasMappedNames) then + return expression + end + local function mapName(sourceName, isProperty) + if isProperty then + if not isValidIdentifier(sourceName) then + return ("[\"" .. sourceName) .. "\"]" + else + return "." .. sourceName + end + else + return luaAssert(sourceMap).luaNames[sourceName] or sourceName + end + end + local inQuote + local isEscaped = false + local nameStart + local nameIsProperty = false + local nonNameStart = 1 + local mappedExpression = "" + for i = 1, #expression do + local char = expression:sub(i, i) + if inQuote then + if char == "\\" then + isEscaped = not isEscaped + elseif (char == inQuote) and (not isEscaped) then + inQuote = nil + else + isEscaped = false + end + elseif (char == "\"") or (char == "'") then + inQuote = char + else + local nameChar = char:match("[^\"'`~!@#%%^&*%(%)%-+=%[%]{}|\\/<>,%.:;%s]") + if nameStart then + if not nameChar then + local sourceName = expression:sub(nameStart, i - 1) + mappedExpression = mappedExpression .. mapName(sourceName, nameIsProperty) + nameStart = nil + nonNameStart = i + end + elseif nameChar then + local lastChar = expression:sub(i - 1, i - 1) + nameIsProperty = lastChar == "." + nameStart = i + mappedExpression = mappedExpression .. expression:sub(nonNameStart, nameStart - ((nameIsProperty and 2) or 1)) + end + end + end + if nameStart then + local sourceName = expression:sub(nameStart) + mappedExpression = mappedExpression .. mapName(sourceName, nameIsProperty) + else + mappedExpression = mappedExpression .. expression:sub(nonNameStart) + end + return mappedExpression + end + local metatableAccessor = "lldbg_getmetatable" + local function execute(statement, level, info, thread) + if thread == mainThreadName then + return false, "unable to access main thread while running in a coroutine" + end + if not thread then + level = level + 1 + end + local locs = getLocals(level, thread) + local ups = getUpvalues(info) + local fenv = luaGetEnv(level, thread) or _G + local env = setmetatable( + {}, + { + __index = function(self, name) + if name == metatableAccessor then + return getmetatable + end + local variable = locs.vars[name] or ups.vars[name] + if variable ~= nil then + return variable.val + end + return fenv[name] + end, + __newindex = function(self, name, val) + local variable = locs.vars[name] or ups.vars[name] + if variable ~= nil then + variable.type = type(val) + variable.val = val + else + fenv[name] = val + end + end + } + ) + local loadStringResult = { + loadLuaString(statement, env) + } + local func = loadStringResult[1] + if not func then + return false, loadStringResult[2] + end + local varargs = {} + if locs.varargs then + for ____, vararg in ipairs(locs.varargs) do + table.insert(varargs, vararg.val) + end + end + local results = { + pcall( + func, + unpack(varargs) + ) + } + if results[1] then + for _, loc in pairs(locs.vars) do + if thread then + debug.setlocal(thread, level, loc.index, loc.val) + else + debug.setlocal(level, loc.index, loc.val) + end + end + for _, up in pairs(ups.vars) do + debug.setupvalue( + luaAssert(info.func), + up.index, + up.val + ) + end + return true, unpack(results, 2) + end + return false, results[2] + end + local function getInput() + local inp = inputFile:read("*l") + return inp + end + local function getStack(threadOrOffset) + local thread + local i = 1 + if isThread(threadOrOffset) then + thread = threadOrOffset + local offset = threadStackOffsets[thread] + if offset then + i = i + offset + end + else + i = i + threadOrOffset + end + local stack = {} + while true do + local stackInfo + if thread then + stackInfo = debug.getinfo(thread, i, "nSluf") + else + stackInfo = debug.getinfo(i, "nSluf") + end + if not stackInfo then + break + end + table.insert(stack, stackInfo) + i = i + 1 + end + return stack + end + local breakAtDepth = -1 + local breakInThread + local updateHook + local isDebugHookDisabled = true + local ignorePatterns + local inDebugBreak = false + local function debugBreak(activeThread, stackOffset, activeLine) + assert(not inDebugBreak) + inDebugBreak = true + stackOffset = stackOffset + 1 + local activeStack = getStack(stackOffset) + if activeLine and (#activeStack > 0) then + luaAssert(activeStack[1]).currentline = activeLine + end + local activeThreadFrameOffset = stackOffset + breakAtDepth = -1 + breakInThread = nil + local frameOffset = activeThreadFrameOffset + local frame = 0 + local currentThread = activeThread + local currentStack = activeStack + local info = luaAssert(currentStack[frame + 1]) + local source = Path.format( + luaAssert(info.source) + ) + local sourceMap = SourceMap.get(source) + while true do + local inp = getInput() + if (not inp) or (inp == "quit") then + os.exit(0) + elseif (inp == "cont") or (inp == "continue") then + break + elseif (inp == "autocont") or (inp == "autocontinue") then + updateHook() + inDebugBreak = false + return false + elseif inp == "help" then + Send.help({"help", "show available commands"}, {"cont|continue", "continue execution"}, {"autocont|autocontinue", "continue execution if not stopped at a breakpoint"}, {"quit", "stop program and debugger"}, {"step", "step to next line"}, {"stepin", "step in to current line"}, {"stepout", "step out to calling line"}, {"stack", "show current stack trace"}, {"frame n", "set active stack frame"}, {"locals", "show all local variables available in current context"}, {"ups", "show all upvalue variables available in the current context"}, {"globals", "show all global variables in current environment"}, {"props indexed [start] [count]", "show array elements of a table"}, {"props named|all", "show properties of a table"}, {"eval", "evaluate an expression in the current context"}, {"exec", "execute a statement in the current context"}, {"break set file.ext:n [cond]", "set a breakpoint"}, {"break del|delete file.ext:n", "delete a breakpoint"}, {"break en|enable file.ext:n", "enable a breakpoint"}, {"break dis|disable file.ext:n", "disable a breakpoint"}, {"break list", "show all breakpoints"}, {"break clear", "delete all breakpoints"}, {"threads", "list active thread ids"}, {"thread n", "set current thread by id"}, {"script", "add known script file (pre-caches sourcemap for breakpoint)"}, {"ignore", "add pattern for files to ignore when stepping"}) + elseif inp == "threads" then + Send.threads(threadIds, activeThread) + elseif inp:sub(1, 6) == "thread" then + local newThreadIdStr = inp:match("^thread%s+(%d+)$") + if newThreadIdStr ~= nil then + local newThreadId = luaAssert( + tonumber(newThreadIdStr) + ) + local newThread + for thread, threadId in pairs(threadIds) do + if threadId == newThreadId then + newThread = thread + break + end + end + if newThread ~= nil then + if newThread == activeThread then + currentStack = activeStack + elseif newThread == mainThreadName then + currentStack = {{name = "unable to access main thread while running in a coroutine", source = ""}} + else + currentStack = getStack(newThread) + if #currentStack == 0 then + table.insert(currentStack, {name = "thread has not been started", source = ""}) + end + end + currentThread = newThread + frame = 0 + frameOffset = ((currentThread == activeThread) and activeThreadFrameOffset) or (1 + (threadStackOffsets[currentThread] or 0)) + info = luaAssert(currentStack[frame + 1]) + source = Path.format( + luaAssert(info.source) + ) + sourceMap = SourceMap.get(source) + backtrace(currentStack, frame) + else + Send.error("Bad thread id") + end + else + Send.error("Bad thread id") + end + elseif inp == "step" then + breakAtDepth = #activeStack + breakInThread = activeThread + break + elseif inp == "stepin" then + breakAtDepth = math.huge + breakInThread = nil + break + elseif inp == "stepout" then + breakAtDepth = #activeStack - 1 + breakInThread = activeThread + break + elseif inp == "stack" then + backtrace(currentStack, frame) + elseif inp:sub(1, 5) == "frame" then + local newFrameStr = inp:match("^frame%s+(%d+)$") + if newFrameStr ~= nil then + local newFrame = luaAssert( + tonumber(newFrameStr) + ) + if (newFrame > 0) and (newFrame <= #currentStack) then + frame = newFrame - 1 + info = luaAssert(currentStack[frame + 1]) + source = Path.format( + luaAssert(info.source) + ) + sourceMap = SourceMap.get(source) + backtrace(currentStack, frame) + else + Send.error("Bad frame") + end + else + Send.error("Bad frame") + end + elseif inp == "locals" then + local locs = getLocals(frame + frameOffset, ((currentThread ~= activeThread) and currentThread) or nil) + mapVarNames(locs.vars, sourceMap) + if locs.varargs then + local varArgVals = {} + for ____, vararg in ipairs(locs.varargs) do + table.insert(varArgVals, vararg.val) + end + locs.vars["..."] = {val = varArgVals, index = -1, type = "table"} + end + Send.vars(locs.vars) + elseif inp == "ups" then + local ups = getUpvalues(info) + mapVarNames(ups.vars, sourceMap) + Send.vars(ups.vars) + elseif inp == "globals" then + local globs = getGlobals(frame + frameOffset, ((currentThread ~= activeThread) and currentThread) or nil) + mapVarNames(globs, sourceMap) + Send.vars(globs) + elseif inp:sub(1, 5) == "break" then + local cmd = inp:match("^break%s+([a-z]+)") + local file + local line + local breakpoint + if ((((((cmd == "set") or (cmd == "del")) or (cmd == "delete")) or (cmd == "dis")) or (cmd == "disable")) or (cmd == "en")) or (cmd == "enable") then + local lineStr + file, lineStr = inp:match("^break%s+[a-z]+%s+(.-):(%d+)") + if (file ~= nil) and (lineStr ~= nil) then + line = luaAssert( + tonumber(lineStr) + ) + breakpoint = Breakpoint.get(file, line) + end + end + if cmd == "set" then + if (file ~= nil) and (line ~= nil) then + local condition = inp:match("^break%s+[a-z]+%s+.-:%d+%s+(.+)") + Breakpoint.add(file, line, condition) + breakpoint = luaAssert( + Breakpoint.get(file, line) + ) + Send.breakpoints({breakpoint}) + else + Send.error("Bad breakpoint") + end + elseif (cmd == "del") or (cmd == "delete") then + if (file ~= nil) and (line ~= nil) then + Breakpoint.remove(file, line) + Send.result(nil) + else + Send.error("Bad breakpoint") + end + elseif (cmd == "dis") or (cmd == "disable") then + if breakpoint ~= nil then + breakpoint.enabled = false + Send.breakpoints({breakpoint}) + else + Send.error("Bad breakpoint") + end + elseif (cmd == "en") or (cmd == "enable") then + if breakpoint ~= nil then + breakpoint.enabled = true + Send.breakpoints({breakpoint}) + else + Send.error("Bad breakpoint") + end + elseif cmd == "clear" then + Breakpoint.clear() + Send.breakpoints( + Breakpoint.getAll() + ) + elseif cmd == "list" then + Send.breakpoints( + Breakpoint.getAll() + ) + else + Send.error("Bad breakpoint command") + end + elseif inp:sub(1, 4) == "eval" then + local expression = inp:match("^eval%s+(.+)$") + if not expression then + Send.error("Bad expression") + else + local mappedExpression = mapExpressionNames(expression, sourceMap) + local results = { + execute("return " .. mappedExpression, frame + frameOffset, info, ((currentThread ~= activeThread) and currentThread) or nil) + } + if results[1] then + Send.result( + unpack(results, 2) + ) + else + Send.error(results[2]) + end + end + elseif inp:sub(1, 5) == "props" then + local expression, kind, first, count = inp:match("^props%s+(.-)%s*([a-z]+)%s*(%d*)%s*(%d*)$") + if not expression then + Send.error("Bad expression") + elseif ((kind ~= "all") and (kind ~= "named")) and (kind ~= "indexed") then + Send.error( + "Bad kind: " .. (("'" .. tostring(kind)) .. "'") + ) + else + local mappedExpression = mapExpressionNames(expression, sourceMap) + local s, r = execute("return " .. mappedExpression, frame + frameOffset, info, ((currentThread ~= activeThread) and currentThread) or nil) + if s then + if type(r) == "table" then + Send.props( + r, + kind, + tonumber(first), + tonumber(count) + ) + else + Send.error(("Expression \"" .. mappedExpression) .. "\" is not a table") + end + else + Send.error(r) + end + end + elseif inp:sub(1, 4) == "exec" then + local statement = inp:match("^exec%s+(.+)$") + if not statement then + Send.error("Bad statement") + else + local results = { + execute(statement, frame + frameOffset, info, ((currentThread ~= activeThread) and currentThread) or nil) + } + if results[1] then + Send.result( + unpack(results, 2) + ) + else + Send.error(results[2]) + end + end + elseif inp:sub(1, 6) == "script" then + local scriptFile = inp:match("^script%s+(.+)$") + if not scriptFile then + Send.error("Bad script file") + else + scriptFile = Path.format(scriptFile) + local foundSourceMap = SourceMap.get(scriptFile) + if foundSourceMap then + Send.result(("added " .. scriptFile) .. ": source map found") + else + Send.result(("added " .. scriptFile) .. ": source map NOT found!") + end + end + elseif inp:sub(1, 6) == "ignore" then + local ignorePattern = inp:match("^ignore%s+(.+)$") + if not ignorePattern then + Send.error("Bad ignore pattern") + else + local match, err = pcall(string.match, "", ignorePattern) + if not match then + Send.error( + (("Bad ignore pattern \"" .. ignorePattern) .. "\": ") .. tostring(err) + ) + else + if not ignorePatterns then + ignorePatterns = {} + end + table.insert(ignorePatterns, ignorePattern) + Send.result(("Added ignore pattern \"" .. ignorePattern) .. "\"") + end + end + else + Send.error("Bad command") + end + end + updateHook() + inDebugBreak = false + return true + end + local function comparePaths(a, b) + return Path.getAbsolute(a) == Path.getAbsolute(b) + end + local debugHookStackOffset = 2 + local breakpointLookup = Breakpoint.getLookup() + local stepUnmappedLinesEnv = "LOCAL_LUA_DEBUGGER_STEP_UNMAPPED_LINES" + local skipUnmappedLines = os.getenv(stepUnmappedLinesEnv) ~= "1" + local function debugHook(event, line) + if isDebugHookDisabled then + return + end + if breakAtDepth >= 0 then + local activeThread = getActiveThread() + local stepBreak + if breakInThread == nil then + stepBreak = true + elseif activeThread == breakInThread then + stepBreak = #getStack(debugHookStackOffset) <= breakAtDepth + else + stepBreak = (breakInThread ~= mainThread) and (coroutine.status(breakInThread) == "dead") + end + if stepBreak then + local topFrameSource = debug.getinfo(debugHookStackOffset, "S") + if (not topFrameSource) or (not topFrameSource.source) then + return + end + if topFrameSource.source:sub(-#debuggerName) == debuggerName then + return + end + if topFrameSource.short_src and (topFrameSource.short_src:sub(1, #builtinFunctionPrefix) == builtinFunctionPrefix) then + return + end + local source + if ignorePatterns then + source = Path.format(topFrameSource.source) + for ____, pattern in ipairs(ignorePatterns) do + local match = source:match(pattern) + if match then + return + end + end + end + if skipUnmappedLines then + if not source then + source = Path.format(topFrameSource.source) + end + local sourceMap = SourceMap.get(source) + if sourceMap and (not sourceMap.mappings[line]) then + return + end + end + Send.debugBreak( + "step", + "step", + getThreadId(activeThread) + ) + if debugBreak(activeThread, debugHookStackOffset, line) then + return + end + end + end + local lineBreakpoints = breakpointLookup[line] + if not lineBreakpoints then + return + end + local topFrame = debug.getinfo(debugHookStackOffset, "S") + if (not topFrame) or (not topFrame.source) then + return + end + local source = Path.format(topFrame.source) + topFrame = nil + for ____, breakpoint in ipairs(lineBreakpoints) do + if breakpoint.enabled and comparePaths(breakpoint.file, source) then + if breakpoint.condition then + local mappedCondition = mapExpressionNames(breakpoint.condition, breakpoint.sourceMap) + local condition = "return " .. mappedCondition + topFrame = topFrame or luaAssert( + debug.getinfo(debugHookStackOffset, "nSluf") + ) + local success, result = execute(condition, debugHookStackOffset, topFrame) + if success and result then + local activeThread = getActiveThread() + local conditionDisplay = ((("\"" .. breakpoint.condition) .. "\" = \"") .. tostring(result)) .. "\"" + local breakpointFile, breakpointLine = breakpoint.sourceFile or breakpoint.file, breakpoint.sourceLine or breakpoint.line + Send.debugBreak( + (((("breakpoint hit: \"" .. breakpointFile) .. ":") .. tostring(breakpointLine)) .. "\", ") .. conditionDisplay, + "breakpoint", + getThreadId(activeThread) + ) + debugBreak(activeThread, debugHookStackOffset, line) + break + end + else + local activeThread = getActiveThread() + local breakpointFile, breakpointLine = breakpoint.sourceFile or breakpoint.file, breakpoint.sourceLine or breakpoint.line + Send.debugBreak( + ((("breakpoint hit: \"" .. breakpointFile) .. ":") .. tostring(breakpointLine)) .. "\"", + "breakpoint", + getThreadId(activeThread) + ) + debugBreak(activeThread, debugHookStackOffset, line) + break + end + end + end + end + local function mapSource(indent, file, lineStr, remainder) + file = Path.format(file) + local sourceMap = SourceMap.get(file) + if sourceMap then + local line = luaAssert( + tonumber(lineStr) + ) + local lineMapping = sourceMap.mappings[line] + if lineMapping then + local sourceFile = sourceMap.sources[lineMapping.sourceIndex + 1] + local sourceLine = lineMapping.sourceLine + local sourceColumn = lineMapping.sourceColumn + return ((((((indent .. tostring(sourceFile)) .. ":") .. tostring(sourceLine)) .. ":") .. tostring(sourceColumn)) .. ":") .. remainder + end + end + return ((((indent .. file) .. ":") .. lineStr) .. ":") .. remainder + end + local function mapSources(str) + str = str:gsub("(%s*)([^\r\n]+):(%d+):([^\r\n]+)", mapSource) + return str + end + local function breakForError(err, level, propagate) + local message = mapSources( + tostring(err) + ) + level = (level or 1) + 1 + if skipNextBreak then + skipNextBreak = false + elseif not inDebugBreak then + local thread = getActiveThread() + Send.debugBreak( + message, + "error", + getThreadId(thread) + ) + debugBreak(thread, level) + end + if propagate then + skipNextBreak = true + luaError(message, level) + end + end + local function registerThread(thread) + assert(not threadIds[thread]) + local threadId = nextThreadId + nextThreadId = nextThreadId + 1 + threadIds[thread] = threadId + local hook = debug.gethook() + if hook == debugHook then + debug.sethook(thread, debugHook, "l") + end + return threadId + end + local canYieldAcrossPcall + local function useXpcallInCoroutine() + if canYieldAcrossPcall == nil then + local _, yieldResult = luaCoroutineResume( + luaCoroutineCreate( + function() return pcall( + function() return coroutine.yield(true) end + ) end + ) + ) + canYieldAcrossPcall = yieldResult == true + end + return canYieldAcrossPcall + end + local function debuggerCoroutineCreate(f, allowBreak) + if allowBreak and useXpcallInCoroutine() then + local originalFunc = f + local function debugFunc(...) + local args = {...} + local function wrappedFunc() + return originalFunc( + unpack(args) + ) + end + local results = { + xpcall(wrappedFunc, breakForError) + } + if results[1] then + return unpack(results, 2) + else + skipNextBreak = true + local message = mapSources( + tostring(results[2]) + ) + return luaError(message, 2) + end + end + f = debugFunc + end + local thread = luaCoroutineCreate(f) + registerThread(thread) + return thread + end + local function debuggerCoroutineResume(thread, ...) + local activeThread = getActiveThread() + threadStackOffsets[activeThread] = 1 + local results = { + luaCoroutineResume(thread, ...) + } + if not results[1] then + breakForError(results[2], 2) + end + threadStackOffsets[activeThread] = nil + return unpack(results) + end + local function debuggerCoroutineWrap(f) + local thread = debuggerCoroutineCreate(f, true) + local function resumer(...) + local activeThread = getActiveThread() + threadStackOffsets[activeThread] = 1 + local results = { + luaCoroutineResume(thread, ...) + } + if not results[1] then + breakForError(results[2], 2, true) + end + threadStackOffsets[activeThread] = nil + return unpack(results, 2) + end + return resumer + end + local function debuggerTraceback(threadOrMessage, messageOrLevel, level) + local trace + if isThread(threadOrMessage) then + trace = luaDebugTraceback(threadOrMessage, messageOrLevel or "", (level or 1) + 1) + else + trace = luaDebugTraceback(threadOrMessage or "", (messageOrLevel or 1) + 1) + end + trace = mapSources(trace) + if skipNextBreak then + skipNextBreak = false + elseif hookStack[#hookStack] == "global" then + local info = debug.getinfo(2, "S") + if info and (info.what == "C") then + local thread = (isThread(threadOrMessage) and threadOrMessage) or getActiveThread() + Send.debugBreak( + trace, + "error", + getThreadId(thread) + ) + debugBreak(thread, 3) + end + end + return trace + end + local function debuggerError(message, level) + breakForError(message, (level or 1) + 1, true) + end + local function debuggerAssert(v, ...) + local args = {...} + if not v then + local message = ((args[1] ~= nil) and args[1]) or "assertion failed" + breakForError(message, 1, true) + end + return v, unpack(args) + end + local function setErrorHandler() + local hookType = hookStack[#hookStack] + if hookType ~= nil then + _G.error = debuggerError + _G.assert = debuggerAssert + debug.traceback = debuggerTraceback + else + _G.error = luaError + _G.assert = luaAssert + debug.traceback = luaDebugTraceback + end + end + updateHook = function() + isDebugHookDisabled = (breakAtDepth < 0) and (Breakpoint.getCount() == 0) + if isDebugHookDisabled and ((_G.jit == nil) or (pullFile == nil)) then + debug.sethook() + for thread in pairs(threadIds) do + if isThread(thread) and (coroutine.status(thread) ~= "dead") then + debug.sethook(thread) + end + end + else + debug.sethook(debugHook, "l") + for thread in pairs(threadIds) do + if isThread(thread) and (coroutine.status(thread) ~= "dead") then + debug.sethook(thread, debugHook, "l") + end + end + end + end + function Debugger.clearHook() + while #hookStack > 0 do + table.remove(hookStack) + end + setErrorHandler() + coroutine.create = luaCoroutineCreate + coroutine.wrap = luaCoroutineWrap + coroutine.resume = luaCoroutineResume + isDebugHookDisabled = true + debug.sethook() + for thread in pairs(threadIds) do + if isThread(thread) and (coroutine.status(thread) ~= "dead") then + debug.sethook(thread) + end + end + end + local breakInCoroutinesEnv = "LOCAL_LUA_DEBUGGER_BREAK_IN_COROUTINES" + local breakInCoroutines = os.getenv(breakInCoroutinesEnv) == "1" + function Debugger.pushHook(hookType) + table.insert(hookStack, hookType) + setErrorHandler() + if #hookStack > 1 then + return + end + coroutine.create = function(f) return debuggerCoroutineCreate(f, breakInCoroutines) end + coroutine.wrap = debuggerCoroutineWrap + coroutine.resume = (breakInCoroutines and debuggerCoroutineResume) or luaCoroutineResume + local currentThread = coroutine.running() + if currentThread and (not threadIds[currentThread]) then + registerThread(currentThread) + end + updateHook() + end + function Debugger.popHook() + table.remove(hookStack) + if #hookStack == 0 then + Debugger.clearHook() + else + setErrorHandler() + updateHook() + end + end + function Debugger.triggerBreak() + breakAtDepth = math.huge + updateHook() + end + function Debugger.debugGlobal(breakImmediately) + Debugger.pushHook("global") + if breakImmediately then + Debugger.triggerBreak() + end + end + function Debugger.debugFunction(func, breakImmediately, args) + Debugger.pushHook("function") + if breakImmediately then + Debugger.triggerBreak() + end + local results = { + xpcall( + function() return func( + unpack(args) + ) end, + breakForError + ) + } + Debugger.popHook() + if results[1] then + return unpack(results, 2) + else + skipNextBreak = true + local message = mapSources( + tostring(results[2]) + ) + return luaError(message, 2) + end + end + function Debugger.pullBreakpoints() + if pullFile then + local newPullSeek = pullFile:seek("end") + if newPullSeek > lastPullSeek then + lastPullSeek = newPullSeek + Debugger.triggerBreak() + end + end + end +end +return ____exports + end, +["lldebugger"] = function(...) +local ____exports = {} +local ____luafuncs = require("luafuncs") +local luaAssert = ____luafuncs.luaAssert +local loadLuaFile = ____luafuncs.loadLuaFile +local ____debugger = require("debugger") +local Debugger = ____debugger.Debugger +_G.lldebugger = _G.lldebugger or ____exports +if io.stdout then + io.stdout:setvbuf("no") +end +if io.stderr then + io.stderr:setvbuf("no") +end +function ____exports.start(breakImmediately) + if breakImmediately == nil then + breakImmediately = os.getenv("LOCAL_LUA_DEBUGGER_VSCODE") == "1" + end + Debugger.debugGlobal(breakImmediately) +end +function ____exports.finish() + Debugger.popHook() +end +function ____exports.stop() + Debugger.clearHook() +end +function ____exports.pullBreakpoints() + Debugger.pullBreakpoints() +end +function ____exports.runFile(filePath, breakImmediately, arg) + if type(filePath) ~= "string" then + error( + ("expected string as first argument to runFile, but got '" .. type(filePath)) .. "'", + 0 + ) + end + if (breakImmediately ~= nil) and (type(breakImmediately) ~= "boolean") then + error( + ("expected boolean as second argument to runFile, but got '" .. type(breakImmediately)) .. "'", + 0 + ) + end + local env = setmetatable( + {arg = arg}, + { + __index = _G, + __newindex = function(____self, key, value) + _G[key] = value + end + } + ) + local func = luaAssert( + loadLuaFile(filePath, env) + ) + return Debugger.debugFunction(func, breakImmediately, arg or ({})) +end +function ____exports.call(func, breakImmediately, ...) + local args = {...} + if type(func) ~= "function" then + error( + ("expected string as first argument to debugFile, but got '" .. type(func)) .. "'", + 0 + ) + end + if (breakImmediately ~= nil) and (type(breakImmediately) ~= "boolean") then + error( + ("expected boolean as second argument to debugFunction, but got '" .. type(breakImmediately)) .. "'", + 0 + ) + end + return Debugger.debugFunction(func, breakImmediately, args) +end +function ____exports.requestBreak() + Debugger.triggerBreak() +end +return ____exports + end, +} +return require("lldebugger", ...) From 8520f9b7a0f097dfcb90bc3b3bf8879afcc65c92 Mon Sep 17 00:00:00 2001 From: Ismoh <12631485+Ismoh@users.noreply.github.com> Date: Mon, 16 Oct 2023 22:01:52 +0200 Subject: [PATCH 11/49] Applied https://github.com/tomblind/local-lua-debugger-vscode/pull/72 manually. --- debugger/debugger.ts | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/debugger/debugger.ts b/debugger/debugger.ts index 82057e9..88f7ed1 100644 --- a/debugger/debugger.ts +++ b/debugger/debugger.ts @@ -843,25 +843,6 @@ export namespace Debugger { } function comparePaths(a: string, b: string) { - // let aLen = a.length; - // const bLen = b.length; - // if (aLen === bLen) { - // return a === b; - // } - // //Ensure 'a' is the shorter path - // if (bLen < aLen) { - // [a, aLen, b] = [b, bLen, a]; - // } - // if (a !== b.sub(-aLen)) { - // return false; - // } - // //If shorter string doesn't start with '/', make sure the longer one has '/' right before the substring - // //so we don't match a partial filename. - // if (a.sub(1, 1) === Path.separator) { - // return true; - // } - // const bSep = -(aLen + 1); - // return b.sub(bSep, bSep) === Path.separator; return Path.getAbsolute(a) === Path.getAbsolute(b); } From ffd695807ce856893667dc7d1885976760d02a01 Mon Sep 17 00:00:00 2001 From: Ismoh <12631485+Ismoh@users.noreply.github.com> Date: Mon, 16 Oct 2023 22:04:42 +0200 Subject: [PATCH 12/49] Applied https://github.com/tomblind/local-lua-debugger-vscode/issues/62#issuecomment-1741733785 manually. --- debugger/debugger.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debugger/debugger.ts b/debugger/debugger.ts index c89829b..8707a02 100644 --- a/debugger/debugger.ts +++ b/debugger/debugger.ts @@ -846,7 +846,7 @@ export namespace Debugger { } function comparePaths(a: string, b: string) { - return Path.getAbsolute(a) === Path.getAbsolute(b); + return Path.getAbsolute(a).lower() === Path.getAbsolute(b).lower(); } const debugHookStackOffset = 2; From 29ed5b25f0af4d2b32178e5c674b080058fad58b Mon Sep 17 00:00:00 2001 From: Ismoh <12631485+Ismoh@users.noreply.github.com> Date: Mon, 16 Oct 2023 22:26:19 +0200 Subject: [PATCH 13/49] Fixed tasks for windump and it's powerlessShell! Added .gitattributes for eol=lf. Applied all bug fixing PRs. --- .gitattributes | 1 + .vscode/tasks.json | 4 +-- debugger/lldebugger.lua | 56 +++++++++++++++++++++++++++++++++++++++-- package.json | 5 ++-- 4 files changed, 59 insertions(+), 7 deletions(-) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..4eb2283 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +text eol=lf \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 412704c..5e05b52 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -34,8 +34,8 @@ }, { "label": "Clean", - "type": "npm", - "script": "clean", + "type": "shell", + "command": "rm debugger/*.lua; rm debugger/*.lua.map; rm extension/*.js; rm extension/*.js.map; rm *.vsix", "problemMatcher": [] }, { diff --git a/debugger/lldebugger.lua b/debugger/lldebugger.lua index 2eb42c1..a121d39 100644 --- a/debugger/lldebugger.lua +++ b/debugger/lldebugger.lua @@ -608,6 +608,7 @@ return ____exports ["send"] = function(...) local ____exports = {} local ____luafuncs = require("luafuncs") +local luaAssert = ____luafuncs.luaAssert local luaError = ____luafuncs.luaError local luaLenMetamethodSupported = ____luafuncs.luaLenMetamethodSupported local luaRawLen = ____luafuncs.luaRawLen @@ -796,6 +797,33 @@ do end send(dbgProperties) end + local function getUpvalues(info) + local ups = {} + if (not info.nups) or (not info.func) then + return ups + end + for index = 1, info.nups do + local name, val = debug.getupvalue(info.func, index) + ups[luaAssert(name)] = val + end + return ups + end + function Send.functionUpvalues(f) + local dbgProperties = { + tag = "$luaDebug", + type = "properties", + properties = Format.makeExplicitArray() + } + local upvalues = getUpvalues( + debug.getinfo(f, "fu") + ) + for key, val in pairs(upvalues) do + local name = getPrintableValue(key) + local dbgVar = buildVariable(name, val) + table.insert(dbgProperties.properties, dbgVar) + end + send(dbgProperties) + end function Send.breakpoints(breaks) local breakpointList = {} for ____, breakpoint in ipairs(breaks) do @@ -1490,8 +1518,10 @@ do tonumber(first), tonumber(count) ) + elseif type(r) == "function" then + Send.functionUpvalues(r) else - Send.error(("Expression \"" .. mappedExpression) .. "\" is not a table") + Send.error(("Expression \"" .. mappedExpression) .. "\" is not a table nor a function") end else Send.error(r) @@ -1553,7 +1583,7 @@ do return true end local function comparePaths(a, b) - return Path.getAbsolute(a) == Path.getAbsolute(b) + return Path.getAbsolute(a):lower() == Path.getAbsolute(b):lower() end local debugHookStackOffset = 2 local breakpointLookup = Breakpoint.getLookup() @@ -1846,6 +1876,23 @@ do end end end + debug.setmetatable( + function() + end, + { + __index = function(self, key) + local info = debug.getinfo(self, "fu") + if not info then + return nil + end + local val = getUpvalues(info).vars[key] + if not val then + return nil + end + return val.val + end + } + ) end function Debugger.clearHook() while #hookStack > 0 do @@ -1862,6 +1909,11 @@ do debug.sethook(thread) end end + debug.setmetatable( + function() + end, + nil + ) end local breakInCoroutinesEnv = "LOCAL_LUA_DEBUGGER_BREAK_IN_COROUTINES" local breakInCoroutines = os.getenv(breakInCoroutinesEnv) == "1" diff --git a/package.json b/package.json index 6a0203e..1e44206 100644 --- a/package.json +++ b/package.json @@ -31,9 +31,8 @@ "build-debugger": "tstl -p debugger", "build-extension": "tsc -p extension", "build": "npm run build-debugger && npm run build-extension", - "bundle": "npm run clean && npm run lint && npm run build && vsce package", - "publish": "npm run bundle && vsce publish", - "clean": "rm -f debugger/*.lua && rm -f debugger/*.lua.map && rm -f extension/*.js && rm -f extension/*.js.map && rm -f *.vsix" + "bundle": "npm run lint && npm run build && vsce package", + "publish": "npm run bundle && vsce publish" }, "dependencies": { "vscode-debugadapter": "^1.48.0" From 32c3b7781cb2bbbbf1d9b4c9fa932e1d20143a8e Mon Sep 17 00:00:00 2001 From: Ismoh <12631485+Ismoh@users.noreply.github.com> Date: Mon, 16 Oct 2023 23:22:51 +0200 Subject: [PATCH 14/49] Updated generated build files to be able to apply fixes on runtime. --- .gitignore | 7 +- debugger/lldebugger.lua.map | 1 + extension/debugAdapter.js | 26 + extension/debugAdapter.js.map | 1 + extension/debugPipe.js | 176 +++++++ extension/debugPipe.js.map | 1 + extension/extension.js | 146 ++++++ extension/extension.js.map | 1 + extension/launchConfig.js | 29 ++ extension/launchConfig.js.map | 1 + extension/luaDebugSession.js | 859 +++++++++++++++++++++++++++++++ extension/luaDebugSession.js.map | 1 + extension/message.js | 79 +++ extension/message.js.map | 1 + 14 files changed, 1323 insertions(+), 6 deletions(-) create mode 100644 debugger/lldebugger.lua.map create mode 100644 extension/debugAdapter.js create mode 100644 extension/debugAdapter.js.map create mode 100644 extension/debugPipe.js create mode 100644 extension/debugPipe.js.map create mode 100644 extension/extension.js create mode 100644 extension/extension.js.map create mode 100644 extension/launchConfig.js create mode 100644 extension/launchConfig.js.map create mode 100644 extension/luaDebugSession.js create mode 100644 extension/luaDebugSession.js.map create mode 100644 extension/message.js create mode 100644 extension/message.js.map diff --git a/.gitignore b/.gitignore index 4123e43..ec82c02 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,2 @@ **/*.vsix -debugger/**/*.lua -debugger/*.lua.map -extension/**/*.js -extension/**/*.js.map -node_modules -!lldebugger.lua \ No newline at end of file +node_modules \ No newline at end of file diff --git a/debugger/lldebugger.lua.map b/debugger/lldebugger.lua.map new file mode 100644 index 0000000..b1b3e6a --- /dev/null +++ b/debugger/lldebugger.lua.map @@ -0,0 +1 @@ +{"version":3,"sources":["luafuncs.ts","path.ts","sourcemap.ts","breakpoint.ts","format.ts","thread.ts","send.ts","debugger.ts","lldebugger.ts"],"names":["this","self"],"mappings":"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"} \ No newline at end of file diff --git a/extension/debugAdapter.js b/extension/debugAdapter.js new file mode 100644 index 0000000..2f05d07 --- /dev/null +++ b/extension/debugAdapter.js @@ -0,0 +1,26 @@ +"use strict"; +//MIT License +// +//Copyright (c) 2020 Tom Blind +// +//Permission is hereby granted, free of charge, to any person obtaining a copy +//of this software and associated documentation files (the "Software"), to deal +//in the Software without restriction, including without limitation the rights +//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +//copies of the Software, and to permit persons to whom the Software is +//furnished to do so, subject to the following conditions: +// +//The above copyright notice and this permission notice shall be included in all +//copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +//SOFTWARE. +Object.defineProperty(exports, "__esModule", { value: true }); +const luaDebugSession_1 = require("./luaDebugSession"); +luaDebugSession_1.LuaDebugSession.run(luaDebugSession_1.LuaDebugSession); +//# sourceMappingURL=debugAdapter.js.map \ No newline at end of file diff --git a/extension/debugAdapter.js.map b/extension/debugAdapter.js.map new file mode 100644 index 0000000..09f5595 --- /dev/null +++ b/extension/debugAdapter.js.map @@ -0,0 +1 @@ +{"version":3,"file":"debugAdapter.js","sourceRoot":"","sources":["debugAdapter.ts"],"names":[],"mappings":";AAAA,aAAa;AACb,EAAE;AACF,8BAA8B;AAC9B,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAC9E,2EAA2E;AAC3E,uEAAuE;AACvE,0DAA0D;AAC1D,EAAE;AACF,gFAAgF;AAChF,iDAAiD;AACjD,EAAE;AACF,4EAA4E;AAC5E,0EAA0E;AAC1E,6EAA6E;AAC7E,wEAAwE;AACxE,+EAA+E;AAC/E,+EAA+E;AAC/E,WAAW;;AAEX,uDAAkD;AAElD,iCAAe,CAAC,GAAG,CAAC,iCAAe,CAAC,CAAC"} \ No newline at end of file diff --git a/extension/debugPipe.js b/extension/debugPipe.js new file mode 100644 index 0000000..d3aaeae --- /dev/null +++ b/extension/debugPipe.js @@ -0,0 +1,176 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.createFifoPipe = exports.createNamedPipe = void 0; +const crypto = require("crypto"); +const net = require("net"); +const childProcess = require("child_process"); +const fs = require("fs"); +const os = require("os"); +const path = require("path"); +function createNamedPipe() { + const pipeId = crypto.randomBytes(16).toString("hex"); + const outputPipePath = `\\\\.\\pipe\\lldbg_out_${pipeId}`; + const inputPipePath = `\\\\.\\pipe\\lldbg_in_${pipeId}`; + const pullPipePath = `\\\\.\\pipe\\lldbg_pull_${pipeId}`; + let outputPipe = null; + let inputPipe = null; + let pullPipe = null; + let inputStream; + let pullStream; + let onErrorCallback = null; + return { + open: (onData, onError) => { + onErrorCallback = onError; + outputPipe = net.createServer(stream => { + stream.on("data", onData); + stream.on("error", err => onError(`error on output pipe: ${err}`)); + }); + outputPipe.listen(outputPipePath); + inputPipe = net.createServer(stream => { + stream.on("error", err => onError(`error on input pipe: ${err}`)); + inputStream = stream; + }); + inputPipe.listen(inputPipePath); + }, + openPull: (onError) => { + if (!onErrorCallback) { + onErrorCallback = onError; + } + pullPipe = net.createServer(stream => { + stream.on("error", err => { + onError(`error on pull pipe: ${err}`); + }); + pullStream = stream; + }); + pullPipe.listen(pullPipePath); + }, + close: () => { + outputPipe === null || outputPipe === void 0 ? void 0 : outputPipe.close(); + outputPipe = null; + inputPipe === null || inputPipe === void 0 ? void 0 : inputPipe.close(); + inputPipe = null; + inputStream = null; + pullPipe = null; + pullStream = null; + }, + write: data => { + inputStream === null || inputStream === void 0 ? void 0 : inputStream.write(data); + }, + requestPull: () => { + pullStream === null || pullStream === void 0 ? void 0 : pullStream.write("pull|\n"); + }, + getOutputPipePath: () => outputPipePath, + getInputPipePath: () => inputPipePath, + getPullPipePath: () => pullPipePath, + }; +} +exports.createNamedPipe = createNamedPipe; +function createFifoPipe() { + const pipeId = crypto.randomBytes(16).toString("hex"); + const outputPipePath = `/tmp/lldbg_out_${pipeId}`; + const inputPipePath = `/tmp/lldbg_in_${pipeId}`; + let pullPipePath = ""; + let debuggerTmpDir = ""; + let outputFd = null; + let inputFd = null; + let pullFd = null; + let inputStream = null; + let pullStream = null; + let onErrorCallback = null; + return { + open: (onData, onError) => { + onErrorCallback = onError; + childProcess.exec(`mkfifo ${outputPipePath}`, fifoErr => { + if (fifoErr) { + onError(`error executing mkfifo for output pipe: ${fifoErr}`); + return; + } + fs.open(outputPipePath, fs.constants.O_RDWR, (fdErr, fd) => { + if (fdErr) { + onError(`error opening fifo for output pipe: ${fdErr}`); + return; + } + outputFd = fd; + const outputStream = fs.createReadStream(null, { fd }); + outputStream.on("data", onData); + }); + }); + childProcess.exec(`mkfifo ${inputPipePath}`, fifoErr => { + if (fifoErr) { + onError(`error executing mkfifo for input pipe: ${fifoErr}`); + return; + } + fs.open(inputPipePath, fs.constants.O_RDWR, (fdErr, fd) => { + if (fdErr) { + onError(`error opening fifo for input pipe: ${fdErr}`); + return; + } + inputFd = fd; + inputStream = fs.createWriteStream(null, { fd }); + }); + }); + }, + openPull: (onError) => { + if (!onErrorCallback) { + onErrorCallback = onError; + } + const appPrefix = "lldebugger"; + try { + debuggerTmpDir = fs.mkdtempSync(path.join(os.tmpdir(), appPrefix)); + pullPipePath = path.join(debuggerTmpDir, "pull.txt"); + const fd = fs.openSync(pullPipePath, fs.constants.O_WRONLY | fs.constants.O_CREAT); + pullFd = fd; + pullStream = fs.createWriteStream(null, { fd }); + } + catch (e) { + onErrorCallback(e); + } + }, + close: () => { + if (outputFd !== null) { + fs.close(outputFd); + outputFd = null; + fs.rm(outputPipePath, err => { + if (err) { + onErrorCallback === null || onErrorCallback === void 0 ? void 0 : onErrorCallback(`error removing fifo for output pipe: ${err}`); + } + }); + } + if (inputFd !== null) { + fs.close(inputFd); + inputFd = null; + fs.rm(inputPipePath, err => { + if (err) { + onErrorCallback === null || onErrorCallback === void 0 ? void 0 : onErrorCallback(`error removing fifo for input pipe: ${err}`); + } + }); + } + inputStream = null; + try { + if (pullFd !== null) { + fs.close(pullFd); + fs.rmSync(pullPipePath); + pullFd = null; + } + pullStream = null; + if (debuggerTmpDir.length > 0) { + fs.rmdirSync(debuggerTmpDir); + } + } + catch (e) { + onErrorCallback === null || onErrorCallback === void 0 ? void 0 : onErrorCallback(e); + } + }, + write: data => { + inputStream === null || inputStream === void 0 ? void 0 : inputStream.write(data); + }, + requestPull: () => { + pullStream === null || pullStream === void 0 ? void 0 : pullStream.write("pull|\n"); + }, + getOutputPipePath: () => outputPipePath, + getInputPipePath: () => inputPipePath, + getPullPipePath: () => pullPipePath, + }; +} +exports.createFifoPipe = createFifoPipe; +//# sourceMappingURL=debugPipe.js.map \ No newline at end of file diff --git a/extension/debugPipe.js.map b/extension/debugPipe.js.map new file mode 100644 index 0000000..a07c25a --- /dev/null +++ b/extension/debugPipe.js.map @@ -0,0 +1 @@ +{"version":3,"file":"debugPipe.js","sourceRoot":"","sources":["debugPipe.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/extension/extension.js b/extension/extension.js new file mode 100644 index 0000000..dd9a10a --- /dev/null +++ b/extension/extension.js @@ -0,0 +1,146 @@ +"use strict"; +//MIT License +// +//Copyright (c) 2020 Tom Blind +// +//Permission is hereby granted, free of charge, to any person obtaining a copy +//of this software and associated documentation files (the "Software"), to deal +//in the Software without restriction, including without limitation the rights +//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +//copies of the Software, and to permit persons to whom the Software is +//furnished to do so, subject to the following conditions: +// +//The above copyright notice and this permission notice shall be included in all +//copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +//SOFTWARE. +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.deactivate = exports.activate = void 0; +const vscode = require("vscode"); +const Net = require("net"); +const path = require("path"); +const luaDebugSession_1 = require("./luaDebugSession"); +const launchConfig_1 = require("./launchConfig"); +const enableServer = true; +const debuggerType = "lua-local"; +const interpreterSetting = `${debuggerType}.interpreter`; +function abortLaunch(message) { + void vscode.window.showErrorMessage(message); + // tslint:disable-next-line:no-null-keyword + return null; +} +const configurationProvider = { + resolveDebugConfiguration(folder, config, token) { + var _a; + return __awaiter(this, void 0, void 0, function* () { + //Validate config + const editor = vscode.window.activeTextEditor; + if (typeof config.request === "undefined" || typeof config.type === "undefined") { + if (typeof editor === "undefined" || editor.document.languageId !== "lua" || editor.document.isUntitled) { + return abortLaunch("Nothing to debug"); + } + config.request = "launch"; + config.type = debuggerType; + } + if (typeof config.program === "undefined" || !(0, launchConfig_1.isCustomProgramConfig)(config.program)) { + const luaConfig = (_a = config.program) !== null && _a !== void 0 ? _a : {}; + if (typeof luaConfig.lua === "undefined") { + const luaBin = vscode.workspace.getConfiguration().get(interpreterSetting); + if (typeof luaBin === "undefined" || luaBin.length === 0) { + return abortLaunch(`You must set "${interpreterSetting}" in your settings, or "program.lua" ` + + "in your launch.json, to debug with a lua interpreter."); + } + luaConfig.lua = luaBin; + } + if (typeof luaConfig.file === "undefined") { + if (typeof editor === "undefined" + || editor.document.languageId !== "lua" + || editor.document.isUntitled) { + return abortLaunch("'program.file' not set in launch.json"); + } + luaConfig.file = editor.document.uri.fsPath; + } + config.program = luaConfig; + } + if (Array.isArray(config.scriptFiles)) { + const nonString = config.scriptFiles.find(p => typeof p !== "string"); + if (typeof nonString !== "undefined") { + return abortLaunch(`invalid value in scriptFiles: "${nonString}"`); + } + else { + const uris = yield Promise.all(config.scriptFiles.map(p => vscode.workspace.findFiles(path.normalize(p)))); + config.scriptFiles = uris.flatMap(u => u.map(uri => uri.fsPath)); + } + } + //Pass paths to debugger + if (typeof folder !== "undefined") { + config.workspacePath = folder.uri.fsPath; + } + else if (typeof vscode.window.activeTextEditor !== "undefined") { + config.workspacePath = path.dirname(vscode.window.activeTextEditor.document.uri.fsPath); + } + else { + return abortLaunch("No path for debugger"); + } + const extension = vscode.extensions.getExtension("tomblind.local-lua-debugger-vscode"); + if (typeof extension === "undefined") { + return abortLaunch("Failed to find extension path"); + } + config.extensionPath = extension.extensionPath; + if (typeof config.cwd === "undefined") { + config.cwd = config.workspacePath; + } + return config; + }); + } +}; +let debugAdapaterDescriptorFactory; +// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition +if (enableServer) { + let server = null; + debugAdapaterDescriptorFactory = { + createDebugAdapterDescriptor(session, executable) { + if (server === null) { + server = Net.createServer(socket => { + const debugSession = new luaDebugSession_1.LuaDebugSession(); + debugSession.setRunAsServer(true); + debugSession.start(socket, socket); + }).listen(0); + } + return new vscode.DebugAdapterServer(server.address().port); + }, + dispose() { + if (server !== null) { + server.close(); + server = null; + } + } + }; +} +function activate(context) { + context.subscriptions.push(vscode.debug.registerDebugConfigurationProvider(debuggerType, configurationProvider)); + if (typeof debugAdapaterDescriptorFactory !== "undefined") { + context.subscriptions.push(vscode.debug.registerDebugAdapterDescriptorFactory(debuggerType, debugAdapaterDescriptorFactory)); + context.subscriptions.push(debugAdapaterDescriptorFactory); + } +} +exports.activate = activate; +function deactivate() { +} +exports.deactivate = deactivate; +//# sourceMappingURL=extension.js.map \ No newline at end of file diff --git a/extension/extension.js.map b/extension/extension.js.map new file mode 100644 index 0000000..66fbc04 --- /dev/null +++ b/extension/extension.js.map @@ -0,0 +1 @@ +{"version":3,"file":"extension.js","sourceRoot":"","sources":["extension.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/extension/launchConfig.js b/extension/launchConfig.js new file mode 100644 index 0000000..d81c81d --- /dev/null +++ b/extension/launchConfig.js @@ -0,0 +1,29 @@ +"use strict"; +//MIT License +// +//Copyright (c) 2020 Tom Blind +// +//Permission is hereby granted, free of charge, to any person obtaining a copy +//of this software and associated documentation files (the "Software"), to deal +//in the Software without restriction, including without limitation the rights +//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +//copies of the Software, and to permit persons to whom the Software is +//furnished to do so, subject to the following conditions: +// +//The above copyright notice and this permission notice shall be included in all +//copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +//SOFTWARE. +Object.defineProperty(exports, "__esModule", { value: true }); +exports.isCustomProgramConfig = void 0; +function isCustomProgramConfig(config) { + return typeof config.command !== "undefined"; +} +exports.isCustomProgramConfig = isCustomProgramConfig; +//# sourceMappingURL=launchConfig.js.map \ No newline at end of file diff --git a/extension/launchConfig.js.map b/extension/launchConfig.js.map new file mode 100644 index 0000000..13aec08 --- /dev/null +++ b/extension/launchConfig.js.map @@ -0,0 +1 @@ +{"version":3,"file":"launchConfig.js","sourceRoot":"","sources":["launchConfig.ts"],"names":[],"mappings":";AAAA,aAAa;AACb,EAAE;AACF,8BAA8B;AAC9B,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAC9E,2EAA2E;AAC3E,uEAAuE;AACvE,0DAA0D;AAC1D,EAAE;AACF,gFAAgF;AAChF,iDAAiD;AACjD,EAAE;AACF,4EAA4E;AAC5E,0EAA0E;AAC1E,6EAA6E;AAC7E,wEAAwE;AACxE,+EAA+E;AAC/E,+EAA+E;AAC/E,WAAW;;;AA8BX,SAAgB,qBAAqB,CAAC,MAA8C;IAChF,OAAO,OAAQ,MAA8B,CAAC,OAAO,KAAK,WAAW,CAAC;AAC1E,CAAC;AAFD,sDAEC"} \ No newline at end of file diff --git a/extension/luaDebugSession.js b/extension/luaDebugSession.js new file mode 100644 index 0000000..4062003 --- /dev/null +++ b/extension/luaDebugSession.js @@ -0,0 +1,859 @@ +"use strict"; +//MIT License +// +//Copyright (c) 2020 Tom Blind +// +//Permission is hereby granted, free of charge, to any person obtaining a copy +//of this software and associated documentation files (the "Software"), to deal +//in the Software without restriction, including without limitation the rights +//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +//copies of the Software, and to permit persons to whom the Software is +//furnished to do so, subject to the following conditions: +// +//The above copyright notice and this permission notice shall be included in all +//copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +//SOFTWARE. +var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LuaDebugSession = void 0; +const vscode_debugadapter_1 = require("vscode-debugadapter"); +const childProcess = require("child_process"); +const path = require("path"); +const fs = require("fs"); +const message_1 = require("./message"); +const launchConfig_1 = require("./launchConfig"); +const debugPipe_1 = require("./debugPipe"); +// const mainThreadId = 1; +const maxStackCount = 100; +const metatableDisplayName = "[[metatable]]"; +const tableLengthDisplayName = "[[length]]"; +const metatableAccessor = "lldbg_getmetatable"; +const envVariable = "LOCAL_LUA_DEBUGGER_VSCODE"; +const filePathEnvVariable = "LOCAL_LUA_DEBUGGER_FILEPATH"; +const scriptRootsEnvVariable = "LOCAL_LUA_DEBUGGER_SCRIPT_ROOTS"; +const breakInCoroutinesEnv = "LOCAL_LUA_DEBUGGER_BREAK_IN_COROUTINES"; +const stepUnmappedLinesEnv = "LOCAL_LUA_DEBUGGER_STEP_UNMAPPED_LINES"; +const inputFileEnv = "LOCAL_LUA_DEBUGGER_INPUT_FILE"; +const outputFileEnv = "LOCAL_LUA_DEBUGGER_OUTPUT_FILE"; +const pullFileEnv = "LOCAL_LUA_DEBUGGER_PULL_FILE"; +function getEnvKey(env, searchKey) { + const upperSearchKey = searchKey.toUpperCase(); + for (const key in env) { + if (key.toUpperCase() === upperSearchKey) { + return key; + } + } + return searchKey; +} +function sortVariables(a, b) { + const aIsBracketted = a.name.startsWith("[["); + const bIsBracketted = b.name.startsWith("[["); + if (aIsBracketted !== bIsBracketted) { + return aIsBracketted ? -1 : 1; + } + const aAsNum = Number(a.name); + const bAsNum = Number(b.name); + const aIsNum = !isNaN(aAsNum); + const bIsNum = !isNaN(bAsNum); + if (aIsNum !== bIsNum) { + return aIsNum ? -1 : 1; + } + else if (aIsNum && bIsNum) { + return aAsNum - bAsNum; + } + let aName = a.name.replace("[", " "); + let bName = b.name.replace("[", " "); + const aNameLower = aName.toLowerCase(); + const bNameLower = bName.toLowerCase(); + if (aNameLower !== bNameLower) { + aName = aNameLower; + bName = bNameLower; + } + if (aName === bName) { + return 0; + } + else if (aName < bName) { + return -1; + } + else { + return 1; + } +} +function parseFrameId(frameId) { + return { threadId: Math.floor(frameId / maxStackCount) + 1, frame: frameId % maxStackCount + 1 }; +} +function makeFrameId(threadId, frame) { + return (threadId - 1) * maxStackCount + (frame - 1); +} +class LuaDebugSession extends vscode_debugadapter_1.LoggingDebugSession { + constructor() { + super("lldebugger-log.txt"); + this.fileBreakpoints = {}; + this.process = null; + this.debugPipe = null; + this.outputText = ""; + this.messageHandlerQueue = []; + this.variableHandles = new vscode_debugadapter_1.Handles(3 /* Global */ + 1); + this.breakpointsPending = false; + this.pendingScripts = null; + this.pendingIgnorePatterns = null; + this.autoContinueNext = false; + this.activeThreads = new Map(); + this.isRunning = false; + this.inDebuggerBreakpoint = false; + this.pullBreakpointsSupport = false; + this.usePipeCommutication = false; + } + initializeRequest(response, args) { + this.showOutput("initializeRequest", "request" /* Request */); + if (typeof response.body === "undefined") { + response.body = {}; + } + response.body.supportsConfigurationDoneRequest = true; + response.body.supportsEvaluateForHovers = true; + response.body.supportsSetVariable = true; + response.body.supportsTerminateRequest = true; + response.body.supportsConditionalBreakpoints = true; + this.sendResponse(response); + this.sendEvent(new vscode_debugadapter_1.InitializedEvent()); + } + configurationDoneRequest(response, args) { + this.showOutput("configurationDoneRequest", "request" /* Request */); + super.configurationDoneRequest(response, args); + if (typeof this.onConfigurationDone !== "undefined") { + this.onConfigurationDone(); + } + } + launchRequest(response, args) { + var _a, _b; + return __awaiter(this, void 0, void 0, function* () { + this.config = args; + this.autoContinueNext = this.config.stopOnEntry !== true; + this.showOutput("launchRequest", "request" /* Request */); + yield this.waitForConfiguration(); + if (this.config.scriptFiles) { + this.pendingScripts = this.config.scriptFiles; + } + if (this.config.ignorePatterns) { + this.pendingIgnorePatterns = this.config.ignorePatterns; + } + //Setup process + if (!path.isAbsolute(this.config.cwd)) { + this.config.cwd = path.resolve(this.config.workspacePath, this.config.cwd); + } + const cwd = this.config.cwd; + const processOptions /* : child_process.SpawnOptions */ = { + env: Object.assign({}, process.env), + cwd, + shell: true, + detached: process.platform !== "win32" + }; + if (typeof this.config.env !== "undefined") { + for (const key in this.config.env) { + const envKey = getEnvKey(processOptions.env, key); + processOptions.env[envKey] = this.config.env[key]; + } + } + if (typeof this.config.pullBreakpointsSupport !== "undefined") { + this.pullBreakpointsSupport = this.config.pullBreakpointsSupport; + } + //Set an environment variable so the debugger can detect the attached extension + processOptions.env[envVariable] = "1"; + processOptions.env[filePathEnvVariable] + = `${this.config.extensionPath}${path.sep}debugger${path.sep}lldebugger.lua`; + //Pass options via environment variables + if (typeof this.config.scriptRoots !== "undefined") { + processOptions.env[scriptRootsEnvVariable] = this.config.scriptRoots.join(";"); + } + if (typeof this.config.breakInCoroutines !== "undefined") { + processOptions.env[breakInCoroutinesEnv] = this.config.breakInCoroutines ? "1" : "0"; + } + if (typeof this.config.stepUnmappedLines !== "undefined") { + processOptions.env[stepUnmappedLinesEnv] = this.config.stepUnmappedLines ? "1" : "0"; + } + this.usePipeCommutication = this.config.program.communication === "pipe"; + //Open pipes + if (this.usePipeCommutication || this.pullBreakpointsSupport) { + if (process.platform === "win32") { + this.debugPipe = (0, debugPipe_1.createNamedPipe)(); + } + else { + this.debugPipe = (0, debugPipe_1.createFifoPipe)(); + } + if (this.usePipeCommutication) { + this.debugPipe.open(data => { void this.onDebuggerOutput(data); }, err => { this.showOutput(`${err}`, "error" /* Error */); }); + processOptions.env[outputFileEnv] = this.debugPipe.getOutputPipePath(); + processOptions.env[inputFileEnv] = this.debugPipe.getInputPipePath(); + } + } + if (this.pullBreakpointsSupport) { + (_a = this.debugPipe) === null || _a === void 0 ? void 0 : _a.openPull(err => { this.showOutput(`${err}`, "error" /* Error */); }); + processOptions.env[pullFileEnv] = (_b = this.debugPipe) === null || _b === void 0 ? void 0 : _b.getPullPipePath(); + } + //Append lua path so it can find debugger script + this.updateLuaPath("LUA_PATH_5_2", processOptions.env, false); + this.updateLuaPath("LUA_PATH_5_3", processOptions.env, false); + this.updateLuaPath("LUA_PATH_5_4", processOptions.env, false); + this.updateLuaPath("LUA_PATH", processOptions.env, true); + //Launch process + let processExecutable; + let processArgs; + if ((0, launchConfig_1.isCustomProgramConfig)(this.config.program)) { + processExecutable = `"${this.config.program.command}"`; + processArgs = typeof this.config.args !== "undefined" ? this.config.args : []; + } + else { + processExecutable = `"${this.config.program.lua}"`; + const programArgs = (typeof this.config.args !== "undefined") + ? `, ${this.config.args.map(a => `[[${a}]]`)}` + : ""; + processArgs = [ + "-e", + "\"require('lldebugger').runFile(" + + `[[${this.config.program.file}]],` + + "true," + + `{[-1]=[[${this.config.program.lua}]],[0]=[[${this.config.program.file}]]${programArgs}}` + + ")\"" + ]; + } + this.process = childProcess.spawn(processExecutable, processArgs, processOptions); + this.showOutput(`launching \`${processExecutable} ${processArgs.join(" ")}\` from "${cwd}"`, "info" /* Info */); + //Process callbacks + if (this.usePipeCommutication) { + this.assert(this.process.stdout).on("data", data => { this.showOutput(`${data}`, "stdout" /* StdOut */); }); + } + else { + this.assert(this.process.stdout).on("data", data => { void this.onDebuggerOutput(data); }); + } + this.assert(this.process.stderr).on("data", data => { this.showOutput(`${data}`, "stderr" /* StdErr */); }); + this.process.on("close", (code, signal) => this.onDebuggerTerminated(`${code !== null ? code : signal}`)); + this.process.on("disconnect", () => this.onDebuggerTerminated("disconnected")); + this.process.on("error", err => this.onDebuggerTerminated(`Failed to launch \`${processExecutable} ${processArgs.join(" ")}\` from "${cwd}": ${err}`, "error" /* Error */)); + this.process.on("exit", (code, signal) => this.onDebuggerTerminated(`${code !== null ? code : signal}`)); + this.isRunning = true; + this.inDebuggerBreakpoint = false; + this.showOutput("process launched", "info" /* Info */); + this.sendResponse(response); + }); + } + setBreakPointsRequest(response, args) { + var _a, _b; + return __awaiter(this, void 0, void 0, function* () { + this.showOutput("setBreakPointsRequest", "request" /* Request */); + const filePath = args.source.path; + if (this.process !== null && !this.isRunning) { + if (!this.inDebuggerBreakpoint && this.pullBreakpointsSupport) { + this.breakpointsPending = true; + this.autoContinueNext = true; + (_a = this.debugPipe) === null || _a === void 0 ? void 0 : _a.requestPull(); + } + const oldBreakpoints = this.fileBreakpoints[filePath]; + if (typeof oldBreakpoints !== "undefined") { + for (const breakpoint of oldBreakpoints) { + yield this.deleteBreakpoint(filePath, breakpoint); + } + } + if (typeof args.breakpoints !== "undefined") { + for (const breakpoint of args.breakpoints) { + yield this.setBreakpoint(filePath, breakpoint); + } + } + } + else { + if (this.pullBreakpointsSupport && this.process !== null) { + this.breakpointsPending = true; + this.autoContinueNext = true; + (_b = this.debugPipe) === null || _b === void 0 ? void 0 : _b.requestPull(); + } + else { + this.breakpointsPending = true; + } + } + this.fileBreakpoints[filePath] = args.breakpoints; + const breakpoints = (typeof args.breakpoints !== "undefined") + ? args.breakpoints.map(breakpoint => new vscode_debugadapter_1.Breakpoint(true, breakpoint.line)) + : []; + response.body = { breakpoints }; + this.sendResponse(response); + }); + } + threadsRequest(response) { + return __awaiter(this, void 0, void 0, function* () { + this.showOutput("threadsRequest", "request" /* Request */); + const msg = yield this.waitForCommandResponse("threads"); + if (msg.type === "threads") { + //Remove dead threads + const activeThreadIds = [...this.activeThreads.keys()]; + for (const activeId of activeThreadIds) { + if (!msg.threads.some(({ id }) => activeId === id)) { + this.sendEvent(new vscode_debugadapter_1.ThreadEvent("exited", activeId)); + this.activeThreads.delete(activeId); + } + } + //Create new threads + const newThreads = msg.threads.filter(({ id }) => !this.activeThreads.has(id)); + for (const { id, name } of newThreads) { + this.activeThreads.set(id, new vscode_debugadapter_1.Thread(id, name)); + } + response.body = { threads: [...this.activeThreads.values()] }; + } + else { + response.success = false; + } + this.sendResponse(response); + }); + } + stackTraceRequest(response, args) { + return __awaiter(this, void 0, void 0, function* () { + this.showOutput(`stackTraceRequest ${args.startFrame}/${args.levels} (thread ${args.threadId})`, "request" /* Request */); + const msg = yield this.waitForCommandResponse(`thread ${args.threadId}`); + const startFrame = typeof args.startFrame !== "undefined" ? args.startFrame : 0; + const maxLevels = typeof args.levels !== "undefined" ? args.levels : maxStackCount; + if (msg.type === "stack") { + const frames = []; + const endFrame = Math.min(startFrame + maxLevels, msg.frames.length); + for (let i = startFrame; i < endFrame; ++i) { + const frame = msg.frames[i]; + let source; + let line = frame.line; + let column = 1; //Needed for exception display: https://github.com/microsoft/vscode/issues/46080 + //Mapped source + if (typeof frame.mappedLocation !== "undefined") { + const mappedPath = this.resolvePath(frame.mappedLocation.source); + if (typeof mappedPath !== "undefined") { + source = new vscode_debugadapter_1.Source(path.basename(mappedPath), mappedPath); + line = frame.mappedLocation.line; + column = frame.mappedLocation.column; + } + } + //Un-mapped source + const sourcePath = this.resolvePath(frame.source); + if (typeof source === "undefined" && typeof sourcePath !== "undefined") { + source = new vscode_debugadapter_1.Source(path.basename(frame.source), sourcePath); + } + //Function name + let frameFunc = typeof frame.func !== "undefined" ? frame.func : "???"; + if (typeof sourcePath === "undefined") { + frameFunc += ` ${frame.source}`; + } + const frameId = makeFrameId(args.threadId, i + 1); + const stackFrame = new vscode_debugadapter_1.StackFrame(frameId, frameFunc, source, line, column); + stackFrame.presentationHint = typeof sourcePath === "undefined" ? "subtle" : "normal"; + frames.push(stackFrame); + } + response.body = { stackFrames: frames, totalFrames: msg.frames.length }; + } + else { + response.success = false; + } + this.sendResponse(response); + }); + } + scopesRequest(response, args) { + return __awaiter(this, void 0, void 0, function* () { + this.showOutput("scopesRequest", "request" /* Request */); + const { threadId, frame } = parseFrameId(args.frameId); + yield this.waitForCommandResponse(`thread ${threadId}`); + yield this.waitForCommandResponse(`frame ${frame}`); + const scopes = [ + new vscode_debugadapter_1.Scope("Locals", 1 /* Local */, false), + new vscode_debugadapter_1.Scope("Upvalues", 2 /* Upvalue */, false), + new vscode_debugadapter_1.Scope("Globals", 3 /* Global */, false) + ]; + response.body = { scopes }; + this.sendResponse(response); + }); + } + variablesRequest(response, args) { + return __awaiter(this, void 0, void 0, function* () { + let cmd; + let baseName; + let isMultiResult = false; + switch (args.variablesReference) { + case 1 /* Local */: + cmd = "locals"; + this.showOutput("variablesRequest locals", "request" /* Request */); + break; + case 2 /* Upvalue */: + cmd = "ups"; + this.showOutput("variablesRequest ups", "request" /* Request */); + break; + case 3 /* Global */: + cmd = "globals"; + this.showOutput("variablesRequest globals", "request" /* Request */); + break; + default: + baseName = this.assert(this.variableHandles.get(args.variablesReference)); + if (baseName.startsWith("@")) { + baseName = baseName.substr(1); + isMultiResult = true; + } + cmd = `props ${baseName}`; + if (typeof args.filter !== "undefined") { + cmd += ` ${args.filter}`; + if (typeof args.start !== "undefined") { + const start = Math.max(args.start, 1); + cmd += ` ${start}`; + if (typeof args.count !== "undefined") { + const count = args.start + args.count - start; + cmd += ` ${count}`; + } + } + } + else { + cmd += " all"; + } + this.showOutput(`variablesRequest ${baseName} ${args.filter} ${args.start}/${args.count}`, "request" /* Request */); + break; + } + const vars = yield this.waitForCommandResponse(cmd); + const variables = []; + if (vars.type === "variables") { + for (const variable of vars.variables) { + variables.push(this.buildVariable(variable, variable.name)); + } + } + else if (vars.type === "properties") { + for (const variable of vars.properties) { + const refName = typeof baseName === "undefined" ? variable.name : `${baseName}[${variable.name}]`; + variables.push(this.buildVariable(variable, refName)); + } + if (typeof vars.metatable !== "undefined" && typeof baseName !== "undefined") { + variables.push(this.buildVariable(vars.metatable, `${metatableAccessor}(${baseName})`, metatableDisplayName)); + } + if (typeof vars.length !== "undefined" && !isMultiResult) { + variables.push(this.buildVariable(vars.length, `#${baseName}`, tableLengthDisplayName)); + } + } + else if (vars.type === "error") { + response.success = false; + response.message = this.filterErrorMessage(vars.error); + this.sendResponse(response); + return; + } + else { + response.success = false; + } + variables.sort(sortVariables); + response.body = { variables }; + this.sendResponse(response); + }); + } + continueRequest(response, args) { + this.showOutput("continueRequest", "request" /* Request */); + if (this.sendCommand("cont")) { + this.variableHandles.reset(); + this.isRunning = true; + this.inDebuggerBreakpoint = false; + } + else { + response.success = false; + } + this.sendResponse(response); + } + nextRequest(response, args) { + this.showOutput("nextRequest", "request" /* Request */); + if (this.sendCommand("step")) { + this.variableHandles.reset(); + this.isRunning = true; + this.inDebuggerBreakpoint = false; + } + else { + response.success = false; + } + this.sendResponse(response); + } + stepInRequest(response, args) { + this.showOutput("stepInRequest", "request" /* Request */); + if (this.sendCommand("stepin")) { + this.variableHandles.reset(); + this.isRunning = true; + this.inDebuggerBreakpoint = false; + } + else { + response.success = false; + } + this.sendResponse(response); + } + stepOutRequest(response, args) { + this.showOutput("stepOutRequest", "request" /* Request */); + if (this.sendCommand("stepout")) { + this.variableHandles.reset(); + this.isRunning = true; + this.inDebuggerBreakpoint = false; + } + else { + response.success = false; + } + this.sendResponse(response); + } + setVariableRequest(response, args) { + return __awaiter(this, void 0, void 0, function* () { + let msg; + if (args.variablesReference === 3 /* Global */ + || args.variablesReference === 1 /* Local */ + || args.variablesReference === 2 /* Upvalue */) { + this.showOutput(`setVariableRequest ${args.name} = ${args.value}`, "request" /* Request */); + msg = yield this.waitForCommandResponse(`exec ${args.name} = ${args.value}; return ${args.name}`); + } + else if (args.name === metatableDisplayName) { + const name = this.variableHandles.get(args.variablesReference); + this.showOutput(`setVariableRequest ${name}[[metatable]] = ${args.value}`, "request" /* Request */); + msg = yield this.waitForCommandResponse(`eval setmetatable(${name}, ${args.value})`); + } + else if (args.name === tableLengthDisplayName) { + const name = this.variableHandles.get(args.variablesReference); + this.showOutput(`setVariableRequest ${name}[[length]] = ${args.value}`, "request" /* Request */); + msg = yield this.waitForCommandResponse(`eval #${name}`); + } + else { + const name = `${this.variableHandles.get(args.variablesReference)}[${args.name}]`; + this.showOutput(`setVariableRequest ${name} = ${args.value}`, "request" /* Request */); + msg = yield this.waitForCommandResponse(`exec ${name} = ${args.value}; return ${name}`); + } + const result = this.handleEvaluationResult(args.value, msg); + if (!result.success) { + if (typeof result.error !== "undefined") { + this.showOutput(result.error, "error" /* Error */); + } + response.success = false; + } + else { + response.body = result; + } + this.sendResponse(response); + }); + } + evaluateRequest(response, args) { + return __awaiter(this, void 0, void 0, function* () { + const expression = args.expression; + this.showOutput(`evaluateRequest ${expression}`, "request" /* Request */); + if (typeof args.frameId !== "undefined") { + const { threadId, frame } = parseFrameId(args.frameId); + yield this.waitForCommandResponse(`thread ${threadId}`); + yield this.waitForCommandResponse(`frame ${frame}`); + } + const msg = yield this.waitForCommandResponse(`eval ${expression}`); + const result = this.handleEvaluationResult(expression, msg); + if (!result.success) { + if (typeof result.error !== "undefined" && args.context !== "hover") { + if (args.context !== "watch") { + this.showOutput(result.error, "error" /* Error */); + } + response.success = false; + response.message = result.error; + } + } + else { + response.body = { result: result.value, variablesReference: result.variablesReference }; + } + this.sendResponse(response); + }); + } + terminateRequest(response, args) { + this.showOutput("terminateRequest", "request" /* Request */); + if (this.process !== null) { + if (process.platform === "win32") { + childProcess.spawn("taskkill", ["/pid", this.assert(this.process.pid).toString(), "/f", "/t"]); + } + else { + process.kill(-this.assert(this.process.pid), "SIGKILL"); + } + } + this.isRunning = false; + this.inDebuggerBreakpoint = false; + this.sendResponse(response); + } + handleEvaluationResult(expression, msg) { + if (msg.type === "result") { + if (msg.results.length === 0) { + return { success: true, value: "nil", variablesReference: 0 }; + } + else if (msg.results.length === 1) { + const result = msg.results[0]; + const variablesReference = (result.type === "table" || result.type === "function") + ? this.variableHandles.create(expression) + : 0; + return { success: true, value: this.getValueString(result), variablesReference }; + } + else { + const variablesReference = this.variableHandles.create(`@({${expression}})`); + const value = `(${msg.results.map(r => this.getValueString(r)).join(", ")})`; + return { success: true, value, variablesReference }; + } + } + else if (msg.type === "error") { + return { success: false, error: this.filterErrorMessage(msg.error) }; + } + else { + return { success: false }; + } + } + buildVariable(variable, refName, variableName) { + var _a; + let valueStr; + let ref; + if (refName === "...") { + valueStr = typeof variable.error !== "undefined" + ? `[error: ${this.filterErrorMessage(variable.error)}]` + : `(${(_a = variable.value) !== null && _a !== void 0 ? _a : ""})`; + ref = variable.type === "table" ? this.variableHandles.create("@({...})") : 0; + } + else if (variable.type === "table" || variable.type === "function") { + valueStr = this.getValueString(variable); + ref = this.variableHandles.create(refName); + } + else { + valueStr = this.getValueString(variable); + } + const name = typeof variableName !== "undefined" ? variableName : variable.name; + const indexedVariables = typeof variable.length !== "undefined" && variable.length > 0 + ? variable.length + 1 + : variable.length; + if (variable.type === "table" || variable.type === "function") { + return new vscode_debugadapter_1.Variable(name, valueStr, ref, indexedVariables, 1); + } + else { + return new vscode_debugadapter_1.Variable(name, valueStr, ref, indexedVariables); + } + } + assert(value, message = "assertion failed") { + if (value === null || typeof value === "undefined") { + this.sendEvent(new vscode_debugadapter_1.OutputEvent(message)); + throw new Error(message); + } + return value; + } + filterErrorMessage(errorMsg) { + const errorOnly = /^.+:\d+:\s*(.+)/.exec(errorMsg); + return (errorOnly !== null && errorOnly.length > 1) ? errorOnly[1] : errorMsg; + } + getValueString(value) { + if (typeof value.error !== "undefined") { + return `[error: ${this.filterErrorMessage(value.error)}]`; + } + else if (typeof value.value !== "undefined") { + return value.value; + } + else { + return `[${value.type}]`; + } + } + resolvePath(filePath) { + if (filePath.length === 0) { + return; + } + const config = this.assert(this.config); + let fullPath = path.isAbsolute(filePath) ? filePath : path.join(config.cwd, filePath); + if (fs.existsSync(fullPath)) { + return fullPath; + } + if (typeof config.scriptRoots === "undefined") { + return; + } + for (const rootPath of config.scriptRoots) { + if (path.isAbsolute(rootPath)) { + fullPath = path.join(rootPath, filePath); + } + else { + fullPath = path.join(config.cwd, rootPath, filePath); + } + if (fs.existsSync(fullPath)) { + return fullPath; + } + } + return; + } + updateLuaPath(pathKey, env, force) { + const luaPathKey = getEnvKey(env, pathKey); + let luaPath = env[luaPathKey]; + if (typeof luaPath === "undefined") { + if (!force) { + return; + } + luaPath = ";;"; //Retain defaults + } + else if (luaPath.length > 0 && !luaPath.endsWith(";")) { + luaPath += ";"; + } + env[luaPathKey] = `${luaPath}${this.assert(this.config).extensionPath}/debugger/?.lua`; + } + setBreakpoint(filePath, breakpoint) { + const cmd = typeof breakpoint.condition !== "undefined" + ? `break set ${filePath}:${breakpoint.line} ${breakpoint.condition}` + : `break set ${filePath}:${breakpoint.line}`; + return this.waitForCommandResponse(cmd); + } + deleteBreakpoint(filePath, breakpoint) { + return this.waitForCommandResponse(`break delete ${filePath}:${breakpoint.line}`); + } + onDebuggerStop(msg) { + return __awaiter(this, void 0, void 0, function* () { + this.isRunning = false; + const prevInDebugger = this.inDebuggerBreakpoint; + this.inDebuggerBreakpoint = true; + if (this.pendingScripts) { + for (const scriptFile of this.pendingScripts) { + const resultMsg = yield this.waitForCommandResponse(`script ${scriptFile}`); + if (resultMsg.type === "result") { + for (const result of resultMsg.results) { + if (typeof result.value !== "undefined") { + this.showOutput(this.getValueString(result), "info" /* Info */); + } + } + } + else if (resultMsg.type === "error") { + this.showOutput(resultMsg.error, "error" /* Error */); + } + } + this.pendingScripts = null; + } + if (this.pendingIgnorePatterns) { + for (const ignorePattern of this.pendingIgnorePatterns) { + const resultMsg = yield this.waitForCommandResponse(`ignore ${ignorePattern}`); + if (resultMsg.type === "result") { + for (const result of resultMsg.results) { + if (typeof result.value !== "undefined") { + this.showOutput(this.getValueString(result), "info" /* Info */); + } + } + } + else if (resultMsg.type === "error") { + this.showOutput(resultMsg.error, "error" /* Error */); + } + } + this.pendingIgnorePatterns = null; + } + if (this.breakpointsPending) { + this.breakpointsPending = false; + yield this.waitForCommandResponse("break clear"); + for (const filePath in this.fileBreakpoints) { + const breakpoints = this.fileBreakpoints[filePath]; + for (const breakpoint of breakpoints) { + yield this.setBreakpoint(filePath, breakpoint); + } + } + } + if (msg.breakType === "error") { + this.showOutput(msg.message, "error" /* Error */); + const evt = new vscode_debugadapter_1.StoppedEvent("exception", msg.threadId, msg.message); + evt.body.allThreadsStopped = true; + this.sendEvent(evt); + return; + } + if (this.autoContinueNext) { + this.autoContinueNext = false; + this.inDebuggerBreakpoint = prevInDebugger; + this.assert(this.sendCommand("autocont")); + } + else { + const evt = new vscode_debugadapter_1.StoppedEvent("breakpoint", msg.threadId); + evt.body.allThreadsStopped = true; + this.sendEvent(evt); + } + }); + } + handleDebugMessage(msg) { + const handler = this.messageHandlerQueue.shift(); + if (typeof handler !== "undefined") { + handler(msg); + } + } + onDebuggerOutput(data) { + return __awaiter(this, void 0, void 0, function* () { + this.outputText += `${data}`; + const [messages, processed, unprocessed] = message_1.Message.parse(this.outputText); + let debugBreak; + for (const msg of messages) { + this.showOutput(JSON.stringify(msg), "message" /* Message */); + if (msg.type === "debugBreak") { + debugBreak = msg; + } + else { + this.handleDebugMessage(msg); + } + } + this.showOutput(processed, "stdout" /* StdOut */); + this.outputText = unprocessed; + if (typeof debugBreak !== "undefined") { + yield this.onDebuggerStop(debugBreak); + } + }); + } + onDebuggerTerminated(result, category = "info" /* Info */) { + if (this.process === null) { + return; + } + if (this.debugPipe) { + this.debugPipe.close(); + this.debugPipe = null; + } + this.process = null; + this.isRunning = false; + this.inDebuggerBreakpoint = false; + if (this.outputText.length > 0) { + this.showOutput(this.outputText, "stdout" /* StdOut */); + this.outputText = ""; + } + this.showOutput(`debugging ended: ${result}`, category); + this.sendEvent(new vscode_debugadapter_1.TerminatedEvent()); + } + sendCommand(cmd) { + var _a; + if (this.process === null || this.isRunning) { + return false; + } + this.showOutput(cmd, "command" /* Command */); + if (this.usePipeCommutication) { + (_a = this.debugPipe) === null || _a === void 0 ? void 0 : _a.write(`${cmd}\n`); + } + else { + this.assert(this.process.stdin).write(`${cmd}\n`); + } + return true; + } + waitForCommandResponse(cmd) { + if (this.sendCommand(cmd)) { + return new Promise(resolve => { + this.messageHandlerQueue.push(resolve); + }); + } + else { + return Promise.resolve({ tag: "$luaDebug", type: "error", error: "Failed to send command" }); + } + } + showOutput(msg, category) { + if (msg.length === 0) { + return; + } + else if (category === "stdout" /* StdOut */ || category === "stderr" /* StdErr */) { + this.sendEvent(new vscode_debugadapter_1.OutputEvent(msg, category)); + } + else if (category === "error" /* Error */) { + this.sendEvent(new vscode_debugadapter_1.OutputEvent(`\n[${category}] ${msg}\n`, "stderr")); + } + else if (typeof this.config !== "undefined" && this.config.verbose === true) { + this.sendEvent(new vscode_debugadapter_1.OutputEvent(`\n[${category}] ${msg}\n`)); + } + } + waitForConfiguration() { + return new Promise(resolve => { this.onConfigurationDone = resolve; }); + } +} +exports.LuaDebugSession = LuaDebugSession; +//# sourceMappingURL=luaDebugSession.js.map \ No newline at end of file diff --git a/extension/luaDebugSession.js.map b/extension/luaDebugSession.js.map new file mode 100644 index 0000000..90ab7e5 --- /dev/null +++ b/extension/luaDebugSession.js.map @@ -0,0 +1 @@ +{"version":3,"file":"luaDebugSession.js","sourceRoot":"","sources":["luaDebugSession.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/extension/message.js b/extension/message.js new file mode 100644 index 0000000..873d851 --- /dev/null +++ b/extension/message.js @@ -0,0 +1,79 @@ +"use strict"; +//MIT License +// +//Copyright (c) 2020 Tom Blind +// +//Permission is hereby granted, free of charge, to any person obtaining a copy +//of this software and associated documentation files (the "Software"), to deal +//in the Software without restriction, including without limitation the rights +//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +//copies of the Software, and to permit persons to whom the Software is +//furnished to do so, subject to the following conditions: +// +//The above copyright notice and this permission notice shall be included in all +//copies or substantial portions of the Software. +// +//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +//SOFTWARE. +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Message = void 0; +var Message; +(function (Message) { + function isMessage(obj) { + return obj !== null && typeof obj !== "undefined" && obj.tag === "$luaDebug"; + } + const startToken = "@lldbg|"; + const endToken = "|lldbg@"; + function parseMessage(text, position) { + const firstStart = text.indexOf(startToken, position); + if (firstStart === -1) { + return { leadingText: text.substring(position), newPosition: text.length }; + } + let start = firstStart; + while (true) { + const messageStart = start + startToken.length; + let messageEnd = text.indexOf(endToken, messageStart); + while (messageEnd >= 0) { + const possibleMessage = text.substring(messageStart, messageEnd); + let message; + try { + message = JSON.parse(possibleMessage); + } + catch (_a) { + } + const end = messageEnd + endToken.length; + if (isMessage(message)) { + return { leadingText: text.substring(position, start), newPosition: end, message }; + } + messageEnd = text.indexOf(endToken, end); + } + start = text.indexOf(startToken, messageStart); + if (start < 0) { + break; + } + } + return { leadingText: text.substring(position, firstStart), newPosition: firstStart }; + } + function parse(text) { + const messages = []; + const processed = []; + let position = 0; + while (position < text.length) { + const result = parseMessage(text, position); + processed.push(result.leadingText); + position = result.newPosition; + if (!result.message) { + break; + } + messages.push(result.message); + } + return [messages, processed.join(""), text.substring(position)]; + } + Message.parse = parse; +})(Message = exports.Message || (exports.Message = {})); +//# sourceMappingURL=message.js.map \ No newline at end of file diff --git a/extension/message.js.map b/extension/message.js.map new file mode 100644 index 0000000..00fcde42 --- /dev/null +++ b/extension/message.js.map @@ -0,0 +1 @@ +{"version":3,"file":"message.js","sourceRoot":"","sources":["message.ts"],"names":[],"mappings":"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"} \ No newline at end of file From 9a9d198dabc5a1e04eaea00c04d19f85ab064439 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Sun, 7 Jan 2024 14:04:14 +0000 Subject: [PATCH 15/49] fix: upgrade vscode-debugadapter from 1.49.0 to 1.51.0 Snyk has created this PR to upgrade vscode-debugadapter from 1.49.0 to 1.51.0. See this package in npm: https://www.npmjs.com/package/vscode-debugadapter See this project in Snyk: https://app.snyk.io/org/ismoh/project/3471efa2-c570-43e7-9f4f-e160c298de38?utm_source=github&utm_medium=referral&page=upgrade-pr --- package-lock.json | 32 +++++++++++++++++--------------- package.json | 2 +- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/package-lock.json b/package-lock.json index ea7970e..4b3e978 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.3.3", "license": "MIT", "dependencies": { - "vscode-debugadapter": "^1.48.0" + "vscode-debugadapter": "^1.51.0" }, "devDependencies": { "@types/node": "^16.4.13", @@ -2820,18 +2820,20 @@ } }, "node_modules/vscode-debugadapter": { - "version": "1.49.0", - "resolved": "https://registry.npmjs.org/vscode-debugadapter/-/vscode-debugadapter-1.49.0.tgz", - "integrity": "sha512-nhes9zaLanFcHuchytOXGsLTGpU5qkz10mC9gVchiwNuX2Bljmc6+wsNbCyE5dOxu6F0pn3f+LEJQGMU1kcnvQ==", + "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.49.0" + "vscode-debugprotocol": "1.51.0" } }, "node_modules/vscode-debugprotocol": { - "version": "1.49.0", - "resolved": "https://registry.npmjs.org/vscode-debugprotocol/-/vscode-debugprotocol-1.49.0.tgz", - "integrity": "sha512-3VkK3BmaqN+BGIq4lavWp9a2IC6VYgkWkkMQm6Sa5ACkhBF6ThJDrkP+/3rFE4G7F8+mM3f4bhhJhhMax2IPfg==" + "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/which": { "version": "2.0.2", @@ -4963,18 +4965,18 @@ } }, "vscode-debugadapter": { - "version": "1.49.0", - "resolved": "https://registry.npmjs.org/vscode-debugadapter/-/vscode-debugadapter-1.49.0.tgz", - "integrity": "sha512-nhes9zaLanFcHuchytOXGsLTGpU5qkz10mC9gVchiwNuX2Bljmc6+wsNbCyE5dOxu6F0pn3f+LEJQGMU1kcnvQ==", + "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==", "requires": { "mkdirp": "^1.0.4", - "vscode-debugprotocol": "1.49.0" + "vscode-debugprotocol": "1.51.0" } }, "vscode-debugprotocol": { - "version": "1.49.0", - "resolved": "https://registry.npmjs.org/vscode-debugprotocol/-/vscode-debugprotocol-1.49.0.tgz", - "integrity": "sha512-3VkK3BmaqN+BGIq4lavWp9a2IC6VYgkWkkMQm6Sa5ACkhBF6ThJDrkP+/3rFE4G7F8+mM3f4bhhJhhMax2IPfg==" + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/vscode-debugprotocol/-/vscode-debugprotocol-1.51.0.tgz", + "integrity": "sha512-dzKWTMMyebIMPF1VYMuuQj7gGFq7guR8AFya0mKacu+ayptJfaRuM0mdHCqiOth4FnRP8mPhEroFPx6Ift8wHA==" }, "which": { "version": "2.0.2", diff --git a/package.json b/package.json index 1e44206..2410e6c 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "publish": "npm run bundle && vsce publish" }, "dependencies": { - "vscode-debugadapter": "^1.48.0" + "vscode-debugadapter": "^1.51.0" }, "devDependencies": { "@types/node": "^16.4.13", From ee95de607b7f4b778b0c85bd729ab63713a31667 Mon Sep 17 00:00:00 2001 From: Ismoh <12631485+Ismoh@users.noreply.github.com> Date: Mon, 29 Jan 2024 14:23:35 +0100 Subject: [PATCH 16/49] Update dependencies and settings.json and rebuild extension --- .vscode/settings.json | 4 + extension/luaDebugSession.js | 44 +- extension/luaDebugSession.js.map | 2 +- extension/luaDebugSession.ts | 4 +- package-lock.json | 2540 +++--------------------------- package.json | 4 +- 6 files changed, 253 insertions(+), 2345 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 90cc0ce..f27c9cb 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -3,5 +3,9 @@ "eslint.workingDirectories": [ "./debugger", "./extension" + ], + "cSpell.words": [ + "debugadapter", + "debugprotocol" ] } diff --git a/extension/luaDebugSession.js b/extension/luaDebugSession.js index 4062003..2604ace 100644 --- a/extension/luaDebugSession.js +++ b/extension/luaDebugSession.js @@ -31,7 +31,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }; Object.defineProperty(exports, "__esModule", { value: true }); exports.LuaDebugSession = void 0; -const vscode_debugadapter_1 = require("vscode-debugadapter"); +const debugadapter_1 = require("@vscode/debugadapter"); const childProcess = require("child_process"); const path = require("path"); const fs = require("fs"); @@ -100,7 +100,7 @@ function parseFrameId(frameId) { function makeFrameId(threadId, frame) { return (threadId - 1) * maxStackCount + (frame - 1); } -class LuaDebugSession extends vscode_debugadapter_1.LoggingDebugSession { +class LuaDebugSession extends debugadapter_1.LoggingDebugSession { constructor() { super("lldebugger-log.txt"); this.fileBreakpoints = {}; @@ -108,7 +108,7 @@ class LuaDebugSession extends vscode_debugadapter_1.LoggingDebugSession { this.debugPipe = null; this.outputText = ""; this.messageHandlerQueue = []; - this.variableHandles = new vscode_debugadapter_1.Handles(3 /* Global */ + 1); + this.variableHandles = new debugadapter_1.Handles(3 /* Global */ + 1); this.breakpointsPending = false; this.pendingScripts = null; this.pendingIgnorePatterns = null; @@ -130,7 +130,7 @@ class LuaDebugSession extends vscode_debugadapter_1.LoggingDebugSession { response.body.supportsTerminateRequest = true; response.body.supportsConditionalBreakpoints = true; this.sendResponse(response); - this.sendEvent(new vscode_debugadapter_1.InitializedEvent()); + this.sendEvent(new debugadapter_1.InitializedEvent()); } configurationDoneRequest(response, args) { this.showOutput("configurationDoneRequest", "request" /* Request */); @@ -286,7 +286,7 @@ class LuaDebugSession extends vscode_debugadapter_1.LoggingDebugSession { } this.fileBreakpoints[filePath] = args.breakpoints; const breakpoints = (typeof args.breakpoints !== "undefined") - ? args.breakpoints.map(breakpoint => new vscode_debugadapter_1.Breakpoint(true, breakpoint.line)) + ? args.breakpoints.map(breakpoint => new debugadapter_1.Breakpoint(true, breakpoint.line)) : []; response.body = { breakpoints }; this.sendResponse(response); @@ -301,14 +301,14 @@ class LuaDebugSession extends vscode_debugadapter_1.LoggingDebugSession { const activeThreadIds = [...this.activeThreads.keys()]; for (const activeId of activeThreadIds) { if (!msg.threads.some(({ id }) => activeId === id)) { - this.sendEvent(new vscode_debugadapter_1.ThreadEvent("exited", activeId)); + this.sendEvent(new debugadapter_1.ThreadEvent("exited", activeId)); this.activeThreads.delete(activeId); } } //Create new threads const newThreads = msg.threads.filter(({ id }) => !this.activeThreads.has(id)); for (const { id, name } of newThreads) { - this.activeThreads.set(id, new vscode_debugadapter_1.Thread(id, name)); + this.activeThreads.set(id, new debugadapter_1.Thread(id, name)); } response.body = { threads: [...this.activeThreads.values()] }; } @@ -336,7 +336,7 @@ class LuaDebugSession extends vscode_debugadapter_1.LoggingDebugSession { if (typeof frame.mappedLocation !== "undefined") { const mappedPath = this.resolvePath(frame.mappedLocation.source); if (typeof mappedPath !== "undefined") { - source = new vscode_debugadapter_1.Source(path.basename(mappedPath), mappedPath); + source = new debugadapter_1.Source(path.basename(mappedPath), mappedPath); line = frame.mappedLocation.line; column = frame.mappedLocation.column; } @@ -344,7 +344,7 @@ class LuaDebugSession extends vscode_debugadapter_1.LoggingDebugSession { //Un-mapped source const sourcePath = this.resolvePath(frame.source); if (typeof source === "undefined" && typeof sourcePath !== "undefined") { - source = new vscode_debugadapter_1.Source(path.basename(frame.source), sourcePath); + source = new debugadapter_1.Source(path.basename(frame.source), sourcePath); } //Function name let frameFunc = typeof frame.func !== "undefined" ? frame.func : "???"; @@ -352,7 +352,7 @@ class LuaDebugSession extends vscode_debugadapter_1.LoggingDebugSession { frameFunc += ` ${frame.source}`; } const frameId = makeFrameId(args.threadId, i + 1); - const stackFrame = new vscode_debugadapter_1.StackFrame(frameId, frameFunc, source, line, column); + const stackFrame = new debugadapter_1.StackFrame(frameId, frameFunc, source, line, column); stackFrame.presentationHint = typeof sourcePath === "undefined" ? "subtle" : "normal"; frames.push(stackFrame); } @@ -371,9 +371,9 @@ class LuaDebugSession extends vscode_debugadapter_1.LoggingDebugSession { yield this.waitForCommandResponse(`thread ${threadId}`); yield this.waitForCommandResponse(`frame ${frame}`); const scopes = [ - new vscode_debugadapter_1.Scope("Locals", 1 /* Local */, false), - new vscode_debugadapter_1.Scope("Upvalues", 2 /* Upvalue */, false), - new vscode_debugadapter_1.Scope("Globals", 3 /* Global */, false) + new debugadapter_1.Scope("Locals", 1 /* Local */, false), + new debugadapter_1.Scope("Upvalues", 2 /* Upvalue */, false), + new debugadapter_1.Scope("Globals", 3 /* Global */, false) ]; response.body = { scopes }; this.sendResponse(response); @@ -626,15 +626,15 @@ class LuaDebugSession extends vscode_debugadapter_1.LoggingDebugSession { ? variable.length + 1 : variable.length; if (variable.type === "table" || variable.type === "function") { - return new vscode_debugadapter_1.Variable(name, valueStr, ref, indexedVariables, 1); + return new debugadapter_1.Variable(name, valueStr, ref, indexedVariables, 1); } else { - return new vscode_debugadapter_1.Variable(name, valueStr, ref, indexedVariables); + return new debugadapter_1.Variable(name, valueStr, ref, indexedVariables); } } assert(value, message = "assertion failed") { if (value === null || typeof value === "undefined") { - this.sendEvent(new vscode_debugadapter_1.OutputEvent(message)); + this.sendEvent(new debugadapter_1.OutputEvent(message)); throw new Error(message); } return value; @@ -751,7 +751,7 @@ class LuaDebugSession extends vscode_debugadapter_1.LoggingDebugSession { } if (msg.breakType === "error") { this.showOutput(msg.message, "error" /* Error */); - const evt = new vscode_debugadapter_1.StoppedEvent("exception", msg.threadId, msg.message); + const evt = new debugadapter_1.StoppedEvent("exception", msg.threadId, msg.message); evt.body.allThreadsStopped = true; this.sendEvent(evt); return; @@ -762,7 +762,7 @@ class LuaDebugSession extends vscode_debugadapter_1.LoggingDebugSession { this.assert(this.sendCommand("autocont")); } else { - const evt = new vscode_debugadapter_1.StoppedEvent("breakpoint", msg.threadId); + const evt = new debugadapter_1.StoppedEvent("breakpoint", msg.threadId); evt.body.allThreadsStopped = true; this.sendEvent(evt); } @@ -811,7 +811,7 @@ class LuaDebugSession extends vscode_debugadapter_1.LoggingDebugSession { this.outputText = ""; } this.showOutput(`debugging ended: ${result}`, category); - this.sendEvent(new vscode_debugadapter_1.TerminatedEvent()); + this.sendEvent(new debugadapter_1.TerminatedEvent()); } sendCommand(cmd) { var _a; @@ -842,13 +842,13 @@ class LuaDebugSession extends vscode_debugadapter_1.LoggingDebugSession { return; } else if (category === "stdout" /* StdOut */ || category === "stderr" /* StdErr */) { - this.sendEvent(new vscode_debugadapter_1.OutputEvent(msg, category)); + this.sendEvent(new debugadapter_1.OutputEvent(msg, category)); } else if (category === "error" /* Error */) { - this.sendEvent(new vscode_debugadapter_1.OutputEvent(`\n[${category}] ${msg}\n`, "stderr")); + this.sendEvent(new debugadapter_1.OutputEvent(`\n[${category}] ${msg}\n`, "stderr")); } else if (typeof this.config !== "undefined" && this.config.verbose === true) { - this.sendEvent(new vscode_debugadapter_1.OutputEvent(`\n[${category}] ${msg}\n`)); + this.sendEvent(new debugadapter_1.OutputEvent(`\n[${category}] ${msg}\n`)); } } waitForConfiguration() { diff --git a/extension/luaDebugSession.js.map b/extension/luaDebugSession.js.map index 90ab7e5..92c4b64 100644 --- a/extension/luaDebugSession.js.map +++ b/extension/luaDebugSession.js.map @@ -1 +1 @@ -{"version":3,"file":"luaDebugSession.js","sourceRoot":"","sources":["luaDebugSession.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"luaDebugSession.js","sourceRoot":"","sources":["luaDebugSession.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/extension/luaDebugSession.ts b/extension/luaDebugSession.ts index e6d9a3f..884d36b 100644 --- a/extension/luaDebugSession.ts +++ b/extension/luaDebugSession.ts @@ -20,7 +20,7 @@ //OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE //SOFTWARE. -import {DebugProtocol} from "vscode-debugprotocol"; +import {DebugProtocol} from "@vscode/debugprotocol"; import { Breakpoint, InitializedEvent, @@ -35,7 +35,7 @@ import { Variable, Handles, ThreadEvent -} from "vscode-debugadapter"; +} from "@vscode/debugadapter"; import * as childProcess from "child_process"; import * as path from "path"; import * as fs from "fs"; diff --git a/package-lock.json b/package-lock.json index 4b3e978..84687c9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,7 +1,7 @@ { "name": "local-lua-debugger-vscode", "version": "0.3.3", - "lockfileVersion": 2, + "lockfileVersion": 3, "requires": true, "packages": { "": { @@ -9,17 +9,17 @@ "version": "0.3.3", "license": "MIT", "dependencies": { - "vscode-debugadapter": "^1.51.0" + "@vscode/debugadapter": "^1.64.0" }, "devDependencies": { "@types/node": "^16.4.13", "@types/vscode": "^1.44.0", "@typescript-eslint/eslint-plugin": "^4.29.1", "@typescript-eslint/parser": "^4.29.1", + "@vscode/vsce": "^2.23.0", "eslint": "^7.32.0", "typescript": "^4.3.5", - "typescript-to-lua": "^1.1.1", - "vsce": "^2.11.0" + "typescript-to-lua": "^1.1.1" }, "engines": { "vscode": "^1.44.0" @@ -377,6 +377,144 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@vscode/debugadapter": { + "version": "1.64.0", + "resolved": "https://registry.npmjs.org/@vscode/debugadapter/-/debugadapter-1.64.0.tgz", + "integrity": "sha512-XygE985qmNCzJExDnam4bErK6FG9Ck8S5TRPDNESwkt7i3OXqw5a3vYb7Dteyhz9YMEf7hwhFoT46Mjc45nJUg==", + "dependencies": { + "@vscode/debugprotocol": "1.64.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@vscode/debugprotocol": { + "version": "1.64.0", + "resolved": "https://registry.npmjs.org/@vscode/debugprotocol/-/debugprotocol-1.64.0.tgz", + "integrity": "sha512-Zhf3KvB+J04M4HPE2yCvEILGVtPixXUQMLBvx4QcAtjhc5lnwlZbbt80LCsZO2B+2BH8RMgVXk3QQ5DEzEne2Q==" + }, + "node_modules/@vscode/vsce": { + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-2.23.0.tgz", + "integrity": "sha512-Wf9yN8feZf4XmUW/erXyKQvCL577u72AQv4AI4Cwt5o5NyE49C5mpfw3pN78BJYYG3qnSIxwRo7JPvEurkQuNA==", + "dev": true, + "dependencies": { + "azure-devops-node-api": "^11.0.1", + "chalk": "^2.4.2", + "cheerio": "^1.0.0-rc.9", + "commander": "^6.2.1", + "find-yarn-workspace-root": "^2.0.0", + "glob": "^7.0.6", + "hosted-git-info": "^4.0.2", + "jsonc-parser": "^3.2.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": "^7.5.2", + "tmp": "^0.2.1", + "typed-rest-client": "^1.8.4", + "url-join": "^4.0.1", + "xml2js": "^0.5.0", + "yauzl": "^2.3.1", + "yazl": "^2.2.2" + }, + "bin": { + "vsce": "vsce" + }, + "engines": { + "node": ">= 14" + }, + "optionalDependencies": { + "keytar": "^7.7.0" + } + }, + "node_modules/@vscode/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" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@vscode/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, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@vscode/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, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@vscode/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/@vscode/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/@vscode/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/@vscode/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/@vscode/vsce/node_modules/xml2js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", + "dev": true, + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/acorn": { "version": "7.4.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", @@ -508,13 +646,15 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "optional": true }, "node_modules/bl": { "version": "4.1.0", "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", @@ -568,6 +708,7 @@ "url": "https://feross.org/support" } ], + "optional": true, "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -667,7 +808,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/color-convert": { "version": "2.0.1", @@ -766,6 +908,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" }, @@ -781,6 +924,7 @@ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, + "optional": true, "engines": { "node": ">=4.0.0" } @@ -796,6 +940,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" } @@ -890,6 +1035,7 @@ "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, + "optional": true, "dependencies": { "once": "^1.4.0" } @@ -1162,6 +1308,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" } @@ -1242,6 +1389,15 @@ "node": ">=8" } }, + "node_modules/find-yarn-workspace-root": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", + "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", + "dev": true, + "dependencies": { + "micromatch": "^4.0.2" + } + }, "node_modules/flat-cache": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", @@ -1265,7 +1421,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.realpath": { "version": "1.0.0", @@ -1303,7 +1460,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.1.7", @@ -1469,7 +1627,8 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "optional": true }, "node_modules/ignore": { "version": "4.0.6", @@ -1525,7 +1684,8 @@ "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "dev": true, + "optional": true }, "node_modules/is-core-module": { "version": "2.6.0", @@ -1615,12 +1775,19 @@ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, + "node_modules/jsonc-parser": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==", + "dev": true + }, "node_modules/keytar": { "version": "7.9.0", "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", "dev": true, "hasInstallScript": true, + "optional": true, "dependencies": { "node-addon-api": "^4.3.0", "prebuild-install": "^7.0.1" @@ -1763,6 +1930,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" }, @@ -1771,9 +1939,9 @@ } }, "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { "brace-expansion": "^1.1.7" @@ -1786,24 +1954,15 @@ "version": "1.2.6", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "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" - } + "dev": true, + "optional": true }, "node_modules/mkdirp-classic": { "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/ms": { "version": "2.1.2", @@ -1821,7 +1980,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", @@ -1834,6 +1994,7 @@ "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.25.0.tgz", "integrity": "sha512-p+0xx5ruIQ+8X57CRIMxbTZRT7tU0Tjn2C/aAK68AEMrbGsCo6IjnDdPNhEyyjWCT4bRtzomXchYd3sSgk3BJQ==", "dev": true, + "optional": true, "dependencies": { "semver": "^7.3.5" }, @@ -1845,7 +2006,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/nth-check": { "version": "2.0.1", @@ -1916,9 +2078,9 @@ } }, "node_modules/parse-semver/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "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" @@ -1995,6 +2157,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", @@ -2039,6 +2202,7 @@ "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, + "optional": true, "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -2054,9 +2218,9 @@ } }, "node_modules/qs": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", - "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", "dev": true, "dependencies": { "side-channel": "^1.0.4" @@ -2093,6 +2257,7 @@ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, + "optional": true, "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", @@ -2108,6 +2273,7 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true, + "optional": true, "engines": { "node": ">=0.10.0" } @@ -2129,6 +2295,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", @@ -2247,7 +2414,8 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "optional": true }, "node_modules/sax": { "version": "1.2.4", @@ -2256,9 +2424,9 @@ "dev": true }, "node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -2323,7 +2491,8 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "optional": true }, "node_modules/simple-get": { "version": "4.0.1", @@ -2344,6 +2513,7 @@ "url": "https://feross.org/support" } ], + "optional": true, "dependencies": { "decompress-response": "^6.0.0", "once": "^1.3.1", @@ -2396,6 +2566,7 @@ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, + "optional": true, "dependencies": { "safe-buffer": "~5.2.0" } @@ -2503,6 +2674,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", @@ -2515,6 +2687,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", @@ -2591,6 +2764,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" }, @@ -2697,7 +2871,8 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "dev": true, + "optional": true }, "node_modules/v8-compile-cache": { "version": "2.3.0", @@ -2705,136 +2880,6 @@ "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", "dev": true }, - "node_modules/vsce": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/vsce/-/vsce-2.11.0.tgz", - "integrity": "sha512-pr9Y0va/HCer0tTifeqaUrK24JJSpRd6oLeF/PY6FtrY41e+lwxiAq6jfMXx4ShAZglYg2rFKoKROwa7E7SEqQ==", - "dev": true, - "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" - }, - "bin": { - "vsce": "vsce" - }, - "engines": { - "node": ">= 14" - } - }, - "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" - }, - "engines": { - "node": ">=4" - } - }, - "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, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "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, - "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": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "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": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "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": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/vsce/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "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/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-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/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -2851,9 +2896,9 @@ } }, "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -2865,23 +2910,10 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, - "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/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", "dev": true, "engines": { "node": ">=4.0" @@ -2912,2133 +2944,5 @@ "buffer-crc32": "~0.2.3" } } - }, - "dependencies": { - "@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "dev": true, - "requires": { - "@babel/highlight": "^7.10.4" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.14.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz", - "integrity": "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==", - "dev": true - }, - "@babel/highlight": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz", - "integrity": "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.14.5", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "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" - } - } - } - }, - "@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "dev": true, - "requires": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - } - }, - "@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "dev": true, - "requires": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - } - }, - "@humanwhocodes/object-schema": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz", - "integrity": "sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==", - "dev": true - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - } - }, - "@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", - "dev": true - }, - "@types/node": { - "version": "16.7.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.7.13.tgz", - "integrity": "sha512-pLUPDn+YG3FYEt/pHI74HmnJOWzeR+tOIQzUx93pi9M7D8OE7PSLr97HboXwk5F+JS+TLtWuzCOW97AHjmOXXA==", - "dev": true - }, - "@types/vscode": { - "version": "1.60.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.60.0.tgz", - "integrity": "sha512-wZt3VTmzYrgZ0l/3QmEbCq4KAJ71K3/hmMQ/nfpv84oH8e81KKwPEoQ5v8dNCxfHFVJ1JabHKmCvqdYOoVm1Ow==", - "dev": true - }, - "@typescript-eslint/eslint-plugin": { - "version": "4.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.31.0.tgz", - "integrity": "sha512-iPKZTZNavAlOhfF4gymiSuUkgLne/nh5Oz2/mdiUmuZVD42m9PapnCnzjxuDsnpnbH3wT5s2D8bw6S39TC6GNw==", - "dev": true, - "requires": { - "@typescript-eslint/experimental-utils": "4.31.0", - "@typescript-eslint/scope-manager": "4.31.0", - "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "regexpp": "^3.1.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/experimental-utils": { - "version": "4.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.31.0.tgz", - "integrity": "sha512-Hld+EQiKLMppgKKkdUsLeVIeEOrwKc2G983NmznY/r5/ZtZCDvIOXnXtwqJIgYz/ymsy7n7RGvMyrzf1WaSQrw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.31.0", - "@typescript-eslint/types": "4.31.0", - "@typescript-eslint/typescript-estree": "4.31.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - } - }, - "@typescript-eslint/parser": { - "version": "4.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.31.0.tgz", - "integrity": "sha512-oWbzvPh5amMuTmKaf1wp0ySxPt2ZXHnFQBN2Szu1O//7LmOvgaKTCIDNLK2NvzpmVd5A2M/1j/rujBqO37hj3w==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "4.31.0", - "@typescript-eslint/types": "4.31.0", - "@typescript-eslint/typescript-estree": "4.31.0", - "debug": "^4.3.1" - } - }, - "@typescript-eslint/scope-manager": { - "version": "4.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.31.0.tgz", - "integrity": "sha512-LJ+xtl34W76JMRLjbaQorhR0hfRAlp3Lscdiz9NeI/8i+q0hdBZ7BsiYieLoYWqy+AnRigaD3hUwPFugSzdocg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.31.0", - "@typescript-eslint/visitor-keys": "4.31.0" - } - }, - "@typescript-eslint/types": { - "version": "4.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.31.0.tgz", - "integrity": "sha512-9XR5q9mk7DCXgXLS7REIVs+BaAswfdHhx91XqlJklmqWpTALGjygWVIb/UnLh4NWhfwhR5wNe1yTyCInxVhLqQ==", - "dev": true - }, - "@typescript-eslint/typescript-estree": { - "version": "4.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.31.0.tgz", - "integrity": "sha512-QHl2014t3ptg+xpmOSSPn5hm4mY8D4s97ftzyk9BZ8RxYQ3j73XcwuijnJ9cMa6DO4aLXeo8XS3z1omT9LA/Eg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.31.0", - "@typescript-eslint/visitor-keys": "4.31.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "4.31.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.31.0.tgz", - "integrity": "sha512-HUcRp2a9I+P21+O21yu3ezv3GEPGjyGiXoEUQwZXjR8UxRApGeLyWH4ZIIUSalE28aG4YsV6GjtaAVB3QKOu0w==", - "dev": true, - "requires": { - "@typescript-eslint/types": "4.31.0", - "eslint-visitor-keys": "^2.0.0" - } - }, - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - }, - "acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "requires": {} - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true - }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "azure-devops-node-api": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-11.0.1.tgz", - "integrity": "sha512-YMdjAw9l5p/6leiyIloxj3k7VIvYThKjvqgiQn88r3nhT93ENwsoDS3A83CyJ4uTWzCZ5f5jCi6c27rTU5Pz+A==", - "dev": true, - "requires": { - "tunnel": "0.0.6", - "typed-rest-client": "^1.8.4" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", - "dev": true - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "cheerio": { - "version": "1.0.0-rc.10", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.10.tgz", - "integrity": "sha512-g0J0q/O6mW8z5zxQ3A8E8J1hUgp4SMOvEoW/x84OwyHKe/Zccz83PVT4y5Crcr530FV6NgmKI1qvGTKVl9XXVw==", - "dev": true, - "requires": { - "cheerio-select": "^1.5.0", - "dom-serializer": "^1.3.2", - "domhandler": "^4.2.0", - "htmlparser2": "^6.1.0", - "parse5": "^6.0.1", - "parse5-htmlparser2-tree-adapter": "^6.0.1", - "tslib": "^2.2.0" - }, - "dependencies": { - "tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", - "dev": true - } - } - }, - "cheerio-select": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-1.5.0.tgz", - "integrity": "sha512-qocaHPv5ypefh6YNxvnbABM07KMxExbtbfuJoIie3iZXX1ERwYmJcIiRrr9H05ucQP1k28dav8rpdDgjQd8drg==", - "dev": true, - "requires": { - "css-select": "^4.1.3", - "css-what": "^5.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0", - "domutils": "^2.7.0" - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "css-select": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.1.3.tgz", - "integrity": "sha512-gT3wBNd9Nj49rAbmtFHj1cljIAOLYSX1nZ8CB7TBO3INYckygm5B7LISU/szY//YmdiSLbJvDLOx9VnMVpMBxA==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^5.0.0", - "domhandler": "^4.2.0", - "domutils": "^2.6.0", - "nth-check": "^2.0.0" - } - }, - "css-what": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-5.0.1.tgz", - "integrity": "sha512-FYDTSHb/7KXsWICVsxdmiExPjCfRC4qRFBdVwv7Ax9hMnvMmEjP9RfxTEZ3qPZGmADDn2vAKSo9UcN1jKVYscg==", - "dev": true - }, - "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "requires": { - "mimic-response": "^3.1.0" - } - }, - "deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "detect-libc": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz", - "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==", - "dev": true - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "requires": { - "esutils": "^2.0.2" - } - }, - "dom-serializer": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.3.2.tgz", - "integrity": "sha512-5c54Bk5Dw4qAxNOI1pFEizPSjVsx5+bpJKmL2kPn8JhBUq2q09tTCa3mjijun2NfK78NMouDYNMBkOrPZiS+ig==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.2.0.tgz", - "integrity": "sha512-DtBMo82pv1dFtUmHyr48beiuq792Sxohr+8Hm9zoxklYPfa6n0Z3Byjj2IV7bmr2IyqClnqEQhfgHJJ5QF0R5A==", - "dev": true - }, - "domhandler": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.2.2.tgz", - "integrity": "sha512-PzE9aBMsdZO8TK4BnuJwH0QT41wgMbRzuZrHUcpYncEjmQazq8QEaBWgLG7ZyC/DAZKEgglpIA6j4Qn/HmxS3w==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "enhanced-resolve": { - "version": "5.8.2", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.8.2.tgz", - "integrity": "sha512-F27oB3WuHDzvR2DOGNTaYy0D5o0cnrv8TeI482VM4kYgQd/FT9lUQwuNsJ0oOHtBUq7eiW5ytqzp7nBFknL+GA==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "requires": { - "ansi-colors": "^4.1.1" - } - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true - }, - "eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "dev": true, - "requires": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "dependencies": { - "eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^1.1.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - } - } - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^2.0.0" - } - }, - "eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true - }, - "espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "dev": true, - "requires": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "dev": true - } - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esquery": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", - "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "expand-template": { - "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 - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-glob": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz", - "integrity": "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fastq": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.12.0.tgz", - "integrity": "sha512-VNX0QkHK3RsXVKr9KrlUv/FoTa0NdbYoHHl7uXHv2rzyHSlxjdNAKug2twd9luJxpcyNeAgf5iPPMutJO67Dfg==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", - "dev": true, - "requires": { - "pend": "~1.2.0" - } - }, - "file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "requires": { - "flat-cache": "^3.0.4" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "requires": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - } - }, - "flatted": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.2.tgz", - "integrity": "sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==", - "dev": true - }, - "fs-constants": { - "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 - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "github-from-package": { - "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 - }, - "glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "13.11.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.11.0.tgz", - "integrity": "sha512-08/xrJ7wQjK9kkkRoI3OFUBbLx4f+6x3SGwcPvQ0QH6goFDrOU2oyAWrmh3dJezu65buo+HBMzAMQy6rovVC3g==", - "dev": true, - "requires": { - "type-fest": "^0.20.2" - } - }, - "globby": { - "version": "11.0.4", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz", - "integrity": "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - }, - "dependencies": { - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - } - } - }, - "graceful-fs": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", - "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "dev": true - }, - "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "htmlparser2": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", - "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.0.0", - "domutils": "^2.5.2", - "entities": "^2.0.0" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "dev": true - }, - "import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "is-core-module": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.6.0.tgz", - "integrity": "sha512-wShG8vs60jKfPWpF2KZRaAtvt3a20OAn7+IJ6hLPECpSABLcKtFKTTI4ZtH5QcBruBHlq+WsdHWyz0BCZW7svQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "keytar": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", - "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", - "dev": true, - "requires": { - "node-addon-api": "^4.3.0", - "prebuild-install": "^7.0.1" - } - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "linkify-it": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", - "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", - "dev": true, - "requires": { - "uc.micro": "^1.0.1" - } - }, - "lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", - "dev": true - }, - "lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM=", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "markdown-it": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", - "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", - "dev": true, - "requires": { - "argparse": "^2.0.1", - "entities": "~2.1.0", - "linkify-it": "^3.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" - }, - "dependencies": { - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", - "dev": true - } - } - }, - "mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, - "mimic-response": { - "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 - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" - }, - "mkdirp-classic": { - "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 - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "napi-build-utils": { - "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 - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node-abi": { - "version": "3.25.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.25.0.tgz", - "integrity": "sha512-p+0xx5ruIQ+8X57CRIMxbTZRT7tU0Tjn2C/aAK68AEMrbGsCo6IjnDdPNhEyyjWCT4bRtzomXchYd3sSgk3BJQ==", - "dev": true, - "requires": { - "semver": "^7.3.5" - } - }, - "node-addon-api": { - "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 - }, - "nth-check": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", - "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - }, - "object-inspect": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "optionator": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", - "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", - "dev": true, - "requires": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.3" - } - }, - "parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "requires": { - "callsites": "^3.0.0" - } - }, - "parse-semver": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz", - "integrity": "sha1-mkr9bfBj3Egm+T+6SpnPIj9mbLg=", - "dev": true, - "requires": { - "semver": "^5.1.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=", - "dev": true - }, - "picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true - }, - "prebuild-install": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", - "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", - "dev": true, - "requires": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - } - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "qs": { - "version": "6.10.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", - "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } - }, - "queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true - }, - "rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true - } - } - }, - "read": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", - "dev": true, - "requires": { - "mute-stream": "~0.0.4" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "requires": { - "queue-microtask": "^1.2.2" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "simple-concat": { - "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 - }, - "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, - "requires": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - }, - "table": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.7.1.tgz", - "integrity": "sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg==", - "dev": true, - "requires": { - "ajv": "^8.0.1", - "lodash.clonedeep": "^4.5.0", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.6.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.6.2.tgz", - "integrity": "sha512-9807RlWAgT564wT+DjeyU5OFMPjmzxVobvDFmNAhY+5zD6A2ly3jDp6sgnfyDtlIQ+7H97oc/DGCzzfu9rjw9w==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } - } - }, - "tapable": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", - "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", - "dev": true - }, - "tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "dev": true, - "requires": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, - "requires": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "tmp": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", - "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", - "dev": true, - "requires": { - "rimraf": "^3.0.0" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - } - }, - "tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "dev": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true - }, - "typed-rest-client": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.6.tgz", - "integrity": "sha512-xcQpTEAJw2DP7GqVNECh4dD+riS+C1qndXLfBCJ3xk0kqprtGN491P5KlmrDbKdtuW8NEcP/5ChxiJI3S9WYTA==", - "dev": true, - "requires": { - "qs": "^6.9.1", - "tunnel": "0.0.6", - "underscore": "^1.12.1" - } - }, - "typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.4.4.tgz", - "integrity": "sha512-DqGhF5IKoBl8WNf8C1gu8q0xZSInh9j1kJJMqT3a94w1JzVaBU4EXOSMrz9yDqMT0xt3selp83fuFMQ0uzv6qA==", - "dev": true - }, - "typescript-to-lua": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/typescript-to-lua/-/typescript-to-lua-1.1.1.tgz", - "integrity": "sha512-13vk/FSQyqbBkXNvg73LpT0tsPKdepJHPYR6TNtbc9l1ClSxAEUvkB3k49MAwSQ6LoN8Ui4Bgyu9dKFoDB315Q==", - "dev": true, - "requires": { - "enhanced-resolve": "^5.8.2", - "resolve": "^1.15.1", - "source-map": "^0.7.3" - } - }, - "uc.micro": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", - "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", - "dev": true - }, - "underscore": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.1.tgz", - "integrity": "sha512-hzSoAVtJF+3ZtiFX0VgfFPHEDRm7Y/QPjGyNo4TVdnDTdft3tr8hEkD25a1jC+TjTuE7tkHGKkhwCgs9dgBB2g==", - "dev": true - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", - "dev": true - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "v8-compile-cache": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz", - "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==", - "dev": true - }, - "vsce": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/vsce/-/vsce-2.11.0.tgz", - "integrity": "sha512-pr9Y0va/HCer0tTifeqaUrK24JJSpRd6oLeF/PY6FtrY41e+lwxiAq6jfMXx4ShAZglYg2rFKoKROwa7E7SEqQ==", - "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": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "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": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "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" - } - } - } - }, - "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==", - "requires": { - "mkdirp": "^1.0.4", - "vscode-debugprotocol": "1.51.0" - } - }, - "vscode-debugprotocol": { - "version": "1.51.0", - "resolved": "https://registry.npmjs.org/vscode-debugprotocol/-/vscode-debugprotocol-1.51.0.tgz", - "integrity": "sha512-dzKWTMMyebIMPF1VYMuuQj7gGFq7guR8AFya0mKacu+ayptJfaRuM0mdHCqiOth4FnRP8mPhEroFPx6Ift8wHA==" - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "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" - } - }, - "xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", - "dev": true, - "requires": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "yazl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", - "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", - "dev": true, - "requires": { - "buffer-crc32": "~0.2.3" - } - } } } diff --git a/package.json b/package.json index 2410e6c..385eb61 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "publish": "npm run bundle && vsce publish" }, "dependencies": { - "vscode-debugadapter": "^1.51.0" + "@vscode/debugadapter": "^1.64.0" }, "devDependencies": { "@types/node": "^16.4.13", @@ -45,7 +45,7 @@ "eslint": "^7.32.0", "typescript": "^4.3.5", "typescript-to-lua": "^1.1.1", - "vsce": "^2.11.0" + "@vscode/vsce": "^2.23.0" }, "main": "./extension/extension.js", "engines": { From e4f361b1d7a0a228669f8c02fb67b3d723c0c4ba Mon Sep 17 00:00:00 2001 From: Ismoh <12631485+Ismoh@users.noreply.github.com> Date: Tue, 13 Feb 2024 16:13:30 +0100 Subject: [PATCH 17/49] Update package.json publisher and bump version --- package.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 385eb61..0a0f976 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,13 @@ { "name": "local-lua-debugger-vscode", - "publisher": "tomblind", - "version": "0.3.3", - "description": "Local Lua Debugger - simple Lua debugger with no dependencies", + "publisher": "ismoh", + "version": "0.3.4", + "description": "Local Lua Debugger - simple Lua debugger with no dependencies - forked from https://github.com/tomblind/local-lua-debugger-vscode", "displayName": "Local Lua Debugger", "icon": "resources/Lua-Logo_128x128.png", "repository": { "type": "github", - "url": "https://github.com/tomblind/local-lua-debugger-vscode.git" + "url": "https://github.com/ismoh/local-lua-debugger-vscode.git" }, "author": "tomblind@users.noreply.github.com", "license": "MIT", From 94d5cf07272fb6466a7848dcec0b725a2a47afe6 Mon Sep 17 00:00:00 2001 From: Ismoh <12631485+Ismoh@users.noreply.github.com> Date: Tue, 13 Feb 2024 16:15:44 +0100 Subject: [PATCH 18/49] Update README.md with forked repository information --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index d21aa34..9a25447 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,12 @@ A simple Lua debugger which requires no additional dependencies. +--- + +Forked from [tomblind/local-lua-debugger-vscode](https://github.com/tomblind/local-lua-debugger-vscode) to maintain the extension, until the main repo will be maintained again. + +**Disclaimer**: I'm not the original author of this extension, I'm just trying to maintaining it. + --- ## Notice of Breaking Change Beginning in version 0.3.0, projects which use sourcemaps to debug code transpiled from another language (such as TypescriptToLua), **must** specify the [`scriptFiles`](#scriptFiles) launch configuration option in order to use breakpoints in the original source files. This allows these to be resolved at startup instead of at runtime which allows for a significant performance increase. From 2a3956988efdcb84f4978c00f5037dedf50eb6ae Mon Sep 17 00:00:00 2001 From: Ismoh <12631485+Ismoh@users.noreply.github.com> Date: Tue, 13 Feb 2024 16:19:19 +0100 Subject: [PATCH 19/49] Update README.md with changes comparison --- README.md | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9a25447..927d1c5 100644 --- a/README.md +++ b/README.md @@ -6,14 +6,19 @@ A simple Lua debugger which requires no additional dependencies. Forked from [tomblind/local-lua-debugger-vscode](https://github.com/tomblind/local-lua-debugger-vscode) to maintain the extension, until the main repo will be maintained again. -**Disclaimer**: I'm not the original author of this extension, I'm just trying to maintaining it. +**Disclaimer**: I'm not the original author of this extension, I'm just trying to maintaining it.\ +You can compare the changes between the original and this fork [here](https://github.com/tomblind/local-lua-debugger-vscode/compare/master...Ismoh:local-lua-debugger-vscode:master). --- + ## Notice of Breaking Change -Beginning in version 0.3.0, projects which use sourcemaps to debug code transpiled from another language (such as TypescriptToLua), **must** specify the [`scriptFiles`](#scriptFiles) launch configuration option in order to use breakpoints in the original source files. This allows these to be resolved at startup instead of at runtime which allows for a significant performance increase. + +Beginning in version 0.3.0, projects which use sourcemaps to debug code transpiled from another language (such as TypescriptToLua), **must** specify the [`scriptFiles`](#scriptfiles) launch configuration option in order to use breakpoints in the original source files. This allows these to be resolved at startup instead of at runtime which allows for a significant performance increase. --- + ## Features + - Debug Lua using stand-alone interpretor or a custom executable - Supports Lua versions 5.1, 5.2, 5.3 and [LuaJIT](https://luajit.org/) - Basic debugging features (stepping, inspecting, breakpoints, etc...) @@ -22,14 +27,17 @@ Beginning in version 0.3.0, projects which use sourcemaps to debug code transpil - Basic support for source maps, such as those generated by [TypescriptToLua](https://typescripttolua.github.io/) --- + ## Usage ### Lua Stand-Alone Interpreter + To debug a Lua program using a stand-alone interpreter, set `lua-local.interpreter` in your user or workspace settings: !["lua-local.interpreter": "lua5.1"](resources/settings.png '"lua-local.interpreter": "lua5.1"') Alternatively, you can set the interpreter and file to run in `launch.json`: + ```json { "configurations": [ @@ -47,7 +55,9 @@ Alternatively, you can set the interpreter and file to run in `launch.json`: ``` ### Custom Lua Environment + To debug using a custom Lua executable, you must set up your `launch.json` with the name/path of the executable and any additional arguments that may be needed. + ```json { "configurations": [ @@ -65,14 +75,19 @@ To debug using a custom Lua executable, you must set up your `launch.json` with ] } ``` + You must then manually start the debugger in your Lua code: + ```lua require("lldebugger").start() ``` + Note that the path to `lldebugger` will automatically be appended to the `LUA_PATH` environment variable, so it can be found by Lua. --- + ## Requirements & Limitations + - The Lua environment must support communication via either stdio or pipes (named pipes on Windows, fifos on Linux). - Some enviroments may require command line options to support stdio communication (ex. Solar2D requires `/no-console` flag) - Use of `io.read` or other calls that require user input will cause problems in stdio mode. Set [`program.communication`](#program.communication) to `pipe` to work around this. @@ -81,28 +96,37 @@ Note that the path to `lldebugger` will automatically be appended to the `LUA_PA - In Lua 5.1 and LuaJIT, the main thread cannot be accessed while stopped inside of a coroutine. --- + ## Tips + - For convenience, a global reference to the debugger is always stored as `lldebugger`. - You can detect that the debugger extension is attached by inspecting the environment variable `LOCAL_LUA_DEBUGGER_VSCODE`. This is useful for conditionally starting the debugger in custom environments. + ```lua if os.getenv("LOCAL_LUA_DEBUGGER_VSCODE") == "1" then require("lldebugger").start() end ``` + - Some custom environments will not break on uncaught runtime errors. To catch a runtime error, you can wrap the code with `lldebugger.call()`: + ```lua lldebugger.call(function() --code causing runtime error end) ``` + - Some environments will not load required files from the standard filesystem. In these cases, you may be able to load the debugger manually using the file path stored in `LOCAL_LUA_DEBUGGER_FILEPATH`: + ```lua package.loaded["lldebugger"] = assert(loadfile(os.getenv("LOCAL_LUA_DEBUGGER_FILEPATH")))() require("lldebugger").start() ``` --- + ## Additional Configuration Options + #### `scriptRoots` A list of alternate paths to find Lua scripts. This is useful for environments like LÖVE, which use custom resolvers to find scripts in other locations than what is in `package.config`. @@ -126,6 +150,7 @@ Step into Lua when stepping through source-mapped code and no mapping is availab #### `breakInCoroutines` Break into the debugger when errors occur inside coroutines. + - Coroutines created with `coroutine.wrap` will always break, regardless of this option. - In Lua 5.1, this will break where the coroutine was resumed and the message will contain the actual location of the error. @@ -150,6 +175,7 @@ Specify environment variables to set when launching executable. Specifies how the extension communicates with the debugger. Possible values: + - `stdio` (default): Messages are embeded in stdin and stdout. - `pipe`: Pipes are created for passing messages (named pipes on Windows, fifos on Linux). Use this if your environment has issues with stdio communication. @@ -158,6 +184,7 @@ Possible values: Enable verbose output from debugger. Only useful when trying to identify problems with the debugger itself. --- + ## Custom Environment Examples ### LÖVE @@ -183,6 +210,7 @@ Enable verbose output from debugger. Only useful when trying to identify problem ] } ``` + ```lua if os.getenv("LOCAL_LUA_DEBUGGER_VSCODE") == "1" then require("lldebugger").start() From e74b9b3e53691eefb637605745a860eef3414106 Mon Sep 17 00:00:00 2001 From: Ismoh <12631485+Ismoh@users.noreply.github.com> Date: Tue, 13 Feb 2024 16:36:03 +0100 Subject: [PATCH 20/49] Update changelog with latest changes --- CHANGELOG.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a4780ed..17f3ce1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,18 @@ +# Changelog + +## Version 0.3.4 + +- Fixed breakpoints not being hit, see original [pull request](https://github.com/tomblind/local-lua-debugger-vscode/pull/71) and forked [one](https://github.com/Ismoh/local-lua-debugger-vscode/pull/3) +- Additional fixed breakpoints not being hit, see original [pull request](https://github.com/tomblind/local-lua-debugger-vscode/pull/67) and forked [one](https://github.com/Ismoh/local-lua-debugger-vscode/pull/1) +- Added support for inspection of functions, see original [pull request](https://github.com/tomblind/local-lua-debugger-vscode/pull/72) and forked [one](https://github.com/Ismoh/local-lua-debugger-vscode/pull/2/files) +- Bumped `vscode` dependency to `^2.23.0` and `debugadapter` to `^1.64.0` to fix security vulnerabilities, see forked [pull request](https://github.com/Ismoh/local-lua-debugger-vscode/pull/4). Also necessary to fix breakpoints not being hit +- Changed `Clean` task +- Added disclaimer to `README.md` about the fork +- Changed `.gitignore` to ignore `node_modules`, but include build files to apply those on [noita-vscode-debugger](https://github.com/Ismoh/noita-vscode-debugger), which relies on this extension +- Update `package.json` for the fork + ## Version 0.3.3 + - Added support for utf8 identifier names - Implemented pipe communication as an alternative to using stdio (use `"communication": "pipe"` under `"program"`) - No longer stepping into Lua when a sourcemap exists but the line is not mapped (use stepUnmappedLines for old behavior) @@ -6,13 +20,16 @@ - Fixed many bugs and improved visualization of some expressions ## Version 0.3.2 + - Added `ignorePatterns` option to skip over specified files when stepping (useful for busted) - Allowed `scriptFiles` to work with leading relative paths (`./`) ## Version 0.3.1 + - Removed tests from extension bundle ## Version 0.3.0 + - **BREAKING CHANGE**: Breakpoints for sourcemapped files now resolved at startup. `scriptFiles` option added and is required for this functionality. See [README](README.md) for more information. - Added `LOCAL_LUA_DEBUGGER_FILEPATH` environment variable to supply the debugger script's path to environments that cannot require it normally - Fixed issues with paths in environments that internally use absolute paths in their local project @@ -20,22 +37,26 @@ - Performance improvements ## Version 0.2.3 + - Added support for breaking on implicit errors in coroutines (not supported in Lua 5.1) - Global reference to the debugger is now stored in `lldebugger` - Fixed handling of sourcemaps with absolute paths - Many internal upgrades, fixes, and improvements ## Version 0.2.2 + - Fixed bug when tostring metamethod has errors - Fixed handling of backslashes in args (thanks to ousttrue) - Fixed some issues with propagation of errors - Calls to `error` and `assert` will now break inside of coroutines ## Version 0.2.1 + - Fixed handling of control characters - Fixed issue with handling recursive metatables ## Version 0.2.0 + - Experimental support for mapping variable names from source maps - Passing executable and script through 'arg' to fully simulate standard environment - Using function environments instead of '_G' when evaluating expressions @@ -45,43 +66,55 @@ - Other small bug fixes ## Version 0.1.10 + - Fixed breakpoints set on first line of code - Fixed handling of null bytes in strings - Preventing false error break when `debug.traceback` is called by lua scripts - Various other small bug fixes ## Version 0.1.9 + - Fixed issue with tables that have custom len operator - Fixed passing `arg` to files being debugged ## Version 0.1.8 + - Suppport for debugging threads not created by coroutine.creae/wrap (fixes torch luajit) - Fixed infinite recursion when debugger assert fails ## Version 0.1.7 + - Fixed issues with finding source maps when environment supplies only filenames - Updated some npm packages for security vulnerabilities ## Version 0.1.6 + - Fixed issues with output parsing, including hangups and incorrect newlines - Fixed issues with paths in source maps ## Version 0.1.5 + Fixed path formatting on windows when custom lua interpreter uses forward slashes ## Version 0.1.4 + Fixed issues with package search paths + - Default lua paths are now correctly retained when `LUA_PATH` is not set - Correctly handling version-specific `LUA_PATH` environment variables (`LUA_PATH_5_2`, etc...) ## Version 0.1.3 + Fix for attempting to debug builtin functions in luajit ## Version 0.1.2 + Fix for empty source mappings ## Version 0.1.1 + Fixed installation from marketplace ## Version 0.1.0 + Initial release From 9d2142b17c2b226f682eb3f19367bad1e83a0afa Mon Sep 17 00:00:00 2001 From: Ismoh <12631485+Ismoh@users.noreply.github.com> Date: Wed, 21 Feb 2024 14:01:47 +0100 Subject: [PATCH 21/49] Fixed `"Failed to find extension path"` --- .vscode/launch.json | 4 ++-- .vscode/settings.json | 3 ++- .vscode/tasks.json | 10 +++++++++- CHANGELOG.md | 4 ++++ README.md | 5 +++-- extension/extension.js | 2 +- extension/extension.ts | 2 +- 7 files changed, 22 insertions(+), 8 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 74cc66b..77c154a 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -20,10 +20,10 @@ "request": "launch", "runtimeExecutable": "${execPath}", "args": [ - "--extensionDevelopmentPath=${workspaceFolder}/../../.vscode/extensions/tomblind.local-lua-debugger-vscode-0.1.0" + "--extensionDevelopmentPath=${workspaceFolder}/../../.vscode/extensions/ismoh.local-lua-debugger-vscode-0.1.0" ], "outFiles": [ - "${workspaceFolder}/../../.vscode/extensions/tomblind.local-lua-debugger-vscode-0.1.0/**/*.js" + "${workspaceFolder}/../../.vscode/extensions/ismoh.local-lua-debugger-vscode-0.1.0/**/*.js" ], // "preLaunchTask": "npm: watch" }, diff --git a/.vscode/settings.json b/.vscode/settings.json index f27c9cb..4112131 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -6,6 +6,7 @@ ], "cSpell.words": [ "debugadapter", - "debugprotocol" + "debugprotocol", + "tstl" ] } diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 5e05b52..08171a2 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -68,6 +68,14 @@ ], "label": "Lint", "detail": "npm run lint-extensions" - } + }, + { + "label": "Publish", + "type": "npm", + "script": "publish", + "problemMatcher": [ + "$tsc" + ] + }, ] } diff --git a/CHANGELOG.md b/CHANGELOG.md index 17f3ce1..2be22bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## Version 0.3.5 + +- Fixed `"Failed to find extension path"` + ## Version 0.3.4 - Fixed breakpoints not being hit, see original [pull request](https://github.com/tomblind/local-lua-debugger-vscode/pull/71) and forked [one](https://github.com/Ismoh/local-lua-debugger-vscode/pull/3) diff --git a/README.md b/README.md index 927d1c5..0b62219 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,10 @@ A simple Lua debugger which requires no additional dependencies. --- -Forked from [tomblind/local-lua-debugger-vscode](https://github.com/tomblind/local-lua-debugger-vscode) to maintain the extension, until the main repo will be maintained again. +## Disclaimer -**Disclaimer**: I'm not the original author of this extension, I'm just trying to maintaining it.\ +> Forked from [tomblind/local-lua-debugger-vscode](https://github.com/tomblind/local-lua-debugger-vscode) to maintain the extension, until the main repo will be maintained again.
+> **Disclaimer**: I'm not the original author of this extension, I'm just trying to maintaining it.\ You can compare the changes between the original and this fork [here](https://github.com/tomblind/local-lua-debugger-vscode/compare/master...Ismoh:local-lua-debugger-vscode:master). --- diff --git a/extension/extension.js b/extension/extension.js index dd9a10a..f7075af 100644 --- a/extension/extension.js +++ b/extension/extension.js @@ -97,7 +97,7 @@ const configurationProvider = { else { return abortLaunch("No path for debugger"); } - const extension = vscode.extensions.getExtension("tomblind.local-lua-debugger-vscode"); + const extension = vscode.extensions.getExtension("ismoh.local-lua-debugger-vscode"); if (typeof extension === "undefined") { return abortLaunch("Failed to find extension path"); } diff --git a/extension/extension.ts b/extension/extension.ts index 3ba6aa5..3d56f41 100644 --- a/extension/extension.ts +++ b/extension/extension.ts @@ -97,7 +97,7 @@ const configurationProvider: vscode.DebugConfigurationProvider = { return abortLaunch("No path for debugger"); } - const extension = vscode.extensions.getExtension("tomblind.local-lua-debugger-vscode"); + const extension = vscode.extensions.getExtension("ismoh.local-lua-debugger-vscode"); if (typeof extension === "undefined") { return abortLaunch("Failed to find extension path"); } From e0653a4d36134e0bfba8ee0949acee0e708de6bd Mon Sep 17 00:00:00 2001 From: Ismoh <12631485+Ismoh@users.noreply.github.com> Date: Wed, 21 Feb 2024 14:05:11 +0100 Subject: [PATCH 22/49] Update package version to 0.3.5 --- extension/extension.js.map | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/extension/extension.js.map b/extension/extension.js.map index 66fbc04..dfa942a 100644 --- a/extension/extension.js.map +++ b/extension/extension.js.map @@ -1 +1 @@ -{"version":3,"file":"extension.js","sourceRoot":"","sources":["extension.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"extension.js","sourceRoot":"","sources":["extension.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 84687c9..f4e2b81 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "local-lua-debugger-vscode", - "version": "0.3.3", + "version": "0.3.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "local-lua-debugger-vscode", - "version": "0.3.3", + "version": "0.3.5", "license": "MIT", "dependencies": { "@vscode/debugadapter": "^1.64.0" diff --git a/package.json b/package.json index 0a0f976..b143982 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "local-lua-debugger-vscode", "publisher": "ismoh", - "version": "0.3.4", + "version": "0.3.5", "description": "Local Lua Debugger - simple Lua debugger with no dependencies - forked from https://github.com/tomblind/local-lua-debugger-vscode", "displayName": "Local Lua Debugger", "icon": "resources/Lua-Logo_128x128.png", From 8a9ff6c536c1d029b0634fdd006142bdfe9665ae Mon Sep 17 00:00:00 2001 From: Ismoh <12631485+Ismoh@users.noreply.github.com> Date: Sun, 10 Mar 2024 16:38:05 +0100 Subject: [PATCH 23/49] Update extension and publisher names --- .github/workflows/vsce-publish.yml | 16 +++ .vscode/launch.json | 4 +- .vscode/settings.json | 1 + .vscode/tasks.json | 153 ++++++++++++++--------------- extension/extension.js | 2 +- extension/extension.ts | 2 +- package.json | 4 +- 7 files changed, 97 insertions(+), 85 deletions(-) create mode 100644 .github/workflows/vsce-publish.yml diff --git a/.github/workflows/vsce-publish.yml b/.github/workflows/vsce-publish.yml new file mode 100644 index 0000000..ac65cdd --- /dev/null +++ b/.github/workflows/vsce-publish.yml @@ -0,0 +1,16 @@ +name: VSCode Marketplace publish +on: + push: + tags: + - "release-v[0-9]+.[0-9]+.[0-9]+" +jobs: + publish: + name: Publish to VSCode Marketplace + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + - name: Install npm + run: npm install + - name: Publish to VSCode Marketplace + run: npm run bundle && vsce publish -p ${{ secrets.AZURE_PAT }} \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json index 77c154a..5fb2099 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -20,10 +20,10 @@ "request": "launch", "runtimeExecutable": "${execPath}", "args": [ - "--extensionDevelopmentPath=${workspaceFolder}/../../.vscode/extensions/ismoh.local-lua-debugger-vscode-0.1.0" + "--extensionDevelopmentPath=${workspaceFolder}/../../.vscode/extensions/ismohgames.local-lua-debugger-vscode-0.1.0" ], "outFiles": [ - "${workspaceFolder}/../../.vscode/extensions/ismoh.local-lua-debugger-vscode-0.1.0/**/*.js" + "${workspaceFolder}/../../.vscode/extensions/ismohgames.local-lua-debugger-vscode-0.1.0/**/*.js" ], // "preLaunchTask": "npm: watch" }, diff --git a/.vscode/settings.json b/.vscode/settings.json index 4112131..0e7e1f7 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -7,6 +7,7 @@ "cSpell.words": [ "debugadapter", "debugprotocol", + "ismohgames", "tstl" ] } diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 08171a2..517768a 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -1,81 +1,76 @@ { - "version": "2.0.0", - "tasks": [ - { - "label": "Build Debugger", - "type": "npm", - "group": "build", - "script": "build-debugger", - "problemMatcher": [ - "$tsc" - ] - }, - { - "label": "Build Extension", - "type": "npm", - "group": "build", - "script": "build-extension", - "problemMatcher": [ - "$tsc" - ] - }, - { - "label": "Bundle", - "type": "npm", - "group": { - "kind": "build", - "isDefault": true - }, - "script": "bundle", - "problemMatcher": [ - "$tsc" - ], - "dependsOn": "Clean" - }, - { - "label": "Clean", - "type": "shell", - "command": "rm debugger/*.lua; rm debugger/*.lua.map; rm extension/*.js; rm extension/*.js.map; rm *.vsix", - "problemMatcher": [] - }, - { - "label": "Build Debugger (TSTL HEAD)", - "type": "shell", - "group": "build", - "command": "node", - "args": [ - "../TypescriptToLua/dist/tstl.js", - "-p", - "debugger" - ], - "problemMatcher": [ - "$tsc" - ] - }, - { - "label": "Build", - "type": "npm", - "script": "build", - "problemMatcher": [ - "$tsc" - ] - }, - { - "type": "npm", - "script": "lint", - "problemMatcher": [ - "$eslint-stylish" - ], - "label": "Lint", - "detail": "npm run lint-extensions" - }, - { - "label": "Publish", - "type": "npm", - "script": "publish", - "problemMatcher": [ - "$tsc" - ] - }, - ] + "version": "2.0.0", + "tasks": [ + { + "label": "Build Debugger", + "type": "npm", + "group": "build", + "script": "build-debugger", + "problemMatcher": ["$tsc"] + }, + { + "label": "Build Extension", + "type": "npm", + "group": "build", + "script": "build-extension", + "problemMatcher": ["$tsc"] + }, + { + "label": "Bundle", + "type": "npm", + "group": { + "kind": "build", + "isDefault": true + }, + "script": "bundle", + "problemMatcher": ["$tsc"], + "dependsOn": "Clean" + }, + { + "label": "Clean", + "type": "shell", + "command": "rm debugger/*.lua; rm debugger/*.lua.map; rm extension/*.js; rm extension/*.js.map; rm *.vsix", + "problemMatcher": [] + }, + { + "label": "Build Debugger (TSTL HEAD)", + "type": "shell", + "group": "build", + "command": "node", + "args": ["../TypescriptToLua/dist/tstl.js", "-p", "debugger"], + "problemMatcher": ["$tsc"] + }, + { + "label": "Build", + "type": "npm", + "script": "build", + "problemMatcher": ["$tsc"] + }, + { + "type": "npm", + "script": "lint", + "problemMatcher": ["$eslint-stylish"], + "label": "Lint", + "detail": "npm run lint-extensions" + }, + { + "label": "Publish", + "type": "npm", + "script": "publish", + "problemMatcher": ["$tsc"] + }, + { + "label": "Create new release", + "type": "shell", + "command": "git tag -a release-v${input:release-version} -m \"Release v${input:release-version}\"; git push origin release-v${input:release-version}; git push origin --tags", + "problemMatcher": ["$tsc"] + } + ], + "inputs": [ + { + "id": "release-version", + "type": "promptString", + "description": "Enter the version number for the release, example: 0.0.1" + } + ] } diff --git a/extension/extension.js b/extension/extension.js index f7075af..a9d1ba6 100644 --- a/extension/extension.js +++ b/extension/extension.js @@ -97,7 +97,7 @@ const configurationProvider = { else { return abortLaunch("No path for debugger"); } - const extension = vscode.extensions.getExtension("ismoh.local-lua-debugger-vscode"); + const extension = vscode.extensions.getExtension("ismohgames.local-lua-debugger-vscode"); if (typeof extension === "undefined") { return abortLaunch("Failed to find extension path"); } diff --git a/extension/extension.ts b/extension/extension.ts index 3d56f41..5b16cf6 100644 --- a/extension/extension.ts +++ b/extension/extension.ts @@ -97,7 +97,7 @@ const configurationProvider: vscode.DebugConfigurationProvider = { return abortLaunch("No path for debugger"); } - const extension = vscode.extensions.getExtension("ismoh.local-lua-debugger-vscode"); + const extension = vscode.extensions.getExtension("ismohgames.local-lua-debugger-vscode"); if (typeof extension === "undefined") { return abortLaunch("Failed to find extension path"); } diff --git a/package.json b/package.json index b143982..47b6ba1 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "local-lua-debugger-vscode", - "publisher": "ismoh", - "version": "0.3.5", + "publisher": "ismohgames", + "version": "0.3.6", "description": "Local Lua Debugger - simple Lua debugger with no dependencies - forked from https://github.com/tomblind/local-lua-debugger-vscode", "displayName": "Local Lua Debugger", "icon": "resources/Lua-Logo_128x128.png", From fb7a460a9a81e5e5693fb9a21e90612e82077a7a Mon Sep 17 00:00:00 2001 From: Ismoh <12631485+Ismoh@users.noreply.github.com> Date: Sun, 10 Mar 2024 16:57:11 +0100 Subject: [PATCH 24/49] Update package-lock.json and tasks.json --- .vscode/tasks.json | 2 +- extension/extension.js.map | 2 +- package-lock.json | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 517768a..eba343f 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -62,7 +62,7 @@ { "label": "Create new release", "type": "shell", - "command": "git tag -a release-v${input:release-version} -m \"Release v${input:release-version}\"; git push origin release-v${input:release-version}; git push origin --tags", + "command": "npm install; npm run bundle; git tag -a release-v${input:release-version} -m \"Release v${input:release-version}\"; git push origin release-v${input:release-version}; git push origin --tags", "problemMatcher": ["$tsc"] } ], diff --git a/extension/extension.js.map b/extension/extension.js.map index dfa942a..ea4dbd3 100644 --- a/extension/extension.js.map +++ b/extension/extension.js.map @@ -1 +1 @@ -{"version":3,"file":"extension.js","sourceRoot":"","sources":["extension.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"extension.js","sourceRoot":"","sources":["extension.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index f4e2b81..0bf8f9a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "local-lua-debugger-vscode", - "version": "0.3.5", + "version": "0.3.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "local-lua-debugger-vscode", - "version": "0.3.5", + "version": "0.3.6", "license": "MIT", "dependencies": { "@vscode/debugadapter": "^1.64.0" From 6801bef9db82e8906db9ed4e6291fcf2e6a6ef32 Mon Sep 17 00:00:00 2001 From: Ismoh <12631485+Ismoh@users.noreply.github.com> Date: Sun, 10 Mar 2024 17:01:53 +0100 Subject: [PATCH 25/49] Add vsce installation step and fix release tag format --- .github/workflows/vsce-publish.yml | 2 ++ .vscode/tasks.json | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/vsce-publish.yml b/.github/workflows/vsce-publish.yml index ac65cdd..0786f8d 100644 --- a/.github/workflows/vsce-publish.yml +++ b/.github/workflows/vsce-publish.yml @@ -10,6 +10,8 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 + - name: Install vsce + run: npm install -g vsce - name: Install npm run: npm install - name: Publish to VSCode Marketplace diff --git a/.vscode/tasks.json b/.vscode/tasks.json index eba343f..4268e71 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -62,7 +62,7 @@ { "label": "Create new release", "type": "shell", - "command": "npm install; npm run bundle; git tag -a release-v${input:release-version} -m \"Release v${input:release-version}\"; git push origin release-v${input:release-version}; git push origin --tags", + "command": "npm install; npm run bundle; git tag -a release-v${input:release-version} -m \"release-v${input:release-version}\"; git push origin release-v${input:release-version}; git push origin --tags", "problemMatcher": ["$tsc"] } ], From 4d07d4fb0024716ca92581bb5e51fa3e8cfe5d11 Mon Sep 17 00:00:00 2001 From: Ismoh <12631485+Ismoh@users.noreply.github.com> Date: Sun, 10 Mar 2024 17:03:35 +0100 Subject: [PATCH 26/49] Update vsce installation command --- .github/workflows/vsce-publish.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/vsce-publish.yml b/.github/workflows/vsce-publish.yml index 0786f8d..c5d1ce9 100644 --- a/.github/workflows/vsce-publish.yml +++ b/.github/workflows/vsce-publish.yml @@ -11,7 +11,7 @@ jobs: - name: Checkout uses: actions/checkout@v4 - name: Install vsce - run: npm install -g vsce + run: npm install -g @vscode/vsce - name: Install npm run: npm install - name: Publish to VSCode Marketplace From 504d68ed59fc44ce15725bcf226633ca6ef1ccf8 Mon Sep 17 00:00:00 2001 From: Ismoh <12631485+Ismoh@users.noreply.github.com> Date: Sun, 10 Mar 2024 17:13:12 +0100 Subject: [PATCH 27/49] - Rename to second-local-lua-debugger-vscode - Update CHANGELOG.md --- .vscode/launch.json | 4 ++-- .vscode/tasks.json | 2 +- CHANGELOG.md | 8 ++++++++ extension/extension.js | 2 +- extension/extension.ts | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 7 files changed, 16 insertions(+), 8 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index 5fb2099..e009682 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -20,10 +20,10 @@ "request": "launch", "runtimeExecutable": "${execPath}", "args": [ - "--extensionDevelopmentPath=${workspaceFolder}/../../.vscode/extensions/ismohgames.local-lua-debugger-vscode-0.1.0" + "--extensionDevelopmentPath=${workspaceFolder}/../../.vscode/extensions/ismohgames.second-local-lua-debugger-vscode-0.3.6" ], "outFiles": [ - "${workspaceFolder}/../../.vscode/extensions/ismohgames.local-lua-debugger-vscode-0.1.0/**/*.js" + "${workspaceFolder}/../../.vscode/extensions/ismohgames.second-local-lua-debugger-vscode-0.3.6/**/*.js" ], // "preLaunchTask": "npm: watch" }, diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 4268e71..86168d4 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -62,7 +62,7 @@ { "label": "Create new release", "type": "shell", - "command": "npm install; npm run bundle; git tag -a release-v${input:release-version} -m \"release-v${input:release-version}\"; git push origin release-v${input:release-version}; git push origin --tags", + "command": "npm install; npm run bundle; git tag -a release-v${input:release-version} -m 'release-v${input:release-version}'; git push origin release-v${input:release-version}; git push origin --tags", "problemMatcher": ["$tsc"] } ], diff --git a/CHANGELOG.md b/CHANGELOG.md index 2be22bf..31f6c55 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## Version 0.3.6 + +- Add new VSCode marketplace release/publish +- Add GitHub Actions CI/CD for automatic releases, when creating a new tag +- Add VSCode task for creating a new release +- Update publisher name to `ismohgames` +- Update `local-lua-debugger-vscode` to `second-local-lua-debugger-vscode` to avoid conflicts with the original extension + ## Version 0.3.5 - Fixed `"Failed to find extension path"` diff --git a/extension/extension.js b/extension/extension.js index a9d1ba6..83a23be 100644 --- a/extension/extension.js +++ b/extension/extension.js @@ -97,7 +97,7 @@ const configurationProvider = { else { return abortLaunch("No path for debugger"); } - const extension = vscode.extensions.getExtension("ismohgames.local-lua-debugger-vscode"); + const extension = vscode.extensions.getExtension("ismohgames.second-local-lua-debugger-vscode"); if (typeof extension === "undefined") { return abortLaunch("Failed to find extension path"); } diff --git a/extension/extension.ts b/extension/extension.ts index 5b16cf6..173fe0f 100644 --- a/extension/extension.ts +++ b/extension/extension.ts @@ -97,7 +97,7 @@ const configurationProvider: vscode.DebugConfigurationProvider = { return abortLaunch("No path for debugger"); } - const extension = vscode.extensions.getExtension("ismohgames.local-lua-debugger-vscode"); + const extension = vscode.extensions.getExtension("ismohgames.second-local-lua-debugger-vscode"); if (typeof extension === "undefined") { return abortLaunch("Failed to find extension path"); } diff --git a/package-lock.json b/package-lock.json index 0bf8f9a..43b026b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "local-lua-debugger-vscode", + "name": "second-local-lua-debugger-vscode", "version": "0.3.6", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "local-lua-debugger-vscode", + "name": "second-local-lua-debugger-vscode", "version": "0.3.6", "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 47b6ba1..574dd95 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "local-lua-debugger-vscode", + "name": "second-local-lua-debugger-vscode", "publisher": "ismohgames", "version": "0.3.6", "description": "Local Lua Debugger - simple Lua debugger with no dependencies - forked from https://github.com/tomblind/local-lua-debugger-vscode", From c26a440f8b3bee786bf408b054709719fc139f80 Mon Sep 17 00:00:00 2001 From: Ismoh <12631485+Ismoh@users.noreply.github.com> Date: Sun, 10 Mar 2024 17:16:11 +0100 Subject: [PATCH 28/49] Fix `This extension display name 'Local Lua Debugger' is taken.` --- README.md | 2 +- extension/extension.js.map | 2 +- package.json | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 0b62219..86f1119 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# Local Lua Debugger for Visual Studio Code +# `Second` Local Lua Debugger for Visual Studio Code A simple Lua debugger which requires no additional dependencies. diff --git a/extension/extension.js.map b/extension/extension.js.map index ea4dbd3..34e9ea4 100644 --- a/extension/extension.js.map +++ b/extension/extension.js.map @@ -1 +1 @@ -{"version":3,"file":"extension.js","sourceRoot":"","sources":["extension.ts"],"names":[],"mappings":";AAAA,aAAa;AACb,EAAE;AACF,8BAA8B;AAC9B,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAC9E,2EAA2E;AAC3E,uEAAuE;AACvE,0DAA0D;AAC1D,EAAE;AACF,gFAAgF;AAChF,iDAAiD;AACjD,EAAE;AACF,4EAA4E;AAC5E,0EAA0E;AAC1E,6EAA6E;AAC7E,wEAAwE;AACxE,+EAA+E;AAC/E,+EAA+E;AAC/E,WAAW;;;;;;;;;;;;AAEX,iCAAiC;AACjC,2BAA2B;AAC3B,6BAA6B;AAC7B,uDAAkD;AAClD,iDAAqF;AAErF,MAAM,YAAY,GAAG,IAAI,CAAC;AAC1B,MAAM,YAAY,GAAG,WAAW,CAAC;AACjC,MAAM,kBAAkB,GAAG,GAAG,YAAY,cAAc,CAAC;AAEzD,SAAS,WAAW,CAAC,OAAe;IAChC,KAAK,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC7C,2CAA2C;IAC3C,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,qBAAqB,GAAsC;IACvD,yBAAyB,CAC3B,MAA0C,EAC1C,MAAyD,EACzD,KAAgC;;;YAEhC,iBAAiB;YACjB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;YAC9C,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,WAAW,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE;gBAC7E,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,KAAK,KAAK,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE;oBACrG,OAAO,WAAW,CAAC,kBAAkB,CAAC,CAAC;iBAC1C;gBACD,MAAM,CAAC,OAAO,GAAG,QAAQ,CAAC;gBAC1B,MAAM,CAAC,IAAI,GAAG,YAAY,CAAC;aAC9B;YAED,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,WAAW,IAAI,CAAC,IAAA,oCAAqB,EAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBACjF,MAAM,SAAS,GAA8B,MAAA,MAAM,CAAC,OAAO,mCAAI,EAAE,CAAC;gBAClE,IAAI,OAAO,SAAS,CAAC,GAAG,KAAK,WAAW,EAAE;oBACtC,MAAM,MAAM,GAAuB,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;oBAC/F,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;wBACtD,OAAO,WAAW,CACd,iBAAiB,kBAAkB,uCAAuC;8BACxE,uDAAuD,CAC5D,CAAC;qBACL;oBACD,SAAS,CAAC,GAAG,GAAG,MAAM,CAAC;iBAC1B;gBACD,IAAI,OAAO,SAAS,CAAC,IAAI,KAAK,WAAW,EAAE;oBACvC,IAAI,OAAO,MAAM,KAAK,WAAW;2BAC1B,MAAM,CAAC,QAAQ,CAAC,UAAU,KAAK,KAAK;2BACpC,MAAM,CAAC,QAAQ,CAAC,UAAU,EAC/B;wBACE,OAAO,WAAW,CAAC,uCAAuC,CAAC,CAAC;qBAC/D;oBACD,SAAS,CAAC,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;iBAC/C;gBACD,MAAM,CAAC,OAAO,GAAG,SAA6B,CAAC;aAClD;YAED,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;gBACnC,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC;gBACtE,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;oBAClC,OAAO,WAAW,CAAC,kCAAkC,SAAS,GAAG,CAAC,CAAC;iBACtE;qBAAM;oBACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAC1B,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAC7E,CAAC;oBACF,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;iBACpE;aACJ;YAED,wBAAwB;YACxB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;gBAC/B,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC;aAC5C;iBAAM,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,gBAAgB,KAAK,WAAW,EAAE;gBAC9D,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;aAC3F;iBAAM;gBACH,OAAO,WAAW,CAAC,sBAAsB,CAAC,CAAC;aAC9C;YAED,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,sCAAsC,CAAC,CAAC;YACzF,IAAI,OAAO,SAAS,KAAK,WAAW,EAAE;gBAClC,OAAO,WAAW,CAAC,+BAA+B,CAAC,CAAC;aACvD;YACD,MAAM,CAAC,aAAa,GAAG,SAAS,CAAC,aAAa,CAAC;YAE/C,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,WAAW,EAAE;gBACnC,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,aAAa,CAAC;aACrC;YAED,OAAO,MAAM,CAAC;;KACjB;CACJ,CAAC;AAEF,IAAI,8BAA4G,CAAC;AACjH,uEAAuE;AACvE,IAAI,YAAY,EAAE;IACd,IAAI,MAAM,GAAsB,IAAI,CAAC;IAErC,8BAA8B,GAAG;QAC7B,4BAA4B,CACxB,OAA4B,EAC5B,UAAqD;YAErD,IAAI,MAAM,KAAK,IAAI,EAAE;gBACjB,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;oBAC/B,MAAM,YAAY,GAAG,IAAI,iCAAe,EAAE,CAAC;oBAC3C,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;oBAClC,YAAY,CAAC,KAAK,CAAC,MAA+B,EAAE,MAAM,CAAC,CAAC;gBAChE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;aAChB;YACD,OAAO,IAAI,MAAM,CAAC,kBAAkB,CAAE,MAAM,CAAC,OAAO,EAAsB,CAAC,IAAI,CAAC,CAAC;QACrF,CAAC;QAED,OAAO;YACH,IAAI,MAAM,KAAK,IAAI,EAAE;gBACjB,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM,GAAG,IAAI,CAAC;aACjB;QACL,CAAC;KACJ,CAAC;CACL;AAED,SAAgB,QAAQ,CAAC,OAAgC;IACrD,OAAO,CAAC,aAAa,CAAC,IAAI,CACtB,MAAM,CAAC,KAAK,CAAC,kCAAkC,CAAC,YAAY,EAAE,qBAAqB,CAAC,CACvF,CAAC;IAEF,IAAI,OAAO,8BAA8B,KAAK,WAAW,EAAE;QACvD,OAAO,CAAC,aAAa,CAAC,IAAI,CACtB,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,YAAY,EAAE,8BAA8B,CAAC,CACnG,CAAC;QACF,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;KAC9D;AACL,CAAC;AAXD,4BAWC;AAED,SAAgB,UAAU;AAC1B,CAAC;AADD,gCACC"} \ No newline at end of file +{"version":3,"file":"extension.js","sourceRoot":"","sources":["extension.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 574dd95..9faf84f 100644 --- a/package.json +++ b/package.json @@ -2,8 +2,8 @@ "name": "second-local-lua-debugger-vscode", "publisher": "ismohgames", "version": "0.3.6", - "description": "Local Lua Debugger - simple Lua debugger with no dependencies - forked from https://github.com/tomblind/local-lua-debugger-vscode", - "displayName": "Local Lua Debugger", + "description": "Second Local Lua Debugger - simple Lua debugger with no dependencies - forked from https://github.com/tomblind/local-lua-debugger-vscode", + "displayName": "Second Local Lua Debugger", "icon": "resources/Lua-Logo_128x128.png", "repository": { "type": "github", @@ -57,7 +57,7 @@ "contributes": { "configuration": [ { - "title": "Local Lua Debugger", + "title": "Second Local Lua Debugger", "properties": { "lua-local.interpreter": { "type": "string", @@ -75,7 +75,7 @@ "debuggers": [ { "type": "lua-local", - "label": "Local Lua Debugger", + "label": "Second Local Lua Debugger", "program": "./extension/debugAdapter.js", "runtime": "node", "languages": [ From b165f84a68f0e0b16b82e679e2a9a941a070cb0b Mon Sep 17 00:00:00 2001 From: Ismoh <12631485+Ismoh@users.noreply.github.com> Date: Sun, 10 Mar 2024 17:29:50 +0100 Subject: [PATCH 29/49] Update publisher name to 'ismoh-games' --- .vscode/launch.json | 4 ++-- .vscode/settings.json | 2 +- CHANGELOG.md | 2 +- extension/extension.js | 2 +- extension/extension.js.map | 2 +- extension/extension.ts | 2 +- package.json | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.vscode/launch.json b/.vscode/launch.json index e009682..0bb85bd 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -20,10 +20,10 @@ "request": "launch", "runtimeExecutable": "${execPath}", "args": [ - "--extensionDevelopmentPath=${workspaceFolder}/../../.vscode/extensions/ismohgames.second-local-lua-debugger-vscode-0.3.6" + "--extensionDevelopmentPath=${workspaceFolder}/../../.vscode/extensions/ismoh-games.second-local-lua-debugger-vscode-0.3.6" ], "outFiles": [ - "${workspaceFolder}/../../.vscode/extensions/ismohgames.second-local-lua-debugger-vscode-0.3.6/**/*.js" + "${workspaceFolder}/../../.vscode/extensions/ismoh-games.second-local-lua-debugger-vscode-0.3.6/**/*.js" ], // "preLaunchTask": "npm: watch" }, diff --git a/.vscode/settings.json b/.vscode/settings.json index 0e7e1f7..91da350 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -7,7 +7,7 @@ "cSpell.words": [ "debugadapter", "debugprotocol", - "ismohgames", + "ismoh-games", "tstl" ] } diff --git a/CHANGELOG.md b/CHANGELOG.md index 31f6c55..5d53f3b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ - Add new VSCode marketplace release/publish - Add GitHub Actions CI/CD for automatic releases, when creating a new tag - Add VSCode task for creating a new release -- Update publisher name to `ismohgames` +- Update publisher name to `ismoh-games` - Update `local-lua-debugger-vscode` to `second-local-lua-debugger-vscode` to avoid conflicts with the original extension ## Version 0.3.5 diff --git a/extension/extension.js b/extension/extension.js index 83a23be..cd50873 100644 --- a/extension/extension.js +++ b/extension/extension.js @@ -97,7 +97,7 @@ const configurationProvider = { else { return abortLaunch("No path for debugger"); } - const extension = vscode.extensions.getExtension("ismohgames.second-local-lua-debugger-vscode"); + const extension = vscode.extensions.getExtension("ismoh-games.second-local-lua-debugger-vscode"); if (typeof extension === "undefined") { return abortLaunch("Failed to find extension path"); } diff --git a/extension/extension.js.map b/extension/extension.js.map index 34e9ea4..5580328 100644 --- a/extension/extension.js.map +++ b/extension/extension.js.map @@ -1 +1 @@ -{"version":3,"file":"extension.js","sourceRoot":"","sources":["extension.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"extension.js","sourceRoot":"","sources":["extension.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/extension/extension.ts b/extension/extension.ts index 173fe0f..a9d3bf2 100644 --- a/extension/extension.ts +++ b/extension/extension.ts @@ -97,7 +97,7 @@ const configurationProvider: vscode.DebugConfigurationProvider = { return abortLaunch("No path for debugger"); } - const extension = vscode.extensions.getExtension("ismohgames.second-local-lua-debugger-vscode"); + const extension = vscode.extensions.getExtension("ismoh-games.second-local-lua-debugger-vscode"); if (typeof extension === "undefined") { return abortLaunch("Failed to find extension path"); } diff --git a/package.json b/package.json index 9faf84f..d25c6c2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "second-local-lua-debugger-vscode", - "publisher": "ismohgames", + "publisher": "ismoh-games", "version": "0.3.6", "description": "Second Local Lua Debugger - simple Lua debugger with no dependencies - forked from https://github.com/tomblind/local-lua-debugger-vscode", "displayName": "Second Local Lua Debugger", From 37c63995ba8dd4e38183ae7b6aaaadf87a33713d Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Wed, 20 Mar 2024 14:29:27 +0000 Subject: [PATCH 30/49] fix: upgrade @vscode/debugadapter from 1.64.0 to 1.65.0 Snyk has created this PR to upgrade @vscode/debugadapter from 1.64.0 to 1.65.0. See this package in npm: https://www.npmjs.com/package/@vscode/debugadapter See this project in Snyk: https://app.snyk.io/org/ismoh/project/3471efa2-c570-43e7-9f4f-e160c298de38?utm_source=github&utm_medium=referral&page=upgrade-pr --- package-lock.json | 16 ++++++++-------- package.json | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 43b026b..266163d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.3.6", "license": "MIT", "dependencies": { - "@vscode/debugadapter": "^1.64.0" + "@vscode/debugadapter": "^1.65.0" }, "devDependencies": { "@types/node": "^16.4.13", @@ -378,20 +378,20 @@ } }, "node_modules/@vscode/debugadapter": { - "version": "1.64.0", - "resolved": "https://registry.npmjs.org/@vscode/debugadapter/-/debugadapter-1.64.0.tgz", - "integrity": "sha512-XygE985qmNCzJExDnam4bErK6FG9Ck8S5TRPDNESwkt7i3OXqw5a3vYb7Dteyhz9YMEf7hwhFoT46Mjc45nJUg==", + "version": "1.65.0", + "resolved": "https://registry.npmjs.org/@vscode/debugadapter/-/debugadapter-1.65.0.tgz", + "integrity": "sha512-l9jdX0GFoFVAc7O4O8iVnCjO0pgxbx+wJJXCaYSuglGtYwMNcJdc7xm96cuVx4LWzSqneIjvjzbuzZtoVZhZzQ==", "dependencies": { - "@vscode/debugprotocol": "1.64.0" + "@vscode/debugprotocol": "1.65.0" }, "engines": { "node": ">=14" } }, "node_modules/@vscode/debugprotocol": { - "version": "1.64.0", - "resolved": "https://registry.npmjs.org/@vscode/debugprotocol/-/debugprotocol-1.64.0.tgz", - "integrity": "sha512-Zhf3KvB+J04M4HPE2yCvEILGVtPixXUQMLBvx4QcAtjhc5lnwlZbbt80LCsZO2B+2BH8RMgVXk3QQ5DEzEne2Q==" + "version": "1.65.0", + "resolved": "https://registry.npmjs.org/@vscode/debugprotocol/-/debugprotocol-1.65.0.tgz", + "integrity": "sha512-ejerrPMBXzYms6Ks+Gb7cdXtdncmT0xwIKNsc0c/SxhEa0HVY5jdvLUegYE91p7CQJpCnXOD/r2CvViN8txLLA==" }, "node_modules/@vscode/vsce": { "version": "2.23.0", diff --git a/package.json b/package.json index d25c6c2..b4498ca 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "publish": "npm run bundle && vsce publish" }, "dependencies": { - "@vscode/debugadapter": "^1.64.0" + "@vscode/debugadapter": "^1.65.0" }, "devDependencies": { "@types/node": "^16.4.13", From f233464dfcee21a3de9bd9655ebdf054b3bfe0d6 Mon Sep 17 00:00:00 2001 From: Jaymo <17230296+jaymo1011@users.noreply.github.com> Date: Sat, 30 Mar 2024 15:59:07 +1030 Subject: [PATCH 31/49] fix: handle assert() correctly Fixes https://github.com/tomblind/local-lua-debugger-vscode/issues/74 by starting the trace one level deeper, skipping over `debuggerAssert` as was likely intended. --- debugger/lldebugger.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/debugger/lldebugger.lua b/debugger/lldebugger.lua index a121d39..563ff90 100644 --- a/debugger/lldebugger.lua +++ b/debugger/lldebugger.lua @@ -1843,7 +1843,7 @@ do local args = {...} if not v then local message = ((args[1] ~= nil) and args[1]) or "assertion failed" - breakForError(message, 1, true) + breakForError(message, 2, true) end return v, unpack(args) end From fbd00a086cca39271d82bb38f10d744c1e30f0f4 Mon Sep 17 00:00:00 2001 From: Ismoh <12631485+Ismoh@users.noreply.github.com> Date: Tue, 16 Apr 2024 14:19:30 +0200 Subject: [PATCH 32/49] Apply changes for new version --- .vscode/tasks.json | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 86168d4..333f6c0 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -62,7 +62,7 @@ { "label": "Create new release", "type": "shell", - "command": "npm install; npm run bundle; git tag -a release-v${input:release-version} -m 'release-v${input:release-version}'; git push origin release-v${input:release-version}; git push origin --tags", + "command": "npm install; npm run bundle; git commit git tag -a release-v${input:release-version} -m 'release-v${input:release-version}'; git push origin release-v${input:release-version}; git push origin --tags", "problemMatcher": ["$tsc"] } ], diff --git a/package.json b/package.json index d25c6c2..a0c3077 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "second-local-lua-debugger-vscode", "publisher": "ismoh-games", - "version": "0.3.6", + "version": "0.3.7", "description": "Second Local Lua Debugger - simple Lua debugger with no dependencies - forked from https://github.com/tomblind/local-lua-debugger-vscode", "displayName": "Second Local Lua Debugger", "icon": "resources/Lua-Logo_128x128.png", From de73d6f174b5d17e92c61f7ab2df63d6d388ed20 Mon Sep 17 00:00:00 2001 From: Ismoh <12631485+Ismoh@users.noreply.github.com> Date: Tue, 16 Apr 2024 14:26:26 +0200 Subject: [PATCH 33/49] Apply changes for new version --- .vscode/tasks.json | 2 +- CHANGELOG.md | 5 +++++ debugger/lldebugger.lua | 2 +- package-lock.json | 4 ++-- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 333f6c0..45ed99f 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -62,7 +62,7 @@ { "label": "Create new release", "type": "shell", - "command": "npm install; npm run bundle; git commit git tag -a release-v${input:release-version} -m 'release-v${input:release-version}'; git push origin release-v${input:release-version}; git push origin --tags", + "command": "npm install; npm run bundle; git commit -a -m 'Apply changes for new version'; git push; git tag -a release-v${input:release-version} -m 'release-v${input:release-version}'; git push origin release-v${input:release-version}; git push origin --tags", "problemMatcher": ["$tsc"] } ], diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d53f3b..b63def4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## Version 0.3.7 + +- fix: handle assert() correctly\ + Fixes [tomblind#74](https://github.com/tomblind/local-lua-debugger-vscode/issues/74) by starting the trace one level deeper, skipping over `debuggerAssert` as was likely intended. + ## Version 0.3.6 - Add new VSCode marketplace release/publish diff --git a/debugger/lldebugger.lua b/debugger/lldebugger.lua index 563ff90..a121d39 100644 --- a/debugger/lldebugger.lua +++ b/debugger/lldebugger.lua @@ -1843,7 +1843,7 @@ do local args = {...} if not v then local message = ((args[1] ~= nil) and args[1]) or "assertion failed" - breakForError(message, 2, true) + breakForError(message, 1, true) end return v, unpack(args) end diff --git a/package-lock.json b/package-lock.json index 43b026b..29c3ddf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "second-local-lua-debugger-vscode", - "version": "0.3.6", + "version": "0.3.7", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "second-local-lua-debugger-vscode", - "version": "0.3.6", + "version": "0.3.7", "license": "MIT", "dependencies": { "@vscode/debugadapter": "^1.64.0" From 3f0be788f11bac43705aa6bde766dd40207bc66b Mon Sep 17 00:00:00 2001 From: Sewbacca Date: Wed, 24 Apr 2024 02:50:11 +0200 Subject: [PATCH 34/49] fix: f233464dfcee21a3de9bd9655ebdf054b3bfe0d6 applied only to compiled `lldebugger.lua` --- debugger/debugger.ts | 2 +- debugger/lldebugger.lua | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/debugger/debugger.ts b/debugger/debugger.ts index 8707a02..eb3051d 100644 --- a/debugger/debugger.ts +++ b/debugger/debugger.ts @@ -1135,7 +1135,7 @@ export namespace Debugger { function debuggerAssert(v: unknown, ...args: unknown[]) { if (!v) { const message = args[0] !== undefined && args[0] || "assertion failed"; - breakForError(message, 1, true); + breakForError(message, 2, true); } return $multi(v, ...args); } diff --git a/debugger/lldebugger.lua b/debugger/lldebugger.lua index a121d39..563ff90 100644 --- a/debugger/lldebugger.lua +++ b/debugger/lldebugger.lua @@ -1843,7 +1843,7 @@ do local args = {...} if not v then local message = ((args[1] ~= nil) and args[1]) or "assertion failed" - breakForError(message, 1, true) + breakForError(message, 2, true) end return v, unpack(args) end From 6c6120f391f2907edf13fca231f4e4951a7a1f4f Mon Sep 17 00:00:00 2001 From: Sewbacca Date: Wed, 24 Apr 2024 01:44:06 +0200 Subject: [PATCH 35/49] tests: add new test case for breakpoints with relative paths --- tests/relativepaths/.vscode/launch.json | 16 ++++++++++++++++ tests/relativepaths/cat.lua | 8 ++++++++ tests/relativepaths/workdir/somedat.txt | 0 3 files changed, 24 insertions(+) create mode 100644 tests/relativepaths/.vscode/launch.json create mode 100644 tests/relativepaths/cat.lua create mode 100644 tests/relativepaths/workdir/somedat.txt diff --git a/tests/relativepaths/.vscode/launch.json b/tests/relativepaths/.vscode/launch.json new file mode 100644 index 0000000..3fefaa7 --- /dev/null +++ b/tests/relativepaths/.vscode/launch.json @@ -0,0 +1,16 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "type": "lua-local", + "request": "launch", + "name": "Launch", + "program": { + "command": "lua", + }, + "args": [ "../cat.lua", "somedat.txt" ], + "cwd": "${workspaceFolder}/workdir" + } + ], + "compounds": [] +} \ No newline at end of file diff --git a/tests/relativepaths/cat.lua b/tests/relativepaths/cat.lua new file mode 100644 index 0000000..1326498 --- /dev/null +++ b/tests/relativepaths/cat.lua @@ -0,0 +1,8 @@ +if os.getenv "LOCAL_LUA_DEBUGGER_VSCODE" == "1" then + local lldebugger = require "lldebugger" + lldebugger.start() +end + +local f = assert(io.open(..., "r")) + +print(f:read "*a") \ No newline at end of file diff --git a/tests/relativepaths/workdir/somedat.txt b/tests/relativepaths/workdir/somedat.txt new file mode 100644 index 0000000..e69de29 From e8063e4853454cb7a981aa4f9d3ebd39bf6b7750 Mon Sep 17 00:00:00 2001 From: Sewbacca Date: Wed, 24 Apr 2024 02:02:01 +0200 Subject: [PATCH 36/49] fix: breakpoints don't work if love2d is used with scriptRoots * fixes introduced bug https://github.com/Ismoh/local-lua-debugger-vscode/issues/9 * preserving fix for https://github.com/tomblind/local-lua-debugger-vscode/issues/62 --- debugger/debugger.ts | 32 +++++++++++++++++++++++++++++++- debugger/lldebugger.lua | 22 +++++++++++++++++++++- debugger/lldebugger.lua.map | 2 +- 3 files changed, 53 insertions(+), 3 deletions(-) diff --git a/debugger/debugger.ts b/debugger/debugger.ts index eb3051d..2fcee0f 100644 --- a/debugger/debugger.ts +++ b/debugger/debugger.ts @@ -846,7 +846,37 @@ export namespace Debugger { } function comparePaths(a: string, b: string) { - return Path.getAbsolute(a).lower() === Path.getAbsolute(b).lower(); + //If path is relative, make direct path comparision + const [isParentA] = a.match(`^%.%.[/${Path.separator}]`); + const [isParentB] = b.match(`^%.%.[/${Path.separator}]`); + if (isParentA || isParentB) + /* + NOTE: + This might not be enough, since it depends on cwd, and doesn't relate to scriptRoots. + However it seems to have fixed https://github.com/tomblind/local-lua-debugger-vscode/issues/62 + So unless another issue rolls in, this does just fine + */ + return Path.getAbsolute(a).lower() === Path.getAbsolute(b).lower(); + + let aLen = a.length; + const bLen = b.length; + if (aLen === bLen) { + return a === b; + } + //Ensure 'a' is the shorter path + if (bLen < aLen) { + [a, aLen, b] = [b, bLen, a]; + } + if (a !== b.sub(-aLen)) { + return false; + } + //If shorter string doesn't start with '/', make sure the longer one has '/' right before the substring + //so we don't match a partial filename. + if (a.sub(1, 1) === Path.separator) { + return true; + } + const bSep = -(aLen + 1); + return b.sub(bSep, bSep) === Path.separator; } const debugHookStackOffset = 2; diff --git a/debugger/lldebugger.lua b/debugger/lldebugger.lua index 563ff90..4e6517e 100644 --- a/debugger/lldebugger.lua +++ b/debugger/lldebugger.lua @@ -1583,7 +1583,27 @@ do return true end local function comparePaths(a, b) - return Path.getAbsolute(a):lower() == Path.getAbsolute(b):lower() + local isParentA = a:match(("^%.%.[/" .. Path.separator) .. "]") + local isParentB = b:match(("^%.%.[/" .. Path.separator) .. "]") + if isParentA or isParentB then + return Path.getAbsolute(a):lower() == Path.getAbsolute(b):lower() + end + local aLen = #a + local bLen = #b + if aLen == bLen then + return a == b + end + if bLen < aLen then + a, aLen, b = b, bLen, a + end + if a ~= b:sub(-aLen) then + return false + end + if a:sub(1, 1) == Path.separator then + return true + end + local bSep = -(aLen + 1) + return b:sub(bSep, bSep) == Path.separator end local debugHookStackOffset = 2 local breakpointLookup = Breakpoint.getLookup() diff --git a/debugger/lldebugger.lua.map b/debugger/lldebugger.lua.map index b1b3e6a..fe884c2 100644 --- a/debugger/lldebugger.lua.map +++ b/debugger/lldebugger.lua.map @@ -1 +1 @@ -{"version":3,"sources":["luafuncs.ts","path.ts","sourcemap.ts","breakpoint.ts","format.ts","thread.ts","send.ts","debugger.ts","lldebugger.ts"],"names":["this","self"],"mappings":"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"} \ No newline at end of file +{"version":3,"sources":["luafuncs.ts","path.ts","sourcemap.ts","breakpoint.ts","format.ts","thread.ts","send.ts","debugger.ts","lldebugger.ts"],"names":["this","self"],"mappings":"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"} \ No newline at end of file From cf5dc7e707f8fb2ccd179a255d11a406432e7b58 Mon Sep 17 00:00:00 2001 From: Sewbacca Date: Sat, 27 Apr 2024 02:01:13 +0200 Subject: [PATCH 37/49] Apply changes for new version --- CHANGELOG.md | 8 ++++++++ package-lock.json | 4 ++-- package.json | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b63def4..277752f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## Version 0.3.8 + +- fix: breakpoints don't work if love2d is used with scriptRoots + * fixes introduced bug https://github.com/Ismoh/local-lua-debugger-vscode/issues/9 + * preserving fix for https://github.com/tomblind/local-lua-debugger-vscode/issues/62 +- tests: add new test case for breakpoints with relative paths +- fix: assert-level-fix applied only to compiled `lldebugger.lua` + ## Version 0.3.7 - fix: handle assert() correctly\ diff --git a/package-lock.json b/package-lock.json index 9c45d2d..07b29d9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "second-local-lua-debugger-vscode", - "version": "0.3.7", + "version": "0.3.8", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "second-local-lua-debugger-vscode", - "version": "0.3.7", + "version": "0.3.8", "license": "MIT", "dependencies": { "@vscode/debugadapter": "^1.65.0" diff --git a/package.json b/package.json index 550052b..cf8d3e9 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "second-local-lua-debugger-vscode", "publisher": "ismoh-games", - "version": "0.3.7", + "version": "0.3.8", "description": "Second Local Lua Debugger - simple Lua debugger with no dependencies - forked from https://github.com/tomblind/local-lua-debugger-vscode", "displayName": "Second Local Lua Debugger", "icon": "resources/Lua-Logo_128x128.png", From 3c824f5971e1798cacdb249c5895f0b0cf61b21b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Mez=C3=AAncio?= Date: Sun, 2 Jun 2024 22:00:18 -0300 Subject: [PATCH 38/49] Remove files that should be in .gitignore --- debugger/lldebugger.lua | 2088 ------------------------------ debugger/lldebugger.lua.map | 1 - extension/debugAdapter.js | 26 - extension/debugAdapter.js.map | 1 - extension/debugPipe.js | 176 --- extension/debugPipe.js.map | 1 - extension/extension.js | 146 --- extension/extension.js.map | 1 - extension/launchConfig.js | 29 - extension/launchConfig.js.map | 1 - extension/luaDebugSession.js | 859 ------------ extension/luaDebugSession.js.map | 1 - extension/message.js | 79 -- extension/message.js.map | 1 - 14 files changed, 3410 deletions(-) delete mode 100644 debugger/lldebugger.lua delete mode 100644 debugger/lldebugger.lua.map delete mode 100644 extension/debugAdapter.js delete mode 100644 extension/debugAdapter.js.map delete mode 100644 extension/debugPipe.js delete mode 100644 extension/debugPipe.js.map delete mode 100644 extension/extension.js delete mode 100644 extension/extension.js.map delete mode 100644 extension/launchConfig.js delete mode 100644 extension/launchConfig.js.map delete mode 100644 extension/luaDebugSession.js delete mode 100644 extension/luaDebugSession.js.map delete mode 100644 extension/message.js delete mode 100644 extension/message.js.map diff --git a/debugger/lldebugger.lua b/debugger/lldebugger.lua deleted file mode 100644 index 4e6517e..0000000 --- a/debugger/lldebugger.lua +++ /dev/null @@ -1,2088 +0,0 @@ - -local ____modules = {} -local ____moduleCache = {} -local ____originalRequire = require -local function require(file, ...) - if ____moduleCache[file] then - return ____moduleCache[file].value - end - if ____modules[file] then - local module = ____modules[file] - ____moduleCache[file] = { value = (select("#", ...) > 0) and module(...) or module(file) } - return ____moduleCache[file].value - else - if ____originalRequire then - return ____originalRequire(file) - else - error("module '" .. file .. "' not found") - end - end -end -____modules = { -["luafuncs"] = function(...) -local ____exports = {} -if _G.unpack == nil then - _G.unpack = table.unpack -end -____exports.luaAssert = _G.assert -____exports.luaError = _G.error -____exports.luaCoroutineWrap = coroutine.wrap -____exports.luaDebugTraceback = debug.traceback -____exports.luaCoroutineCreate = coroutine.create -____exports.luaCoroutineResume = coroutine.resume -____exports.luaLenMetamethodSupported = (function() return #setmetatable( - {}, - { - __len = function() return 42 end - } -) == 42 end)() -____exports.luaRawLen = rawlen or (function(v) - if not ____exports.luaLenMetamethodSupported then - return #v - end - local mt = debug.getmetatable(v) - if (not mt) or (not rawget(mt, "__len")) then - return #v - else - local len = 1 - while rawget(v, len) do - len = len + 1 - end - return len - 1 - end -end) -function ____exports.loadLuaString(str, env) - if setfenv ~= nil then - local f, e = loadstring(str, str) - if f and env then - setfenv(f, env) - end - return f, e - else - return load(str, str, "t", env) - end -end -function ____exports.loadLuaFile(filename, env) - if setfenv ~= nil then - local f, e = loadfile(filename) - if f and env then - setfenv(f, env) - end - return f, e - else - return loadfile(filename, "t", env) - end -end -function ____exports.luaGetEnv(level, thread) - local info = (thread and debug.getinfo(thread, level, "f")) or debug.getinfo(level + 1, "f") - if (not info) or (not info.func) then - return - end - if getfenv ~= nil then - return getfenv(info.func) - else - local i = 1 - while true do - local name, value = debug.getupvalue(info.func, i) - if not name then - break - end - if name == "_ENV" then - return value - end - i = i + 1 - end - end -end -return ____exports - end, -["path"] = function(...) -local ____exports = {} -local ____luafuncs = require("luafuncs") -local luaAssert = ____luafuncs.luaAssert -____exports.Path = {} -local Path = ____exports.Path -do - Path.separator = (function() - local config = _G.package.config - if config then - local sep = config:match("^[^\n]+") - if sep then - return sep - end - end - return "/" - end)() - local cwd - function Path.getCwd() - if not cwd then - local p = io.popen(((Path.separator == "\\") and "cd") or "pwd") - if p then - local output = p:read("*a") - if output then - cwd = output:match("^%s*(.-)%s*$") - end - end - cwd = cwd or "" - end - return cwd - end - function Path.dirName(path) - local dir = path:match(((("^(.-)" .. Path.separator) .. "+[^") .. Path.separator) .. "]+$") - return dir or "." - end - function Path.splitDrive(path) - local drive, pathPart = path:match("^[@=]?([a-zA-Z]:)[\\/](.*)") - if drive then - drive = drive:upper() .. Path.separator - else - drive, pathPart = path:match("^[@=]?([\\/]*)(.*)") - end - return luaAssert(drive), luaAssert(pathPart) - end - local formattedPathCache = {} - function Path.format(path) - local formattedPath = formattedPathCache[path] - if not formattedPath then - local drive, pathOnly = Path.splitDrive(path) - local pathParts = {} - for part in luaAssert(pathOnly):gmatch("[^\\/]+") do - if part ~= "." then - if ((part == "..") and (#pathParts > 0)) and (pathParts[#pathParts] ~= "..") then - table.remove(pathParts) - else - table.insert(pathParts, part) - end - end - end - local formattedDrive = drive:gsub("[\\/]+", Path.separator) - formattedPath = formattedDrive .. table.concat(pathParts, Path.separator) - formattedPathCache[path] = formattedPath - end - return formattedPath - end - function Path.isAbsolute(path) - local drive = Path.splitDrive(path) - return #drive > 0 - end - function Path.getAbsolute(path) - if Path.isAbsolute(path) then - return Path.format(path) - end - return Path.format( - (Path.getCwd() .. Path.separator) .. path - ) - end -end -return ____exports - end, -["sourcemap"] = function(...) -local ____exports = {} -local ____luafuncs = require("luafuncs") -local luaAssert = ____luafuncs.luaAssert -local ____path = require("path") -local Path = ____path.Path -____exports.SourceMap = {} -local SourceMap = ____exports.SourceMap -do - local cache = {} - local base64Lookup = {A = 0, B = 1, C = 2, D = 3, E = 4, F = 5, G = 6, H = 7, I = 8, J = 9, K = 10, L = 11, M = 12, N = 13, O = 14, P = 15, Q = 16, R = 17, S = 18, T = 19, U = 20, V = 21, W = 22, X = 23, Y = 24, Z = 25, a = 26, b = 27, c = 28, d = 29, e = 30, f = 31, g = 32, h = 33, i = 34, j = 35, k = 36, l = 37, m = 38, n = 39, o = 40, p = 41, q = 42, r = 43, s = 44, t = 45, u = 46, v = 47, w = 48, x = 49, y = 50, z = 51, ["0"] = 52, ["1"] = 53, ["2"] = 54, ["3"] = 55, ["4"] = 56, ["5"] = 57, ["6"] = 58, ["7"] = 59, ["8"] = 60, ["9"] = 61, ["+"] = 62, ["/"] = 63, ["="] = 0} - local function base64Decode(input) - local results = {} - local bits = {} - for c in input:gmatch(".") do - local sextet = luaAssert(base64Lookup[c]) - for i = 1, 6 do - local bit = (sextet % 2) ~= 0 - table.insert(bits, i, bit) - sextet = math.floor(sextet / 2) - end - if #bits >= 8 then - local value = 0 - for i = 7, 0, -1 do - local bit = table.remove(bits) - if bit then - value = value + (2 ^ i) - end - end - table.insert( - results, - string.char(value) - ) - end - end - return table.concat(results) - end - local function decodeBase64VLQ(input) - local values = {} - local bits = {} - for c in input:gmatch(".") do - local sextet = luaAssert(base64Lookup[c]) - for _ = 1, 5 do - local bit = (sextet % 2) ~= 0 - table.insert(bits, bit) - sextet = math.floor(sextet / 2) - end - local continueBit = (sextet % 2) ~= 0 - if not continueBit then - local value = 0 - for i = 1, #bits - 1 do - if bits[i + 1] then - value = value + (2 ^ (i - 1)) - end - end - if bits[1] then - value = -value - end - table.insert(values, value) - bits = {} - end - end - return values - end - local function build(data, mapDir, luaScript) - local sources = data:match("\"sources\"%s*:%s*(%b[])") - local mappings = data:match("\"mappings\"%s*:%s*\"([^\"]+)\"") - if (not mappings) or (not sources) then - return nil - end - local sourceMap = {mappings = {}, sources = {}, sourceNames = {}, luaNames = {}, hasMappedNames = false} - local sourceRoot = data:match("\"sourceRoot\"%s*:%s*\"([^\"]+)\"") - if (sourceRoot == nil) or (#sourceRoot == 0) then - sourceRoot = "." - end - for source in sources:gmatch("\"([^\"]+)\"") do - if Path.isAbsolute(source) then - table.insert( - sourceMap.sources, - Path.format(source) - ) - else - local sourcePath = (((mapDir .. Path.separator) .. sourceRoot) .. Path.separator) .. source - table.insert( - sourceMap.sources, - Path.getAbsolute(sourcePath) - ) - end - end - local names = data:match("\"names\"%s*:%s*(%b[])") - local nameList - if names then - nameList = {} - for name in names:gmatch("\"([^\"]+)\"") do - table.insert(nameList, name) - end - end - local luaLines - local line = 1 - local column = 1 - local sourceIndex = 0 - local sourceLine = 1 - local sourceColumn = 1 - local nameIndex = 0 - for mapping, separator in mappings:gmatch("([^;,]*)([;,]?)") do - if #mapping > 0 then - local colOffset, sourceOffset, sourceLineOffset, sourceColOffset, nameOffset = unpack( - decodeBase64VLQ(mapping) - ) - column = column + (colOffset or 0) - sourceIndex = sourceIndex + (sourceOffset or 0) - sourceLine = sourceLine + (sourceLineOffset or 0) - sourceColumn = sourceColumn + (sourceColOffset or 0) - if nameList and nameOffset then - nameIndex = nameIndex + nameOffset - local sourceName = luaAssert(nameList[nameIndex + 1]) - if not luaLines then - luaLines = {} - for luaLineStr in luaScript:gmatch("([^\r\n]*)\r?\n") do - table.insert(luaLines, luaLineStr) - end - end - local luaLine = luaLines[line] - if luaLine then - local luaName = luaLine:sub(column):match("[a-zA-Z_][A-Za-z0-9_]*") - if luaName then - sourceMap.sourceNames[luaName] = sourceName - sourceMap.luaNames[sourceName] = luaName - sourceMap.hasMappedNames = true - end - end - end - local lineMapping = sourceMap.mappings[line] - if ((not lineMapping) or (sourceLine < lineMapping.sourceLine)) or ((sourceLine == lineMapping.sourceLine) and (sourceColumn < lineMapping.sourceColumn)) then - sourceMap.mappings[line] = {sourceIndex = sourceIndex, sourceLine = sourceLine, sourceColumn = sourceColumn} - end - end - if separator == ";" then - line = line + 1 - column = 1 - end - end - return sourceMap - end - local scriptRootsEnv = "LOCAL_LUA_DEBUGGER_SCRIPT_ROOTS" - local scriptRoots - local function getScriptRoots() - if not scriptRoots then - scriptRoots = {} - local scriptRootsStr = os.getenv(scriptRootsEnv) - if scriptRootsStr then - for path in scriptRootsStr:gmatch("[^;]+") do - path = Path.format(path) .. Path.separator - table.insert(scriptRoots, path) - end - end - end - return scriptRoots - end - local function getMap(filePath, file) - local data = file:read("*a") - file:close() - if not data then - return - end - local encodedMap = data:match("--# sourceMappingURL=data:application/json;base64,([A-Za-z0-9+/=]+)%s*$") - if encodedMap then - local map = base64Decode(encodedMap) - local fileDir = Path.dirName(filePath) - return build(map, fileDir, data) - end - local mapFile = io.open(filePath .. ".map") - if mapFile then - local map = mapFile:read("*a") - mapFile:close() - if not map then - return - end - local fileDir = Path.dirName(filePath) - return build(map, fileDir, data) - end - end - local function findMap(fileName) - local file = io.open(fileName) - if file then - local map = getMap(fileName, file) - if map then - return map - end - end - for ____, path in ipairs( - getScriptRoots() - ) do - local filePath = path .. fileName - file = io.open(filePath) - if file then - local map = getMap(filePath, file) - if map then - return map - end - end - end - end - function SourceMap.get(fileName) - if fileName == "[C]" then - return nil - end - local sourceMap = cache[fileName] - if sourceMap == nil then - sourceMap = findMap(fileName) or false - cache[fileName] = sourceMap - end - if sourceMap ~= false then - return sourceMap - end - end - function SourceMap.find(sourceFile) - for scriptFile, sourceMap in pairs(cache) do - if sourceMap ~= false then - for ____, source in ipairs(sourceMap.sources) do - if source == sourceFile then - return scriptFile, sourceMap - end - end - end - end - return nil, nil - end -end -return ____exports - end, -["breakpoint"] = function(...) -local ____exports = {} -local ____sourcemap = require("sourcemap") -local SourceMap = ____sourcemap.SourceMap -local ____path = require("path") -local Path = ____path.Path -____exports.Breakpoint = {} -local Breakpoint = ____exports.Breakpoint -do - local current = {} - local count = 0 - function Breakpoint.get(file, line) - file = Path.format(file) - for breakpointLine, lineBreakpoints in pairs(current) do - for ____, breakpoint in ipairs(lineBreakpoints) do - if breakpoint.sourceMap then - if (breakpoint.sourceLine == line) and (breakpoint.sourceFile == file) then - return breakpoint - end - elseif (breakpointLine == line) and (breakpoint.file == file) then - return breakpoint - end - end - end - end - function Breakpoint.getLookup() - return current - end - function Breakpoint.getAll() - local breakpointList = {} - for _, lineBreakpoints in pairs(current) do - for ____, breakpoint in ipairs(lineBreakpoints) do - table.insert(breakpointList, breakpoint) - end - end - return breakpointList - end - function Breakpoint.add(file, line, condition) - file = Path.format(file) - local sourceFile - local sourceLine - local scriptFile, sourceMap = SourceMap.find(file) - if scriptFile and sourceMap then - for scriptLine, mapping in pairs(sourceMap.mappings) do - if mapping.sourceLine == line then - sourceFile = file - file = scriptFile - sourceLine = line - line = scriptLine - break - end - end - end - local lineBreakpoints = current[line] - if not lineBreakpoints then - lineBreakpoints = {} - current[line] = lineBreakpoints - end - table.insert(lineBreakpoints, {file = file, line = line, enabled = true, condition = condition, sourceFile = sourceFile, sourceLine = sourceLine, sourceMap = sourceMap}) - count = count + 1 - end - local function removeBreakpoint(breakpointLine, lineBreakpoints, i) - table.remove(lineBreakpoints, i) - if #lineBreakpoints == 0 then - current[breakpointLine] = nil - end - count = count - 1 - end - function Breakpoint.remove(file, line) - file = Path.format(file) - for breakpointLine, lineBreakpoints in pairs(current) do - for i, breakpoint in ipairs(lineBreakpoints) do - if breakpoint.sourceMap then - if (breakpoint.sourceLine == line) and (breakpoint.sourceFile == file) then - removeBreakpoint(breakpointLine, lineBreakpoints, i) - return - end - elseif (breakpointLine == line) and (breakpoint.file == file) then - removeBreakpoint(breakpointLine, lineBreakpoints, i) - return - end - end - end - end - function Breakpoint.clear() - for line in pairs(current) do - current[line] = nil - end - count = 0 - end - function Breakpoint.getCount() - return count - end -end -return ____exports - end, -["format"] = function(...) -local ____exports = {} -local ____luafuncs = require("luafuncs") -local luaRawLen = ____luafuncs.luaRawLen -local luaAssert = ____luafuncs.luaAssert -____exports.Format = {} -local Format = ____exports.Format -do - Format.arrayTag = {} - function Format.makeExplicitArray(arr) - if arr == nil then - arr = {} - end - arr[Format.arrayTag] = true - return arr - end - local indentStr = " " - local escapes = {["\n"] = "\\n", ["\r"] = "\\r", ["\""] = "\\\"", ["\\"] = "\\\\", ["\b"] = "\\b", ["\f"] = "\\f", ["\t"] = "\\t"} - local escapesPattern = "[\n\r\"\\\b\f\t%z-]" - local function replaceEscape(char) - local byte = luaAssert( - string.byte(char) - ) - if (byte >= 0) and (byte < 32) then - return string.format("\\u%.4X", byte) - end - return luaAssert(escapes[char]) - end - local function escape(str) - local escaped = str:gsub(escapesPattern, replaceEscape) - return escaped - end - local function isArray(val) - if val[Format.arrayTag] then - return true - end - local len = luaRawLen(val) - if len == 0 then - return false - end - for k in pairs(val) do - if (type(k) ~= "number") or (k > len) then - return false - end - end - return true - end - function Format.asJson(val, indent, tables) - if indent == nil then - indent = 0 - end - tables = tables or ({}) - local valType = type(val) - if (valType == "table") and (not tables[val]) then - tables[val] = true - if isArray(val) then - local arrayVals = {} - for _, arrayVal in ipairs(val) do - local valStr = Format.asJson(arrayVal, indent + 1, tables) - table.insert( - arrayVals, - ("\n" .. indentStr:rep(indent + 1)) .. valStr - ) - end - return ((("[" .. table.concat(arrayVals, ",")) .. "\n") .. indentStr:rep(indent)) .. "]" - else - local kvps = {} - for k, v in pairs(val) do - local valStr = Format.asJson(v, indent + 1, tables) - table.insert( - kvps, - (((("\n" .. indentStr:rep(indent + 1)) .. "\"") .. escape( - tostring(k) - )) .. "\": ") .. valStr - ) - end - return ((#kvps > 0) and (((("{" .. table.concat(kvps, ",")) .. "\n") .. indentStr:rep(indent)) .. "}")) or "{}" - end - elseif (valType == "number") or (valType == "boolean") then - return tostring(val) - else - return ("\"" .. escape( - tostring(val) - )) .. "\"" - end - end -end -return ____exports - end, -["thread"] = function(...) -local ____exports = {} -____exports.mainThreadName = "main thread" -function ____exports.isThread(val) - return type(val) == "thread" -end -____exports.mainThread = (function() - local LUA_RIDX_MAINTHREAD = 1 - local registryMainThread = debug.getregistry()[LUA_RIDX_MAINTHREAD] - return (____exports.isThread(registryMainThread) and registryMainThread) or ____exports.mainThreadName -end)() -return ____exports - end, -["send"] = function(...) -local ____exports = {} -local ____luafuncs = require("luafuncs") -local luaAssert = ____luafuncs.luaAssert -local luaError = ____luafuncs.luaError -local luaLenMetamethodSupported = ____luafuncs.luaLenMetamethodSupported -local luaRawLen = ____luafuncs.luaRawLen -local ____format = require("format") -local Format = ____format.Format -local ____thread = require("thread") -local mainThread = ____thread.mainThread -local mainThreadName = ____thread.mainThreadName -____exports.Send = {} -local Send = ____exports.Send -do - local startToken = "@lldbg|" - local endToken = "|lldbg@" - local outputFileEnv = "LOCAL_LUA_DEBUGGER_OUTPUT_FILE" - local outputFilePath = os.getenv(outputFileEnv) - local outputFile - if outputFilePath and (#outputFilePath > 0) then - local file, err = io.open(outputFilePath, "w+") - if not file then - luaError( - ((("Failed to open output file \"" .. outputFilePath) .. "\": ") .. tostring(err)) .. "\n" - ) - end - outputFile = file - outputFile:setvbuf("no") - else - outputFile = io.stdout - end - local function getPrintableValue(value) - local valueType = type(value) - if valueType == "string" then - return ("\"" .. tostring(value)) .. "\"" - elseif ((valueType == "number") or (valueType == "boolean")) or (valueType == "nil") then - return tostring(value) - else - local _, str = pcall(tostring, value) - local strType = type(str) - if strType ~= "string" then - return ("[" .. strType) .. "]" - end - return ("[" .. str) .. "]" - end - end - local function isElementKey(tbl, tblLen, key) - return ((type(key) == "number") and (key >= 1)) and (key <= tblLen) - end - local function buildVariable(name, value) - local dbgVar = { - type = type(value), - name = name, - value = getPrintableValue(value) - } - if type(value) == "table" then - dbgVar.length = luaRawLen(value) - end - return dbgVar - end - local function buildVarArgs(name, values) - local valueStrs = {} - for _, val in ipairs(values) do - table.insert( - valueStrs, - getPrintableValue(val) - ) - end - return { - type = "table", - name = name, - value = table.concat(valueStrs, ", "), - length = #values - } - end - local function send(message) - outputFile:write( - (startToken .. Format.asJson(message)) .. endToken - ) - end - function Send.error(err) - local dbgError = {tag = "$luaDebug", type = "error", error = err} - send(dbgError) - end - function Send.debugBreak(message, breakType, threadId) - local dbgBreak = {tag = "$luaDebug", type = "debugBreak", message = message, breakType = breakType, threadId = threadId} - send(dbgBreak) - end - function Send.result(...) - local values = {...} - local results = Format.makeExplicitArray() - for ____, value in ipairs(values) do - table.insert( - results, - { - type = type(value), - value = getPrintableValue(value) - } - ) - end - local dbgResult = {tag = "$luaDebug", type = "result", results = results} - send(dbgResult) - end - function Send.frames(frameList) - local dbgStack = {tag = "$luaDebug", type = "stack", frames = frameList} - send(dbgStack) - end - function Send.threads(threadIds, activeThread) - local dbgThreads = {tag = "$luaDebug", type = "threads", threads = {}} - for thread, threadId in pairs(threadIds) do - if (thread == mainThread) or (coroutine.status(thread) ~= "dead") then - local dbgThread = { - name = ((thread == mainThread) and mainThreadName) or tostring(thread), - id = threadId, - active = (thread == activeThread) or nil - } - table.insert(dbgThreads.threads, dbgThread) - end - end - send(dbgThreads) - end - function Send.vars(varsObj) - local dbgVariables = { - tag = "$luaDebug", - type = "variables", - variables = Format.makeExplicitArray() - } - for name, info in pairs(varsObj) do - local dbgVar = ((name == "...") and buildVarArgs(name, info.val)) or buildVariable(name, info.val) - table.insert(dbgVariables.variables, dbgVar) - end - send(dbgVariables) - end - function Send.props(tbl, kind, first, count) - local dbgProperties = { - tag = "$luaDebug", - type = "properties", - properties = Format.makeExplicitArray() - } - if kind == "indexed" then - if first == nil then - first = 1 - end - local last = (count and ((first + count) - 1)) or ((first + luaRawLen(tbl)) - 1) - for i = first, last do - local val = tbl[i] - local name = getPrintableValue(i) - local dbgVar = buildVariable(name, val) - table.insert(dbgProperties.properties, dbgVar) - end - else - local len = luaRawLen(tbl) - for key, val in pairs(tbl) do - if (kind ~= "named") or (not isElementKey(tbl, len, key)) then - local name = getPrintableValue(key) - local dbgVar = buildVariable(name, val) - table.insert(dbgProperties.properties, dbgVar) - end - end - local meta = getmetatable(tbl) - if meta then - dbgProperties.metatable = { - type = type(meta), - value = getPrintableValue(meta) - } - end - local lenStatus, tblLen = pcall( - function() return #tbl end - ) - if not lenStatus then - dbgProperties.length = { - type = type(tblLen), - error = tblLen - } - elseif tblLen ~= 0 then - dbgProperties.length = { - type = type(tblLen), - value = tostring(tblLen) - } - else - local mt = debug.getmetatable(tbl) - if ((not mt) and (#dbgProperties.properties == 0)) or ((mt and luaLenMetamethodSupported) and mt.__len) then - dbgProperties.length = { - type = type(tblLen), - value = tostring(tblLen) - } - end - end - end - send(dbgProperties) - end - local function getUpvalues(info) - local ups = {} - if (not info.nups) or (not info.func) then - return ups - end - for index = 1, info.nups do - local name, val = debug.getupvalue(info.func, index) - ups[luaAssert(name)] = val - end - return ups - end - function Send.functionUpvalues(f) - local dbgProperties = { - tag = "$luaDebug", - type = "properties", - properties = Format.makeExplicitArray() - } - local upvalues = getUpvalues( - debug.getinfo(f, "fu") - ) - for key, val in pairs(upvalues) do - local name = getPrintableValue(key) - local dbgVar = buildVariable(name, val) - table.insert(dbgProperties.properties, dbgVar) - end - send(dbgProperties) - end - function Send.breakpoints(breaks) - local breakpointList = {} - for ____, breakpoint in ipairs(breaks) do - table.insert(breakpointList, {line = breakpoint.sourceLine or breakpoint.line, file = breakpoint.sourceFile or breakpoint.file, condition = breakpoint.condition, enabled = breakpoint.enabled}) - end - local dbgBreakpoints = { - tag = "$luaDebug", - type = "breakpoints", - breakpoints = Format.makeExplicitArray(breakpointList) - } - send(dbgBreakpoints) - end - function Send.help(...) - local helpStrs = {...} - local nameLength = 0 - for _, nameAndDesc in ipairs(helpStrs) do - nameLength = math.max(nameLength, #nameAndDesc[2]) - end - local builtStrs = {} - for _, nameAndDesc in ipairs(helpStrs) do - local name, desc = unpack(nameAndDesc) - table.insert( - builtStrs, - ((name .. string.rep(" ", (nameLength - #name) + 1)) .. ": ") .. desc - ) - end - outputFile:write( - table.concat(builtStrs, "\n") .. "\n" - ) - end -end -return ____exports - end, -["debugger"] = function(...) -local ____exports = {} -local ____luafuncs = require("luafuncs") -local luaAssert = ____luafuncs.luaAssert -local luaError = ____luafuncs.luaError -local luaCoroutineCreate = ____luafuncs.luaCoroutineCreate -local luaCoroutineWrap = ____luafuncs.luaCoroutineWrap -local luaCoroutineResume = ____luafuncs.luaCoroutineResume -local luaDebugTraceback = ____luafuncs.luaDebugTraceback -local loadLuaString = ____luafuncs.loadLuaString -local luaGetEnv = ____luafuncs.luaGetEnv -local ____path = require("path") -local Path = ____path.Path -local ____sourcemap = require("sourcemap") -local SourceMap = ____sourcemap.SourceMap -local ____send = require("send") -local Send = ____send.Send -local ____breakpoint = require("breakpoint") -local Breakpoint = ____breakpoint.Breakpoint -local ____thread = require("thread") -local mainThread = ____thread.mainThread -local mainThreadName = ____thread.mainThreadName -local isThread = ____thread.isThread -____exports.Debugger = {} -local Debugger = ____exports.Debugger -do - local debuggerName = "lldebugger.lua" - local builtinFunctionPrefix = "[builtin:" - local inputFileEnv = "LOCAL_LUA_DEBUGGER_INPUT_FILE" - local inputFilePath = os.getenv(inputFileEnv) - local inputFile - if inputFilePath and (#inputFilePath > 0) then - local file, err = io.open(inputFilePath, "r+") - if not file then - luaError( - ((("Failed to open input file \"" .. inputFilePath) .. "\": ") .. tostring(err)) .. "\n" - ) - end - inputFile = file - inputFile:setvbuf("no") - else - inputFile = io.stdin - end - local pullFileEnv = "LOCAL_LUA_DEBUGGER_PULL_FILE" - local pullFilePath = os.getenv(pullFileEnv) - local lastPullSeek = 0 - local pullFile - if pullFilePath and (#pullFilePath > 0) then - local file, err = io.open(pullFilePath, "r+") - if not file then - luaError( - ((("Failed to open pull file \"" .. pullFilePath) .. "\": ") .. tostring(err)) .. "\n" - ) - end - pullFile = file - pullFile:setvbuf("no") - local fileSize, errorSeek = pullFile:seek("end") - if not fileSize then - luaError( - ((("Failed to read pull file \"" .. pullFilePath) .. "\": ") .. tostring(errorSeek)) .. "\n" - ) - else - lastPullSeek = fileSize - end - else - pullFile = nil - end - local skipNextBreak = false - local hookStack = {} - local threadIds = setmetatable({}, {__mode = "k"}) - local threadStackOffsets = setmetatable({}, {__mode = "k"}) - local mainThreadId = 1 - threadIds[mainThread] = mainThreadId - local nextThreadId = mainThreadId + 1 - local function getThreadId(thread) - return luaAssert(threadIds[thread]) - end - local function getActiveThread() - return coroutine.running() or mainThread - end - local function getLine(info) - local currentLine = info.currentline and tonumber(info.currentline) - if currentLine and (currentLine > 0) then - return currentLine - end - local lineDefined = info.linedefined and tonumber(info.linedefined) - if lineDefined and (lineDefined > 0) then - return lineDefined - end - return -1 - end - local function backtrace(stack, frameIndex) - local frames = {} - for i = 0, #stack - 1 do - local info = luaAssert(stack[i + 1]) - local frame = { - source = (info.source and Path.format(info.source)) or "?", - line = getLine(info) - } - if info.source then - local sourceMap = SourceMap.get(frame.source) - if sourceMap then - local lineMapping = sourceMap.mappings[frame.line] - if lineMapping then - frame.mappedLocation = { - source = luaAssert(sourceMap.sources[lineMapping.sourceIndex + 1]), - line = lineMapping.sourceLine, - column = lineMapping.sourceColumn - } - end - end - end - if info.name then - frame.func = info.name - elseif info.func then - frame.func = tostring(info.func) - end - if i == frameIndex then - frame.active = true - end - table.insert(frames, frame) - end - Send.frames(frames) - end - local supportsUtf8Identifiers = (function() - local identifier = (string.char(226) .. string.char(143)) .. string.char(176) - local ____, err = loadLuaString((("local " .. identifier) .. " = true return ") .. identifier) - return err == nil - end)() - local function isValidIdentifier(name) - if supportsUtf8Identifiers then - for c in name:gmatch("[^a-zA-Z0-9_]") do - local a = c:byte() - if a and (a < 128) then - return false - end - end - return true - else - local invalidChar = name:match("[^a-zA-Z0-9_]") - return invalidChar == nil - end - end - local function getLocals(level, thread) - local locs = {vars = {}} - if thread == mainThreadName then - return locs - end - local info - if thread then - info = debug.getinfo(thread, level, "u") - else - info = debug.getinfo(level + 1, "u") - end - if not info then - return locs - end - local name - local val - local index = 1 - while true do - if thread then - name, val = debug.getlocal(thread, level, index) - else - name, val = debug.getlocal(level + 1, index) - end - if not name then - break - end - if isValidIdentifier(name) then - locs.vars[name] = { - val = val, - index = index, - type = type(val) - } - end - index = index + 1 - end - local isVarArg = info.isvararg - if isVarArg ~= false then - if isVarArg then - locs.varargs = {} - end - index = -1 - while true do - if thread then - name, val = debug.getlocal(thread, level, index) - else - name, val = debug.getlocal(level + 1, index) - end - if not name then - break - end - if not locs.varargs then - locs.varargs = {} - end - table.insert( - locs.varargs, - { - val = val, - index = index, - type = type(val) - } - ) - index = index - 1 - end - end - return locs - end - local function getUpvalues(info) - local ups = {vars = {}} - if (not info.nups) or (not info.func) then - return ups - end - for index = 1, info.nups do - local name, val = debug.getupvalue(info.func, index) - ups.vars[luaAssert(name)] = { - val = val, - index = index, - type = type(val) - } - end - return ups - end - local function populateGlobals(globs, tbl, metaStack) - metaStack[tbl] = true - local meta = debug.getmetatable(tbl) - if ((meta ~= nil) and (type(meta.__index) == "table")) and (metaStack[meta] == nil) then - populateGlobals(globs, meta.__index, metaStack) - end - for key, val in pairs(tbl) do - local name = tostring(key) - globs[name] = { - val = val, - type = type(val) - } - end - end - local function getGlobals(level, thread) - if thread == mainThreadName then - thread = nil - end - if not thread then - level = level + 1 - end - local globs = {} - local fenv = luaGetEnv(level, thread) or _G - local metaStack = {} - populateGlobals(globs, fenv, metaStack) - return globs - end - local function mapVarNames(vars, sourceMap) - if not sourceMap then - return - end - local addVars = {} - local removeVars = {} - for name, info in pairs(vars) do - local mappedName = sourceMap.sourceNames[name] - if mappedName then - addVars[mappedName] = info - table.insert(removeVars, name) - end - end - for _, name in ipairs(removeVars) do - vars[name] = nil - end - for name, info in pairs(addVars) do - vars[name] = info - end - end - local function mapExpressionNames(expression, sourceMap) - if (not sourceMap) or (not sourceMap.hasMappedNames) then - return expression - end - local function mapName(sourceName, isProperty) - if isProperty then - if not isValidIdentifier(sourceName) then - return ("[\"" .. sourceName) .. "\"]" - else - return "." .. sourceName - end - else - return luaAssert(sourceMap).luaNames[sourceName] or sourceName - end - end - local inQuote - local isEscaped = false - local nameStart - local nameIsProperty = false - local nonNameStart = 1 - local mappedExpression = "" - for i = 1, #expression do - local char = expression:sub(i, i) - if inQuote then - if char == "\\" then - isEscaped = not isEscaped - elseif (char == inQuote) and (not isEscaped) then - inQuote = nil - else - isEscaped = false - end - elseif (char == "\"") or (char == "'") then - inQuote = char - else - local nameChar = char:match("[^\"'`~!@#%%^&*%(%)%-+=%[%]{}|\\/<>,%.:;%s]") - if nameStart then - if not nameChar then - local sourceName = expression:sub(nameStart, i - 1) - mappedExpression = mappedExpression .. mapName(sourceName, nameIsProperty) - nameStart = nil - nonNameStart = i - end - elseif nameChar then - local lastChar = expression:sub(i - 1, i - 1) - nameIsProperty = lastChar == "." - nameStart = i - mappedExpression = mappedExpression .. expression:sub(nonNameStart, nameStart - ((nameIsProperty and 2) or 1)) - end - end - end - if nameStart then - local sourceName = expression:sub(nameStart) - mappedExpression = mappedExpression .. mapName(sourceName, nameIsProperty) - else - mappedExpression = mappedExpression .. expression:sub(nonNameStart) - end - return mappedExpression - end - local metatableAccessor = "lldbg_getmetatable" - local function execute(statement, level, info, thread) - if thread == mainThreadName then - return false, "unable to access main thread while running in a coroutine" - end - if not thread then - level = level + 1 - end - local locs = getLocals(level, thread) - local ups = getUpvalues(info) - local fenv = luaGetEnv(level, thread) or _G - local env = setmetatable( - {}, - { - __index = function(self, name) - if name == metatableAccessor then - return getmetatable - end - local variable = locs.vars[name] or ups.vars[name] - if variable ~= nil then - return variable.val - end - return fenv[name] - end, - __newindex = function(self, name, val) - local variable = locs.vars[name] or ups.vars[name] - if variable ~= nil then - variable.type = type(val) - variable.val = val - else - fenv[name] = val - end - end - } - ) - local loadStringResult = { - loadLuaString(statement, env) - } - local func = loadStringResult[1] - if not func then - return false, loadStringResult[2] - end - local varargs = {} - if locs.varargs then - for ____, vararg in ipairs(locs.varargs) do - table.insert(varargs, vararg.val) - end - end - local results = { - pcall( - func, - unpack(varargs) - ) - } - if results[1] then - for _, loc in pairs(locs.vars) do - if thread then - debug.setlocal(thread, level, loc.index, loc.val) - else - debug.setlocal(level, loc.index, loc.val) - end - end - for _, up in pairs(ups.vars) do - debug.setupvalue( - luaAssert(info.func), - up.index, - up.val - ) - end - return true, unpack(results, 2) - end - return false, results[2] - end - local function getInput() - local inp = inputFile:read("*l") - return inp - end - local function getStack(threadOrOffset) - local thread - local i = 1 - if isThread(threadOrOffset) then - thread = threadOrOffset - local offset = threadStackOffsets[thread] - if offset then - i = i + offset - end - else - i = i + threadOrOffset - end - local stack = {} - while true do - local stackInfo - if thread then - stackInfo = debug.getinfo(thread, i, "nSluf") - else - stackInfo = debug.getinfo(i, "nSluf") - end - if not stackInfo then - break - end - table.insert(stack, stackInfo) - i = i + 1 - end - return stack - end - local breakAtDepth = -1 - local breakInThread - local updateHook - local isDebugHookDisabled = true - local ignorePatterns - local inDebugBreak = false - local function debugBreak(activeThread, stackOffset, activeLine) - assert(not inDebugBreak) - inDebugBreak = true - stackOffset = stackOffset + 1 - local activeStack = getStack(stackOffset) - if activeLine and (#activeStack > 0) then - luaAssert(activeStack[1]).currentline = activeLine - end - local activeThreadFrameOffset = stackOffset - breakAtDepth = -1 - breakInThread = nil - local frameOffset = activeThreadFrameOffset - local frame = 0 - local currentThread = activeThread - local currentStack = activeStack - local info = luaAssert(currentStack[frame + 1]) - local source = Path.format( - luaAssert(info.source) - ) - local sourceMap = SourceMap.get(source) - while true do - local inp = getInput() - if (not inp) or (inp == "quit") then - os.exit(0) - elseif (inp == "cont") or (inp == "continue") then - break - elseif (inp == "autocont") or (inp == "autocontinue") then - updateHook() - inDebugBreak = false - return false - elseif inp == "help" then - Send.help({"help", "show available commands"}, {"cont|continue", "continue execution"}, {"autocont|autocontinue", "continue execution if not stopped at a breakpoint"}, {"quit", "stop program and debugger"}, {"step", "step to next line"}, {"stepin", "step in to current line"}, {"stepout", "step out to calling line"}, {"stack", "show current stack trace"}, {"frame n", "set active stack frame"}, {"locals", "show all local variables available in current context"}, {"ups", "show all upvalue variables available in the current context"}, {"globals", "show all global variables in current environment"}, {"props indexed [start] [count]", "show array elements of a table"}, {"props named|all", "show properties of a table"}, {"eval", "evaluate an expression in the current context"}, {"exec", "execute a statement in the current context"}, {"break set file.ext:n [cond]", "set a breakpoint"}, {"break del|delete file.ext:n", "delete a breakpoint"}, {"break en|enable file.ext:n", "enable a breakpoint"}, {"break dis|disable file.ext:n", "disable a breakpoint"}, {"break list", "show all breakpoints"}, {"break clear", "delete all breakpoints"}, {"threads", "list active thread ids"}, {"thread n", "set current thread by id"}, {"script", "add known script file (pre-caches sourcemap for breakpoint)"}, {"ignore", "add pattern for files to ignore when stepping"}) - elseif inp == "threads" then - Send.threads(threadIds, activeThread) - elseif inp:sub(1, 6) == "thread" then - local newThreadIdStr = inp:match("^thread%s+(%d+)$") - if newThreadIdStr ~= nil then - local newThreadId = luaAssert( - tonumber(newThreadIdStr) - ) - local newThread - for thread, threadId in pairs(threadIds) do - if threadId == newThreadId then - newThread = thread - break - end - end - if newThread ~= nil then - if newThread == activeThread then - currentStack = activeStack - elseif newThread == mainThreadName then - currentStack = {{name = "unable to access main thread while running in a coroutine", source = ""}} - else - currentStack = getStack(newThread) - if #currentStack == 0 then - table.insert(currentStack, {name = "thread has not been started", source = ""}) - end - end - currentThread = newThread - frame = 0 - frameOffset = ((currentThread == activeThread) and activeThreadFrameOffset) or (1 + (threadStackOffsets[currentThread] or 0)) - info = luaAssert(currentStack[frame + 1]) - source = Path.format( - luaAssert(info.source) - ) - sourceMap = SourceMap.get(source) - backtrace(currentStack, frame) - else - Send.error("Bad thread id") - end - else - Send.error("Bad thread id") - end - elseif inp == "step" then - breakAtDepth = #activeStack - breakInThread = activeThread - break - elseif inp == "stepin" then - breakAtDepth = math.huge - breakInThread = nil - break - elseif inp == "stepout" then - breakAtDepth = #activeStack - 1 - breakInThread = activeThread - break - elseif inp == "stack" then - backtrace(currentStack, frame) - elseif inp:sub(1, 5) == "frame" then - local newFrameStr = inp:match("^frame%s+(%d+)$") - if newFrameStr ~= nil then - local newFrame = luaAssert( - tonumber(newFrameStr) - ) - if (newFrame > 0) and (newFrame <= #currentStack) then - frame = newFrame - 1 - info = luaAssert(currentStack[frame + 1]) - source = Path.format( - luaAssert(info.source) - ) - sourceMap = SourceMap.get(source) - backtrace(currentStack, frame) - else - Send.error("Bad frame") - end - else - Send.error("Bad frame") - end - elseif inp == "locals" then - local locs = getLocals(frame + frameOffset, ((currentThread ~= activeThread) and currentThread) or nil) - mapVarNames(locs.vars, sourceMap) - if locs.varargs then - local varArgVals = {} - for ____, vararg in ipairs(locs.varargs) do - table.insert(varArgVals, vararg.val) - end - locs.vars["..."] = {val = varArgVals, index = -1, type = "table"} - end - Send.vars(locs.vars) - elseif inp == "ups" then - local ups = getUpvalues(info) - mapVarNames(ups.vars, sourceMap) - Send.vars(ups.vars) - elseif inp == "globals" then - local globs = getGlobals(frame + frameOffset, ((currentThread ~= activeThread) and currentThread) or nil) - mapVarNames(globs, sourceMap) - Send.vars(globs) - elseif inp:sub(1, 5) == "break" then - local cmd = inp:match("^break%s+([a-z]+)") - local file - local line - local breakpoint - if ((((((cmd == "set") or (cmd == "del")) or (cmd == "delete")) or (cmd == "dis")) or (cmd == "disable")) or (cmd == "en")) or (cmd == "enable") then - local lineStr - file, lineStr = inp:match("^break%s+[a-z]+%s+(.-):(%d+)") - if (file ~= nil) and (lineStr ~= nil) then - line = luaAssert( - tonumber(lineStr) - ) - breakpoint = Breakpoint.get(file, line) - end - end - if cmd == "set" then - if (file ~= nil) and (line ~= nil) then - local condition = inp:match("^break%s+[a-z]+%s+.-:%d+%s+(.+)") - Breakpoint.add(file, line, condition) - breakpoint = luaAssert( - Breakpoint.get(file, line) - ) - Send.breakpoints({breakpoint}) - else - Send.error("Bad breakpoint") - end - elseif (cmd == "del") or (cmd == "delete") then - if (file ~= nil) and (line ~= nil) then - Breakpoint.remove(file, line) - Send.result(nil) - else - Send.error("Bad breakpoint") - end - elseif (cmd == "dis") or (cmd == "disable") then - if breakpoint ~= nil then - breakpoint.enabled = false - Send.breakpoints({breakpoint}) - else - Send.error("Bad breakpoint") - end - elseif (cmd == "en") or (cmd == "enable") then - if breakpoint ~= nil then - breakpoint.enabled = true - Send.breakpoints({breakpoint}) - else - Send.error("Bad breakpoint") - end - elseif cmd == "clear" then - Breakpoint.clear() - Send.breakpoints( - Breakpoint.getAll() - ) - elseif cmd == "list" then - Send.breakpoints( - Breakpoint.getAll() - ) - else - Send.error("Bad breakpoint command") - end - elseif inp:sub(1, 4) == "eval" then - local expression = inp:match("^eval%s+(.+)$") - if not expression then - Send.error("Bad expression") - else - local mappedExpression = mapExpressionNames(expression, sourceMap) - local results = { - execute("return " .. mappedExpression, frame + frameOffset, info, ((currentThread ~= activeThread) and currentThread) or nil) - } - if results[1] then - Send.result( - unpack(results, 2) - ) - else - Send.error(results[2]) - end - end - elseif inp:sub(1, 5) == "props" then - local expression, kind, first, count = inp:match("^props%s+(.-)%s*([a-z]+)%s*(%d*)%s*(%d*)$") - if not expression then - Send.error("Bad expression") - elseif ((kind ~= "all") and (kind ~= "named")) and (kind ~= "indexed") then - Send.error( - "Bad kind: " .. (("'" .. tostring(kind)) .. "'") - ) - else - local mappedExpression = mapExpressionNames(expression, sourceMap) - local s, r = execute("return " .. mappedExpression, frame + frameOffset, info, ((currentThread ~= activeThread) and currentThread) or nil) - if s then - if type(r) == "table" then - Send.props( - r, - kind, - tonumber(first), - tonumber(count) - ) - elseif type(r) == "function" then - Send.functionUpvalues(r) - else - Send.error(("Expression \"" .. mappedExpression) .. "\" is not a table nor a function") - end - else - Send.error(r) - end - end - elseif inp:sub(1, 4) == "exec" then - local statement = inp:match("^exec%s+(.+)$") - if not statement then - Send.error("Bad statement") - else - local results = { - execute(statement, frame + frameOffset, info, ((currentThread ~= activeThread) and currentThread) or nil) - } - if results[1] then - Send.result( - unpack(results, 2) - ) - else - Send.error(results[2]) - end - end - elseif inp:sub(1, 6) == "script" then - local scriptFile = inp:match("^script%s+(.+)$") - if not scriptFile then - Send.error("Bad script file") - else - scriptFile = Path.format(scriptFile) - local foundSourceMap = SourceMap.get(scriptFile) - if foundSourceMap then - Send.result(("added " .. scriptFile) .. ": source map found") - else - Send.result(("added " .. scriptFile) .. ": source map NOT found!") - end - end - elseif inp:sub(1, 6) == "ignore" then - local ignorePattern = inp:match("^ignore%s+(.+)$") - if not ignorePattern then - Send.error("Bad ignore pattern") - else - local match, err = pcall(string.match, "", ignorePattern) - if not match then - Send.error( - (("Bad ignore pattern \"" .. ignorePattern) .. "\": ") .. tostring(err) - ) - else - if not ignorePatterns then - ignorePatterns = {} - end - table.insert(ignorePatterns, ignorePattern) - Send.result(("Added ignore pattern \"" .. ignorePattern) .. "\"") - end - end - else - Send.error("Bad command") - end - end - updateHook() - inDebugBreak = false - return true - end - local function comparePaths(a, b) - local isParentA = a:match(("^%.%.[/" .. Path.separator) .. "]") - local isParentB = b:match(("^%.%.[/" .. Path.separator) .. "]") - if isParentA or isParentB then - return Path.getAbsolute(a):lower() == Path.getAbsolute(b):lower() - end - local aLen = #a - local bLen = #b - if aLen == bLen then - return a == b - end - if bLen < aLen then - a, aLen, b = b, bLen, a - end - if a ~= b:sub(-aLen) then - return false - end - if a:sub(1, 1) == Path.separator then - return true - end - local bSep = -(aLen + 1) - return b:sub(bSep, bSep) == Path.separator - end - local debugHookStackOffset = 2 - local breakpointLookup = Breakpoint.getLookup() - local stepUnmappedLinesEnv = "LOCAL_LUA_DEBUGGER_STEP_UNMAPPED_LINES" - local skipUnmappedLines = os.getenv(stepUnmappedLinesEnv) ~= "1" - local function debugHook(event, line) - if isDebugHookDisabled then - return - end - if breakAtDepth >= 0 then - local activeThread = getActiveThread() - local stepBreak - if breakInThread == nil then - stepBreak = true - elseif activeThread == breakInThread then - stepBreak = #getStack(debugHookStackOffset) <= breakAtDepth - else - stepBreak = (breakInThread ~= mainThread) and (coroutine.status(breakInThread) == "dead") - end - if stepBreak then - local topFrameSource = debug.getinfo(debugHookStackOffset, "S") - if (not topFrameSource) or (not topFrameSource.source) then - return - end - if topFrameSource.source:sub(-#debuggerName) == debuggerName then - return - end - if topFrameSource.short_src and (topFrameSource.short_src:sub(1, #builtinFunctionPrefix) == builtinFunctionPrefix) then - return - end - local source - if ignorePatterns then - source = Path.format(topFrameSource.source) - for ____, pattern in ipairs(ignorePatterns) do - local match = source:match(pattern) - if match then - return - end - end - end - if skipUnmappedLines then - if not source then - source = Path.format(topFrameSource.source) - end - local sourceMap = SourceMap.get(source) - if sourceMap and (not sourceMap.mappings[line]) then - return - end - end - Send.debugBreak( - "step", - "step", - getThreadId(activeThread) - ) - if debugBreak(activeThread, debugHookStackOffset, line) then - return - end - end - end - local lineBreakpoints = breakpointLookup[line] - if not lineBreakpoints then - return - end - local topFrame = debug.getinfo(debugHookStackOffset, "S") - if (not topFrame) or (not topFrame.source) then - return - end - local source = Path.format(topFrame.source) - topFrame = nil - for ____, breakpoint in ipairs(lineBreakpoints) do - if breakpoint.enabled and comparePaths(breakpoint.file, source) then - if breakpoint.condition then - local mappedCondition = mapExpressionNames(breakpoint.condition, breakpoint.sourceMap) - local condition = "return " .. mappedCondition - topFrame = topFrame or luaAssert( - debug.getinfo(debugHookStackOffset, "nSluf") - ) - local success, result = execute(condition, debugHookStackOffset, topFrame) - if success and result then - local activeThread = getActiveThread() - local conditionDisplay = ((("\"" .. breakpoint.condition) .. "\" = \"") .. tostring(result)) .. "\"" - local breakpointFile, breakpointLine = breakpoint.sourceFile or breakpoint.file, breakpoint.sourceLine or breakpoint.line - Send.debugBreak( - (((("breakpoint hit: \"" .. breakpointFile) .. ":") .. tostring(breakpointLine)) .. "\", ") .. conditionDisplay, - "breakpoint", - getThreadId(activeThread) - ) - debugBreak(activeThread, debugHookStackOffset, line) - break - end - else - local activeThread = getActiveThread() - local breakpointFile, breakpointLine = breakpoint.sourceFile or breakpoint.file, breakpoint.sourceLine or breakpoint.line - Send.debugBreak( - ((("breakpoint hit: \"" .. breakpointFile) .. ":") .. tostring(breakpointLine)) .. "\"", - "breakpoint", - getThreadId(activeThread) - ) - debugBreak(activeThread, debugHookStackOffset, line) - break - end - end - end - end - local function mapSource(indent, file, lineStr, remainder) - file = Path.format(file) - local sourceMap = SourceMap.get(file) - if sourceMap then - local line = luaAssert( - tonumber(lineStr) - ) - local lineMapping = sourceMap.mappings[line] - if lineMapping then - local sourceFile = sourceMap.sources[lineMapping.sourceIndex + 1] - local sourceLine = lineMapping.sourceLine - local sourceColumn = lineMapping.sourceColumn - return ((((((indent .. tostring(sourceFile)) .. ":") .. tostring(sourceLine)) .. ":") .. tostring(sourceColumn)) .. ":") .. remainder - end - end - return ((((indent .. file) .. ":") .. lineStr) .. ":") .. remainder - end - local function mapSources(str) - str = str:gsub("(%s*)([^\r\n]+):(%d+):([^\r\n]+)", mapSource) - return str - end - local function breakForError(err, level, propagate) - local message = mapSources( - tostring(err) - ) - level = (level or 1) + 1 - if skipNextBreak then - skipNextBreak = false - elseif not inDebugBreak then - local thread = getActiveThread() - Send.debugBreak( - message, - "error", - getThreadId(thread) - ) - debugBreak(thread, level) - end - if propagate then - skipNextBreak = true - luaError(message, level) - end - end - local function registerThread(thread) - assert(not threadIds[thread]) - local threadId = nextThreadId - nextThreadId = nextThreadId + 1 - threadIds[thread] = threadId - local hook = debug.gethook() - if hook == debugHook then - debug.sethook(thread, debugHook, "l") - end - return threadId - end - local canYieldAcrossPcall - local function useXpcallInCoroutine() - if canYieldAcrossPcall == nil then - local _, yieldResult = luaCoroutineResume( - luaCoroutineCreate( - function() return pcall( - function() return coroutine.yield(true) end - ) end - ) - ) - canYieldAcrossPcall = yieldResult == true - end - return canYieldAcrossPcall - end - local function debuggerCoroutineCreate(f, allowBreak) - if allowBreak and useXpcallInCoroutine() then - local originalFunc = f - local function debugFunc(...) - local args = {...} - local function wrappedFunc() - return originalFunc( - unpack(args) - ) - end - local results = { - xpcall(wrappedFunc, breakForError) - } - if results[1] then - return unpack(results, 2) - else - skipNextBreak = true - local message = mapSources( - tostring(results[2]) - ) - return luaError(message, 2) - end - end - f = debugFunc - end - local thread = luaCoroutineCreate(f) - registerThread(thread) - return thread - end - local function debuggerCoroutineResume(thread, ...) - local activeThread = getActiveThread() - threadStackOffsets[activeThread] = 1 - local results = { - luaCoroutineResume(thread, ...) - } - if not results[1] then - breakForError(results[2], 2) - end - threadStackOffsets[activeThread] = nil - return unpack(results) - end - local function debuggerCoroutineWrap(f) - local thread = debuggerCoroutineCreate(f, true) - local function resumer(...) - local activeThread = getActiveThread() - threadStackOffsets[activeThread] = 1 - local results = { - luaCoroutineResume(thread, ...) - } - if not results[1] then - breakForError(results[2], 2, true) - end - threadStackOffsets[activeThread] = nil - return unpack(results, 2) - end - return resumer - end - local function debuggerTraceback(threadOrMessage, messageOrLevel, level) - local trace - if isThread(threadOrMessage) then - trace = luaDebugTraceback(threadOrMessage, messageOrLevel or "", (level or 1) + 1) - else - trace = luaDebugTraceback(threadOrMessage or "", (messageOrLevel or 1) + 1) - end - trace = mapSources(trace) - if skipNextBreak then - skipNextBreak = false - elseif hookStack[#hookStack] == "global" then - local info = debug.getinfo(2, "S") - if info and (info.what == "C") then - local thread = (isThread(threadOrMessage) and threadOrMessage) or getActiveThread() - Send.debugBreak( - trace, - "error", - getThreadId(thread) - ) - debugBreak(thread, 3) - end - end - return trace - end - local function debuggerError(message, level) - breakForError(message, (level or 1) + 1, true) - end - local function debuggerAssert(v, ...) - local args = {...} - if not v then - local message = ((args[1] ~= nil) and args[1]) or "assertion failed" - breakForError(message, 2, true) - end - return v, unpack(args) - end - local function setErrorHandler() - local hookType = hookStack[#hookStack] - if hookType ~= nil then - _G.error = debuggerError - _G.assert = debuggerAssert - debug.traceback = debuggerTraceback - else - _G.error = luaError - _G.assert = luaAssert - debug.traceback = luaDebugTraceback - end - end - updateHook = function() - isDebugHookDisabled = (breakAtDepth < 0) and (Breakpoint.getCount() == 0) - if isDebugHookDisabled and ((_G.jit == nil) or (pullFile == nil)) then - debug.sethook() - for thread in pairs(threadIds) do - if isThread(thread) and (coroutine.status(thread) ~= "dead") then - debug.sethook(thread) - end - end - else - debug.sethook(debugHook, "l") - for thread in pairs(threadIds) do - if isThread(thread) and (coroutine.status(thread) ~= "dead") then - debug.sethook(thread, debugHook, "l") - end - end - end - debug.setmetatable( - function() - end, - { - __index = function(self, key) - local info = debug.getinfo(self, "fu") - if not info then - return nil - end - local val = getUpvalues(info).vars[key] - if not val then - return nil - end - return val.val - end - } - ) - end - function Debugger.clearHook() - while #hookStack > 0 do - table.remove(hookStack) - end - setErrorHandler() - coroutine.create = luaCoroutineCreate - coroutine.wrap = luaCoroutineWrap - coroutine.resume = luaCoroutineResume - isDebugHookDisabled = true - debug.sethook() - for thread in pairs(threadIds) do - if isThread(thread) and (coroutine.status(thread) ~= "dead") then - debug.sethook(thread) - end - end - debug.setmetatable( - function() - end, - nil - ) - end - local breakInCoroutinesEnv = "LOCAL_LUA_DEBUGGER_BREAK_IN_COROUTINES" - local breakInCoroutines = os.getenv(breakInCoroutinesEnv) == "1" - function Debugger.pushHook(hookType) - table.insert(hookStack, hookType) - setErrorHandler() - if #hookStack > 1 then - return - end - coroutine.create = function(f) return debuggerCoroutineCreate(f, breakInCoroutines) end - coroutine.wrap = debuggerCoroutineWrap - coroutine.resume = (breakInCoroutines and debuggerCoroutineResume) or luaCoroutineResume - local currentThread = coroutine.running() - if currentThread and (not threadIds[currentThread]) then - registerThread(currentThread) - end - updateHook() - end - function Debugger.popHook() - table.remove(hookStack) - if #hookStack == 0 then - Debugger.clearHook() - else - setErrorHandler() - updateHook() - end - end - function Debugger.triggerBreak() - breakAtDepth = math.huge - updateHook() - end - function Debugger.debugGlobal(breakImmediately) - Debugger.pushHook("global") - if breakImmediately then - Debugger.triggerBreak() - end - end - function Debugger.debugFunction(func, breakImmediately, args) - Debugger.pushHook("function") - if breakImmediately then - Debugger.triggerBreak() - end - local results = { - xpcall( - function() return func( - unpack(args) - ) end, - breakForError - ) - } - Debugger.popHook() - if results[1] then - return unpack(results, 2) - else - skipNextBreak = true - local message = mapSources( - tostring(results[2]) - ) - return luaError(message, 2) - end - end - function Debugger.pullBreakpoints() - if pullFile then - local newPullSeek = pullFile:seek("end") - if newPullSeek > lastPullSeek then - lastPullSeek = newPullSeek - Debugger.triggerBreak() - end - end - end -end -return ____exports - end, -["lldebugger"] = function(...) -local ____exports = {} -local ____luafuncs = require("luafuncs") -local luaAssert = ____luafuncs.luaAssert -local loadLuaFile = ____luafuncs.loadLuaFile -local ____debugger = require("debugger") -local Debugger = ____debugger.Debugger -_G.lldebugger = _G.lldebugger or ____exports -if io.stdout then - io.stdout:setvbuf("no") -end -if io.stderr then - io.stderr:setvbuf("no") -end -function ____exports.start(breakImmediately) - if breakImmediately == nil then - breakImmediately = os.getenv("LOCAL_LUA_DEBUGGER_VSCODE") == "1" - end - Debugger.debugGlobal(breakImmediately) -end -function ____exports.finish() - Debugger.popHook() -end -function ____exports.stop() - Debugger.clearHook() -end -function ____exports.pullBreakpoints() - Debugger.pullBreakpoints() -end -function ____exports.runFile(filePath, breakImmediately, arg) - if type(filePath) ~= "string" then - error( - ("expected string as first argument to runFile, but got '" .. type(filePath)) .. "'", - 0 - ) - end - if (breakImmediately ~= nil) and (type(breakImmediately) ~= "boolean") then - error( - ("expected boolean as second argument to runFile, but got '" .. type(breakImmediately)) .. "'", - 0 - ) - end - local env = setmetatable( - {arg = arg}, - { - __index = _G, - __newindex = function(____self, key, value) - _G[key] = value - end - } - ) - local func = luaAssert( - loadLuaFile(filePath, env) - ) - return Debugger.debugFunction(func, breakImmediately, arg or ({})) -end -function ____exports.call(func, breakImmediately, ...) - local args = {...} - if type(func) ~= "function" then - error( - ("expected string as first argument to debugFile, but got '" .. type(func)) .. "'", - 0 - ) - end - if (breakImmediately ~= nil) and (type(breakImmediately) ~= "boolean") then - error( - ("expected boolean as second argument to debugFunction, but got '" .. type(breakImmediately)) .. "'", - 0 - ) - end - return Debugger.debugFunction(func, breakImmediately, args) -end -function ____exports.requestBreak() - Debugger.triggerBreak() -end -return ____exports - end, -} -return require("lldebugger", ...) diff --git a/debugger/lldebugger.lua.map b/debugger/lldebugger.lua.map deleted file mode 100644 index fe884c2..0000000 --- a/debugger/lldebugger.lua.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["luafuncs.ts","path.ts","sourcemap.ts","breakpoint.ts","format.ts","thread.ts","send.ts","debugger.ts","lldebugger.ts"],"names":["this","self"],"mappings":"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"} \ No newline at end of file diff --git a/extension/debugAdapter.js b/extension/debugAdapter.js deleted file mode 100644 index 2f05d07..0000000 --- a/extension/debugAdapter.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; -//MIT License -// -//Copyright (c) 2020 Tom Blind -// -//Permission is hereby granted, free of charge, to any person obtaining a copy -//of this software and associated documentation files (the "Software"), to deal -//in the Software without restriction, including without limitation the rights -//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -//copies of the Software, and to permit persons to whom the Software is -//furnished to do so, subject to the following conditions: -// -//The above copyright notice and this permission notice shall be included in all -//copies or substantial portions of the Software. -// -//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -//SOFTWARE. -Object.defineProperty(exports, "__esModule", { value: true }); -const luaDebugSession_1 = require("./luaDebugSession"); -luaDebugSession_1.LuaDebugSession.run(luaDebugSession_1.LuaDebugSession); -//# sourceMappingURL=debugAdapter.js.map \ No newline at end of file diff --git a/extension/debugAdapter.js.map b/extension/debugAdapter.js.map deleted file mode 100644 index 09f5595..0000000 --- a/extension/debugAdapter.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"debugAdapter.js","sourceRoot":"","sources":["debugAdapter.ts"],"names":[],"mappings":";AAAA,aAAa;AACb,EAAE;AACF,8BAA8B;AAC9B,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAC9E,2EAA2E;AAC3E,uEAAuE;AACvE,0DAA0D;AAC1D,EAAE;AACF,gFAAgF;AAChF,iDAAiD;AACjD,EAAE;AACF,4EAA4E;AAC5E,0EAA0E;AAC1E,6EAA6E;AAC7E,wEAAwE;AACxE,+EAA+E;AAC/E,+EAA+E;AAC/E,WAAW;;AAEX,uDAAkD;AAElD,iCAAe,CAAC,GAAG,CAAC,iCAAe,CAAC,CAAC"} \ No newline at end of file diff --git a/extension/debugPipe.js b/extension/debugPipe.js deleted file mode 100644 index d3aaeae..0000000 --- a/extension/debugPipe.js +++ /dev/null @@ -1,176 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.createFifoPipe = exports.createNamedPipe = void 0; -const crypto = require("crypto"); -const net = require("net"); -const childProcess = require("child_process"); -const fs = require("fs"); -const os = require("os"); -const path = require("path"); -function createNamedPipe() { - const pipeId = crypto.randomBytes(16).toString("hex"); - const outputPipePath = `\\\\.\\pipe\\lldbg_out_${pipeId}`; - const inputPipePath = `\\\\.\\pipe\\lldbg_in_${pipeId}`; - const pullPipePath = `\\\\.\\pipe\\lldbg_pull_${pipeId}`; - let outputPipe = null; - let inputPipe = null; - let pullPipe = null; - let inputStream; - let pullStream; - let onErrorCallback = null; - return { - open: (onData, onError) => { - onErrorCallback = onError; - outputPipe = net.createServer(stream => { - stream.on("data", onData); - stream.on("error", err => onError(`error on output pipe: ${err}`)); - }); - outputPipe.listen(outputPipePath); - inputPipe = net.createServer(stream => { - stream.on("error", err => onError(`error on input pipe: ${err}`)); - inputStream = stream; - }); - inputPipe.listen(inputPipePath); - }, - openPull: (onError) => { - if (!onErrorCallback) { - onErrorCallback = onError; - } - pullPipe = net.createServer(stream => { - stream.on("error", err => { - onError(`error on pull pipe: ${err}`); - }); - pullStream = stream; - }); - pullPipe.listen(pullPipePath); - }, - close: () => { - outputPipe === null || outputPipe === void 0 ? void 0 : outputPipe.close(); - outputPipe = null; - inputPipe === null || inputPipe === void 0 ? void 0 : inputPipe.close(); - inputPipe = null; - inputStream = null; - pullPipe = null; - pullStream = null; - }, - write: data => { - inputStream === null || inputStream === void 0 ? void 0 : inputStream.write(data); - }, - requestPull: () => { - pullStream === null || pullStream === void 0 ? void 0 : pullStream.write("pull|\n"); - }, - getOutputPipePath: () => outputPipePath, - getInputPipePath: () => inputPipePath, - getPullPipePath: () => pullPipePath, - }; -} -exports.createNamedPipe = createNamedPipe; -function createFifoPipe() { - const pipeId = crypto.randomBytes(16).toString("hex"); - const outputPipePath = `/tmp/lldbg_out_${pipeId}`; - const inputPipePath = `/tmp/lldbg_in_${pipeId}`; - let pullPipePath = ""; - let debuggerTmpDir = ""; - let outputFd = null; - let inputFd = null; - let pullFd = null; - let inputStream = null; - let pullStream = null; - let onErrorCallback = null; - return { - open: (onData, onError) => { - onErrorCallback = onError; - childProcess.exec(`mkfifo ${outputPipePath}`, fifoErr => { - if (fifoErr) { - onError(`error executing mkfifo for output pipe: ${fifoErr}`); - return; - } - fs.open(outputPipePath, fs.constants.O_RDWR, (fdErr, fd) => { - if (fdErr) { - onError(`error opening fifo for output pipe: ${fdErr}`); - return; - } - outputFd = fd; - const outputStream = fs.createReadStream(null, { fd }); - outputStream.on("data", onData); - }); - }); - childProcess.exec(`mkfifo ${inputPipePath}`, fifoErr => { - if (fifoErr) { - onError(`error executing mkfifo for input pipe: ${fifoErr}`); - return; - } - fs.open(inputPipePath, fs.constants.O_RDWR, (fdErr, fd) => { - if (fdErr) { - onError(`error opening fifo for input pipe: ${fdErr}`); - return; - } - inputFd = fd; - inputStream = fs.createWriteStream(null, { fd }); - }); - }); - }, - openPull: (onError) => { - if (!onErrorCallback) { - onErrorCallback = onError; - } - const appPrefix = "lldebugger"; - try { - debuggerTmpDir = fs.mkdtempSync(path.join(os.tmpdir(), appPrefix)); - pullPipePath = path.join(debuggerTmpDir, "pull.txt"); - const fd = fs.openSync(pullPipePath, fs.constants.O_WRONLY | fs.constants.O_CREAT); - pullFd = fd; - pullStream = fs.createWriteStream(null, { fd }); - } - catch (e) { - onErrorCallback(e); - } - }, - close: () => { - if (outputFd !== null) { - fs.close(outputFd); - outputFd = null; - fs.rm(outputPipePath, err => { - if (err) { - onErrorCallback === null || onErrorCallback === void 0 ? void 0 : onErrorCallback(`error removing fifo for output pipe: ${err}`); - } - }); - } - if (inputFd !== null) { - fs.close(inputFd); - inputFd = null; - fs.rm(inputPipePath, err => { - if (err) { - onErrorCallback === null || onErrorCallback === void 0 ? void 0 : onErrorCallback(`error removing fifo for input pipe: ${err}`); - } - }); - } - inputStream = null; - try { - if (pullFd !== null) { - fs.close(pullFd); - fs.rmSync(pullPipePath); - pullFd = null; - } - pullStream = null; - if (debuggerTmpDir.length > 0) { - fs.rmdirSync(debuggerTmpDir); - } - } - catch (e) { - onErrorCallback === null || onErrorCallback === void 0 ? void 0 : onErrorCallback(e); - } - }, - write: data => { - inputStream === null || inputStream === void 0 ? void 0 : inputStream.write(data); - }, - requestPull: () => { - pullStream === null || pullStream === void 0 ? void 0 : pullStream.write("pull|\n"); - }, - getOutputPipePath: () => outputPipePath, - getInputPipePath: () => inputPipePath, - getPullPipePath: () => pullPipePath, - }; -} -exports.createFifoPipe = createFifoPipe; -//# sourceMappingURL=debugPipe.js.map \ No newline at end of file diff --git a/extension/debugPipe.js.map b/extension/debugPipe.js.map deleted file mode 100644 index a07c25a..0000000 --- a/extension/debugPipe.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"debugPipe.js","sourceRoot":"","sources":["debugPipe.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/extension/extension.js b/extension/extension.js deleted file mode 100644 index cd50873..0000000 --- a/extension/extension.js +++ /dev/null @@ -1,146 +0,0 @@ -"use strict"; -//MIT License -// -//Copyright (c) 2020 Tom Blind -// -//Permission is hereby granted, free of charge, to any person obtaining a copy -//of this software and associated documentation files (the "Software"), to deal -//in the Software without restriction, including without limitation the rights -//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -//copies of the Software, and to permit persons to whom the Software is -//furnished to do so, subject to the following conditions: -// -//The above copyright notice and this permission notice shall be included in all -//copies or substantial portions of the Software. -// -//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -//SOFTWARE. -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.deactivate = exports.activate = void 0; -const vscode = require("vscode"); -const Net = require("net"); -const path = require("path"); -const luaDebugSession_1 = require("./luaDebugSession"); -const launchConfig_1 = require("./launchConfig"); -const enableServer = true; -const debuggerType = "lua-local"; -const interpreterSetting = `${debuggerType}.interpreter`; -function abortLaunch(message) { - void vscode.window.showErrorMessage(message); - // tslint:disable-next-line:no-null-keyword - return null; -} -const configurationProvider = { - resolveDebugConfiguration(folder, config, token) { - var _a; - return __awaiter(this, void 0, void 0, function* () { - //Validate config - const editor = vscode.window.activeTextEditor; - if (typeof config.request === "undefined" || typeof config.type === "undefined") { - if (typeof editor === "undefined" || editor.document.languageId !== "lua" || editor.document.isUntitled) { - return abortLaunch("Nothing to debug"); - } - config.request = "launch"; - config.type = debuggerType; - } - if (typeof config.program === "undefined" || !(0, launchConfig_1.isCustomProgramConfig)(config.program)) { - const luaConfig = (_a = config.program) !== null && _a !== void 0 ? _a : {}; - if (typeof luaConfig.lua === "undefined") { - const luaBin = vscode.workspace.getConfiguration().get(interpreterSetting); - if (typeof luaBin === "undefined" || luaBin.length === 0) { - return abortLaunch(`You must set "${interpreterSetting}" in your settings, or "program.lua" ` - + "in your launch.json, to debug with a lua interpreter."); - } - luaConfig.lua = luaBin; - } - if (typeof luaConfig.file === "undefined") { - if (typeof editor === "undefined" - || editor.document.languageId !== "lua" - || editor.document.isUntitled) { - return abortLaunch("'program.file' not set in launch.json"); - } - luaConfig.file = editor.document.uri.fsPath; - } - config.program = luaConfig; - } - if (Array.isArray(config.scriptFiles)) { - const nonString = config.scriptFiles.find(p => typeof p !== "string"); - if (typeof nonString !== "undefined") { - return abortLaunch(`invalid value in scriptFiles: "${nonString}"`); - } - else { - const uris = yield Promise.all(config.scriptFiles.map(p => vscode.workspace.findFiles(path.normalize(p)))); - config.scriptFiles = uris.flatMap(u => u.map(uri => uri.fsPath)); - } - } - //Pass paths to debugger - if (typeof folder !== "undefined") { - config.workspacePath = folder.uri.fsPath; - } - else if (typeof vscode.window.activeTextEditor !== "undefined") { - config.workspacePath = path.dirname(vscode.window.activeTextEditor.document.uri.fsPath); - } - else { - return abortLaunch("No path for debugger"); - } - const extension = vscode.extensions.getExtension("ismoh-games.second-local-lua-debugger-vscode"); - if (typeof extension === "undefined") { - return abortLaunch("Failed to find extension path"); - } - config.extensionPath = extension.extensionPath; - if (typeof config.cwd === "undefined") { - config.cwd = config.workspacePath; - } - return config; - }); - } -}; -let debugAdapaterDescriptorFactory; -// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -if (enableServer) { - let server = null; - debugAdapaterDescriptorFactory = { - createDebugAdapterDescriptor(session, executable) { - if (server === null) { - server = Net.createServer(socket => { - const debugSession = new luaDebugSession_1.LuaDebugSession(); - debugSession.setRunAsServer(true); - debugSession.start(socket, socket); - }).listen(0); - } - return new vscode.DebugAdapterServer(server.address().port); - }, - dispose() { - if (server !== null) { - server.close(); - server = null; - } - } - }; -} -function activate(context) { - context.subscriptions.push(vscode.debug.registerDebugConfigurationProvider(debuggerType, configurationProvider)); - if (typeof debugAdapaterDescriptorFactory !== "undefined") { - context.subscriptions.push(vscode.debug.registerDebugAdapterDescriptorFactory(debuggerType, debugAdapaterDescriptorFactory)); - context.subscriptions.push(debugAdapaterDescriptorFactory); - } -} -exports.activate = activate; -function deactivate() { -} -exports.deactivate = deactivate; -//# sourceMappingURL=extension.js.map \ No newline at end of file diff --git a/extension/extension.js.map b/extension/extension.js.map deleted file mode 100644 index 5580328..0000000 --- a/extension/extension.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"extension.js","sourceRoot":"","sources":["extension.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/extension/launchConfig.js b/extension/launchConfig.js deleted file mode 100644 index d81c81d..0000000 --- a/extension/launchConfig.js +++ /dev/null @@ -1,29 +0,0 @@ -"use strict"; -//MIT License -// -//Copyright (c) 2020 Tom Blind -// -//Permission is hereby granted, free of charge, to any person obtaining a copy -//of this software and associated documentation files (the "Software"), to deal -//in the Software without restriction, including without limitation the rights -//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -//copies of the Software, and to permit persons to whom the Software is -//furnished to do so, subject to the following conditions: -// -//The above copyright notice and this permission notice shall be included in all -//copies or substantial portions of the Software. -// -//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -//SOFTWARE. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.isCustomProgramConfig = void 0; -function isCustomProgramConfig(config) { - return typeof config.command !== "undefined"; -} -exports.isCustomProgramConfig = isCustomProgramConfig; -//# sourceMappingURL=launchConfig.js.map \ No newline at end of file diff --git a/extension/launchConfig.js.map b/extension/launchConfig.js.map deleted file mode 100644 index 13aec08..0000000 --- a/extension/launchConfig.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"launchConfig.js","sourceRoot":"","sources":["launchConfig.ts"],"names":[],"mappings":";AAAA,aAAa;AACb,EAAE;AACF,8BAA8B;AAC9B,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAC9E,2EAA2E;AAC3E,uEAAuE;AACvE,0DAA0D;AAC1D,EAAE;AACF,gFAAgF;AAChF,iDAAiD;AACjD,EAAE;AACF,4EAA4E;AAC5E,0EAA0E;AAC1E,6EAA6E;AAC7E,wEAAwE;AACxE,+EAA+E;AAC/E,+EAA+E;AAC/E,WAAW;;;AA8BX,SAAgB,qBAAqB,CAAC,MAA8C;IAChF,OAAO,OAAQ,MAA8B,CAAC,OAAO,KAAK,WAAW,CAAC;AAC1E,CAAC;AAFD,sDAEC"} \ No newline at end of file diff --git a/extension/luaDebugSession.js b/extension/luaDebugSession.js deleted file mode 100644 index 2604ace..0000000 --- a/extension/luaDebugSession.js +++ /dev/null @@ -1,859 +0,0 @@ -"use strict"; -//MIT License -// -//Copyright (c) 2020 Tom Blind -// -//Permission is hereby granted, free of charge, to any person obtaining a copy -//of this software and associated documentation files (the "Software"), to deal -//in the Software without restriction, including without limitation the rights -//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -//copies of the Software, and to permit persons to whom the Software is -//furnished to do so, subject to the following conditions: -// -//The above copyright notice and this permission notice shall be included in all -//copies or substantial portions of the Software. -// -//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -//SOFTWARE. -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.LuaDebugSession = void 0; -const debugadapter_1 = require("@vscode/debugadapter"); -const childProcess = require("child_process"); -const path = require("path"); -const fs = require("fs"); -const message_1 = require("./message"); -const launchConfig_1 = require("./launchConfig"); -const debugPipe_1 = require("./debugPipe"); -// const mainThreadId = 1; -const maxStackCount = 100; -const metatableDisplayName = "[[metatable]]"; -const tableLengthDisplayName = "[[length]]"; -const metatableAccessor = "lldbg_getmetatable"; -const envVariable = "LOCAL_LUA_DEBUGGER_VSCODE"; -const filePathEnvVariable = "LOCAL_LUA_DEBUGGER_FILEPATH"; -const scriptRootsEnvVariable = "LOCAL_LUA_DEBUGGER_SCRIPT_ROOTS"; -const breakInCoroutinesEnv = "LOCAL_LUA_DEBUGGER_BREAK_IN_COROUTINES"; -const stepUnmappedLinesEnv = "LOCAL_LUA_DEBUGGER_STEP_UNMAPPED_LINES"; -const inputFileEnv = "LOCAL_LUA_DEBUGGER_INPUT_FILE"; -const outputFileEnv = "LOCAL_LUA_DEBUGGER_OUTPUT_FILE"; -const pullFileEnv = "LOCAL_LUA_DEBUGGER_PULL_FILE"; -function getEnvKey(env, searchKey) { - const upperSearchKey = searchKey.toUpperCase(); - for (const key in env) { - if (key.toUpperCase() === upperSearchKey) { - return key; - } - } - return searchKey; -} -function sortVariables(a, b) { - const aIsBracketted = a.name.startsWith("[["); - const bIsBracketted = b.name.startsWith("[["); - if (aIsBracketted !== bIsBracketted) { - return aIsBracketted ? -1 : 1; - } - const aAsNum = Number(a.name); - const bAsNum = Number(b.name); - const aIsNum = !isNaN(aAsNum); - const bIsNum = !isNaN(bAsNum); - if (aIsNum !== bIsNum) { - return aIsNum ? -1 : 1; - } - else if (aIsNum && bIsNum) { - return aAsNum - bAsNum; - } - let aName = a.name.replace("[", " "); - let bName = b.name.replace("[", " "); - const aNameLower = aName.toLowerCase(); - const bNameLower = bName.toLowerCase(); - if (aNameLower !== bNameLower) { - aName = aNameLower; - bName = bNameLower; - } - if (aName === bName) { - return 0; - } - else if (aName < bName) { - return -1; - } - else { - return 1; - } -} -function parseFrameId(frameId) { - return { threadId: Math.floor(frameId / maxStackCount) + 1, frame: frameId % maxStackCount + 1 }; -} -function makeFrameId(threadId, frame) { - return (threadId - 1) * maxStackCount + (frame - 1); -} -class LuaDebugSession extends debugadapter_1.LoggingDebugSession { - constructor() { - super("lldebugger-log.txt"); - this.fileBreakpoints = {}; - this.process = null; - this.debugPipe = null; - this.outputText = ""; - this.messageHandlerQueue = []; - this.variableHandles = new debugadapter_1.Handles(3 /* Global */ + 1); - this.breakpointsPending = false; - this.pendingScripts = null; - this.pendingIgnorePatterns = null; - this.autoContinueNext = false; - this.activeThreads = new Map(); - this.isRunning = false; - this.inDebuggerBreakpoint = false; - this.pullBreakpointsSupport = false; - this.usePipeCommutication = false; - } - initializeRequest(response, args) { - this.showOutput("initializeRequest", "request" /* Request */); - if (typeof response.body === "undefined") { - response.body = {}; - } - response.body.supportsConfigurationDoneRequest = true; - response.body.supportsEvaluateForHovers = true; - response.body.supportsSetVariable = true; - response.body.supportsTerminateRequest = true; - response.body.supportsConditionalBreakpoints = true; - this.sendResponse(response); - this.sendEvent(new debugadapter_1.InitializedEvent()); - } - configurationDoneRequest(response, args) { - this.showOutput("configurationDoneRequest", "request" /* Request */); - super.configurationDoneRequest(response, args); - if (typeof this.onConfigurationDone !== "undefined") { - this.onConfigurationDone(); - } - } - launchRequest(response, args) { - var _a, _b; - return __awaiter(this, void 0, void 0, function* () { - this.config = args; - this.autoContinueNext = this.config.stopOnEntry !== true; - this.showOutput("launchRequest", "request" /* Request */); - yield this.waitForConfiguration(); - if (this.config.scriptFiles) { - this.pendingScripts = this.config.scriptFiles; - } - if (this.config.ignorePatterns) { - this.pendingIgnorePatterns = this.config.ignorePatterns; - } - //Setup process - if (!path.isAbsolute(this.config.cwd)) { - this.config.cwd = path.resolve(this.config.workspacePath, this.config.cwd); - } - const cwd = this.config.cwd; - const processOptions /* : child_process.SpawnOptions */ = { - env: Object.assign({}, process.env), - cwd, - shell: true, - detached: process.platform !== "win32" - }; - if (typeof this.config.env !== "undefined") { - for (const key in this.config.env) { - const envKey = getEnvKey(processOptions.env, key); - processOptions.env[envKey] = this.config.env[key]; - } - } - if (typeof this.config.pullBreakpointsSupport !== "undefined") { - this.pullBreakpointsSupport = this.config.pullBreakpointsSupport; - } - //Set an environment variable so the debugger can detect the attached extension - processOptions.env[envVariable] = "1"; - processOptions.env[filePathEnvVariable] - = `${this.config.extensionPath}${path.sep}debugger${path.sep}lldebugger.lua`; - //Pass options via environment variables - if (typeof this.config.scriptRoots !== "undefined") { - processOptions.env[scriptRootsEnvVariable] = this.config.scriptRoots.join(";"); - } - if (typeof this.config.breakInCoroutines !== "undefined") { - processOptions.env[breakInCoroutinesEnv] = this.config.breakInCoroutines ? "1" : "0"; - } - if (typeof this.config.stepUnmappedLines !== "undefined") { - processOptions.env[stepUnmappedLinesEnv] = this.config.stepUnmappedLines ? "1" : "0"; - } - this.usePipeCommutication = this.config.program.communication === "pipe"; - //Open pipes - if (this.usePipeCommutication || this.pullBreakpointsSupport) { - if (process.platform === "win32") { - this.debugPipe = (0, debugPipe_1.createNamedPipe)(); - } - else { - this.debugPipe = (0, debugPipe_1.createFifoPipe)(); - } - if (this.usePipeCommutication) { - this.debugPipe.open(data => { void this.onDebuggerOutput(data); }, err => { this.showOutput(`${err}`, "error" /* Error */); }); - processOptions.env[outputFileEnv] = this.debugPipe.getOutputPipePath(); - processOptions.env[inputFileEnv] = this.debugPipe.getInputPipePath(); - } - } - if (this.pullBreakpointsSupport) { - (_a = this.debugPipe) === null || _a === void 0 ? void 0 : _a.openPull(err => { this.showOutput(`${err}`, "error" /* Error */); }); - processOptions.env[pullFileEnv] = (_b = this.debugPipe) === null || _b === void 0 ? void 0 : _b.getPullPipePath(); - } - //Append lua path so it can find debugger script - this.updateLuaPath("LUA_PATH_5_2", processOptions.env, false); - this.updateLuaPath("LUA_PATH_5_3", processOptions.env, false); - this.updateLuaPath("LUA_PATH_5_4", processOptions.env, false); - this.updateLuaPath("LUA_PATH", processOptions.env, true); - //Launch process - let processExecutable; - let processArgs; - if ((0, launchConfig_1.isCustomProgramConfig)(this.config.program)) { - processExecutable = `"${this.config.program.command}"`; - processArgs = typeof this.config.args !== "undefined" ? this.config.args : []; - } - else { - processExecutable = `"${this.config.program.lua}"`; - const programArgs = (typeof this.config.args !== "undefined") - ? `, ${this.config.args.map(a => `[[${a}]]`)}` - : ""; - processArgs = [ - "-e", - "\"require('lldebugger').runFile(" - + `[[${this.config.program.file}]],` - + "true," - + `{[-1]=[[${this.config.program.lua}]],[0]=[[${this.config.program.file}]]${programArgs}}` - + ")\"" - ]; - } - this.process = childProcess.spawn(processExecutable, processArgs, processOptions); - this.showOutput(`launching \`${processExecutable} ${processArgs.join(" ")}\` from "${cwd}"`, "info" /* Info */); - //Process callbacks - if (this.usePipeCommutication) { - this.assert(this.process.stdout).on("data", data => { this.showOutput(`${data}`, "stdout" /* StdOut */); }); - } - else { - this.assert(this.process.stdout).on("data", data => { void this.onDebuggerOutput(data); }); - } - this.assert(this.process.stderr).on("data", data => { this.showOutput(`${data}`, "stderr" /* StdErr */); }); - this.process.on("close", (code, signal) => this.onDebuggerTerminated(`${code !== null ? code : signal}`)); - this.process.on("disconnect", () => this.onDebuggerTerminated("disconnected")); - this.process.on("error", err => this.onDebuggerTerminated(`Failed to launch \`${processExecutable} ${processArgs.join(" ")}\` from "${cwd}": ${err}`, "error" /* Error */)); - this.process.on("exit", (code, signal) => this.onDebuggerTerminated(`${code !== null ? code : signal}`)); - this.isRunning = true; - this.inDebuggerBreakpoint = false; - this.showOutput("process launched", "info" /* Info */); - this.sendResponse(response); - }); - } - setBreakPointsRequest(response, args) { - var _a, _b; - return __awaiter(this, void 0, void 0, function* () { - this.showOutput("setBreakPointsRequest", "request" /* Request */); - const filePath = args.source.path; - if (this.process !== null && !this.isRunning) { - if (!this.inDebuggerBreakpoint && this.pullBreakpointsSupport) { - this.breakpointsPending = true; - this.autoContinueNext = true; - (_a = this.debugPipe) === null || _a === void 0 ? void 0 : _a.requestPull(); - } - const oldBreakpoints = this.fileBreakpoints[filePath]; - if (typeof oldBreakpoints !== "undefined") { - for (const breakpoint of oldBreakpoints) { - yield this.deleteBreakpoint(filePath, breakpoint); - } - } - if (typeof args.breakpoints !== "undefined") { - for (const breakpoint of args.breakpoints) { - yield this.setBreakpoint(filePath, breakpoint); - } - } - } - else { - if (this.pullBreakpointsSupport && this.process !== null) { - this.breakpointsPending = true; - this.autoContinueNext = true; - (_b = this.debugPipe) === null || _b === void 0 ? void 0 : _b.requestPull(); - } - else { - this.breakpointsPending = true; - } - } - this.fileBreakpoints[filePath] = args.breakpoints; - const breakpoints = (typeof args.breakpoints !== "undefined") - ? args.breakpoints.map(breakpoint => new debugadapter_1.Breakpoint(true, breakpoint.line)) - : []; - response.body = { breakpoints }; - this.sendResponse(response); - }); - } - threadsRequest(response) { - return __awaiter(this, void 0, void 0, function* () { - this.showOutput("threadsRequest", "request" /* Request */); - const msg = yield this.waitForCommandResponse("threads"); - if (msg.type === "threads") { - //Remove dead threads - const activeThreadIds = [...this.activeThreads.keys()]; - for (const activeId of activeThreadIds) { - if (!msg.threads.some(({ id }) => activeId === id)) { - this.sendEvent(new debugadapter_1.ThreadEvent("exited", activeId)); - this.activeThreads.delete(activeId); - } - } - //Create new threads - const newThreads = msg.threads.filter(({ id }) => !this.activeThreads.has(id)); - for (const { id, name } of newThreads) { - this.activeThreads.set(id, new debugadapter_1.Thread(id, name)); - } - response.body = { threads: [...this.activeThreads.values()] }; - } - else { - response.success = false; - } - this.sendResponse(response); - }); - } - stackTraceRequest(response, args) { - return __awaiter(this, void 0, void 0, function* () { - this.showOutput(`stackTraceRequest ${args.startFrame}/${args.levels} (thread ${args.threadId})`, "request" /* Request */); - const msg = yield this.waitForCommandResponse(`thread ${args.threadId}`); - const startFrame = typeof args.startFrame !== "undefined" ? args.startFrame : 0; - const maxLevels = typeof args.levels !== "undefined" ? args.levels : maxStackCount; - if (msg.type === "stack") { - const frames = []; - const endFrame = Math.min(startFrame + maxLevels, msg.frames.length); - for (let i = startFrame; i < endFrame; ++i) { - const frame = msg.frames[i]; - let source; - let line = frame.line; - let column = 1; //Needed for exception display: https://github.com/microsoft/vscode/issues/46080 - //Mapped source - if (typeof frame.mappedLocation !== "undefined") { - const mappedPath = this.resolvePath(frame.mappedLocation.source); - if (typeof mappedPath !== "undefined") { - source = new debugadapter_1.Source(path.basename(mappedPath), mappedPath); - line = frame.mappedLocation.line; - column = frame.mappedLocation.column; - } - } - //Un-mapped source - const sourcePath = this.resolvePath(frame.source); - if (typeof source === "undefined" && typeof sourcePath !== "undefined") { - source = new debugadapter_1.Source(path.basename(frame.source), sourcePath); - } - //Function name - let frameFunc = typeof frame.func !== "undefined" ? frame.func : "???"; - if (typeof sourcePath === "undefined") { - frameFunc += ` ${frame.source}`; - } - const frameId = makeFrameId(args.threadId, i + 1); - const stackFrame = new debugadapter_1.StackFrame(frameId, frameFunc, source, line, column); - stackFrame.presentationHint = typeof sourcePath === "undefined" ? "subtle" : "normal"; - frames.push(stackFrame); - } - response.body = { stackFrames: frames, totalFrames: msg.frames.length }; - } - else { - response.success = false; - } - this.sendResponse(response); - }); - } - scopesRequest(response, args) { - return __awaiter(this, void 0, void 0, function* () { - this.showOutput("scopesRequest", "request" /* Request */); - const { threadId, frame } = parseFrameId(args.frameId); - yield this.waitForCommandResponse(`thread ${threadId}`); - yield this.waitForCommandResponse(`frame ${frame}`); - const scopes = [ - new debugadapter_1.Scope("Locals", 1 /* Local */, false), - new debugadapter_1.Scope("Upvalues", 2 /* Upvalue */, false), - new debugadapter_1.Scope("Globals", 3 /* Global */, false) - ]; - response.body = { scopes }; - this.sendResponse(response); - }); - } - variablesRequest(response, args) { - return __awaiter(this, void 0, void 0, function* () { - let cmd; - let baseName; - let isMultiResult = false; - switch (args.variablesReference) { - case 1 /* Local */: - cmd = "locals"; - this.showOutput("variablesRequest locals", "request" /* Request */); - break; - case 2 /* Upvalue */: - cmd = "ups"; - this.showOutput("variablesRequest ups", "request" /* Request */); - break; - case 3 /* Global */: - cmd = "globals"; - this.showOutput("variablesRequest globals", "request" /* Request */); - break; - default: - baseName = this.assert(this.variableHandles.get(args.variablesReference)); - if (baseName.startsWith("@")) { - baseName = baseName.substr(1); - isMultiResult = true; - } - cmd = `props ${baseName}`; - if (typeof args.filter !== "undefined") { - cmd += ` ${args.filter}`; - if (typeof args.start !== "undefined") { - const start = Math.max(args.start, 1); - cmd += ` ${start}`; - if (typeof args.count !== "undefined") { - const count = args.start + args.count - start; - cmd += ` ${count}`; - } - } - } - else { - cmd += " all"; - } - this.showOutput(`variablesRequest ${baseName} ${args.filter} ${args.start}/${args.count}`, "request" /* Request */); - break; - } - const vars = yield this.waitForCommandResponse(cmd); - const variables = []; - if (vars.type === "variables") { - for (const variable of vars.variables) { - variables.push(this.buildVariable(variable, variable.name)); - } - } - else if (vars.type === "properties") { - for (const variable of vars.properties) { - const refName = typeof baseName === "undefined" ? variable.name : `${baseName}[${variable.name}]`; - variables.push(this.buildVariable(variable, refName)); - } - if (typeof vars.metatable !== "undefined" && typeof baseName !== "undefined") { - variables.push(this.buildVariable(vars.metatable, `${metatableAccessor}(${baseName})`, metatableDisplayName)); - } - if (typeof vars.length !== "undefined" && !isMultiResult) { - variables.push(this.buildVariable(vars.length, `#${baseName}`, tableLengthDisplayName)); - } - } - else if (vars.type === "error") { - response.success = false; - response.message = this.filterErrorMessage(vars.error); - this.sendResponse(response); - return; - } - else { - response.success = false; - } - variables.sort(sortVariables); - response.body = { variables }; - this.sendResponse(response); - }); - } - continueRequest(response, args) { - this.showOutput("continueRequest", "request" /* Request */); - if (this.sendCommand("cont")) { - this.variableHandles.reset(); - this.isRunning = true; - this.inDebuggerBreakpoint = false; - } - else { - response.success = false; - } - this.sendResponse(response); - } - nextRequest(response, args) { - this.showOutput("nextRequest", "request" /* Request */); - if (this.sendCommand("step")) { - this.variableHandles.reset(); - this.isRunning = true; - this.inDebuggerBreakpoint = false; - } - else { - response.success = false; - } - this.sendResponse(response); - } - stepInRequest(response, args) { - this.showOutput("stepInRequest", "request" /* Request */); - if (this.sendCommand("stepin")) { - this.variableHandles.reset(); - this.isRunning = true; - this.inDebuggerBreakpoint = false; - } - else { - response.success = false; - } - this.sendResponse(response); - } - stepOutRequest(response, args) { - this.showOutput("stepOutRequest", "request" /* Request */); - if (this.sendCommand("stepout")) { - this.variableHandles.reset(); - this.isRunning = true; - this.inDebuggerBreakpoint = false; - } - else { - response.success = false; - } - this.sendResponse(response); - } - setVariableRequest(response, args) { - return __awaiter(this, void 0, void 0, function* () { - let msg; - if (args.variablesReference === 3 /* Global */ - || args.variablesReference === 1 /* Local */ - || args.variablesReference === 2 /* Upvalue */) { - this.showOutput(`setVariableRequest ${args.name} = ${args.value}`, "request" /* Request */); - msg = yield this.waitForCommandResponse(`exec ${args.name} = ${args.value}; return ${args.name}`); - } - else if (args.name === metatableDisplayName) { - const name = this.variableHandles.get(args.variablesReference); - this.showOutput(`setVariableRequest ${name}[[metatable]] = ${args.value}`, "request" /* Request */); - msg = yield this.waitForCommandResponse(`eval setmetatable(${name}, ${args.value})`); - } - else if (args.name === tableLengthDisplayName) { - const name = this.variableHandles.get(args.variablesReference); - this.showOutput(`setVariableRequest ${name}[[length]] = ${args.value}`, "request" /* Request */); - msg = yield this.waitForCommandResponse(`eval #${name}`); - } - else { - const name = `${this.variableHandles.get(args.variablesReference)}[${args.name}]`; - this.showOutput(`setVariableRequest ${name} = ${args.value}`, "request" /* Request */); - msg = yield this.waitForCommandResponse(`exec ${name} = ${args.value}; return ${name}`); - } - const result = this.handleEvaluationResult(args.value, msg); - if (!result.success) { - if (typeof result.error !== "undefined") { - this.showOutput(result.error, "error" /* Error */); - } - response.success = false; - } - else { - response.body = result; - } - this.sendResponse(response); - }); - } - evaluateRequest(response, args) { - return __awaiter(this, void 0, void 0, function* () { - const expression = args.expression; - this.showOutput(`evaluateRequest ${expression}`, "request" /* Request */); - if (typeof args.frameId !== "undefined") { - const { threadId, frame } = parseFrameId(args.frameId); - yield this.waitForCommandResponse(`thread ${threadId}`); - yield this.waitForCommandResponse(`frame ${frame}`); - } - const msg = yield this.waitForCommandResponse(`eval ${expression}`); - const result = this.handleEvaluationResult(expression, msg); - if (!result.success) { - if (typeof result.error !== "undefined" && args.context !== "hover") { - if (args.context !== "watch") { - this.showOutput(result.error, "error" /* Error */); - } - response.success = false; - response.message = result.error; - } - } - else { - response.body = { result: result.value, variablesReference: result.variablesReference }; - } - this.sendResponse(response); - }); - } - terminateRequest(response, args) { - this.showOutput("terminateRequest", "request" /* Request */); - if (this.process !== null) { - if (process.platform === "win32") { - childProcess.spawn("taskkill", ["/pid", this.assert(this.process.pid).toString(), "/f", "/t"]); - } - else { - process.kill(-this.assert(this.process.pid), "SIGKILL"); - } - } - this.isRunning = false; - this.inDebuggerBreakpoint = false; - this.sendResponse(response); - } - handleEvaluationResult(expression, msg) { - if (msg.type === "result") { - if (msg.results.length === 0) { - return { success: true, value: "nil", variablesReference: 0 }; - } - else if (msg.results.length === 1) { - const result = msg.results[0]; - const variablesReference = (result.type === "table" || result.type === "function") - ? this.variableHandles.create(expression) - : 0; - return { success: true, value: this.getValueString(result), variablesReference }; - } - else { - const variablesReference = this.variableHandles.create(`@({${expression}})`); - const value = `(${msg.results.map(r => this.getValueString(r)).join(", ")})`; - return { success: true, value, variablesReference }; - } - } - else if (msg.type === "error") { - return { success: false, error: this.filterErrorMessage(msg.error) }; - } - else { - return { success: false }; - } - } - buildVariable(variable, refName, variableName) { - var _a; - let valueStr; - let ref; - if (refName === "...") { - valueStr = typeof variable.error !== "undefined" - ? `[error: ${this.filterErrorMessage(variable.error)}]` - : `(${(_a = variable.value) !== null && _a !== void 0 ? _a : ""})`; - ref = variable.type === "table" ? this.variableHandles.create("@({...})") : 0; - } - else if (variable.type === "table" || variable.type === "function") { - valueStr = this.getValueString(variable); - ref = this.variableHandles.create(refName); - } - else { - valueStr = this.getValueString(variable); - } - const name = typeof variableName !== "undefined" ? variableName : variable.name; - const indexedVariables = typeof variable.length !== "undefined" && variable.length > 0 - ? variable.length + 1 - : variable.length; - if (variable.type === "table" || variable.type === "function") { - return new debugadapter_1.Variable(name, valueStr, ref, indexedVariables, 1); - } - else { - return new debugadapter_1.Variable(name, valueStr, ref, indexedVariables); - } - } - assert(value, message = "assertion failed") { - if (value === null || typeof value === "undefined") { - this.sendEvent(new debugadapter_1.OutputEvent(message)); - throw new Error(message); - } - return value; - } - filterErrorMessage(errorMsg) { - const errorOnly = /^.+:\d+:\s*(.+)/.exec(errorMsg); - return (errorOnly !== null && errorOnly.length > 1) ? errorOnly[1] : errorMsg; - } - getValueString(value) { - if (typeof value.error !== "undefined") { - return `[error: ${this.filterErrorMessage(value.error)}]`; - } - else if (typeof value.value !== "undefined") { - return value.value; - } - else { - return `[${value.type}]`; - } - } - resolvePath(filePath) { - if (filePath.length === 0) { - return; - } - const config = this.assert(this.config); - let fullPath = path.isAbsolute(filePath) ? filePath : path.join(config.cwd, filePath); - if (fs.existsSync(fullPath)) { - return fullPath; - } - if (typeof config.scriptRoots === "undefined") { - return; - } - for (const rootPath of config.scriptRoots) { - if (path.isAbsolute(rootPath)) { - fullPath = path.join(rootPath, filePath); - } - else { - fullPath = path.join(config.cwd, rootPath, filePath); - } - if (fs.existsSync(fullPath)) { - return fullPath; - } - } - return; - } - updateLuaPath(pathKey, env, force) { - const luaPathKey = getEnvKey(env, pathKey); - let luaPath = env[luaPathKey]; - if (typeof luaPath === "undefined") { - if (!force) { - return; - } - luaPath = ";;"; //Retain defaults - } - else if (luaPath.length > 0 && !luaPath.endsWith(";")) { - luaPath += ";"; - } - env[luaPathKey] = `${luaPath}${this.assert(this.config).extensionPath}/debugger/?.lua`; - } - setBreakpoint(filePath, breakpoint) { - const cmd = typeof breakpoint.condition !== "undefined" - ? `break set ${filePath}:${breakpoint.line} ${breakpoint.condition}` - : `break set ${filePath}:${breakpoint.line}`; - return this.waitForCommandResponse(cmd); - } - deleteBreakpoint(filePath, breakpoint) { - return this.waitForCommandResponse(`break delete ${filePath}:${breakpoint.line}`); - } - onDebuggerStop(msg) { - return __awaiter(this, void 0, void 0, function* () { - this.isRunning = false; - const prevInDebugger = this.inDebuggerBreakpoint; - this.inDebuggerBreakpoint = true; - if (this.pendingScripts) { - for (const scriptFile of this.pendingScripts) { - const resultMsg = yield this.waitForCommandResponse(`script ${scriptFile}`); - if (resultMsg.type === "result") { - for (const result of resultMsg.results) { - if (typeof result.value !== "undefined") { - this.showOutput(this.getValueString(result), "info" /* Info */); - } - } - } - else if (resultMsg.type === "error") { - this.showOutput(resultMsg.error, "error" /* Error */); - } - } - this.pendingScripts = null; - } - if (this.pendingIgnorePatterns) { - for (const ignorePattern of this.pendingIgnorePatterns) { - const resultMsg = yield this.waitForCommandResponse(`ignore ${ignorePattern}`); - if (resultMsg.type === "result") { - for (const result of resultMsg.results) { - if (typeof result.value !== "undefined") { - this.showOutput(this.getValueString(result), "info" /* Info */); - } - } - } - else if (resultMsg.type === "error") { - this.showOutput(resultMsg.error, "error" /* Error */); - } - } - this.pendingIgnorePatterns = null; - } - if (this.breakpointsPending) { - this.breakpointsPending = false; - yield this.waitForCommandResponse("break clear"); - for (const filePath in this.fileBreakpoints) { - const breakpoints = this.fileBreakpoints[filePath]; - for (const breakpoint of breakpoints) { - yield this.setBreakpoint(filePath, breakpoint); - } - } - } - if (msg.breakType === "error") { - this.showOutput(msg.message, "error" /* Error */); - const evt = new debugadapter_1.StoppedEvent("exception", msg.threadId, msg.message); - evt.body.allThreadsStopped = true; - this.sendEvent(evt); - return; - } - if (this.autoContinueNext) { - this.autoContinueNext = false; - this.inDebuggerBreakpoint = prevInDebugger; - this.assert(this.sendCommand("autocont")); - } - else { - const evt = new debugadapter_1.StoppedEvent("breakpoint", msg.threadId); - evt.body.allThreadsStopped = true; - this.sendEvent(evt); - } - }); - } - handleDebugMessage(msg) { - const handler = this.messageHandlerQueue.shift(); - if (typeof handler !== "undefined") { - handler(msg); - } - } - onDebuggerOutput(data) { - return __awaiter(this, void 0, void 0, function* () { - this.outputText += `${data}`; - const [messages, processed, unprocessed] = message_1.Message.parse(this.outputText); - let debugBreak; - for (const msg of messages) { - this.showOutput(JSON.stringify(msg), "message" /* Message */); - if (msg.type === "debugBreak") { - debugBreak = msg; - } - else { - this.handleDebugMessage(msg); - } - } - this.showOutput(processed, "stdout" /* StdOut */); - this.outputText = unprocessed; - if (typeof debugBreak !== "undefined") { - yield this.onDebuggerStop(debugBreak); - } - }); - } - onDebuggerTerminated(result, category = "info" /* Info */) { - if (this.process === null) { - return; - } - if (this.debugPipe) { - this.debugPipe.close(); - this.debugPipe = null; - } - this.process = null; - this.isRunning = false; - this.inDebuggerBreakpoint = false; - if (this.outputText.length > 0) { - this.showOutput(this.outputText, "stdout" /* StdOut */); - this.outputText = ""; - } - this.showOutput(`debugging ended: ${result}`, category); - this.sendEvent(new debugadapter_1.TerminatedEvent()); - } - sendCommand(cmd) { - var _a; - if (this.process === null || this.isRunning) { - return false; - } - this.showOutput(cmd, "command" /* Command */); - if (this.usePipeCommutication) { - (_a = this.debugPipe) === null || _a === void 0 ? void 0 : _a.write(`${cmd}\n`); - } - else { - this.assert(this.process.stdin).write(`${cmd}\n`); - } - return true; - } - waitForCommandResponse(cmd) { - if (this.sendCommand(cmd)) { - return new Promise(resolve => { - this.messageHandlerQueue.push(resolve); - }); - } - else { - return Promise.resolve({ tag: "$luaDebug", type: "error", error: "Failed to send command" }); - } - } - showOutput(msg, category) { - if (msg.length === 0) { - return; - } - else if (category === "stdout" /* StdOut */ || category === "stderr" /* StdErr */) { - this.sendEvent(new debugadapter_1.OutputEvent(msg, category)); - } - else if (category === "error" /* Error */) { - this.sendEvent(new debugadapter_1.OutputEvent(`\n[${category}] ${msg}\n`, "stderr")); - } - else if (typeof this.config !== "undefined" && this.config.verbose === true) { - this.sendEvent(new debugadapter_1.OutputEvent(`\n[${category}] ${msg}\n`)); - } - } - waitForConfiguration() { - return new Promise(resolve => { this.onConfigurationDone = resolve; }); - } -} -exports.LuaDebugSession = LuaDebugSession; -//# sourceMappingURL=luaDebugSession.js.map \ No newline at end of file diff --git a/extension/luaDebugSession.js.map b/extension/luaDebugSession.js.map deleted file mode 100644 index 92c4b64..0000000 --- a/extension/luaDebugSession.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"luaDebugSession.js","sourceRoot":"","sources":["luaDebugSession.ts"],"names":[],"mappings":";AAAA,aAAa;AACb,EAAE;AACF,8BAA8B;AAC9B,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAC9E,2EAA2E;AAC3E,uEAAuE;AACvE,0DAA0D;AAC1D,EAAE;AACF,gFAAgF;AAChF,iDAAiD;AACjD,EAAE;AACF,4EAA4E;AAC5E,0EAA0E;AAC1E,6EAA6E;AAC7E,wEAAwE;AACxE,+EAA+E;AAC/E,+EAA+E;AAC/E,WAAW;;;;;;;;;;;;AAGX,uDAc8B;AAC9B,8CAA8C;AAC9C,6BAA6B;AAC7B,yBAAyB;AACzB,uCAAkC;AAClC,iDAAmE;AACnE,2CAAuE;AAuBvE,0BAA0B;AAC1B,MAAM,aAAa,GAAG,GAAG,CAAC;AAC1B,MAAM,oBAAoB,GAAG,eAAe,CAAC;AAC7C,MAAM,sBAAsB,GAAG,YAAY,CAAC;AAC5C,MAAM,iBAAiB,GAA+B,oBAAoB,CAAC;AAC3E,MAAM,WAAW,GAAG,2BAA2B,CAAC;AAChD,MAAM,mBAAmB,GAAG,6BAA6B,CAAC;AAC1D,MAAM,sBAAsB,GAA4B,iCAAiC,CAAC;AAC1F,MAAM,oBAAoB,GAAkC,wCAAwC,CAAC;AACrG,MAAM,oBAAoB,GAAkC,wCAAwC,CAAC;AACrG,MAAM,YAAY,GAA0B,+BAA+B,CAAC;AAC5E,MAAM,aAAa,GAA2B,gCAAgC,CAAC;AAC/E,MAAM,WAAW,GAAyB,8BAA8B,CAAC;AAEzE,SAAS,SAAS,CAAC,GAAsB,EAAE,SAAiB;IACxD,MAAM,cAAc,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;IAC/C,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE;QACnB,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,cAAc,EAAE;YACtC,OAAO,GAAG,CAAC;SACd;KACJ;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,aAAa,CAAC,CAAW,EAAE,CAAW;IAC3C,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,aAAa,KAAK,aAAa,EAAE;QACjC,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KACjC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,MAAM,KAAK,MAAM,EAAE;QACnB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAC1B;SAAM,IAAI,MAAM,IAAI,MAAM,EAAE;QACzB,OAAO,MAAM,GAAG,MAAM,CAAC;KAC1B;IAED,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACrC,IAAI,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAErC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACvC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACvC,IAAI,UAAU,KAAK,UAAU,EAAE;QAC3B,KAAK,GAAG,UAAU,CAAC;QACnB,KAAK,GAAG,UAAU,CAAC;KACtB;IAED,IAAI,KAAK,KAAK,KAAK,EAAE;QACjB,OAAO,CAAC,CAAC;KACZ;SAAM,IAAI,KAAK,GAAG,KAAK,EAAE;QACtB,OAAO,CAAC,CAAC,CAAC;KACb;SAAM;QACH,OAAO,CAAC,CAAC;KACZ;AACL,CAAC;AAED,SAAS,YAAY,CAAC,OAAe;IACjC,OAAO,EAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,aAAa,GAAG,CAAC,EAAC,CAAC;AACnG,CAAC;AAED,SAAS,WAAW,CAAC,QAAgB,EAAE,KAAa;IAChD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,aAAa,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,MAAa,eAAgB,SAAQ,kCAAmB;IAmBpD;QACI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAnBf,oBAAe,GAAqE,EAAE,CAAC;QAEhG,YAAO,GAAqC,IAAI,CAAC;QACjD,cAAS,GAAqB,IAAI,CAAC;QACnC,eAAU,GAAG,EAAE,CAAC;QAEP,wBAAmB,GAAqB,EAAE,CAAC;QAC3C,oBAAe,GAAG,IAAI,sBAAO,CAAS,iBAAmB,CAAC,CAAC,CAAC;QACrE,uBAAkB,GAAG,KAAK,CAAC;QAC3B,mBAAc,GAAoB,IAAI,CAAC;QACvC,0BAAqB,GAAoB,IAAI,CAAC;QAC9C,qBAAgB,GAAG,KAAK,CAAC;QAChB,kBAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;QACnD,cAAS,GAAG,KAAK,CAAC;QAClB,yBAAoB,GAAG,KAAK,CAAC;QAC7B,2BAAsB,GAAG,KAAK,CAAC;QAC/B,yBAAoB,GAAG,KAAK,CAAC;IAIrC,CAAC;IAES,iBAAiB,CACvB,QAA0C,EAC1C,IAA8C;QAE9C,IAAI,CAAC,UAAU,CAAC,mBAAmB,0BAAyB,CAAC;QAE7D,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,WAAW,EAAE;YACtC,QAAQ,CAAC,IAAI,GAAG,EAAE,CAAC;SACtB;QAED,QAAQ,CAAC,IAAI,CAAC,gCAAgC,GAAG,IAAI,CAAC;QACtD,QAAQ,CAAC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;QAC/C,QAAQ,CAAC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QACzC,QAAQ,CAAC,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;QAC9C,QAAQ,CAAC,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC;QAEpD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAE5B,IAAI,CAAC,SAAS,CAAC,IAAI,+BAAgB,EAAE,CAAC,CAAC;IAC3C,CAAC;IAES,wBAAwB,CAC9B,QAAiD,EACjD,IAA8C;QAE9C,IAAI,CAAC,UAAU,CAAC,0BAA0B,0BAAyB,CAAC;QAEpE,KAAK,CAAC,wBAAwB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAE/C,IAAI,OAAO,IAAI,CAAC,mBAAmB,KAAK,WAAW,EAAE;YACjD,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC9B;IACL,CAAC;IAEe,aAAa,CACzB,QAAsC,EACtC,IAAyD;;;YAEzD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC;YAEzD,IAAI,CAAC,UAAU,CAAC,eAAe,0BAAyB,CAAC;YAEzD,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAElC,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;gBACzB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;aACjD;YAED,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE;gBAC5B,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;aAC3D;YAED,eAAe;YACf,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;gBACnC,IAAI,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aAC9E;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;YAC5B,MAAM,cAAc,CAAA,kCAAkC,GAAG;gBACrD,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC;gBACnC,GAAG;gBACH,KAAK,EAAE,IAAI;gBACX,QAAQ,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;aACzC,CAAC;YAEF,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,KAAK,WAAW,EAAE;gBACxC,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE;oBAC/B,MAAM,MAAM,GAAG,SAAS,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBAClD,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBACrD;aACJ;YAED,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,sBAAsB,KAAK,WAAW,EAAE;gBAC3D,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC;aACpE;YAED,+EAA+E;YAC/E,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC;YACtC,cAAc,CAAC,GAAG,CAAC,mBAAmB,CAAC;kBACjC,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,WAAW,IAAI,CAAC,GAAG,gBAAgB,CAAC;YAEjF,wCAAwC;YACxC,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,WAAW,EAAE;gBAChD,cAAc,CAAC,GAAG,CAAC,sBAAsB,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;aAClF;YACD,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,KAAK,WAAW,EAAE;gBACtD,cAAc,CAAC,GAAG,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;aACxF;YACD,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,KAAK,WAAW,EAAE;gBACtD,cAAc,CAAC,GAAG,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;aACxF;YAED,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,KAAK,MAAM,CAAC;YAEzE,YAAY;YACZ,IAAI,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,sBAAsB,EAAE;gBAC1D,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE;oBAC9B,IAAI,CAAC,SAAS,GAAG,IAAA,2BAAe,GAAE,CAAC;iBACtC;qBAAM;oBACH,IAAI,CAAC,SAAS,GAAG,IAAA,0BAAc,GAAE,CAAC;iBACrC;gBAED,IAAI,IAAI,CAAC,oBAAoB,EAAE;oBAC3B,IAAI,CAAC,SAAS,CAAC,IAAI,CACf,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAC7C,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,EAAE,sBAAuB,CAAC,CAAC,CAAC,CAC9D,CAAC;oBAEF,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,CAAC;oBACvE,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,CAAC;iBACxE;aACJ;YAED,IAAI,IAAI,CAAC,sBAAsB,EAAE;gBAC7B,MAAA,IAAI,CAAC,SAAS,0CAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,EAAE,sBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtF,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,GAAG,MAAA,IAAI,CAAC,SAAS,0CAAE,eAAe,EAAE,CAAC;aACvE;YAED,gDAAgD;YAChD,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC9D,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC9D,IAAI,CAAC,aAAa,CAAC,cAAc,EAAE,cAAc,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC9D,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,cAAc,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAEzD,gBAAgB;YAChB,IAAI,iBAAyB,CAAC;YAC9B,IAAI,WAAqB,CAAC;YAC1B,IAAI,IAAA,oCAAqB,EAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;gBAC5C,iBAAiB,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC;gBACvD,WAAW,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;aAEjF;iBAAM;gBACH,iBAAiB,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC;gBACnD,MAAM,WAAW,GAAG,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,WAAW,CAAC;oBACzD,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;oBAC9C,CAAC,CAAC,EAAE,CAAC;gBACT,WAAW,GAAG;oBACV,IAAI;oBACJ,kCAAkC;0BAChC,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK;0BAClC,OAAO;0BACP,WAAW,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,YAAY,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,WAAW,GAAG;0BACzF,KAAK;iBACV,CAAC;aACL;YACD,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,iBAAiB,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;YAElF,IAAI,CAAC,UAAU,CACX,eAAe,iBAAiB,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,GAAG,oBAE9E,CAAC;YAEF,mBAAmB;YACnB,IAAI,IAAI,CAAC,oBAAoB,EAAE;gBAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;aAC/G;iBAAM;gBACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC9F;YACD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,EAAE,wBAAwB,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5G,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC1G,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC,CAAC;YAC/E,IAAI,CAAC,OAAO,CAAC,EAAE,CACX,OAAO,EACP,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAC5B,sBAAsB,iBAAiB,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,MAAM,GAAG,EAAE,sBAE7F,CACJ,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAEzG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;YAElC,IAAI,CAAC,UAAU,CAAC,kBAAkB,oBAAsB,CAAC;YACzD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;;KAC/B;IAEe,qBAAqB,CACjC,QAA8C,EAC9C,IAA2C;;;YAE3C,IAAI,CAAC,UAAU,CAAC,uBAAuB,0BAAyB,CAAC;YAEjE,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAc,CAAC;YAE5C,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBAC1C,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,sBAAsB,EAAE;oBAC3D,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;oBAC/B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;oBAC7B,MAAA,IAAI,CAAC,SAAS,0CAAE,WAAW,EAAE,CAAC;iBACjC;gBAED,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;gBACtD,IAAI,OAAO,cAAc,KAAK,WAAW,EAAE;oBACvC,KAAK,MAAM,UAAU,IAAI,cAAc,EAAE;wBACrC,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;qBACrD;iBACJ;gBAED,IAAI,OAAO,IAAI,CAAC,WAAW,KAAK,WAAW,EAAE;oBACzC,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,WAAW,EAAE;wBACvC,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;qBAClD;iBACJ;aAEJ;iBAAM;gBACH,IAAI,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE;oBACtD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;oBAC/B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;oBAC7B,MAAA,IAAI,CAAC,SAAS,0CAAE,WAAW,EAAE,CAAC;iBACjC;qBAAM;oBACH,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;iBAClC;aACJ;YAED,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;YAElD,MAAM,WAAW,GAAiB,CAAC,OAAO,IAAI,CAAC,WAAW,KAAK,WAAW,CAAC;gBACvE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,yBAAU,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC3E,CAAC,CAAC,EAAE,CAAC;YACT,QAAQ,CAAC,IAAI,GAAG,EAAC,WAAW,EAAC,CAAC;YAC9B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;;KAC/B;IAEe,cAAc,CAAC,QAAuC;;YAClE,IAAI,CAAC,UAAU,CAAC,gBAAgB,0BAAyB,CAAC;YAE1D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;YAEzD,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE;gBACxB,qBAAqB;gBACrB,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;gBACvD,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE;oBACpC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAE,CAAC,QAAQ,KAAK,EAAE,CAAC,EAAE;wBAC9C,IAAI,CAAC,SAAS,CAAC,IAAI,0BAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;wBACpD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;qBACvC;iBACJ;gBAED,oBAAoB;gBACpB,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAC,EAAE,EAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC7E,KAAK,MAAM,EAAC,EAAE,EAAE,IAAI,EAAC,IAAI,UAAU,EAAE;oBACjC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,qBAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;iBACpD;gBAED,QAAQ,CAAC,IAAI,GAAG,EAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAC,CAAC;aAE/D;iBAAM;gBACH,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;aAC5B;YAED,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;KAAA;IAEe,iBAAiB,CAC7B,QAA0C,EAC1C,IAAuC;;YAEvC,IAAI,CAAC,UAAU,CACX,qBAAqB,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,YAAY,IAAI,CAAC,QAAQ,GAAG,0BAElF,CAAC;YAEF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,UAAU,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAEzE,MAAM,UAAU,GAAG,OAAO,IAAI,CAAC,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAChF,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC;YACnF,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE;gBACtB,MAAM,MAAM,GAA+B,EAAE,CAAC;gBAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACrE,KAAK,IAAI,CAAC,GAAG,UAAU,EAAE,CAAC,GAAG,QAAQ,EAAE,EAAE,CAAC,EAAE;oBACxC,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;oBAE5B,IAAI,MAA0B,CAAC;oBAC/B,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;oBACtB,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,gFAAgF;oBAEhG,eAAe;oBACf,IAAI,OAAO,KAAK,CAAC,cAAc,KAAK,WAAW,EAAE;wBAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;wBACjE,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;4BACnC,MAAM,GAAG,IAAI,qBAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;4BAC3D,IAAI,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;4BACjC,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC;yBACxC;qBACJ;oBAED,kBAAkB;oBAClB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAClD,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;wBACpE,MAAM,GAAG,IAAI,qBAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;qBAChE;oBAED,eAAe;oBACf,IAAI,SAAS,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;oBACvE,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;wBACnC,SAAS,IAAI,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;qBACnC;oBAED,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;oBAClD,MAAM,UAAU,GAA6B,IAAI,yBAAU,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;oBACtG,UAAU,CAAC,gBAAgB,GAAG,OAAO,UAAU,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;oBACtF,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;iBAC3B;gBACD,QAAQ,CAAC,IAAI,GAAG,EAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,EAAC,CAAC;aAEzE;iBAAM;gBACH,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;aAC5B;YACD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;KAAA;IAEe,aAAa,CACzB,QAAsC,EACtC,IAAmC;;YAEnC,IAAI,CAAC,UAAU,CAAC,eAAe,0BAAyB,CAAC;YAEzD,MAAM,EAAC,QAAQ,EAAE,KAAK,EAAC,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrD,MAAM,IAAI,CAAC,sBAAsB,CAAC,UAAU,QAAQ,EAAE,CAAC,CAAC;YAExD,MAAM,IAAI,CAAC,sBAAsB,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC;YAEpD,MAAM,MAAM,GAAY;gBACpB,IAAI,oBAAK,CAAC,QAAQ,iBAAmB,KAAK,CAAC;gBAC3C,IAAI,oBAAK,CAAC,UAAU,mBAAqB,KAAK,CAAC;gBAC/C,IAAI,oBAAK,CAAC,SAAS,kBAAoB,KAAK,CAAC;aAChD,CAAC;YACF,QAAQ,CAAC,IAAI,GAAG,EAAC,MAAM,EAAC,CAAC;YACzB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;KAAA;IAEe,gBAAgB,CAC5B,QAAyC,EACzC,IAAsC;;YAEtC,IAAI,GAAuB,CAAC;YAC5B,IAAI,QAA4B,CAAC;YACjC,IAAI,aAAa,GAAG,KAAK,CAAC;YAE1B,QAAQ,IAAI,CAAC,kBAAkB,EAAE;gBACjC;oBACI,GAAG,GAAG,QAAQ,CAAC;oBACf,IAAI,CAAC,UAAU,CAAC,yBAAyB,0BAAyB,CAAC;oBACnE,MAAM;gBAEV;oBACI,GAAG,GAAG,KAAK,CAAC;oBACZ,IAAI,CAAC,UAAU,CAAC,sBAAsB,0BAAyB,CAAC;oBAChE,MAAM;gBAEV;oBACI,GAAG,GAAG,SAAS,CAAC;oBAChB,IAAI,CAAC,UAAU,CAAC,0BAA0B,0BAAyB,CAAC;oBACpE,MAAM;gBAEV;oBACI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;oBAC1E,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;wBAC1B,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;wBAC9B,aAAa,GAAG,IAAI,CAAC;qBACxB;oBACD,GAAG,GAAG,SAAS,QAAQ,EAAE,CAAC;oBAC1B,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE;wBACpC,GAAG,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;wBACzB,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,WAAW,EAAE;4BACnC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;4BACtC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC;4BACnB,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,WAAW,EAAE;gCACnC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;gCAC9C,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC;6BACtB;yBACJ;qBACJ;yBAAM;wBACH,GAAG,IAAI,MAAM,CAAC;qBACjB;oBACD,IAAI,CAAC,UAAU,CACX,oBAAoB,QAAQ,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,0BAE5E,CAAC;oBACF,MAAM;aACT;YAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;YAEpD,MAAM,SAAS,GAAe,EAAE,CAAC;YACjC,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE;gBAC3B,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;oBACnC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;iBAC/D;aAEJ;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE;gBACnC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE;oBACpC,MAAM,OAAO,GAAG,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,QAAQ,CAAC,IAAI,GAAG,CAAC;oBAClG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;iBACzD;gBAED,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;oBAC1E,SAAS,CAAC,IAAI,CACV,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,iBAAiB,IAAI,QAAQ,GAAG,EAAE,oBAAoB,CAAC,CAChG,CAAC;iBACL;gBAED,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,aAAa,EAAE;oBACtD,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,QAAQ,EAAE,EAAE,sBAAsB,CAAC,CAAC,CAAC;iBAC3F;aAEJ;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;gBAC9B,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;gBACzB,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACvD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBAC5B,OAAO;aAEV;iBAAM;gBACH,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;aAC5B;YACD,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAE9B,QAAQ,CAAC,IAAI,GAAG,EAAC,SAAS,EAAC,CAAC;YAC5B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;KAAA;IAES,eAAe,CAAC,QAAwC,EAAE,IAAqC;QACrG,IAAI,CAAC,UAAU,CAAC,iBAAiB,0BAAyB,CAAC;QAC3D,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;YAC1B,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;SACrC;aAAM;YACH,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;SAC5B;QACD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAES,WAAW,CAAC,QAAoC,EAAE,IAAiC;QACzF,IAAI,CAAC,UAAU,CAAC,aAAa,0BAAyB,CAAC;QACvD,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;YAC1B,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;SACrC;aAAM;YACH,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;SAC5B;QACD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAES,aAAa,CAAC,QAAsC,EAAE,IAAmC;QAC/F,IAAI,CAAC,UAAU,CAAC,eAAe,0BAAyB,CAAC;QACzD,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE;YAC5B,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;SACrC;aAAM;YACH,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;SAC5B;QACD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAES,cAAc,CAAC,QAAuC,EAAE,IAAoC;QAClG,IAAI,CAAC,UAAU,CAAC,gBAAgB,0BAAyB,CAAC;QAC1D,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE;YAC7B,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;SACrC;aAAM;YACH,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;SAC5B;QACD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAEe,kBAAkB,CAC9B,QAA2C,EAC3C,IAAwC;;YAExC,IAAI,GAAqB,CAAC;YAC1B,IAAI,IAAI,CAAC,kBAAkB,mBAAqB;mBACzC,IAAI,CAAC,kBAAkB,kBAAoB;mBAC3C,IAAI,CAAC,kBAAkB,oBAAsB,EAClD;gBACE,IAAI,CAAC,UAAU,CAAC,sBAAsB,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,KAAK,EAAE,0BAAyB,CAAC;gBAC3F,GAAG,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,QAAQ,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,KAAK,YAAY,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;aAErG;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAoB,EAAE;gBAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAC/D,IAAI,CAAC,UAAU,CAAC,sBAAsB,IAAI,mBAAmB,IAAI,CAAC,KAAK,EAAE,0BAAyB,CAAC;gBACnG,GAAG,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,qBAAqB,IAAI,KAAK,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;aAExF;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,sBAAsB,EAAE;gBAC7C,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAC/D,IAAI,CAAC,UAAU,CAAC,sBAAsB,IAAI,gBAAgB,IAAI,CAAC,KAAK,EAAE,0BAAyB,CAAC;gBAChG,GAAG,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;aAE5D;iBAAM;gBACH,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC;gBAClF,IAAI,CAAC,UAAU,CAAC,sBAAsB,IAAI,MAAM,IAAI,CAAC,KAAK,EAAE,0BAAyB,CAAC;gBACtF,GAAG,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,QAAQ,IAAI,MAAM,IAAI,CAAC,KAAK,YAAY,IAAI,EAAE,CAAC,CAAC;aAC3F;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;gBACjB,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,WAAW,EAAE;oBACrC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,sBAAuB,CAAC;iBACvD;gBACD,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;aAE5B;iBAAM;gBACH,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC;aAC1B;YAED,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;KAAA;IAEe,eAAe,CAC3B,QAAwC,EACxC,IAAqC;;YAErC,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YACnC,IAAI,CAAC,UAAU,CAAC,mBAAmB,UAAU,EAAE,0BAAyB,CAAC;YAEzE,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,WAAW,EAAE;gBACrC,MAAM,EAAC,QAAQ,EAAE,KAAK,EAAC,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACrD,MAAM,IAAI,CAAC,sBAAsB,CAAC,UAAU,QAAQ,EAAE,CAAC,CAAC;gBACxD,MAAM,IAAI,CAAC,sBAAsB,CAAC,SAAS,KAAK,EAAE,CAAC,CAAC;aACvD;YAED,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,QAAQ,UAAU,EAAE,CAAC,CAAC;YAEpE,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;YAC5D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;gBACjB,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,WAAW,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,EAAE;oBACjE,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,EAAE;wBAC1B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,sBAAuB,CAAC;qBACvD;oBACD,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;oBACzB,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;iBACnC;aAEJ;iBAAM;gBACH,QAAQ,CAAC,IAAI,GAAG,EAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,EAAC,CAAC;aACzF;YAED,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;KAAA;IAES,gBAAgB,CACtB,QAAyC,EACzC,IAAsC;QAEtC,IAAI,CAAC,UAAU,CAAC,kBAAkB,0BAAyB,CAAC;QAE5D,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE;YACvB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE;gBAC9B,YAAY,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;aAClG;iBAAM;gBACH,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC;aAC3D;SACJ;QAED,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAElC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAEO,sBAAsB,CAC1B,UAAkB,EAClB,GAAqB;QAErB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;YACvB,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBAC1B,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC,EAAC,CAAC;aAC/D;iBAAM,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;gBACjC,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC9B,MAAM,kBAAkB,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC;oBAC9E,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC;oBACzC,CAAC,CAAC,CAAC,CAAC;gBAER,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,kBAAkB,EAAC,CAAC;aAClF;iBAAM;gBACH,MAAM,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,UAAU,IAAI,CAAC,CAAC;gBAC7E,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBAC7E,OAAO,EAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,kBAAkB,EAAC,CAAC;aACrD;SAEJ;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE;YAC7B,OAAO,EAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAC,CAAC;SAEtE;aAAM;YACH,OAAO,EAAC,OAAO,EAAE,KAAK,EAAC,CAAC;SAC3B;IACL,CAAC;IAIO,aAAa,CAAC,QAA4C,EAAE,OAAe,EAAE,YAAqB;;QACtG,IAAI,QAAgB,CAAC;QACrB,IAAI,GAAuB,CAAC;QAC5B,IAAI,OAAO,KAAK,KAAK,EAAE;YACnB,QAAQ,GAAG,OAAO,QAAQ,CAAC,KAAK,KAAK,WAAW;gBAC5C,CAAC,CAAC,WAAW,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG;gBACvD,CAAC,CAAC,IAAI,MAAA,QAAQ,CAAC,KAAK,mCAAI,EAAE,GAAG,CAAC;YAClC,GAAG,GAAG,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACjF;aAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE;YAClE,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YACzC,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SAC9C;aAAM;YACH,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;SAC5C;QACD,MAAM,IAAI,GAAG,OAAO,YAAY,KAAK,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAE,QAA8B,CAAC,IAAI,CAAC;QACvG,MAAM,gBAAgB,GAAG,OAAO,QAAQ,CAAC,MAAM,KAAK,WAAW,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAClF,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YACrB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;QACtB,IAAI,QAAQ,CAAC,IAAI,KAAK,OAAO,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE;YAC3D,OAAO,IAAI,uBAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;SACjE;aAAM;YACH,OAAO,IAAI,uBAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,gBAAgB,CAAC,CAAC;SAC9D;IACL,CAAC;IAEO,MAAM,CAAI,KAA2B,EAAE,OAAO,GAAG,kBAAkB;QACvE,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;YAChD,IAAI,CAAC,SAAS,CAAC,IAAI,0BAAW,CAAC,OAAO,CAAC,CAAC,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;SAC5B;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAEO,kBAAkB,CAAC,QAAgB;QACvC,MAAM,SAAS,GAAG,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnD,OAAO,CAAC,SAAS,KAAK,IAAI,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAClF,CAAC;IAEO,cAAc,CAAC,KAAqB;QACxC,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,WAAW,EAAE;YACpC,OAAO,WAAW,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;SAC7D;aAAM,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,WAAW,EAAE;YAC3C,OAAO,KAAK,CAAC,KAAK,CAAC;SACtB;aAAM;YACH,OAAO,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC;SAC5B;IACL,CAAC;IAEO,WAAW,CAAC,QAAgB;QAChC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACvB,OAAO;SACV;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAEtF,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;YACzB,OAAO,QAAQ,CAAC;SACnB;QAED,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,WAAW,EAAE;YAC3C,OAAO;SACV;QACD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,WAAW,EAAE;YACvC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;gBAC3B,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;aAC5C;iBAAM;gBACH,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;aACxD;YACD,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;gBACzB,OAAO,QAAQ,CAAC;aACnB;SACJ;QAED,OAAO;IACX,CAAC;IAEO,aAAa,CAAC,OAAe,EAAE,GAAsB,EAAE,KAAc;QACzE,MAAM,UAAU,GAAG,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC3C,IAAI,OAAO,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC;QAC9B,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;YAChC,IAAI,CAAC,KAAK,EAAE;gBACR,OAAO;aACV;YACD,OAAO,GAAG,IAAI,CAAC,CAAC,iBAAiB;SAEpC;aAAM,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACrD,OAAO,IAAI,GAAG,CAAC;SAClB;QAED,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,aAAa,iBAAiB,CAAC;IAC3F,CAAC;IAEO,aAAa,CAAC,QAAgB,EAAE,UAA0C;QAC9E,MAAM,GAAG,GAAG,OAAO,UAAU,CAAC,SAAS,KAAK,WAAW;YACnD,CAAC,CAAC,aAAa,QAAQ,IAAI,UAAU,CAAC,IAAI,IAAI,UAAU,CAAC,SAAS,EAAE;YACpE,CAAC,CAAC,aAAa,QAAQ,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;IAC5C,CAAC;IAEO,gBAAgB,CAAC,QAAgB,EAAE,UAA0C;QACjF,OAAO,IAAI,CAAC,sBAAsB,CAAC,gBAAgB,QAAQ,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IACtF,CAAC;IAEa,cAAc,CAAC,GAAwB;;YACjD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,MAAM,cAAc,GAAG,IAAI,CAAC,oBAAoB,CAAC;YACjD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;YAEjC,IAAI,IAAI,CAAC,cAAc,EAAE;gBACrB,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,cAAc,EAAE;oBAC1C,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,UAAU,UAAU,EAAE,CAAC,CAAC;oBAC5E,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE;wBAC7B,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,OAAO,EAAE;4BACpC,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,WAAW,EAAE;gCACrC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,oBAAsB,CAAC;6BACrE;yBACJ;qBACJ;yBAAM,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE;wBACnC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,sBAAuB,CAAC;qBAC1D;iBACJ;gBACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;aAC9B;YAED,IAAI,IAAI,CAAC,qBAAqB,EAAE;gBAC5B,KAAK,MAAM,aAAa,IAAI,IAAI,CAAC,qBAAqB,EAAE;oBACpD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,UAAU,aAAa,EAAE,CAAC,CAAC;oBAC/E,IAAI,SAAS,CAAC,IAAI,KAAK,QAAQ,EAAE;wBAC7B,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,OAAO,EAAE;4BACpC,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,WAAW,EAAE;gCACrC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,oBAAsB,CAAC;6BACrE;yBACJ;qBACJ;yBAAM,IAAI,SAAS,CAAC,IAAI,KAAK,OAAO,EAAE;wBACnC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,sBAAuB,CAAC;qBAC1D;iBACJ;gBACD,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;aACrC;YAED,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBACzB,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;gBAEhC,MAAM,IAAI,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC;gBAEjD,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,eAAe,EAAE;oBACzC,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAqC,CAAC;oBACvF,KAAK,MAAM,UAAU,IAAI,WAAW,EAAE;wBAClC,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;qBAClD;iBACJ;aACJ;YAED,IAAI,GAAG,CAAC,SAAS,KAAK,OAAO,EAAE;gBAC3B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,sBAAuB,CAAC;gBAEnD,MAAM,GAAG,GAA+B,IAAI,2BAAY,CAAC,WAAW,EAAE,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;gBACjG,GAAG,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;gBAClC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACpB,OAAO;aACV;YAED,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACvB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;gBAC9B,IAAI,CAAC,oBAAoB,GAAG,cAAc,CAAC;gBAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC;aAE7C;iBAAM;gBACH,MAAM,GAAG,GAA+B,IAAI,2BAAY,CAAC,YAAY,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACrF,GAAG,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;gBAClC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;aACvB;QACL,CAAC;KAAA;IAEO,kBAAkB,CAAC,GAAqB;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;QACjD,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE;YAChC,OAAO,CAAC,GAAG,CAAC,CAAC;SAChB;IACL,CAAC;IAEa,gBAAgB,CAAC,IAAa;;YACxC,IAAI,CAAC,UAAU,IAAI,GAAG,IAAI,EAAE,CAAC;YAE7B,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,GAAG,iBAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC1E,IAAI,UAA2C,CAAC;YAChD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE;gBACxB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,0BAAyB,CAAC;gBAC7D,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE;oBAC3B,UAAU,GAAG,GAAG,CAAC;iBACpB;qBAAM;oBACH,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;iBAChC;aACJ;YAED,IAAI,CAAC,UAAU,CAAC,SAAS,wBAAwB,CAAC;YAElD,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC;YAE9B,IAAI,OAAO,UAAU,KAAK,WAAW,EAAE;gBACnC,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;aACzC;QACL,CAAC;KAAA;IAEO,oBAAoB,CAAC,MAAc,EAAE,QAAQ,oBAAsB;QACvE,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE;YACvB,OAAO;SACV;QAED,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YACvB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACzB;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAElC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,wBAAwB,CAAC;YACxD,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;SACxB;QAED,IAAI,CAAC,UAAU,CAAC,oBAAoB,MAAM,EAAE,EAAE,QAAQ,CAAC,CAAC;QACxD,IAAI,CAAC,SAAS,CAAC,IAAI,8BAAe,EAAE,CAAC,CAAC;IAC1C,CAAC;IAEO,WAAW,CAAC,GAAW;;QAC3B,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;YACzC,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,CAAC,UAAU,CAAC,GAAG,0BAAyB,CAAC;QAC7C,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC3B,MAAA,IAAI,CAAC,SAAS,0CAAE,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;SACrC;aAAM;YACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;SACrD;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,sBAAsB,CAAC,GAAW;QACtC,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;YACvB,OAAO,IAAI,OAAO,CACd,OAAO,CAAC,EAAE;gBACN,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3C,CAAC,CACJ,CAAC;SACL;aAAM;YACH,OAAO,OAAO,CAAC,OAAO,CAAC,EAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,wBAAwB,EAAC,CAAC,CAAC;SAC9F;IACL,CAAC;IAEO,UAAU,CAAC,GAAW,EAAE,QAAwB;QACpD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;YAClB,OAAO;SAEV;aAAM,IAAI,QAAQ,0BAA0B,IAAI,QAAQ,0BAA0B,EAAE;YACjF,IAAI,CAAC,SAAS,CAAC,IAAI,0BAAW,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;SAElD;aAAM,IAAI,QAAQ,wBAAyB,EAAE;YAC1C,IAAI,CAAC,SAAS,CAAC,IAAI,0BAAW,CAAC,MAAM,QAAQ,KAAK,GAAG,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;SAEzE;aAAM,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,IAAI,EAAE;YAC3E,IAAI,CAAC,SAAS,CAAC,IAAI,0BAAW,CAAC,MAAM,QAAQ,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;SAC/D;IACL,CAAC;IAEO,oBAAoB;QACxB,OAAO,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACjF,CAAC;CACJ;AAz3BD,0CAy3BC"} \ No newline at end of file diff --git a/extension/message.js b/extension/message.js deleted file mode 100644 index 873d851..0000000 --- a/extension/message.js +++ /dev/null @@ -1,79 +0,0 @@ -"use strict"; -//MIT License -// -//Copyright (c) 2020 Tom Blind -// -//Permission is hereby granted, free of charge, to any person obtaining a copy -//of this software and associated documentation files (the "Software"), to deal -//in the Software without restriction, including without limitation the rights -//to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -//copies of the Software, and to permit persons to whom the Software is -//furnished to do so, subject to the following conditions: -// -//The above copyright notice and this permission notice shall be included in all -//copies or substantial portions of the Software. -// -//THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -//IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -//FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -//AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -//LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -//OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -//SOFTWARE. -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Message = void 0; -var Message; -(function (Message) { - function isMessage(obj) { - return obj !== null && typeof obj !== "undefined" && obj.tag === "$luaDebug"; - } - const startToken = "@lldbg|"; - const endToken = "|lldbg@"; - function parseMessage(text, position) { - const firstStart = text.indexOf(startToken, position); - if (firstStart === -1) { - return { leadingText: text.substring(position), newPosition: text.length }; - } - let start = firstStart; - while (true) { - const messageStart = start + startToken.length; - let messageEnd = text.indexOf(endToken, messageStart); - while (messageEnd >= 0) { - const possibleMessage = text.substring(messageStart, messageEnd); - let message; - try { - message = JSON.parse(possibleMessage); - } - catch (_a) { - } - const end = messageEnd + endToken.length; - if (isMessage(message)) { - return { leadingText: text.substring(position, start), newPosition: end, message }; - } - messageEnd = text.indexOf(endToken, end); - } - start = text.indexOf(startToken, messageStart); - if (start < 0) { - break; - } - } - return { leadingText: text.substring(position, firstStart), newPosition: firstStart }; - } - function parse(text) { - const messages = []; - const processed = []; - let position = 0; - while (position < text.length) { - const result = parseMessage(text, position); - processed.push(result.leadingText); - position = result.newPosition; - if (!result.message) { - break; - } - messages.push(result.message); - } - return [messages, processed.join(""), text.substring(position)]; - } - Message.parse = parse; -})(Message = exports.Message || (exports.Message = {})); -//# sourceMappingURL=message.js.map \ No newline at end of file diff --git a/extension/message.js.map b/extension/message.js.map deleted file mode 100644 index 00fcde42..0000000 --- a/extension/message.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"message.js","sourceRoot":"","sources":["message.ts"],"names":[],"mappings":";AAAA,aAAa;AACb,EAAE;AACF,8BAA8B;AAC9B,EAAE;AACF,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAC9E,2EAA2E;AAC3E,uEAAuE;AACvE,0DAA0D;AAC1D,EAAE;AACF,gFAAgF;AAChF,iDAAiD;AACjD,EAAE;AACF,4EAA4E;AAC5E,0EAA0E;AAC1E,6EAA6E;AAC7E,wEAAwE;AACxE,+EAA+E;AAC/E,+EAA+E;AAC/E,WAAW;;;AAEX,IAAiB,OAAO,CA2DvB;AA3DD,WAAiB,OAAO;IACpB,SAAS,SAAS,CAAC,GAAuC;QACtD,OAAO,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,WAAW,IAAK,GAAiC,CAAC,GAAG,KAAK,WAAW,CAAC;IAChH,CAAC;IAED,MAAM,UAAU,GAAwB,SAAS,CAAC;IAClD,MAAM,QAAQ,GAAsB,SAAS,CAAC;IAQ9C,SAAS,YAAY,CAAC,IAAY,EAAE,QAAgB;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACtD,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE;YACnB,OAAO,EAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,MAAM,EAAC,CAAC;SAC5E;QACD,IAAI,KAAK,GAAG,UAAU,CAAC;QACvB,OAAO,IAAI,EAAE;YACT,MAAM,YAAY,GAAG,KAAK,GAAI,UAAqB,CAAC,MAAM,CAAC;YAC3D,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YACtD,OAAO,UAAU,IAAI,CAAC,EAAE;gBACpB,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;gBACjE,IAAI,OAAgB,CAAC;gBACrB,IAAI;oBACA,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;iBACzC;gBAAC,WAAM;iBACP;gBACD,MAAM,GAAG,GAAG,UAAU,GAAI,QAAmB,CAAC,MAAM,CAAC;gBACrD,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE;oBACpB,OAAO,EAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,EAAC,CAAC;iBACpF;gBACD,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;aAC5C;YACD,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;YAC/C,IAAI,KAAK,GAAG,CAAC,EAAE;gBACX,MAAM;aACT;SACJ;QACD,OAAO,EAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,WAAW,EAAE,UAAU,EAAC,CAAC;IACxF,CAAC;IAED,SAAgB,KAAK,CAAC,IAAY;QAC9B,MAAM,QAAQ,GAAuB,EAAE,CAAC;QACxC,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,OAAO,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE;YAC3B,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YAC5C,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACnC,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;gBACjB,MAAM;aACT;YACD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;SACjC;QACD,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpE,CAAC;IAde,aAAK,QAcpB,CAAA;AACL,CAAC,EA3DgB,OAAO,GAAP,eAAO,KAAP,eAAO,QA2DvB"} \ No newline at end of file From 3e517468a4b13a121abd14f705a6d6b60ef52384 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Mez=C3=AAncio?= Date: Tue, 4 Jun 2024 22:33:29 -0300 Subject: [PATCH 39/49] Add generated files to .gitignore --- .gitignore | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index ec82c02..7b8eb5c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ **/*.vsix -node_modules \ No newline at end of file +*.js +*.map +debugger/lldebugger.lua +node_modules From e0dd492d7d327b7f3b59749b0b48dca97c1185c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Mez=C3=AAncio?= Date: Wed, 19 Jun 2024 02:26:31 -0300 Subject: [PATCH 40/49] Remove the extensionPath config (#17) --- extension/extension.ts | 6 ------ extension/launchConfig.ts | 1 - extension/luaDebugSession.ts | 4 ++-- 3 files changed, 2 insertions(+), 9 deletions(-) diff --git a/extension/extension.ts b/extension/extension.ts index a9d3bf2..4121ab7 100644 --- a/extension/extension.ts +++ b/extension/extension.ts @@ -97,12 +97,6 @@ const configurationProvider: vscode.DebugConfigurationProvider = { return abortLaunch("No path for debugger"); } - const extension = vscode.extensions.getExtension("ismoh-games.second-local-lua-debugger-vscode"); - if (typeof extension === "undefined") { - return abortLaunch("Failed to find extension path"); - } - config.extensionPath = extension.extensionPath; - if (typeof config.cwd === "undefined") { config.cwd = config.workspacePath; } diff --git a/extension/launchConfig.ts b/extension/launchConfig.ts index aa5bcbe..c27d395 100644 --- a/extension/launchConfig.ts +++ b/extension/launchConfig.ts @@ -32,7 +32,6 @@ export interface CustomProgramConfig { } export interface LaunchConfig { - extensionPath: string; workspacePath: string; program: LuaProgramConfig | CustomProgramConfig; args?: string[]; diff --git a/extension/luaDebugSession.ts b/extension/luaDebugSession.ts index 884d36b..87bcc8e 100644 --- a/extension/luaDebugSession.ts +++ b/extension/luaDebugSession.ts @@ -234,7 +234,7 @@ export class LuaDebugSession extends LoggingDebugSession { //Set an environment variable so the debugger can detect the attached extension processOptions.env[envVariable] = "1"; processOptions.env[filePathEnvVariable] - = `${this.config.extensionPath}${path.sep}debugger${path.sep}lldebugger.lua`; + = path.join(path.dirname(__dirname), "debugger", "lldebugger.lua"); //Pass options via environment variables if (typeof this.config.scriptRoots !== "undefined") { @@ -839,7 +839,7 @@ export class LuaDebugSession extends LoggingDebugSession { luaPath += ";"; } - env[luaPathKey] = `${luaPath}${this.assert(this.config).extensionPath}/debugger/?.lua`; + env[luaPathKey] = `${luaPath}${path.dirname(__dirname)}/debugger/?.lua`; } private setBreakpoint(filePath: string, breakpoint: DebugProtocol.SourceBreakpoint) { From 90dc94f51a36528ede5a42e2c9738af4aabc96c8 Mon Sep 17 00:00:00 2001 From: snyk-bot Date: Sat, 21 Sep 2024 12:08:33 +0000 Subject: [PATCH 41/49] fix: upgrade @vscode/debugadapter from 1.65.0 to 1.67.0 Snyk has created this PR to upgrade @vscode/debugadapter from 1.65.0 to 1.67.0. See this package in npm: @vscode/debugadapter See this project in Snyk: https://app.snyk.io/org/ismoh/project/3471efa2-c570-43e7-9f4f-e160c298de38?utm_source=github&utm_medium=referral&page=upgrade-pr --- package-lock.json | 18 ++++++++++-------- package.json | 2 +- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 07b29d9..583c2ec 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "0.3.8", "license": "MIT", "dependencies": { - "@vscode/debugadapter": "^1.65.0" + "@vscode/debugadapter": "^1.67.0" }, "devDependencies": { "@types/node": "^16.4.13", @@ -378,20 +378,22 @@ } }, "node_modules/@vscode/debugadapter": { - "version": "1.65.0", - "resolved": "https://registry.npmjs.org/@vscode/debugadapter/-/debugadapter-1.65.0.tgz", - "integrity": "sha512-l9jdX0GFoFVAc7O4O8iVnCjO0pgxbx+wJJXCaYSuglGtYwMNcJdc7xm96cuVx4LWzSqneIjvjzbuzZtoVZhZzQ==", + "version": "1.67.0", + "resolved": "https://registry.npmjs.org/@vscode/debugadapter/-/debugadapter-1.67.0.tgz", + "integrity": "sha512-AzCiKbRdOheHFaTJ2BVdfGuREIOhNEtMUVDv4lJqIPCfZ/60tXELvVSOFGG+6hNMiMaSrAcXP9sPSlZLZEsmLA==", + "license": "MIT", "dependencies": { - "@vscode/debugprotocol": "1.65.0" + "@vscode/debugprotocol": "1.67.0" }, "engines": { "node": ">=14" } }, "node_modules/@vscode/debugprotocol": { - "version": "1.65.0", - "resolved": "https://registry.npmjs.org/@vscode/debugprotocol/-/debugprotocol-1.65.0.tgz", - "integrity": "sha512-ejerrPMBXzYms6Ks+Gb7cdXtdncmT0xwIKNsc0c/SxhEa0HVY5jdvLUegYE91p7CQJpCnXOD/r2CvViN8txLLA==" + "version": "1.67.0", + "resolved": "https://registry.npmjs.org/@vscode/debugprotocol/-/debugprotocol-1.67.0.tgz", + "integrity": "sha512-vTn5JwZ+LQy2QqT/wUD8Rlrb+7eLo5fsiKIxD5i0BZIuvdRbxTTfGU7+47PsorMrfBzozngIrocKCKS3OVnYyw==", + "license": "MIT" }, "node_modules/@vscode/vsce": { "version": "2.23.0", diff --git a/package.json b/package.json index cf8d3e9..b28c4ef 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "publish": "npm run bundle && vsce publish" }, "dependencies": { - "@vscode/debugadapter": "^1.65.0" + "@vscode/debugadapter": "^1.67.0" }, "devDependencies": { "@types/node": "^16.4.13", From 16fc01f5c6b38b0ae8a8e6b01922fdba9dd68f28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Eduardo=20Mez=C3=AAncio?= Date: Sun, 12 Oct 2025 14:37:57 -0300 Subject: [PATCH 42/49] Fix #25: Change the error wrapper to pass the original error intact (#26) --- debugger/debugger.ts | 2 +- debugger/lib.lua51.d.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/debugger/debugger.ts b/debugger/debugger.ts index 2fcee0f..b9d07b6 100644 --- a/debugger/debugger.ts +++ b/debugger/debugger.ts @@ -1042,7 +1042,7 @@ export namespace Debugger { if (propagate) { skipNextBreak = true; - luaError(message, level); + luaError(err, level); } } diff --git a/debugger/lib.lua51.d.ts b/debugger/lib.lua51.d.ts index 5fd09a3..7eeabb6 100644 --- a/debugger/lib.lua51.d.ts +++ b/debugger/lib.lua51.d.ts @@ -125,7 +125,7 @@ declare function dofile(this: void, filename?: string): LuaMultiReturn Date: Mon, 13 Oct 2025 13:37:22 +0200 Subject: [PATCH 43/49] chore: update CHANGELOG.md for v0.3.9 Refs: #26 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 277752f..a229b4d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Changelog +## Version 0.3.9 + +- fix: [#25](https://github.com/Ismoh/local-lua-debugger-vscode/issues/25): Change the error wrapper to pass the original error intact ([#26](https://github.com/Ismoh/local-lua-debugger-vscode/pull/26)) + ## Version 0.3.8 - fix: breakpoints don't work if love2d is used with scriptRoots From b9f74cd58e1da29cac38fa3a86864a8f9a6e88a6 Mon Sep 17 00:00:00 2001 From: Ismoh <12631485+Ismoh@users.noreply.github.com> Date: Mon, 13 Oct 2025 13:41:39 +0200 Subject: [PATCH 44/49] chore: apply changes for new version --- .vscode/tasks.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.vscode/tasks.json b/.vscode/tasks.json index 45ed99f..33329a6 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -62,7 +62,7 @@ { "label": "Create new release", "type": "shell", - "command": "npm install; npm run bundle; git commit -a -m 'Apply changes for new version'; git push; git tag -a release-v${input:release-version} -m 'release-v${input:release-version}'; git push origin release-v${input:release-version}; git push origin --tags", + "command": "npm install; npm run bundle; git commit -a -m 'chore: apply changes for new version'; git push; git tag -a release-v${input:release-version} -m 'release-v${input:release-version}'; git push origin release-v${input:release-version}; git push origin --tags", "problemMatcher": ["$tsc"] } ], From e46daa862c211e2a930b7978d0c37ba2506f04dc Mon Sep 17 00:00:00 2001 From: Ismoh <12631485+Ismoh@users.noreply.github.com> Date: Mon, 13 Oct 2025 13:58:09 +0200 Subject: [PATCH 45/49] chore: missed to bump version Refs: #26 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 583c2ec..400089b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "second-local-lua-debugger-vscode", - "version": "0.3.8", + "version": "0.3.9", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "second-local-lua-debugger-vscode", - "version": "0.3.8", + "version": "0.3.9", "license": "MIT", "dependencies": { "@vscode/debugadapter": "^1.67.0" diff --git a/package.json b/package.json index b28c4ef..4de0f45 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "second-local-lua-debugger-vscode", "publisher": "ismoh-games", - "version": "0.3.8", + "version": "0.3.9", "description": "Second Local Lua Debugger - simple Lua debugger with no dependencies - forked from https://github.com/tomblind/local-lua-debugger-vscode", "displayName": "Second Local Lua Debugger", "icon": "resources/Lua-Logo_128x128.png", From 81256fcd06cf3efbebaa435991a3a5b69f51c049 Mon Sep 17 00:00:00 2001 From: "Torben H." Date: Mon, 13 Oct 2025 16:29:26 +0200 Subject: [PATCH 46/49] Create delete-me.yml chore: add temporary workaround being able to run actions outside of master context --- .github/workflows/delete-me.yml | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .github/workflows/delete-me.yml diff --git a/.github/workflows/delete-me.yml b/.github/workflows/delete-me.yml new file mode 100644 index 0000000..872b37b --- /dev/null +++ b/.github/workflows/delete-me.yml @@ -0,0 +1,2 @@ +name: workaround - delete me +on: workflow_dispatch From c8d0cdecf3284fc10c41ea1593bc58a65b0aa8d4 Mon Sep 17 00:00:00 2001 From: "Torben H." Date: Mon, 13 Oct 2025 16:30:55 +0200 Subject: [PATCH 47/49] Update delete-me.yml chore: add temporary workaround being able to run actions outside of master context --- .github/workflows/delete-me.yml | 51 ++++++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/.github/workflows/delete-me.yml b/.github/workflows/delete-me.yml index 872b37b..d7f0a64 100644 --- a/.github/workflows/delete-me.yml +++ b/.github/workflows/delete-me.yml @@ -1,2 +1,51 @@ -name: workaround - delete me +name: Release tag before publish on: workflow_dispatch +jobs: + release-tag: + name: Create new release tag + runs-on: ubuntu-latest + steps: + - name: Bump version + run: | + if git diff --quiet CHANGELOG.md; then + message='Unable to find actual changes in CHANGELOG.md. Do proper changes and rerun this job!' + echo "::error file={name},line={line},endLine={endLine},title={title}::{message}" + exit 1 + fi + + prevVer=$(node -p "require('./package.json').version") + echo "Current version: $prevVer" + + msgs=$(git log --oneline $(git describe --tags --abbrev=0)..HEAD) + + if [[ ${msgs,,} =~ ^(fix|refactoring) ]]; then + npm --no-git-tag-version version patch + else + echo "no 'fix' or 'refactoring' commit message found.." + fi + + if [[ ${msgs,,} =~ ^(feat) ]]; then + npm --no-git-tag-version version minor + else + echo "no 'feat' commit meassage found.." + fi + + if [[ ${msgs,,} =~ ^(breaking change|!) ]]; then + npm --no-git-tag-version version patch + else + echo "no 'BREAKING CHANGE' or '!' found.." + fi + + newVer=$(node -p "require('./package.json').version") + + if [[ "$prevVer" == "$newVer" ]]; then + message='Unable to find actual version changes. Did you use proper conventional commit messages?' + echo "::error file={name},line={line},endLine={endLine},title={title}::{message}" + exit 1 + fi + + #clean + rm debugger/*.lua; rm debugger/*.lua.map; rm extension/*.js; rm extension/*.js.map; rm *.vsix + npm lint + npm build + npm bundle From 4fa0d1192bc6781f36c4513be08f6e3eba39eefa Mon Sep 17 00:00:00 2001 From: Ismoh <12631485+Ismoh@users.noreply.github.com> Date: Mon, 13 Oct 2025 16:33:25 +0200 Subject: [PATCH 48/49] chore: add temporary workaround being able to run actions outside of master context Refs: #14 --- .github/workflows/{delete-me.yml => release-tag.yml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename .github/workflows/{delete-me.yml => release-tag.yml} (100%) diff --git a/.github/workflows/delete-me.yml b/.github/workflows/release-tag.yml similarity index 100% rename from .github/workflows/delete-me.yml rename to .github/workflows/release-tag.yml From be320548acf2419bab749baf00e8f59f718c6cc1 Mon Sep 17 00:00:00 2001 From: Ismoh <12631485+Ismoh@users.noreply.github.com> Date: Mon, 13 Oct 2025 18:18:41 +0200 Subject: [PATCH 49/49] chore: remove GitHub action workaround --- .github/workflows/release-tag.yml | 51 ------------------------------- 1 file changed, 51 deletions(-) delete mode 100644 .github/workflows/release-tag.yml diff --git a/.github/workflows/release-tag.yml b/.github/workflows/release-tag.yml deleted file mode 100644 index d7f0a64..0000000 --- a/.github/workflows/release-tag.yml +++ /dev/null @@ -1,51 +0,0 @@ -name: Release tag before publish -on: workflow_dispatch -jobs: - release-tag: - name: Create new release tag - runs-on: ubuntu-latest - steps: - - name: Bump version - run: | - if git diff --quiet CHANGELOG.md; then - message='Unable to find actual changes in CHANGELOG.md. Do proper changes and rerun this job!' - echo "::error file={name},line={line},endLine={endLine},title={title}::{message}" - exit 1 - fi - - prevVer=$(node -p "require('./package.json').version") - echo "Current version: $prevVer" - - msgs=$(git log --oneline $(git describe --tags --abbrev=0)..HEAD) - - if [[ ${msgs,,} =~ ^(fix|refactoring) ]]; then - npm --no-git-tag-version version patch - else - echo "no 'fix' or 'refactoring' commit message found.." - fi - - if [[ ${msgs,,} =~ ^(feat) ]]; then - npm --no-git-tag-version version minor - else - echo "no 'feat' commit meassage found.." - fi - - if [[ ${msgs,,} =~ ^(breaking change|!) ]]; then - npm --no-git-tag-version version patch - else - echo "no 'BREAKING CHANGE' or '!' found.." - fi - - newVer=$(node -p "require('./package.json').version") - - if [[ "$prevVer" == "$newVer" ]]; then - message='Unable to find actual version changes. Did you use proper conventional commit messages?' - echo "::error file={name},line={line},endLine={endLine},title={title}::{message}" - exit 1 - fi - - #clean - rm debugger/*.lua; rm debugger/*.lua.map; rm extension/*.js; rm extension/*.js.map; rm *.vsix - npm lint - npm build - npm bundle