@adapt-toolkit/sdk 0.1.0

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 (278) hide show
  1. package/dist/common/index.d.ts +7 -0
  2. package/dist/common/index.d.ts.map +1 -0
  3. package/dist/common/index.js +7 -0
  4. package/dist/common/index.js.map +1 -0
  5. package/dist/common/interfaces/adapt_environment.d.ts +21 -0
  6. package/dist/common/interfaces/adapt_environment.d.ts.map +1 -0
  7. package/dist/common/interfaces/adapt_environment.js +2 -0
  8. package/dist/common/interfaces/adapt_environment.js.map +1 -0
  9. package/dist/common/interfaces/adapt_evaluation_unit.d.ts +12 -0
  10. package/dist/common/interfaces/adapt_evaluation_unit.d.ts.map +1 -0
  11. package/dist/common/interfaces/adapt_evaluation_unit.js +2 -0
  12. package/dist/common/interfaces/adapt_evaluation_unit.js.map +1 -0
  13. package/dist/common/interfaces/adapt_packet_context.d.ts +29 -0
  14. package/dist/common/interfaces/adapt_packet_context.d.ts.map +1 -0
  15. package/dist/common/interfaces/adapt_packet_context.js +2 -0
  16. package/dist/common/interfaces/adapt_packet_context.js.map +1 -0
  17. package/dist/common/interfaces/adapt_value.d.ts +23 -0
  18. package/dist/common/interfaces/adapt_value.d.ts.map +1 -0
  19. package/dist/common/interfaces/adapt_value.js +2 -0
  20. package/dist/common/interfaces/adapt_value.js.map +1 -0
  21. package/dist/common/interfaces/common.d.ts +18 -0
  22. package/dist/common/interfaces/common.d.ts.map +1 -0
  23. package/dist/common/interfaces/common.js +4 -0
  24. package/dist/common/interfaces/common.js.map +1 -0
  25. package/dist/common/memory_management/adapt_object_lifetime.d.ts +114 -0
  26. package/dist/common/memory_management/adapt_object_lifetime.d.ts.map +1 -0
  27. package/dist/common/memory_management/adapt_object_lifetime.js +159 -0
  28. package/dist/common/memory_management/adapt_object_lifetime.js.map +1 -0
  29. package/dist/index.d.ts +3 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +2 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/loaders/browser.d.ts +5 -0
  34. package/dist/loaders/browser.d.ts.map +1 -0
  35. package/dist/loaders/browser.js +6 -0
  36. package/dist/loaders/browser.js.map +1 -0
  37. package/dist/loaders/node.d.ts +13 -0
  38. package/dist/loaders/node.d.ts.map +1 -0
  39. package/dist/loaders/node.js +29 -0
  40. package/dist/loaders/node.js.map +1 -0
  41. package/dist/loaders/react-native.d.ts +11 -0
  42. package/dist/loaders/react-native.d.ts.map +1 -0
  43. package/dist/loaders/react-native.js +19 -0
  44. package/dist/loaders/react-native.js.map +1 -0
  45. package/dist/loaders/shared.d.ts +17 -0
  46. package/dist/loaders/shared.d.ts.map +1 -0
  47. package/dist/loaders/shared.js +2 -0
  48. package/dist/loaders/shared.js.map +1 -0
  49. package/dist/utilities/broker/broker.d.ts +21 -0
  50. package/dist/utilities/broker/broker.d.ts.map +1 -0
  51. package/dist/utilities/broker/broker.js +267 -0
  52. package/dist/utilities/broker/broker.js.map +1 -0
  53. package/dist/utilities/broker/broker_client.d.ts +40 -0
  54. package/dist/utilities/broker/broker_client.d.ts.map +1 -0
  55. package/dist/utilities/broker/broker_client.js +111 -0
  56. package/dist/utilities/broker/broker_client.js.map +1 -0
  57. package/dist/utilities/broker/broker_configurator.d.ts +6 -0
  58. package/dist/utilities/broker/broker_configurator.d.ts.map +1 -0
  59. package/dist/utilities/broker/broker_configurator.js +8 -0
  60. package/dist/utilities/broker/broker_configurator.js.map +1 -0
  61. package/dist/utilities/broker/index.d.ts +4 -0
  62. package/dist/utilities/broker/index.d.ts.map +1 -0
  63. package/dist/utilities/broker/index.js +4 -0
  64. package/dist/utilities/broker/index.js.map +1 -0
  65. package/dist/utilities/common/adapt_waitlist.d.ts +5 -0
  66. package/dist/utilities/common/adapt_waitlist.d.ts.map +1 -0
  67. package/dist/utilities/common/adapt_waitlist.js +4 -0
  68. package/dist/utilities/common/adapt_waitlist.js.map +1 -0
  69. package/dist/utilities/common/async_queue_adapter.d.ts +40 -0
  70. package/dist/utilities/common/async_queue_adapter.d.ts.map +1 -0
  71. package/dist/utilities/common/async_queue_adapter.js +88 -0
  72. package/dist/utilities/common/async_queue_adapter.js.map +1 -0
  73. package/dist/utilities/common/command_line_configurator.d.ts +88 -0
  74. package/dist/utilities/common/command_line_configurator.d.ts.map +1 -0
  75. package/dist/utilities/common/command_line_configurator.js +217 -0
  76. package/dist/utilities/common/command_line_configurator.js.map +1 -0
  77. package/dist/utilities/common/decorators.d.ts +17 -0
  78. package/dist/utilities/common/decorators.d.ts.map +1 -0
  79. package/dist/utilities/common/decorators.js +84 -0
  80. package/dist/utilities/common/decorators.js.map +1 -0
  81. package/dist/utilities/common/errors/adapt_initialization_error.d.ts +4 -0
  82. package/dist/utilities/common/errors/adapt_initialization_error.d.ts.map +1 -0
  83. package/dist/utilities/common/errors/adapt_initialization_error.js +6 -0
  84. package/dist/utilities/common/errors/adapt_initialization_error.js.map +1 -0
  85. package/dist/utilities/common/errors/adapt_network_error.d.ts +8 -0
  86. package/dist/utilities/common/errors/adapt_network_error.d.ts.map +1 -0
  87. package/dist/utilities/common/errors/adapt_network_error.js +12 -0
  88. package/dist/utilities/common/errors/adapt_network_error.js.map +1 -0
  89. package/dist/utilities/common/errors/adapt_protocol_error.d.ts +12 -0
  90. package/dist/utilities/common/errors/adapt_protocol_error.d.ts.map +1 -0
  91. package/dist/utilities/common/errors/adapt_protocol_error.js +16 -0
  92. package/dist/utilities/common/errors/adapt_protocol_error.js.map +1 -0
  93. package/dist/utilities/common/errors/adapt_test_mode_error.d.ts +11 -0
  94. package/dist/utilities/common/errors/adapt_test_mode_error.d.ts.map +1 -0
  95. package/dist/utilities/common/errors/adapt_test_mode_error.js +22 -0
  96. package/dist/utilities/common/errors/adapt_test_mode_error.js.map +1 -0
  97. package/dist/utilities/common/http_server.d.ts +18 -0
  98. package/dist/utilities/common/http_server.d.ts.map +1 -0
  99. package/dist/utilities/common/http_server.js +41 -0
  100. package/dist/utilities/common/http_server.js.map +1 -0
  101. package/dist/utilities/common/index.d.ts +25 -0
  102. package/dist/utilities/common/index.d.ts.map +1 -0
  103. package/dist/utilities/common/index.js +36 -0
  104. package/dist/utilities/common/index.js.map +1 -0
  105. package/dist/utilities/common/logger/logger.d.ts +83 -0
  106. package/dist/utilities/common/logger/logger.d.ts.map +1 -0
  107. package/dist/utilities/common/logger/logger.js +272 -0
  108. package/dist/utilities/common/logger/logger.js.map +1 -0
  109. package/dist/utilities/common/logger/logging_level.d.ts +13 -0
  110. package/dist/utilities/common/logger/logging_level.d.ts.map +1 -0
  111. package/dist/utilities/common/logger/logging_level.js +36 -0
  112. package/dist/utilities/common/logger/logging_level.js.map +1 -0
  113. package/dist/utilities/common/logger/message.d.ts +65 -0
  114. package/dist/utilities/common/logger/message.d.ts.map +1 -0
  115. package/dist/utilities/common/logger/message.js +169 -0
  116. package/dist/utilities/common/logger/message.js.map +1 -0
  117. package/dist/utilities/common/logger/network_component.d.ts +3 -0
  118. package/dist/utilities/common/logger/network_component.d.ts.map +1 -0
  119. package/dist/utilities/common/logger/network_component.js +4 -0
  120. package/dist/utilities/common/logger/network_component.js.map +1 -0
  121. package/dist/utilities/common/totp_qr_code_generator.d.ts +12 -0
  122. package/dist/utilities/common/totp_qr_code_generator.d.ts.map +1 -0
  123. package/dist/utilities/common/totp_qr_code_generator.js +19 -0
  124. package/dist/utilities/common/totp_qr_code_generator.js.map +1 -0
  125. package/dist/utilities/common/waitlist/waitlist.d.ts +36 -0
  126. package/dist/utilities/common/waitlist/waitlist.d.ts.map +1 -0
  127. package/dist/utilities/common/waitlist/waitlist.js +116 -0
  128. package/dist/utilities/common/waitlist/waitlist.js.map +1 -0
  129. package/dist/utilities/common/web_socket_client.d.ts +50 -0
  130. package/dist/utilities/common/web_socket_client.d.ts.map +1 -0
  131. package/dist/utilities/common/web_socket_client.js +80 -0
  132. package/dist/utilities/common/web_socket_client.js.map +1 -0
  133. package/dist/utilities/common/web_socket_connection.d.ts +29 -0
  134. package/dist/utilities/common/web_socket_connection.d.ts.map +1 -0
  135. package/dist/utilities/common/web_socket_connection.js +94 -0
  136. package/dist/utilities/common/web_socket_connection.js.map +1 -0
  137. package/dist/utilities/evaluator/common.d.ts +10 -0
  138. package/dist/utilities/evaluator/common.d.ts.map +1 -0
  139. package/dist/utilities/evaluator/common.js +128 -0
  140. package/dist/utilities/evaluator/common.js.map +1 -0
  141. package/dist/utilities/evaluator/evaluator.d.ts +35 -0
  142. package/dist/utilities/evaluator/evaluator.d.ts.map +1 -0
  143. package/dist/utilities/evaluator/evaluator.js +141 -0
  144. package/dist/utilities/evaluator/evaluator.js.map +1 -0
  145. package/dist/utilities/evaluator/index.d.ts +3 -0
  146. package/dist/utilities/evaluator/index.d.ts.map +1 -0
  147. package/dist/utilities/evaluator/index.js +3 -0
  148. package/dist/utilities/evaluator/index.js.map +1 -0
  149. package/dist/utilities/executables/adapt_wrapper.d.ts +3 -0
  150. package/dist/utilities/executables/adapt_wrapper.d.ts.map +1 -0
  151. package/dist/utilities/executables/adapt_wrapper.js +25 -0
  152. package/dist/utilities/executables/adapt_wrapper.js.map +1 -0
  153. package/dist/utilities/executables/adapt_wrapper_mobile.d.ts +3 -0
  154. package/dist/utilities/executables/adapt_wrapper_mobile.d.ts.map +1 -0
  155. package/dist/utilities/executables/adapt_wrapper_mobile.js +20 -0
  156. package/dist/utilities/executables/adapt_wrapper_mobile.js.map +1 -0
  157. package/dist/utilities/executables/adapt_wrapper_script.d.ts +2 -0
  158. package/dist/utilities/executables/adapt_wrapper_script.d.ts.map +1 -0
  159. package/dist/utilities/executables/adapt_wrapper_script.js +6 -0
  160. package/dist/utilities/executables/adapt_wrapper_script.js.map +1 -0
  161. package/dist/utilities/executables/broker.d.ts +2 -0
  162. package/dist/utilities/executables/broker.d.ts.map +1 -0
  163. package/dist/utilities/executables/broker.js +23 -0
  164. package/dist/utilities/executables/broker.js.map +1 -0
  165. package/dist/utilities/executables/index.d.ts +2 -0
  166. package/dist/utilities/executables/index.d.ts.map +1 -0
  167. package/dist/utilities/executables/index.js +2 -0
  168. package/dist/utilities/executables/index.js.map +1 -0
  169. package/dist/utilities/executables/local_data_storage.d.ts +2 -0
  170. package/dist/utilities/executables/local_data_storage.d.ts.map +1 -0
  171. package/dist/utilities/executables/local_data_storage.js +20 -0
  172. package/dist/utilities/executables/local_data_storage.js.map +1 -0
  173. package/dist/utilities/executables/local_data_storage_cmd_helper.d.ts +2 -0
  174. package/dist/utilities/executables/local_data_storage_cmd_helper.d.ts.map +1 -0
  175. package/dist/utilities/executables/local_data_storage_cmd_helper.js +52 -0
  176. package/dist/utilities/executables/local_data_storage_cmd_helper.js.map +1 -0
  177. package/dist/utilities/storage/data_storage.d.ts +97 -0
  178. package/dist/utilities/storage/data_storage.d.ts.map +1 -0
  179. package/dist/utilities/storage/data_storage.js +440 -0
  180. package/dist/utilities/storage/data_storage.js.map +1 -0
  181. package/dist/utilities/storage/index.d.ts +6 -0
  182. package/dist/utilities/storage/index.d.ts.map +1 -0
  183. package/dist/utilities/storage/index.js +6 -0
  184. package/dist/utilities/storage/index.js.map +1 -0
  185. package/dist/utilities/storage/local_data_storage.d.ts +7 -0
  186. package/dist/utilities/storage/local_data_storage.d.ts.map +1 -0
  187. package/dist/utilities/storage/local_data_storage.js +18 -0
  188. package/dist/utilities/storage/local_data_storage.js.map +1 -0
  189. package/dist/utilities/storage/local_data_storage_base.d.ts +74 -0
  190. package/dist/utilities/storage/local_data_storage_base.d.ts.map +1 -0
  191. package/dist/utilities/storage/local_data_storage_base.js +163 -0
  192. package/dist/utilities/storage/local_data_storage_base.js.map +1 -0
  193. package/dist/utilities/storage/local_data_storage_configurator.d.ts +7 -0
  194. package/dist/utilities/storage/local_data_storage_configurator.d.ts.map +1 -0
  195. package/dist/utilities/storage/local_data_storage_configurator.js +13 -0
  196. package/dist/utilities/storage/local_data_storage_configurator.js.map +1 -0
  197. package/dist/utilities/storage/storage_client.d.ts +28 -0
  198. package/dist/utilities/storage/storage_client.d.ts.map +1 -0
  199. package/dist/utilities/storage/storage_client.js +79 -0
  200. package/dist/utilities/storage/storage_client.js.map +1 -0
  201. package/dist/utilities/wrappers/configurators/adapt_wrapper_configurator.d.ts +14 -0
  202. package/dist/utilities/wrappers/configurators/adapt_wrapper_configurator.d.ts.map +1 -0
  203. package/dist/utilities/wrappers/configurators/adapt_wrapper_configurator.js +57 -0
  204. package/dist/utilities/wrappers/configurators/adapt_wrapper_configurator.js.map +1 -0
  205. package/dist/utilities/wrappers/configurators/control_packet_configurator.d.ts +12 -0
  206. package/dist/utilities/wrappers/configurators/control_packet_configurator.d.ts.map +1 -0
  207. package/dist/utilities/wrappers/configurators/control_packet_configurator.js +52 -0
  208. package/dist/utilities/wrappers/configurators/control_packet_configurator.js.map +1 -0
  209. package/dist/utilities/wrappers/configurators/packet_wrapper_configurator.d.ts +32 -0
  210. package/dist/utilities/wrappers/configurators/packet_wrapper_configurator.d.ts.map +1 -0
  211. package/dist/utilities/wrappers/configurators/packet_wrapper_configurator.js +123 -0
  212. package/dist/utilities/wrappers/configurators/packet_wrapper_configurator.js.map +1 -0
  213. package/dist/utilities/wrappers/enclave/control_packet.d.ts +18 -0
  214. package/dist/utilities/wrappers/enclave/control_packet.d.ts.map +1 -0
  215. package/dist/utilities/wrappers/enclave/control_packet.js +213 -0
  216. package/dist/utilities/wrappers/enclave/control_packet.js.map +1 -0
  217. package/dist/utilities/wrappers/index.d.ts +5 -0
  218. package/dist/utilities/wrappers/index.d.ts.map +1 -0
  219. package/dist/utilities/wrappers/index.js +5 -0
  220. package/dist/utilities/wrappers/index.js.map +1 -0
  221. package/dist/utilities/wrappers/wrappers/adapt_packet_wrapper.d.ts +19 -0
  222. package/dist/utilities/wrappers/wrappers/adapt_packet_wrapper.d.ts.map +1 -0
  223. package/dist/utilities/wrappers/wrappers/adapt_packet_wrapper.js +55 -0
  224. package/dist/utilities/wrappers/wrappers/adapt_packet_wrapper.js.map +1 -0
  225. package/dist/utilities/wrappers/wrappers/adapt_wrapper.d.ts +131 -0
  226. package/dist/utilities/wrappers/wrappers/adapt_wrapper.d.ts.map +1 -0
  227. package/dist/utilities/wrappers/wrappers/adapt_wrapper.js +716 -0
  228. package/dist/utilities/wrappers/wrappers/adapt_wrapper.js.map +1 -0
  229. package/dist/utilities/wrappers/wrappers/impl/adapt_packet_wrapper_impl.d.ts +75 -0
  230. package/dist/utilities/wrappers/wrappers/impl/adapt_packet_wrapper_impl.d.ts.map +1 -0
  231. package/dist/utilities/wrappers/wrappers/impl/adapt_packet_wrapper_impl.js +550 -0
  232. package/dist/utilities/wrappers/wrappers/impl/adapt_packet_wrapper_impl.js.map +1 -0
  233. package/dist/wasm/adapt.d.ts +79 -0
  234. package/dist/wasm/adapt.d.ts.map +1 -0
  235. package/dist/wasm/adapt.js +430 -0
  236. package/dist/wasm/adapt.js.map +1 -0
  237. package/dist/wasm/backend-node.d.ts +1 -0
  238. package/dist/wasm/backend-node.d.ts.map +1 -0
  239. package/dist/wasm/backend-node.js +1 -0
  240. package/dist/wasm/backend-node.js.map +1 -0
  241. package/dist/wasm/index.d.ts +12 -0
  242. package/dist/wasm/index.d.ts.map +1 -0
  243. package/dist/wasm/index.js +15 -0
  244. package/dist/wasm/index.js.map +1 -0
  245. package/dist/wasm/mufl-bindings.d.ts +3 -0
  246. package/dist/wasm/mufl-bindings.d.ts.map +1 -0
  247. package/dist/wasm/mufl-bindings.js +3833 -0
  248. package/dist/wasm/mufl-bindings.js.map +1 -0
  249. package/dist/wasm/mufl-bindings.wasm +0 -0
  250. package/dist/wasm/wasm_types.d.ts +96 -0
  251. package/dist/wasm/wasm_types.d.ts.map +1 -0
  252. package/dist/wasm/wasm_types.js +2 -0
  253. package/dist/wasm/wasm_types.js.map +1 -0
  254. package/dist/wrapper/conversion.d.ts +9 -0
  255. package/dist/wrapper/conversion.d.ts.map +1 -0
  256. package/dist/wrapper/conversion.js +30 -0
  257. package/dist/wrapper/conversion.js.map +1 -0
  258. package/dist/wrapper/index.d.ts +11 -0
  259. package/dist/wrapper/index.d.ts.map +1 -0
  260. package/dist/wrapper/index.js +25 -0
  261. package/dist/wrapper/index.js.map +1 -0
  262. package/dist/wrapper/memory_management/adapt_builder.d.ts +36 -0
  263. package/dist/wrapper/memory_management/adapt_builder.d.ts.map +1 -0
  264. package/dist/wrapper/memory_management/adapt_builder.js +98 -0
  265. package/dist/wrapper/memory_management/adapt_builder.js.map +1 -0
  266. package/dist/wrapper/memory_management/exit_handler_registrar.d.ts +10 -0
  267. package/dist/wrapper/memory_management/exit_handler_registrar.d.ts.map +1 -0
  268. package/dist/wrapper/memory_management/exit_handler_registrar.js +38 -0
  269. package/dist/wrapper/memory_management/exit_handler_registrar.js.map +1 -0
  270. package/dist/wrapper/protocol/message_handler_interfaces.d.ts +32 -0
  271. package/dist/wrapper/protocol/message_handler_interfaces.d.ts.map +1 -0
  272. package/dist/wrapper/protocol/message_handler_interfaces.js +2 -0
  273. package/dist/wrapper/protocol/message_handler_interfaces.js.map +1 -0
  274. package/dist/wrapper/protocol/protocol.d.ts +171 -0
  275. package/dist/wrapper/protocol/protocol.d.ts.map +1 -0
  276. package/dist/wrapper/protocol/protocol.js +387 -0
  277. package/dist/wrapper/protocol/protocol.js.map +1 -0
  278. package/package.json +127 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local_data_storage.d.ts","sourceRoot":"","sources":["../../../src/utilities/executables/local_data_storage.ts"],"names":[],"mappings":""}
