Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

vscode-jsonrpc

Package Overview
Dependencies
Maintainers
11
Versions
130
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

vscode-jsonrpc - npm Package Compare versions

Comparing version 8.0.0-next.3 to 8.0.0-next.4

6

lib/common/api.js

@@ -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",

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc