javonet-nodejs-sdk 2.5.17 → 2.5.19
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 +89 -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 +113 -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
|
@@ -23,26 +23,43 @@ __export(AbstractHandler_exports, {
|
|
|
23
23
|
module.exports = __toCommonJS(AbstractHandler_exports);
|
|
24
24
|
var import_Command = require("../../utils/Command.cjs");
|
|
25
25
|
class AbstractHandler {
|
|
26
|
+
/**
|
|
27
|
+
* @type {Record<number, AbstractHandler>}
|
|
28
|
+
*/
|
|
26
29
|
handlers = [];
|
|
27
30
|
constructor() {
|
|
28
31
|
if (new.target === AbstractHandler) throw new TypeError("You cannot instantiate abstract class");
|
|
29
32
|
}
|
|
30
|
-
|
|
33
|
+
/**
|
|
34
|
+
* @param {Command} command
|
|
35
|
+
*/
|
|
31
36
|
process(command) {
|
|
32
37
|
throw new Error("process must be implemented");
|
|
33
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* @param {Command} command
|
|
41
|
+
*/
|
|
34
42
|
handleCommand(command) {
|
|
35
43
|
this.iterate(command);
|
|
36
44
|
return this.process(command);
|
|
37
45
|
}
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
46
|
+
/**
|
|
47
|
+
* @param {Command} command
|
|
48
|
+
*/
|
|
49
|
+
iterate(command) {
|
|
50
|
+
for (let i = 0; i < command.payload.length; i++) {
|
|
51
|
+
if (command.payload[i] instanceof import_Command.Command) {
|
|
52
|
+
let inner = command.payload[i];
|
|
53
|
+
command.payload[i] = this.handlers[inner.commandType].handleCommand(inner);
|
|
43
54
|
}
|
|
44
55
|
}
|
|
45
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
*
|
|
59
|
+
* @param {*} error
|
|
60
|
+
* @param {*} class_name
|
|
61
|
+
* @returns
|
|
62
|
+
*/
|
|
46
63
|
process_stack_trace(error, class_name) {
|
|
47
64
|
let stackTraceArray = error.stack.split("\n").map((frame) => frame.trim());
|
|
48
65
|
stackTraceArray.forEach((str, index) => {
|
|
@@ -27,6 +27,9 @@ class ArrayGetItemHandler extends import_AbstractHandler.AbstractHandler {
|
|
|
27
27
|
constructor() {
|
|
28
28
|
super();
|
|
29
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* @param {Command} command
|
|
32
|
+
*/
|
|
30
33
|
process(command) {
|
|
31
34
|
try {
|
|
32
35
|
if (command.payload.length < this.requiredParametersCount) {
|
|
@@ -40,7 +43,7 @@ class ArrayGetItemHandler extends import_AbstractHandler.AbstractHandler {
|
|
|
40
43
|
indexes = command.payload.slice(1);
|
|
41
44
|
}
|
|
42
45
|
if (indexes.length === 1) {
|
|
43
|
-
return array[indexes];
|
|
46
|
+
return array[indexes[0]];
|
|
44
47
|
} else {
|
|
45
48
|
let array_copy = [...array];
|
|
46
49
|
for (let i = 0; i < indexes.length; i++) {
|
|
@@ -27,6 +27,9 @@ class ArraySetItemHandler extends import_AbstractHandler.AbstractHandler {
|
|
|
27
27
|
constructor() {
|
|
28
28
|
super();
|
|
29
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* @param {Command} command
|
|
32
|
+
*/
|
|
30
33
|
process(command) {
|
|
31
34
|
try {
|
|
32
35
|
if (command.payload.length < this.requiredParametersCount) {
|
|
@@ -41,7 +44,7 @@ class ArraySetItemHandler extends import_AbstractHandler.AbstractHandler {
|
|
|
41
44
|
indexes = [command.payload[1]];
|
|
42
45
|
}
|
|
43
46
|
if (indexes.length === 1) {
|
|
44
|
-
array[indexes] = value;
|
|
47
|
+
array[indexes[0]] = value;
|
|
45
48
|
} else {
|
|
46
49
|
for (let i = 0; i < indexes.length - 1; i++) {
|
|
47
50
|
array = array[indexes[i]];
|
|
@@ -23,7 +23,9 @@ __export(CastingHandler_exports, {
|
|
|
23
23
|
module.exports = __toCommonJS(CastingHandler_exports);
|
|
24
24
|
var import_AbstractHandler = require("./AbstractHandler.cjs");
|
|
25
25
|
class CastingHandler extends import_AbstractHandler.AbstractHandler {
|
|
26
|
-
|
|
26
|
+
/**
|
|
27
|
+
* @param {Command} command
|
|
28
|
+
*/
|
|
27
29
|
process(command) {
|
|
28
30
|
throw new Error(`Dynamically typed languages are not supporting casting`);
|
|
29
31
|
}
|
|
@@ -21,7 +21,7 @@ __export(ConvertTypeHandler_exports, {
|
|
|
21
21
|
ConvertTypeHandler: () => ConvertTypeHandler
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(ConvertTypeHandler_exports);
|
|
24
|
-
var
|
|
24
|
+
var import_TypesHandler = require("../../utils/TypesHandler.cjs");
|
|
25
25
|
var import_AbstractHandler = require("./AbstractHandler.cjs");
|
|
26
26
|
class ConvertTypeHandler extends import_AbstractHandler.AbstractHandler {
|
|
27
27
|
constructor() {
|
|
@@ -30,16 +30,16 @@ class ConvertTypeHandler extends import_AbstractHandler.AbstractHandler {
|
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
32
32
|
* Processes the given command to convert JType to Type.
|
|
33
|
-
* @param {
|
|
33
|
+
* @param {Command} command - The command to process.
|
|
34
34
|
* @returns {any} The converted type.
|
|
35
35
|
*/
|
|
36
36
|
process(command) {
|
|
37
37
|
this.validateCommand(command);
|
|
38
|
-
return
|
|
38
|
+
return import_TypesHandler.TypesHandler.convertTypeToJType(command.payload[0]);
|
|
39
39
|
}
|
|
40
40
|
/**
|
|
41
41
|
* Validates the command to ensure it has enough parameters.
|
|
42
|
-
* @param {
|
|
42
|
+
* @param {Command} command - The command to validate.
|
|
43
43
|
*/
|
|
44
44
|
validateCommand(command) {
|
|
45
45
|
if (command.payload.length < this.requiredParametersCount) {
|
|
@@ -27,6 +27,9 @@ class CreateClassInstanceHandler extends import_AbstractHandler.AbstractHandler
|
|
|
27
27
|
constructor() {
|
|
28
28
|
super();
|
|
29
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* @param {Command} command
|
|
32
|
+
*/
|
|
30
33
|
process(command) {
|
|
31
34
|
try {
|
|
32
35
|
if (command.payload.length < this.requiredParametersCount) {
|
|
@@ -36,8 +39,8 @@ class CreateClassInstanceHandler extends import_AbstractHandler.AbstractHandler
|
|
|
36
39
|
let constructorArguments = command.payload.slice(1);
|
|
37
40
|
let instance = new clazz(...constructorArguments);
|
|
38
41
|
if (typeof instance === "undefined") {
|
|
39
|
-
let methods = Object.getOwnPropertyNames(
|
|
40
|
-
return typeof
|
|
42
|
+
let methods = Object.getOwnPropertyNames(clazz).filter(function(property) {
|
|
43
|
+
return typeof clazz[property] === "function";
|
|
41
44
|
});
|
|
42
45
|
let message = `Method 'constructor' not found in class. Available methods:
|
|
43
46
|
`;
|
|
@@ -27,6 +27,9 @@ class DestructReferenceHandler extends import_AbstractHandler.AbstractHandler {
|
|
|
27
27
|
constructor() {
|
|
28
28
|
super();
|
|
29
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* @param {Command} command
|
|
32
|
+
*/
|
|
30
33
|
process(command) {
|
|
31
34
|
try {
|
|
32
35
|
let cache = import_ReferencesCache.ReferencesCache.getInstance();
|
|
@@ -28,6 +28,9 @@ class EnableNamespaceHandler extends import_AbstractHandler.AbstractHandler {
|
|
|
28
28
|
super();
|
|
29
29
|
this.requiredParametersCount = 1;
|
|
30
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* @param {Command} command
|
|
33
|
+
*/
|
|
31
34
|
process(command) {
|
|
32
35
|
try {
|
|
33
36
|
if (command.payload.length < this.requiredParametersCount) {
|
|
@@ -44,6 +44,9 @@ class GetInstanceMethodAsDelegateHandler extends import_AbstractHandler.Abstract
|
|
|
44
44
|
this.instance = command.payload[0];
|
|
45
45
|
const methodName = command.payload[1];
|
|
46
46
|
this.args = command.payload.length > 2 ? command.payload.slice(2) : [];
|
|
47
|
+
if (!this.instance) {
|
|
48
|
+
throw new Error("Instance is null or undefined");
|
|
49
|
+
}
|
|
47
50
|
this.method = this.getMethod(this.instance, methodName);
|
|
48
51
|
if (!this.method) {
|
|
49
52
|
throw this.createMethodNotFoundError(this.instance, methodName);
|
|
@@ -58,7 +61,10 @@ class GetInstanceMethodAsDelegateHandler extends import_AbstractHandler.Abstract
|
|
|
58
61
|
* @returns {Function|null} The found method or null if not found.
|
|
59
62
|
*/
|
|
60
63
|
getMethod(type, methodName) {
|
|
61
|
-
const method =
|
|
64
|
+
const method = (
|
|
65
|
+
/** @type {any} */
|
|
66
|
+
type[methodName]
|
|
67
|
+
);
|
|
62
68
|
return typeof method === "function" ? method : null;
|
|
63
69
|
}
|
|
64
70
|
/**
|
|
@@ -68,11 +74,16 @@ class GetInstanceMethodAsDelegateHandler extends import_AbstractHandler.Abstract
|
|
|
68
74
|
* @returns {Error} The error with detailed message.
|
|
69
75
|
*/
|
|
70
76
|
createMethodNotFoundError(type, methodName) {
|
|
71
|
-
const methods = Object.getOwnPropertyNames(
|
|
72
|
-
|
|
77
|
+
const methods = Object.getOwnPropertyNames(
|
|
78
|
+
/** @type {{prototype: Object}} */
|
|
79
|
+
type.prototype
|
|
80
|
+
).filter(
|
|
81
|
+
(key) => typeof /** @type {any} */
|
|
82
|
+
type.prototype[key] === "function"
|
|
73
83
|
);
|
|
74
84
|
const availableMethods = methods.map((name) => `${name}()`);
|
|
75
|
-
const message = `Method ${methodName} not found in class ${type
|
|
85
|
+
const message = `Method ${methodName} not found in class ${/** @type {{name: string}} */
|
|
86
|
+
type.name}. Available instance public methods:
|
|
76
87
|
${availableMethods.join("\n")}`;
|
|
77
88
|
return new Error(message);
|
|
78
89
|
}
|
|
@@ -27,6 +27,10 @@ class GetStaticFieldHandler extends import_AbstractHandler.AbstractHandler {
|
|
|
27
27
|
constructor() {
|
|
28
28
|
super();
|
|
29
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* @param {Command} command
|
|
32
|
+
* @returns {any}
|
|
33
|
+
*/
|
|
30
34
|
process(command) {
|
|
31
35
|
try {
|
|
32
36
|
if (command.payload.length < this.requiredParametersCount) {
|
|
@@ -33,7 +33,6 @@ class GetStaticMethodAsDelegateHandler extends import_AbstractHandler.AbstractHa
|
|
|
33
33
|
/**
|
|
34
34
|
* Processes a command to retrieve a static method as a delegate.
|
|
35
35
|
* @param {Command} command - The command containing payload data.
|
|
36
|
-
* @param {Array<*>} command.payload - The payload containing type, method name, and arguments.
|
|
37
36
|
* @returns {Function} The delegate for the static method.
|
|
38
37
|
* @throws {Error} If the parameters mismatch or the method cannot be found.
|
|
39
38
|
*/
|
|
@@ -55,12 +54,13 @@ class GetStaticMethodAsDelegateHandler extends import_AbstractHandler.AbstractHa
|
|
|
55
54
|
* Retrieves the method from the type.
|
|
56
55
|
* @param {Object} type - The class or constructor to search for the method.
|
|
57
56
|
* @param {string} methodName - The name of the method.
|
|
58
|
-
* @param {Array<Function>} argsType - The argument types.
|
|
59
|
-
* @param {Object} modifier - Parameter modifier (not used in JS implementation).
|
|
60
57
|
* @returns {Function|null} The found method or null if not found.
|
|
61
58
|
*/
|
|
62
59
|
getMethod(type, methodName) {
|
|
63
|
-
const method =
|
|
60
|
+
const method = (
|
|
61
|
+
/** @type {any} */
|
|
62
|
+
type[methodName]
|
|
63
|
+
);
|
|
64
64
|
return typeof method === "function" ? method : null;
|
|
65
65
|
}
|
|
66
66
|
/**
|
|
@@ -70,9 +70,11 @@ class GetStaticMethodAsDelegateHandler extends import_AbstractHandler.AbstractHa
|
|
|
70
70
|
* @returns {Error} The error with detailed message.
|
|
71
71
|
*/
|
|
72
72
|
createMethodNotFoundError(type, methodName) {
|
|
73
|
-
const methods = Object.keys(type).filter((key) => typeof type
|
|
73
|
+
const methods = Object.keys(type).filter((key) => typeof /** @type {any} */
|
|
74
|
+
type[key] === "function");
|
|
74
75
|
const availableMethods = methods.map((name) => `${name}()`);
|
|
75
|
-
const message = `Method ${methodName} not found in class ${type
|
|
76
|
+
const message = `Method ${methodName} not found in class ${/** @type {{name: string}} */
|
|
77
|
+
type.name}. Available public static methods:
|
|
76
78
|
${availableMethods.join("\n")}`;
|
|
77
79
|
return new Error(message);
|
|
78
80
|
}
|
|
@@ -35,6 +35,11 @@ class GetTypeHandler extends import_AbstractHandler.AbstractHandler {
|
|
|
35
35
|
this.typeCache = new import_TypeCache.TypeCache();
|
|
36
36
|
this.loadLibaryHandler = new import_LoadLibraryHandler.LoadLibraryHandler();
|
|
37
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
*
|
|
40
|
+
* @param {Command} command
|
|
41
|
+
* @returns
|
|
42
|
+
*/
|
|
38
43
|
process(command) {
|
|
39
44
|
try {
|
|
40
45
|
if (command.payload.length < this.requiredParametersCount) {
|
|
@@ -43,7 +48,10 @@ class GetTypeHandler extends import_AbstractHandler.AbstractHandler {
|
|
|
43
48
|
const { payload } = command;
|
|
44
49
|
let typeName = payload[0];
|
|
45
50
|
typeName = typeName.replace(".js", "");
|
|
46
|
-
|
|
51
|
+
const typeToReturn = (
|
|
52
|
+
/** @type {any} */
|
|
53
|
+
global[typeName]
|
|
54
|
+
);
|
|
47
55
|
if (typeToReturn === void 0) {
|
|
48
56
|
let message = `Type ${typeName} not found
|
|
49
57
|
`;
|
|
@@ -69,7 +77,7 @@ Allowed types: ${allowed_types}`
|
|
|
69
77
|
}
|
|
70
78
|
}
|
|
71
79
|
getAvailableTypes() {
|
|
72
|
-
|
|
80
|
+
const availableTypes = [];
|
|
73
81
|
this.loadLibaryHandler.getLoadedLibraries().forEach((lib) => {
|
|
74
82
|
const dynamicRequire = (0, import_Runtime.getRequire)(import_meta.url);
|
|
75
83
|
const moduleExports = dynamicRequire(`${lib}`);
|
|
@@ -50,16 +50,10 @@ var import_InvokeDelegateHandler = require("./InvokeDelegateHandler.cjs");
|
|
|
50
50
|
var import_InvokeGlobalFunctionHandler = require("./InvokeGlobalFunctionHandler.cjs");
|
|
51
51
|
var import_CommandType = require("../../utils/CommandType.cjs");
|
|
52
52
|
var import_Command = require("../../utils/Command.cjs");
|
|
53
|
+
var import_TypesHandler = require("../../utils/TypesHandler.cjs");
|
|
53
54
|
var import_ExceptionSerializer = require("../../utils/exception/ExceptionSerializer.cjs");
|
|
54
55
|
var import_ConvertTypeHandler = require("./ConvertTypeHandler.cjs");
|
|
55
56
|
var import_AbstractHandler = require("./AbstractHandler.cjs");
|
|
56
|
-
function isResponseSimpleType(response) {
|
|
57
|
-
let type = typeof response;
|
|
58
|
-
return ["string", "boolean", "number"].includes(type);
|
|
59
|
-
}
|
|
60
|
-
function isResponseNull(response) {
|
|
61
|
-
return response === null;
|
|
62
|
-
}
|
|
63
57
|
const handlers = {
|
|
64
58
|
[import_CommandType.CommandType.Value]: new import_ValueHandler.ValueHandler(),
|
|
65
59
|
[import_CommandType.CommandType.LoadLibrary]: new import_LoadLibraryHandler.LoadLibraryHandler(),
|
|
@@ -94,13 +88,16 @@ class Handler {
|
|
|
94
88
|
*/
|
|
95
89
|
constructor(interpreter) {
|
|
96
90
|
this.interpreter = interpreter;
|
|
97
|
-
|
|
91
|
+
if (!this.interpreter) {
|
|
92
|
+
throw new Error("interpreter is undefined in Handler constructor");
|
|
93
|
+
}
|
|
94
|
+
handlers[import_CommandType.CommandType.PassDelegate] = new import_PassDelegateHandler.PassDelegateHandler(this.interpreter);
|
|
98
95
|
Object.keys(handlers).forEach((commandTypeHandler) => {
|
|
99
96
|
handlers[commandTypeHandler].handlers = handlers;
|
|
100
97
|
});
|
|
101
98
|
}
|
|
102
99
|
/**
|
|
103
|
-
* @param {
|
|
100
|
+
* @param {Command} command
|
|
104
101
|
*/
|
|
105
102
|
handleCommand(command) {
|
|
106
103
|
try {
|
|
@@ -116,11 +113,11 @@ class Handler {
|
|
|
116
113
|
}
|
|
117
114
|
/**
|
|
118
115
|
* @param {any} response
|
|
119
|
-
* @param {
|
|
116
|
+
* @param {RuntimeName} runtimeName
|
|
120
117
|
* @returns {Command}
|
|
121
118
|
*/
|
|
122
119
|
parseCommand(response, runtimeName) {
|
|
123
|
-
if (
|
|
120
|
+
if (import_TypesHandler.TypesHandler.isPrimitiveOrNullOrUndefined(response)) {
|
|
124
121
|
return import_Command.Command.createResponse(response, runtimeName);
|
|
125
122
|
} else {
|
|
126
123
|
let cache = import_ReferencesCache.ReferencesCache.getInstance();
|
|
@@ -27,10 +27,14 @@ const import_meta = {};
|
|
|
27
27
|
const dynamicImport = (0, import_Runtime.getRequire)(import_meta.url);
|
|
28
28
|
class LoadLibraryHandler extends import_AbstractHandler.AbstractHandler {
|
|
29
29
|
requiredParametersCount = 1;
|
|
30
|
+
/** @type {string[]} */
|
|
30
31
|
static loadedLibraries = [];
|
|
31
32
|
constructor() {
|
|
32
33
|
super();
|
|
33
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* @param {Command} command
|
|
37
|
+
*/
|
|
34
38
|
process(command) {
|
|
35
39
|
if (command.payload.length < this.requiredParametersCount) {
|
|
36
40
|
throw new Error("Load Library parameters mismatch");
|
|
@@ -38,7 +38,8 @@ if (!_TransmitterWebsocket) {
|
|
|
38
38
|
}
|
|
39
39
|
const requireDynamic = (0, import_Runtime.getRequire)(import_meta.url);
|
|
40
40
|
class Interpreter {
|
|
41
|
-
|
|
41
|
+
/** @type {Handler | null} */
|
|
42
|
+
handler = null;
|
|
42
43
|
/**
|
|
43
44
|
*
|
|
44
45
|
* @param {Command} command
|
|
@@ -47,21 +48,24 @@ class Interpreter {
|
|
|
47
48
|
*/
|
|
48
49
|
async executeAsync(command, connectionData) {
|
|
49
50
|
try {
|
|
51
|
+
if (!this.handler) {
|
|
52
|
+
this.handler = new import_Handler.Handler(this);
|
|
53
|
+
}
|
|
50
54
|
let messageByteArray = new import_CommandSerializer.CommandSerializer().serialize(command, connectionData);
|
|
51
|
-
let responseByteArray;
|
|
55
|
+
let responseByteArray = void 0;
|
|
52
56
|
if (command.runtimeName === import_RuntimeName.RuntimeName.Nodejs && connectionData.connectionType === import_ConnectionType.ConnectionType.IN_MEMORY) {
|
|
53
57
|
if ((0, import_Runtime.isNodejsRuntime)()) {
|
|
54
58
|
if (!_Receiver) {
|
|
55
59
|
const { Receiver } = require("../receiver/Receiver.cjs");
|
|
56
60
|
_Receiver = Receiver;
|
|
57
61
|
}
|
|
58
|
-
responseByteArray = _Receiver
|
|
62
|
+
responseByteArray = _Receiver?.sendCommand(messageByteArray);
|
|
59
63
|
} else {
|
|
60
64
|
throw new Error("Node.js runtime not found");
|
|
61
65
|
}
|
|
62
66
|
} else if (connectionData.connectionType === import_ConnectionType.ConnectionType.WEB_SOCKET) {
|
|
63
67
|
try {
|
|
64
|
-
const _response = await _TransmitterWebsocket
|
|
68
|
+
const _response = await _TransmitterWebsocket?.sendCommand(
|
|
65
69
|
messageByteArray,
|
|
66
70
|
connectionData
|
|
67
71
|
);
|
|
@@ -80,11 +84,14 @@ class Interpreter {
|
|
|
80
84
|
const { Transmitter } = require("../transmitter/Transmitter.cjs");
|
|
81
85
|
_Transmitter = Transmitter;
|
|
82
86
|
}
|
|
83
|
-
responseByteArray = await _Transmitter
|
|
87
|
+
responseByteArray = await _Transmitter?.sendCommand(messageByteArray);
|
|
84
88
|
} else {
|
|
85
89
|
throw new Error("Allowed only to run in nodejs runtime");
|
|
86
90
|
}
|
|
87
91
|
}
|
|
92
|
+
if (!responseByteArray) {
|
|
93
|
+
throw new Error("No response received from Transmitter");
|
|
94
|
+
}
|
|
88
95
|
return new import_CommandDeserializer.CommandDeserializer(responseByteArray).deserialize();
|
|
89
96
|
} catch (error) {
|
|
90
97
|
throw error;
|
|
@@ -93,23 +100,29 @@ class Interpreter {
|
|
|
93
100
|
/**
|
|
94
101
|
*
|
|
95
102
|
* @param {Command} command
|
|
96
|
-
* @param {
|
|
97
|
-
* @returns {Promise<Command>}
|
|
103
|
+
* @param {IConnectionData} connectionData
|
|
104
|
+
* @returns {Command | Promise<Command>}
|
|
98
105
|
*/
|
|
99
106
|
execute(command, connectionData) {
|
|
100
107
|
try {
|
|
108
|
+
if (!this.handler) {
|
|
109
|
+
this.handler = new import_Handler.Handler(this);
|
|
110
|
+
}
|
|
101
111
|
let messageByteArray = new import_CommandSerializer.CommandSerializer().serialize(command, connectionData);
|
|
102
|
-
let responseByteArray;
|
|
112
|
+
let responseByteArray = void 0;
|
|
103
113
|
if (command.runtimeName === import_RuntimeName.RuntimeName.Nodejs && connectionData.connectionType === import_ConnectionType.ConnectionType.IN_MEMORY) {
|
|
104
114
|
if ((0, import_Runtime.isNodejsRuntime)()) {
|
|
105
115
|
if (!_Receiver) {
|
|
106
116
|
const { Receiver } = require("../receiver/Receiver.cjs");
|
|
107
117
|
_Receiver = Receiver;
|
|
108
118
|
}
|
|
109
|
-
responseByteArray = _Receiver
|
|
119
|
+
responseByteArray = _Receiver?.sendCommand(messageByteArray);
|
|
110
120
|
}
|
|
111
121
|
} else if (connectionData.connectionType === import_ConnectionType.ConnectionType.WEB_SOCKET) {
|
|
112
|
-
const promise = _TransmitterWebsocket
|
|
122
|
+
const promise = _TransmitterWebsocket?.sendCommand(messageByteArray, connectionData);
|
|
123
|
+
if (!promise) {
|
|
124
|
+
throw new Error("TransmitterWebsocket not found");
|
|
125
|
+
}
|
|
113
126
|
return promise.then((_response) => {
|
|
114
127
|
if (_response) {
|
|
115
128
|
const command2 = new import_CommandDeserializer.CommandDeserializer(_response).deserialize();
|
|
@@ -126,11 +139,14 @@ class Interpreter {
|
|
|
126
139
|
const { Transmitter } = require("../transmitter/Transmitter.cjs");
|
|
127
140
|
_Transmitter = Transmitter;
|
|
128
141
|
}
|
|
129
|
-
responseByteArray = _Transmitter
|
|
142
|
+
responseByteArray = _Transmitter?.sendCommand(messageByteArray);
|
|
130
143
|
} else {
|
|
131
144
|
throw new Error("Allowed only to run in nodejs runtime");
|
|
132
145
|
}
|
|
133
146
|
}
|
|
147
|
+
if (!responseByteArray) {
|
|
148
|
+
throw new Error("No response received from Transmitter");
|
|
149
|
+
}
|
|
134
150
|
return new import_CommandDeserializer.CommandDeserializer(responseByteArray).deserialize();
|
|
135
151
|
} catch (error) {
|
|
136
152
|
throw error;
|
|
@@ -138,7 +154,7 @@ class Interpreter {
|
|
|
138
154
|
}
|
|
139
155
|
/**
|
|
140
156
|
*
|
|
141
|
-
* @param {
|
|
157
|
+
* @param {Int8Array} messageByteArray
|
|
142
158
|
* @returns {Command}
|
|
143
159
|
*/
|
|
144
160
|
process(messageByteArray) {
|
|
@@ -22,7 +22,9 @@ __export(NamespaceCache_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(NamespaceCache_exports);
|
|
24
24
|
class NamespaceCache {
|
|
25
|
+
/** @type {NamespaceCache | null} */
|
|
25
26
|
static _instance = null;
|
|
27
|
+
/** @type {string[]} */
|
|
26
28
|
namespaceCache = [];
|
|
27
29
|
constructor() {
|
|
28
30
|
if (NamespaceCache._instance === null) {
|
|
@@ -30,12 +32,22 @@ class NamespaceCache {
|
|
|
30
32
|
}
|
|
31
33
|
return NamespaceCache._instance;
|
|
32
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* @param {string} namespaceRegex
|
|
37
|
+
*/
|
|
33
38
|
cacheNamespace(namespaceRegex) {
|
|
34
39
|
this.namespaceCache.push(namespaceRegex);
|
|
35
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* @returns {boolean}
|
|
43
|
+
*/
|
|
36
44
|
isNamespaceCacheEmpty() {
|
|
37
45
|
return this.namespaceCache.length === 0;
|
|
38
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* @param {string} typeToCheck
|
|
49
|
+
* @returns {boolean}
|
|
50
|
+
*/
|
|
39
51
|
isTypeAllowed(typeToCheck) {
|
|
40
52
|
for (let pattern of this.namespaceCache) {
|
|
41
53
|
if (new RegExp(pattern).test(typeToCheck.constructor.name)) {
|