@@ -0,0 +1,20 @@
1
+ import { LocalDataStorageConfigurator, LocalDataStorage } from '../storage/index.js';
2
+ import { AdaptEnvironment } from '@adapt-toolkit/sdk/backend';
3
+ import { Protocol } from '../../wrapper/index.js';
4
+ import { AdaptNetworkComponentConfigurator, logging } from '../common/index.js';
5
+ const local_data_storage_config = new LocalDataStorageConfigurator();
6
+ try {
7
+ local_data_storage_config.process_arguments(process.argv.slice(2));
8
+ }
9
+ catch (e) {
10
+ console.error(e instanceof Error ? e.message : e);
11
+ local_data_storage_config.display_help();
12
+ process.exit(1); // how to pass args and exit the process in web
13
+ }
14
+ logging.create_logger(local_data_storage_config.logger_config);
15
+ AdaptEnvironment.InitializeAsync(AdaptNetworkComponentConfigurator.test_mode).then(async () => {
16
+ await Protocol.Initialize();
17
+ let local_data_storage = new LocalDataStorage(local_data_storage_config);
18
+ local_data_storage.start();
19
+ });
20
+ //# sourceMappingURL=local_data_storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local_data_storage.js","sourceRoot":"","sources":["../../../src/utilities/executables/local_data_storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,4BAA4B,EAAE,gBAAgB,EAAC,MAAM,qBAAqB,CAAA;AAClF,OAAO,EAAC,gBAAgB,EAAC,MAAM,UAAU,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,iCAAiC,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAIhF,MAAM,yBAAyB,GAAG,IAAI,4BAA4B,EAAE,CAAC;AACrE,IAAI,CAAC;IACD,yBAAyB,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC;IACT,OAAO,CAAC,KAAK,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,yBAAyB,CAAC,YAAY,EAAE,CAAC;IACzC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,+CAA+C;AACpE,CAAC;AAED,OAAO,CAAC,aAAa,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC;AAE/D,gBAAgB,CAAC,eAAe,CAAC,iCAAiC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAE,KAAK,IAAI,EAAE;IAC3F,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;IAC5B,IAAI,kBAAkB,GAAG,IAAI,gBAAgB,CAAC,yBAAyB,CAAC,CAAC;IACzE,kBAAkB,CAAC,KAAK,EAAE,CAAC;AAC/B,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=local_data_storage_cmd_helper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local_data_storage_cmd_helper.d.ts","sourceRoot":"","sources":["../../../src/utilities/executables/local_data_storage_cmd_helper.ts"],"names":[],"mappings":""}
@@ -0,0 +1,52 @@
1
+ import { AdaptNetworkComponentConfigurator, Argument } from '../common/index.js';
2
+ import { LocalDataStorageBase, LocalDataStorageConfigurator } from '../storage/index.js';
3
+ import * as fs from 'fs';
4
+ class Configurator extends AdaptNetworkComponentConfigurator {
5
+ configurator_name = "local data storage command line updater configurator";
6
+ #code_objects_to_copy = [];
7
+ constructor() {
8
+ super([
9
+ new Argument("--root_dir_path").set_description("Path to a directory containing the storage files.").set_supply_argument(true, 1).set_required(true),
10
+ new Argument("--copy_code_object").set_description("Copy code object data to the data storage").set_supply_argument(true, 1).set_callback_single_argument((arg, value) => { this.#code_objects_to_copy.push(value); })
11
+ ]);
12
+ }
13
+ get root_dir_path() {
14
+ return this.get_argument("--root_dir_path").value;
15
+ }
16
+ get code_objects_to_copy() {
17
+ return this.#code_objects_to_copy;
18
+ }
19
+ }
20
+ class LocalDataStorageCMDHelper {
21
+ data_storage_base;
22
+ constructor(__config) {
23
+ let config = new LocalDataStorageConfigurator();
24
+ config.process_arguments(["--root_dir_path", __config.root_dir_path, "--host", "localhost", "--port", "1111"]);
25
+ this.data_storage_base = new LocalDataStorageBase(config);
26
+ this.data_storage_base.init();
27
+ __config.code_objects_to_copy.forEach(object => {
28
+ const basename = object.split('/').reverse()[0];
29
+ const hash = basename.substring(0, 64);
30
+ console.log("Trying to save the code object to the data storage: ", hash);
31
+ let file_data;
32
+ try {
33
+ file_data = fs.readFileSync(object);
34
+ }
35
+ catch (e) {
36
+ if (e.code === 'ENOENT') {
37
+ console.error(`File ${object} doesn't exist.`);
38
+ process.exit(1);
39
+ }
40
+ else {
41
+ console.error("Error occurred while reading the file", object, e);
42
+ process.exit(2);
43
+ }
44
+ }
45
+ this.data_storage_base.set_code_object(hash, file_data);
46
+ });
47
+ }
48
+ }
49
+ const configurator = new Configurator();
50
+ configurator.process_arguments(process.argv.slice(2));
51
+ new LocalDataStorageCMDHelper(configurator);
52
+ //# sourceMappingURL=local_data_storage_cmd_helper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local_data_storage_cmd_helper.js","sourceRoot":"","sources":["../../../src/utilities/executables/local_data_storage_cmd_helper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,97 @@
1
+ import { AdaptValue } from '@adapt-toolkit/sdk/backend';
2
+ import { AsyncQueueAdapter, HttpServer, LoggerConfigurator } from '../common/index.js';
3
+ export type Binary = Uint8Array;
4
+ export declare class AdaptStateChange {
5
+ transaction: Uint8Array;
6
+ final_state_id: string;
7
+ constructor(transaction: Uint8Array, final_state_id: string);
8
+ Serialize(): string;
9
+ static Deserialize(s: string): AdaptStateChange;
10
+ }
11
+ export interface IDataStorageBase {
12
+ init(): void;
13
+ /**
14
+ * Get code object data by its hash.
15
+ * Throws a DataStorageErro, if there is no code object with given hash available.
16
+ * @param hash hash of the code object
17
+ */
18
+ get_code_object(hash: string): Binary;
19
+ set_code_object(hash: string, content: Binary): void;
20
+ /**
21
+ * Get packet data by the hash ot state.
22
+ * Throws a DataStorageError, if there is no packet with given state id.
23
+ * @param hash hash of the packet state.
24
+ */
25
+ get_packet(hash: string): Binary;
26
+ set_packet(hash: string, content: Binary): void;
27
+ /**
28
+ * Returns id of the last packet state registered in the data storage.
29
+ * Throws a DataStorageError, if there is no registered states yet.
30
+ * @param packet_id id of the packet
31
+ */
32
+ get_last_state_id(packet_id: string): string;
33
+ set_last_state_id(packet_id: string, state_id: string): void;
34
+ /**
35
+ * Returns id of the last snapshot state registered in the data storage.
36
+ * Throws a DataStorageError, if there is no registered snapshots yet.
37
+ * @param packet_id id of the packet
38
+ */
39
+ get_last_snapshot_state_id(state_id: string): string;
40
+ set_last_snapshot_state_id(state_id: string, snapshot_id: string): void;
41
+ /**
42
+ * Returns change of the state after transaction and transaction itself.(Final state id, request data, transient data).
43
+ * Throws a DataStorageError, if there is no transaction with given initial state id.
44
+ * @param state_id initial state of transaction.
45
+ */
46
+ get_state_change(state_id: string): string;
47
+ set_state_change(previous_state_id: string, stateChange: string): void;
48
+ /**
49
+ * Returns 0 based index of the state in chain of all states available for given packet.
50
+ * Throws a DataStorageError, if there is no state with given id.
51
+ * @param packet_id id of the packet
52
+ * @param state_id id of the state
53
+ */
54
+ get_state(packet_id: string, state_id: string): number;
55
+ set_state(packet_id: string, state_id: string): void;
56
+ }
57
+ export declare class DataStorageError extends Error {
58
+ name: string;
59
+ exit_code: number;
60
+ type?: "NO_FILE";
61
+ constructor(message: string, exit_code?: number, type?: "NO_FILE");
62
+ }
63
+ export declare class DataStorage {
64
+ data_storage_base: IDataStorageBase;
65
+ constructor(data_storage_base: IDataStorageBase);
66
+ start(): void;
67
+ create_new_packet(packet_id: string, state_id: string): void;
68
+ write_snapshot(packet_id: string, state_id: string, data: Uint8Array): void;
69
+ write_transaction(packet_id: string, previous_state_id: string, new_state_id: string, trn: Uint8Array): void;
70
+ read_snapshot(state_id: string): Uint8Array;
71
+ get_last_state_id(packet_id: string): string;
72
+ get_last_snapshot_state_id(state_id: string): string;
73
+ get_transactions_chain(initial_state: string, final_state: string): Uint8Array[];
74
+ read_code_object(hash: string): Buffer;
75
+ }
76
+ declare namespace DataStorageAdapter {
77
+ type EventKind = 'incoming_message' | 'outgoing_message';
78
+ type DataStorageAdapterEventType = {
79
+ kind: EventKind;
80
+ connection_id: number;
81
+ data: AdaptValue;
82
+ };
83
+ }
84
+ /**
85
+ * Manages protocol messages sent to the data storage via web socket
86
+ *
87
+ */
88
+ export declare class DataStorageAdapter extends HttpServer {
89
+ #private;
90
+ queue: AsyncQueueAdapter<DataStorageAdapter.DataStorageAdapterEventType>;
91
+ send_to_adapt_wrapper?: ((_: AdaptValue) => {});
92
+ constructor(storage: DataStorage, server_host: string, server_port: number, logger_config: LoggerConfigurator);
93
+ start(): void;
94
+ connection_closed(connection_id: number): void;
95
+ }
96
+ export {};
97
+ //# sourceMappingURL=data_storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data_storage.d.ts","sourceRoot":"","sources":["../../../src/utilities/storage/data_storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,440 @@
1
+ import { AsyncQueueAdapter, HttpServer, AdaptProtocolWSConnection, AdaptNetworkError, AdaptNetworkErrorType, logging, LazyMessage } from '../common/index.js';
2
+ import * as addon_wrapper from '../../wrapper/index.js';
3
+ import { AdaptObjectBuilder } from '../../wrapper/index.js';
4
+ /*
5
+
6
+ */
7
+ export class AdaptStateChange {
8
+ transaction;
9
+ final_state_id;
10
+ constructor(transaction, final_state_id) {
11
+ this.transaction = transaction;
12
+ this.final_state_id = final_state_id;
13
+ }
14
+ Serialize() {
15
+ return JSON.stringify(this);
16
+ }
17
+ static Deserialize(s) {
18
+ return Object.assign(new AdaptStateChange(new Uint8Array(), ""), JSON.parse(s));
19
+ }
20
+ }
21
+ export class DataStorageError extends Error {
22
+ name = "Data storage error";
23
+ exit_code;
24
+ type;
25
+ constructor(message, exit_code = 1, type) {
26
+ super(message);
27
+ this.exit_code = exit_code;
28
+ this.type = type;
29
+ }
30
+ }
31
+ /*
32
+ DataStorage API. This class doesn't know anything about web socket connection with wrapper, it just manages requests to storage. All the network logic is in DataStorageAdapter class
33
+
34
+ API throws Errors!!! Should be handled outside of the class
35
+ */
36
+ export class DataStorage {
37
+ data_storage_base;
38
+ constructor(data_storage_base) {
39
+ this.data_storage_base = data_storage_base;
40
+ }
41
+ start() {
42
+ this.data_storage_base.init();
43
+ }
44
+ create_new_packet(packet_id, state_id) {
45
+ this.data_storage_base.set_last_state_id(packet_id, state_id);
46
+ this.data_storage_base.set_state(packet_id, state_id);
47
+ }
48
+ write_snapshot(packet_id, state_id, data) {
49
+ // update last state and last snapshot state of the packet, save snapshot
50
+ let last_snapshot_state_id;
51
+ try {
52
+ last_snapshot_state_id = this.data_storage_base.get_last_snapshot_state_id(packet_id);
53
+ }
54
+ catch (e) { }
55
+ // first chech if state is valid
56
+ let state_idx;
57
+ try {
58
+ state_idx = this.data_storage_base.get_state(packet_id, state_id);
59
+ }
60
+ catch (e) { }
61
+ // if last_snapshot_state_id is undefined, than there is no previous snapshots, new snapshot could be created.
62
+ if (last_snapshot_state_id && state_idx) {
63
+ let last_snapshot_state_id_idx = this.data_storage_base.get_state(packet_id, last_snapshot_state_id);
64
+ if (last_snapshot_state_id_idx >= state_idx) { // if last snapshot is newer than current
65
+ throw new Error(`There is newer snapshot '${last_snapshot_state_id}' for packet '${packet_id}' available.`);
66
+ }
67
+ }
68
+ this.data_storage_base.set_last_snapshot_state_id(state_id, state_id);
69
+ this.data_storage_base.set_packet(state_id, data);
70
+ }
71
+ write_transaction(packet_id, previous_state_id, new_state_id, trn) {
72
+ let idx = 0;
73
+ const last_state_id = this.get_last_state_id(packet_id);
74
+ if (!last_state_id || previous_state_id !== last_state_id) {
75
+ throw new Error("Last state stored in the data storage is invalid. Expected state: " + last_state_id + ", actual state: " + previous_state_id);
76
+ }
77
+ // should fail if there is snapshot does not exist for given packet id
78
+ const snapshot_id = this.get_last_snapshot_state_id(previous_state_id);
79
+ if (!snapshot_id) {
80
+ throw new Error("Failed to write transaction. There is no available snapshot for given packet.");
81
+ }
82
+ let stateChange = new AdaptStateChange(trn, new_state_id);
83
+ // write the transaction
84
+ this.data_storage_base.set_last_snapshot_state_id(new_state_id, snapshot_id); // set the snapshot id for the new state
85
+ this.data_storage_base.set_last_state_id(packet_id, new_state_id); // update last state id for this container
86
+ this.data_storage_base.set_state_change(previous_state_id, stateChange.Serialize()); // add the transaction to transaction log
87
+ this.data_storage_base.set_state(packet_id, new_state_id); // add new state to state log
88
+ }
89
+ read_snapshot(state_id) {
90
+ return this.data_storage_base.get_packet(state_id);
91
+ }
92
+ get_last_state_id(packet_id) {
93
+ return this.data_storage_base.get_last_state_id(packet_id);
94
+ }
95
+ get_last_snapshot_state_id(state_id) {
96
+ return this.data_storage_base.get_last_snapshot_state_id(state_id);
97
+ }
98
+ get_transactions_chain(initial_state, final_state) {
99
+ if (initial_state === final_state)
100
+ return [];
101
+ let transactions = [];
102
+ let state_change = AdaptStateChange.Deserialize(this.data_storage_base.get_state_change(initial_state));
103
+ while (state_change.final_state_id !== final_state) {
104
+ transactions.push(state_change.transaction);
105
+ state_change = AdaptStateChange.Deserialize(this.data_storage_base.get_state_change(state_change.final_state_id));
106
+ }
107
+ transactions.push(state_change.transaction);
108
+ return transactions;
109
+ }
110
+ read_code_object(hash) {
111
+ return Buffer.from(this.data_storage_base.get_code_object(hash));
112
+ }
113
+ }
114
+ class Connection extends AdaptProtocolWSConnection {
115
+ connection_id;
116
+ data_storage_adapter;
117
+ static last_connection_id = 0;
118
+ constructor(data_storage_adapter, socket) {
119
+ super(socket);
120
+ this.data_storage_adapter = data_storage_adapter;
121
+ this.connection_id = Connection.last_connection_id++;
122
+ this.on('message', this.on_message_impl.bind(this));
123
+ this.on('close', this.on_close_impl.bind(this));
124
+ }
125
+ on_message_impl(data) {
126
+ logging.message_received('storage_client', 'data_storage', data);
127
+ this.data_storage_adapter.queue.push({
128
+ kind: 'incoming_message',
129
+ connection_id: this.connection_id,
130
+ data: data
131
+ });
132
+ }
133
+ on_close_impl(code, reason) {
134
+ logging.info("Socket connections closed with code:", code);
135
+ this.data_storage_adapter.connection_closed(this.connection_id);
136
+ }
137
+ send(data) {
138
+ logging.message_sent('data_storage', 'storage_client', data);
139
+ super.send(data);
140
+ }
141
+ }
142
+ /**
143
+ * Manages protocol messages sent to the data storage via web socket
144
+ *
145
+ */
146
+ export class DataStorageAdapter extends HttpServer {
147
+ #protocol_container;
148
+ queue;
149
+ #data_storage;
150
+ #connections = {};
151
+ #worker_functions;
152
+ send_to_adapt_wrapper; // callback to send data back to adapt wrapper
153
+ constructor(storage, server_host, server_port, logger_config) {
154
+ super(server_host, server_port);
155
+ this.#data_storage = storage;
156
+ this.queue = new AsyncQueueAdapter(this.#worker.bind(this));
157
+ this.#protocol_container = addon_wrapper.Protocol.GetProtocolContainer();
158
+ this.#worker_functions = new Map([
159
+ [addon_wrapper.Protocol.MessageName.w2d_create_packet, this.#w2d_create_packet_v1_handler.bind(this)],
160
+ [addon_wrapper.Protocol.MessageName.w2d_get_code_object, this.#w2d_get_code_object_v1_handler.bind(this)],
161
+ [addon_wrapper.Protocol.MessageName.w2d_get_last_snapshot_state, this.#w2d_get_last_snapshot_state_v1_handler.bind(this)],
162
+ [addon_wrapper.Protocol.MessageName.w2d_get_last_state, this.#w2d_get_last_state_v1_handler.bind(this)],
163
+ [addon_wrapper.Protocol.MessageName.w2d_get_transaction_chain, this.#w2d_get_transaction_chain_v1_handler.bind(this)],
164
+ [addon_wrapper.Protocol.MessageName.w2d_read_snapshot, this.#w2d_read_snapshot_v1_handler.bind(this)],
165
+ [addon_wrapper.Protocol.MessageName.w2d_write_snapshot, this.#w2d_write_snapshot_v1_handler.bind(this)],
166
+ [addon_wrapper.Protocol.MessageName.w2d_write_transaction, this.#w2d_write_transaction_v1_handler.bind(this)],
167
+ [addon_wrapper.Protocol.MessageName.w2d_request_backup_data, this.#w2d_request_backup_data_v1_handler.bind(this)]
168
+ ]);
169
+ }
170
+ start() {
171
+ this.listen(() => {
172
+ logging.info(`Server started on port ${this.server.address().port} :)`);
173
+ });
174
+ this.add_event_listener('connection', (socket) => {
175
+ logging.info("New connection to data storage");
176
+ const connection = new Connection(this, socket);
177
+ this.#connections[connection.connection_id] = connection;
178
+ const message = addon_wrapper.Protocol.CreateProtocolMessage(addon_wrapper.Protocol.MessageName.d2w_init).Detach();
179
+ this.queue.push({
180
+ kind: 'outgoing_message',
181
+ connection_id: connection.connection_id,
182
+ data: message
183
+ });
184
+ });
185
+ }
186
+ connection_closed(connection_id) {
187
+ if (connection_id in this.#connections) {
188
+ delete this.#connections[connection_id];
189
+ }
190
+ else {
191
+ logging.warning("Task 'socket_close' with connection_id ", connection_id, " that is not known to us, ignoring");
192
+ }
193
+ }
194
+ // =================================== worker and related methods ==============================================
195
+ #worker(task, cb) {
196
+ switch (task.kind) {
197
+ case 'outgoing_message': {
198
+ const connection_id = task.connection_id;
199
+ if (connection_id in this.#connections) {
200
+ this.#connections[connection_id].send(task.data);
201
+ }
202
+ else {
203
+ logging.error("Invalid connection_id", connection_id, "in queue outgoing message task");
204
+ }
205
+ break;
206
+ }
207
+ case 'incoming_message': {
208
+ try {
209
+ this.#incoming_message_handler(task);
210
+ }
211
+ catch (e) {
212
+ const message = e instanceof Error ? e.message : e;
213
+ logging.error("Error while processing incoming message:", message);
214
+ }
215
+ break;
216
+ }
217
+ }
218
+ cb();
219
+ }
220
+ #incoming_message_handler(task) {
221
+ const connection_id = task.connection_id;
222
+ const message_type_id = addon_wrapper.Protocol.GetTypeId(task.data);
223
+ if (connection_id in this.#connections) {
224
+ const func = this.#worker_functions.get(message_type_id);
225
+ if (!func)
226
+ throw new Error("Unrecognized message type id:" + message_type_id.toString());
227
+ func(task);
228
+ }
229
+ else
230
+ throw new AdaptNetworkError(AdaptNetworkErrorType.INTERNAL_ERROR, `Invalid connection id ${connection_id}`);
231
+ }
232
+ #w2d_create_packet_v1_handler(task) {
233
+ const builder = new addon_wrapper.AdaptObjectBuilder();
234
+ try {
235
+ const message = builder.Attach(task.data);
236
+ const body = builder.Attach(addon_wrapper.Protocol.GetBody(message));
237
+ const from = builder.Attach(addon_wrapper.Protocol.GetFrom(message));
238
+ const packet_info = body.Reduce(addon_wrapper.Protocol.FieldName.packet_info);
239
+ const packet_id = packet_info.Reduce(addon_wrapper.Protocol.FieldName.packet_id);
240
+ const state_id = packet_info.Reduce(addon_wrapper.Protocol.FieldName.state);
241
+ this.#data_storage.create_new_packet(packet_id.Visualize(), state_id.Visualize().substring(2));
242
+ const message_to_send = addon_wrapper.Protocol.CreateProtocolMessage(addon_wrapper.Protocol.MessageName.d2w_create_packet_confirm, { message_hash: message.GetHash(), to: from }).Detach();
243
+ this.queue.push({
244
+ kind: "outgoing_message",
245
+ data: message_to_send,
246
+ connection_id: task.connection_id
247
+ });
248
+ }
249
+ finally {
250
+ builder.Destroy();
251
+ }
252
+ }
253
+ #w2d_get_code_object_v1_handler(task) {
254
+ const builder = new addon_wrapper.AdaptObjectBuilder();
255
+ try {
256
+ const message = builder.Attach(task.data);
257
+ const body = builder.Attach(addon_wrapper.Protocol.GetBody(message));
258
+ const from = builder.Attach(addon_wrapper.Protocol.GetFrom(message));
259
+ const code_object_hash = body.Reduce(addon_wrapper.Protocol.FieldName.code_object_hash);
260
+ const res = this.#data_storage.read_code_object(code_object_hash.Visualize().substring(2));
261
+ const code_object = builder.Attach(this.#protocol_container.CreateDictionary().Mutate(addon_wrapper.Protocol.FieldName.code_object_hash, code_object_hash).Mutate(addon_wrapper.Protocol.FieldName.code_object_data, addon_wrapper.Protocol.GetProtocolContainer().NewBinaryFromHex(res.toString('hex'))));
262
+ const args = builder.Attach(this.#protocol_container.CreateDictionary().Mutate(addon_wrapper.Protocol.FieldName.code_object, code_object));
263
+ const message_to_send = addon_wrapper.Protocol.CreateProtocolMessage(addon_wrapper.Protocol.MessageName.d2w_code_object, { message_hash: message.GetHash(), to: from, body: args }).Detach();
264
+ this.queue.push({
265
+ kind: "outgoing_message",
266
+ data: message_to_send,
267
+ connection_id: task.connection_id
268
+ });
269
+ }
270
+ finally {
271
+ builder.Destroy();
272
+ }
273
+ }
274
+ #w2d_get_last_snapshot_state_v1_handler(task) {
275
+ const builder = new addon_wrapper.AdaptObjectBuilder();
276
+ try {
277
+ const message = builder.Attach(task.data);
278
+ const body = builder.Attach(addon_wrapper.Protocol.GetBody(message));
279
+ const from = builder.Attach(addon_wrapper.Protocol.GetFrom(message));
280
+ const cid = body.Reduce(addon_wrapper.Protocol.FieldName.packet_id);
281
+ const res = this.#data_storage.get_last_snapshot_state_id(cid.Visualize());
282
+ const packet_info = builder.Attach(this.#protocol_container.CreateDictionary().Mutate(addon_wrapper.Protocol.FieldName.packet_id, cid).Mutate(addon_wrapper.Protocol.FieldName.state, res));
283
+ const args = builder.Attach(this.#protocol_container.CreateDictionary().Mutate(addon_wrapper.Protocol.FieldName.packet_info, packet_info));
284
+ const message_to_send = addon_wrapper.Protocol.CreateProtocolMessage(addon_wrapper.Protocol.MessageName.d2w_last_snapshot_state, { message_hash: message.GetHash(), to: from, body: args }).Detach();
285
+ this.queue.push({
286
+ kind: "outgoing_message",
287
+ data: message_to_send,
288
+ connection_id: task.connection_id
289
+ });
290
+ }
291
+ finally {
292
+ builder.Destroy();
293
+ }
294
+ }
295
+ #w2d_get_last_state_v1_handler(task) {
296
+ const builder = new addon_wrapper.AdaptObjectBuilder();
297
+ try {
298
+ const message = builder.Attach(task.data);
299
+ const body = builder.Attach(addon_wrapper.Protocol.GetBody(message));
300
+ const from = builder.Attach(addon_wrapper.Protocol.GetFrom(message));
301
+ const cid = body.Reduce(addon_wrapper.Protocol.FieldName.packet_id);
302
+ const res = this.#data_storage.get_last_state_id(cid.Visualize());
303
+ const packet_info = builder.Attach(this.#protocol_container.CreateDictionary().Mutate(addon_wrapper.Protocol.FieldName.packet_id, cid).Mutate(addon_wrapper.Protocol.FieldName.state, res));
304
+ const args = builder.Attach(this.#protocol_container.CreateDictionary().Mutate(addon_wrapper.Protocol.FieldName.packet_info, packet_info));
305
+ const message_to_send = addon_wrapper.Protocol.CreateProtocolMessage(addon_wrapper.Protocol.MessageName.d2w_last_snapshot_state, { message_hash: message.GetHash(), to: from, body: args }).Detach();
306
+ this.queue.push({
307
+ kind: "outgoing_message",
308
+ data: message_to_send,
309
+ connection_id: task.connection_id
310
+ });
311
+ }
312
+ finally {
313
+ builder.Destroy();
314
+ }
315
+ }
316
+ #w2d_get_transaction_chain_v1_handler(task) {
317
+ const builder = new addon_wrapper.AdaptObjectBuilder();
318
+ try {
319
+ const message = builder.Attach(task.data);
320
+ const body = builder.Attach(addon_wrapper.Protocol.GetBody(message));
321
+ const init_state = body.Reduce(addon_wrapper.Protocol.FieldName.init_state);
322
+ const final_state = body.Reduce(addon_wrapper.Protocol.FieldName.final_state_id);
323
+ const res = this.#data_storage.get_transactions_chain(init_state.Visualize().substring(2), final_state.Visualize().substring(2));
324
+ let trns = this.#protocol_container.CreateDictionary();
325
+ // TODO
326
+ }
327
+ finally {
328
+ builder.Destroy();
329
+ }
330
+ }
331
+ #w2d_read_snapshot_v1_handler(task) {
332
+ const builder = new addon_wrapper.AdaptObjectBuilder();
333
+ try {
334
+ const message = builder.Attach(task.data);
335
+ const body = builder.Attach(addon_wrapper.Protocol.GetBody(message));
336
+ const from = builder.Attach(addon_wrapper.Protocol.GetFrom(message));
337
+ const state = body.Reduce(addon_wrapper.Protocol.FieldName.state);
338
+ const res = this.#data_storage.read_snapshot(state.Visualize().substring(2));
339
+ const args = builder.Attach(this.#protocol_container.CreateDictionary().Mutate(addon_wrapper.Protocol.FieldName.packet_data, this.#protocol_container.ParseValue(Buffer.from(res))));
340
+ const message_to_send = addon_wrapper.Protocol.CreateProtocolMessage(addon_wrapper.Protocol.MessageName.d2w_snapshot, { message_hash: message.GetHash(), to: from, body: args }).Detach();
341
+ this.queue.push({
342
+ kind: "outgoing_message",
343
+ data: message_to_send,
344
+ connection_id: task.connection_id
345
+ });
346
+ }
347
+ finally {
348
+ builder.Destroy();
349
+ }
350
+ }
351
+ #w2d_write_snapshot_v1_handler(task) {
352
+ logging.debug("Write snapshot v1 handler");
353
+ const builder = new addon_wrapper.AdaptObjectBuilder();
354
+ try {
355
+ const message = builder.Attach(task.data);
356
+ const body = builder.Attach(addon_wrapper.Protocol.GetBody(message));
357
+ const from = builder.Attach(addon_wrapper.Protocol.GetFrom(message));
358
+ const packet = body.Reduce(addon_wrapper.Protocol.FieldName.packet);
359
+ const packet_data = packet.Reduce(addon_wrapper.Protocol.FieldName.packet_data);
360
+ const packet_info = packet.Reduce(addon_wrapper.Protocol.FieldName.packet_info);
361
+ const cid = packet_info.Reduce(addon_wrapper.Protocol.FieldName.packet_id);
362
+ const state = packet_info.Reduce(addon_wrapper.Protocol.FieldName.state);
363
+ this.#data_storage.write_snapshot(cid.Visualize(), state.Visualize().substring(2), packet_data.GetBinary());
364
+ const message_to_send = addon_wrapper.Protocol.CreateProtocolMessage(addon_wrapper.Protocol.MessageName.d2w_write_snapshot_confirm, { message_hash: message.GetHash(), to: from }).Detach();
365
+ this.queue.push({
366
+ kind: "outgoing_message",
367
+ data: message_to_send,
368
+ connection_id: task.connection_id
369
+ });
370
+ }
371
+ catch (e) {
372
+ logging.error(e instanceof Error ? e.message : e, "while writing snapshot to the data storage");
373
+ }
374
+ finally {
375
+ builder.Destroy();
376
+ }
377
+ }
378
+ #w2d_write_transaction_v1_handler(task) {
379
+ const builder = new addon_wrapper.AdaptObjectBuilder();
380
+ try {
381
+ const message = builder.Attach(task.data);
382
+ const body = builder.Attach(addon_wrapper.Protocol.GetBody(message));
383
+ const from = builder.Attach(addon_wrapper.Protocol.GetFrom(message));
384
+ const packet_info = body.Reduce(addon_wrapper.Protocol.FieldName.packet_info);
385
+ const state_change = body.Reduce(addon_wrapper.Protocol.FieldName.state_change);
386
+ const final_state_id = state_change.Reduce(addon_wrapper.Protocol.FieldName.final_state_id);
387
+ const trn = state_change.Reduce(addon_wrapper.Protocol.FieldName.transaction).Serialize();
388
+ const cid = packet_info.Reduce(addon_wrapper.Protocol.FieldName.packet_id);
389
+ const state = packet_info.Reduce(addon_wrapper.Protocol.FieldName.state);
390
+ this.#data_storage.write_transaction(cid.Visualize(), state.Visualize().substring(2), final_state_id.Visualize().substring(2), trn);
391
+ const message_to_send = addon_wrapper.Protocol.CreateProtocolMessage(addon_wrapper.Protocol.MessageName.d2w_write_transaction_confirm, { message_hash: message.GetHash(), to: from }).Detach();
392
+ this.queue.push({
393
+ kind: "outgoing_message",
394
+ data: message_to_send,
395
+ connection_id: task.connection_id
396
+ });
397
+ }
398
+ finally {
399
+ builder.Destroy();
400
+ }
401
+ }
402
+ #w2d_request_backup_data_v1_handler(task) {
403
+ AdaptObjectBuilder.execute_and_collect_garbage(builder => {
404
+ const message = builder.Attach(task.data);
405
+ let message_to_send_body;
406
+ try {
407
+ const body = builder.Attach(addon_wrapper.Protocol.GetBody(message));
408
+ const state_mufl = body.Reduce(addon_wrapper.Protocol.FieldName.state);
409
+ const cid = body.Reduce(addon_wrapper.Protocol.FieldName.packet_id);
410
+ const state = state_mufl.IsNil() ? this.#data_storage.get_last_state_id(cid.Visualize()) : state_mufl.Visualize().substring(2);
411
+ logging.debug("Attempting to solve request data request: ", new LazyMessage(() => { cid: cid.Visualize(), state; }));
412
+ const last_snapshot_state_id = this.#data_storage.get_last_snapshot_state_id(state);
413
+ logging.debug("Found id of the last snapshot state: ", last_snapshot_state_id);
414
+ const snapshot = this.#data_storage.read_snapshot(last_snapshot_state_id);
415
+ const transaction_chain = this.#data_storage.get_transactions_chain(last_snapshot_state_id, state); // array of encoded transactions
416
+ logging.debug("Found transaction chain leading from the last snapshot state to the current state. Number of transactions is ", transaction_chain.length);
417
+ const transaction_chain_mufl = transaction_chain.reduce((adapt_value, cur, idx) => { return adapt_value.Mutate(idx, builder.Attach(this.#protocol_container.ParseValue(Buffer.from(cur)))); }, builder.Attach(this.#protocol_container.CreateDictionary()));
418
+ logging.debug("Transaction chain MUFL: ", new LazyMessage(() => transaction_chain_mufl.Visualize()));
419
+ message_to_send_body = addon_wrapper.Protocol.GetProtocolContainer().CreateDictionary().
420
+ Mutate(addon_wrapper.Protocol.FieldName.packet_data, builder.Attach(addon_wrapper.Protocol.GetProtocolContainer().NewBinaryFromBuffer(Buffer.from(snapshot)))).
421
+ Mutate(addon_wrapper.Protocol.FieldName.transaction_chain, transaction_chain_mufl).Detach();
422
+ }
423
+ catch (_) {
424
+ message_to_send_body = addon_wrapper.Protocol.GetProtocolContainer().CreateDictionary().
425
+ Mutate(addon_wrapper.Protocol.FieldName.packet_data, builder.Attach(addon_wrapper.Protocol.GetProtocolContainer().NewBinaryFromBuffer(Buffer.from("")))).
426
+ Mutate(addon_wrapper.Protocol.FieldName.transaction_chain, addon_wrapper.Protocol.GetProtocolContainer().CreateDictionary()).Detach();
427
+ }
428
+ const message_to_send = addon_wrapper.Protocol.CreateProtocolMessage(addon_wrapper.Protocol.MessageName.d2w_backup_data, {
429
+ message_hash: message.GetHash(),
430
+ body: message_to_send_body
431
+ });
432
+ this.queue.push({
433
+ kind: 'outgoing_message',
434
+ data: message_to_send,
435
+ connection_id: task.connection_id
436
+ });
437
+ });
438
+ }
439
+ }
440
+ //# sourceMappingURL=data_storage.js.map