vscode-jsonrpc
Advanced tools
Comparing version 2.0.0 to 2.1.0
@@ -14,7 +14,18 @@ import { RequestType, ResponseError, ErrorCodes, NotificationType } from './messages'; | ||
export interface Logger { | ||
error(message: string): any; | ||
warn(message: string): any; | ||
info(message: string): any; | ||
log(message: string): any; | ||
error(message: string): void; | ||
warn(message: string): void; | ||
info(message: string): void; | ||
log(message: string): void; | ||
} | ||
export declare enum Trace { | ||
Off = 0, | ||
Messages = 1, | ||
Verbose = 2, | ||
} | ||
export declare namespace Trace { | ||
function fromString(value: string): Trace; | ||
} | ||
export interface Tracer { | ||
log(message: string): void; | ||
} | ||
export interface MessageConnection { | ||
@@ -25,2 +36,3 @@ sendRequest<P, R, E>(type: RequestType<P, R, E>, params: P, token?: CancellationToken): Thenable<R>; | ||
onNotification<P>(type: NotificationType<P>, handler: NotificationHandler<P>): void; | ||
trace(value: Trace, tracer: Tracer): void; | ||
listen(): any; | ||
@@ -27,0 +39,0 @@ dispose(): void; |
@@ -26,2 +26,25 @@ /* -------------------------------------------------------------------------------------------- | ||
})(CancelNotification || (CancelNotification = {})); | ||
(function (Trace) { | ||
Trace[Trace["Off"] = 0] = "Off"; | ||
Trace[Trace["Messages"] = 1] = "Messages"; | ||
Trace[Trace["Verbose"] = 2] = "Verbose"; | ||
})(exports.Trace || (exports.Trace = {})); | ||
var Trace = exports.Trace; | ||
var Trace; | ||
(function (Trace) { | ||
function fromString(value) { | ||
value = value.toLowerCase(); | ||
switch (value) { | ||
case 'off': | ||
return Trace.Off; | ||
case 'messages': | ||
return Trace.Messages; | ||
case 'verbose': | ||
return Trace.Verbose; | ||
default: | ||
return Trace.Off; | ||
} | ||
} | ||
Trace.fromString = fromString; | ||
})(Trace = exports.Trace || (exports.Trace = {})); | ||
function createMessageConnection(messageReader, messageWriter, logger, client) { | ||
@@ -35,2 +58,4 @@ if (client === void 0) { client = false; } | ||
var requestTokens = Object.create(null); | ||
var trace = Trace.Off; | ||
var tracer; | ||
function handleRequest(requestMessage) { | ||
@@ -124,10 +149,13 @@ function reply(resultOrError) { | ||
var key = String(responseMessage.id); | ||
var responseHandler = responsePromises[key]; | ||
if (responseHandler) { | ||
var responsePromise = responsePromises[key]; | ||
if (trace != Trace.Off && tracer) { | ||
traceResponse(responseMessage, responsePromise); | ||
} | ||
if (responsePromise) { | ||
try { | ||
if (is.defined(responseMessage.error)) { | ||
responseHandler.reject(responseMessage.error); | ||
responsePromise.reject(responseMessage.error); | ||
} | ||
else if (is.defined(responseMessage.result)) { | ||
responseHandler.resolve(responseMessage.result); | ||
responsePromise.resolve(responseMessage.result); | ||
} | ||
@@ -141,6 +169,6 @@ else { | ||
if (error.message) { | ||
logger.error("Response handler '" + responseHandler.method + "' failed with message: " + error.message); | ||
logger.error("Response handler '" + responsePromise.method + "' failed with message: " + error.message); | ||
} | ||
else { | ||
logger.error("Response handler '" + responseHandler.method + "' failed unexpectedly."); | ||
logger.error("Response handler '" + responsePromise.method + "' failed unexpectedly."); | ||
} | ||
@@ -194,2 +222,41 @@ } | ||
} | ||
function traceRequest(message) { | ||
tracer.log("[" + (new Date().toLocaleTimeString()) + "] Sending request '" + message.method + " - (" + message.id + ")'."); | ||
if (trace === Trace.Verbose && message.params) { | ||
tracer.log("Params: " + JSON.stringify(message.params, null, 4) + "\n\n"); | ||
} | ||
} | ||
function traceNotification(message) { | ||
tracer.log("[" + (new Date().toLocaleTimeString()) + "] Sending notification '" + message.method + "'."); | ||
if (trace === Trace.Verbose) { | ||
if (message.params) { | ||
tracer.log("Params: " + JSON.stringify(message.params, null, 4) + "\n\n"); | ||
} | ||
else { | ||
tracer.log('No parameters provided.\n\n'); | ||
} | ||
} | ||
} | ||
function traceResponse(message, responsePromise) { | ||
if (responsePromise) { | ||
var error = message.error ? " Request failed: " + message.error.message + " (" + message.error.code + ")." : ''; | ||
tracer.log("[" + (new Date().toLocaleTimeString()) + "] Recevied response '" + responsePromise.method + " - (" + message.id + ")' in " + (Date.now() - responsePromise.timerStart) + "ms." + error); | ||
} | ||
else { | ||
tracer.log("[" + (new Date().toLocaleTimeString()) + "] Recevied response " + message.id + " without active response promise."); | ||
} | ||
if (trace === Trace.Verbose) { | ||
if (message.error && message.error.data) { | ||
tracer.log("Error data: " + JSON.stringify(message.error.data, null, 4) + "\n\n"); | ||
} | ||
else { | ||
if (message.result) { | ||
tracer.log("Result: " + JSON.stringify(message.result, null, 4) + "\n\n"); | ||
} | ||
else { | ||
tracer.log('No result returned.\n\n'); | ||
} | ||
} | ||
} | ||
} | ||
var callback = function (message) { | ||
@@ -216,2 +283,5 @@ if (messages_1.isRequestMessage(message)) { | ||
}; | ||
if (trace != Trace.Off && tracer) { | ||
traceNotification(notificatioMessage); | ||
} | ||
messageWriter.write(notificatioMessage); | ||
@@ -231,3 +301,6 @@ }, | ||
}; | ||
responsePromises[String(id)] = { method: type.method, resolve: resolve, reject: reject }; | ||
responsePromises[String(id)] = { method: type.method, timerStart: Date.now(), resolve: resolve, reject: reject }; | ||
if (trace != Trace.Off && tracer) { | ||
traceRequest(requestMessage); | ||
} | ||
messageWriter.write(requestMessage); | ||
@@ -245,2 +318,11 @@ }); | ||
}, | ||
trace: function (_value, _tracer) { | ||
trace = _value; | ||
if (trace === Trace.Off) { | ||
tracer = null; | ||
} | ||
else { | ||
tracer = _tracer; | ||
} | ||
}, | ||
dispose: function () { | ||
@@ -247,0 +329,0 @@ }, |
{ | ||
"name": "vscode-jsonrpc", | ||
"description": "A json rpc implementation over streams", | ||
"version": "2.0.0", | ||
"version": "2.1.0", | ||
"author": "Microsoft Corporation", | ||
@@ -6,0 +6,0 @@ "license": "MIT", |
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
49103
1181