javonet-nodejs-sdk 2.5.17 → 2.5.18
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/core/handler/AbstractHandler.cjs +23 -6
- package/dist/core/handler/ArrayGetItemHandler.cjs +4 -1
- package/dist/core/handler/ArrayGetRankHandler.cjs +3 -0
- package/dist/core/handler/ArrayGetSizeHandler.cjs +3 -0
- package/dist/core/handler/ArrayHandler.cjs +3 -0
- package/dist/core/handler/ArraySetItemHandler.cjs +4 -1
- package/dist/core/handler/CastingHandler.cjs +3 -1
- package/dist/core/handler/ConvertTypeHandler.cjs +4 -4
- package/dist/core/handler/CreateClassInstanceHandler.cjs +5 -2
- package/dist/core/handler/DestructReferenceHandler.cjs +3 -0
- package/dist/core/handler/EnableNamespaceHandler.cjs +3 -0
- package/dist/core/handler/EnableTypeHandler.cjs +3 -0
- package/dist/core/handler/GetGlobalStaticFieldHandler.cjs +3 -0
- package/dist/core/handler/GetInstanceFieldHandler.cjs +3 -0
- package/dist/core/handler/GetInstanceMethodAsDelegateHandler.cjs +15 -4
- package/dist/core/handler/GetStaticFieldHandler.cjs +4 -0
- package/dist/core/handler/GetStaticMethodAsDelegateHandler.cjs +8 -6
- package/dist/core/handler/GetTypeHandler.cjs +10 -2
- package/dist/core/handler/Handler.cjs +8 -11
- package/dist/core/handler/InvokeGlobalFunctionHandler.cjs +3 -0
- package/dist/core/handler/InvokeInstanceMethodHandler.cjs +3 -0
- package/dist/core/handler/InvokeStaticMethodHandler.cjs +3 -0
- package/dist/core/handler/LoadLibraryHandler.cjs +4 -0
- package/dist/core/handler/SetGlobalStaticFieldHandler.cjs +3 -0
- package/dist/core/handler/SetInstanceFieldHandler.cjs +3 -0
- package/dist/core/handler/SetStaticFieldHandler.cjs +3 -0
- package/dist/core/handler/ValueHandler.cjs +4 -0
- package/dist/core/interpreter/Interpreter.cjs +28 -12
- package/dist/core/namespaceCache/NamespaceCache.cjs +12 -0
- package/dist/core/protocol/CommandDeserializer.cjs +10 -2
- package/dist/core/protocol/CommandSerializer.cjs +24 -4
- package/dist/core/protocol/TypeDeserializer.cjs +35 -0
- package/dist/core/protocol/TypeSerializer.cjs +51 -7
- package/dist/core/receiver/Receiver.cjs +1 -1
- package/dist/core/receiver/ReceiverNative.cjs +6 -0
- package/dist/core/transmitter/Transmitter.cjs +18 -2
- package/dist/core/transmitter/TransmitterWebsocket.cjs +8 -5
- package/dist/core/transmitter/TransmitterWebsocketBrowser.cjs +1 -1
- package/dist/core/transmitter/TransmitterWrapper.cjs +25 -8
- package/dist/core/typeCache/TypeCache.cjs +8 -0
- package/dist/core/webSocketClient/WebSocketClient.cjs +22 -12
- package/dist/core/webSocketClient/WebSocketClientBrowser.cjs +2 -2
- package/dist/sdk/ConfigRuntimeFactory.cjs +60 -55
- package/dist/sdk/InvocationContext.cjs +81 -23
- package/dist/sdk/Javonet.cjs +14 -33
- package/dist/sdk/RuntimeContext.cjs +85 -30
- package/dist/sdk/RuntimeFactory.cjs +3 -0
- package/dist/sdk/tools/ActivationHelper.cjs +66 -0
- package/dist/sdk/tools/JsonResolver.cjs +214 -0
- package/dist/types/core/handler/AbstractHandler.d.ts +23 -4
- package/dist/types/core/handler/ArrayGetItemHandler.d.ts +8 -1
- package/dist/types/core/handler/ArrayGetRankHandler.d.ts +8 -1
- package/dist/types/core/handler/ArrayGetSizeHandler.d.ts +8 -1
- package/dist/types/core/handler/ArrayHandler.d.ts +8 -1
- package/dist/types/core/handler/ArraySetItemHandler.d.ts +8 -1
- package/dist/types/core/handler/CastingHandler.d.ts +4 -0
- package/dist/types/core/handler/ConvertTypeHandler.d.ts +8 -4
- package/dist/types/core/handler/CreateClassInstanceHandler.d.ts +8 -1
- package/dist/types/core/handler/DestructReferenceHandler.d.ts +8 -1
- package/dist/types/core/handler/EnableNamespaceHandler.d.ts +8 -1
- package/dist/types/core/handler/EnableTypeHandler.d.ts +8 -1
- package/dist/types/core/handler/GetGlobalStaticFieldHandler.d.ts +8 -1
- package/dist/types/core/handler/GetInstanceFieldHandler.d.ts +8 -1
- package/dist/types/core/handler/GetStaticFieldHandler.d.ts +9 -1
- package/dist/types/core/handler/GetStaticMethodAsDelegateHandler.d.ts +4 -3
- package/dist/types/core/handler/GetTypeHandler.d.ts +17 -8
- package/dist/types/core/handler/Handler.d.ts +8 -8
- package/dist/types/core/handler/InvokeDelegateHandler.d.ts +4 -0
- package/dist/types/core/handler/InvokeGlobalFunctionHandler.d.ts +8 -1
- package/dist/types/core/handler/InvokeInstanceMethodHandler.d.ts +8 -1
- package/dist/types/core/handler/InvokeStaticMethodHandler.d.ts +8 -1
- package/dist/types/core/handler/LoadLibraryHandler.d.ts +8 -3
- package/dist/types/core/handler/SetGlobalStaticFieldHandler.d.ts +4 -0
- package/dist/types/core/handler/SetInstanceFieldHandler.d.ts +8 -1
- package/dist/types/core/handler/SetStaticFieldHandler.d.ts +8 -1
- package/dist/types/core/handler/ValueHandler.d.ts +9 -1
- package/dist/types/core/interpreter/Interpreter.d.ts +11 -10
- package/dist/types/core/namespaceCache/NamespaceCache.d.ts +17 -5
- package/dist/types/core/protocol/CommandDeserializer.d.ts +10 -3
- package/dist/types/core/protocol/CommandSerializer.d.ts +19 -2
- package/dist/types/core/protocol/TypeDeserializer.d.ts +46 -11
- package/dist/types/core/protocol/TypeSerializer.d.ts +53 -13
- package/dist/types/core/receiver/Receiver.d.ts +2 -2
- package/dist/types/core/receiver/ReceiverNative.d.ts +8 -2
- package/dist/types/core/transmitter/Transmitter.d.ts +20 -4
- package/dist/types/core/transmitter/TransmitterWebsocket.d.ts +8 -4
- package/dist/types/core/transmitter/TransmitterWebsocketBrowser.d.ts +4 -7
- package/dist/types/core/transmitter/TransmitterWrapper.d.ts +12 -3
- package/dist/types/core/typeCache/TypeCache.d.ts +15 -5
- package/dist/types/core/webSocketClient/WebSocketClient.d.ts +17 -21
- package/dist/types/sdk/ConfigRuntimeFactory.d.ts +9 -6
- package/dist/types/sdk/InvocationContext.d.ts +38 -6
- package/dist/types/sdk/Javonet.d.ts +12 -7
- package/dist/types/sdk/RuntimeContext.d.ts +23 -7
- package/dist/types/sdk/RuntimeFactory.d.ts +9 -2
- package/dist/types/sdk/tools/ActivationHelper.d.ts +20 -0
- package/dist/types/sdk/tools/JsonResolver.d.ts +87 -0
- package/dist/types/utils/Command.d.ts +18 -14
- package/dist/types/utils/CustomError.d.ts +5 -1
- package/dist/types/utils/Runtime.d.ts +1 -2
- package/dist/types/utils/RuntimeNameHandler.d.ts +6 -2
- package/dist/types/utils/Type.d.ts +1 -0
- package/dist/types/utils/TypesHandler.d.ts +16 -0
- package/dist/types/utils/UtilsConst.d.ts +32 -0
- package/dist/types/utils/connectionData/IConnectionData.d.ts +16 -3
- package/dist/types/utils/connectionData/InMemoryConnectionData.d.ts +4 -3
- package/dist/types/utils/connectionData/WsConnectionData.d.ts +7 -10
- package/dist/types/utils/nodejs/connectionData/TcpConnectionData.d.ts +17 -10
- package/dist/utils/Command.cjs +9 -9
- package/dist/utils/CustomError.cjs +4 -0
- package/dist/utils/RuntimeNameHandler.cjs +1 -1
- package/dist/utils/Type.cjs +2 -1
- package/dist/utils/TypesHandler.cjs +55 -0
- package/dist/utils/UtilsConst.cjs +101 -0
- package/dist/utils/connectionData/IConnectionData.cjs +9 -0
- package/dist/utils/connectionData/InMemoryConnectionData.cjs +10 -0
- package/dist/utils/connectionData/WsConnectionData.cjs +4 -0
- package/dist/utils/nodejs/connectionData/TcpConnectionData.cjs +33 -3
- package/lib/core/delegatesCache/DelegatesCache.js +1 -0
- package/lib/core/handler/AbstractHandler.js +27 -9
- package/lib/core/handler/ArrayGetItemHandler.js +9 -1
- package/lib/core/handler/ArrayGetRankHandler.js +9 -0
- package/lib/core/handler/ArrayGetSizeHandler.js +8 -0
- package/lib/core/handler/ArrayHandler.js +8 -0
- package/lib/core/handler/ArraySetItemHandler.js +11 -1
- package/lib/core/handler/CastingHandler.js +8 -1
- package/lib/core/handler/ConvertTypeHandler.js +9 -4
- package/lib/core/handler/CreateClassInstanceHandler.js +10 -4
- package/lib/core/handler/DestructReferenceHandler.js +8 -0
- package/lib/core/handler/EnableNamespaceHandler.js +8 -0
- package/lib/core/handler/EnableTypeHandler.js +8 -0
- package/lib/core/handler/GetGlobalStaticFieldHandler.js +9 -0
- package/lib/core/handler/GetInstanceFieldHandler.js +8 -0
- package/lib/core/handler/GetInstanceMethodAsDelegateHandler.js +9 -4
- package/lib/core/handler/GetStaticFieldHandler.js +9 -0
- package/lib/core/handler/GetStaticMethodAsDelegateHandler.js +8 -7
- package/lib/core/handler/GetTypeHandler.js +15 -5
- package/lib/core/handler/Handler.js +13 -18
- package/lib/core/handler/InvokeDelegateHandler.js +5 -0
- package/lib/core/handler/InvokeGlobalFunctionHandler.js +11 -1
- package/lib/core/handler/InvokeInstanceMethodHandler.js +8 -0
- package/lib/core/handler/InvokeStaticMethodHandler.js +8 -0
- package/lib/core/handler/LoadLibraryHandler.js +11 -0
- package/lib/core/handler/SetGlobalStaticFieldHandler.js +10 -0
- package/lib/core/handler/SetInstanceFieldHandler.js +7 -0
- package/lib/core/handler/SetStaticFieldHandler.js +8 -0
- package/lib/core/handler/ValueHandler.js +9 -0
- package/lib/core/interpreter/Interpreter.js +42 -24
- package/lib/core/namespaceCache/NamespaceCache.js +14 -0
- package/lib/core/protocol/CommandDeserializer.js +11 -2
- package/lib/core/protocol/CommandSerializer.js +40 -9
- package/lib/core/protocol/TypeDeserializer.js +36 -0
- package/lib/core/protocol/TypeSerializer.js +62 -7
- package/lib/core/receiver/Receiver.js +3 -2
- package/lib/core/receiver/ReceiverNative.js +8 -0
- package/lib/core/transmitter/Transmitter.js +18 -1
- package/lib/core/transmitter/TransmitterWebsocket.js +12 -5
- package/lib/core/transmitter/TransmitterWebsocketBrowser.js +2 -4
- package/lib/core/transmitter/TransmitterWrapper.js +27 -6
- package/lib/core/typeCache/TypeCache.js +9 -0
- package/lib/core/webSocketClient/WebSocketClient.js +33 -30
- package/lib/core/webSocketClient/WebSocketClientBrowser.js +5 -6
- package/lib/sdk/ConfigRuntimeFactory.js +70 -68
- package/lib/sdk/InvocationContext.js +94 -26
- package/lib/sdk/Javonet.js +18 -36
- package/lib/sdk/RuntimeContext.js +109 -29
- package/lib/sdk/RuntimeFactory.js +7 -0
- package/lib/sdk/tools/ActivationHelper.js +51 -0
- package/lib/sdk/tools/JsonResolver.js +226 -0
- package/lib/types.d.ts +57 -0
- package/lib/utils/Command.js +14 -9
- package/lib/utils/CustomError.js +5 -0
- package/lib/utils/Runtime.js +1 -1
- package/lib/utils/RuntimeLogger.js +3 -0
- package/lib/utils/RuntimeNameHandler.js +6 -1
- package/lib/utils/Type.js +2 -1
- package/lib/utils/TypesHandler.js +35 -0
- package/lib/utils/UtilsConst.js +88 -0
- package/lib/utils/connectionData/IConnectionData.js +14 -0
- package/lib/utils/connectionData/InMemoryConnectionData.js +15 -0
- package/lib/utils/connectionData/WsConnectionData.js +9 -0
- package/lib/utils/nodejs/connectionData/TcpConnectionData.js +35 -5
- package/package.json +4 -3
- package/dist/sdk/tools/browser/ConfigSourceResolver.cjs +0 -153
- package/dist/sdk/tools/nodejs/JsonFileResolver.cjs +0 -120
- package/dist/types/sdk/tools/browser/ConfigSourceResolver.d.ts +0 -46
- package/dist/types/sdk/tools/nodejs/JsonFileResolver.d.ts +0 -13
- package/dist/types/utils/nodejs/TypesConverter.d.ts +0 -48
- package/dist/utils/nodejs/TypesConverter.cjs +0 -102
- package/lib/declarations.d.ts +0 -35
- package/lib/sdk/tools/browser/ConfigSourceResolver.js +0 -146
- package/lib/sdk/tools/nodejs/JsonFileResolver.js +0 -106
- package/lib/utils/nodejs/TypesConverter.js +0 -91
|
@@ -1,42 +1,73 @@
|
|
|
1
|
-
import { TypeSerializer } from './TypeSerializer.js'
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { TypeSerializer } from './TypeSerializer.js'
|
|
2
|
+
import { ReferencesCache } from '../referenceCache/ReferencesCache.js'
|
|
3
|
+
import { Command } from '../../utils/Command.js'
|
|
4
|
+
import { CommandType } from '../../utils/CommandType.js'
|
|
5
|
+
import { RuntimeName } from '../../utils/RuntimeName.js'
|
|
6
|
+
import { TypesHandler } from '../../utils/TypesHandler.js'
|
|
4
7
|
|
|
8
|
+
/**
|
|
9
|
+
* @typedef {import('../../utils/connectionData/IConnectionData.js').IConnectionData} IConnectionData
|
|
10
|
+
*/
|
|
5
11
|
class CommandSerializer {
|
|
6
|
-
|
|
12
|
+
/**
|
|
13
|
+
* Serializes the root command with connection data and optional runtime version.
|
|
14
|
+
* @param {Command} rootCommand
|
|
15
|
+
* @param {IConnectionData} connectionData
|
|
16
|
+
* @param {number} runtimeVersion
|
|
17
|
+
* @returns {Int8Array}
|
|
18
|
+
*/
|
|
19
|
+
serialize(rootCommand, connectionData, runtimeVersion = 0) {
|
|
7
20
|
const buffers = []
|
|
8
|
-
// Write runtime name and a zero byte for runtime version.
|
|
9
|
-
buffers.push(Uint8Array.of(rootCommand.runtimeName, 0))
|
|
10
21
|
|
|
22
|
+
// Write runtime name and version
|
|
23
|
+
buffers.push(Uint8Array.of(rootCommand.runtimeName, runtimeVersion))
|
|
24
|
+
|
|
25
|
+
// Write connection data or default zeros
|
|
11
26
|
if (connectionData) {
|
|
12
27
|
buffers.push(connectionData.serializeConnectionData())
|
|
13
28
|
} else {
|
|
14
29
|
buffers.push(Uint8Array.of(0, 0, 0, 0, 0, 0, 0))
|
|
15
30
|
}
|
|
16
31
|
|
|
17
|
-
|
|
32
|
+
// Write target runtime and command type
|
|
33
|
+
buffers.push(Uint8Array.of(RuntimeName.Python, rootCommand.commandType))
|
|
18
34
|
|
|
35
|
+
// Recursively serialize command and its payload
|
|
19
36
|
this.serializeRecursively(rootCommand, buffers)
|
|
20
37
|
|
|
21
38
|
return concatenateUint8Arrays(buffers)
|
|
22
39
|
}
|
|
23
40
|
|
|
41
|
+
/**
|
|
42
|
+
* Recursively serializes command payload.
|
|
43
|
+
* @param {Command} command
|
|
44
|
+
* @param {Array<Uint8Array>} buffers
|
|
45
|
+
*/
|
|
24
46
|
serializeRecursively(command, buffers) {
|
|
25
47
|
for (const item of command.payload) {
|
|
26
48
|
if (item instanceof Command) {
|
|
27
49
|
buffers.push(TypeSerializer.serializeCommand(item))
|
|
28
50
|
this.serializeRecursively(item, buffers)
|
|
29
|
-
} else {
|
|
51
|
+
} else if (TypesHandler.isPrimitiveOrNullOrUndefined(item)) {
|
|
30
52
|
buffers.push(TypeSerializer.serializePrimitive(item))
|
|
53
|
+
} else {
|
|
54
|
+
const cachedReference = ReferencesCache.getInstance().cacheReference(item)
|
|
55
|
+
const refCommand = new Command(RuntimeName.Nodejs, CommandType.Reference, cachedReference)
|
|
56
|
+
buffers.push(TypeSerializer.serializeCommand(refCommand))
|
|
57
|
+
this.serializeRecursively(refCommand, buffers)
|
|
31
58
|
}
|
|
32
59
|
}
|
|
33
60
|
}
|
|
34
61
|
}
|
|
35
62
|
|
|
63
|
+
/**
|
|
64
|
+
* Concatenates multiple Uint8Array buffers into one.
|
|
65
|
+
* @param {Array<Uint8Array>} arrays
|
|
66
|
+
* @returns {Uint8Array}
|
|
67
|
+
*/
|
|
36
68
|
function concatenateUint8Arrays(arrays) {
|
|
37
69
|
let totalLength = arrays.reduce((sum, arr) => sum + arr.length, 0)
|
|
38
70
|
const result = new Uint8Array(totalLength)
|
|
39
|
-
|
|
40
71
|
let offset = 0
|
|
41
72
|
for (const arr of arrays) {
|
|
42
73
|
result.set(arr, offset)
|
|
@@ -1,12 +1,21 @@
|
|
|
1
|
+
// @ts-check
|
|
1
2
|
import { Command } from '../../utils/Command.js'
|
|
2
3
|
import { Buffer } from 'buffer'
|
|
3
4
|
import { StringEncodingMode } from '../../utils/StringEncodingMode.js'
|
|
4
5
|
|
|
5
6
|
export class TypeDeserializer {
|
|
7
|
+
/**
|
|
8
|
+
* @param {Int8Array} encodedCommand
|
|
9
|
+
* @returns {Command}
|
|
10
|
+
*/
|
|
6
11
|
static deserializeCommand(encodedCommand) {
|
|
7
12
|
return new Command(encodedCommand[0], encodedCommand[1], [])
|
|
8
13
|
}
|
|
9
14
|
|
|
15
|
+
/**
|
|
16
|
+
* @param {number} stringEncodingMode
|
|
17
|
+
* @param {Int8Array} encodedString
|
|
18
|
+
*/
|
|
10
19
|
static deserializeString(stringEncodingMode, encodedString) {
|
|
11
20
|
switch (stringEncodingMode) {
|
|
12
21
|
case StringEncodingMode.ASCII:
|
|
@@ -33,6 +42,9 @@ export class TypeDeserializer {
|
|
|
33
42
|
}
|
|
34
43
|
}
|
|
35
44
|
|
|
45
|
+
/**
|
|
46
|
+
* @param {Int8Array} encodedInt
|
|
47
|
+
*/
|
|
36
48
|
static deserializeInt(encodedInt) {
|
|
37
49
|
return (
|
|
38
50
|
(encodedInt[0] & 0xff) |
|
|
@@ -42,34 +54,58 @@ export class TypeDeserializer {
|
|
|
42
54
|
)
|
|
43
55
|
}
|
|
44
56
|
|
|
57
|
+
/**
|
|
58
|
+
* @param {Int8Array} encodedBool
|
|
59
|
+
*/
|
|
45
60
|
static deserializeBool(encodedBool) {
|
|
46
61
|
return encodedBool[0] === 1
|
|
47
62
|
}
|
|
48
63
|
|
|
64
|
+
/**
|
|
65
|
+
* @param {Int8Array} encodedFloat
|
|
66
|
+
*/
|
|
49
67
|
static deserializeFloat(encodedFloat) {
|
|
50
68
|
return Buffer.from(encodedFloat).readFloatLE()
|
|
51
69
|
}
|
|
52
70
|
|
|
71
|
+
/**
|
|
72
|
+
* @param {Int8Array} encodedByte
|
|
73
|
+
*/
|
|
53
74
|
static deserializeByte(encodedByte) {
|
|
54
75
|
return Buffer.from(encodedByte).readUint8()
|
|
55
76
|
}
|
|
56
77
|
|
|
78
|
+
/**
|
|
79
|
+
* @param {Int8Array} encodedChar
|
|
80
|
+
*/
|
|
57
81
|
static deserializeChar(encodedChar) {
|
|
58
82
|
return Buffer.from(encodedChar).readUint8()
|
|
59
83
|
}
|
|
60
84
|
|
|
85
|
+
/**
|
|
86
|
+
* @param {Int8Array} encodedLongLong
|
|
87
|
+
*/
|
|
61
88
|
static deserializeLongLong(encodedLongLong) {
|
|
62
89
|
return Buffer.from(encodedLongLong).readBigInt64LE()
|
|
63
90
|
}
|
|
64
91
|
|
|
92
|
+
/**
|
|
93
|
+
* @param {Int8Array} encodedDouble
|
|
94
|
+
*/
|
|
65
95
|
static deserializeDouble(encodedDouble) {
|
|
66
96
|
return Buffer.from(encodedDouble).readDoubleLE()
|
|
67
97
|
}
|
|
68
98
|
|
|
99
|
+
/**
|
|
100
|
+
* @param {Int8Array} encodedULLong
|
|
101
|
+
*/
|
|
69
102
|
static deserializeULLong(encodedULLong) {
|
|
70
103
|
return Buffer.from(encodedULLong).readBigUInt64LE()
|
|
71
104
|
}
|
|
72
105
|
|
|
106
|
+
/**
|
|
107
|
+
* @param {Int8Array} encodedUInt
|
|
108
|
+
*/
|
|
73
109
|
static deserializeUInt(encodedUInt) {
|
|
74
110
|
return Buffer.from(encodedUInt).readUIntLE(0, 4)
|
|
75
111
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
// @ts-check
|
|
1
2
|
import { Command } from '../../utils/Command.js'
|
|
2
3
|
import { Type } from '../../utils/Type.js'
|
|
3
4
|
import { StringEncodingMode } from '../../utils/StringEncodingMode.js'
|
|
@@ -7,42 +8,66 @@ import { CustomError } from '../../utils/CustomError.js'
|
|
|
7
8
|
const encoder = new TextEncoder()
|
|
8
9
|
|
|
9
10
|
class TypeSerializer {
|
|
11
|
+
/**
|
|
12
|
+
* @param {unknown} payload_item
|
|
13
|
+
*/
|
|
10
14
|
static serializePrimitive(payload_item) {
|
|
11
15
|
if (payload_item === null) {
|
|
12
16
|
return TypeSerializer.serializeNull()
|
|
13
17
|
}
|
|
14
18
|
if (payload_item instanceof Command) {
|
|
15
19
|
return TypeSerializer.serializeCommand(payload_item)
|
|
16
|
-
} else if (typeof payload_item === 'number'
|
|
20
|
+
} else if (typeof payload_item === 'number') {
|
|
17
21
|
if (Number.isInteger(payload_item)) {
|
|
18
22
|
return TypeSerializer.serializeInt(payload_item)
|
|
19
23
|
} else {
|
|
20
24
|
return TypeSerializer.serializeDouble(payload_item)
|
|
21
25
|
}
|
|
22
|
-
} else if (typeof payload_item === 'string'
|
|
26
|
+
} else if (typeof payload_item === 'string') {
|
|
23
27
|
return TypeSerializer.serializeString(payload_item)
|
|
24
|
-
} else if (typeof payload_item === 'boolean'
|
|
28
|
+
} else if (typeof payload_item === 'boolean') {
|
|
25
29
|
return TypeSerializer.serializeBool(payload_item)
|
|
26
30
|
} else {
|
|
27
31
|
if (payload_item instanceof Promise) {
|
|
28
|
-
|
|
32
|
+
const message =
|
|
33
|
+
'Unsupported payload item type: ' +
|
|
34
|
+
(payload_item?.constructor?.name || typeof payload_item) +
|
|
35
|
+
' for payload item: ' +
|
|
36
|
+
payload_item
|
|
37
|
+
throw new CustomError(message, 'JAVONET_PROMISE')
|
|
29
38
|
}
|
|
30
39
|
if (payload_item === undefined) {
|
|
31
|
-
throw
|
|
40
|
+
throw Error(
|
|
41
|
+
'Unsupported payload item type: ' +
|
|
42
|
+
typeof payload_item +
|
|
43
|
+
' for payload item: ' +
|
|
44
|
+
payload_item
|
|
45
|
+
)
|
|
32
46
|
}
|
|
33
|
-
throw
|
|
47
|
+
throw Error(
|
|
48
|
+
'Unsupported payload item type: ' +
|
|
49
|
+
(payload_item?.constructor?.name || typeof payload_item) +
|
|
50
|
+
' for payload item: ' +
|
|
51
|
+
payload_item
|
|
52
|
+
)
|
|
34
53
|
}
|
|
35
54
|
}
|
|
36
55
|
|
|
56
|
+
/**
|
|
57
|
+
* @param {Command} command
|
|
58
|
+
*/
|
|
37
59
|
static serializeCommand(command) {
|
|
38
60
|
const buffer = Buffer.alloc(7)
|
|
39
61
|
buffer.writeUInt8(Type.JAVONET_COMMAND, 0)
|
|
40
62
|
buffer.fill(Buffer.from(this.serializeIntValue(command.payload.length)), 1, 5)
|
|
41
|
-
buffer.writeUInt8(command.
|
|
63
|
+
buffer.writeUInt8(command.runtimeName, 5)
|
|
42
64
|
buffer.writeUInt8(command.commandType, 6)
|
|
43
65
|
return buffer
|
|
44
66
|
}
|
|
45
67
|
|
|
68
|
+
/**
|
|
69
|
+
* @param {string} string_value
|
|
70
|
+
*/
|
|
46
71
|
static serializeString(string_value) {
|
|
47
72
|
let bytes = encoder.encode(string_value)
|
|
48
73
|
const buffer = Buffer.alloc(6 + bytes.length)
|
|
@@ -53,6 +78,9 @@ class TypeSerializer {
|
|
|
53
78
|
return buffer
|
|
54
79
|
}
|
|
55
80
|
|
|
81
|
+
/**
|
|
82
|
+
* @param {number} int_value
|
|
83
|
+
*/
|
|
56
84
|
static serializeInt(int_value) {
|
|
57
85
|
const buffer = Buffer.alloc(6)
|
|
58
86
|
buffer.writeUInt8(Type.JAVONET_INTEGER, 0)
|
|
@@ -61,6 +89,9 @@ class TypeSerializer {
|
|
|
61
89
|
return buffer
|
|
62
90
|
}
|
|
63
91
|
|
|
92
|
+
/**
|
|
93
|
+
* @param {boolean} bool_value
|
|
94
|
+
*/
|
|
64
95
|
static serializeBool(bool_value) {
|
|
65
96
|
const buffer = Buffer.alloc(3)
|
|
66
97
|
buffer.writeUInt8(Type.JAVONET_BOOLEAN, 0)
|
|
@@ -69,6 +100,9 @@ class TypeSerializer {
|
|
|
69
100
|
return buffer
|
|
70
101
|
}
|
|
71
102
|
|
|
103
|
+
/**
|
|
104
|
+
* @param {number} float_value
|
|
105
|
+
*/
|
|
72
106
|
static serializeFloat(float_value) {
|
|
73
107
|
const buffer = Buffer.alloc(6)
|
|
74
108
|
buffer.writeUInt8(Type.JAVONET_FLOAT, 0)
|
|
@@ -77,6 +111,9 @@ class TypeSerializer {
|
|
|
77
111
|
return buffer
|
|
78
112
|
}
|
|
79
113
|
|
|
114
|
+
/**
|
|
115
|
+
* @param {number} byte_value
|
|
116
|
+
*/
|
|
80
117
|
static serializeByte(byte_value) {
|
|
81
118
|
const buffer = Buffer.alloc(3)
|
|
82
119
|
buffer.writeUInt8(Type.JAVONET_BYTE, 0)
|
|
@@ -85,6 +122,9 @@ class TypeSerializer {
|
|
|
85
122
|
return buffer
|
|
86
123
|
}
|
|
87
124
|
|
|
125
|
+
/**
|
|
126
|
+
* @param {number} char_value
|
|
127
|
+
*/
|
|
88
128
|
static serializeChar(char_value) {
|
|
89
129
|
const buffer = Buffer.alloc(3)
|
|
90
130
|
buffer.writeUInt8(Type.JAVONET_CHAR, 0)
|
|
@@ -93,6 +133,9 @@ class TypeSerializer {
|
|
|
93
133
|
return buffer
|
|
94
134
|
}
|
|
95
135
|
|
|
136
|
+
/**
|
|
137
|
+
* @param {number} longlong_value
|
|
138
|
+
*/
|
|
96
139
|
static serializeLongLong(longlong_value) {
|
|
97
140
|
const buffer = Buffer.alloc(10)
|
|
98
141
|
buffer.writeUInt8(Type.JAVONET_LONG_LONG, 0)
|
|
@@ -101,6 +144,9 @@ class TypeSerializer {
|
|
|
101
144
|
return buffer
|
|
102
145
|
}
|
|
103
146
|
|
|
147
|
+
/**
|
|
148
|
+
* @param {number} double_value
|
|
149
|
+
*/
|
|
104
150
|
static serializeDouble(double_value) {
|
|
105
151
|
const buffer = Buffer.alloc(10)
|
|
106
152
|
buffer.writeUInt8(Type.JAVONET_DOUBLE, 0)
|
|
@@ -109,6 +155,9 @@ class TypeSerializer {
|
|
|
109
155
|
return buffer
|
|
110
156
|
}
|
|
111
157
|
|
|
158
|
+
/**
|
|
159
|
+
* @param {bigint} ullong_value
|
|
160
|
+
*/
|
|
112
161
|
static serializeULLong(ullong_value) {
|
|
113
162
|
const buffer = Buffer.alloc(10)
|
|
114
163
|
buffer.writeUInt8(Type.JAVONET_UNSIGNED_LONG_LONG, 0)
|
|
@@ -117,6 +166,9 @@ class TypeSerializer {
|
|
|
117
166
|
return buffer
|
|
118
167
|
}
|
|
119
168
|
|
|
169
|
+
/**
|
|
170
|
+
* @param {number} uint_value
|
|
171
|
+
*/
|
|
120
172
|
static serializeUInt(uint_value) {
|
|
121
173
|
const buffer = Buffer.alloc(6)
|
|
122
174
|
buffer.writeUInt8(Type.JAVONET_UNSIGNED_INTEGER, 0)
|
|
@@ -133,6 +185,9 @@ class TypeSerializer {
|
|
|
133
185
|
return buffer
|
|
134
186
|
}
|
|
135
187
|
|
|
188
|
+
/**
|
|
189
|
+
* @param {number} int_value
|
|
190
|
+
*/
|
|
136
191
|
static serializeIntValue(int_value) {
|
|
137
192
|
const buffer = Buffer.alloc(4)
|
|
138
193
|
buffer.writeInt32LE(int_value, 0)
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
// @ts-check
|
|
1
2
|
import { Interpreter } from '../interpreter/Interpreter.js'
|
|
2
3
|
import { CommandSerializer } from '../protocol/CommandSerializer.js'
|
|
3
4
|
import { getRequire } from '../../utils/Runtime.js'
|
|
4
5
|
import { InMemoryConnectionData } from '../../utils/connectionData/InMemoryConnectionData.js'
|
|
5
6
|
|
|
6
|
-
/** @type {import('../../utils/RuntimeLogger.js').RuntimeLogger | null} */
|
|
7
|
+
/** @type {typeof import('../../utils/RuntimeLogger.js').RuntimeLogger | null} */
|
|
7
8
|
let _RuntimeLogger = null
|
|
8
9
|
|
|
9
10
|
const requireDynamic = getRequire(import.meta.url)
|
|
@@ -19,7 +20,7 @@ export class Receiver {
|
|
|
19
20
|
}
|
|
20
21
|
|
|
21
22
|
/**
|
|
22
|
-
* @param {
|
|
23
|
+
* @param {Int8Array} messageByteArray
|
|
23
24
|
*/
|
|
24
25
|
static sendCommand(messageByteArray) {
|
|
25
26
|
return new CommandSerializer().serialize(
|
|
@@ -1,13 +1,21 @@
|
|
|
1
|
+
// @ts-check
|
|
1
2
|
import { Receiver } from './Receiver.js'
|
|
2
3
|
|
|
3
4
|
export class ReceiverNative {
|
|
5
|
+
/**
|
|
6
|
+
* @param {Int8Array} messageByteArray
|
|
7
|
+
*/
|
|
4
8
|
static sendCommand(messageByteArray) {
|
|
5
9
|
return Receiver.sendCommand(messageByteArray)
|
|
6
10
|
}
|
|
7
11
|
|
|
12
|
+
/**
|
|
13
|
+
* @param {Int8Array} messageByteArray
|
|
14
|
+
*/
|
|
8
15
|
static heartBeat(messageByteArray) {
|
|
9
16
|
return Receiver.heartBeat(messageByteArray)
|
|
10
17
|
}
|
|
11
18
|
}
|
|
12
19
|
|
|
20
|
+
// @ts-expect-error
|
|
13
21
|
global.ReceiverNative = ReceiverNative
|
|
@@ -1,18 +1,35 @@
|
|
|
1
|
+
// @ts-check
|
|
1
2
|
import { TransmitterWrapper } from './TransmitterWrapper.js'
|
|
2
3
|
|
|
3
4
|
export class Transmitter {
|
|
5
|
+
/**
|
|
6
|
+
* @param {Int8Array} messageArray
|
|
7
|
+
* @returns {Int8Array}
|
|
8
|
+
*/
|
|
4
9
|
static sendCommand(messageArray) {
|
|
5
10
|
return TransmitterWrapper.sendCommand(messageArray)
|
|
6
11
|
}
|
|
7
12
|
|
|
8
|
-
|
|
13
|
+
/**
|
|
14
|
+
* @param {string} licenseKey
|
|
15
|
+
* @returns {void}
|
|
16
|
+
*/
|
|
17
|
+
static activate (licenseKey) {
|
|
9
18
|
return TransmitterWrapper.activate(licenseKey)
|
|
10
19
|
}
|
|
11
20
|
|
|
21
|
+
/**
|
|
22
|
+
* @param {string} configSource
|
|
23
|
+
* @returns {void}
|
|
24
|
+
*/
|
|
12
25
|
static setConfigSource(configSource) {
|
|
13
26
|
return TransmitterWrapper.setConfigSource(configSource)
|
|
14
27
|
}
|
|
15
28
|
|
|
29
|
+
/**
|
|
30
|
+
* @param {string} workingDirectory
|
|
31
|
+
* @returns
|
|
32
|
+
*/
|
|
16
33
|
static setJavonetWorkingDirectory(workingDirectory) {
|
|
17
34
|
return TransmitterWrapper.setJavonetWorkingDirectory(workingDirectory)
|
|
18
35
|
}
|
|
@@ -1,5 +1,9 @@
|
|
|
1
|
+
// @ts-check
|
|
1
2
|
import { WebSocketClient } from '../webSocketClient/WebSocketClient.js'
|
|
2
3
|
|
|
4
|
+
/**
|
|
5
|
+
* @typedef {import('../../utils/connectionData/IConnectionData.js').IConnectionData} IConnectionData
|
|
6
|
+
*/
|
|
3
7
|
export class TransmitterWebsocket {
|
|
4
8
|
/**
|
|
5
9
|
* @returns {void}
|
|
@@ -18,12 +22,15 @@ export class TransmitterWebsocket {
|
|
|
18
22
|
|
|
19
23
|
/**
|
|
20
24
|
* @async
|
|
21
|
-
* @param {
|
|
22
|
-
* @param {
|
|
23
|
-
* @returns {Promise<
|
|
25
|
+
* @param {Int8Array} messageByteArray
|
|
26
|
+
* @param {IConnectionData} connectionData
|
|
27
|
+
* @returns {Promise<Int8Array>} responseByteArray
|
|
24
28
|
*/
|
|
25
|
-
static
|
|
29
|
+
static sendCommand(messageByteArray, connectionData) {
|
|
26
30
|
const { hostname } = connectionData
|
|
27
|
-
|
|
31
|
+
const options = {
|
|
32
|
+
isDisconnectedAfterMessage: true,
|
|
33
|
+
}
|
|
34
|
+
return new WebSocketClient(hostname, options).send(messageByteArray)
|
|
28
35
|
}
|
|
29
36
|
}
|
|
@@ -2,10 +2,8 @@
|
|
|
2
2
|
import { WebSocketClientBrowser } from '../webSocketClient/WebSocketClientBrowser.js'
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
* @typedef {
|
|
6
|
-
* @property {string} hostname
|
|
5
|
+
* @typedef {import('../../utils/connectionData/IConnectionData.js').IConnectionData} IConnectionData
|
|
7
6
|
*/
|
|
8
|
-
|
|
9
7
|
export class TransmitterWebsocketBrowser {
|
|
10
8
|
/**
|
|
11
9
|
* @returns {void}
|
|
@@ -20,7 +18,7 @@ export class TransmitterWebsocketBrowser {
|
|
|
20
18
|
/**
|
|
21
19
|
* @async
|
|
22
20
|
* @param {Int8Array} messageByteArray
|
|
23
|
-
* @param {
|
|
21
|
+
* @param {IConnectionData} connectionData
|
|
24
22
|
* @returns {Promise<Int8Array>} responseByteArray
|
|
25
23
|
*/
|
|
26
24
|
static async sendCommand(messageByteArray, connectionData) {
|
|
@@ -1,14 +1,18 @@
|
|
|
1
|
+
// @ts-check
|
|
1
2
|
import { getDependency, getRequire, isNodejsRuntime } from '../../utils/Runtime.js'
|
|
2
3
|
import { ReceiverNative } from '../receiver/ReceiverNative.js'
|
|
3
4
|
|
|
4
|
-
|
|
5
|
+
/** @type {any | null} */
|
|
6
|
+
let library = null
|
|
7
|
+
/** @type {any | null} */
|
|
8
|
+
let path = null
|
|
5
9
|
|
|
6
10
|
/** @type {import('module').createRequire} */
|
|
7
11
|
const requireDynamic = getRequire(import.meta.url)
|
|
8
12
|
|
|
9
13
|
class TransmitterWrapper {
|
|
10
14
|
static isNativeLibraryLoaded() {
|
|
11
|
-
return library
|
|
15
|
+
return Boolean(library)
|
|
12
16
|
}
|
|
13
17
|
|
|
14
18
|
static loadNativeLibrary() {
|
|
@@ -19,38 +23,55 @@ class TransmitterWrapper {
|
|
|
19
23
|
return
|
|
20
24
|
}
|
|
21
25
|
try {
|
|
22
|
-
|
|
26
|
+
if (!path) {
|
|
27
|
+
path = requireDynamic('path')
|
|
28
|
+
}
|
|
23
29
|
const packagePath = getDependency('javonet-binaries', import.meta.url)
|
|
24
30
|
|
|
25
31
|
const binariesRootPath = path.dirname(packagePath)
|
|
26
|
-
const nativeAddonPath = path.join(
|
|
32
|
+
const nativeAddonPath = path.join(
|
|
33
|
+
binariesRootPath,
|
|
34
|
+
'build',
|
|
35
|
+
'Release',
|
|
36
|
+
'JavonetNodejsRuntimeAddon.node'
|
|
37
|
+
)
|
|
27
38
|
|
|
28
39
|
library = requireDynamic(nativeAddonPath)
|
|
29
40
|
library.initializeTransmitter(binariesRootPath)
|
|
30
|
-
|
|
41
|
+
// @ts-expect-error
|
|
42
|
+
library.setReceiverNative(global?.ReceiverNative)
|
|
31
43
|
} catch (error) {
|
|
32
44
|
throw error
|
|
33
45
|
}
|
|
34
46
|
}
|
|
35
47
|
|
|
36
48
|
/**
|
|
37
|
-
* @param {string} licenseKey
|
|
49
|
+
* @param {string} licenseKey
|
|
38
50
|
*/
|
|
39
51
|
static activate(licenseKey) {
|
|
40
52
|
this.loadNativeLibrary()
|
|
41
53
|
return library.activate(licenseKey)
|
|
42
54
|
}
|
|
43
55
|
|
|
56
|
+
/**
|
|
57
|
+
* @param {Int8Array} messageArray
|
|
58
|
+
*/
|
|
44
59
|
static sendCommand(messageArray) {
|
|
45
60
|
this.loadNativeLibrary()
|
|
46
61
|
return library.sendCommand(messageArray)
|
|
47
62
|
}
|
|
48
63
|
|
|
64
|
+
/**
|
|
65
|
+
* @param {string} configSource
|
|
66
|
+
*/
|
|
49
67
|
static setConfigSource(configSource) {
|
|
50
68
|
this.loadNativeLibrary()
|
|
51
69
|
return library.setConfigSource(configSource)
|
|
52
70
|
}
|
|
53
71
|
|
|
72
|
+
/**
|
|
73
|
+
* @param {string} path
|
|
74
|
+
*/
|
|
54
75
|
static setJavonetWorkingDirectory(path) {
|
|
55
76
|
this.loadNativeLibrary()
|
|
56
77
|
library.setJavonetWorkingDirectory(path)
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
// @ts-check
|
|
1
2
|
class TypeCache {
|
|
3
|
+
/** @type {TypeCache | null} */
|
|
2
4
|
static _instance = null
|
|
5
|
+
/** @type {string[]} */
|
|
3
6
|
typeCache = []
|
|
4
7
|
|
|
5
8
|
constructor() {
|
|
@@ -9,6 +12,9 @@ class TypeCache {
|
|
|
9
12
|
return TypeCache._instance
|
|
10
13
|
}
|
|
11
14
|
|
|
15
|
+
/**
|
|
16
|
+
* @param {string} typRegex
|
|
17
|
+
*/
|
|
12
18
|
cacheType(typRegex) {
|
|
13
19
|
this.typeCache.push(typRegex)
|
|
14
20
|
}
|
|
@@ -17,6 +23,9 @@ class TypeCache {
|
|
|
17
23
|
return this.typeCache.length === 0
|
|
18
24
|
}
|
|
19
25
|
|
|
26
|
+
/**
|
|
27
|
+
* @param {{ name: string }} typeToCheck
|
|
28
|
+
*/
|
|
20
29
|
isTypeAllowed(typeToCheck) {
|
|
21
30
|
for (let pattern of this.typeCache) {
|
|
22
31
|
if (new RegExp(pattern).test(typeToCheck.name)) {
|