@typescript/native-preview 7.0.0-dev.20260422.1 → 7.0.0-dev.20260423.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/async/api.d.ts +241 -0
- package/dist/api/async/api.d.ts.map +1 -0
- package/dist/api/async/api.js +810 -0
- package/dist/api/async/api.js.map +1 -0
- package/dist/api/async/client.d.ts +22 -0
- package/dist/api/async/client.d.ts.map +1 -0
- package/dist/api/async/client.js +140 -0
- package/dist/api/async/client.js.map +1 -0
- package/dist/api/async/types.d.ts +179 -0
- package/dist/api/async/types.d.ts.map +1 -0
- package/dist/api/async/types.js +2 -0
- package/dist/api/async/types.js.map +1 -0
- package/dist/api/fs.d.ts +23 -0
- package/dist/api/fs.d.ts.map +1 -0
- package/dist/api/fs.js +109 -0
- package/dist/api/fs.js.map +1 -0
- package/dist/api/node/encoder.d.ts +15 -0
- package/dist/api/node/encoder.d.ts.map +1 -0
- package/dist/api/node/encoder.generated.d.ts +5 -0
- package/dist/api/node/encoder.generated.d.ts.map +1 -0
- package/dist/api/node/encoder.generated.js +74 -0
- package/dist/api/node/encoder.generated.js.map +1 -0
- package/dist/api/node/encoder.js +304 -0
- package/dist/api/node/encoder.js.map +1 -0
- package/dist/api/node/msgpack.d.ts +32 -0
- package/dist/api/node/msgpack.d.ts.map +1 -0
- package/dist/api/node/msgpack.js +212 -0
- package/dist/api/node/msgpack.js.map +1 -0
- package/dist/api/node/node.d.ts +63 -0
- package/dist/api/node/node.d.ts.map +1 -0
- package/dist/api/node/node.generated.d.ts +172 -0
- package/dist/api/node/node.generated.d.ts.map +1 -0
- package/dist/api/node/node.generated.js +817 -0
- package/dist/api/node/node.generated.js.map +1 -0
- package/dist/api/node/node.infrastructure.d.ts +51 -0
- package/dist/api/node/node.infrastructure.d.ts.map +1 -0
- package/dist/api/node/node.infrastructure.js +122 -0
- package/dist/api/node/node.infrastructure.js.map +1 -0
- package/dist/api/node/node.js +201 -0
- package/dist/api/node/node.js.map +1 -0
- package/dist/api/node/protocol.d.ts +29 -0
- package/dist/api/node/protocol.d.ts.map +1 -0
- package/dist/api/node/protocol.generated.d.ts +4 -0
- package/dist/api/node/protocol.generated.d.ts.map +1 -0
- package/dist/api/node/protocol.generated.js +241 -0
- package/dist/api/node/protocol.generated.js.map +1 -0
- package/dist/api/node/protocol.js +30 -0
- package/dist/api/node/protocol.js.map +1 -0
- package/dist/api/objectRegistry.d.ts +38 -0
- package/dist/api/objectRegistry.d.ts.map +1 -0
- package/dist/api/objectRegistry.js +55 -0
- package/dist/api/objectRegistry.js.map +1 -0
- package/dist/api/options.d.ts +24 -0
- package/dist/api/options.d.ts.map +1 -0
- package/dist/api/options.js +11 -0
- package/dist/api/options.js.map +1 -0
- package/dist/api/path.d.ts +110 -0
- package/dist/api/path.d.ts.map +1 -0
- package/dist/api/path.js +508 -0
- package/dist/api/path.js.map +1 -0
- package/dist/api/proto.d.ts +152 -0
- package/dist/api/proto.d.ts.map +1 -0
- package/dist/api/proto.js +22 -0
- package/dist/api/proto.js.map +1 -0
- package/dist/api/sourceFileCache.d.ts +79 -0
- package/dist/api/sourceFileCache.d.ts.map +1 -0
- package/dist/api/sourceFileCache.js +169 -0
- package/dist/api/sourceFileCache.js.map +1 -0
- package/dist/api/sync/api.d.ts +241 -0
- package/dist/api/sync/api.d.ts.map +1 -0
- package/dist/api/sync/api.js +818 -0
- package/dist/api/sync/api.js.map +1 -0
- package/dist/api/sync/client.d.ts +13 -0
- package/dist/api/sync/client.d.ts.map +1 -0
- package/dist/api/sync/client.js +72 -0
- package/dist/api/sync/client.js.map +1 -0
- package/dist/api/sync/types.d.ts +179 -0
- package/dist/api/sync/types.d.ts.map +1 -0
- package/dist/api/sync/types.js +2 -0
- package/dist/api/sync/types.js.map +1 -0
- package/dist/api/syncChannel.d.ts +111 -0
- package/dist/api/syncChannel.d.ts.map +1 -0
- package/dist/api/syncChannel.js +488 -0
- package/dist/api/syncChannel.js.map +1 -0
- package/dist/ast/ast.d.ts +66 -0
- package/dist/ast/ast.d.ts.map +1 -0
- package/dist/ast/ast.generated.d.ts +1160 -0
- package/dist/ast/ast.generated.d.ts.map +1 -0
- package/dist/ast/ast.generated.js +4 -0
- package/dist/ast/ast.generated.js.map +1 -0
- package/dist/ast/ast.js +7 -0
- package/dist/ast/ast.js.map +1 -0
- package/dist/ast/astnav.d.ts +19 -0
- package/dist/ast/astnav.d.ts.map +1 -0
- package/dist/ast/astnav.js +596 -0
- package/dist/ast/astnav.js.map +1 -0
- package/dist/ast/clone.d.ts +16 -0
- package/dist/ast/clone.d.ts.map +1 -0
- package/dist/ast/clone.js +104 -0
- package/dist/ast/clone.js.map +1 -0
- package/dist/ast/factory.generated.d.ts +513 -0
- package/dist/ast/factory.generated.d.ts.map +1 -0
- package/dist/ast/factory.generated.js +3026 -0
- package/dist/ast/factory.generated.js.map +1 -0
- package/dist/ast/index.d.ts +18 -0
- package/dist/ast/index.d.ts.map +1 -0
- package/dist/ast/index.js +18 -0
- package/dist/ast/index.js.map +1 -0
- package/dist/ast/is.d.ts +34 -0
- package/dist/ast/is.d.ts.map +1 -0
- package/dist/ast/is.generated.d.ts +328 -0
- package/dist/ast/is.generated.d.ts.map +1 -0
- package/dist/ast/is.generated.js +1101 -0
- package/dist/ast/is.generated.js.map +1 -0
- package/dist/ast/is.js +226 -0
- package/dist/ast/is.js.map +1 -0
- package/dist/ast/scanner.d.ts +97 -0
- package/dist/ast/scanner.d.ts.map +1 -0
- package/dist/ast/scanner.js +2230 -0
- package/dist/ast/scanner.js.map +1 -0
- package/dist/ast/utils.d.ts +5 -0
- package/dist/ast/utils.d.ts.map +1 -0
- package/dist/ast/utils.js +27 -0
- package/dist/ast/utils.js.map +1 -0
- package/dist/ast/visitor.d.ts +14 -0
- package/dist/ast/visitor.d.ts.map +1 -0
- package/dist/ast/visitor.generated.d.ts +50 -0
- package/dist/ast/visitor.generated.d.ts.map +1 -0
- package/dist/ast/visitor.generated.js +978 -0
- package/dist/ast/visitor.generated.js.map +1 -0
- package/dist/ast/visitor.js +47 -0
- package/dist/ast/visitor.js.map +1 -0
- package/dist/enums/characterCodes.d.ts +2 -0
- package/dist/enums/characterCodes.d.ts.map +1 -0
- package/dist/enums/characterCodes.enum.d.ts +129 -0
- package/dist/enums/characterCodes.enum.d.ts.map +1 -0
- package/dist/enums/characterCodes.enum.js +132 -0
- package/dist/enums/characterCodes.enum.js.map +1 -0
- package/dist/enums/characterCodes.js +130 -0
- package/dist/enums/characterCodes.js.map +1 -0
- package/dist/enums/commentDirectiveType.d.ts +2 -0
- package/dist/enums/commentDirectiveType.d.ts.map +1 -0
- package/dist/enums/commentDirectiveType.enum.d.ts +5 -0
- package/dist/enums/commentDirectiveType.enum.d.ts.map +1 -0
- package/dist/enums/commentDirectiveType.enum.js +6 -0
- package/dist/enums/commentDirectiveType.enum.js.map +1 -0
- package/dist/enums/commentDirectiveType.js +6 -0
- package/dist/enums/commentDirectiveType.js.map +1 -0
- package/dist/enums/diagnosticCategory.d.ts +2 -0
- package/dist/enums/diagnosticCategory.d.ts.map +1 -0
- package/dist/enums/diagnosticCategory.enum.d.ts +7 -0
- package/dist/enums/diagnosticCategory.enum.d.ts.map +1 -0
- package/dist/enums/diagnosticCategory.enum.js +9 -0
- package/dist/enums/diagnosticCategory.enum.js.map +1 -0
- package/dist/enums/diagnosticCategory.js +9 -0
- package/dist/enums/diagnosticCategory.js.map +1 -0
- package/dist/enums/elementFlags.d.ts +2 -0
- package/dist/enums/elementFlags.d.ts.map +1 -0
- package/dist/enums/elementFlags.enum.d.ts +12 -0
- package/dist/enums/elementFlags.enum.d.ts.map +1 -0
- package/dist/enums/elementFlags.enum.js +14 -0
- package/dist/enums/elementFlags.enum.js.map +1 -0
- package/dist/enums/elementFlags.js +14 -0
- package/dist/enums/elementFlags.js.map +1 -0
- package/dist/enums/languageVariant.d.ts +2 -0
- package/dist/enums/languageVariant.d.ts.map +1 -0
- package/dist/enums/languageVariant.enum.d.ts +5 -0
- package/dist/enums/languageVariant.enum.d.ts.map +1 -0
- package/dist/enums/languageVariant.enum.js +6 -0
- package/dist/enums/languageVariant.enum.js.map +1 -0
- package/dist/enums/languageVariant.js +6 -0
- package/dist/enums/languageVariant.js.map +1 -0
- package/dist/enums/modifierFlags.d.ts +2 -0
- package/dist/enums/modifierFlags.d.ts.map +1 -0
- package/dist/enums/modifierFlags.enum.d.ts +42 -0
- package/dist/enums/modifierFlags.enum.d.ts.map +1 -0
- package/dist/enums/modifierFlags.enum.js +44 -0
- package/dist/enums/modifierFlags.enum.js.map +1 -0
- package/dist/enums/modifierFlags.js +44 -0
- package/dist/enums/modifierFlags.js.map +1 -0
- package/dist/enums/nodeFlags.d.ts +2 -0
- package/dist/enums/nodeFlags.d.ts.map +1 -0
- package/dist/enums/nodeFlags.enum.d.ts +41 -0
- package/dist/enums/nodeFlags.enum.d.ts.map +1 -0
- package/dist/enums/nodeFlags.enum.js +43 -0
- package/dist/enums/nodeFlags.enum.js.map +1 -0
- package/dist/enums/nodeFlags.js +43 -0
- package/dist/enums/nodeFlags.js.map +1 -0
- package/dist/enums/objectFlags.d.ts +2 -0
- package/dist/enums/objectFlags.d.ts.map +1 -0
- package/dist/enums/objectFlags.enum.d.ts +50 -0
- package/dist/enums/objectFlags.enum.d.ts.map +1 -0
- package/dist/enums/objectFlags.enum.js +52 -0
- package/dist/enums/objectFlags.enum.js.map +1 -0
- package/dist/enums/objectFlags.js +52 -0
- package/dist/enums/objectFlags.js.map +1 -0
- package/dist/enums/outerExpressionKinds.d.ts +2 -0
- package/dist/enums/outerExpressionKinds.d.ts.map +1 -0
- package/dist/enums/outerExpressionKinds.enum.d.ts +12 -0
- package/dist/enums/outerExpressionKinds.enum.d.ts.map +1 -0
- package/dist/enums/outerExpressionKinds.enum.js +14 -0
- package/dist/enums/outerExpressionKinds.enum.js.map +1 -0
- package/dist/enums/outerExpressionKinds.js +14 -0
- package/dist/enums/outerExpressionKinds.js.map +1 -0
- package/dist/enums/regularExpressionFlags.d.ts +2 -0
- package/dist/enums/regularExpressionFlags.d.ts.map +1 -0
- package/dist/enums/regularExpressionFlags.enum.d.ts +13 -0
- package/dist/enums/regularExpressionFlags.enum.d.ts.map +1 -0
- package/dist/enums/regularExpressionFlags.enum.js +14 -0
- package/dist/enums/regularExpressionFlags.enum.js.map +1 -0
- package/dist/enums/regularExpressionFlags.js +14 -0
- package/dist/enums/regularExpressionFlags.js.map +1 -0
- package/dist/enums/scriptKind.d.ts +2 -0
- package/dist/enums/scriptKind.d.ts.map +1 -0
- package/dist/enums/scriptKind.enum.d.ts +11 -0
- package/dist/enums/scriptKind.enum.d.ts.map +1 -0
- package/dist/enums/scriptKind.enum.js +12 -0
- package/dist/enums/scriptKind.enum.js.map +1 -0
- package/dist/enums/scriptKind.js +12 -0
- package/dist/enums/scriptKind.js.map +1 -0
- package/dist/enums/scriptTarget.d.ts +2 -0
- package/dist/enums/scriptTarget.d.ts.map +1 -0
- package/dist/enums/scriptTarget.enum.d.ts +17 -0
- package/dist/enums/scriptTarget.enum.d.ts.map +1 -0
- package/dist/enums/scriptTarget.enum.js +18 -0
- package/dist/enums/scriptTarget.enum.js.map +1 -0
- package/dist/enums/scriptTarget.js +18 -0
- package/dist/enums/scriptTarget.js.map +1 -0
- package/dist/enums/signatureFlags.d.ts +2 -0
- package/dist/enums/signatureFlags.d.ts.map +1 -0
- package/dist/enums/signatureFlags.enum.d.ts +15 -0
- package/dist/enums/signatureFlags.enum.d.ts.map +1 -0
- package/dist/enums/signatureFlags.enum.js +17 -0
- package/dist/enums/signatureFlags.enum.js.map +1 -0
- package/dist/enums/signatureFlags.js +17 -0
- package/dist/enums/signatureFlags.js.map +1 -0
- package/dist/enums/signatureKind.d.ts +2 -0
- package/dist/enums/signatureKind.d.ts.map +1 -0
- package/dist/enums/signatureKind.enum.d.ts +5 -0
- package/dist/enums/signatureKind.enum.d.ts.map +1 -0
- package/dist/enums/signatureKind.enum.js +7 -0
- package/dist/enums/signatureKind.enum.js.map +1 -0
- package/dist/enums/signatureKind.js +7 -0
- package/dist/enums/signatureKind.js.map +1 -0
- package/dist/enums/symbolFlags.d.ts +2 -0
- package/dist/enums/symbolFlags.d.ts.map +1 -0
- package/dist/enums/symbolFlags.enum.d.ts +71 -0
- package/dist/enums/symbolFlags.enum.d.ts.map +1 -0
- package/dist/enums/symbolFlags.enum.js +73 -0
- package/dist/enums/symbolFlags.enum.js.map +1 -0
- package/dist/enums/symbolFlags.js +73 -0
- package/dist/enums/symbolFlags.js.map +1 -0
- package/dist/enums/syntaxKind.d.ts +2 -0
- package/dist/enums/syntaxKind.d.ts.map +1 -0
- package/dist/enums/syntaxKind.enum.d.ts +389 -0
- package/dist/enums/syntaxKind.enum.d.ts.map +1 -0
- package/dist/enums/syntaxKind.enum.js +391 -0
- package/dist/enums/syntaxKind.enum.js.map +1 -0
- package/dist/enums/syntaxKind.js +391 -0
- package/dist/enums/syntaxKind.js.map +1 -0
- package/dist/enums/tokenFlags.d.ts +2 -0
- package/dist/enums/tokenFlags.d.ts.map +1 -0
- package/dist/enums/tokenFlags.enum.d.ts +30 -0
- package/dist/enums/tokenFlags.enum.d.ts.map +1 -0
- package/dist/enums/tokenFlags.enum.js +32 -0
- package/dist/enums/tokenFlags.enum.js.map +1 -0
- package/dist/enums/tokenFlags.js +32 -0
- package/dist/enums/tokenFlags.js.map +1 -0
- package/dist/enums/typeFlags.d.ts +2 -0
- package/dist/enums/typeFlags.d.ts.map +1 -0
- package/dist/enums/typeFlags.enum.d.ts +76 -0
- package/dist/enums/typeFlags.enum.d.ts.map +1 -0
- package/dist/enums/typeFlags.enum.js +78 -0
- package/dist/enums/typeFlags.enum.js.map +1 -0
- package/dist/enums/typeFlags.js +78 -0
- package/dist/enums/typeFlags.js.map +1 -0
- package/dist/enums/typePredicateKind.d.ts +2 -0
- package/dist/enums/typePredicateKind.d.ts.map +1 -0
- package/dist/enums/typePredicateKind.enum.d.ts +7 -0
- package/dist/enums/typePredicateKind.enum.d.ts.map +1 -0
- package/dist/enums/typePredicateKind.enum.js +9 -0
- package/dist/enums/typePredicateKind.enum.js.map +1 -0
- package/dist/enums/typePredicateKind.js +9 -0
- package/dist/enums/typePredicateKind.js.map +1 -0
- package/lib/getExePath.d.ts +2 -0
- package/package.json +57 -12
- package/vendor/vscode-jsonrpc/README.md +69 -0
- package/vendor/vscode-jsonrpc/lib/browser/main.d.ts +17 -0
- package/vendor/vscode-jsonrpc/lib/browser/main.js +83 -0
- package/vendor/vscode-jsonrpc/lib/browser/ril.d.ts +22 -0
- package/vendor/vscode-jsonrpc/lib/browser/ril.js +203 -0
- package/vendor/vscode-jsonrpc/lib/common/api.d.ts +14 -0
- package/vendor/vscode-jsonrpc/lib/common/api.js +87 -0
- package/vendor/vscode-jsonrpc/lib/common/cancellation.d.ts +32 -0
- package/vendor/vscode-jsonrpc/lib/common/cancellation.js +132 -0
- package/vendor/vscode-jsonrpc/lib/common/connection.d.ts +367 -0
- package/vendor/vscode-jsonrpc/lib/common/connection.js +1272 -0
- package/vendor/vscode-jsonrpc/lib/common/disposable.d.ts +9 -0
- package/vendor/vscode-jsonrpc/lib/common/disposable.js +16 -0
- package/vendor/vscode-jsonrpc/lib/common/encoding.d.ts +52 -0
- package/vendor/vscode-jsonrpc/lib/common/encoding.js +70 -0
- package/vendor/vscode-jsonrpc/lib/common/events.d.ts +39 -0
- package/vendor/vscode-jsonrpc/lib/common/events.js +136 -0
- package/vendor/vscode-jsonrpc/lib/common/is.d.ts +7 -0
- package/vendor/vscode-jsonrpc/lib/common/is.js +34 -0
- package/vendor/vscode-jsonrpc/lib/common/linkedMap.d.ts +55 -0
- package/vendor/vscode-jsonrpc/lib/common/linkedMap.js +412 -0
- package/vendor/vscode-jsonrpc/lib/common/messageBuffer.d.ts +18 -0
- package/vendor/vscode-jsonrpc/lib/common/messageBuffer.js +155 -0
- package/vendor/vscode-jsonrpc/lib/common/messageReader.d.ts +77 -0
- package/vendor/vscode-jsonrpc/lib/common/messageReader.js +246 -0
- package/vendor/vscode-jsonrpc/lib/common/messageWriter.d.ts +60 -0
- package/vendor/vscode-jsonrpc/lib/common/messageWriter.js +157 -0
- package/vendor/vscode-jsonrpc/lib/common/messages.d.ts +369 -0
- package/vendor/vscode-jsonrpc/lib/common/messages.js +436 -0
- package/vendor/vscode-jsonrpc/lib/common/ral.d.ts +74 -0
- package/vendor/vscode-jsonrpc/lib/common/ral.js +23 -0
- package/vendor/vscode-jsonrpc/lib/common/semaphore.d.ts +10 -0
- package/vendor/vscode-jsonrpc/lib/common/semaphore.js +74 -0
- package/vendor/vscode-jsonrpc/lib/common/sharedArrayCancellation.d.ts +15 -0
- package/vendor/vscode-jsonrpc/lib/common/sharedArrayCancellation.js +77 -0
- package/vendor/vscode-jsonrpc/lib/node/main.d.ts +58 -0
- package/vendor/vscode-jsonrpc/lib/node/main.js +289 -0
- package/vendor/vscode-jsonrpc/lib/node/ril.d.ts +12 -0
- package/vendor/vscode-jsonrpc/lib/node/ril.js +163 -0
- package/vendor/vscode-jsonrpc/package.json +54 -0
- package/vendor/vscode-jsonrpc/typings/thenable.d.ts +5 -0
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
4
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
5
|
+
*--------------------------------------------------------------------------------------------*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.LRUCache = exports.LinkedMap = exports.Touch = void 0;
|
|
8
|
+
var Touch;
|
|
9
|
+
(function (Touch) {
|
|
10
|
+
Touch.None = 0;
|
|
11
|
+
Touch.First = 1;
|
|
12
|
+
Touch.AsOld = Touch.First;
|
|
13
|
+
Touch.Last = 2;
|
|
14
|
+
Touch.AsNew = Touch.Last;
|
|
15
|
+
})(Touch || (exports.Touch = Touch = {}));
|
|
16
|
+
class LinkedMap {
|
|
17
|
+
[Symbol.toStringTag] = 'LinkedMap';
|
|
18
|
+
_map;
|
|
19
|
+
_head;
|
|
20
|
+
_tail;
|
|
21
|
+
_size;
|
|
22
|
+
_state;
|
|
23
|
+
constructor() {
|
|
24
|
+
this._map = new Map();
|
|
25
|
+
this._head = undefined;
|
|
26
|
+
this._tail = undefined;
|
|
27
|
+
this._size = 0;
|
|
28
|
+
this._state = 0;
|
|
29
|
+
}
|
|
30
|
+
clear() {
|
|
31
|
+
this._map.clear();
|
|
32
|
+
this._head = undefined;
|
|
33
|
+
this._tail = undefined;
|
|
34
|
+
this._size = 0;
|
|
35
|
+
this._state++;
|
|
36
|
+
}
|
|
37
|
+
isEmpty() {
|
|
38
|
+
return !this._head && !this._tail;
|
|
39
|
+
}
|
|
40
|
+
get size() {
|
|
41
|
+
return this._size;
|
|
42
|
+
}
|
|
43
|
+
get first() {
|
|
44
|
+
return this._head?.value;
|
|
45
|
+
}
|
|
46
|
+
get last() {
|
|
47
|
+
return this._tail?.value;
|
|
48
|
+
}
|
|
49
|
+
before(key) {
|
|
50
|
+
const item = this._map.get(key);
|
|
51
|
+
return item ? item.previous?.value : undefined;
|
|
52
|
+
}
|
|
53
|
+
after(key) {
|
|
54
|
+
const item = this._map.get(key);
|
|
55
|
+
return item ? item.next?.value : undefined;
|
|
56
|
+
}
|
|
57
|
+
has(key) {
|
|
58
|
+
return this._map.has(key);
|
|
59
|
+
}
|
|
60
|
+
get(key, touch = Touch.None) {
|
|
61
|
+
const item = this._map.get(key);
|
|
62
|
+
if (!item) {
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
65
|
+
if (touch !== Touch.None) {
|
|
66
|
+
this.touch(item, touch);
|
|
67
|
+
}
|
|
68
|
+
return item.value;
|
|
69
|
+
}
|
|
70
|
+
set(key, value, touch = Touch.None) {
|
|
71
|
+
let item = this._map.get(key);
|
|
72
|
+
if (item) {
|
|
73
|
+
item.value = value;
|
|
74
|
+
if (touch !== Touch.None) {
|
|
75
|
+
this.touch(item, touch);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
item = { key, value, next: undefined, previous: undefined };
|
|
80
|
+
switch (touch) {
|
|
81
|
+
case Touch.None:
|
|
82
|
+
this.addItemLast(item);
|
|
83
|
+
break;
|
|
84
|
+
case Touch.First:
|
|
85
|
+
this.addItemFirst(item);
|
|
86
|
+
break;
|
|
87
|
+
case Touch.Last:
|
|
88
|
+
this.addItemLast(item);
|
|
89
|
+
break;
|
|
90
|
+
default:
|
|
91
|
+
this.addItemLast(item);
|
|
92
|
+
break;
|
|
93
|
+
}
|
|
94
|
+
this._map.set(key, item);
|
|
95
|
+
this._size++;
|
|
96
|
+
}
|
|
97
|
+
return this;
|
|
98
|
+
}
|
|
99
|
+
delete(key) {
|
|
100
|
+
return !!this.remove(key);
|
|
101
|
+
}
|
|
102
|
+
remove(key) {
|
|
103
|
+
const item = this._map.get(key);
|
|
104
|
+
if (!item) {
|
|
105
|
+
return undefined;
|
|
106
|
+
}
|
|
107
|
+
this._map.delete(key);
|
|
108
|
+
this.removeItem(item);
|
|
109
|
+
this._size--;
|
|
110
|
+
return item.value;
|
|
111
|
+
}
|
|
112
|
+
shift() {
|
|
113
|
+
if (!this._head && !this._tail) {
|
|
114
|
+
return undefined;
|
|
115
|
+
}
|
|
116
|
+
if (!this._head || !this._tail) {
|
|
117
|
+
throw new Error('Invalid list');
|
|
118
|
+
}
|
|
119
|
+
const item = this._head;
|
|
120
|
+
this._map.delete(item.key);
|
|
121
|
+
this.removeItem(item);
|
|
122
|
+
this._size--;
|
|
123
|
+
return item.value;
|
|
124
|
+
}
|
|
125
|
+
forEach(callbackfn, thisArg) {
|
|
126
|
+
const state = this._state;
|
|
127
|
+
let current = this._head;
|
|
128
|
+
while (current) {
|
|
129
|
+
if (thisArg) {
|
|
130
|
+
callbackfn.bind(thisArg)(current.value, current.key, this);
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
callbackfn(current.value, current.key, this);
|
|
134
|
+
}
|
|
135
|
+
if (this._state !== state) {
|
|
136
|
+
throw new Error(`LinkedMap got modified during iteration.`);
|
|
137
|
+
}
|
|
138
|
+
current = current.next;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
keys() {
|
|
142
|
+
const state = this._state;
|
|
143
|
+
let current = this._head;
|
|
144
|
+
const iterator = {
|
|
145
|
+
[Symbol.iterator]: () => {
|
|
146
|
+
return iterator;
|
|
147
|
+
},
|
|
148
|
+
next: () => {
|
|
149
|
+
if (this._state !== state) {
|
|
150
|
+
throw new Error(`LinkedMap got modified during iteration.`);
|
|
151
|
+
}
|
|
152
|
+
if (current) {
|
|
153
|
+
const result = { value: current.key, done: false };
|
|
154
|
+
current = current.next;
|
|
155
|
+
return result;
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
return { value: undefined, done: true };
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
return iterator;
|
|
163
|
+
}
|
|
164
|
+
values() {
|
|
165
|
+
const state = this._state;
|
|
166
|
+
let current = this._head;
|
|
167
|
+
const iterator = {
|
|
168
|
+
[Symbol.iterator]: () => {
|
|
169
|
+
return iterator;
|
|
170
|
+
},
|
|
171
|
+
next: () => {
|
|
172
|
+
if (this._state !== state) {
|
|
173
|
+
throw new Error(`LinkedMap got modified during iteration.`);
|
|
174
|
+
}
|
|
175
|
+
if (current) {
|
|
176
|
+
const result = { value: current.value, done: false };
|
|
177
|
+
current = current.next;
|
|
178
|
+
return result;
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
return { value: undefined, done: true };
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
};
|
|
185
|
+
return iterator;
|
|
186
|
+
}
|
|
187
|
+
entries() {
|
|
188
|
+
const state = this._state;
|
|
189
|
+
let current = this._head;
|
|
190
|
+
const iterator = {
|
|
191
|
+
[Symbol.iterator]: () => {
|
|
192
|
+
return iterator;
|
|
193
|
+
},
|
|
194
|
+
next: () => {
|
|
195
|
+
if (this._state !== state) {
|
|
196
|
+
throw new Error(`LinkedMap got modified during iteration.`);
|
|
197
|
+
}
|
|
198
|
+
if (current) {
|
|
199
|
+
const result = { value: [current.key, current.value], done: false };
|
|
200
|
+
current = current.next;
|
|
201
|
+
return result;
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
return { value: undefined, done: true };
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
return iterator;
|
|
209
|
+
}
|
|
210
|
+
[Symbol.iterator]() {
|
|
211
|
+
return this.entries();
|
|
212
|
+
}
|
|
213
|
+
trimOld(newSize) {
|
|
214
|
+
if (newSize >= this.size) {
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
if (newSize === 0) {
|
|
218
|
+
this.clear();
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
let current = this._head;
|
|
222
|
+
let currentSize = this.size;
|
|
223
|
+
while (current && currentSize > newSize) {
|
|
224
|
+
this._map.delete(current.key);
|
|
225
|
+
current = current.next;
|
|
226
|
+
currentSize--;
|
|
227
|
+
}
|
|
228
|
+
this._head = current;
|
|
229
|
+
this._size = currentSize;
|
|
230
|
+
if (current) {
|
|
231
|
+
current.previous = undefined;
|
|
232
|
+
}
|
|
233
|
+
this._state++;
|
|
234
|
+
}
|
|
235
|
+
addItemFirst(item) {
|
|
236
|
+
// First time Insert
|
|
237
|
+
if (!this._head && !this._tail) {
|
|
238
|
+
this._tail = item;
|
|
239
|
+
}
|
|
240
|
+
else if (!this._head) {
|
|
241
|
+
throw new Error('Invalid list');
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
item.next = this._head;
|
|
245
|
+
this._head.previous = item;
|
|
246
|
+
}
|
|
247
|
+
this._head = item;
|
|
248
|
+
this._state++;
|
|
249
|
+
}
|
|
250
|
+
addItemLast(item) {
|
|
251
|
+
// First time Insert
|
|
252
|
+
if (!this._head && !this._tail) {
|
|
253
|
+
this._head = item;
|
|
254
|
+
}
|
|
255
|
+
else if (!this._tail) {
|
|
256
|
+
throw new Error('Invalid list');
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
item.previous = this._tail;
|
|
260
|
+
this._tail.next = item;
|
|
261
|
+
}
|
|
262
|
+
this._tail = item;
|
|
263
|
+
this._state++;
|
|
264
|
+
}
|
|
265
|
+
removeItem(item) {
|
|
266
|
+
if (item === this._head && item === this._tail) {
|
|
267
|
+
this._head = undefined;
|
|
268
|
+
this._tail = undefined;
|
|
269
|
+
}
|
|
270
|
+
else if (item === this._head) {
|
|
271
|
+
// This can only happened if size === 1 which is handle
|
|
272
|
+
// by the case above.
|
|
273
|
+
if (!item.next) {
|
|
274
|
+
throw new Error('Invalid list');
|
|
275
|
+
}
|
|
276
|
+
item.next.previous = undefined;
|
|
277
|
+
this._head = item.next;
|
|
278
|
+
}
|
|
279
|
+
else if (item === this._tail) {
|
|
280
|
+
// This can only happened if size === 1 which is handle
|
|
281
|
+
// by the case above.
|
|
282
|
+
if (!item.previous) {
|
|
283
|
+
throw new Error('Invalid list');
|
|
284
|
+
}
|
|
285
|
+
item.previous.next = undefined;
|
|
286
|
+
this._tail = item.previous;
|
|
287
|
+
}
|
|
288
|
+
else {
|
|
289
|
+
const next = item.next;
|
|
290
|
+
const previous = item.previous;
|
|
291
|
+
if (!next || !previous) {
|
|
292
|
+
throw new Error('Invalid list');
|
|
293
|
+
}
|
|
294
|
+
next.previous = previous;
|
|
295
|
+
previous.next = next;
|
|
296
|
+
}
|
|
297
|
+
item.next = undefined;
|
|
298
|
+
item.previous = undefined;
|
|
299
|
+
this._state++;
|
|
300
|
+
}
|
|
301
|
+
touch(item, touch) {
|
|
302
|
+
if (!this._head || !this._tail) {
|
|
303
|
+
throw new Error('Invalid list');
|
|
304
|
+
}
|
|
305
|
+
if ((touch !== Touch.First && touch !== Touch.Last)) {
|
|
306
|
+
return;
|
|
307
|
+
}
|
|
308
|
+
if (touch === Touch.First) {
|
|
309
|
+
if (item === this._head) {
|
|
310
|
+
return;
|
|
311
|
+
}
|
|
312
|
+
const next = item.next;
|
|
313
|
+
const previous = item.previous;
|
|
314
|
+
// Unlink the item
|
|
315
|
+
if (item === this._tail) {
|
|
316
|
+
// previous must be defined since item was not head but is tail
|
|
317
|
+
// So there are more than on item in the map
|
|
318
|
+
previous.next = undefined;
|
|
319
|
+
this._tail = previous;
|
|
320
|
+
}
|
|
321
|
+
else {
|
|
322
|
+
// Both next and previous are not undefined since item was neither head nor tail.
|
|
323
|
+
next.previous = previous;
|
|
324
|
+
previous.next = next;
|
|
325
|
+
}
|
|
326
|
+
// Insert the node at head
|
|
327
|
+
item.previous = undefined;
|
|
328
|
+
item.next = this._head;
|
|
329
|
+
this._head.previous = item;
|
|
330
|
+
this._head = item;
|
|
331
|
+
this._state++;
|
|
332
|
+
}
|
|
333
|
+
else if (touch === Touch.Last) {
|
|
334
|
+
if (item === this._tail) {
|
|
335
|
+
return;
|
|
336
|
+
}
|
|
337
|
+
const next = item.next;
|
|
338
|
+
const previous = item.previous;
|
|
339
|
+
// Unlink the item.
|
|
340
|
+
if (item === this._head) {
|
|
341
|
+
// next must be defined since item was not tail but is head
|
|
342
|
+
// So there are more than on item in the map
|
|
343
|
+
next.previous = undefined;
|
|
344
|
+
this._head = next;
|
|
345
|
+
}
|
|
346
|
+
else {
|
|
347
|
+
// Both next and previous are not undefined since item was neither head nor tail.
|
|
348
|
+
next.previous = previous;
|
|
349
|
+
previous.next = next;
|
|
350
|
+
}
|
|
351
|
+
item.next = undefined;
|
|
352
|
+
item.previous = this._tail;
|
|
353
|
+
this._tail.next = item;
|
|
354
|
+
this._tail = item;
|
|
355
|
+
this._state++;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
toJSON() {
|
|
359
|
+
const data = [];
|
|
360
|
+
this.forEach((value, key) => {
|
|
361
|
+
data.push([key, value]);
|
|
362
|
+
});
|
|
363
|
+
return data;
|
|
364
|
+
}
|
|
365
|
+
fromJSON(data) {
|
|
366
|
+
this.clear();
|
|
367
|
+
for (const [key, value] of data) {
|
|
368
|
+
this.set(key, value);
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
exports.LinkedMap = LinkedMap;
|
|
373
|
+
class LRUCache extends LinkedMap {
|
|
374
|
+
_limit;
|
|
375
|
+
_ratio;
|
|
376
|
+
constructor(limit, ratio = 1) {
|
|
377
|
+
super();
|
|
378
|
+
this._limit = limit;
|
|
379
|
+
this._ratio = Math.min(Math.max(0, ratio), 1);
|
|
380
|
+
}
|
|
381
|
+
get limit() {
|
|
382
|
+
return this._limit;
|
|
383
|
+
}
|
|
384
|
+
set limit(limit) {
|
|
385
|
+
this._limit = limit;
|
|
386
|
+
this.checkTrim();
|
|
387
|
+
}
|
|
388
|
+
get ratio() {
|
|
389
|
+
return this._ratio;
|
|
390
|
+
}
|
|
391
|
+
set ratio(ratio) {
|
|
392
|
+
this._ratio = Math.min(Math.max(0, ratio), 1);
|
|
393
|
+
this.checkTrim();
|
|
394
|
+
}
|
|
395
|
+
get(key, touch = Touch.AsNew) {
|
|
396
|
+
return super.get(key, touch);
|
|
397
|
+
}
|
|
398
|
+
peek(key) {
|
|
399
|
+
return super.get(key, Touch.None);
|
|
400
|
+
}
|
|
401
|
+
set(key, value) {
|
|
402
|
+
super.set(key, value, Touch.Last);
|
|
403
|
+
this.checkTrim();
|
|
404
|
+
return this;
|
|
405
|
+
}
|
|
406
|
+
checkTrim() {
|
|
407
|
+
if (this.size > this._limit) {
|
|
408
|
+
this.trimOld(Math.round(this._limit * this._ratio));
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
exports.LRUCache = LRUCache;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import RAL from './ral';
|
|
2
|
+
export declare abstract class AbstractMessageBuffer implements RAL.MessageBuffer {
|
|
3
|
+
private _encoding;
|
|
4
|
+
private _chunks;
|
|
5
|
+
private _totalLength;
|
|
6
|
+
constructor(encoding?: RAL.MessageBufferEncoding);
|
|
7
|
+
protected abstract emptyBuffer(): Uint8Array;
|
|
8
|
+
protected abstract fromString(value: string, encoding: RAL.MessageBufferEncoding): Uint8Array;
|
|
9
|
+
protected abstract toString(value: Uint8Array, encoding: RAL.MessageBufferEncoding): string;
|
|
10
|
+
protected abstract asNative(buffer: Uint8Array, length?: number): Uint8Array;
|
|
11
|
+
protected abstract allocNative(length: number): Uint8Array;
|
|
12
|
+
get encoding(): RAL.MessageBufferEncoding;
|
|
13
|
+
append(chunk: Uint8Array | string): void;
|
|
14
|
+
tryReadHeaders(lowerCaseKeys?: boolean): Map<string, string> | undefined;
|
|
15
|
+
tryReadBody(length: number): Uint8Array | undefined;
|
|
16
|
+
get numberOfBytes(): number;
|
|
17
|
+
private _read;
|
|
18
|
+
}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
4
|
+
* Licensed under the MIT License. See License.txt in the project root for license information.
|
|
5
|
+
*--------------------------------------------------------------------------------------------*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.AbstractMessageBuffer = void 0;
|
|
8
|
+
const CR = 13;
|
|
9
|
+
const LF = 10;
|
|
10
|
+
const CRLF = '\r\n';
|
|
11
|
+
class AbstractMessageBuffer {
|
|
12
|
+
_encoding;
|
|
13
|
+
_chunks;
|
|
14
|
+
_totalLength;
|
|
15
|
+
constructor(encoding = 'utf-8') {
|
|
16
|
+
this._encoding = encoding;
|
|
17
|
+
this._chunks = [];
|
|
18
|
+
this._totalLength = 0;
|
|
19
|
+
}
|
|
20
|
+
get encoding() {
|
|
21
|
+
return this._encoding;
|
|
22
|
+
}
|
|
23
|
+
append(chunk) {
|
|
24
|
+
const toAppend = typeof chunk === 'string' ? this.fromString(chunk, this._encoding) : chunk;
|
|
25
|
+
this._chunks.push(toAppend);
|
|
26
|
+
this._totalLength += toAppend.byteLength;
|
|
27
|
+
}
|
|
28
|
+
tryReadHeaders(lowerCaseKeys = false) {
|
|
29
|
+
if (this._chunks.length === 0) {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
let state = 0;
|
|
33
|
+
let chunkIndex = 0;
|
|
34
|
+
let offset = 0;
|
|
35
|
+
let chunkBytesRead = 0;
|
|
36
|
+
row: while (chunkIndex < this._chunks.length) {
|
|
37
|
+
const chunk = this._chunks[chunkIndex];
|
|
38
|
+
offset = 0;
|
|
39
|
+
while (offset < chunk.length) {
|
|
40
|
+
const value = chunk[offset];
|
|
41
|
+
switch (value) {
|
|
42
|
+
case CR:
|
|
43
|
+
switch (state) {
|
|
44
|
+
case 0:
|
|
45
|
+
state = 1;
|
|
46
|
+
break;
|
|
47
|
+
case 2:
|
|
48
|
+
state = 3;
|
|
49
|
+
break;
|
|
50
|
+
default:
|
|
51
|
+
state = 0;
|
|
52
|
+
}
|
|
53
|
+
break;
|
|
54
|
+
case LF:
|
|
55
|
+
switch (state) {
|
|
56
|
+
case 1:
|
|
57
|
+
state = 2;
|
|
58
|
+
break;
|
|
59
|
+
case 3:
|
|
60
|
+
state = 4;
|
|
61
|
+
offset++;
|
|
62
|
+
break row;
|
|
63
|
+
default:
|
|
64
|
+
state = 0;
|
|
65
|
+
}
|
|
66
|
+
break;
|
|
67
|
+
default:
|
|
68
|
+
state = 0;
|
|
69
|
+
}
|
|
70
|
+
offset++;
|
|
71
|
+
}
|
|
72
|
+
chunkBytesRead += chunk.byteLength;
|
|
73
|
+
chunkIndex++;
|
|
74
|
+
}
|
|
75
|
+
if (state !== 4) {
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
// The buffer contains the two CRLF at the end. So we will
|
|
79
|
+
// have two empty lines after the split at the end as well.
|
|
80
|
+
const buffer = this._read(chunkBytesRead + offset);
|
|
81
|
+
const result = new Map();
|
|
82
|
+
const headers = this.toString(buffer, 'ascii').split(CRLF);
|
|
83
|
+
if (headers.length < 2) {
|
|
84
|
+
return result;
|
|
85
|
+
}
|
|
86
|
+
for (let i = 0; i < headers.length - 2; i++) {
|
|
87
|
+
const header = headers[i];
|
|
88
|
+
const index = header.indexOf(':');
|
|
89
|
+
if (index === -1) {
|
|
90
|
+
throw new Error(`Message header must separate key and value using ':'\n${header}`);
|
|
91
|
+
}
|
|
92
|
+
const key = header.substr(0, index);
|
|
93
|
+
const value = header.substr(index + 1).trim();
|
|
94
|
+
result.set(lowerCaseKeys ? key.toLowerCase() : key, value);
|
|
95
|
+
}
|
|
96
|
+
return result;
|
|
97
|
+
}
|
|
98
|
+
tryReadBody(length) {
|
|
99
|
+
if (this._totalLength < length) {
|
|
100
|
+
return undefined;
|
|
101
|
+
}
|
|
102
|
+
return this._read(length);
|
|
103
|
+
}
|
|
104
|
+
get numberOfBytes() {
|
|
105
|
+
return this._totalLength;
|
|
106
|
+
}
|
|
107
|
+
_read(byteCount) {
|
|
108
|
+
if (byteCount === 0) {
|
|
109
|
+
return this.emptyBuffer();
|
|
110
|
+
}
|
|
111
|
+
if (byteCount > this._totalLength) {
|
|
112
|
+
throw new Error(`Cannot read so many bytes!`);
|
|
113
|
+
}
|
|
114
|
+
if (this._chunks[0].byteLength === byteCount) {
|
|
115
|
+
// super fast path, precisely first chunk must be returned
|
|
116
|
+
const chunk = this._chunks[0];
|
|
117
|
+
this._chunks.shift();
|
|
118
|
+
this._totalLength -= byteCount;
|
|
119
|
+
return this.asNative(chunk);
|
|
120
|
+
}
|
|
121
|
+
if (this._chunks[0].byteLength > byteCount) {
|
|
122
|
+
// fast path, the reading is entirely within the first chunk
|
|
123
|
+
const chunk = this._chunks[0];
|
|
124
|
+
const result = this.asNative(chunk, byteCount);
|
|
125
|
+
this._chunks[0] = chunk.slice(byteCount);
|
|
126
|
+
this._totalLength -= byteCount;
|
|
127
|
+
return result;
|
|
128
|
+
}
|
|
129
|
+
const result = this.allocNative(byteCount);
|
|
130
|
+
let resultOffset = 0;
|
|
131
|
+
const chunkIndex = 0;
|
|
132
|
+
while (byteCount > 0) {
|
|
133
|
+
const chunk = this._chunks[chunkIndex];
|
|
134
|
+
if (chunk.byteLength > byteCount) {
|
|
135
|
+
// this chunk will survive
|
|
136
|
+
const chunkPart = chunk.slice(0, byteCount);
|
|
137
|
+
result.set(chunkPart, resultOffset);
|
|
138
|
+
resultOffset += byteCount;
|
|
139
|
+
this._chunks[chunkIndex] = chunk.slice(byteCount);
|
|
140
|
+
this._totalLength -= byteCount;
|
|
141
|
+
byteCount -= byteCount;
|
|
142
|
+
}
|
|
143
|
+
else {
|
|
144
|
+
// this chunk will be entirely read
|
|
145
|
+
result.set(chunk, resultOffset);
|
|
146
|
+
resultOffset += chunk.byteLength;
|
|
147
|
+
this._chunks.shift();
|
|
148
|
+
this._totalLength -= chunk.byteLength;
|
|
149
|
+
byteCount -= chunk.byteLength;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return result;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
exports.AbstractMessageBuffer = AbstractMessageBuffer;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import RAL from './ral';
|
|
2
|
+
import { Event } from './events';
|
|
3
|
+
import { Message } from './messages';
|
|
4
|
+
import { ContentDecoder, ContentTypeDecoder } from './encoding';
|
|
5
|
+
import { Disposable } from './api';
|
|
6
|
+
/**
|
|
7
|
+
* A callback that receives each incoming JSON-RPC message.
|
|
8
|
+
*/
|
|
9
|
+
export interface DataCallback {
|
|
10
|
+
(data: Message): void;
|
|
11
|
+
}
|
|
12
|
+
export interface PartialMessageInfo {
|
|
13
|
+
readonly messageToken: number;
|
|
14
|
+
readonly waitingTime: number;
|
|
15
|
+
}
|
|
16
|
+
/** Reads JSON-RPC messages from some underlying transport. */
|
|
17
|
+
export interface MessageReader {
|
|
18
|
+
/** Raised whenever an error occurs while reading a message. */
|
|
19
|
+
readonly onError: Event<Error>;
|
|
20
|
+
/** An event raised when the end of the underlying transport has been reached. */
|
|
21
|
+
readonly onClose: Event<void>;
|
|
22
|
+
/**
|
|
23
|
+
* An event that *may* be raised to inform the owner that only part of a message has been received.
|
|
24
|
+
* A MessageReader implementation may choose to raise this event after a timeout elapses while waiting for more of a partially received message to be received.
|
|
25
|
+
*/
|
|
26
|
+
readonly onPartialMessage: Event<PartialMessageInfo>;
|
|
27
|
+
/**
|
|
28
|
+
* Begins listening for incoming messages. To be called at most once.
|
|
29
|
+
* @param callback A callback for receiving decoded messages.
|
|
30
|
+
*/
|
|
31
|
+
listen(callback: DataCallback): Disposable;
|
|
32
|
+
/** Releases resources incurred from reading or raising events. Does NOT close the underlying transport, if any. */
|
|
33
|
+
dispose(): void;
|
|
34
|
+
}
|
|
35
|
+
export declare namespace MessageReader {
|
|
36
|
+
function is(value: any): value is MessageReader;
|
|
37
|
+
}
|
|
38
|
+
export declare abstract class AbstractMessageReader implements MessageReader {
|
|
39
|
+
private errorEmitter;
|
|
40
|
+
private closeEmitter;
|
|
41
|
+
private partialMessageEmitter;
|
|
42
|
+
constructor();
|
|
43
|
+
dispose(): void;
|
|
44
|
+
get onError(): Event<Error>;
|
|
45
|
+
protected fireError(error: any): void;
|
|
46
|
+
get onClose(): Event<void>;
|
|
47
|
+
protected fireClose(): void;
|
|
48
|
+
get onPartialMessage(): Event<PartialMessageInfo>;
|
|
49
|
+
protected firePartialMessage(info: PartialMessageInfo): void;
|
|
50
|
+
private asError;
|
|
51
|
+
abstract listen(callback: DataCallback): Disposable;
|
|
52
|
+
}
|
|
53
|
+
export interface MessageReaderOptions {
|
|
54
|
+
charset?: RAL.MessageBufferEncoding;
|
|
55
|
+
contentDecoder?: ContentDecoder;
|
|
56
|
+
contentDecoders?: ContentDecoder[];
|
|
57
|
+
contentTypeDecoder?: ContentTypeDecoder;
|
|
58
|
+
contentTypeDecoders?: ContentTypeDecoder[];
|
|
59
|
+
}
|
|
60
|
+
export declare class ReadableStreamMessageReader extends AbstractMessageReader {
|
|
61
|
+
private readable;
|
|
62
|
+
private options;
|
|
63
|
+
private callback;
|
|
64
|
+
private nextMessageLength;
|
|
65
|
+
private messageToken;
|
|
66
|
+
private buffer;
|
|
67
|
+
private partialMessageTimer;
|
|
68
|
+
private _partialMessageTimeout;
|
|
69
|
+
private readSemaphore;
|
|
70
|
+
constructor(readable: RAL.ReadableStream, options?: RAL.MessageBufferEncoding | MessageReaderOptions);
|
|
71
|
+
set partialMessageTimeout(timeout: number);
|
|
72
|
+
get partialMessageTimeout(): number;
|
|
73
|
+
listen(callback: DataCallback): Disposable;
|
|
74
|
+
private onData;
|
|
75
|
+
private clearPartialMessageTimer;
|
|
76
|
+
private setPartialMessageTimer;
|
|
77
|
+
}
|