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.
Files changed (193) hide show
  1. package/dist/core/handler/AbstractHandler.cjs +23 -6
  2. package/dist/core/handler/ArrayGetItemHandler.cjs +4 -1
  3. package/dist/core/handler/ArrayGetRankHandler.cjs +3 -0
  4. package/dist/core/handler/ArrayGetSizeHandler.cjs +3 -0
  5. package/dist/core/handler/ArrayHandler.cjs +3 -0
  6. package/dist/core/handler/ArraySetItemHandler.cjs +4 -1
  7. package/dist/core/handler/CastingHandler.cjs +3 -1
  8. package/dist/core/handler/ConvertTypeHandler.cjs +4 -4
  9. package/dist/core/handler/CreateClassInstanceHandler.cjs +5 -2
  10. package/dist/core/handler/DestructReferenceHandler.cjs +3 -0
  11. package/dist/core/handler/EnableNamespaceHandler.cjs +3 -0
  12. package/dist/core/handler/EnableTypeHandler.cjs +3 -0
  13. package/dist/core/handler/GetGlobalStaticFieldHandler.cjs +3 -0
  14. package/dist/core/handler/GetInstanceFieldHandler.cjs +3 -0
  15. package/dist/core/handler/GetInstanceMethodAsDelegateHandler.cjs +15 -4
  16. package/dist/core/handler/GetStaticFieldHandler.cjs +4 -0
  17. package/dist/core/handler/GetStaticMethodAsDelegateHandler.cjs +8 -6
  18. package/dist/core/handler/GetTypeHandler.cjs +10 -2
  19. package/dist/core/handler/Handler.cjs +8 -11
  20. package/dist/core/handler/InvokeGlobalFunctionHandler.cjs +3 -0
  21. package/dist/core/handler/InvokeInstanceMethodHandler.cjs +3 -0
  22. package/dist/core/handler/InvokeStaticMethodHandler.cjs +3 -0
  23. package/dist/core/handler/LoadLibraryHandler.cjs +4 -0
  24. package/dist/core/handler/SetGlobalStaticFieldHandler.cjs +3 -0
  25. package/dist/core/handler/SetInstanceFieldHandler.cjs +3 -0
  26. package/dist/core/handler/SetStaticFieldHandler.cjs +3 -0
  27. package/dist/core/handler/ValueHandler.cjs +4 -0
  28. package/dist/core/interpreter/Interpreter.cjs +28 -12
  29. package/dist/core/namespaceCache/NamespaceCache.cjs +12 -0
  30. package/dist/core/protocol/CommandDeserializer.cjs +10 -2
  31. package/dist/core/protocol/CommandSerializer.cjs +24 -4
  32. package/dist/core/protocol/TypeDeserializer.cjs +35 -0
  33. package/dist/core/protocol/TypeSerializer.cjs +51 -7
  34. package/dist/core/receiver/Receiver.cjs +1 -1
  35. package/dist/core/receiver/ReceiverNative.cjs +6 -0
  36. package/dist/core/transmitter/Transmitter.cjs +18 -2
  37. package/dist/core/transmitter/TransmitterWebsocket.cjs +8 -5
  38. package/dist/core/transmitter/TransmitterWebsocketBrowser.cjs +1 -1
  39. package/dist/core/transmitter/TransmitterWrapper.cjs +25 -8
  40. package/dist/core/typeCache/TypeCache.cjs +8 -0
  41. package/dist/core/webSocketClient/WebSocketClient.cjs +22 -12
  42. package/dist/core/webSocketClient/WebSocketClientBrowser.cjs +2 -2
  43. package/dist/sdk/ConfigRuntimeFactory.cjs +60 -55
  44. package/dist/sdk/InvocationContext.cjs +81 -23
  45. package/dist/sdk/Javonet.cjs +14 -33
  46. package/dist/sdk/RuntimeContext.cjs +85 -30
  47. package/dist/sdk/RuntimeFactory.cjs +3 -0
  48. package/dist/sdk/tools/ActivationHelper.cjs +66 -0
  49. package/dist/sdk/tools/JsonResolver.cjs +214 -0
  50. package/dist/types/core/handler/AbstractHandler.d.ts +23 -4
  51. package/dist/types/core/handler/ArrayGetItemHandler.d.ts +8 -1
  52. package/dist/types/core/handler/ArrayGetRankHandler.d.ts +8 -1
  53. package/dist/types/core/handler/ArrayGetSizeHandler.d.ts +8 -1
  54. package/dist/types/core/handler/ArrayHandler.d.ts +8 -1
  55. package/dist/types/core/handler/ArraySetItemHandler.d.ts +8 -1
  56. package/dist/types/core/handler/CastingHandler.d.ts +4 -0
  57. package/dist/types/core/handler/ConvertTypeHandler.d.ts +8 -4
  58. package/dist/types/core/handler/CreateClassInstanceHandler.d.ts +8 -1
  59. package/dist/types/core/handler/DestructReferenceHandler.d.ts +8 -1
  60. package/dist/types/core/handler/EnableNamespaceHandler.d.ts +8 -1
  61. package/dist/types/core/handler/EnableTypeHandler.d.ts +8 -1
  62. package/dist/types/core/handler/GetGlobalStaticFieldHandler.d.ts +8 -1
  63. package/dist/types/core/handler/GetInstanceFieldHandler.d.ts +8 -1
  64. package/dist/types/core/handler/GetStaticFieldHandler.d.ts +9 -1
  65. package/dist/types/core/handler/GetStaticMethodAsDelegateHandler.d.ts +4 -3
  66. package/dist/types/core/handler/GetTypeHandler.d.ts +17 -8
  67. package/dist/types/core/handler/Handler.d.ts +8 -8
  68. package/dist/types/core/handler/InvokeDelegateHandler.d.ts +4 -0
  69. package/dist/types/core/handler/InvokeGlobalFunctionHandler.d.ts +8 -1
  70. package/dist/types/core/handler/InvokeInstanceMethodHandler.d.ts +8 -1
  71. package/dist/types/core/handler/InvokeStaticMethodHandler.d.ts +8 -1
  72. package/dist/types/core/handler/LoadLibraryHandler.d.ts +8 -3
  73. package/dist/types/core/handler/SetGlobalStaticFieldHandler.d.ts +4 -0
  74. package/dist/types/core/handler/SetInstanceFieldHandler.d.ts +8 -1
  75. package/dist/types/core/handler/SetStaticFieldHandler.d.ts +8 -1
  76. package/dist/types/core/handler/ValueHandler.d.ts +9 -1
  77. package/dist/types/core/interpreter/Interpreter.d.ts +11 -10
  78. package/dist/types/core/namespaceCache/NamespaceCache.d.ts +17 -5
  79. package/dist/types/core/protocol/CommandDeserializer.d.ts +10 -3
  80. package/dist/types/core/protocol/CommandSerializer.d.ts +19 -2
  81. package/dist/types/core/protocol/TypeDeserializer.d.ts +46 -11
  82. package/dist/types/core/protocol/TypeSerializer.d.ts +53 -13
  83. package/dist/types/core/receiver/Receiver.d.ts +2 -2
  84. package/dist/types/core/receiver/ReceiverNative.d.ts +8 -2
  85. package/dist/types/core/transmitter/Transmitter.d.ts +20 -4
  86. package/dist/types/core/transmitter/TransmitterWebsocket.d.ts +8 -4
  87. package/dist/types/core/transmitter/TransmitterWebsocketBrowser.d.ts +4 -7
  88. package/dist/types/core/transmitter/TransmitterWrapper.d.ts +12 -3
  89. package/dist/types/core/typeCache/TypeCache.d.ts +15 -5
  90. package/dist/types/core/webSocketClient/WebSocketClient.d.ts +17 -21
  91. package/dist/types/sdk/ConfigRuntimeFactory.d.ts +9 -6
  92. package/dist/types/sdk/InvocationContext.d.ts +38 -6
  93. package/dist/types/sdk/Javonet.d.ts +12 -7
  94. package/dist/types/sdk/RuntimeContext.d.ts +23 -7
  95. package/dist/types/sdk/RuntimeFactory.d.ts +9 -2
  96. package/dist/types/sdk/tools/ActivationHelper.d.ts +20 -0
  97. package/dist/types/sdk/tools/JsonResolver.d.ts +87 -0
  98. package/dist/types/utils/Command.d.ts +18 -14
  99. package/dist/types/utils/CustomError.d.ts +5 -1
  100. package/dist/types/utils/Runtime.d.ts +1 -2
  101. package/dist/types/utils/RuntimeNameHandler.d.ts +6 -2
  102. package/dist/types/utils/Type.d.ts +1 -0
  103. package/dist/types/utils/TypesHandler.d.ts +16 -0
  104. package/dist/types/utils/UtilsConst.d.ts +32 -0
  105. package/dist/types/utils/connectionData/IConnectionData.d.ts +16 -3
  106. package/dist/types/utils/connectionData/InMemoryConnectionData.d.ts +4 -3
  107. package/dist/types/utils/connectionData/WsConnectionData.d.ts +7 -10
  108. package/dist/types/utils/nodejs/connectionData/TcpConnectionData.d.ts +17 -10
  109. package/dist/utils/Command.cjs +9 -9
  110. package/dist/utils/CustomError.cjs +4 -0
  111. package/dist/utils/RuntimeNameHandler.cjs +1 -1
  112. package/dist/utils/Type.cjs +2 -1
  113. package/dist/utils/TypesHandler.cjs +55 -0
  114. package/dist/utils/UtilsConst.cjs +101 -0
  115. package/dist/utils/connectionData/IConnectionData.cjs +9 -0
  116. package/dist/utils/connectionData/InMemoryConnectionData.cjs +10 -0
  117. package/dist/utils/connectionData/WsConnectionData.cjs +4 -0
  118. package/dist/utils/nodejs/connectionData/TcpConnectionData.cjs +33 -3
  119. package/lib/core/delegatesCache/DelegatesCache.js +1 -0
  120. package/lib/core/handler/AbstractHandler.js +27 -9
  121. package/lib/core/handler/ArrayGetItemHandler.js +9 -1
  122. package/lib/core/handler/ArrayGetRankHandler.js +9 -0
  123. package/lib/core/handler/ArrayGetSizeHandler.js +8 -0
  124. package/lib/core/handler/ArrayHandler.js +8 -0
  125. package/lib/core/handler/ArraySetItemHandler.js +11 -1
  126. package/lib/core/handler/CastingHandler.js +8 -1
  127. package/lib/core/handler/ConvertTypeHandler.js +9 -4
  128. package/lib/core/handler/CreateClassInstanceHandler.js +10 -4
  129. package/lib/core/handler/DestructReferenceHandler.js +8 -0
  130. package/lib/core/handler/EnableNamespaceHandler.js +8 -0
  131. package/lib/core/handler/EnableTypeHandler.js +8 -0
  132. package/lib/core/handler/GetGlobalStaticFieldHandler.js +9 -0
  133. package/lib/core/handler/GetInstanceFieldHandler.js +8 -0
  134. package/lib/core/handler/GetInstanceMethodAsDelegateHandler.js +9 -4
  135. package/lib/core/handler/GetStaticFieldHandler.js +9 -0
  136. package/lib/core/handler/GetStaticMethodAsDelegateHandler.js +8 -7
  137. package/lib/core/handler/GetTypeHandler.js +15 -5
  138. package/lib/core/handler/Handler.js +13 -18
  139. package/lib/core/handler/InvokeDelegateHandler.js +5 -0
  140. package/lib/core/handler/InvokeGlobalFunctionHandler.js +11 -1
  141. package/lib/core/handler/InvokeInstanceMethodHandler.js +8 -0
  142. package/lib/core/handler/InvokeStaticMethodHandler.js +8 -0
  143. package/lib/core/handler/LoadLibraryHandler.js +11 -0
  144. package/lib/core/handler/SetGlobalStaticFieldHandler.js +10 -0
  145. package/lib/core/handler/SetInstanceFieldHandler.js +7 -0
  146. package/lib/core/handler/SetStaticFieldHandler.js +8 -0
  147. package/lib/core/handler/ValueHandler.js +9 -0
  148. package/lib/core/interpreter/Interpreter.js +42 -24
  149. package/lib/core/namespaceCache/NamespaceCache.js +14 -0
  150. package/lib/core/protocol/CommandDeserializer.js +11 -2
  151. package/lib/core/protocol/CommandSerializer.js +40 -9
  152. package/lib/core/protocol/TypeDeserializer.js +36 -0
  153. package/lib/core/protocol/TypeSerializer.js +62 -7
  154. package/lib/core/receiver/Receiver.js +3 -2
  155. package/lib/core/receiver/ReceiverNative.js +8 -0
  156. package/lib/core/transmitter/Transmitter.js +18 -1
  157. package/lib/core/transmitter/TransmitterWebsocket.js +12 -5
  158. package/lib/core/transmitter/TransmitterWebsocketBrowser.js +2 -4
  159. package/lib/core/transmitter/TransmitterWrapper.js +27 -6
  160. package/lib/core/typeCache/TypeCache.js +9 -0
  161. package/lib/core/webSocketClient/WebSocketClient.js +33 -30
  162. package/lib/core/webSocketClient/WebSocketClientBrowser.js +5 -6
  163. package/lib/sdk/ConfigRuntimeFactory.js +70 -68
  164. package/lib/sdk/InvocationContext.js +94 -26
  165. package/lib/sdk/Javonet.js +18 -36
  166. package/lib/sdk/RuntimeContext.js +109 -29
  167. package/lib/sdk/RuntimeFactory.js +7 -0
  168. package/lib/sdk/tools/ActivationHelper.js +51 -0
  169. package/lib/sdk/tools/JsonResolver.js +226 -0
  170. package/lib/types.d.ts +57 -0
  171. package/lib/utils/Command.js +14 -9
  172. package/lib/utils/CustomError.js +5 -0
  173. package/lib/utils/Runtime.js +1 -1
  174. package/lib/utils/RuntimeLogger.js +3 -0
  175. package/lib/utils/RuntimeNameHandler.js +6 -1
  176. package/lib/utils/Type.js +2 -1
  177. package/lib/utils/TypesHandler.js +35 -0
  178. package/lib/utils/UtilsConst.js +88 -0
  179. package/lib/utils/connectionData/IConnectionData.js +14 -0
  180. package/lib/utils/connectionData/InMemoryConnectionData.js +15 -0
  181. package/lib/utils/connectionData/WsConnectionData.js +9 -0
  182. package/lib/utils/nodejs/connectionData/TcpConnectionData.js +35 -5
  183. package/package.json +4 -3
  184. package/dist/sdk/tools/browser/ConfigSourceResolver.cjs +0 -153
  185. package/dist/sdk/tools/nodejs/JsonFileResolver.cjs +0 -120
  186. package/dist/types/sdk/tools/browser/ConfigSourceResolver.d.ts +0 -46
  187. package/dist/types/sdk/tools/nodejs/JsonFileResolver.d.ts +0 -13
  188. package/dist/types/utils/nodejs/TypesConverter.d.ts +0 -48
  189. package/dist/utils/nodejs/TypesConverter.cjs +0 -102
  190. package/lib/declarations.d.ts +0 -35
  191. package/lib/sdk/tools/browser/ConfigSourceResolver.js +0 -146
  192. package/lib/sdk/tools/nodejs/JsonFileResolver.js +0 -106
  193. package/lib/utils/nodejs/TypesConverter.js +0 -91
