@typescript/server-replay
Advanced tools
Comparing version 0.2.11 to 0.2.12
@@ -5,3 +5,3 @@ { | ||
"homepage": "https://github.com/microsoft/typescript-server-replay#readme", | ||
"version": "0.2.11", | ||
"version": "0.2.12", | ||
"license": "MIT", | ||
@@ -8,0 +8,0 @@ "description": "Replay server requests from a file", |
@@ -35,3 +35,14 @@ const sh = require("@typescript/server-harness"); | ||
}, | ||
"s": { | ||
alias: ["simple"], | ||
describe: "Replay only file opening and closing, plus the final request", | ||
type: "boolean", | ||
}, | ||
"S": { | ||
alias: ["superSimple", "super-simple"], | ||
describe: "Replay only the final file opening and the final request", | ||
type: "boolean", | ||
}, | ||
}) | ||
.conflicts("s", "S") | ||
.help("h").alias("h", "help") | ||
@@ -52,2 +63,4 @@ .strict()) | ||
const unattended = !!args.u; | ||
const simple = !!args.s; | ||
const superSimple = !!args.S; | ||
@@ -84,3 +97,3 @@ /** | ||
let sawExit = false; | ||
const requests = []; | ||
let requests = []; | ||
@@ -111,3 +124,3 @@ | ||
} | ||
if (request.command === "applyChangedToOpenFiles") { | ||
else if (request.command === "applyChangedToOpenFiles") { | ||
for (const openFile of request.arguments.openFiles) { | ||
@@ -137,2 +150,9 @@ const openFileContents = fs.readFileSync(openFile.fileName, { encoding: "utf-8" }); | ||
if (!requests.length) { | ||
if (!unattended) { | ||
console.log("No requests to replay"); | ||
} | ||
process.exit(0); | ||
} | ||
if (!sawExit && !unattended) { | ||
@@ -142,2 +162,68 @@ requests.push({ "seq": 999999, "command": "exit" }); | ||
if (simple) { | ||
const newRequests = []; | ||
let i = 0; | ||
if (requests[i].command === "configure") { | ||
newRequests.push(requests[i]); | ||
i++; | ||
} | ||
let j = requests.length - 1; | ||
if (requests[j].command === "exit") { | ||
j--; | ||
} | ||
for (; i < j; i++) { | ||
const req = requests[i]; | ||
if (req.command === "updateOpen" || req.command === "applyChangedToOpenFiles") { | ||
if (req.arguments.openFiles?.length || req.arguments.closedFiles?.length) { | ||
newRequests.push(req); | ||
} | ||
} | ||
} | ||
for (j = Math.max(i, j); j < requests.length; j++) { | ||
newRequests.push(requests[j]); | ||
} | ||
requests = newRequests; | ||
} | ||
else if (superSimple) { | ||
const newRequests = []; | ||
let h = 0; | ||
if (requests[h].command === "configure") { | ||
newRequests.push(requests[h]); | ||
h++; | ||
} | ||
let i = requests.length - 1; | ||
for (; i >= h; i--) { | ||
const req = requests[i]; | ||
if (req.command === "updateOpen" || req.command === "applyChangedToOpenFiles") { | ||
if (req.arguments.openFiles?.length) { | ||
// We're not opening other files, so changeFiles and closeFiles can only cause problems, if they're present | ||
req.arguments.changedFiles = []; | ||
req.arguments.closedFiles = []; | ||
newRequests.push(req); | ||
break; | ||
} | ||
} | ||
} | ||
// NB: i === h-1 if no file open request was found and i >= h-1 in all cases | ||
let j = requests.length - 1; | ||
if (requests[j].command === "exit") { | ||
if (j - 1 > i) { | ||
newRequests.push(requests[j - 1]); | ||
} | ||
newRequests.push(requests[j]); | ||
} | ||
else if (j > i) { | ||
newRequests.push(requests[j]); | ||
} | ||
requests = newRequests; | ||
} | ||
if (traceDir) { | ||
@@ -144,0 +230,0 @@ await fs.promises.mkdir(traceDir, { recursive: true }); |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
17965
287