vscode-jsonrpc
Advanced tools
Comparing version 8.0.0-next.3 to 8.0.0-next.4
@@ -8,5 +8,6 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.ConnectionErrors = exports.LogTraceNotification = exports.SetTraceNotification = exports.TraceFormat = exports.Trace = exports.ProgressType = exports.createMessageConnection = exports.NullLogger = exports.ConnectionOptions = exports.ConnectionStrategy = exports.WriteableStreamMessageWriter = exports.AbstractMessageWriter = exports.MessageWriter = exports.ReadableStreamMessageReader = exports.AbstractMessageReader = exports.MessageReader = exports.CancellationToken = exports.CancellationTokenSource = exports.Emitter = exports.Event = exports.Disposable = exports.LRUCache = exports.Touch = exports.LinkedMap = exports.ParameterStructures = exports.NotificationType9 = exports.NotificationType8 = exports.NotificationType7 = exports.NotificationType6 = exports.NotificationType5 = exports.NotificationType4 = exports.NotificationType3 = exports.NotificationType2 = exports.NotificationType1 = exports.NotificationType0 = exports.NotificationType = exports.ErrorCodes = exports.ResponseError = exports.RequestType9 = exports.RequestType8 = exports.RequestType7 = exports.RequestType6 = exports.RequestType5 = exports.RequestType4 = exports.RequestType3 = exports.RequestType2 = exports.RequestType1 = exports.RequestType0 = exports.RequestType = exports.RAL = void 0; | ||
exports.CancellationStrategy = exports.CancellationSenderStrategy = exports.CancellationReceiverStrategy = exports.ConnectionError = void 0; | ||
exports.SetTraceNotification = exports.TraceFormat = exports.Trace = exports.ProgressType = exports.ProgressToken = exports.createMessageConnection = exports.NullLogger = exports.ConnectionOptions = exports.ConnectionStrategy = exports.WriteableStreamMessageWriter = exports.AbstractMessageWriter = exports.MessageWriter = exports.ReadableStreamMessageReader = exports.AbstractMessageReader = exports.MessageReader = exports.CancellationToken = exports.CancellationTokenSource = exports.Emitter = exports.Event = exports.Disposable = exports.LRUCache = exports.Touch = exports.LinkedMap = exports.ParameterStructures = exports.NotificationType9 = exports.NotificationType8 = exports.NotificationType7 = exports.NotificationType6 = exports.NotificationType5 = exports.NotificationType4 = exports.NotificationType3 = exports.NotificationType2 = exports.NotificationType1 = exports.NotificationType0 = exports.NotificationType = exports.ErrorCodes = exports.ResponseError = exports.RequestType9 = exports.RequestType8 = exports.RequestType7 = exports.RequestType6 = exports.RequestType5 = exports.RequestType4 = exports.RequestType3 = exports.RequestType2 = exports.RequestType1 = exports.RequestType0 = exports.RequestType = exports.Message = exports.RAL = void 0; | ||
exports.CancellationStrategy = exports.CancellationSenderStrategy = exports.CancellationReceiverStrategy = exports.ConnectionError = exports.ConnectionErrors = exports.LogTraceNotification = void 0; | ||
const messages_1 = require("./messages"); | ||
Object.defineProperty(exports, "Message", { enumerable: true, get: function () { return messages_1.Message; } }); | ||
Object.defineProperty(exports, "RequestType", { enumerable: true, get: function () { return messages_1.RequestType; } }); | ||
@@ -62,2 +63,3 @@ Object.defineProperty(exports, "RequestType0", { enumerable: true, get: function () { return messages_1.RequestType0; } }); | ||
Object.defineProperty(exports, "createMessageConnection", { enumerable: true, get: function () { return connection_1.createMessageConnection; } }); | ||
Object.defineProperty(exports, "ProgressToken", { enumerable: true, get: function () { return connection_1.ProgressToken; } }); | ||
Object.defineProperty(exports, "ProgressType", { enumerable: true, get: function () { return connection_1.ProgressType; } }); | ||
@@ -64,0 +66,0 @@ Object.defineProperty(exports, "Trace", { enumerable: true, get: function () { return connection_1.Trace; } }); |
@@ -8,2 +8,5 @@ import { Message, RequestType, RequestType0, RequestType1, RequestType2, RequestType3, RequestType4, RequestType5, RequestType6, RequestType7, RequestType8, RequestType9, ResponseMessage, ResponseError, NotificationMessage, NotificationType, NotificationType0, NotificationType1, NotificationType2, NotificationType3, NotificationType4, NotificationType5, NotificationType6, NotificationType7, NotificationType8, NotificationType9, _EM, ParameterStructures } from './messages'; | ||
export declare type ProgressToken = number | string; | ||
export declare namespace ProgressToken { | ||
function is(value: any): value is number | string; | ||
} | ||
interface ProgressParams<T> { | ||
@@ -117,5 +120,6 @@ /** | ||
Messages = 1, | ||
Verbose = 2 | ||
Compact = 2, | ||
Verbose = 3 | ||
} | ||
export declare type TraceValues = 'off' | 'messages' | 'verbose'; | ||
export declare type TraceValues = 'off' | 'messages' | 'compact' | 'verbose'; | ||
export declare namespace Trace { | ||
@@ -122,0 +126,0 @@ function fromString(value: string): Trace; |
@@ -7,3 +7,3 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.createMessageConnection = exports.ConnectionOptions = exports.CancellationStrategy = exports.CancellationSenderStrategy = exports.CancellationReceiverStrategy = exports.ConnectionStrategy = exports.ConnectionError = exports.ConnectionErrors = exports.LogTraceNotification = exports.SetTraceNotification = exports.TraceFormat = exports.Trace = exports.NullLogger = exports.ProgressType = void 0; | ||
exports.createMessageConnection = exports.ConnectionOptions = exports.CancellationStrategy = exports.CancellationSenderStrategy = exports.CancellationReceiverStrategy = exports.ConnectionStrategy = exports.ConnectionError = exports.ConnectionErrors = exports.LogTraceNotification = exports.SetTraceNotification = exports.TraceFormat = exports.Trace = exports.NullLogger = exports.ProgressType = exports.ProgressToken = void 0; | ||
const ral_1 = require("./ral"); | ||
@@ -19,2 +19,9 @@ const Is = require("./is"); | ||
})(CancelNotification || (CancelNotification = {})); | ||
var ProgressToken; | ||
(function (ProgressToken) { | ||
function is(value) { | ||
return typeof value === 'string' || typeof value === 'number'; | ||
} | ||
ProgressToken.is = is; | ||
})(ProgressToken = exports.ProgressToken || (exports.ProgressToken = {})); | ||
var ProgressNotification; | ||
@@ -46,3 +53,4 @@ (function (ProgressNotification) { | ||
Trace[Trace["Messages"] = 1] = "Messages"; | ||
Trace[Trace["Verbose"] = 2] = "Verbose"; | ||
Trace[Trace["Compact"] = 2] = "Compact"; | ||
Trace[Trace["Verbose"] = 3] = "Verbose"; | ||
})(Trace = exports.Trace || (exports.Trace = {})); | ||
@@ -60,2 +68,4 @@ (function (Trace) { | ||
return Trace.Messages; | ||
case 'compact': | ||
return Trace.Compact; | ||
case 'verbose': | ||
@@ -74,2 +84,4 @@ return Trace.Verbose; | ||
return 'messages'; | ||
case Trace.Compact: | ||
return 'compact'; | ||
case Trace.Verbose: | ||
@@ -240,6 +252,6 @@ return 'verbose'; | ||
function addMessageToQueue(queue, message) { | ||
if ((0, messages_1.isRequestMessage)(message)) { | ||
if (messages_1.Message.isRequest(message)) { | ||
queue.set(createRequestQueueKey(message.id), message); | ||
} | ||
else if ((0, messages_1.isResponseMessage)(message)) { | ||
else if (messages_1.Message.isResponse(message)) { | ||
queue.set(createResponseQueueKey(message.id), message); | ||
@@ -295,9 +307,9 @@ } | ||
try { | ||
if ((0, messages_1.isRequestMessage)(message)) { | ||
if (messages_1.Message.isRequest(message)) { | ||
handleRequest(message); | ||
} | ||
else if ((0, messages_1.isNotificationMessage)(message)) { | ||
else if (messages_1.Message.isNotification(message)) { | ||
handleNotification(message); | ||
} | ||
else if ((0, messages_1.isResponseMessage)(message)) { | ||
else if (messages_1.Message.isResponse(message)) { | ||
handleResponse(message); | ||
@@ -317,8 +329,8 @@ } | ||
// and cancel it if allowed to do so. | ||
if ((0, messages_1.isNotificationMessage)(message) && message.method === CancelNotification.type.method) { | ||
if (messages_1.Message.isNotification(message) && message.method === CancelNotification.type.method) { | ||
const cancelId = message.params.id; | ||
const key = createRequestQueueKey(cancelId); | ||
const toCancel = messageQueue.get(key); | ||
if ((0, messages_1.isRequestMessage)(toCancel)) { | ||
const strategy = options === null || options === void 0 ? void 0 : options.connectionStrategy; | ||
if (messages_1.Message.isRequest(toCancel)) { | ||
const strategy = options?.connectionStrategy; | ||
const response = (strategy && strategy.cancelUndispatched) ? strategy.cancelUndispatched(toCancel, cancelUndispatched) : cancelUndispatched(toCancel); | ||
@@ -559,11 +571,19 @@ if (response && (response.error !== undefined || response.result !== undefined)) { | ||
else if (Array.isArray(message.params)) { | ||
if (type !== undefined) { | ||
if (type.parameterStructures === messages_1.ParameterStructures.byName) { | ||
logger.error(`Notification ${message.method} defines parameters by name but received parameters by position`); | ||
// There are JSON-RPC libraries that send progress message as positional params although | ||
// specified as named. So convert them if this is the case. | ||
const params = message.params; | ||
if (message.method === ProgressNotification.type.method && params.length === 2 && ProgressToken.is(params[0])) { | ||
notificationHandler({ token: params[0], value: params[1] }); | ||
} | ||
else { | ||
if (type !== undefined) { | ||
if (type.parameterStructures === messages_1.ParameterStructures.byName) { | ||
logger.error(`Notification ${message.method} defines parameters by name but received parameters by position`); | ||
} | ||
if (type.numberOfParams !== message.params.length) { | ||
logger.error(`Notification ${message.method} defines ${type.numberOfParams} params but received ${params.length} arguments`); | ||
} | ||
} | ||
if (type.numberOfParams !== message.params.length) { | ||
logger.error(`Notification ${message.method} defines ${type.numberOfParams} params but received ${message.params.length} arguments`); | ||
} | ||
notificationHandler(...params); | ||
} | ||
notificationHandler(...message.params); | ||
} | ||
@@ -610,2 +630,15 @@ else { | ||
} | ||
function stringifyTrace(params) { | ||
if (params === undefined || params === null) { | ||
return undefined; | ||
} | ||
switch (trace) { | ||
case Trace.Verbose: | ||
return JSON.stringify(params, null, 4); | ||
case Trace.Compact: | ||
return JSON.stringify(params); | ||
default: | ||
return undefined; | ||
} | ||
} | ||
function traceSendingRequest(message) { | ||
@@ -617,4 +650,4 @@ if (trace === Trace.Off || !tracer) { | ||
let data = undefined; | ||
if (trace === Trace.Verbose && message.params) { | ||
data = `Params: ${JSON.stringify(message.params, null, 4)}\n\n`; | ||
if ((trace === Trace.Verbose || trace === Trace.Compact) && message.params) { | ||
data = `Params: ${stringifyTrace(message.params)}\n\n`; | ||
} | ||
@@ -633,5 +666,5 @@ tracer.log(`Sending request '${message.method} - (${message.id})'.`, data); | ||
let data = undefined; | ||
if (trace === Trace.Verbose) { | ||
if (trace === Trace.Verbose || trace === Trace.Compact) { | ||
if (message.params) { | ||
data = `Params: ${JSON.stringify(message.params, null, 4)}\n\n`; | ||
data = `Params: ${stringifyTrace(message.params)}\n\n`; | ||
} | ||
@@ -654,9 +687,9 @@ else { | ||
let data = undefined; | ||
if (trace === Trace.Verbose) { | ||
if (trace === Trace.Verbose || trace === Trace.Compact) { | ||
if (message.error && message.error.data) { | ||
data = `Error data: ${JSON.stringify(message.error.data, null, 4)}\n\n`; | ||
data = `Error data: ${stringifyTrace(message.error.data)}\n\n`; | ||
} | ||
else { | ||
if (message.result) { | ||
data = `Result: ${JSON.stringify(message.result, null, 4)}\n\n`; | ||
data = `Result: ${stringifyTrace(message.result)}\n\n`; | ||
} | ||
@@ -680,4 +713,4 @@ else if (message.error === undefined) { | ||
let data = undefined; | ||
if (trace === Trace.Verbose && message.params) { | ||
data = `Params: ${JSON.stringify(message.params, null, 4)}\n\n`; | ||
if ((trace === Trace.Verbose || trace === Trace.Compact) && message.params) { | ||
data = `Params: ${stringifyTrace(message.params)}\n\n`; | ||
} | ||
@@ -696,5 +729,5 @@ tracer.log(`Received request '${message.method} - (${message.id})'.`, data); | ||
let data = undefined; | ||
if (trace === Trace.Verbose) { | ||
if (trace === Trace.Verbose || trace === Trace.Compact) { | ||
if (message.params) { | ||
data = `Params: ${JSON.stringify(message.params, null, 4)}\n\n`; | ||
data = `Params: ${stringifyTrace(message.params)}\n\n`; | ||
} | ||
@@ -717,9 +750,9 @@ else { | ||
let data = undefined; | ||
if (trace === Trace.Verbose) { | ||
if (trace === Trace.Verbose || trace === Trace.Compact) { | ||
if (message.error && message.error.data) { | ||
data = `Error data: ${JSON.stringify(message.error.data, null, 4)}\n\n`; | ||
data = `Error data: ${stringifyTrace(message.error.data)}\n\n`; | ||
} | ||
else { | ||
if (message.result) { | ||
data = `Result: ${JSON.stringify(message.result, null, 4)}\n\n`; | ||
data = `Result: ${stringifyTrace(message.result)}\n\n`; | ||
} | ||
@@ -992,3 +1025,3 @@ else if (message.error === undefined) { | ||
cancellationStrategy.sender.cleanup(id); | ||
disposable === null || disposable === void 0 ? void 0 : disposable.dispose(); | ||
disposable?.dispose(); | ||
}; | ||
@@ -998,3 +1031,3 @@ const rejectWithCleanup = (r) => { | ||
cancellationStrategy.sender.cleanup(id); | ||
disposable === null || disposable === void 0 ? void 0 : disposable.dispose(); | ||
disposable?.dispose(); | ||
}; | ||
@@ -1121,3 +1154,4 @@ let responsePromise = { method: method, timerStart: Date.now(), resolve: resolveWithCleanup, reject: rejectWithCleanup }; | ||
} | ||
tracer.log(params.message, trace === Trace.Verbose ? params.verbose : undefined); | ||
const verbose = trace === Trace.Verbose || trace === Trace.Compact; | ||
tracer.log(params.message, verbose ? params.verbose : undefined); | ||
}); | ||
@@ -1124,0 +1158,0 @@ connection.onNotification(ProgressNotification.type, (params) => { |
@@ -40,8 +40,6 @@ "use strict"; | ||
get first() { | ||
var _b; | ||
return (_b = this._head) === null || _b === void 0 ? void 0 : _b.value; | ||
return this._head?.value; | ||
} | ||
get last() { | ||
var _b; | ||
return (_b = this._tail) === null || _b === void 0 ? void 0 : _b.value; | ||
return this._tail?.value; | ||
} | ||
@@ -48,0 +46,0 @@ has(key) { |
@@ -61,3 +61,2 @@ "use strict"; | ||
function fromOptions(options) { | ||
var _a; | ||
let charset; | ||
@@ -70,6 +69,6 @@ let result; | ||
if (options === undefined || typeof options === 'string') { | ||
charset = options !== null && options !== void 0 ? options : 'utf-8'; | ||
charset = options ?? 'utf-8'; | ||
} | ||
else { | ||
charset = (_a = options.charset) !== null && _a !== void 0 ? _a : 'utf-8'; | ||
charset = options.charset ?? 'utf-8'; | ||
if (options.contentDecoder !== undefined) { | ||
@@ -76,0 +75,0 @@ contentDecoder = options.contentDecoder; |
@@ -255,3 +255,3 @@ /** | ||
*/ | ||
params?: [] | object; | ||
params?: any[] | object; | ||
} | ||
@@ -339,13 +339,15 @@ export declare class NotificationType<P> extends AbstractMessageSignature { | ||
} | ||
/** | ||
* Tests if the given message is a request message | ||
*/ | ||
export declare function isRequestMessage(message: Message | undefined): message is RequestMessage; | ||
/** | ||
* Tests if the given message is a notification message | ||
*/ | ||
export declare function isNotificationMessage(message: Message | undefined): message is NotificationMessage; | ||
/** | ||
* Tests if the given message is a response message | ||
*/ | ||
export declare function isResponseMessage(message: Message | undefined): message is ResponseMessage; | ||
export declare namespace Message { | ||
/** | ||
* Tests if the given message is a request message | ||
*/ | ||
function isRequest(message: Message | undefined): message is RequestMessage; | ||
/** | ||
* Tests if the given message is a notification message | ||
*/ | ||
function isNotification(message: Message | undefined): message is NotificationMessage; | ||
/** | ||
* Tests if the given message is a response message | ||
*/ | ||
function isResponse(message: Message | undefined): message is ResponseMessage; | ||
} |
@@ -7,3 +7,3 @@ "use strict"; | ||
Object.defineProperty(exports, "__esModule", { value: true }); | ||
exports.isResponseMessage = exports.isNotificationMessage = exports.isRequestMessage = exports.NotificationType9 = exports.NotificationType8 = exports.NotificationType7 = exports.NotificationType6 = exports.NotificationType5 = exports.NotificationType4 = exports.NotificationType3 = exports.NotificationType2 = exports.NotificationType1 = exports.NotificationType0 = exports.NotificationType = exports.RequestType9 = exports.RequestType8 = exports.RequestType7 = exports.RequestType6 = exports.RequestType5 = exports.RequestType4 = exports.RequestType3 = exports.RequestType2 = exports.RequestType1 = exports.RequestType = exports.RequestType0 = exports.AbstractMessageSignature = exports.ParameterStructures = exports.ResponseError = exports.ErrorCodes = void 0; | ||
exports.Message = exports.NotificationType9 = exports.NotificationType8 = exports.NotificationType7 = exports.NotificationType6 = exports.NotificationType5 = exports.NotificationType4 = exports.NotificationType3 = exports.NotificationType2 = exports.NotificationType1 = exports.NotificationType0 = exports.NotificationType = exports.RequestType9 = exports.RequestType8 = exports.RequestType7 = exports.RequestType6 = exports.RequestType5 = exports.RequestType4 = exports.RequestType3 = exports.RequestType2 = exports.RequestType1 = exports.RequestType = exports.RequestType0 = exports.AbstractMessageSignature = exports.ParameterStructures = exports.ResponseError = exports.ErrorCodes = void 0; | ||
const is = require("./is"); | ||
@@ -266,26 +266,29 @@ /** | ||
exports.NotificationType9 = NotificationType9; | ||
/** | ||
* Tests if the given message is a request message | ||
*/ | ||
function isRequestMessage(message) { | ||
const candidate = message; | ||
return candidate && is.string(candidate.method) && (is.string(candidate.id) || is.number(candidate.id)); | ||
} | ||
exports.isRequestMessage = isRequestMessage; | ||
/** | ||
* Tests if the given message is a notification message | ||
*/ | ||
function isNotificationMessage(message) { | ||
const candidate = message; | ||
return candidate && is.string(candidate.method) && message.id === void 0; | ||
} | ||
exports.isNotificationMessage = isNotificationMessage; | ||
/** | ||
* Tests if the given message is a response message | ||
*/ | ||
function isResponseMessage(message) { | ||
const candidate = message; | ||
return candidate && (candidate.result !== void 0 || !!candidate.error) && (is.string(candidate.id) || is.number(candidate.id) || candidate.id === null); | ||
} | ||
exports.isResponseMessage = isResponseMessage; | ||
var Message; | ||
(function (Message) { | ||
/** | ||
* Tests if the given message is a request message | ||
*/ | ||
function isRequest(message) { | ||
const candidate = message; | ||
return candidate && is.string(candidate.method) && (is.string(candidate.id) || is.number(candidate.id)); | ||
} | ||
Message.isRequest = isRequest; | ||
/** | ||
* Tests if the given message is a notification message | ||
*/ | ||
function isNotification(message) { | ||
const candidate = message; | ||
return candidate && is.string(candidate.method) && message.id === void 0; | ||
} | ||
Message.isNotification = isNotification; | ||
/** | ||
* Tests if the given message is a response message | ||
*/ | ||
function isResponse(message) { | ||
const candidate = message; | ||
return candidate && (candidate.result !== void 0 || !!candidate.error) && (is.string(candidate.id) || is.number(candidate.id) || candidate.id === null); | ||
} | ||
Message.isResponse = isResponse; | ||
})(Message = exports.Message || (exports.Message = {})); | ||
//# sourceMappingURL=messages.js.map |
@@ -5,7 +5,13 @@ import RAL from './ral'; | ||
import { ContentEncoder, ContentTypeEncoder } from './encoding'; | ||
/** Writes JSON-RPC messages to an underlying transport. */ | ||
/** | ||
* Writes JSON-RPC messages to an underlying transport. | ||
*/ | ||
export interface MessageWriter { | ||
/** Raised whenever an error occurs while writing a message. */ | ||
/** | ||
* Raised whenever an error occurs while writing a message. | ||
*/ | ||
readonly onError: Event<[Error, Message | undefined, number | undefined]>; | ||
/** An event raised when the underlying transport has closed and writing is no longer possible. */ | ||
/** | ||
* An event raised when the underlying transport has closed and writing is no longer possible. | ||
*/ | ||
readonly onClose: Event<void>; | ||
@@ -18,2 +24,6 @@ /** | ||
write(msg: Message): Promise<void>; | ||
/** | ||
* Call when the connection using this message writer ends | ||
* (e.g. MessageConnection.end() is called) | ||
*/ | ||
end(): void; | ||
@@ -20,0 +30,0 @@ /** Releases resources incurred from writing or raising events. Does NOT close the underlying transport, if any. */ |
@@ -57,8 +57,7 @@ "use strict"; | ||
function fromOptions(options) { | ||
var _a, _b; | ||
if (options === undefined || typeof options === 'string') { | ||
return { charset: options !== null && options !== void 0 ? options : 'utf-8', contentTypeEncoder: (0, ral_1.default)().applicationJson.encoder }; | ||
return { charset: options ?? 'utf-8', contentTypeEncoder: (0, ral_1.default)().applicationJson.encoder }; | ||
} | ||
else { | ||
return { charset: (_a = options.charset) !== null && _a !== void 0 ? _a : 'utf-8', contentEncoder: options.contentEncoder, contentTypeEncoder: (_b = options.contentTypeEncoder) !== null && _b !== void 0 ? _b : (0, ral_1.default)().applicationJson.encoder }; | ||
return { charset: options.charset ?? 'utf-8', contentEncoder: options.contentEncoder, contentTypeEncoder: options.contentTypeEncoder ?? (0, ral_1.default)().applicationJson.encoder }; | ||
} | ||
@@ -65,0 +64,0 @@ } |
{ | ||
"name": "vscode-jsonrpc", | ||
"description": "A json rpc implementation over streams", | ||
"version": "8.0.0-next.3", | ||
"version": "8.0.0-next.4", | ||
"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
195011
4610