vscode-jsonrpc
Advanced tools
Comparing version 8.2.0-next.2 to 8.2.0
@@ -11,5 +11,5 @@ /// <reference path="../../typings/thenable.d.ts" /> | ||
import { AbstractMessageBuffer } from './messageBuffer'; | ||
import { ContentTypeEncoderOptions, ContentTypeDecoderOptions } from './encoding'; | ||
import { ContentTypeEncoderOptions, ContentEncoder, ContentTypeEncoder, ContentTypeDecoderOptions, ContentDecoder, ContentTypeDecoder } from './encoding'; | ||
import { Logger, ConnectionStrategy, ConnectionOptions, MessageConnection, NullLogger, createMessageConnection, ProgressToken, ProgressType, HandlerResult, StarRequestHandler, GenericRequestHandler, RequestHandler0, RequestHandler, RequestHandler1, RequestHandler2, RequestHandler3, RequestHandler4, RequestHandler5, RequestHandler6, RequestHandler7, RequestHandler8, RequestHandler9, StarNotificationHandler, GenericNotificationHandler, NotificationHandler0, NotificationHandler, NotificationHandler1, NotificationHandler2, NotificationHandler3, NotificationHandler4, NotificationHandler5, NotificationHandler6, NotificationHandler7, NotificationHandler8, NotificationHandler9, Trace, TraceValues, TraceFormat, TraceOptions, SetTraceParams, SetTraceNotification, LogTraceParams, LogTraceNotification, Tracer, ConnectionErrors, ConnectionError, CancellationId, CancellationReceiverStrategy, CancellationSenderStrategy, CancellationStrategy, MessageStrategy } from './connection'; | ||
import RAL from './ral'; | ||
export { RAL, Message, MessageSignature, RequestMessage, RequestType, RequestType0, RequestType1, RequestType2, RequestType3, RequestType4, RequestType5, RequestType6, RequestType7, RequestType8, RequestType9, ResponseError, ErrorCodes, NotificationMessage, NotificationType, NotificationType0, NotificationType1, NotificationType2, NotificationType3, NotificationType4, NotificationType5, NotificationType6, NotificationType7, NotificationType8, NotificationType9, ResponseMessage, ParameterStructures, _EM, LinkedMap, Touch, LRUCache, Disposable, Event, Emitter, AbstractCancellationTokenSource, CancellationTokenSource, CancellationToken, SharedArraySenderStrategy, SharedArrayReceiverStrategy, MessageReader, AbstractMessageReader, ReadableStreamMessageReader, DataCallback, MessageReaderOptions, PartialMessageInfo, MessageWriter, AbstractMessageWriter, WriteableStreamMessageWriter, MessageWriterOptions, AbstractMessageBuffer, ContentTypeEncoderOptions, ContentTypeDecoderOptions, Logger, ConnectionStrategy, ConnectionOptions, MessageConnection, NullLogger, createMessageConnection, ProgressToken, ProgressType, HandlerResult, StarRequestHandler, GenericRequestHandler, RequestHandler0, RequestHandler, RequestHandler1, RequestHandler2, RequestHandler3, RequestHandler4, RequestHandler5, RequestHandler6, RequestHandler7, RequestHandler8, RequestHandler9, StarNotificationHandler, GenericNotificationHandler, NotificationHandler0, NotificationHandler, NotificationHandler1, NotificationHandler2, NotificationHandler3, NotificationHandler4, NotificationHandler5, NotificationHandler6, NotificationHandler7, NotificationHandler8, NotificationHandler9, Trace, TraceValues, TraceFormat, TraceOptions, SetTraceParams, SetTraceNotification, LogTraceParams, LogTraceNotification, Tracer, ConnectionErrors, ConnectionError, CancellationId, CancellationReceiverStrategy, CancellationSenderStrategy, CancellationStrategy, MessageStrategy }; | ||
export { RAL, Message, MessageSignature, RequestMessage, RequestType, RequestType0, RequestType1, RequestType2, RequestType3, RequestType4, RequestType5, RequestType6, RequestType7, RequestType8, RequestType9, ResponseError, ErrorCodes, NotificationMessage, NotificationType, NotificationType0, NotificationType1, NotificationType2, NotificationType3, NotificationType4, NotificationType5, NotificationType6, NotificationType7, NotificationType8, NotificationType9, ResponseMessage, ParameterStructures, _EM, LinkedMap, Touch, LRUCache, Disposable, Event, Emitter, AbstractCancellationTokenSource, CancellationTokenSource, CancellationToken, SharedArraySenderStrategy, SharedArrayReceiverStrategy, MessageReader, AbstractMessageReader, ReadableStreamMessageReader, DataCallback, MessageReaderOptions, PartialMessageInfo, MessageWriter, AbstractMessageWriter, WriteableStreamMessageWriter, MessageWriterOptions, AbstractMessageBuffer, ContentTypeEncoderOptions, ContentEncoder, ContentTypeEncoder, ContentTypeDecoderOptions, ContentDecoder, ContentTypeDecoder, Logger, ConnectionStrategy, ConnectionOptions, MessageConnection, NullLogger, createMessageConnection, ProgressToken, ProgressType, HandlerResult, StarRequestHandler, GenericRequestHandler, RequestHandler0, RequestHandler, RequestHandler1, RequestHandler2, RequestHandler3, RequestHandler4, RequestHandler5, RequestHandler6, RequestHandler7, RequestHandler8, RequestHandler9, StarNotificationHandler, GenericNotificationHandler, NotificationHandler0, NotificationHandler, NotificationHandler1, NotificationHandler2, NotificationHandler3, NotificationHandler4, NotificationHandler5, NotificationHandler6, NotificationHandler7, NotificationHandler8, NotificationHandler9, Trace, TraceValues, TraceFormat, TraceOptions, SetTraceParams, SetTraceNotification, LogTraceParams, LogTraceNotification, Tracer, ConnectionErrors, ConnectionError, CancellationId, CancellationReceiverStrategy, CancellationSenderStrategy, CancellationStrategy, MessageStrategy }; |
@@ -87,3 +87,3 @@ "use strict"; | ||
if (index === -1) { | ||
throw new Error('Message header must separate key and value using :'); | ||
throw new Error(`Message header must separate key and value using ':'\n${header}`); | ||
} | ||
@@ -90,0 +90,0 @@ const key = header.substr(0, index); |
@@ -130,43 +130,48 @@ "use strict"; | ||
onData(data) { | ||
this.buffer.append(data); | ||
while (true) { | ||
if (this.nextMessageLength === -1) { | ||
const headers = this.buffer.tryReadHeaders(true); | ||
if (!headers) { | ||
return; | ||
try { | ||
this.buffer.append(data); | ||
while (true) { | ||
if (this.nextMessageLength === -1) { | ||
const headers = this.buffer.tryReadHeaders(true); | ||
if (!headers) { | ||
return; | ||
} | ||
const contentLength = headers.get('content-length'); | ||
if (!contentLength) { | ||
this.fireError(new Error(`Header must provide a Content-Length property.\n${JSON.stringify(Object.fromEntries(headers))}`)); | ||
return; | ||
} | ||
const length = parseInt(contentLength); | ||
if (isNaN(length)) { | ||
this.fireError(new Error(`Content-Length value must be a number. Got ${contentLength}`)); | ||
return; | ||
} | ||
this.nextMessageLength = length; | ||
} | ||
const contentLength = headers.get('content-length'); | ||
if (!contentLength) { | ||
this.fireError(new Error('Header must provide a Content-Length property.')); | ||
const body = this.buffer.tryReadBody(this.nextMessageLength); | ||
if (body === undefined) { | ||
/** We haven't received the full message yet. */ | ||
this.setPartialMessageTimer(); | ||
return; | ||
} | ||
const length = parseInt(contentLength); | ||
if (isNaN(length)) { | ||
this.fireError(new Error('Content-Length value must be a number.')); | ||
return; | ||
} | ||
this.nextMessageLength = length; | ||
this.clearPartialMessageTimer(); | ||
this.nextMessageLength = -1; | ||
// Make sure that we convert one received message after the | ||
// other. Otherwise it could happen that a decoding of a second | ||
// smaller message finished before the decoding of a first larger | ||
// message and then we would deliver the second message first. | ||
this.readSemaphore.lock(async () => { | ||
const bytes = this.options.contentDecoder !== undefined | ||
? await this.options.contentDecoder.decode(body) | ||
: body; | ||
const message = await this.options.contentTypeDecoder.decode(bytes, this.options); | ||
this.callback(message); | ||
}).catch((error) => { | ||
this.fireError(error); | ||
}); | ||
} | ||
const body = this.buffer.tryReadBody(this.nextMessageLength); | ||
if (body === undefined) { | ||
/** We haven't received the full message yet. */ | ||
this.setPartialMessageTimer(); | ||
return; | ||
} | ||
this.clearPartialMessageTimer(); | ||
this.nextMessageLength = -1; | ||
// Make sure that we convert one received message after the | ||
// other. Otherwise it could happen that a decoding of a second | ||
// smaller message finished before the decoding of a first larger | ||
// message and then we would deliver the second message first. | ||
this.readSemaphore.lock(async () => { | ||
const bytes = this.options.contentDecoder !== undefined | ||
? await this.options.contentDecoder.decode(body) | ||
: body; | ||
const message = await this.options.contentTypeDecoder.decode(bytes, this.options); | ||
this.callback(message); | ||
}).catch((error) => { | ||
this.fireError(error); | ||
}); | ||
} | ||
catch (error) { | ||
this.fireError(error); | ||
} | ||
} | ||
@@ -173,0 +178,0 @@ clearPartialMessageTimer() { |
{ | ||
"name": "vscode-jsonrpc", | ||
"description": "A json rpc implementation over streams", | ||
"version": "8.2.0-next.2", | ||
"version": "8.2.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
No v1
QualityPackage is not semver >=1. This means it is not stable and does not support ^ ranges.
Found 1 instance in 1 package
208371
4960
1