@@ -1,42 +1,73 @@
1
- import { TypeSerializer } from './TypeSerializer.js';
2
- import { Command } from '../../utils/Command.js';
3
- import { RuntimeName } from '../../utils/RuntimeName.js';
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
- serialize(rootCommand, connectionData) {
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
- buffers.push(Uint8Array.of(RuntimeName.Nodejs, rootCommand.commandType))
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' || payload_item instanceof 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' || payload_item instanceof String) {
26
+ } else if (typeof payload_item === 'string') {
23
27
  return TypeSerializer.serializeString(payload_item)
24
- } else if (typeof payload_item === 'boolean' || payload_item instanceof 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
- throw new CustomError('Type not supported - Promise', JSON.stringify(payload_item))
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 'Type not supported - undefined'
40
+ throw Error(
41
+ 'Unsupported payload item type: ' +
42
+ typeof payload_item +
43
+ ' for payload item: ' +
44
+ payload_item
45
+ )
32
46
  }
33
- throw 'Unknown type - not supported in JavaScript'
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.runtime, 5)
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 {number[]} messageByteArray
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
- static activate = function (licenseKey) {
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 {number[]} messageByteArray
22
- * @param {WsConnectionData} connectionData
23
- * @returns {Promise<number[]>} responseByteArray
25
+ * @param {Int8Array} messageByteArray
26
+ * @param {IConnectionData} connectionData
27
+ * @returns {Promise<Int8Array>} responseByteArray
24
28
  */
25
- static async sendCommand(messageByteArray, connectionData) {
29
+ static sendCommand(messageByteArray, connectionData) {
26
30
  const { hostname } = connectionData
27
- return new WebSocketClient(hostname).send(messageByteArray)
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 {object} ConnectionData
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 {ConnectionData} connectionData
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
- let library
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 !== undefined
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
- const path = requireDynamic('path')
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(binariesRootPath, 'build', 'Release', 'JavonetNodejsRuntimeAddon.node')
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
- library.setReceiverNative(global.ReceiverNative)
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)) {