@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.
- package/dist/common/index.d.ts +7 -0
- package/dist/common/index.d.ts.map +1 -0
- package/dist/common/index.js +7 -0
- package/dist/common/index.js.map +1 -0
- package/dist/common/interfaces/adapt_environment.d.ts +21 -0
- package/dist/common/interfaces/adapt_environment.d.ts.map +1 -0
- package/dist/common/interfaces/adapt_environment.js +2 -0
- package/dist/common/interfaces/adapt_environment.js.map +1 -0
- package/dist/common/interfaces/adapt_evaluation_unit.d.ts +12 -0
- package/dist/common/interfaces/adapt_evaluation_unit.d.ts.map +1 -0
- package/dist/common/interfaces/adapt_evaluation_unit.js +2 -0
- package/dist/common/interfaces/adapt_evaluation_unit.js.map +1 -0
- package/dist/common/interfaces/adapt_packet_context.d.ts +29 -0
- package/dist/common/interfaces/adapt_packet_context.d.ts.map +1 -0
- package/dist/common/interfaces/adapt_packet_context.js +2 -0
- package/dist/common/interfaces/adapt_packet_context.js.map +1 -0
- package/dist/common/interfaces/adapt_value.d.ts +23 -0
- package/dist/common/interfaces/adapt_value.d.ts.map +1 -0
- package/dist/common/interfaces/adapt_value.js +2 -0
- package/dist/common/interfaces/adapt_value.js.map +1 -0
- package/dist/common/interfaces/common.d.ts +18 -0
- package/dist/common/interfaces/common.d.ts.map +1 -0
- package/dist/common/interfaces/common.js +4 -0
- package/dist/common/interfaces/common.js.map +1 -0
- package/dist/common/memory_management/adapt_object_lifetime.d.ts +114 -0
- package/dist/common/memory_management/adapt_object_lifetime.d.ts.map +1 -0
- package/dist/common/memory_management/adapt_object_lifetime.js +159 -0
- package/dist/common/memory_management/adapt_object_lifetime.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/loaders/browser.d.ts +5 -0
- package/dist/loaders/browser.d.ts.map +1 -0
- package/dist/loaders/browser.js +6 -0
- package/dist/loaders/browser.js.map +1 -0
- package/dist/loaders/node.d.ts +13 -0
- package/dist/loaders/node.d.ts.map +1 -0
- package/dist/loaders/node.js +29 -0
- package/dist/loaders/node.js.map +1 -0
- package/dist/loaders/react-native.d.ts +11 -0
- package/dist/loaders/react-native.d.ts.map +1 -0
- package/dist/loaders/react-native.js +19 -0
- package/dist/loaders/react-native.js.map +1 -0
- package/dist/loaders/shared.d.ts +17 -0
- package/dist/loaders/shared.d.ts.map +1 -0
- package/dist/loaders/shared.js +2 -0
- package/dist/loaders/shared.js.map +1 -0
- package/dist/utilities/broker/broker.d.ts +21 -0
- package/dist/utilities/broker/broker.d.ts.map +1 -0
- package/dist/utilities/broker/broker.js +267 -0
- package/dist/utilities/broker/broker.js.map +1 -0
- package/dist/utilities/broker/broker_client.d.ts +40 -0
- package/dist/utilities/broker/broker_client.d.ts.map +1 -0
- package/dist/utilities/broker/broker_client.js +111 -0
- package/dist/utilities/broker/broker_client.js.map +1 -0
- package/dist/utilities/broker/broker_configurator.d.ts +6 -0
- package/dist/utilities/broker/broker_configurator.d.ts.map +1 -0
- package/dist/utilities/broker/broker_configurator.js +8 -0
- package/dist/utilities/broker/broker_configurator.js.map +1 -0
- package/dist/utilities/broker/index.d.ts +4 -0
- package/dist/utilities/broker/index.d.ts.map +1 -0
- package/dist/utilities/broker/index.js +4 -0
- package/dist/utilities/broker/index.js.map +1 -0
- package/dist/utilities/common/adapt_waitlist.d.ts +5 -0
- package/dist/utilities/common/adapt_waitlist.d.ts.map +1 -0
- package/dist/utilities/common/adapt_waitlist.js +4 -0
- package/dist/utilities/common/adapt_waitlist.js.map +1 -0
- package/dist/utilities/common/async_queue_adapter.d.ts +40 -0
- package/dist/utilities/common/async_queue_adapter.d.ts.map +1 -0
- package/dist/utilities/common/async_queue_adapter.js +88 -0
- package/dist/utilities/common/async_queue_adapter.js.map +1 -0
- package/dist/utilities/common/command_line_configurator.d.ts +88 -0
- package/dist/utilities/common/command_line_configurator.d.ts.map +1 -0
- package/dist/utilities/common/command_line_configurator.js +217 -0
- package/dist/utilities/common/command_line_configurator.js.map +1 -0
- package/dist/utilities/common/decorators.d.ts +17 -0
- package/dist/utilities/common/decorators.d.ts.map +1 -0
- package/dist/utilities/common/decorators.js +84 -0
- package/dist/utilities/common/decorators.js.map +1 -0
- package/dist/utilities/common/errors/adapt_initialization_error.d.ts +4 -0
- package/dist/utilities/common/errors/adapt_initialization_error.d.ts.map +1 -0
- package/dist/utilities/common/errors/adapt_initialization_error.js +6 -0
- package/dist/utilities/common/errors/adapt_initialization_error.js.map +1 -0
- package/dist/utilities/common/errors/adapt_network_error.d.ts +8 -0
- package/dist/utilities/common/errors/adapt_network_error.d.ts.map +1 -0
- package/dist/utilities/common/errors/adapt_network_error.js +12 -0
- package/dist/utilities/common/errors/adapt_network_error.js.map +1 -0
- package/dist/utilities/common/errors/adapt_protocol_error.d.ts +12 -0
- package/dist/utilities/common/errors/adapt_protocol_error.d.ts.map +1 -0
- package/dist/utilities/common/errors/adapt_protocol_error.js +16 -0
- package/dist/utilities/common/errors/adapt_protocol_error.js.map +1 -0
- package/dist/utilities/common/errors/adapt_test_mode_error.d.ts +11 -0
- package/dist/utilities/common/errors/adapt_test_mode_error.d.ts.map +1 -0
- package/dist/utilities/common/errors/adapt_test_mode_error.js +22 -0
- package/dist/utilities/common/errors/adapt_test_mode_error.js.map +1 -0
- package/dist/utilities/common/http_server.d.ts +18 -0
- package/dist/utilities/common/http_server.d.ts.map +1 -0
- package/dist/utilities/common/http_server.js +41 -0
- package/dist/utilities/common/http_server.js.map +1 -0
- package/dist/utilities/common/index.d.ts +25 -0
- package/dist/utilities/common/index.d.ts.map +1 -0
- package/dist/utilities/common/index.js +36 -0
- package/dist/utilities/common/index.js.map +1 -0
- package/dist/utilities/common/logger/logger.d.ts +83 -0
- package/dist/utilities/common/logger/logger.d.ts.map +1 -0
- package/dist/utilities/common/logger/logger.js +272 -0
- package/dist/utilities/common/logger/logger.js.map +1 -0
- package/dist/utilities/common/logger/logging_level.d.ts +13 -0
- package/dist/utilities/common/logger/logging_level.d.ts.map +1 -0
- package/dist/utilities/common/logger/logging_level.js +36 -0
- package/dist/utilities/common/logger/logging_level.js.map +1 -0
- package/dist/utilities/common/logger/message.d.ts +65 -0
- package/dist/utilities/common/logger/message.d.ts.map +1 -0
- package/dist/utilities/common/logger/message.js +169 -0
- package/dist/utilities/common/logger/message.js.map +1 -0
- package/dist/utilities/common/logger/network_component.d.ts +3 -0
- package/dist/utilities/common/logger/network_component.d.ts.map +1 -0
- package/dist/utilities/common/logger/network_component.js +4 -0
- package/dist/utilities/common/logger/network_component.js.map +1 -0
- package/dist/utilities/common/totp_qr_code_generator.d.ts +12 -0
- package/dist/utilities/common/totp_qr_code_generator.d.ts.map +1 -0
- package/dist/utilities/common/totp_qr_code_generator.js +19 -0
- package/dist/utilities/common/totp_qr_code_generator.js.map +1 -0
- package/dist/utilities/common/waitlist/waitlist.d.ts +36 -0
- package/dist/utilities/common/waitlist/waitlist.d.ts.map +1 -0
- package/dist/utilities/common/waitlist/waitlist.js +116 -0
- package/dist/utilities/common/waitlist/waitlist.js.map +1 -0
- package/dist/utilities/common/web_socket_client.d.ts +50 -0
- package/dist/utilities/common/web_socket_client.d.ts.map +1 -0
- package/dist/utilities/common/web_socket_client.js +80 -0
- package/dist/utilities/common/web_socket_client.js.map +1 -0
- package/dist/utilities/common/web_socket_connection.d.ts +29 -0
- package/dist/utilities/common/web_socket_connection.d.ts.map +1 -0
- package/dist/utilities/common/web_socket_connection.js +94 -0
- package/dist/utilities/common/web_socket_connection.js.map +1 -0
- package/dist/utilities/evaluator/common.d.ts +10 -0
- package/dist/utilities/evaluator/common.d.ts.map +1 -0
- package/dist/utilities/evaluator/common.js +128 -0
- package/dist/utilities/evaluator/common.js.map +1 -0
- package/dist/utilities/evaluator/evaluator.d.ts +35 -0
- package/dist/utilities/evaluator/evaluator.d.ts.map +1 -0
- package/dist/utilities/evaluator/evaluator.js +141 -0
- package/dist/utilities/evaluator/evaluator.js.map +1 -0
- package/dist/utilities/evaluator/index.d.ts +3 -0
- package/dist/utilities/evaluator/index.d.ts.map +1 -0
- package/dist/utilities/evaluator/index.js +3 -0
- package/dist/utilities/evaluator/index.js.map +1 -0
- package/dist/utilities/executables/adapt_wrapper.d.ts +3 -0
- package/dist/utilities/executables/adapt_wrapper.d.ts.map +1 -0
- package/dist/utilities/executables/adapt_wrapper.js +25 -0
- package/dist/utilities/executables/adapt_wrapper.js.map +1 -0
- package/dist/utilities/executables/adapt_wrapper_mobile.d.ts +3 -0
- package/dist/utilities/executables/adapt_wrapper_mobile.d.ts.map +1 -0
- package/dist/utilities/executables/adapt_wrapper_mobile.js +20 -0
- package/dist/utilities/executables/adapt_wrapper_mobile.js.map +1 -0
- package/dist/utilities/executables/adapt_wrapper_script.d.ts +2 -0
- package/dist/utilities/executables/adapt_wrapper_script.d.ts.map +1 -0
- package/dist/utilities/executables/adapt_wrapper_script.js +6 -0
- package/dist/utilities/executables/adapt_wrapper_script.js.map +1 -0
- package/dist/utilities/executables/broker.d.ts +2 -0
- package/dist/utilities/executables/broker.d.ts.map +1 -0
- package/dist/utilities/executables/broker.js +23 -0
- package/dist/utilities/executables/broker.js.map +1 -0
- package/dist/utilities/executables/index.d.ts +2 -0
- package/dist/utilities/executables/index.d.ts.map +1 -0
- package/dist/utilities/executables/index.js +2 -0
- package/dist/utilities/executables/index.js.map +1 -0
- package/dist/utilities/executables/local_data_storage.d.ts +2 -0
- package/dist/utilities/executables/local_data_storage.d.ts.map +1 -0
- package/dist/utilities/executables/local_data_storage.js +20 -0
- package/dist/utilities/executables/local_data_storage.js.map +1 -0
- package/dist/utilities/executables/local_data_storage_cmd_helper.d.ts +2 -0
- package/dist/utilities/executables/local_data_storage_cmd_helper.d.ts.map +1 -0
- package/dist/utilities/executables/local_data_storage_cmd_helper.js +52 -0
- package/dist/utilities/executables/local_data_storage_cmd_helper.js.map +1 -0
- package/dist/utilities/storage/data_storage.d.ts +97 -0
- package/dist/utilities/storage/data_storage.d.ts.map +1 -0
- package/dist/utilities/storage/data_storage.js +440 -0
- package/dist/utilities/storage/data_storage.js.map +1 -0
- package/dist/utilities/storage/index.d.ts +6 -0
- package/dist/utilities/storage/index.d.ts.map +1 -0
- package/dist/utilities/storage/index.js +6 -0
- package/dist/utilities/storage/index.js.map +1 -0
- package/dist/utilities/storage/local_data_storage.d.ts +7 -0
- package/dist/utilities/storage/local_data_storage.d.ts.map +1 -0
- package/dist/utilities/storage/local_data_storage.js +18 -0
- package/dist/utilities/storage/local_data_storage.js.map +1 -0
- package/dist/utilities/storage/local_data_storage_base.d.ts +74 -0
- package/dist/utilities/storage/local_data_storage_base.d.ts.map +1 -0
- package/dist/utilities/storage/local_data_storage_base.js +163 -0
- package/dist/utilities/storage/local_data_storage_base.js.map +1 -0
- package/dist/utilities/storage/local_data_storage_configurator.d.ts +7 -0
- package/dist/utilities/storage/local_data_storage_configurator.d.ts.map +1 -0
- package/dist/utilities/storage/local_data_storage_configurator.js +13 -0
- package/dist/utilities/storage/local_data_storage_configurator.js.map +1 -0
- package/dist/utilities/storage/storage_client.d.ts +28 -0
- package/dist/utilities/storage/storage_client.d.ts.map +1 -0
- package/dist/utilities/storage/storage_client.js +79 -0
- package/dist/utilities/storage/storage_client.js.map +1 -0
- package/dist/utilities/wrappers/configurators/adapt_wrapper_configurator.d.ts +14 -0
- package/dist/utilities/wrappers/configurators/adapt_wrapper_configurator.d.ts.map +1 -0
- package/dist/utilities/wrappers/configurators/adapt_wrapper_configurator.js +57 -0
- package/dist/utilities/wrappers/configurators/adapt_wrapper_configurator.js.map +1 -0
- package/dist/utilities/wrappers/configurators/control_packet_configurator.d.ts +12 -0
- package/dist/utilities/wrappers/configurators/control_packet_configurator.d.ts.map +1 -0
- package/dist/utilities/wrappers/configurators/control_packet_configurator.js +52 -0
- package/dist/utilities/wrappers/configurators/control_packet_configurator.js.map +1 -0
- package/dist/utilities/wrappers/configurators/packet_wrapper_configurator.d.ts +32 -0
- package/dist/utilities/wrappers/configurators/packet_wrapper_configurator.d.ts.map +1 -0
- package/dist/utilities/wrappers/configurators/packet_wrapper_configurator.js +123 -0
- package/dist/utilities/wrappers/configurators/packet_wrapper_configurator.js.map +1 -0
- package/dist/utilities/wrappers/enclave/control_packet.d.ts +18 -0
- package/dist/utilities/wrappers/enclave/control_packet.d.ts.map +1 -0
- package/dist/utilities/wrappers/enclave/control_packet.js +213 -0
- package/dist/utilities/wrappers/enclave/control_packet.js.map +1 -0
- package/dist/utilities/wrappers/index.d.ts +5 -0
- package/dist/utilities/wrappers/index.d.ts.map +1 -0
- package/dist/utilities/wrappers/index.js +5 -0
- package/dist/utilities/wrappers/index.js.map +1 -0
- package/dist/utilities/wrappers/wrappers/adapt_packet_wrapper.d.ts +19 -0
- package/dist/utilities/wrappers/wrappers/adapt_packet_wrapper.d.ts.map +1 -0
- package/dist/utilities/wrappers/wrappers/adapt_packet_wrapper.js +55 -0
- package/dist/utilities/wrappers/wrappers/adapt_packet_wrapper.js.map +1 -0
- package/dist/utilities/wrappers/wrappers/adapt_wrapper.d.ts +131 -0
- package/dist/utilities/wrappers/wrappers/adapt_wrapper.d.ts.map +1 -0
- package/dist/utilities/wrappers/wrappers/adapt_wrapper.js +716 -0
- package/dist/utilities/wrappers/wrappers/adapt_wrapper.js.map +1 -0
- package/dist/utilities/wrappers/wrappers/impl/adapt_packet_wrapper_impl.d.ts +75 -0
- package/dist/utilities/wrappers/wrappers/impl/adapt_packet_wrapper_impl.d.ts.map +1 -0
- package/dist/utilities/wrappers/wrappers/impl/adapt_packet_wrapper_impl.js +550 -0
- package/dist/utilities/wrappers/wrappers/impl/adapt_packet_wrapper_impl.js.map +1 -0
- package/dist/wasm/adapt.d.ts +79 -0
- package/dist/wasm/adapt.d.ts.map +1 -0
- package/dist/wasm/adapt.js +430 -0
- package/dist/wasm/adapt.js.map +1 -0
- package/dist/wasm/backend-node.d.ts +1 -0
- package/dist/wasm/backend-node.d.ts.map +1 -0
- package/dist/wasm/backend-node.js +1 -0
- package/dist/wasm/backend-node.js.map +1 -0
- package/dist/wasm/index.d.ts +12 -0
- package/dist/wasm/index.d.ts.map +1 -0
- package/dist/wasm/index.js +15 -0
- package/dist/wasm/index.js.map +1 -0
- package/dist/wasm/mufl-bindings.d.ts +3 -0
- package/dist/wasm/mufl-bindings.d.ts.map +1 -0
- package/dist/wasm/mufl-bindings.js +3833 -0
- package/dist/wasm/mufl-bindings.js.map +1 -0
- package/dist/wasm/mufl-bindings.wasm +0 -0
- package/dist/wasm/wasm_types.d.ts +96 -0
- package/dist/wasm/wasm_types.d.ts.map +1 -0
- package/dist/wasm/wasm_types.js +2 -0
- package/dist/wasm/wasm_types.js.map +1 -0
- package/dist/wrapper/conversion.d.ts +9 -0
- package/dist/wrapper/conversion.d.ts.map +1 -0
- package/dist/wrapper/conversion.js +30 -0
- package/dist/wrapper/conversion.js.map +1 -0
- package/dist/wrapper/index.d.ts +11 -0
- package/dist/wrapper/index.d.ts.map +1 -0
- package/dist/wrapper/index.js +25 -0
- package/dist/wrapper/index.js.map +1 -0
- package/dist/wrapper/memory_management/adapt_builder.d.ts +36 -0
- package/dist/wrapper/memory_management/adapt_builder.d.ts.map +1 -0
- package/dist/wrapper/memory_management/adapt_builder.js +98 -0
- package/dist/wrapper/memory_management/adapt_builder.js.map +1 -0
- package/dist/wrapper/memory_management/exit_handler_registrar.d.ts +10 -0
- package/dist/wrapper/memory_management/exit_handler_registrar.d.ts.map +1 -0
- package/dist/wrapper/memory_management/exit_handler_registrar.js +38 -0
- package/dist/wrapper/memory_management/exit_handler_registrar.js.map +1 -0
- package/dist/wrapper/protocol/message_handler_interfaces.d.ts +32 -0
- package/dist/wrapper/protocol/message_handler_interfaces.d.ts.map +1 -0
- package/dist/wrapper/protocol/message_handler_interfaces.js +2 -0
- package/dist/wrapper/protocol/message_handler_interfaces.js.map +1 -0
- package/dist/wrapper/protocol/protocol.d.ts +171 -0
- package/dist/wrapper/protocol/protocol.d.ts.map +1 -0
- package/dist/wrapper/protocol/protocol.js +387 -0
- package/dist/wrapper/protocol/protocol.js.map +1 -0
- package/package.json +127 -0
|
@@ -0,0 +1,550 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { AdaptObjectBuilder, object_to_adapt_value, Protocol } from '../../../../wrapper/index.js';
|
|
8
|
+
import { AdaptProtocolError, AdaptProtocolErrorType, AdaptWaitlist, AsyncQueueAdapter, Callback, LazyMessage, LoggerProxy, logging, log_fn_call, MessageDependency } from '../../../common/index.js';
|
|
9
|
+
import { AdaptEnvironment } from '@adapt-toolkit/sdk/backend';
|
|
10
|
+
import { ControlPacketConfigurator } from "../../configurators/control_packet_configurator.js";
|
|
11
|
+
import { ControlPacket } from "../../enclave/control_packet.js";
|
|
12
|
+
const adapt_packet_wrapper_impl_logger_proxy = new LoggerProxy("adapt packet wrapper impl");
|
|
13
|
+
export class AdaptPacketWrapperImpl {
|
|
14
|
+
adapt_wrapper;
|
|
15
|
+
builder = new AdaptObjectBuilder();
|
|
16
|
+
queue = new AsyncQueueAdapter(this.worker.bind(this));
|
|
17
|
+
worker_functions;
|
|
18
|
+
registration_accepted = false;
|
|
19
|
+
pending_messages = [];
|
|
20
|
+
waitlist;
|
|
21
|
+
pending_transactions;
|
|
22
|
+
first_messages;
|
|
23
|
+
prepared_to_execute_first_messages = false;
|
|
24
|
+
// web code sets this callback. Packet Wrapper calls this callback on every verify request from the packet
|
|
25
|
+
#on_verify_request;
|
|
26
|
+
// same here, setter is only availabe in browser
|
|
27
|
+
#on_return_data;
|
|
28
|
+
#on_transaction_failure;
|
|
29
|
+
container_id;
|
|
30
|
+
packet;
|
|
31
|
+
identity_proof_document;
|
|
32
|
+
control_packet;
|
|
33
|
+
create_create_packet_message() {
|
|
34
|
+
return AdaptObjectBuilder.execute_and_collect_garbage(builder => {
|
|
35
|
+
const args = builder.Attach(this.packet.CreateDictionary()
|
|
36
|
+
.Mutate(Protocol.FieldName.packet_info, builder.Attach(this.packet.CreateDictionary().Mutate(Protocol.FieldName.packet_id, this.packet.GetContainerID()).Mutate(Protocol.FieldName.state, this.packet.GetHash()))));
|
|
37
|
+
const create_packet = Protocol.CreateProtocolMessage(Protocol.MessageName.w2d_create_packet, { from: this.packet.GetContainerID(), body: args }).Detach();
|
|
38
|
+
return create_packet;
|
|
39
|
+
}, e => {
|
|
40
|
+
const message = e instanceof Error ? e.message : e;
|
|
41
|
+
throw new AdaptProtocolError(AdaptProtocolErrorType.INTERNAL_ERROR, "Internal error: while trying to create 'create_packet' message: " + message);
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
create_write_snapshot_message() {
|
|
45
|
+
return AdaptObjectBuilder.execute_and_collect_garbage(builder => {
|
|
46
|
+
// send snapshot data to the data storage
|
|
47
|
+
const packet_arg = builder.Attach(this.packet.CreateDictionary().Mutate(Protocol.FieldName.packet_data, this.packet.NewBinaryFromHex(Buffer.from(this.packet.Serialize()).toString('hex'))).Mutate(Protocol.FieldName.packet_info, builder.Attach(this.packet.CreateDictionary().Mutate(Protocol.FieldName.packet_id, this.packet.GetContainerID()).Mutate(Protocol.FieldName.state, this.packet.GetHash()))));
|
|
48
|
+
let write_snapshot_args = builder.Attach(this.packet.CreateDictionary().Mutate(Protocol.FieldName.packet, packet_arg));
|
|
49
|
+
const write_snapshot = Protocol.CreateProtocolMessage(Protocol.MessageName.w2d_write_snapshot, { from: builder.AdaptValue.New(this.packet.GetContainerID()), body: write_snapshot_args }).Detach();
|
|
50
|
+
return write_snapshot;
|
|
51
|
+
}, e => {
|
|
52
|
+
const message = e instanceof Error ? e.message : e;
|
|
53
|
+
throw new AdaptProtocolError(AdaptProtocolErrorType.INTERNAL_ERROR, "Internal error: while trying to create 'write snapshot' message:" + message);
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
load_attestation_document(is_control_packet = false) {
|
|
57
|
+
return AdaptObjectBuilder.execute_and_collect_garbage(builder => {
|
|
58
|
+
const execute_transaction = (trn_body) => {
|
|
59
|
+
builder.Attach(trn_body);
|
|
60
|
+
logging.info("Executing transaction in the packet: ", trn_body.Visualize());
|
|
61
|
+
const trn_result = builder.Attach(this.packet.ExecuteTransaction(trn_body));
|
|
62
|
+
const result_type = Protocol.GetTransactionResultKind(trn_result);
|
|
63
|
+
if (result_type !== 'SUC')
|
|
64
|
+
throw new Error("Internal error: transaction " + trn_body.Reduce(Protocol.FieldName.name).Visualize() + " failed.");
|
|
65
|
+
logging.info("Packet state updated. Previous state: ", this.packet.GetHash().Visualize().substring(2));
|
|
66
|
+
if (this.packet.lifetime == this.builder.lifetime)
|
|
67
|
+
this.packet.Destroy();
|
|
68
|
+
this.packet = trn_result.GetPacket().Clone(this.builder.lifetime);
|
|
69
|
+
logging.info("New state: ", this.packet.GetHash().Visualize().substring(2));
|
|
70
|
+
};
|
|
71
|
+
if (!is_control_packet && this.adapt_wrapper.config.env === 'enclave') {
|
|
72
|
+
if (!this.adapt_wrapper.control_packet || !this.adapt_wrapper.control_packet.packet) {
|
|
73
|
+
throw new Error("Control packet in enclave was not set.");
|
|
74
|
+
}
|
|
75
|
+
const control_packet_ip_document = builder.Attach(this.adapt_wrapper.control_packet.packet.identity_proof_document);
|
|
76
|
+
execute_transaction(object_to_adapt_value({
|
|
77
|
+
name: "::control_packet_identity_proof_document::set_identity_proof_document",
|
|
78
|
+
targ: control_packet_ip_document
|
|
79
|
+
}));
|
|
80
|
+
}
|
|
81
|
+
execute_transaction(object_to_adapt_value({
|
|
82
|
+
name: "::platform_dependent_attestation_document::load_attestation_document",
|
|
83
|
+
targ: this.packet.ExecuteTransaction(builder.Attach(object_to_adapt_value({
|
|
84
|
+
name: "::attestation_document::create",
|
|
85
|
+
targ: false
|
|
86
|
+
})))
|
|
87
|
+
}));
|
|
88
|
+
}, e => {
|
|
89
|
+
const message = e instanceof Error ? e.message : e;
|
|
90
|
+
throw new AdaptProtocolError(AdaptProtocolErrorType.INTERNAL_ERROR, "Internal error while creating attestation document: " + message);
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
create_registration_message() {
|
|
94
|
+
return AdaptObjectBuilder.execute_and_collect_garbage(builder => {
|
|
95
|
+
const args = builder.Attach(Protocol.GetProtocolContainer().CreateDictionary().Mutate(Protocol.FieldName.ip_document, Protocol.GetIdentityProofDocument(this.packet)));
|
|
96
|
+
const message = Protocol.CreateProtocolMessage(Protocol.MessageName.w2b_reg, { from: builder.AdaptValue.New(this.packet.GetContainerID()), body: args }).Detach();
|
|
97
|
+
return message;
|
|
98
|
+
}, e => {
|
|
99
|
+
const message = e instanceof Error ? e.message : e;
|
|
100
|
+
throw new AdaptProtocolError(AdaptProtocolErrorType.INTERNAL_ERROR, "Internal error while creating registration message: " + message);
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
constructor(adapt_packet_wrapper, packet, config, adapt_wrapper, messages, is_backup) {
|
|
104
|
+
this.adapt_wrapper = adapt_wrapper;
|
|
105
|
+
this.packet = packet;
|
|
106
|
+
this.builder.Attach(this.packet);
|
|
107
|
+
this.container_id = this.packet.GetContainerID().Visualize();
|
|
108
|
+
this.control_packet = config instanceof ControlPacketConfigurator ? new ControlPacket(config, adapt_packet_wrapper, adapt_wrapper) : undefined;
|
|
109
|
+
this.waitlist = new AdaptWaitlist();
|
|
110
|
+
logging.debug("Creating adapt packet wrapper.");
|
|
111
|
+
this.worker_functions = new Map([
|
|
112
|
+
[Protocol.MessageName.b2w_reg_ok, this.b2w_reg_ok_v1_handler.bind(this)],
|
|
113
|
+
[Protocol.MessageName.b2w_exec_transaction, this.b2w_exec_transaction_v1_handler.bind(this)],
|
|
114
|
+
[Protocol.MessageName.d2w_write_transaction_confirm, this.d2w_write_transaction_confirm_v1_handler.bind(this)],
|
|
115
|
+
[Protocol.MessageName.d2w_write_snapshot_confirm, this.d2w_write_snapshot_confirm_v1_handler.bind(this)],
|
|
116
|
+
[Protocol.MessageName.d2w_create_packet_confirm, this.d2w_create_packet_confirm_v1_handler.bind(this)]
|
|
117
|
+
]);
|
|
118
|
+
this.queue.resume();
|
|
119
|
+
this.pending_transactions = new AsyncQueueAdapter(this.pending_transactions_worker.bind(this));
|
|
120
|
+
if (!is_backup)
|
|
121
|
+
this.load_attestation_document(config instanceof ControlPacketConfigurator);
|
|
122
|
+
this.identity_proof_document = this.builder.Attach(this.packet.ExecuteTransaction(this.builder.Attach(object_to_adapt_value({
|
|
123
|
+
name: "::identity_proof_document::create",
|
|
124
|
+
targ: undefined
|
|
125
|
+
}))));
|
|
126
|
+
this.first_messages = messages;
|
|
127
|
+
const first_message_cb = (() => {
|
|
128
|
+
logging.info(`Packet with id ${this.packet.GetContainerID().Visualize()} created and prepared to execute first messages.`);
|
|
129
|
+
this.prepared_to_execute_first_messages = true;
|
|
130
|
+
this.first_messages.forEach(message => this.on_first_message(message));
|
|
131
|
+
}).bind(this);
|
|
132
|
+
const registration_message_callback = (() => {
|
|
133
|
+
const registration_message = this.create_registration_message();
|
|
134
|
+
this.send_to_adapt_wrappper_impl(registration_message, true);
|
|
135
|
+
}).bind(this);
|
|
136
|
+
if (is_backup) {
|
|
137
|
+
registration_message_callback();
|
|
138
|
+
first_message_cb();
|
|
139
|
+
}
|
|
140
|
+
else if (this.adapt_wrapper.storage_available) {
|
|
141
|
+
logging.debug("Creating packet wrapper with available data storage.");
|
|
142
|
+
const create_packet_message = this.create_create_packet_message();
|
|
143
|
+
const write_snapshot_message = this.create_write_snapshot_message();
|
|
144
|
+
logging.debug("Sending the registration message to the broker and create packet/write snapshot messages to the data storage.");
|
|
145
|
+
this.waitlist.add([
|
|
146
|
+
new MessageDependency(create_packet_message.GetHash().Visualize(), new Callback(this.send_to_adapt_wrapper.bind(this, write_snapshot_message))),
|
|
147
|
+
new MessageDependency(write_snapshot_message.GetHash().Visualize(), new Callback(registration_message_callback))
|
|
148
|
+
], first_message_cb);
|
|
149
|
+
this.send_to_adapt_wrapper(create_packet_message);
|
|
150
|
+
}
|
|
151
|
+
else {
|
|
152
|
+
logging.debug("Created packet without access to the data storage.");
|
|
153
|
+
logging.debug("Sending the registration message to the broker.");
|
|
154
|
+
registration_message_callback();
|
|
155
|
+
logging.debug("Executing first messages.");
|
|
156
|
+
first_message_cb();
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
add_client_message(message) {
|
|
160
|
+
let messages = [].concat(message);
|
|
161
|
+
if (this.prepared_to_execute_first_messages) {
|
|
162
|
+
messages.forEach(m => this.on_client_message(m));
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
this.first_messages.push(...messages);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Message from the adapt wrapper
|
|
170
|
+
* @param message
|
|
171
|
+
*/
|
|
172
|
+
on_message(message) {
|
|
173
|
+
// message processing logic
|
|
174
|
+
logging.message_received('adapt_wrapper', 'packet_wrapper', message, this.packet);
|
|
175
|
+
this.queue.push({
|
|
176
|
+
kind: 'incoming_message',
|
|
177
|
+
data: message
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
send_to_adapt_wrapper(message) {
|
|
181
|
+
this.queue.push({
|
|
182
|
+
kind: 'outgoing_message',
|
|
183
|
+
data: message
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
send_to_adapt_wrappper_impl(message, registration_message = false) {
|
|
187
|
+
const type_id = Protocol.GetTypeId(message);
|
|
188
|
+
let to_storage = type_id.startsWith('w2d');
|
|
189
|
+
if (!to_storage && !this.registration_accepted && !registration_message) {
|
|
190
|
+
logging.debug("Message not forwarded to adapt wrapper. Registration wasn't accepted yet.");
|
|
191
|
+
logging.debug("Adding message to the list of pending messages:", new LazyMessage(() => message.Visualize()));
|
|
192
|
+
this.pending_messages.push(message);
|
|
193
|
+
return;
|
|
194
|
+
}
|
|
195
|
+
logging.message_sent('packet_wrapper', 'adapt_wrapper', message);
|
|
196
|
+
this.adapt_wrapper.receive_message(message);
|
|
197
|
+
}
|
|
198
|
+
on_first_message(message) {
|
|
199
|
+
logging.debug('Received first message:', new LazyMessage(() => new LazyMessage(() => message.Visualize())));
|
|
200
|
+
this.queue.push({
|
|
201
|
+
kind: 'first_or_client_message',
|
|
202
|
+
data: message
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
on_client_message(message) {
|
|
206
|
+
logging.debug("Received message from a client:", new LazyMessage(() => message.Visualize()));
|
|
207
|
+
this.queue.push({
|
|
208
|
+
kind: 'first_or_client_message',
|
|
209
|
+
data: message
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
worker(task, cb) {
|
|
213
|
+
try {
|
|
214
|
+
if (task.kind === 'incoming_message') {
|
|
215
|
+
this.incoming_message_handler(task);
|
|
216
|
+
}
|
|
217
|
+
else if (task.kind === 'first_or_client_message') {
|
|
218
|
+
this.first_or_client_message_handler(task);
|
|
219
|
+
}
|
|
220
|
+
else {
|
|
221
|
+
this.send_to_adapt_wrappper_impl(task.data);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
catch (e) {
|
|
225
|
+
logging.error(e instanceof Error ? e.stack : e);
|
|
226
|
+
}
|
|
227
|
+
finally {
|
|
228
|
+
cb();
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
first_or_client_message_handler(task) {
|
|
232
|
+
this.b2w_exec_transaction_v1_handler(task.data, true);
|
|
233
|
+
}
|
|
234
|
+
incoming_message_handler(task) {
|
|
235
|
+
const message_type_id = Protocol.GetTypeId(task.data);
|
|
236
|
+
const func = this.worker_functions.get(message_type_id);
|
|
237
|
+
if (func)
|
|
238
|
+
func(task.data);
|
|
239
|
+
else
|
|
240
|
+
throw new AdaptProtocolError(AdaptProtocolErrorType.INVALID_MESSAGE, "Unrecognized message type id: " + message_type_id.toString());
|
|
241
|
+
}
|
|
242
|
+
b2w_reg_ok_v1_handler(message) {
|
|
243
|
+
logging.debug("Adapt wrapper received confirmation of registration from broker");
|
|
244
|
+
this.registration_accepted = true;
|
|
245
|
+
message.Destroy();
|
|
246
|
+
this.pending_messages.forEach(message => {
|
|
247
|
+
this.queue.unshift({
|
|
248
|
+
kind: 'outgoing_message',
|
|
249
|
+
data: message
|
|
250
|
+
});
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
d2w_write_transaction_confirm_v1_handler(message) {
|
|
254
|
+
this.process_confirmation_message(message);
|
|
255
|
+
}
|
|
256
|
+
d2w_write_snapshot_confirm_v1_handler(message) {
|
|
257
|
+
this.process_confirmation_message(message);
|
|
258
|
+
}
|
|
259
|
+
d2w_create_packet_confirm_v1_handler(message) {
|
|
260
|
+
this.process_confirmation_message(message);
|
|
261
|
+
}
|
|
262
|
+
process_confirmation_message(message) {
|
|
263
|
+
AdaptObjectBuilder.execute_and_collect_garbage(builder => {
|
|
264
|
+
builder.Attach(message);
|
|
265
|
+
const message_hash = builder.Attach(Protocol.GetMessageHash(message));
|
|
266
|
+
this.waitlist.satisfy(message_hash.Visualize(), message.Clone());
|
|
267
|
+
}, e => {
|
|
268
|
+
const message = e instanceof Error ? e.message : e;
|
|
269
|
+
throw new Error("Error while processing confirmation message: " + message);
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
/**
|
|
273
|
+
* Transactions processing workflow:
|
|
274
|
+
* When b2w_exec_transaction_v1 is received by adapt packet wrapper, the message is added to the queue of pending transactions.
|
|
275
|
+
* This queue process one transactions at time.
|
|
276
|
+
*/
|
|
277
|
+
b2w_exec_transaction_v1_handler(message, is_first_message = false) {
|
|
278
|
+
// Ensure, that container id in 'to' field is the same as the container id manages by the wrapper and validate attestation document of the issuer container
|
|
279
|
+
if (is_first_message) {
|
|
280
|
+
this.pending_transactions.push({ trn: message, is_user_transaction: true });
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
AdaptObjectBuilder.execute_and_collect_garbage(builder => {
|
|
284
|
+
const to = builder.Attach(Protocol.GetTo(message));
|
|
285
|
+
if (!to.Equals(this.packet.GetContainerID()))
|
|
286
|
+
throw new AdaptProtocolError(AdaptProtocolErrorType.LOGIC_ERROR, "Invalid container id of incoming transaction message." + "Expected: " + this.packet.GetContainerID().Visualize() + ", but received: " + to.Visualize());
|
|
287
|
+
const body = builder.Attach(Protocol.GetBody(message));
|
|
288
|
+
const ip_document = body.Reduce(Protocol.FieldName.ip_document);
|
|
289
|
+
// TODO: check if attestation document of the container is known to us, if not, attestation document in the message should not be NIL
|
|
290
|
+
// if (!is_first_message) {
|
|
291
|
+
// try {
|
|
292
|
+
// builder.Attach(Protocol.ValidateIdentityProofDocument(ip_document, builder.AdaptEnvironment.SystemTime()));
|
|
293
|
+
// } catch (e) {
|
|
294
|
+
// const message = e instanceof Error ? e.message : e;
|
|
295
|
+
// throw new AdaptProtocolError(AdaptProtocolErrorType.IP_DOCUMENT_VALIDATION_FAILURE, "Attestation document validation failed: " + message);
|
|
296
|
+
// }
|
|
297
|
+
// }
|
|
298
|
+
// logging.debug("Idenity proof document validated.");
|
|
299
|
+
});
|
|
300
|
+
// add transaction to the queue of pending transactions
|
|
301
|
+
this.pending_transactions.push({ trn: message, is_user_transaction: false });
|
|
302
|
+
}
|
|
303
|
+
// ========================= pending transactions worker and related methods ======================
|
|
304
|
+
pending_transactions_worker(event, cb) {
|
|
305
|
+
try {
|
|
306
|
+
this.execute_transaction(event);
|
|
307
|
+
}
|
|
308
|
+
catch (e) {
|
|
309
|
+
const message = e instanceof Error ? e.message : e;
|
|
310
|
+
logging.error("while executing transaction:", message);
|
|
311
|
+
if (this.#on_transaction_failure && e instanceof Error) {
|
|
312
|
+
this.#on_transaction_failure(e.message);
|
|
313
|
+
}
|
|
314
|
+
this.pending_transactions.resume(); // if transaction failed, next transactions can be processed
|
|
315
|
+
}
|
|
316
|
+
finally {
|
|
317
|
+
cb();
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
create_write_transaction_message(trn_result, transient_data_encrypted, request_data_encrypted) {
|
|
321
|
+
return AdaptObjectBuilder.execute_and_collect_garbage(builder => {
|
|
322
|
+
const args = builder.Attach(Protocol.GetProtocolContainer().CreateDictionary()
|
|
323
|
+
.Mutate(Protocol.FieldName.state_change, builder.Attach(Protocol.GetProtocolContainer().CreateDictionary())
|
|
324
|
+
.Mutate(Protocol.FieldName.final_state_id, trn_result.GetPacket().GetHash())
|
|
325
|
+
.Mutate(Protocol.FieldName.transaction, builder.Attach(Protocol.GetProtocolContainer().CreateDictionary().
|
|
326
|
+
Mutate(Protocol.FieldName.transient_data_encrypted, transient_data_encrypted).
|
|
327
|
+
Mutate(Protocol.FieldName.request_data_encrypted, request_data_encrypted))))
|
|
328
|
+
.Mutate(Protocol.FieldName.packet_info, builder.Attach(Protocol.CreatePacketInfo(this.packet))));
|
|
329
|
+
const write_transaction_message = Protocol.CreateProtocolMessage(Protocol.MessageName.w2d_write_transaction, { from: builder.AdaptValue.New(this.packet.GetContainerID()), body: args }).Detach();
|
|
330
|
+
return write_transaction_message;
|
|
331
|
+
});
|
|
332
|
+
}
|
|
333
|
+
execute_transaction({ trn, is_user_transaction }) {
|
|
334
|
+
this.pending_transactions.pause();
|
|
335
|
+
const builder = new AdaptObjectBuilder();
|
|
336
|
+
let envelope;
|
|
337
|
+
if (is_user_transaction) {
|
|
338
|
+
logging.debug("Executing user transaction in the packet: ", new LazyMessage(() => trn.Visualize()));
|
|
339
|
+
envelope = trn;
|
|
340
|
+
}
|
|
341
|
+
else {
|
|
342
|
+
logging.debug("Executing a transaction in the packet");
|
|
343
|
+
const body = builder.Attach(Protocol.GetBody(trn));
|
|
344
|
+
envelope = body.Reduce(Protocol.FieldName.envlp);
|
|
345
|
+
const trn_body = envelope.Reduce(Protocol.FieldName.body);
|
|
346
|
+
logging.debug("Executing transaction: ", new LazyMessage(() => builder.Attach(Protocol.DescribeTransaction(this.packet, trn_body)).Visualize()));
|
|
347
|
+
}
|
|
348
|
+
// generate and save entropy and timestamp
|
|
349
|
+
const entropy = builder.AdaptEnvironment.GetRandomBytes(256);
|
|
350
|
+
const time = builder.AdaptEnvironment.SystemTime();
|
|
351
|
+
// execute transaction
|
|
352
|
+
const trn_result = this.packet.ExecuteTransaction(envelope, entropy.Visualize().substring(2), time).Detach();
|
|
353
|
+
logging.info("Adapt transaction output: ", AdaptEnvironment.getStdoutContents(), AdaptEnvironment.getStderrContents());
|
|
354
|
+
// check, whether transaction succeeded. Otherwise, do not continue processing the transaction
|
|
355
|
+
const transaction_result_type = Protocol.GetTransactionResultKind(trn_result);
|
|
356
|
+
if (transaction_result_type === 'FAIL') {
|
|
357
|
+
throw new AdaptProtocolError(AdaptProtocolErrorType.TRANSACTION_FAILURE, "Transaction failed with message " + trn_result.Reduce(Protocol.FieldName.result).Visualize());
|
|
358
|
+
}
|
|
359
|
+
logging.debug("Container hash before transaction:", new LazyMessage(() => this.packet.GetHash().Visualize()));
|
|
360
|
+
logging.debug("Transaction result:", new LazyMessage(() => trn_result.Visualize()));
|
|
361
|
+
logging.debug("Container hash after transaction:", new LazyMessage(() => trn_result.GetPacket().GetHash().Visualize()));
|
|
362
|
+
if (this.adapt_wrapper.storage_available) {
|
|
363
|
+
// encrypt transaction request and transient data with encryption key of this container
|
|
364
|
+
const transient_data = builder.Attach(this.packet.CreateDictionary().Mutate(Protocol.FieldName.timestamp, time).Mutate(Protocol.FieldName.entropy, entropy.Visualize().substring(2)));
|
|
365
|
+
const transient_data_encrypted = builder.Attach(this.packet.ExecuteTransaction(builder.Attach(object_to_adapt_value({
|
|
366
|
+
name: "::key_storage_api::default_encrypt",
|
|
367
|
+
targ: builder.Attach(object_to_adapt_value({
|
|
368
|
+
message: transient_data,
|
|
369
|
+
recipient_container_id: this.packet.GetContainerID()
|
|
370
|
+
}))
|
|
371
|
+
}))));
|
|
372
|
+
const request_data_encrypted = builder.Attach(this.packet.ExecuteTransaction(builder.Attach(object_to_adapt_value({
|
|
373
|
+
name: "::key_storage_api::default_encrypt",
|
|
374
|
+
targ: builder.Attach(object_to_adapt_value({
|
|
375
|
+
message: envelope,
|
|
376
|
+
recipient_container_id: this.packet.GetContainerID()
|
|
377
|
+
}))
|
|
378
|
+
}))));
|
|
379
|
+
const write_transaction_message = this.create_write_transaction_message(trn_result, transient_data_encrypted, request_data_encrypted);
|
|
380
|
+
const write_transaction_message_hash = write_transaction_message.GetHash().Visualize();
|
|
381
|
+
this.waitlist.add([new MessageDependency(write_transaction_message_hash)], this.process_transaction_result.bind(this, trn_result));
|
|
382
|
+
this.send_to_adapt_wrapper(write_transaction_message);
|
|
383
|
+
logging.debug("write transaction message:", new LazyMessage(() => write_transaction_message.Visualize()));
|
|
384
|
+
}
|
|
385
|
+
else {
|
|
386
|
+
this.process_transaction_result(trn_result);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
process_transaction_result(message) {
|
|
390
|
+
AdaptObjectBuilder.execute_and_collect_garbage(builder => {
|
|
391
|
+
logging.info("Processing transaction result:", message.Visualize());
|
|
392
|
+
logging.info("Container state before transaction:", this.packet.GetHash().Visualize());
|
|
393
|
+
builder.Attach(message);
|
|
394
|
+
const transaction_result = Protocol.GetTransactionResultKind(message);
|
|
395
|
+
const result = message.Reduce(Protocol.FieldName.result);
|
|
396
|
+
if (transaction_result === 'SUC') {
|
|
397
|
+
if (this.packet.lifetime == this.builder.lifetime)
|
|
398
|
+
this.packet.Destroy();
|
|
399
|
+
this.packet = message.GetPacket().Clone(this.builder.lifetime);
|
|
400
|
+
logging.info("Packet state updated. New state: ", this.packet.GetHash().Visualize());
|
|
401
|
+
let idx = 0;
|
|
402
|
+
let value;
|
|
403
|
+
while (!(value = result.Reduce(idx)).IsNil()) {
|
|
404
|
+
idx++;
|
|
405
|
+
const action_kind = value.Reduce(Protocol.FieldName.action_kind).Visualize();
|
|
406
|
+
if (action_kind === "RET") {
|
|
407
|
+
if (this.packet.lifetime == this.builder.lifetime)
|
|
408
|
+
this.packet.Destroy();
|
|
409
|
+
if (this.control_packet) {
|
|
410
|
+
const packet = message.GetPacket().Clone(this.builder.lifetime);
|
|
411
|
+
this.control_packet.on_message(value.Reduce(Protocol.FieldName.data).Detach(), cb => {
|
|
412
|
+
this.packet = packet;
|
|
413
|
+
logging.info("Packet state updated. New state: ", this.packet.GetHash().Visualize());
|
|
414
|
+
if (cb)
|
|
415
|
+
cb();
|
|
416
|
+
this.pending_transactions.resume();
|
|
417
|
+
});
|
|
418
|
+
return;
|
|
419
|
+
}
|
|
420
|
+
this.packet = message.GetPacket().Clone(this.builder.lifetime);
|
|
421
|
+
logging.info("Packet state updated. New state: ", this.packet.GetHash().Visualize());
|
|
422
|
+
if (this.#on_return_data)
|
|
423
|
+
this.#on_return_data(value.Detach().Reduce(Protocol.FieldName.data), this.packet);
|
|
424
|
+
}
|
|
425
|
+
else if (action_kind === "SEND") {
|
|
426
|
+
this.send_to_adapt_wrapper(Protocol.CreateTransactionMessageFromEnvelope(value.Reduce(Protocol.FieldName.data)));
|
|
427
|
+
}
|
|
428
|
+
else if (action_kind === "VER") {
|
|
429
|
+
if (this.#on_verify_request)
|
|
430
|
+
this.#on_verify_request(value.Detach().Reduce(Protocol.FieldName.data));
|
|
431
|
+
}
|
|
432
|
+
else if (action_kind === "TIMEOUT") {
|
|
433
|
+
const data = value.Reduce(Protocol.FieldName.data);
|
|
434
|
+
const seconds = data.Reduce('seconds').GetNumber();
|
|
435
|
+
const continuation_id = data.Reduce('continuation_id').Visualize();
|
|
436
|
+
logging.debug("Recieved timeout request. Seconds: ", seconds, "continuation id: ", continuation_id);
|
|
437
|
+
const on_timeout = () => {
|
|
438
|
+
logging.debug("Calling timeout callback.");
|
|
439
|
+
this.pending_transactions.push({
|
|
440
|
+
trn: object_to_adapt_value({ name: "::continuation::continue_transaction", targ: { id: continuation_id, args: false } }).Detach(),
|
|
441
|
+
is_user_transaction: true
|
|
442
|
+
});
|
|
443
|
+
};
|
|
444
|
+
setTimeout(on_timeout.bind(this), seconds * 1000);
|
|
445
|
+
}
|
|
446
|
+
else {
|
|
447
|
+
logging.error("Received invalid transaction action: ", action_kind);
|
|
448
|
+
continue;
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
this.pending_transactions.resume();
|
|
452
|
+
}
|
|
453
|
+
else if (transaction_result === 'FAIL') {
|
|
454
|
+
throw new AdaptProtocolError(AdaptProtocolErrorType.INTERNAL_ERROR, "Invalid transaction result. Fail wasn't expected here. It should be handled before");
|
|
455
|
+
}
|
|
456
|
+
else {
|
|
457
|
+
throw new AdaptProtocolError(AdaptProtocolErrorType.INTERNAL_ERROR, "Unexpected transaction result: " + transaction_result + ". Transaction result should be checked before.");
|
|
458
|
+
}
|
|
459
|
+
});
|
|
460
|
+
}
|
|
461
|
+
//----------------------------- browser only methods ---------------------------------------
|
|
462
|
+
set on_verify_request(new_value) {
|
|
463
|
+
this.#on_verify_request = new_value;
|
|
464
|
+
}
|
|
465
|
+
set on_return_data(new_value) {
|
|
466
|
+
this.#on_return_data = new_value;
|
|
467
|
+
}
|
|
468
|
+
set on_transaction_failure(new_value) {
|
|
469
|
+
this.#on_transaction_failure = new_value;
|
|
470
|
+
}
|
|
471
|
+
acceptVerificationRequest(id) {
|
|
472
|
+
AdaptObjectBuilder.execute_and_collect_garbage(builder => {
|
|
473
|
+
const message = object_to_adapt_value({ name: "::verification::accept", targ: builder.Attach(object_to_adapt_value({ id: id })) });
|
|
474
|
+
this.add_client_message(message);
|
|
475
|
+
});
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
__decorate([
|
|
479
|
+
log_fn_call(adapt_packet_wrapper_impl_logger_proxy)
|
|
480
|
+
], AdaptPacketWrapperImpl.prototype, "create_create_packet_message", null);
|
|
481
|
+
__decorate([
|
|
482
|
+
log_fn_call(adapt_packet_wrapper_impl_logger_proxy)
|
|
483
|
+
], AdaptPacketWrapperImpl.prototype, "create_write_snapshot_message", null);
|
|
484
|
+
__decorate([
|
|
485
|
+
log_fn_call(adapt_packet_wrapper_impl_logger_proxy)
|
|
486
|
+
], AdaptPacketWrapperImpl.prototype, "load_attestation_document", null);
|
|
487
|
+
__decorate([
|
|
488
|
+
log_fn_call(adapt_packet_wrapper_impl_logger_proxy)
|
|
489
|
+
], AdaptPacketWrapperImpl.prototype, "create_registration_message", null);
|
|
490
|
+
__decorate([
|
|
491
|
+
log_fn_call(adapt_packet_wrapper_impl_logger_proxy)
|
|
492
|
+
], AdaptPacketWrapperImpl.prototype, "add_client_message", null);
|
|
493
|
+
__decorate([
|
|
494
|
+
log_fn_call(adapt_packet_wrapper_impl_logger_proxy)
|
|
495
|
+
], AdaptPacketWrapperImpl.prototype, "on_message", null);
|
|
496
|
+
__decorate([
|
|
497
|
+
log_fn_call(adapt_packet_wrapper_impl_logger_proxy)
|
|
498
|
+
], AdaptPacketWrapperImpl.prototype, "send_to_adapt_wrapper", null);
|
|
499
|
+
__decorate([
|
|
500
|
+
log_fn_call(adapt_packet_wrapper_impl_logger_proxy)
|
|
501
|
+
], AdaptPacketWrapperImpl.prototype, "send_to_adapt_wrappper_impl", null);
|
|
502
|
+
__decorate([
|
|
503
|
+
log_fn_call(adapt_packet_wrapper_impl_logger_proxy)
|
|
504
|
+
], AdaptPacketWrapperImpl.prototype, "on_first_message", null);
|
|
505
|
+
__decorate([
|
|
506
|
+
log_fn_call(adapt_packet_wrapper_impl_logger_proxy)
|
|
507
|
+
], AdaptPacketWrapperImpl.prototype, "on_client_message", null);
|
|
508
|
+
__decorate([
|
|
509
|
+
log_fn_call(adapt_packet_wrapper_impl_logger_proxy)
|
|
510
|
+
], AdaptPacketWrapperImpl.prototype, "worker", null);
|
|
511
|
+
__decorate([
|
|
512
|
+
log_fn_call(adapt_packet_wrapper_impl_logger_proxy)
|
|
513
|
+
], AdaptPacketWrapperImpl.prototype, "first_or_client_message_handler", null);
|
|
514
|
+
__decorate([
|
|
515
|
+
log_fn_call(adapt_packet_wrapper_impl_logger_proxy)
|
|
516
|
+
], AdaptPacketWrapperImpl.prototype, "incoming_message_handler", null);
|
|
517
|
+
__decorate([
|
|
518
|
+
log_fn_call(adapt_packet_wrapper_impl_logger_proxy)
|
|
519
|
+
], AdaptPacketWrapperImpl.prototype, "b2w_reg_ok_v1_handler", null);
|
|
520
|
+
__decorate([
|
|
521
|
+
log_fn_call(adapt_packet_wrapper_impl_logger_proxy)
|
|
522
|
+
], AdaptPacketWrapperImpl.prototype, "d2w_write_transaction_confirm_v1_handler", null);
|
|
523
|
+
__decorate([
|
|
524
|
+
log_fn_call(adapt_packet_wrapper_impl_logger_proxy)
|
|
525
|
+
], AdaptPacketWrapperImpl.prototype, "d2w_write_snapshot_confirm_v1_handler", null);
|
|
526
|
+
__decorate([
|
|
527
|
+
log_fn_call(adapt_packet_wrapper_impl_logger_proxy)
|
|
528
|
+
], AdaptPacketWrapperImpl.prototype, "d2w_create_packet_confirm_v1_handler", null);
|
|
529
|
+
__decorate([
|
|
530
|
+
log_fn_call(adapt_packet_wrapper_impl_logger_proxy)
|
|
531
|
+
], AdaptPacketWrapperImpl.prototype, "process_confirmation_message", null);
|
|
532
|
+
__decorate([
|
|
533
|
+
log_fn_call(adapt_packet_wrapper_impl_logger_proxy)
|
|
534
|
+
], AdaptPacketWrapperImpl.prototype, "b2w_exec_transaction_v1_handler", null);
|
|
535
|
+
__decorate([
|
|
536
|
+
log_fn_call(adapt_packet_wrapper_impl_logger_proxy)
|
|
537
|
+
], AdaptPacketWrapperImpl.prototype, "pending_transactions_worker", null);
|
|
538
|
+
__decorate([
|
|
539
|
+
log_fn_call(adapt_packet_wrapper_impl_logger_proxy)
|
|
540
|
+
], AdaptPacketWrapperImpl.prototype, "create_write_transaction_message", null);
|
|
541
|
+
__decorate([
|
|
542
|
+
log_fn_call(adapt_packet_wrapper_impl_logger_proxy)
|
|
543
|
+
], AdaptPacketWrapperImpl.prototype, "execute_transaction", null);
|
|
544
|
+
__decorate([
|
|
545
|
+
log_fn_call(adapt_packet_wrapper_impl_logger_proxy)
|
|
546
|
+
], AdaptPacketWrapperImpl.prototype, "process_transaction_result", null);
|
|
547
|
+
__decorate([
|
|
548
|
+
log_fn_call(adapt_packet_wrapper_impl_logger_proxy)
|
|
549
|
+
], AdaptPacketWrapperImpl.prototype, "acceptVerificationRequest", null);
|
|
550
|
+
//# sourceMappingURL=adapt_packet_wrapper_impl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapt_packet_wrapper_impl.js","sourceRoot":"","sources":["../../../../../src/utilities/wrappers/wrappers/impl/adapt_packet_wrapper_impl.ts"],"names":[],"mappings":"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"}
|