tigerbeetle-node 0.16.32 → 0.16.34

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.
Binary file
Binary file
Binary file
@@ -125,7 +125,6 @@ export declare enum CreateTransferError {
125
125
  pending_id_must_be_different = 16,
126
126
  timeout_reserved_for_pending_transfer = 17,
127
127
  closing_transfer_must_be_pending = 64,
128
- amount_must_not_be_zero = 18,
129
128
  ledger_must_not_be_zero = 19,
130
129
  code_must_not_be_zero = 20,
131
130
  debit_account_not_found = 21,
package/dist/bindings.js CHANGED
@@ -104,7 +104,6 @@ var CreateTransferError;
104
104
  CreateTransferError[CreateTransferError["pending_id_must_be_different"] = 16] = "pending_id_must_be_different";
105
105
  CreateTransferError[CreateTransferError["timeout_reserved_for_pending_transfer"] = 17] = "timeout_reserved_for_pending_transfer";
106
106
  CreateTransferError[CreateTransferError["closing_transfer_must_be_pending"] = 64] = "closing_transfer_must_be_pending";
107
- CreateTransferError[CreateTransferError["amount_must_not_be_zero"] = 18] = "amount_must_not_be_zero";
108
107
  CreateTransferError[CreateTransferError["ledger_must_not_be_zero"] = 19] = "ledger_must_not_be_zero";
109
108
  CreateTransferError[CreateTransferError["code_must_not_be_zero"] = 20] = "code_must_not_be_zero";
110
109
  CreateTransferError[CreateTransferError["debit_account_not_found"] = 21] = "debit_account_not_found";
@@ -1 +1 @@
1
- {"version":3,"file":"bindings.js","sourceRoot":"","sources":["../src/bindings.ts"],"names":[],"mappings":"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","sourcesContent":["///////////////////////////////////////////////////////\n// This file was auto-generated by node_bindings.zig //\n// Do not manually modify. //\n///////////////////////////////////////////////////////\n\n\n/**\n* See [AccountFlags](https://docs.tigerbeetle.com/reference/account#flags)\n*/\nexport enum AccountFlags {\n none = 0,\n\n /**\n * See [linked](https://docs.tigerbeetle.com/reference/account#flagslinked)\n */\n linked = (1 << 0),\n\n /**\n * See [debits_must_not_exceed_credits](https://docs.tigerbeetle.com/reference/account#flagsdebits_must_not_exceed_credits)\n */\n debits_must_not_exceed_credits = (1 << 1),\n\n /**\n * See [credits_must_not_exceed_debits](https://docs.tigerbeetle.com/reference/account#flagscredits_must_not_exceed_debits)\n */\n credits_must_not_exceed_debits = (1 << 2),\n\n /**\n * See [history](https://docs.tigerbeetle.com/reference/account#flagshistory)\n */\n history = (1 << 3),\n\n /**\n * See [imported](https://docs.tigerbeetle.com/reference/account#flagsimported)\n */\n imported = (1 << 4),\n\n /**\n * See [closed](https://docs.tigerbeetle.com/reference/account#flagsclosed)\n */\n closed = (1 << 5),\n}\n\n\n/**\n* See [TransferFlags](https://docs.tigerbeetle.com/reference/transfer#flags)\n*/\nexport enum TransferFlags {\n none = 0,\n\n /**\n * See [linked](https://docs.tigerbeetle.com/reference/transfer#flagslinked)\n */\n linked = (1 << 0),\n\n /**\n * See [pending](https://docs.tigerbeetle.com/reference/transfer#flagspending)\n */\n pending = (1 << 1),\n\n /**\n * See [post_pending_transfer](https://docs.tigerbeetle.com/reference/transfer#flagspost_pending_transfer)\n */\n post_pending_transfer = (1 << 2),\n\n /**\n * See [void_pending_transfer](https://docs.tigerbeetle.com/reference/transfer#flagsvoid_pending_transfer)\n */\n void_pending_transfer = (1 << 3),\n\n /**\n * See [balancing_debit](https://docs.tigerbeetle.com/reference/transfer#flagsbalancing_debit)\n */\n balancing_debit = (1 << 4),\n\n /**\n * See [balancing_credit](https://docs.tigerbeetle.com/reference/transfer#flagsbalancing_credit)\n */\n balancing_credit = (1 << 5),\n\n /**\n * See [closing_debit](https://docs.tigerbeetle.com/reference/transfer#flagsclosing_debit)\n */\n closing_debit = (1 << 6),\n\n /**\n * See [closing_credit](https://docs.tigerbeetle.com/reference/transfer#flagsclosing_credit)\n */\n closing_credit = (1 << 7),\n\n /**\n * See [imported](https://docs.tigerbeetle.com/reference/transfer#flagsimported)\n */\n imported = (1 << 8),\n}\n\n\n/**\n* See [AccountFilterFlags](https://docs.tigerbeetle.com/reference/account-filter#flags)\n*/\nexport enum AccountFilterFlags {\n none = 0,\n\n /**\n * See [debits](https://docs.tigerbeetle.com/reference/account-filter#flagsdebits)\n */\n debits = (1 << 0),\n\n /**\n * See [credits](https://docs.tigerbeetle.com/reference/account-filter#flagscredits)\n */\n credits = (1 << 1),\n\n /**\n * See [reversed](https://docs.tigerbeetle.com/reference/account-filter#flagsreversed)\n */\n reversed = (1 << 2),\n}\n\n\n/**\n* See [QueryFilterFlags](https://docs.tigerbeetle.com/reference/query-filter#flags)\n*/\nexport enum QueryFilterFlags {\n none = 0,\n\n /**\n * See [reversed](https://docs.tigerbeetle.com/reference/query-filter#flagsreversed)\n */\n reversed = (1 << 0),\n}\n\n\n/**\n* See [Account](https://docs.tigerbeetle.com/reference/account/#)\n*/\nexport type Account = {\n\n /**\n * See [id](https://docs.tigerbeetle.com/reference/account/#id)\n */\n id: bigint\n\n /**\n * See [debits_pending](https://docs.tigerbeetle.com/reference/account/#debits_pending)\n */\n debits_pending: bigint\n\n /**\n * See [debits_posted](https://docs.tigerbeetle.com/reference/account/#debits_posted)\n */\n debits_posted: bigint\n\n /**\n * See [credits_pending](https://docs.tigerbeetle.com/reference/account/#credits_pending)\n */\n credits_pending: bigint\n\n /**\n * See [credits_posted](https://docs.tigerbeetle.com/reference/account/#credits_posted)\n */\n credits_posted: bigint\n\n /**\n * See [user_data_128](https://docs.tigerbeetle.com/reference/account/#user_data_128)\n */\n user_data_128: bigint\n\n /**\n * See [user_data_64](https://docs.tigerbeetle.com/reference/account/#user_data_64)\n */\n user_data_64: bigint\n\n /**\n * See [user_data_32](https://docs.tigerbeetle.com/reference/account/#user_data_32)\n */\n user_data_32: number\n\n /**\n * See [reserved](https://docs.tigerbeetle.com/reference/account/#reserved)\n */\n reserved: number\n\n /**\n * See [ledger](https://docs.tigerbeetle.com/reference/account/#ledger)\n */\n ledger: number\n\n /**\n * See [code](https://docs.tigerbeetle.com/reference/account/#code)\n */\n code: number\n\n /**\n * See [flags](https://docs.tigerbeetle.com/reference/account/#flags)\n */\n flags: number\n\n /**\n * See [timestamp](https://docs.tigerbeetle.com/reference/account/#timestamp)\n */\n timestamp: bigint\n}\n\n\n/**\n* See [Transfer](https://docs.tigerbeetle.com/reference/transfer/#)\n*/\nexport type Transfer = {\n\n /**\n * See [id](https://docs.tigerbeetle.com/reference/transfer/#id)\n */\n id: bigint\n\n /**\n * See [debit_account_id](https://docs.tigerbeetle.com/reference/transfer/#debit_account_id)\n */\n debit_account_id: bigint\n\n /**\n * See [credit_account_id](https://docs.tigerbeetle.com/reference/transfer/#credit_account_id)\n */\n credit_account_id: bigint\n\n /**\n * See [amount](https://docs.tigerbeetle.com/reference/transfer/#amount)\n */\n amount: bigint\n\n /**\n * See [pending_id](https://docs.tigerbeetle.com/reference/transfer/#pending_id)\n */\n pending_id: bigint\n\n /**\n * See [user_data_128](https://docs.tigerbeetle.com/reference/transfer/#user_data_128)\n */\n user_data_128: bigint\n\n /**\n * See [user_data_64](https://docs.tigerbeetle.com/reference/transfer/#user_data_64)\n */\n user_data_64: bigint\n\n /**\n * See [user_data_32](https://docs.tigerbeetle.com/reference/transfer/#user_data_32)\n */\n user_data_32: number\n\n /**\n * See [timeout](https://docs.tigerbeetle.com/reference/transfer/#timeout)\n */\n timeout: number\n\n /**\n * See [ledger](https://docs.tigerbeetle.com/reference/transfer/#ledger)\n */\n ledger: number\n\n /**\n * See [code](https://docs.tigerbeetle.com/reference/transfer/#code)\n */\n code: number\n\n /**\n * See [flags](https://docs.tigerbeetle.com/reference/transfer/#flags)\n */\n flags: number\n\n /**\n * See [timestamp](https://docs.tigerbeetle.com/reference/transfer/#timestamp)\n */\n timestamp: bigint\n}\n\n\n/**\n* See [CreateAccountError](https://docs.tigerbeetle.com/reference/requests/create_accounts#)\n*/\nexport enum CreateAccountError {\n\n /**\n * See [ok](https://docs.tigerbeetle.com/reference/requests/create_accounts#ok)\n */\n ok = 0,\n\n /**\n * See [linked_event_failed](https://docs.tigerbeetle.com/reference/requests/create_accounts#linked_event_failed)\n */\n linked_event_failed = 1,\n\n /**\n * See [linked_event_chain_open](https://docs.tigerbeetle.com/reference/requests/create_accounts#linked_event_chain_open)\n */\n linked_event_chain_open = 2,\n\n /**\n * See [imported_event_expected](https://docs.tigerbeetle.com/reference/requests/create_accounts#imported_event_expected)\n */\n imported_event_expected = 22,\n\n /**\n * See [imported_event_not_expected](https://docs.tigerbeetle.com/reference/requests/create_accounts#imported_event_not_expected)\n */\n imported_event_not_expected = 23,\n\n /**\n * See [timestamp_must_be_zero](https://docs.tigerbeetle.com/reference/requests/create_accounts#timestamp_must_be_zero)\n */\n timestamp_must_be_zero = 3,\n\n /**\n * See [imported_event_timestamp_out_of_range](https://docs.tigerbeetle.com/reference/requests/create_accounts#imported_event_timestamp_out_of_range)\n */\n imported_event_timestamp_out_of_range = 24,\n\n /**\n * See [imported_event_timestamp_must_not_advance](https://docs.tigerbeetle.com/reference/requests/create_accounts#imported_event_timestamp_must_not_advance)\n */\n imported_event_timestamp_must_not_advance = 25,\n\n /**\n * See [reserved_field](https://docs.tigerbeetle.com/reference/requests/create_accounts#reserved_field)\n */\n reserved_field = 4,\n\n /**\n * See [reserved_flag](https://docs.tigerbeetle.com/reference/requests/create_accounts#reserved_flag)\n */\n reserved_flag = 5,\n\n /**\n * See [id_must_not_be_zero](https://docs.tigerbeetle.com/reference/requests/create_accounts#id_must_not_be_zero)\n */\n id_must_not_be_zero = 6,\n\n /**\n * See [id_must_not_be_int_max](https://docs.tigerbeetle.com/reference/requests/create_accounts#id_must_not_be_int_max)\n */\n id_must_not_be_int_max = 7,\n\n /**\n * See [exists_with_different_flags](https://docs.tigerbeetle.com/reference/requests/create_accounts#exists_with_different_flags)\n */\n exists_with_different_flags = 15,\n\n /**\n * See [exists_with_different_user_data_128](https://docs.tigerbeetle.com/reference/requests/create_accounts#exists_with_different_user_data_128)\n */\n exists_with_different_user_data_128 = 16,\n\n /**\n * See [exists_with_different_user_data_64](https://docs.tigerbeetle.com/reference/requests/create_accounts#exists_with_different_user_data_64)\n */\n exists_with_different_user_data_64 = 17,\n\n /**\n * See [exists_with_different_user_data_32](https://docs.tigerbeetle.com/reference/requests/create_accounts#exists_with_different_user_data_32)\n */\n exists_with_different_user_data_32 = 18,\n\n /**\n * See [exists_with_different_ledger](https://docs.tigerbeetle.com/reference/requests/create_accounts#exists_with_different_ledger)\n */\n exists_with_different_ledger = 19,\n\n /**\n * See [exists_with_different_code](https://docs.tigerbeetle.com/reference/requests/create_accounts#exists_with_different_code)\n */\n exists_with_different_code = 20,\n\n /**\n * See [exists](https://docs.tigerbeetle.com/reference/requests/create_accounts#exists)\n */\n exists = 21,\n\n /**\n * See [flags_are_mutually_exclusive](https://docs.tigerbeetle.com/reference/requests/create_accounts#flags_are_mutually_exclusive)\n */\n flags_are_mutually_exclusive = 8,\n\n /**\n * See [debits_pending_must_be_zero](https://docs.tigerbeetle.com/reference/requests/create_accounts#debits_pending_must_be_zero)\n */\n debits_pending_must_be_zero = 9,\n\n /**\n * See [debits_posted_must_be_zero](https://docs.tigerbeetle.com/reference/requests/create_accounts#debits_posted_must_be_zero)\n */\n debits_posted_must_be_zero = 10,\n\n /**\n * See [credits_pending_must_be_zero](https://docs.tigerbeetle.com/reference/requests/create_accounts#credits_pending_must_be_zero)\n */\n credits_pending_must_be_zero = 11,\n\n /**\n * See [credits_posted_must_be_zero](https://docs.tigerbeetle.com/reference/requests/create_accounts#credits_posted_must_be_zero)\n */\n credits_posted_must_be_zero = 12,\n\n /**\n * See [ledger_must_not_be_zero](https://docs.tigerbeetle.com/reference/requests/create_accounts#ledger_must_not_be_zero)\n */\n ledger_must_not_be_zero = 13,\n\n /**\n * See [code_must_not_be_zero](https://docs.tigerbeetle.com/reference/requests/create_accounts#code_must_not_be_zero)\n */\n code_must_not_be_zero = 14,\n\n /**\n * See [imported_event_timestamp_must_not_regress](https://docs.tigerbeetle.com/reference/requests/create_accounts#imported_event_timestamp_must_not_regress)\n */\n imported_event_timestamp_must_not_regress = 26,\n}\n\n\n/**\n* See [CreateTransferError](https://docs.tigerbeetle.com/reference/requests/create_transfers#)\n*/\nexport enum CreateTransferError {\n\n /**\n * See [ok](https://docs.tigerbeetle.com/reference/requests/create_transfers#ok)\n */\n ok = 0,\n\n /**\n * See [linked_event_failed](https://docs.tigerbeetle.com/reference/requests/create_transfers#linked_event_failed)\n */\n linked_event_failed = 1,\n\n /**\n * See [linked_event_chain_open](https://docs.tigerbeetle.com/reference/requests/create_transfers#linked_event_chain_open)\n */\n linked_event_chain_open = 2,\n\n /**\n * See [imported_event_expected](https://docs.tigerbeetle.com/reference/requests/create_transfers#imported_event_expected)\n */\n imported_event_expected = 56,\n\n /**\n * See [imported_event_not_expected](https://docs.tigerbeetle.com/reference/requests/create_transfers#imported_event_not_expected)\n */\n imported_event_not_expected = 57,\n\n /**\n * See [timestamp_must_be_zero](https://docs.tigerbeetle.com/reference/requests/create_transfers#timestamp_must_be_zero)\n */\n timestamp_must_be_zero = 3,\n\n /**\n * See [imported_event_timestamp_out_of_range](https://docs.tigerbeetle.com/reference/requests/create_transfers#imported_event_timestamp_out_of_range)\n */\n imported_event_timestamp_out_of_range = 58,\n\n /**\n * See [imported_event_timestamp_must_not_advance](https://docs.tigerbeetle.com/reference/requests/create_transfers#imported_event_timestamp_must_not_advance)\n */\n imported_event_timestamp_must_not_advance = 59,\n\n /**\n * See [reserved_flag](https://docs.tigerbeetle.com/reference/requests/create_transfers#reserved_flag)\n */\n reserved_flag = 4,\n\n /**\n * See [id_must_not_be_zero](https://docs.tigerbeetle.com/reference/requests/create_transfers#id_must_not_be_zero)\n */\n id_must_not_be_zero = 5,\n\n /**\n * See [id_must_not_be_int_max](https://docs.tigerbeetle.com/reference/requests/create_transfers#id_must_not_be_int_max)\n */\n id_must_not_be_int_max = 6,\n\n /**\n * See [exists_with_different_flags](https://docs.tigerbeetle.com/reference/requests/create_transfers#exists_with_different_flags)\n */\n exists_with_different_flags = 36,\n\n /**\n * See [exists_with_different_pending_id](https://docs.tigerbeetle.com/reference/requests/create_transfers#exists_with_different_pending_id)\n */\n exists_with_different_pending_id = 40,\n\n /**\n * See [exists_with_different_timeout](https://docs.tigerbeetle.com/reference/requests/create_transfers#exists_with_different_timeout)\n */\n exists_with_different_timeout = 44,\n\n /**\n * See [exists_with_different_debit_account_id](https://docs.tigerbeetle.com/reference/requests/create_transfers#exists_with_different_debit_account_id)\n */\n exists_with_different_debit_account_id = 37,\n\n /**\n * See [exists_with_different_credit_account_id](https://docs.tigerbeetle.com/reference/requests/create_transfers#exists_with_different_credit_account_id)\n */\n exists_with_different_credit_account_id = 38,\n\n /**\n * See [exists_with_different_amount](https://docs.tigerbeetle.com/reference/requests/create_transfers#exists_with_different_amount)\n */\n exists_with_different_amount = 39,\n\n /**\n * See [exists_with_different_user_data_128](https://docs.tigerbeetle.com/reference/requests/create_transfers#exists_with_different_user_data_128)\n */\n exists_with_different_user_data_128 = 41,\n\n /**\n * See [exists_with_different_user_data_64](https://docs.tigerbeetle.com/reference/requests/create_transfers#exists_with_different_user_data_64)\n */\n exists_with_different_user_data_64 = 42,\n\n /**\n * See [exists_with_different_user_data_32](https://docs.tigerbeetle.com/reference/requests/create_transfers#exists_with_different_user_data_32)\n */\n exists_with_different_user_data_32 = 43,\n\n /**\n * See [exists_with_different_ledger](https://docs.tigerbeetle.com/reference/requests/create_transfers#exists_with_different_ledger)\n */\n exists_with_different_ledger = 67,\n\n /**\n * See [exists_with_different_code](https://docs.tigerbeetle.com/reference/requests/create_transfers#exists_with_different_code)\n */\n exists_with_different_code = 45,\n\n /**\n * See [exists](https://docs.tigerbeetle.com/reference/requests/create_transfers#exists)\n */\n exists = 46,\n\n /**\n * See [id_already_failed](https://docs.tigerbeetle.com/reference/requests/create_transfers#id_already_failed)\n */\n id_already_failed = 68,\n\n /**\n * See [flags_are_mutually_exclusive](https://docs.tigerbeetle.com/reference/requests/create_transfers#flags_are_mutually_exclusive)\n */\n flags_are_mutually_exclusive = 7,\n\n /**\n * See [debit_account_id_must_not_be_zero](https://docs.tigerbeetle.com/reference/requests/create_transfers#debit_account_id_must_not_be_zero)\n */\n debit_account_id_must_not_be_zero = 8,\n\n /**\n * See [debit_account_id_must_not_be_int_max](https://docs.tigerbeetle.com/reference/requests/create_transfers#debit_account_id_must_not_be_int_max)\n */\n debit_account_id_must_not_be_int_max = 9,\n\n /**\n * See [credit_account_id_must_not_be_zero](https://docs.tigerbeetle.com/reference/requests/create_transfers#credit_account_id_must_not_be_zero)\n */\n credit_account_id_must_not_be_zero = 10,\n\n /**\n * See [credit_account_id_must_not_be_int_max](https://docs.tigerbeetle.com/reference/requests/create_transfers#credit_account_id_must_not_be_int_max)\n */\n credit_account_id_must_not_be_int_max = 11,\n\n /**\n * See [accounts_must_be_different](https://docs.tigerbeetle.com/reference/requests/create_transfers#accounts_must_be_different)\n */\n accounts_must_be_different = 12,\n\n /**\n * See [pending_id_must_be_zero](https://docs.tigerbeetle.com/reference/requests/create_transfers#pending_id_must_be_zero)\n */\n pending_id_must_be_zero = 13,\n\n /**\n * See [pending_id_must_not_be_zero](https://docs.tigerbeetle.com/reference/requests/create_transfers#pending_id_must_not_be_zero)\n */\n pending_id_must_not_be_zero = 14,\n\n /**\n * See [pending_id_must_not_be_int_max](https://docs.tigerbeetle.com/reference/requests/create_transfers#pending_id_must_not_be_int_max)\n */\n pending_id_must_not_be_int_max = 15,\n\n /**\n * See [pending_id_must_be_different](https://docs.tigerbeetle.com/reference/requests/create_transfers#pending_id_must_be_different)\n */\n pending_id_must_be_different = 16,\n\n /**\n * See [timeout_reserved_for_pending_transfer](https://docs.tigerbeetle.com/reference/requests/create_transfers#timeout_reserved_for_pending_transfer)\n */\n timeout_reserved_for_pending_transfer = 17,\n\n /**\n * See [closing_transfer_must_be_pending](https://docs.tigerbeetle.com/reference/requests/create_transfers#closing_transfer_must_be_pending)\n */\n closing_transfer_must_be_pending = 64,\n\n /**\n * See [amount_must_not_be_zero](https://docs.tigerbeetle.com/reference/requests/create_transfers#amount_must_not_be_zero)\n */\n amount_must_not_be_zero = 18,\n\n /**\n * See [ledger_must_not_be_zero](https://docs.tigerbeetle.com/reference/requests/create_transfers#ledger_must_not_be_zero)\n */\n ledger_must_not_be_zero = 19,\n\n /**\n * See [code_must_not_be_zero](https://docs.tigerbeetle.com/reference/requests/create_transfers#code_must_not_be_zero)\n */\n code_must_not_be_zero = 20,\n\n /**\n * See [debit_account_not_found](https://docs.tigerbeetle.com/reference/requests/create_transfers#debit_account_not_found)\n */\n debit_account_not_found = 21,\n\n /**\n * See [credit_account_not_found](https://docs.tigerbeetle.com/reference/requests/create_transfers#credit_account_not_found)\n */\n credit_account_not_found = 22,\n\n /**\n * See [accounts_must_have_the_same_ledger](https://docs.tigerbeetle.com/reference/requests/create_transfers#accounts_must_have_the_same_ledger)\n */\n accounts_must_have_the_same_ledger = 23,\n\n /**\n * See [transfer_must_have_the_same_ledger_as_accounts](https://docs.tigerbeetle.com/reference/requests/create_transfers#transfer_must_have_the_same_ledger_as_accounts)\n */\n transfer_must_have_the_same_ledger_as_accounts = 24,\n\n /**\n * See [pending_transfer_not_found](https://docs.tigerbeetle.com/reference/requests/create_transfers#pending_transfer_not_found)\n */\n pending_transfer_not_found = 25,\n\n /**\n * See [pending_transfer_not_pending](https://docs.tigerbeetle.com/reference/requests/create_transfers#pending_transfer_not_pending)\n */\n pending_transfer_not_pending = 26,\n\n /**\n * See [pending_transfer_has_different_debit_account_id](https://docs.tigerbeetle.com/reference/requests/create_transfers#pending_transfer_has_different_debit_account_id)\n */\n pending_transfer_has_different_debit_account_id = 27,\n\n /**\n * See [pending_transfer_has_different_credit_account_id](https://docs.tigerbeetle.com/reference/requests/create_transfers#pending_transfer_has_different_credit_account_id)\n */\n pending_transfer_has_different_credit_account_id = 28,\n\n /**\n * See [pending_transfer_has_different_ledger](https://docs.tigerbeetle.com/reference/requests/create_transfers#pending_transfer_has_different_ledger)\n */\n pending_transfer_has_different_ledger = 29,\n\n /**\n * See [pending_transfer_has_different_code](https://docs.tigerbeetle.com/reference/requests/create_transfers#pending_transfer_has_different_code)\n */\n pending_transfer_has_different_code = 30,\n\n /**\n * See [exceeds_pending_transfer_amount](https://docs.tigerbeetle.com/reference/requests/create_transfers#exceeds_pending_transfer_amount)\n */\n exceeds_pending_transfer_amount = 31,\n\n /**\n * See [pending_transfer_has_different_amount](https://docs.tigerbeetle.com/reference/requests/create_transfers#pending_transfer_has_different_amount)\n */\n pending_transfer_has_different_amount = 32,\n\n /**\n * See [pending_transfer_already_posted](https://docs.tigerbeetle.com/reference/requests/create_transfers#pending_transfer_already_posted)\n */\n pending_transfer_already_posted = 33,\n\n /**\n * See [pending_transfer_already_voided](https://docs.tigerbeetle.com/reference/requests/create_transfers#pending_transfer_already_voided)\n */\n pending_transfer_already_voided = 34,\n\n /**\n * See [pending_transfer_expired](https://docs.tigerbeetle.com/reference/requests/create_transfers#pending_transfer_expired)\n */\n pending_transfer_expired = 35,\n\n /**\n * See [imported_event_timestamp_must_not_regress](https://docs.tigerbeetle.com/reference/requests/create_transfers#imported_event_timestamp_must_not_regress)\n */\n imported_event_timestamp_must_not_regress = 60,\n\n /**\n * See [imported_event_timestamp_must_postdate_debit_account](https://docs.tigerbeetle.com/reference/requests/create_transfers#imported_event_timestamp_must_postdate_debit_account)\n */\n imported_event_timestamp_must_postdate_debit_account = 61,\n\n /**\n * See [imported_event_timestamp_must_postdate_credit_account](https://docs.tigerbeetle.com/reference/requests/create_transfers#imported_event_timestamp_must_postdate_credit_account)\n */\n imported_event_timestamp_must_postdate_credit_account = 62,\n\n /**\n * See [imported_event_timeout_must_be_zero](https://docs.tigerbeetle.com/reference/requests/create_transfers#imported_event_timeout_must_be_zero)\n */\n imported_event_timeout_must_be_zero = 63,\n\n /**\n * See [debit_account_already_closed](https://docs.tigerbeetle.com/reference/requests/create_transfers#debit_account_already_closed)\n */\n debit_account_already_closed = 65,\n\n /**\n * See [credit_account_already_closed](https://docs.tigerbeetle.com/reference/requests/create_transfers#credit_account_already_closed)\n */\n credit_account_already_closed = 66,\n\n /**\n * See [overflows_debits_pending](https://docs.tigerbeetle.com/reference/requests/create_transfers#overflows_debits_pending)\n */\n overflows_debits_pending = 47,\n\n /**\n * See [overflows_credits_pending](https://docs.tigerbeetle.com/reference/requests/create_transfers#overflows_credits_pending)\n */\n overflows_credits_pending = 48,\n\n /**\n * See [overflows_debits_posted](https://docs.tigerbeetle.com/reference/requests/create_transfers#overflows_debits_posted)\n */\n overflows_debits_posted = 49,\n\n /**\n * See [overflows_credits_posted](https://docs.tigerbeetle.com/reference/requests/create_transfers#overflows_credits_posted)\n */\n overflows_credits_posted = 50,\n\n /**\n * See [overflows_debits](https://docs.tigerbeetle.com/reference/requests/create_transfers#overflows_debits)\n */\n overflows_debits = 51,\n\n /**\n * See [overflows_credits](https://docs.tigerbeetle.com/reference/requests/create_transfers#overflows_credits)\n */\n overflows_credits = 52,\n\n /**\n * See [overflows_timeout](https://docs.tigerbeetle.com/reference/requests/create_transfers#overflows_timeout)\n */\n overflows_timeout = 53,\n\n /**\n * See [exceeds_credits](https://docs.tigerbeetle.com/reference/requests/create_transfers#exceeds_credits)\n */\n exceeds_credits = 54,\n\n /**\n * See [exceeds_debits](https://docs.tigerbeetle.com/reference/requests/create_transfers#exceeds_debits)\n */\n exceeds_debits = 55,\n}\n\nexport type CreateAccountsError = {\n index: number\n result: CreateAccountError\n}\n\nexport type CreateTransfersError = {\n index: number\n result: CreateTransferError\n}\n\n\n/**\n* See [AccountFilter](https://docs.tigerbeetle.com/reference/account-filter#)\n*/\nexport type AccountFilter = {\n\n /**\n * See [account_id](https://docs.tigerbeetle.com/reference/account-filter#account_id)\n */\n account_id: bigint\n\n /**\n * See [user_data_128](https://docs.tigerbeetle.com/reference/account-filter#user_data_128)\n */\n user_data_128: bigint\n\n /**\n * See [user_data_64](https://docs.tigerbeetle.com/reference/account-filter#user_data_64)\n */\n user_data_64: bigint\n\n /**\n * See [user_data_32](https://docs.tigerbeetle.com/reference/account-filter#user_data_32)\n */\n user_data_32: number\n\n /**\n * See [code](https://docs.tigerbeetle.com/reference/account-filter#code)\n */\n code: number\n\n /**\n * See [timestamp_min](https://docs.tigerbeetle.com/reference/account-filter#timestamp_min)\n */\n timestamp_min: bigint\n\n /**\n * See [timestamp_max](https://docs.tigerbeetle.com/reference/account-filter#timestamp_max)\n */\n timestamp_max: bigint\n\n /**\n * See [limit](https://docs.tigerbeetle.com/reference/account-filter#limit)\n */\n limit: number\n\n /**\n * See [flags](https://docs.tigerbeetle.com/reference/account-filter#flags)\n */\n flags: number\n}\n\n\n/**\n* See [QueryFilter](https://docs.tigerbeetle.com/reference/query-filter#)\n*/\nexport type QueryFilter = {\n\n /**\n * See [user_data_128](https://docs.tigerbeetle.com/reference/query-filter#user_data_128)\n */\n user_data_128: bigint\n\n /**\n * See [user_data_64](https://docs.tigerbeetle.com/reference/query-filter#user_data_64)\n */\n user_data_64: bigint\n\n /**\n * See [user_data_32](https://docs.tigerbeetle.com/reference/query-filter#user_data_32)\n */\n user_data_32: number\n\n /**\n * See [ledger](https://docs.tigerbeetle.com/reference/query-filter#ledger)\n */\n ledger: number\n\n /**\n * See [code](https://docs.tigerbeetle.com/reference/query-filter#code)\n */\n code: number\n\n /**\n * See [timestamp_min](https://docs.tigerbeetle.com/reference/query-filter#timestamp_min)\n */\n timestamp_min: bigint\n\n /**\n * See [timestamp_max](https://docs.tigerbeetle.com/reference/query-filter#timestamp_max)\n */\n timestamp_max: bigint\n\n /**\n * See [limit](https://docs.tigerbeetle.com/reference/query-filter#limit)\n */\n limit: number\n\n /**\n * See [flags](https://docs.tigerbeetle.com/reference/query-filter#flags)\n */\n flags: number\n}\n\n\n/**\n* See [AccountBalance](https://docs.tigerbeetle.com/reference/account-balances#)\n*/\nexport type AccountBalance = {\n\n /**\n * See [debits_pending](https://docs.tigerbeetle.com/reference/account-balances#debits_pending)\n */\n debits_pending: bigint\n\n /**\n * See [debits_posted](https://docs.tigerbeetle.com/reference/account-balances#debits_posted)\n */\n debits_posted: bigint\n\n /**\n * See [credits_pending](https://docs.tigerbeetle.com/reference/account-balances#credits_pending)\n */\n credits_pending: bigint\n\n /**\n * See [credits_posted](https://docs.tigerbeetle.com/reference/account-balances#credits_posted)\n */\n credits_posted: bigint\n\n /**\n * See [timestamp](https://docs.tigerbeetle.com/reference/account-balances#timestamp)\n */\n timestamp: bigint\n}\n\nexport enum Operation {\n pulse = 128,\n create_accounts = 129,\n create_transfers = 130,\n lookup_accounts = 131,\n lookup_transfers = 132,\n get_account_transfers = 133,\n get_account_balances = 134,\n query_accounts = 135,\n query_transfers = 136,\n get_events = 137,\n}\n\n"]}
1
+ {"version":3,"file":"bindings.js","sourceRoot":"","sources":["../src/bindings.ts"],"names":[],"mappings":"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","sourcesContent":["///////////////////////////////////////////////////////\n// This file was auto-generated by node_bindings.zig //\n// Do not manually modify. //\n///////////////////////////////////////////////////////\n\n\n/**\n* See [AccountFlags](https://docs.tigerbeetle.com/reference/account#flags)\n*/\nexport enum AccountFlags {\n none = 0,\n\n /**\n * See [linked](https://docs.tigerbeetle.com/reference/account#flagslinked)\n */\n linked = (1 << 0),\n\n /**\n * See [debits_must_not_exceed_credits](https://docs.tigerbeetle.com/reference/account#flagsdebits_must_not_exceed_credits)\n */\n debits_must_not_exceed_credits = (1 << 1),\n\n /**\n * See [credits_must_not_exceed_debits](https://docs.tigerbeetle.com/reference/account#flagscredits_must_not_exceed_debits)\n */\n credits_must_not_exceed_debits = (1 << 2),\n\n /**\n * See [history](https://docs.tigerbeetle.com/reference/account#flagshistory)\n */\n history = (1 << 3),\n\n /**\n * See [imported](https://docs.tigerbeetle.com/reference/account#flagsimported)\n */\n imported = (1 << 4),\n\n /**\n * See [closed](https://docs.tigerbeetle.com/reference/account#flagsclosed)\n */\n closed = (1 << 5),\n}\n\n\n/**\n* See [TransferFlags](https://docs.tigerbeetle.com/reference/transfer#flags)\n*/\nexport enum TransferFlags {\n none = 0,\n\n /**\n * See [linked](https://docs.tigerbeetle.com/reference/transfer#flagslinked)\n */\n linked = (1 << 0),\n\n /**\n * See [pending](https://docs.tigerbeetle.com/reference/transfer#flagspending)\n */\n pending = (1 << 1),\n\n /**\n * See [post_pending_transfer](https://docs.tigerbeetle.com/reference/transfer#flagspost_pending_transfer)\n */\n post_pending_transfer = (1 << 2),\n\n /**\n * See [void_pending_transfer](https://docs.tigerbeetle.com/reference/transfer#flagsvoid_pending_transfer)\n */\n void_pending_transfer = (1 << 3),\n\n /**\n * See [balancing_debit](https://docs.tigerbeetle.com/reference/transfer#flagsbalancing_debit)\n */\n balancing_debit = (1 << 4),\n\n /**\n * See [balancing_credit](https://docs.tigerbeetle.com/reference/transfer#flagsbalancing_credit)\n */\n balancing_credit = (1 << 5),\n\n /**\n * See [closing_debit](https://docs.tigerbeetle.com/reference/transfer#flagsclosing_debit)\n */\n closing_debit = (1 << 6),\n\n /**\n * See [closing_credit](https://docs.tigerbeetle.com/reference/transfer#flagsclosing_credit)\n */\n closing_credit = (1 << 7),\n\n /**\n * See [imported](https://docs.tigerbeetle.com/reference/transfer#flagsimported)\n */\n imported = (1 << 8),\n}\n\n\n/**\n* See [AccountFilterFlags](https://docs.tigerbeetle.com/reference/account-filter#flags)\n*/\nexport enum AccountFilterFlags {\n none = 0,\n\n /**\n * See [debits](https://docs.tigerbeetle.com/reference/account-filter#flagsdebits)\n */\n debits = (1 << 0),\n\n /**\n * See [credits](https://docs.tigerbeetle.com/reference/account-filter#flagscredits)\n */\n credits = (1 << 1),\n\n /**\n * See [reversed](https://docs.tigerbeetle.com/reference/account-filter#flagsreversed)\n */\n reversed = (1 << 2),\n}\n\n\n/**\n* See [QueryFilterFlags](https://docs.tigerbeetle.com/reference/query-filter#flags)\n*/\nexport enum QueryFilterFlags {\n none = 0,\n\n /**\n * See [reversed](https://docs.tigerbeetle.com/reference/query-filter#flagsreversed)\n */\n reversed = (1 << 0),\n}\n\n\n/**\n* See [Account](https://docs.tigerbeetle.com/reference/account/#)\n*/\nexport type Account = {\n\n /**\n * See [id](https://docs.tigerbeetle.com/reference/account/#id)\n */\n id: bigint\n\n /**\n * See [debits_pending](https://docs.tigerbeetle.com/reference/account/#debits_pending)\n */\n debits_pending: bigint\n\n /**\n * See [debits_posted](https://docs.tigerbeetle.com/reference/account/#debits_posted)\n */\n debits_posted: bigint\n\n /**\n * See [credits_pending](https://docs.tigerbeetle.com/reference/account/#credits_pending)\n */\n credits_pending: bigint\n\n /**\n * See [credits_posted](https://docs.tigerbeetle.com/reference/account/#credits_posted)\n */\n credits_posted: bigint\n\n /**\n * See [user_data_128](https://docs.tigerbeetle.com/reference/account/#user_data_128)\n */\n user_data_128: bigint\n\n /**\n * See [user_data_64](https://docs.tigerbeetle.com/reference/account/#user_data_64)\n */\n user_data_64: bigint\n\n /**\n * See [user_data_32](https://docs.tigerbeetle.com/reference/account/#user_data_32)\n */\n user_data_32: number\n\n /**\n * See [reserved](https://docs.tigerbeetle.com/reference/account/#reserved)\n */\n reserved: number\n\n /**\n * See [ledger](https://docs.tigerbeetle.com/reference/account/#ledger)\n */\n ledger: number\n\n /**\n * See [code](https://docs.tigerbeetle.com/reference/account/#code)\n */\n code: number\n\n /**\n * See [flags](https://docs.tigerbeetle.com/reference/account/#flags)\n */\n flags: number\n\n /**\n * See [timestamp](https://docs.tigerbeetle.com/reference/account/#timestamp)\n */\n timestamp: bigint\n}\n\n\n/**\n* See [Transfer](https://docs.tigerbeetle.com/reference/transfer/#)\n*/\nexport type Transfer = {\n\n /**\n * See [id](https://docs.tigerbeetle.com/reference/transfer/#id)\n */\n id: bigint\n\n /**\n * See [debit_account_id](https://docs.tigerbeetle.com/reference/transfer/#debit_account_id)\n */\n debit_account_id: bigint\n\n /**\n * See [credit_account_id](https://docs.tigerbeetle.com/reference/transfer/#credit_account_id)\n */\n credit_account_id: bigint\n\n /**\n * See [amount](https://docs.tigerbeetle.com/reference/transfer/#amount)\n */\n amount: bigint\n\n /**\n * See [pending_id](https://docs.tigerbeetle.com/reference/transfer/#pending_id)\n */\n pending_id: bigint\n\n /**\n * See [user_data_128](https://docs.tigerbeetle.com/reference/transfer/#user_data_128)\n */\n user_data_128: bigint\n\n /**\n * See [user_data_64](https://docs.tigerbeetle.com/reference/transfer/#user_data_64)\n */\n user_data_64: bigint\n\n /**\n * See [user_data_32](https://docs.tigerbeetle.com/reference/transfer/#user_data_32)\n */\n user_data_32: number\n\n /**\n * See [timeout](https://docs.tigerbeetle.com/reference/transfer/#timeout)\n */\n timeout: number\n\n /**\n * See [ledger](https://docs.tigerbeetle.com/reference/transfer/#ledger)\n */\n ledger: number\n\n /**\n * See [code](https://docs.tigerbeetle.com/reference/transfer/#code)\n */\n code: number\n\n /**\n * See [flags](https://docs.tigerbeetle.com/reference/transfer/#flags)\n */\n flags: number\n\n /**\n * See [timestamp](https://docs.tigerbeetle.com/reference/transfer/#timestamp)\n */\n timestamp: bigint\n}\n\n\n/**\n* See [CreateAccountError](https://docs.tigerbeetle.com/reference/requests/create_accounts#)\n*/\nexport enum CreateAccountError {\n\n /**\n * See [ok](https://docs.tigerbeetle.com/reference/requests/create_accounts#ok)\n */\n ok = 0,\n\n /**\n * See [linked_event_failed](https://docs.tigerbeetle.com/reference/requests/create_accounts#linked_event_failed)\n */\n linked_event_failed = 1,\n\n /**\n * See [linked_event_chain_open](https://docs.tigerbeetle.com/reference/requests/create_accounts#linked_event_chain_open)\n */\n linked_event_chain_open = 2,\n\n /**\n * See [imported_event_expected](https://docs.tigerbeetle.com/reference/requests/create_accounts#imported_event_expected)\n */\n imported_event_expected = 22,\n\n /**\n * See [imported_event_not_expected](https://docs.tigerbeetle.com/reference/requests/create_accounts#imported_event_not_expected)\n */\n imported_event_not_expected = 23,\n\n /**\n * See [timestamp_must_be_zero](https://docs.tigerbeetle.com/reference/requests/create_accounts#timestamp_must_be_zero)\n */\n timestamp_must_be_zero = 3,\n\n /**\n * See [imported_event_timestamp_out_of_range](https://docs.tigerbeetle.com/reference/requests/create_accounts#imported_event_timestamp_out_of_range)\n */\n imported_event_timestamp_out_of_range = 24,\n\n /**\n * See [imported_event_timestamp_must_not_advance](https://docs.tigerbeetle.com/reference/requests/create_accounts#imported_event_timestamp_must_not_advance)\n */\n imported_event_timestamp_must_not_advance = 25,\n\n /**\n * See [reserved_field](https://docs.tigerbeetle.com/reference/requests/create_accounts#reserved_field)\n */\n reserved_field = 4,\n\n /**\n * See [reserved_flag](https://docs.tigerbeetle.com/reference/requests/create_accounts#reserved_flag)\n */\n reserved_flag = 5,\n\n /**\n * See [id_must_not_be_zero](https://docs.tigerbeetle.com/reference/requests/create_accounts#id_must_not_be_zero)\n */\n id_must_not_be_zero = 6,\n\n /**\n * See [id_must_not_be_int_max](https://docs.tigerbeetle.com/reference/requests/create_accounts#id_must_not_be_int_max)\n */\n id_must_not_be_int_max = 7,\n\n /**\n * See [exists_with_different_flags](https://docs.tigerbeetle.com/reference/requests/create_accounts#exists_with_different_flags)\n */\n exists_with_different_flags = 15,\n\n /**\n * See [exists_with_different_user_data_128](https://docs.tigerbeetle.com/reference/requests/create_accounts#exists_with_different_user_data_128)\n */\n exists_with_different_user_data_128 = 16,\n\n /**\n * See [exists_with_different_user_data_64](https://docs.tigerbeetle.com/reference/requests/create_accounts#exists_with_different_user_data_64)\n */\n exists_with_different_user_data_64 = 17,\n\n /**\n * See [exists_with_different_user_data_32](https://docs.tigerbeetle.com/reference/requests/create_accounts#exists_with_different_user_data_32)\n */\n exists_with_different_user_data_32 = 18,\n\n /**\n * See [exists_with_different_ledger](https://docs.tigerbeetle.com/reference/requests/create_accounts#exists_with_different_ledger)\n */\n exists_with_different_ledger = 19,\n\n /**\n * See [exists_with_different_code](https://docs.tigerbeetle.com/reference/requests/create_accounts#exists_with_different_code)\n */\n exists_with_different_code = 20,\n\n /**\n * See [exists](https://docs.tigerbeetle.com/reference/requests/create_accounts#exists)\n */\n exists = 21,\n\n /**\n * See [flags_are_mutually_exclusive](https://docs.tigerbeetle.com/reference/requests/create_accounts#flags_are_mutually_exclusive)\n */\n flags_are_mutually_exclusive = 8,\n\n /**\n * See [debits_pending_must_be_zero](https://docs.tigerbeetle.com/reference/requests/create_accounts#debits_pending_must_be_zero)\n */\n debits_pending_must_be_zero = 9,\n\n /**\n * See [debits_posted_must_be_zero](https://docs.tigerbeetle.com/reference/requests/create_accounts#debits_posted_must_be_zero)\n */\n debits_posted_must_be_zero = 10,\n\n /**\n * See [credits_pending_must_be_zero](https://docs.tigerbeetle.com/reference/requests/create_accounts#credits_pending_must_be_zero)\n */\n credits_pending_must_be_zero = 11,\n\n /**\n * See [credits_posted_must_be_zero](https://docs.tigerbeetle.com/reference/requests/create_accounts#credits_posted_must_be_zero)\n */\n credits_posted_must_be_zero = 12,\n\n /**\n * See [ledger_must_not_be_zero](https://docs.tigerbeetle.com/reference/requests/create_accounts#ledger_must_not_be_zero)\n */\n ledger_must_not_be_zero = 13,\n\n /**\n * See [code_must_not_be_zero](https://docs.tigerbeetle.com/reference/requests/create_accounts#code_must_not_be_zero)\n */\n code_must_not_be_zero = 14,\n\n /**\n * See [imported_event_timestamp_must_not_regress](https://docs.tigerbeetle.com/reference/requests/create_accounts#imported_event_timestamp_must_not_regress)\n */\n imported_event_timestamp_must_not_regress = 26,\n}\n\n\n/**\n* See [CreateTransferError](https://docs.tigerbeetle.com/reference/requests/create_transfers#)\n*/\nexport enum CreateTransferError {\n\n /**\n * See [ok](https://docs.tigerbeetle.com/reference/requests/create_transfers#ok)\n */\n ok = 0,\n\n /**\n * See [linked_event_failed](https://docs.tigerbeetle.com/reference/requests/create_transfers#linked_event_failed)\n */\n linked_event_failed = 1,\n\n /**\n * See [linked_event_chain_open](https://docs.tigerbeetle.com/reference/requests/create_transfers#linked_event_chain_open)\n */\n linked_event_chain_open = 2,\n\n /**\n * See [imported_event_expected](https://docs.tigerbeetle.com/reference/requests/create_transfers#imported_event_expected)\n */\n imported_event_expected = 56,\n\n /**\n * See [imported_event_not_expected](https://docs.tigerbeetle.com/reference/requests/create_transfers#imported_event_not_expected)\n */\n imported_event_not_expected = 57,\n\n /**\n * See [timestamp_must_be_zero](https://docs.tigerbeetle.com/reference/requests/create_transfers#timestamp_must_be_zero)\n */\n timestamp_must_be_zero = 3,\n\n /**\n * See [imported_event_timestamp_out_of_range](https://docs.tigerbeetle.com/reference/requests/create_transfers#imported_event_timestamp_out_of_range)\n */\n imported_event_timestamp_out_of_range = 58,\n\n /**\n * See [imported_event_timestamp_must_not_advance](https://docs.tigerbeetle.com/reference/requests/create_transfers#imported_event_timestamp_must_not_advance)\n */\n imported_event_timestamp_must_not_advance = 59,\n\n /**\n * See [reserved_flag](https://docs.tigerbeetle.com/reference/requests/create_transfers#reserved_flag)\n */\n reserved_flag = 4,\n\n /**\n * See [id_must_not_be_zero](https://docs.tigerbeetle.com/reference/requests/create_transfers#id_must_not_be_zero)\n */\n id_must_not_be_zero = 5,\n\n /**\n * See [id_must_not_be_int_max](https://docs.tigerbeetle.com/reference/requests/create_transfers#id_must_not_be_int_max)\n */\n id_must_not_be_int_max = 6,\n\n /**\n * See [exists_with_different_flags](https://docs.tigerbeetle.com/reference/requests/create_transfers#exists_with_different_flags)\n */\n exists_with_different_flags = 36,\n\n /**\n * See [exists_with_different_pending_id](https://docs.tigerbeetle.com/reference/requests/create_transfers#exists_with_different_pending_id)\n */\n exists_with_different_pending_id = 40,\n\n /**\n * See [exists_with_different_timeout](https://docs.tigerbeetle.com/reference/requests/create_transfers#exists_with_different_timeout)\n */\n exists_with_different_timeout = 44,\n\n /**\n * See [exists_with_different_debit_account_id](https://docs.tigerbeetle.com/reference/requests/create_transfers#exists_with_different_debit_account_id)\n */\n exists_with_different_debit_account_id = 37,\n\n /**\n * See [exists_with_different_credit_account_id](https://docs.tigerbeetle.com/reference/requests/create_transfers#exists_with_different_credit_account_id)\n */\n exists_with_different_credit_account_id = 38,\n\n /**\n * See [exists_with_different_amount](https://docs.tigerbeetle.com/reference/requests/create_transfers#exists_with_different_amount)\n */\n exists_with_different_amount = 39,\n\n /**\n * See [exists_with_different_user_data_128](https://docs.tigerbeetle.com/reference/requests/create_transfers#exists_with_different_user_data_128)\n */\n exists_with_different_user_data_128 = 41,\n\n /**\n * See [exists_with_different_user_data_64](https://docs.tigerbeetle.com/reference/requests/create_transfers#exists_with_different_user_data_64)\n */\n exists_with_different_user_data_64 = 42,\n\n /**\n * See [exists_with_different_user_data_32](https://docs.tigerbeetle.com/reference/requests/create_transfers#exists_with_different_user_data_32)\n */\n exists_with_different_user_data_32 = 43,\n\n /**\n * See [exists_with_different_ledger](https://docs.tigerbeetle.com/reference/requests/create_transfers#exists_with_different_ledger)\n */\n exists_with_different_ledger = 67,\n\n /**\n * See [exists_with_different_code](https://docs.tigerbeetle.com/reference/requests/create_transfers#exists_with_different_code)\n */\n exists_with_different_code = 45,\n\n /**\n * See [exists](https://docs.tigerbeetle.com/reference/requests/create_transfers#exists)\n */\n exists = 46,\n\n /**\n * See [id_already_failed](https://docs.tigerbeetle.com/reference/requests/create_transfers#id_already_failed)\n */\n id_already_failed = 68,\n\n /**\n * See [flags_are_mutually_exclusive](https://docs.tigerbeetle.com/reference/requests/create_transfers#flags_are_mutually_exclusive)\n */\n flags_are_mutually_exclusive = 7,\n\n /**\n * See [debit_account_id_must_not_be_zero](https://docs.tigerbeetle.com/reference/requests/create_transfers#debit_account_id_must_not_be_zero)\n */\n debit_account_id_must_not_be_zero = 8,\n\n /**\n * See [debit_account_id_must_not_be_int_max](https://docs.tigerbeetle.com/reference/requests/create_transfers#debit_account_id_must_not_be_int_max)\n */\n debit_account_id_must_not_be_int_max = 9,\n\n /**\n * See [credit_account_id_must_not_be_zero](https://docs.tigerbeetle.com/reference/requests/create_transfers#credit_account_id_must_not_be_zero)\n */\n credit_account_id_must_not_be_zero = 10,\n\n /**\n * See [credit_account_id_must_not_be_int_max](https://docs.tigerbeetle.com/reference/requests/create_transfers#credit_account_id_must_not_be_int_max)\n */\n credit_account_id_must_not_be_int_max = 11,\n\n /**\n * See [accounts_must_be_different](https://docs.tigerbeetle.com/reference/requests/create_transfers#accounts_must_be_different)\n */\n accounts_must_be_different = 12,\n\n /**\n * See [pending_id_must_be_zero](https://docs.tigerbeetle.com/reference/requests/create_transfers#pending_id_must_be_zero)\n */\n pending_id_must_be_zero = 13,\n\n /**\n * See [pending_id_must_not_be_zero](https://docs.tigerbeetle.com/reference/requests/create_transfers#pending_id_must_not_be_zero)\n */\n pending_id_must_not_be_zero = 14,\n\n /**\n * See [pending_id_must_not_be_int_max](https://docs.tigerbeetle.com/reference/requests/create_transfers#pending_id_must_not_be_int_max)\n */\n pending_id_must_not_be_int_max = 15,\n\n /**\n * See [pending_id_must_be_different](https://docs.tigerbeetle.com/reference/requests/create_transfers#pending_id_must_be_different)\n */\n pending_id_must_be_different = 16,\n\n /**\n * See [timeout_reserved_for_pending_transfer](https://docs.tigerbeetle.com/reference/requests/create_transfers#timeout_reserved_for_pending_transfer)\n */\n timeout_reserved_for_pending_transfer = 17,\n\n /**\n * See [closing_transfer_must_be_pending](https://docs.tigerbeetle.com/reference/requests/create_transfers#closing_transfer_must_be_pending)\n */\n closing_transfer_must_be_pending = 64,\n\n /**\n * See [ledger_must_not_be_zero](https://docs.tigerbeetle.com/reference/requests/create_transfers#ledger_must_not_be_zero)\n */\n ledger_must_not_be_zero = 19,\n\n /**\n * See [code_must_not_be_zero](https://docs.tigerbeetle.com/reference/requests/create_transfers#code_must_not_be_zero)\n */\n code_must_not_be_zero = 20,\n\n /**\n * See [debit_account_not_found](https://docs.tigerbeetle.com/reference/requests/create_transfers#debit_account_not_found)\n */\n debit_account_not_found = 21,\n\n /**\n * See [credit_account_not_found](https://docs.tigerbeetle.com/reference/requests/create_transfers#credit_account_not_found)\n */\n credit_account_not_found = 22,\n\n /**\n * See [accounts_must_have_the_same_ledger](https://docs.tigerbeetle.com/reference/requests/create_transfers#accounts_must_have_the_same_ledger)\n */\n accounts_must_have_the_same_ledger = 23,\n\n /**\n * See [transfer_must_have_the_same_ledger_as_accounts](https://docs.tigerbeetle.com/reference/requests/create_transfers#transfer_must_have_the_same_ledger_as_accounts)\n */\n transfer_must_have_the_same_ledger_as_accounts = 24,\n\n /**\n * See [pending_transfer_not_found](https://docs.tigerbeetle.com/reference/requests/create_transfers#pending_transfer_not_found)\n */\n pending_transfer_not_found = 25,\n\n /**\n * See [pending_transfer_not_pending](https://docs.tigerbeetle.com/reference/requests/create_transfers#pending_transfer_not_pending)\n */\n pending_transfer_not_pending = 26,\n\n /**\n * See [pending_transfer_has_different_debit_account_id](https://docs.tigerbeetle.com/reference/requests/create_transfers#pending_transfer_has_different_debit_account_id)\n */\n pending_transfer_has_different_debit_account_id = 27,\n\n /**\n * See [pending_transfer_has_different_credit_account_id](https://docs.tigerbeetle.com/reference/requests/create_transfers#pending_transfer_has_different_credit_account_id)\n */\n pending_transfer_has_different_credit_account_id = 28,\n\n /**\n * See [pending_transfer_has_different_ledger](https://docs.tigerbeetle.com/reference/requests/create_transfers#pending_transfer_has_different_ledger)\n */\n pending_transfer_has_different_ledger = 29,\n\n /**\n * See [pending_transfer_has_different_code](https://docs.tigerbeetle.com/reference/requests/create_transfers#pending_transfer_has_different_code)\n */\n pending_transfer_has_different_code = 30,\n\n /**\n * See [exceeds_pending_transfer_amount](https://docs.tigerbeetle.com/reference/requests/create_transfers#exceeds_pending_transfer_amount)\n */\n exceeds_pending_transfer_amount = 31,\n\n /**\n * See [pending_transfer_has_different_amount](https://docs.tigerbeetle.com/reference/requests/create_transfers#pending_transfer_has_different_amount)\n */\n pending_transfer_has_different_amount = 32,\n\n /**\n * See [pending_transfer_already_posted](https://docs.tigerbeetle.com/reference/requests/create_transfers#pending_transfer_already_posted)\n */\n pending_transfer_already_posted = 33,\n\n /**\n * See [pending_transfer_already_voided](https://docs.tigerbeetle.com/reference/requests/create_transfers#pending_transfer_already_voided)\n */\n pending_transfer_already_voided = 34,\n\n /**\n * See [pending_transfer_expired](https://docs.tigerbeetle.com/reference/requests/create_transfers#pending_transfer_expired)\n */\n pending_transfer_expired = 35,\n\n /**\n * See [imported_event_timestamp_must_not_regress](https://docs.tigerbeetle.com/reference/requests/create_transfers#imported_event_timestamp_must_not_regress)\n */\n imported_event_timestamp_must_not_regress = 60,\n\n /**\n * See [imported_event_timestamp_must_postdate_debit_account](https://docs.tigerbeetle.com/reference/requests/create_transfers#imported_event_timestamp_must_postdate_debit_account)\n */\n imported_event_timestamp_must_postdate_debit_account = 61,\n\n /**\n * See [imported_event_timestamp_must_postdate_credit_account](https://docs.tigerbeetle.com/reference/requests/create_transfers#imported_event_timestamp_must_postdate_credit_account)\n */\n imported_event_timestamp_must_postdate_credit_account = 62,\n\n /**\n * See [imported_event_timeout_must_be_zero](https://docs.tigerbeetle.com/reference/requests/create_transfers#imported_event_timeout_must_be_zero)\n */\n imported_event_timeout_must_be_zero = 63,\n\n /**\n * See [debit_account_already_closed](https://docs.tigerbeetle.com/reference/requests/create_transfers#debit_account_already_closed)\n */\n debit_account_already_closed = 65,\n\n /**\n * See [credit_account_already_closed](https://docs.tigerbeetle.com/reference/requests/create_transfers#credit_account_already_closed)\n */\n credit_account_already_closed = 66,\n\n /**\n * See [overflows_debits_pending](https://docs.tigerbeetle.com/reference/requests/create_transfers#overflows_debits_pending)\n */\n overflows_debits_pending = 47,\n\n /**\n * See [overflows_credits_pending](https://docs.tigerbeetle.com/reference/requests/create_transfers#overflows_credits_pending)\n */\n overflows_credits_pending = 48,\n\n /**\n * See [overflows_debits_posted](https://docs.tigerbeetle.com/reference/requests/create_transfers#overflows_debits_posted)\n */\n overflows_debits_posted = 49,\n\n /**\n * See [overflows_credits_posted](https://docs.tigerbeetle.com/reference/requests/create_transfers#overflows_credits_posted)\n */\n overflows_credits_posted = 50,\n\n /**\n * See [overflows_debits](https://docs.tigerbeetle.com/reference/requests/create_transfers#overflows_debits)\n */\n overflows_debits = 51,\n\n /**\n * See [overflows_credits](https://docs.tigerbeetle.com/reference/requests/create_transfers#overflows_credits)\n */\n overflows_credits = 52,\n\n /**\n * See [overflows_timeout](https://docs.tigerbeetle.com/reference/requests/create_transfers#overflows_timeout)\n */\n overflows_timeout = 53,\n\n /**\n * See [exceeds_credits](https://docs.tigerbeetle.com/reference/requests/create_transfers#exceeds_credits)\n */\n exceeds_credits = 54,\n\n /**\n * See [exceeds_debits](https://docs.tigerbeetle.com/reference/requests/create_transfers#exceeds_debits)\n */\n exceeds_debits = 55,\n}\n\nexport type CreateAccountsError = {\n index: number\n result: CreateAccountError\n}\n\nexport type CreateTransfersError = {\n index: number\n result: CreateTransferError\n}\n\n\n/**\n* See [AccountFilter](https://docs.tigerbeetle.com/reference/account-filter#)\n*/\nexport type AccountFilter = {\n\n /**\n * See [account_id](https://docs.tigerbeetle.com/reference/account-filter#account_id)\n */\n account_id: bigint\n\n /**\n * See [user_data_128](https://docs.tigerbeetle.com/reference/account-filter#user_data_128)\n */\n user_data_128: bigint\n\n /**\n * See [user_data_64](https://docs.tigerbeetle.com/reference/account-filter#user_data_64)\n */\n user_data_64: bigint\n\n /**\n * See [user_data_32](https://docs.tigerbeetle.com/reference/account-filter#user_data_32)\n */\n user_data_32: number\n\n /**\n * See [code](https://docs.tigerbeetle.com/reference/account-filter#code)\n */\n code: number\n\n /**\n * See [timestamp_min](https://docs.tigerbeetle.com/reference/account-filter#timestamp_min)\n */\n timestamp_min: bigint\n\n /**\n * See [timestamp_max](https://docs.tigerbeetle.com/reference/account-filter#timestamp_max)\n */\n timestamp_max: bigint\n\n /**\n * See [limit](https://docs.tigerbeetle.com/reference/account-filter#limit)\n */\n limit: number\n\n /**\n * See [flags](https://docs.tigerbeetle.com/reference/account-filter#flags)\n */\n flags: number\n}\n\n\n/**\n* See [QueryFilter](https://docs.tigerbeetle.com/reference/query-filter#)\n*/\nexport type QueryFilter = {\n\n /**\n * See [user_data_128](https://docs.tigerbeetle.com/reference/query-filter#user_data_128)\n */\n user_data_128: bigint\n\n /**\n * See [user_data_64](https://docs.tigerbeetle.com/reference/query-filter#user_data_64)\n */\n user_data_64: bigint\n\n /**\n * See [user_data_32](https://docs.tigerbeetle.com/reference/query-filter#user_data_32)\n */\n user_data_32: number\n\n /**\n * See [ledger](https://docs.tigerbeetle.com/reference/query-filter#ledger)\n */\n ledger: number\n\n /**\n * See [code](https://docs.tigerbeetle.com/reference/query-filter#code)\n */\n code: number\n\n /**\n * See [timestamp_min](https://docs.tigerbeetle.com/reference/query-filter#timestamp_min)\n */\n timestamp_min: bigint\n\n /**\n * See [timestamp_max](https://docs.tigerbeetle.com/reference/query-filter#timestamp_max)\n */\n timestamp_max: bigint\n\n /**\n * See [limit](https://docs.tigerbeetle.com/reference/query-filter#limit)\n */\n limit: number\n\n /**\n * See [flags](https://docs.tigerbeetle.com/reference/query-filter#flags)\n */\n flags: number\n}\n\n\n/**\n* See [AccountBalance](https://docs.tigerbeetle.com/reference/account-balances#)\n*/\nexport type AccountBalance = {\n\n /**\n * See [debits_pending](https://docs.tigerbeetle.com/reference/account-balances#debits_pending)\n */\n debits_pending: bigint\n\n /**\n * See [debits_posted](https://docs.tigerbeetle.com/reference/account-balances#debits_posted)\n */\n debits_posted: bigint\n\n /**\n * See [credits_pending](https://docs.tigerbeetle.com/reference/account-balances#credits_pending)\n */\n credits_pending: bigint\n\n /**\n * See [credits_posted](https://docs.tigerbeetle.com/reference/account-balances#credits_posted)\n */\n credits_posted: bigint\n\n /**\n * See [timestamp](https://docs.tigerbeetle.com/reference/account-balances#timestamp)\n */\n timestamp: bigint\n}\n\nexport enum Operation {\n pulse = 128,\n create_accounts = 129,\n create_transfers = 130,\n lookup_accounts = 131,\n lookup_transfers = 132,\n get_account_transfers = 133,\n get_account_balances = 134,\n query_accounts = 135,\n query_transfers = 136,\n get_events = 137,\n}\n\n"]}
package/dist/test.js CHANGED
@@ -80,6 +80,34 @@ test('error if timestamp is not set to 0n on account', async () => {
80
80
  assert_1.default.strictEqual(errors.length, 1);
81
81
  assert_1.default.deepStrictEqual(errors[0], { index: 0, result: _1.CreateAccountError.timestamp_must_be_zero });
82
82
  });
83
+ test('batch max size', async () => {
84
+ const BATCH_SIZE = 10000;
85
+ var transfers = [];
86
+ for (var i = 0; i < BATCH_SIZE; i++) {
87
+ transfers.push({
88
+ id: 0n,
89
+ debit_account_id: 0n,
90
+ credit_account_id: 0n,
91
+ amount: 0n,
92
+ user_data_128: 0n,
93
+ user_data_64: 0n,
94
+ user_data_32: 0,
95
+ pending_id: 0n,
96
+ timeout: 0,
97
+ ledger: 0,
98
+ code: 0,
99
+ flags: 0,
100
+ timestamp: 0n,
101
+ });
102
+ }
103
+ try {
104
+ const results = await client.createTransfers(transfers);
105
+ assert_1.default.fail();
106
+ }
107
+ catch (error) {
108
+ assert_1.default.strictEqual(error.message, "Too much data provided on this batch.");
109
+ }
110
+ });
83
111
  test('can lookup accounts', async () => {
84
112
  const accounts = await client.lookupAccounts([accountA.id, accountB.id]);
85
113
  assert_1.default.strictEqual(accounts.length, 2);
package/dist/test.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"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","sourcesContent":["import assert, { AssertionError } from 'assert'\nimport {\n createClient,\n Account,\n Transfer,\n TransferFlags,\n CreateAccountError,\n CreateTransferError,\n AccountFilter,\n AccountFilterFlags,\n AccountFlags,\n amount_max,\n id,\n QueryFilter,\n QueryFilterFlags,\n} from '.'\n\nconst client = createClient({\n cluster_id: 0n,\n replica_addresses: [process.env.TB_ADDRESS || '3000']\n})\n\n// Test data\nconst accountA: Account = {\n id: 17n,\n debits_pending: 0n,\n debits_posted: 0n,\n credits_pending: 0n,\n credits_posted: 0n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n reserved: 0,\n ledger: 1,\n code: 718,\n flags: 0,\n timestamp: 0n // this will be set correctly by the TigerBeetle server\n}\nconst accountB: Account = {\n id: 19n,\n debits_pending: 0n,\n debits_posted: 0n,\n credits_pending: 0n,\n credits_posted: 0n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n reserved: 0,\n ledger: 1,\n code: 719,\n flags: 0,\n timestamp: 0n // this will be set correctly by the TigerBeetle server\n}\n\nconst tests: Array<{ name: string, fn: () => Promise<void> }> = []\nfunction test(name: string, fn: () => Promise<void>) {\n tests.push({ name, fn })\n}\ntest.skip = (name: string, fn: () => Promise<void>) => {\n console.log(name + ': SKIPPED')\n}\n\ntest('id() monotonically increasing', async (): Promise<void> => {\n let idA = id();\n for (let i = 0; i < 10_000_000; i++) {\n // Ensure ID is monotonic between milliseconds if the loop executes too fast.\n if (i % 10_000 == 0) {\n await new Promise(resolve => setTimeout(resolve, 1))\n }\n\n const idB = id();\n assert.ok(idB > idA, 'id() returned an id that did not monotonically increase');\n idA = idB;\n }\n})\n\ntest('range check `code` on Account to be u16', async (): Promise<void> => {\n const account = { ...accountA, id: 0n }\n\n account.code = 65535 + 1\n const codeError = await client.createAccounts([account]).catch(error => error)\n assert.strictEqual(codeError.message, 'code must be a u16.')\n\n const accounts = await client.lookupAccounts([account.id])\n assert.deepStrictEqual(accounts, [])\n})\n\ntest('can create accounts', async (): Promise<void> => {\n const errors = await client.createAccounts([accountA])\n assert.deepStrictEqual(errors, [])\n})\n\ntest('can return error on account', async (): Promise<void> => {\n const errors = await client.createAccounts([accountA, accountB])\n\n assert.strictEqual(errors.length, 1)\n assert.deepStrictEqual(errors[0], { index: 0, result: CreateAccountError.exists })\n})\n\ntest('error if timestamp is not set to 0n on account', async (): Promise<void> => {\n const account = { ...accountA, timestamp: 2n, id: 3n }\n const errors = await client.createAccounts([account])\n\n assert.strictEqual(errors.length, 1)\n assert.deepStrictEqual(errors[0], { index: 0, result: CreateAccountError.timestamp_must_be_zero })\n})\n\ntest('can lookup accounts', async (): Promise<void> => {\n const accounts = await client.lookupAccounts([accountA.id, accountB.id])\n\n assert.strictEqual(accounts.length, 2)\n const account1 = accounts[0]\n assert.strictEqual(account1.id, 17n)\n assert.strictEqual(account1.credits_posted, 0n)\n assert.strictEqual(account1.credits_pending, 0n)\n assert.strictEqual(account1.debits_posted, 0n)\n assert.strictEqual(account1.debits_pending, 0n)\n assert.strictEqual(account1.user_data_128, 0n)\n assert.strictEqual(account1.user_data_64, 0n)\n assert.strictEqual(account1.user_data_32, 0)\n assert.strictEqual(account1.code, 718)\n assert.strictEqual(account1.ledger, 1)\n assert.strictEqual(account1.flags, 0)\n assert.ok(account1.timestamp > 0n)\n\n const account2 = accounts[1]\n assert.strictEqual(account2.id, 19n)\n assert.strictEqual(account2.credits_posted, 0n)\n assert.strictEqual(account2.credits_pending, 0n)\n assert.strictEqual(account2.debits_posted, 0n)\n assert.strictEqual(account2.debits_pending, 0n)\n assert.strictEqual(account2.user_data_128, 0n)\n assert.strictEqual(account2.user_data_64, 0n)\n assert.strictEqual(account2.user_data_32, 0)\n assert.strictEqual(account2.code, 719)\n assert.strictEqual(account2.ledger, 1)\n assert.strictEqual(account2.flags, 0)\n assert.ok(account2.timestamp > 0n)\n})\n\ntest('can create a transfer', async (): Promise<void> => {\n const transfer: Transfer = {\n id: 1n,\n debit_account_id: accountB.id,\n credit_account_id: accountA.id,\n amount: 100n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n pending_id: 0n,\n timeout: 0,\n ledger: 1,\n code: 1,\n flags: 0,\n timestamp: 0n, // this will be set correctly by the TigerBeetle server\n }\n\n const errors = await client.createTransfers([transfer])\n assert.deepStrictEqual(errors, [])\n\n const accounts = await client.lookupAccounts([accountA.id, accountB.id])\n assert.strictEqual(accounts.length, 2)\n assert.strictEqual(accounts[0].credits_posted, 100n)\n assert.strictEqual(accounts[0].credits_pending, 0n)\n assert.strictEqual(accounts[0].debits_posted, 0n)\n assert.strictEqual(accounts[0].debits_pending, 0n)\n\n assert.strictEqual(accounts[1].credits_posted, 0n)\n assert.strictEqual(accounts[1].credits_pending, 0n)\n assert.strictEqual(accounts[1].debits_posted, 100n)\n assert.strictEqual(accounts[1].debits_pending, 0n)\n})\n\ntest('can create a two-phase transfer', async (): Promise<void> => {\n let flags = 0\n flags |= TransferFlags.pending\n const transfer: Transfer = {\n id: 2n,\n debit_account_id: accountB.id,\n credit_account_id: accountA.id,\n amount: 50n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n pending_id: 0n,\n timeout: 2e9,\n ledger: 1,\n code: 1,\n flags,\n timestamp: 0n, // this will be set correctly by the TigerBeetle server\n }\n\n const errors = await client.createTransfers([transfer])\n assert.deepStrictEqual(errors, [])\n\n const accounts = await client.lookupAccounts([accountA.id, accountB.id])\n assert.strictEqual(accounts.length, 2)\n assert.strictEqual(accounts[0].credits_posted, 100n)\n assert.strictEqual(accounts[0].credits_pending, 50n)\n assert.strictEqual(accounts[0].debits_posted, 0n)\n assert.strictEqual(accounts[0].debits_pending, 0n)\n\n assert.strictEqual(accounts[1].credits_posted, 0n)\n assert.strictEqual(accounts[1].credits_pending, 0n)\n assert.strictEqual(accounts[1].debits_posted, 100n)\n assert.strictEqual(accounts[1].debits_pending, 50n)\n\n // Lookup the transfer:\n const transfers = await client.lookupTransfers([transfer.id])\n assert.strictEqual(transfers.length, 1)\n assert.strictEqual(transfers[0].id, 2n)\n assert.strictEqual(transfers[0].debit_account_id, accountB.id)\n assert.strictEqual(transfers[0].credit_account_id, accountA.id)\n assert.strictEqual(transfers[0].amount, 50n)\n assert.strictEqual(transfers[0].user_data_128, 0n)\n assert.strictEqual(transfers[0].user_data_64, 0n)\n assert.strictEqual(transfers[0].user_data_32, 0)\n assert.strictEqual(transfers[0].timeout > 0, true)\n assert.strictEqual(transfers[0].code, 1)\n assert.strictEqual(transfers[0].flags, 2)\n assert.strictEqual(transfers[0].timestamp > 0, true)\n})\n\ntest('can post a two-phase transfer', async (): Promise<void> => {\n let flags = 0\n flags |= TransferFlags.post_pending_transfer\n\n const commit: Transfer = {\n id: 3n,\n debit_account_id: BigInt(0),\n credit_account_id: BigInt(0),\n amount: amount_max,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n pending_id: 2n,// must match the id of the pending transfer\n timeout: 0,\n ledger: 1,\n code: 1,\n flags: flags,\n timestamp: 0n, // this will be set correctly by the TigerBeetle server\n }\n\n const errors = await client.createTransfers([commit])\n assert.deepStrictEqual(errors, [])\n\n const accounts = await client.lookupAccounts([accountA.id, accountB.id])\n assert.strictEqual(accounts.length, 2)\n assert.strictEqual(accounts[0].credits_posted, 150n)\n assert.strictEqual(accounts[0].credits_pending, 0n)\n assert.strictEqual(accounts[0].debits_posted, 0n)\n assert.strictEqual(accounts[0].debits_pending, 0n)\n\n assert.strictEqual(accounts[1].credits_posted, 0n)\n assert.strictEqual(accounts[1].credits_pending, 0n)\n assert.strictEqual(accounts[1].debits_posted, 150n)\n assert.strictEqual(accounts[1].debits_pending, 0n)\n})\n\ntest('can reject a two-phase transfer', async (): Promise<void> => {\n // Create a two-phase transfer:\n const transfer: Transfer = {\n id: 4n,\n debit_account_id: accountB.id,\n credit_account_id: accountA.id,\n amount: 50n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n pending_id: 0n,\n timeout: 1e9,\n ledger: 1,\n code: 1,\n flags: TransferFlags.pending,\n timestamp: 0n, // this will be set correctly by the TigerBeetle server\n }\n const transferErrors = await client.createTransfers([transfer])\n assert.deepStrictEqual(transferErrors, [])\n\n // send in the reject\n const reject: Transfer = {\n id: 5n,\n debit_account_id: BigInt(0),\n credit_account_id: BigInt(0),\n amount: 0n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n pending_id: 4n, // must match the id of the pending transfer\n timeout: 0,\n ledger: 1,\n code: 1,\n flags: TransferFlags.void_pending_transfer,\n timestamp: 0n, // this will be set correctly by the TigerBeetle server\n }\n\n const errors = await client.createTransfers([reject])\n assert.deepStrictEqual(errors, [])\n\n const accounts = await client.lookupAccounts([accountA.id, accountB.id])\n assert.strictEqual(accounts.length, 2)\n assert.strictEqual(accounts[0].credits_posted, 150n)\n assert.strictEqual(accounts[0].credits_pending, 0n)\n assert.strictEqual(accounts[0].debits_posted, 0n)\n assert.strictEqual(accounts[0].debits_pending, 0n)\n\n assert.strictEqual(accounts[1].credits_posted, 0n)\n assert.strictEqual(accounts[1].credits_pending, 0n)\n assert.strictEqual(accounts[1].debits_posted, 150n)\n assert.strictEqual(accounts[1].debits_pending, 0n)\n})\n\ntest('can link transfers', async (): Promise<void> => {\n const transfer1: Transfer = {\n id: 6n,\n debit_account_id: accountB.id,\n credit_account_id: accountA.id,\n amount: 100n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n pending_id: 0n,\n timeout: 0,\n ledger: 1,\n code: 1,\n flags: TransferFlags.linked, // points to transfer2\n timestamp: 0n, // will be set correctly by the TigerBeetle server\n }\n const transfer2: Transfer = {\n id: 6n,\n debit_account_id: accountB.id,\n credit_account_id: accountA.id,\n amount: 100n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n pending_id: 0n,\n timeout: 0,\n ledger: 1,\n code: 1,\n // Does not have linked flag as it is the end of the chain.\n // This will also cause it to fail as this is now a duplicate with different flags\n flags: 0,\n timestamp: 0n, // will be set correctly by the TigerBeetle server\n }\n\n const errors = await client.createTransfers([transfer1, transfer2])\n assert.strictEqual(errors.length, 2)\n assert.deepStrictEqual(errors[0], { index: 0, result: CreateTransferError.linked_event_failed })\n assert.deepStrictEqual(errors[1], { index: 1, result: CreateTransferError.exists_with_different_flags })\n\n const accounts = await client.lookupAccounts([accountA.id, accountB.id])\n assert.strictEqual(accounts.length, 2)\n assert.strictEqual(accounts[0].credits_posted, 150n)\n assert.strictEqual(accounts[0].credits_pending, 0n)\n assert.strictEqual(accounts[0].debits_posted, 0n)\n assert.strictEqual(accounts[0].debits_pending, 0n)\n\n assert.strictEqual(accounts[1].credits_posted, 0n)\n assert.strictEqual(accounts[1].credits_pending, 0n)\n assert.strictEqual(accounts[1].debits_posted, 150n)\n assert.strictEqual(accounts[1].debits_pending, 0n)\n})\n\ntest('cannot void an expired transfer', async (): Promise<void> => {\n // Create a two-phase transfer:\n const transfer: Transfer = {\n id: 6n,\n debit_account_id: accountB.id,\n credit_account_id: accountA.id,\n amount: 50n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n pending_id: 0n,\n timeout: 1,\n ledger: 1,\n code: 1,\n flags: TransferFlags.pending,\n timestamp: 0n, // this will be set correctly by the TigerBeetle server\n }\n const transferErrors = await client.createTransfers([transfer])\n assert.deepStrictEqual(transferErrors, [])\n\n var accounts = await client.lookupAccounts([accountA.id, accountB.id])\n assert.strictEqual(accounts.length, 2)\n assert.strictEqual(accounts[0].credits_posted, 150n)\n assert.strictEqual(accounts[0].credits_pending, 50n)\n assert.strictEqual(accounts[0].debits_posted, 0n)\n assert.strictEqual(accounts[0].debits_pending, 0n)\n\n assert.strictEqual(accounts[1].credits_posted, 0n)\n assert.strictEqual(accounts[1].credits_pending, 0n)\n assert.strictEqual(accounts[1].debits_posted, 150n)\n assert.strictEqual(accounts[1].debits_pending, 50n)\n\n // We need to wait 1s for the server to expire the transfer, however the\n // server can pulse the expiry operation anytime after the timeout,\n // so adding an extra delay to avoid flaky tests.\n // TODO: Use `await setTimeout(1000)` when upgrade to Node > 15.\n const extra_wait_time = 250;\n await new Promise(_ => setTimeout(_, (transfer.timeout * 1000) + extra_wait_time));\n\n // Looking up the accounts again for the updated balance.\n accounts = await client.lookupAccounts([accountA.id, accountB.id])\n assert.strictEqual(accounts.length, 2)\n assert.strictEqual(accounts[0].credits_posted, 150n)\n assert.strictEqual(accounts[0].credits_pending, 0n)\n assert.strictEqual(accounts[0].debits_posted, 0n)\n assert.strictEqual(accounts[0].debits_pending, 0n)\n\n assert.strictEqual(accounts[1].credits_posted, 0n)\n assert.strictEqual(accounts[1].credits_pending, 0n)\n assert.strictEqual(accounts[1].debits_posted, 150n)\n assert.strictEqual(accounts[1].debits_pending, 0n)\n\n // send in the reject\n const reject: Transfer = {\n id: 7n,\n debit_account_id: BigInt(0),\n credit_account_id: BigInt(0),\n amount: 0n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n pending_id: 6n, // must match the id of the pending transfer\n timeout: 0,\n ledger: 1,\n code: 1,\n flags: TransferFlags.void_pending_transfer,\n timestamp: 0n, // this will be set correctly by the TigerBeetle server\n }\n\n const errors = await client.createTransfers([reject])\n assert.strictEqual(errors.length, 1)\n assert.deepStrictEqual(errors[0], { index: 0, result: CreateTransferError.pending_transfer_expired })\n})\n\ntest('can close accounts', async (): Promise<void> => {\n const closing_transfer: Transfer = {\n id: id(),\n debit_account_id: accountB.id,\n credit_account_id: accountA.id,\n amount: 0n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n pending_id: 0n,\n timeout: 0,\n ledger: 1,\n code: 1,\n flags: TransferFlags.closing_debit | TransferFlags.closing_credit | TransferFlags.pending,\n timestamp: 0n, // will be set correctly by the TigerBeetle server\n }\n let errors = await client.createTransfers([closing_transfer])\n assert.strictEqual(errors.length, 0)\n\n let accounts = await client.lookupAccounts([accountA.id, accountB.id])\n assert.strictEqual(accounts.length, 2)\n assert.ok(accountA.flags != accounts[0].flags)\n assert.ok((accounts[0].flags & AccountFlags.closed) != 0)\n\n assert.ok(accountB.flags != accounts[1].flags)\n assert.ok((accounts[1].flags & AccountFlags.closed) != 0)\n\n const voiding_transfer: Transfer = {\n id: id(),\n debit_account_id: accountB.id,\n credit_account_id: accountA.id,\n amount: 0n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n timeout: 0,\n ledger: 1,\n code: 1,\n flags: TransferFlags.void_pending_transfer,\n pending_id: closing_transfer.id,\n timestamp: 0n, // will be set correctly by the TigerBeetle server\n }\n\n errors = await client.createTransfers([voiding_transfer])\n assert.strictEqual(errors.length, 0)\n\n accounts = await client.lookupAccounts([accountA.id, accountB.id])\n assert.strictEqual(accounts.length, 2)\n assert.strictEqual(accountA.flags, accounts[0].flags)\n assert.ok((accounts[0].flags & AccountFlags.closed) == 0)\n\n assert.strictEqual(accountB.flags, accounts[1].flags)\n assert.ok((accounts[1].flags & AccountFlags.closed) == 0)\n})\n\ntest('can get account transfers', async (): Promise<void> => {\n const accountC: Account = {\n id: 21n,\n debits_pending: 0n,\n debits_posted: 0n,\n credits_pending: 0n,\n credits_posted: 0n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n reserved: 0,\n ledger: 1,\n code: 718,\n flags: AccountFlags.history,\n timestamp: 0n\n }\n const account_errors = await client.createAccounts([accountC])\n assert.deepStrictEqual(account_errors, [])\n\n var transfers_created : Transfer[] = [];\n // Create transfers where the new account is either the debit or credit account:\n for (var i=0; i<10;i++) {\n transfers_created.push({\n id: BigInt(i + 10000),\n debit_account_id: i % 2 == 0 ? accountC.id : accountA.id,\n credit_account_id: i % 2 == 0 ? accountB.id : accountC.id,\n amount: 100n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n pending_id: 0n,\n timeout: 0,\n ledger: 1,\n code: 1,\n flags: 0,\n timestamp: 0n,\n });\n }\n\n const transfers_created_result = await client.createTransfers(transfers_created)\n assert.deepStrictEqual(transfers_created_result, [])\n\n // Query all transfers for accountC:\n var filter: AccountFilter = {\n account_id: accountC.id,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 8190,\n flags: AccountFilterFlags.credits | AccountFilterFlags.debits,\n }\n var transfers = await client.getAccountTransfers(filter)\n var account_balances = await client.getAccountBalances(filter)\n assert.strictEqual(transfers.length, transfers_created.length)\n assert.strictEqual(account_balances.length, transfers.length)\n\n var timestamp = 0n;\n var i = 0;\n for (var transfer of transfers) {\n assert.ok(timestamp < transfer.timestamp);\n timestamp = transfer.timestamp;\n\n assert.ok(account_balances[i].timestamp == transfer.timestamp);\n i++;\n }\n\n // Query only the debit transfers for accountC, descending:\n filter = {\n account_id: accountC.id,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 8190,\n flags: AccountFilterFlags.debits | AccountFilterFlags.reversed,\n }\n transfers = await client.getAccountTransfers(filter)\n account_balances = await client.getAccountBalances(filter)\n\n assert.strictEqual(transfers.length, transfers_created.length / 2)\n assert.strictEqual(account_balances.length, transfers.length)\n\n timestamp = 1n << 64n;\n i = 0;\n for (var transfer of transfers) {\n assert.ok(transfer.timestamp < timestamp);\n timestamp = transfer.timestamp;\n\n assert.ok(account_balances[i].timestamp == transfer.timestamp);\n i++;\n }\n\n // Query only the credit transfers for accountC, descending:\n filter = {\n account_id: accountC.id,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 8190,\n flags: AccountFilterFlags.credits | AccountFilterFlags.reversed,\n }\n transfers = await client.getAccountTransfers(filter)\n account_balances = await client.getAccountBalances(filter)\n\n assert.strictEqual(transfers.length, transfers_created.length / 2)\n assert.strictEqual(account_balances.length, transfers.length)\n\n timestamp = 1n << 64n;\n i = 0;\n for (var transfer of transfers) {\n assert.ok(transfer.timestamp < timestamp);\n timestamp = transfer.timestamp;\n\n assert.ok(account_balances[i].timestamp == transfer.timestamp);\n i++;\n }\n\n // Query the first 5 transfers for accountC:\n filter = {\n account_id: accountC.id,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: transfers_created.length / 2,\n flags: AccountFilterFlags.credits | AccountFilterFlags.debits,\n }\n transfers = await client.getAccountTransfers(filter)\n account_balances = await client.getAccountBalances(filter)\n\n assert.strictEqual(transfers.length, transfers_created.length / 2)\n assert.strictEqual(account_balances.length, transfers.length)\n\n timestamp = 0n;\n i = 0;\n for (var transfer of transfers) {\n assert.ok(timestamp < transfer.timestamp);\n timestamp = transfer.timestamp;\n\n assert.ok(account_balances[i].timestamp == transfer.timestamp);\n i++;\n }\n\n // Query the next 5 transfers for accountC, with pagination:\n filter = {\n account_id: accountC.id,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: timestamp + 1n,\n timestamp_max: 0n,\n limit: transfers_created.length / 2,\n flags: AccountFilterFlags.credits | AccountFilterFlags.debits,\n }\n transfers = await client.getAccountTransfers(filter)\n account_balances = await client.getAccountBalances(filter)\n\n assert.strictEqual(transfers.length, transfers_created.length / 2)\n assert.strictEqual(account_balances.length, transfers.length)\n\n i = 0;\n for (var transfer of transfers) {\n assert.ok(timestamp < transfer.timestamp);\n timestamp = transfer.timestamp;\n\n assert.ok(account_balances[i].timestamp == transfer.timestamp);\n i++;\n }\n\n // Query again, no more transfers should be found:\n filter = {\n account_id: accountC.id,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: timestamp + 1n,\n timestamp_max: 0n,\n limit: transfers_created.length / 2,\n flags: AccountFilterFlags.credits | AccountFilterFlags.debits,\n }\n transfers = await client.getAccountTransfers(filter)\n account_balances = await client.getAccountBalances(filter)\n\n assert.deepStrictEqual(transfers, [])\n assert.strictEqual(account_balances.length, transfers.length)\n\n // Query the first 5 transfers for accountC ORDER BY DESC:\n filter = {\n account_id: accountC.id,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: transfers_created.length / 2,\n flags: AccountFilterFlags.credits | AccountFilterFlags.debits | AccountFilterFlags.reversed,\n }\n transfers = await client.getAccountTransfers(filter)\n account_balances = await client.getAccountBalances(filter)\n\n assert.strictEqual(transfers.length, transfers_created.length / 2)\n assert.strictEqual(account_balances.length, transfers.length)\n\n timestamp = 1n << 64n;\n i = 0;\n for (var transfer of transfers) {\n assert.ok(timestamp > transfer.timestamp);\n timestamp = transfer.timestamp;\n\n assert.ok(account_balances[i].timestamp == transfer.timestamp);\n i++;\n }\n\n // Query the next 5 transfers for accountC, with pagination:\n filter = {\n account_id: accountC.id,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: timestamp - 1n,\n limit: transfers_created.length / 2,\n flags: AccountFilterFlags.credits | AccountFilterFlags.debits | AccountFilterFlags.reversed,\n }\n transfers = await client.getAccountTransfers(filter)\n account_balances = await client.getAccountBalances(filter)\n\n assert.strictEqual(transfers.length, transfers_created.length / 2)\n assert.strictEqual(account_balances.length, transfers.length)\n\n i = 0;\n for (var transfer of transfers) {\n assert.ok(timestamp > transfer.timestamp);\n timestamp = transfer.timestamp;\n\n assert.ok(account_balances[i].timestamp == transfer.timestamp);\n i++;\n }\n\n // Query again, no more transfers should be found:\n filter = {\n account_id: accountC.id,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: timestamp - 1n,\n limit: transfers_created.length / 2,\n flags: AccountFilterFlags.credits | AccountFilterFlags.debits | AccountFilterFlags.reversed,\n }\n transfers = await client.getAccountTransfers(filter)\n account_balances = await client.getAccountBalances(filter)\n\n assert.deepStrictEqual(transfers, [])\n assert.strictEqual(account_balances.length, transfers.length)\n\n // Invalid account:\n filter = {\n account_id: 0n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 8190,\n flags: AccountFilterFlags.credits | AccountFilterFlags.debits,\n }\n assert.deepStrictEqual((await client.getAccountTransfers(filter)), [])\n assert.deepStrictEqual((await client.getAccountBalances(filter)), [])\n\n // Invalid timestamp min:\n filter = {\n account_id: accountC.id,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: (1n << 64n) - 1n, // ulong max value\n timestamp_max: 0n,\n limit: 8190,\n flags: AccountFilterFlags.credits | AccountFilterFlags.debits,\n }\n assert.deepStrictEqual((await client.getAccountTransfers(filter)), [])\n assert.deepStrictEqual((await client.getAccountBalances(filter)), [])\n\n // Invalid timestamp max:\n filter = {\n account_id: accountC.id,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: (1n << 64n) - 1n, // ulong max value\n limit: 8190,\n flags: AccountFilterFlags.credits | AccountFilterFlags.debits,\n }\n assert.deepStrictEqual((await client.getAccountTransfers(filter)), [])\n assert.deepStrictEqual((await client.getAccountBalances(filter)), [])\n\n // Invalid timestamp range:\n filter = {\n account_id: accountC.id,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: (1n << 64n) - 2n, // ulong max - 1\n timestamp_max: 1n,\n limit: 8190,\n flags: AccountFilterFlags.credits | AccountFilterFlags.debits,\n }\n assert.deepStrictEqual((await client.getAccountTransfers(filter)), [])\n assert.deepStrictEqual((await client.getAccountBalances(filter)), [])\n\n // Zero limit:\n filter = {\n account_id: accountC.id,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 0,\n flags: AccountFilterFlags.credits | AccountFilterFlags.debits,\n }\n assert.deepStrictEqual((await client.getAccountTransfers(filter)), [])\n assert.deepStrictEqual((await client.getAccountBalances(filter)), [])\n\n // Empty flags:\n filter = {\n account_id: accountC.id,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 8190,\n flags: AccountFilterFlags.none,\n }\n assert.deepStrictEqual((await client.getAccountTransfers(filter)), [])\n assert.deepStrictEqual((await client.getAccountBalances(filter)), [])\n\n // Invalid flags:\n filter = {\n account_id: accountC.id,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 8190,\n flags: 0xFFFF,\n }\n assert.deepStrictEqual((await client.getAccountTransfers(filter)), [])\n assert.deepStrictEqual((await client.getAccountBalances(filter)), [])\n\n})\n\ntest('can query accounts', async (): Promise<void> => {\n {\n var accounts : Account[] = [];\n // Create transfers:\n for (var i=0; i<10;i++) {\n accounts.push({\n id: id(),\n debits_pending: 0n,\n debits_posted: 0n,\n credits_pending: 0n,\n credits_posted: 0n,\n user_data_128: i % 2 == 0 ? 1000n : 2000n,\n user_data_64: i % 2 == 0 ? 100n : 200n,\n user_data_32: i % 2 == 0 ? 10 : 20,\n ledger: 1,\n code: 999,\n flags: AccountFlags.none,\n reserved: 0,\n timestamp: 0n,\n })\n }\n\n const create_accounts_result = await client.createAccounts(accounts)\n assert.deepStrictEqual(create_accounts_result, [])\n }\n\n {\n // Querying accounts where:\n // `user_data_128=1000 AND user_data_64=100 AND user_data_32=10\n // AND code=999 AND ledger=1 ORDER BY timestamp ASC`.\n var filter: QueryFilter = {\n user_data_128: 1000n,\n user_data_64: 100n,\n user_data_32: 10,\n ledger: 1,\n code: 999,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 8190,\n flags: QueryFilterFlags.none,\n }\n var query: Account[] = await client.queryAccounts(filter)\n assert.strictEqual(query.length, 5)\n\n var timestamp = 0n;\n for (var account of query) {\n assert.ok(timestamp < account.timestamp);\n timestamp = account.timestamp;\n\n assert.strictEqual(account.user_data_128, filter.user_data_128);\n assert.strictEqual(account.user_data_64, filter.user_data_64);\n assert.strictEqual(account.user_data_32, filter.user_data_32);\n assert.strictEqual(account.ledger, filter.ledger);\n assert.strictEqual(account.code, filter.code);\n }\n }\n\n {\n // Querying accounts where:\n // `user_data_128=2000 AND user_data_64=200 AND user_data_32=20\n // AND code=999 AND ledger=1 ORDER BY timestamp DESC`.\n var filter: QueryFilter = {\n user_data_128: 2000n,\n user_data_64: 200n,\n user_data_32: 20,\n ledger: 1,\n code: 999,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 8190,\n flags: QueryFilterFlags.reversed,\n }\n var query: Account[] = await client.queryAccounts(filter)\n assert.strictEqual(query.length, 5)\n\n var timestamp = 1n << 64n;\n for (var account of query) {\n assert.ok(timestamp > account.timestamp);\n timestamp = account.timestamp;\n\n assert.strictEqual(account.user_data_128, filter.user_data_128);\n assert.strictEqual(account.user_data_64, filter.user_data_64);\n assert.strictEqual(account.user_data_32, filter.user_data_32);\n assert.strictEqual(account.ledger, filter.ledger);\n assert.strictEqual(account.code, filter.code);\n }\n }\n\n {\n // Querying accounts where:\n // `code=999 ORDER BY timestamp ASC`\n var filter: QueryFilter = {\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n ledger: 0,\n code: 999,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 8190,\n flags: QueryFilterFlags.none,\n }\n var query: Account[] = await client.queryAccounts(filter)\n assert.strictEqual(query.length, 10)\n\n var timestamp = 0n;\n for (var account of query) {\n assert.ok(timestamp < account.timestamp);\n timestamp = account.timestamp;\n\n assert.strictEqual(account.code, filter.code);\n }\n }\n\n {\n // Querying accounts where:\n // `code=999 ORDER BY timestamp DESC LIMIT 5`.\n var filter: QueryFilter = {\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n ledger: 0,\n code: 999,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 5,\n flags: QueryFilterFlags.reversed,\n }\n\n // First 5 items:\n var query: Account[] = await client.queryAccounts(filter)\n assert.strictEqual(query.length, 5)\n\n var timestamp = 1n << 64n;\n for (var account of query) {\n assert.ok(timestamp > account.timestamp);\n timestamp = account.timestamp;\n\n assert.strictEqual(account.code, filter.code);\n }\n\n // Next 5 items:\n filter.timestamp_max = timestamp - 1n\n query = await client.queryAccounts(filter)\n assert.strictEqual(query.length, 5)\n\n for (var account of query) {\n assert.ok(timestamp > account.timestamp);\n timestamp = account.timestamp;\n\n assert.strictEqual(account.code, filter.code);\n }\n\n // No more results:\n filter.timestamp_max = timestamp - 1n\n query = await client.queryAccounts(filter)\n assert.strictEqual(query.length, 0)\n }\n\n {\n // Not found:\n var filter: QueryFilter = {\n user_data_128: 0n,\n user_data_64: 200n,\n user_data_32: 10,\n ledger: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 8190,\n flags: QueryFilterFlags.none,\n }\n var query: Account[] = await client.queryAccounts(filter)\n assert.strictEqual(query.length, 0)\n }\n})\n\ntest('can query transfers', async (): Promise<void> => {\n {\n const account: Account = {\n id: id(),\n debits_pending: 0n,\n debits_posted: 0n,\n credits_pending: 0n,\n credits_posted: 0n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n reserved: 0,\n ledger: 1,\n code: 718,\n flags: AccountFlags.none,\n timestamp: 0n\n }\n const create_accounts_result = await client.createAccounts([account])\n assert.deepStrictEqual(create_accounts_result, [])\n\n var transfers_created : Transfer[] = [];\n // Create transfers:\n for (var i=0; i<10;i++) {\n transfers_created.push({\n id: id(),\n debit_account_id: i % 2 == 0 ? account.id : accountA.id,\n credit_account_id: i % 2 == 0 ? accountB.id : account.id,\n amount: 100n,\n user_data_128: i % 2 == 0 ? 1000n : 2000n,\n user_data_64: i % 2 == 0 ? 100n : 200n,\n user_data_32: i % 2 == 0 ? 10 : 20,\n pending_id: 0n,\n timeout: 0,\n ledger: 1,\n code: 999,\n flags: 0,\n timestamp: 0n,\n })\n }\n\n const create_transfers_result = await client.createTransfers(transfers_created)\n assert.deepStrictEqual(create_transfers_result, [])\n }\n\n {\n // Querying transfers where:\n // `user_data_128=1000 AND user_data_64=100 AND user_data_32=10\n // AND code=999 AND ledger=1 ORDER BY timestamp ASC`.\n var filter: QueryFilter = {\n user_data_128: 1000n,\n user_data_64: 100n,\n user_data_32: 10,\n ledger: 1,\n code: 999,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 8190,\n flags: QueryFilterFlags.none,\n }\n var query: Transfer[] = await client.queryTransfers(filter)\n assert.strictEqual(query.length, 5)\n\n var timestamp = 0n;\n for (var transfer of query) {\n assert.ok(timestamp < transfer.timestamp);\n timestamp = transfer.timestamp;\n\n assert.strictEqual(transfer.user_data_128, filter.user_data_128);\n assert.strictEqual(transfer.user_data_64, filter.user_data_64);\n assert.strictEqual(transfer.user_data_32, filter.user_data_32);\n assert.strictEqual(transfer.ledger, filter.ledger);\n assert.strictEqual(transfer.code, filter.code);\n }\n }\n\n {\n // Querying transfers where:\n // `user_data_128=2000 AND user_data_64=200 AND user_data_32=20\n // AND code=999 AND ledger=1 ORDER BY timestamp DESC`.\n var filter: QueryFilter = {\n user_data_128: 2000n,\n user_data_64: 200n,\n user_data_32: 20,\n ledger: 1,\n code: 999,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 8190,\n flags: QueryFilterFlags.reversed,\n }\n var query: Transfer[] = await client.queryTransfers(filter)\n assert.strictEqual(query.length, 5)\n\n var timestamp = 1n << 64n;\n for (var transfer of query) {\n assert.ok(timestamp > transfer.timestamp);\n timestamp = transfer.timestamp;\n\n assert.strictEqual(transfer.user_data_128, filter.user_data_128);\n assert.strictEqual(transfer.user_data_64, filter.user_data_64);\n assert.strictEqual(transfer.user_data_32, filter.user_data_32);\n assert.strictEqual(transfer.ledger, filter.ledger);\n assert.strictEqual(transfer.code, filter.code);\n }\n }\n\n {\n // Querying transfers where:\n // `code=999 ORDER BY timestamp ASC`\n var filter: QueryFilter = {\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n ledger: 0,\n code: 999,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 8190,\n flags: QueryFilterFlags.none,\n }\n var query: Transfer[] = await client.queryTransfers(filter)\n assert.strictEqual(query.length, 10)\n\n var timestamp = 0n;\n for (var transfer of query) {\n assert.ok(timestamp < transfer.timestamp);\n timestamp = transfer.timestamp;\n\n assert.strictEqual(transfer.code, filter.code);\n }\n }\n\n {\n // Querying transfers where:\n // `code=999 ORDER BY timestamp DESC LIMIT 5`.\n var filter: QueryFilter = {\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n ledger: 0,\n code: 999,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 5,\n flags: QueryFilterFlags.reversed,\n }\n\n // First 5 items:\n var query: Transfer[] = await client.queryTransfers(filter)\n assert.strictEqual(query.length, 5)\n\n var timestamp = 1n << 64n;\n for (var transfer of query) {\n assert.ok(timestamp > transfer.timestamp);\n timestamp = transfer.timestamp;\n\n assert.strictEqual(transfer.code, filter.code);\n }\n\n // Next 5 items:\n filter.timestamp_max = timestamp - 1n\n query = await client.queryTransfers(filter)\n assert.strictEqual(query.length, 5)\n\n for (var transfer of query) {\n assert.ok(timestamp > transfer.timestamp);\n timestamp = transfer.timestamp;\n\n assert.strictEqual(transfer.code, filter.code);\n }\n\n // No more results:\n filter.timestamp_max = timestamp - 1n\n query = await client.queryTransfers(filter)\n assert.strictEqual(query.length, 0)\n }\n\n {\n // Not found:\n var filter: QueryFilter = {\n user_data_128: 0n,\n user_data_64: 200n,\n user_data_32: 10,\n ledger: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 8190,\n flags: QueryFilterFlags.none,\n }\n var query: Transfer[] = await client.queryTransfers(filter)\n assert.strictEqual(query.length, 0)\n }\n})\n\ntest('query with invalid filter', async (): Promise<void> => {\n // Invalid timestamp min:\n var filter: QueryFilter = {\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n ledger: 0,\n code: 0,\n timestamp_min: (1n << 64n) - 1n, // ulong max value\n timestamp_max: 0n,\n limit: 8190,\n flags: QueryFilterFlags.none,\n }\n assert.deepStrictEqual((await client.queryAccounts(filter)), [])\n assert.deepStrictEqual((await client.queryTransfers(filter)), [])\n\n // Invalid timestamp max:\n filter = {\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n ledger: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: (1n << 64n) - 1n, // ulong max value,\n limit: 8190,\n flags: QueryFilterFlags.none,\n }\n assert.deepStrictEqual((await client.queryAccounts(filter)), [])\n assert.deepStrictEqual((await client.queryTransfers(filter)), [])\n\n // Invalid timestamp range:\n filter = {\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n ledger: 0,\n code: 0,\n timestamp_min: (1n << 64n) - 2n, // ulong max - 1\n timestamp_max: 1n,\n limit: 8190,\n flags: QueryFilterFlags.none,\n }\n assert.deepStrictEqual((await client.queryAccounts(filter)), [])\n assert.deepStrictEqual((await client.queryTransfers(filter)), [])\n\n // Zero limit:\n filter = {\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n ledger: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 0,\n flags: QueryFilterFlags.none,\n }\n assert.deepStrictEqual((await client.queryAccounts(filter)), [])\n assert.deepStrictEqual((await client.queryTransfers(filter)), [])\n\n // Invalid flags:\n filter = {\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n ledger: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 0,\n flags: 0xFFFF,\n }\n assert.deepStrictEqual((await client.queryAccounts(filter)), [])\n assert.deepStrictEqual((await client.queryTransfers(filter)), [])\n})\n\ntest('can import accounts and transfers', async (): Promise<void> => {\n const accountTmp: Account = {\n id: id(),\n debits_pending: 0n,\n debits_posted: 0n,\n credits_pending: 0n,\n credits_posted: 0n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n reserved: 0,\n ledger: 1,\n code: 718,\n flags: 0,\n timestamp: 0n // this will be set correctly by the TigerBeetle server\n }\n let accountsErrors = await client.createAccounts([accountTmp])\n assert.deepStrictEqual(accountsErrors, [])\n\n let accountLookup = await client.lookupAccounts([accountTmp.id])\n assert.strictEqual(accountLookup.length, 1)\n const timestampMax = accountLookup[0].timestamp\n\n // Wait 10 ms so we can use the account's timestamp as the reference for past time\n // after the last object inserted.\n await new Promise(_ => setTimeout(_, 10));\n\n const accountA: Account = {\n id: id(),\n debits_pending: 0n,\n debits_posted: 0n,\n credits_pending: 0n,\n credits_posted: 0n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n reserved: 0,\n ledger: 1,\n code: 718,\n flags: AccountFlags.imported,\n timestamp: timestampMax + 1n // user-defined timestamp\n }\n const accountB: Account = {\n id: id(),\n debits_pending: 0n,\n debits_posted: 0n,\n credits_pending: 0n,\n credits_posted: 0n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n reserved: 0,\n ledger: 1,\n code: 718,\n flags: AccountFlags.imported,\n timestamp: timestampMax + 2n // user-defined timestamp\n }\n accountsErrors = await client.createAccounts([accountA, accountB])\n assert.deepStrictEqual(accountsErrors, [])\n\n accountLookup = await client.lookupAccounts([accountA.id, accountB.id])\n assert.strictEqual(accountLookup.length, 2)\n assert.strictEqual(accountLookup[0].timestamp, accountA.timestamp)\n assert.strictEqual(accountLookup[1].timestamp, accountB.timestamp)\n\n const transfer: Transfer = {\n id: id(),\n debit_account_id: accountA.id,\n credit_account_id: accountB.id,\n amount: 100n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n pending_id: 0n,\n timeout: 0,\n ledger: 1,\n code: 1,\n flags: TransferFlags.imported,\n timestamp: timestampMax + 3n, // user-defined timestamp.\n }\n\n const errors = await client.createTransfers([transfer])\n assert.deepStrictEqual(errors, [])\n\n const transfers = await client.lookupTransfers([transfer.id])\n assert.strictEqual(transfers.length, 1)\n assert.strictEqual(transfers[0].timestamp, timestampMax + 3n)\n})\n\ntest('accept zero-length create_accounts', async (): Promise<void> => {\n const errors = await client.createAccounts([])\n assert.deepStrictEqual(errors, [])\n})\n\ntest('accept zero-length create_transfers', async (): Promise<void> => {\n const errors = await client.createTransfers([])\n assert.deepStrictEqual(errors, [])\n})\n\ntest('accept zero-length lookup_accounts', async (): Promise<void> => {\n const accounts = await client.lookupAccounts([])\n assert.deepStrictEqual(accounts, [])\n})\n\ntest('accept zero-length lookup_transfers', async (): Promise<void> => {\n const transfers = await client.lookupTransfers([])\n assert.deepStrictEqual(transfers, [])\n})\n\ntest(\"destroy client in-flight\", async (): Promise<void> => {\n // Non-existing cluster.\n const client = createClient({ cluster_id: 92n, replica_addresses: [\"99\"] });\n setTimeout(() => client.destroy(), 30);\n try {\n await client.lookupAccounts([0n]);\n } catch (error) {\n assert.strictEqual(error.message, \"Client was shutdown.\");\n return;\n }\n throw \"expected an error\";\n});\n\nasync function main () {\n const start = new Date().getTime()\n try {\n for (let i = 0; i < tests.length; i++) {\n await tests[i].fn().then(() => {\n console.log(tests[i].name + \": PASSED\")\n }).catch(error => {\n console.log(tests[i].name + \": FAILED\")\n throw error\n })\n }\n const end = new Date().getTime()\n console.log('Time taken (s):', (end - start)/1000)\n } finally {\n await client.destroy()\n }\n}\n\nmain().catch((error: AssertionError) => {\n console.log('operator:', error.operator)\n console.log('stack:', error.stack)\n process.exit(-1);\n})\n"]}
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"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","sourcesContent":["import assert, { AssertionError } from 'assert'\nimport {\n createClient,\n Account,\n Transfer,\n TransferFlags,\n CreateAccountError,\n CreateTransferError,\n AccountFilter,\n AccountFilterFlags,\n AccountFlags,\n amount_max,\n id,\n QueryFilter,\n QueryFilterFlags,\n} from '.'\n\nconst client = createClient({\n cluster_id: 0n,\n replica_addresses: [process.env.TB_ADDRESS || '3000']\n})\n\n// Test data\nconst accountA: Account = {\n id: 17n,\n debits_pending: 0n,\n debits_posted: 0n,\n credits_pending: 0n,\n credits_posted: 0n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n reserved: 0,\n ledger: 1,\n code: 718,\n flags: 0,\n timestamp: 0n // this will be set correctly by the TigerBeetle server\n}\nconst accountB: Account = {\n id: 19n,\n debits_pending: 0n,\n debits_posted: 0n,\n credits_pending: 0n,\n credits_posted: 0n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n reserved: 0,\n ledger: 1,\n code: 719,\n flags: 0,\n timestamp: 0n // this will be set correctly by the TigerBeetle server\n}\n\nconst tests: Array<{ name: string, fn: () => Promise<void> }> = []\nfunction test(name: string, fn: () => Promise<void>) {\n tests.push({ name, fn })\n}\ntest.skip = (name: string, fn: () => Promise<void>) => {\n console.log(name + ': SKIPPED')\n}\n\ntest('id() monotonically increasing', async (): Promise<void> => {\n let idA = id();\n for (let i = 0; i < 10_000_000; i++) {\n // Ensure ID is monotonic between milliseconds if the loop executes too fast.\n if (i % 10_000 == 0) {\n await new Promise(resolve => setTimeout(resolve, 1))\n }\n\n const idB = id();\n assert.ok(idB > idA, 'id() returned an id that did not monotonically increase');\n idA = idB;\n }\n})\n\ntest('range check `code` on Account to be u16', async (): Promise<void> => {\n const account = { ...accountA, id: 0n }\n\n account.code = 65535 + 1\n const codeError = await client.createAccounts([account]).catch(error => error)\n assert.strictEqual(codeError.message, 'code must be a u16.')\n\n const accounts = await client.lookupAccounts([account.id])\n assert.deepStrictEqual(accounts, [])\n})\n\ntest('can create accounts', async (): Promise<void> => {\n const errors = await client.createAccounts([accountA])\n assert.deepStrictEqual(errors, [])\n})\n\ntest('can return error on account', async (): Promise<void> => {\n const errors = await client.createAccounts([accountA, accountB])\n\n assert.strictEqual(errors.length, 1)\n assert.deepStrictEqual(errors[0], { index: 0, result: CreateAccountError.exists })\n})\n\ntest('error if timestamp is not set to 0n on account', async (): Promise<void> => {\n const account = { ...accountA, timestamp: 2n, id: 3n }\n const errors = await client.createAccounts([account])\n\n assert.strictEqual(errors.length, 1)\n assert.deepStrictEqual(errors[0], { index: 0, result: CreateAccountError.timestamp_must_be_zero })\n})\n\ntest('batch max size', async (): Promise<void> => {\n const BATCH_SIZE = 10_000;\n var transfers: Transfer[] = [];\n for (var i=0; i<BATCH_SIZE;i++) {\n transfers.push({\n id: 0n,\n debit_account_id: 0n,\n credit_account_id: 0n,\n amount: 0n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n pending_id: 0n,\n timeout: 0,\n ledger: 0,\n code: 0,\n flags: 0,\n timestamp: 0n,\n });\n }\n\n try {\n const results = await client.createTransfers(transfers);\n assert.fail();\n } catch (error) {\n assert.strictEqual(error.message, \"Too much data provided on this batch.\");\n }\n})\n\ntest('can lookup accounts', async (): Promise<void> => {\n const accounts = await client.lookupAccounts([accountA.id, accountB.id])\n\n assert.strictEqual(accounts.length, 2)\n const account1 = accounts[0]\n assert.strictEqual(account1.id, 17n)\n assert.strictEqual(account1.credits_posted, 0n)\n assert.strictEqual(account1.credits_pending, 0n)\n assert.strictEqual(account1.debits_posted, 0n)\n assert.strictEqual(account1.debits_pending, 0n)\n assert.strictEqual(account1.user_data_128, 0n)\n assert.strictEqual(account1.user_data_64, 0n)\n assert.strictEqual(account1.user_data_32, 0)\n assert.strictEqual(account1.code, 718)\n assert.strictEqual(account1.ledger, 1)\n assert.strictEqual(account1.flags, 0)\n assert.ok(account1.timestamp > 0n)\n\n const account2 = accounts[1]\n assert.strictEqual(account2.id, 19n)\n assert.strictEqual(account2.credits_posted, 0n)\n assert.strictEqual(account2.credits_pending, 0n)\n assert.strictEqual(account2.debits_posted, 0n)\n assert.strictEqual(account2.debits_pending, 0n)\n assert.strictEqual(account2.user_data_128, 0n)\n assert.strictEqual(account2.user_data_64, 0n)\n assert.strictEqual(account2.user_data_32, 0)\n assert.strictEqual(account2.code, 719)\n assert.strictEqual(account2.ledger, 1)\n assert.strictEqual(account2.flags, 0)\n assert.ok(account2.timestamp > 0n)\n})\n\ntest('can create a transfer', async (): Promise<void> => {\n const transfer: Transfer = {\n id: 1n,\n debit_account_id: accountB.id,\n credit_account_id: accountA.id,\n amount: 100n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n pending_id: 0n,\n timeout: 0,\n ledger: 1,\n code: 1,\n flags: 0,\n timestamp: 0n, // this will be set correctly by the TigerBeetle server\n }\n\n const errors = await client.createTransfers([transfer])\n assert.deepStrictEqual(errors, [])\n\n const accounts = await client.lookupAccounts([accountA.id, accountB.id])\n assert.strictEqual(accounts.length, 2)\n assert.strictEqual(accounts[0].credits_posted, 100n)\n assert.strictEqual(accounts[0].credits_pending, 0n)\n assert.strictEqual(accounts[0].debits_posted, 0n)\n assert.strictEqual(accounts[0].debits_pending, 0n)\n\n assert.strictEqual(accounts[1].credits_posted, 0n)\n assert.strictEqual(accounts[1].credits_pending, 0n)\n assert.strictEqual(accounts[1].debits_posted, 100n)\n assert.strictEqual(accounts[1].debits_pending, 0n)\n})\n\ntest('can create a two-phase transfer', async (): Promise<void> => {\n let flags = 0\n flags |= TransferFlags.pending\n const transfer: Transfer = {\n id: 2n,\n debit_account_id: accountB.id,\n credit_account_id: accountA.id,\n amount: 50n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n pending_id: 0n,\n timeout: 2e9,\n ledger: 1,\n code: 1,\n flags,\n timestamp: 0n, // this will be set correctly by the TigerBeetle server\n }\n\n const errors = await client.createTransfers([transfer])\n assert.deepStrictEqual(errors, [])\n\n const accounts = await client.lookupAccounts([accountA.id, accountB.id])\n assert.strictEqual(accounts.length, 2)\n assert.strictEqual(accounts[0].credits_posted, 100n)\n assert.strictEqual(accounts[0].credits_pending, 50n)\n assert.strictEqual(accounts[0].debits_posted, 0n)\n assert.strictEqual(accounts[0].debits_pending, 0n)\n\n assert.strictEqual(accounts[1].credits_posted, 0n)\n assert.strictEqual(accounts[1].credits_pending, 0n)\n assert.strictEqual(accounts[1].debits_posted, 100n)\n assert.strictEqual(accounts[1].debits_pending, 50n)\n\n // Lookup the transfer:\n const transfers = await client.lookupTransfers([transfer.id])\n assert.strictEqual(transfers.length, 1)\n assert.strictEqual(transfers[0].id, 2n)\n assert.strictEqual(transfers[0].debit_account_id, accountB.id)\n assert.strictEqual(transfers[0].credit_account_id, accountA.id)\n assert.strictEqual(transfers[0].amount, 50n)\n assert.strictEqual(transfers[0].user_data_128, 0n)\n assert.strictEqual(transfers[0].user_data_64, 0n)\n assert.strictEqual(transfers[0].user_data_32, 0)\n assert.strictEqual(transfers[0].timeout > 0, true)\n assert.strictEqual(transfers[0].code, 1)\n assert.strictEqual(transfers[0].flags, 2)\n assert.strictEqual(transfers[0].timestamp > 0, true)\n})\n\ntest('can post a two-phase transfer', async (): Promise<void> => {\n let flags = 0\n flags |= TransferFlags.post_pending_transfer\n\n const commit: Transfer = {\n id: 3n,\n debit_account_id: BigInt(0),\n credit_account_id: BigInt(0),\n amount: amount_max,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n pending_id: 2n,// must match the id of the pending transfer\n timeout: 0,\n ledger: 1,\n code: 1,\n flags: flags,\n timestamp: 0n, // this will be set correctly by the TigerBeetle server\n }\n\n const errors = await client.createTransfers([commit])\n assert.deepStrictEqual(errors, [])\n\n const accounts = await client.lookupAccounts([accountA.id, accountB.id])\n assert.strictEqual(accounts.length, 2)\n assert.strictEqual(accounts[0].credits_posted, 150n)\n assert.strictEqual(accounts[0].credits_pending, 0n)\n assert.strictEqual(accounts[0].debits_posted, 0n)\n assert.strictEqual(accounts[0].debits_pending, 0n)\n\n assert.strictEqual(accounts[1].credits_posted, 0n)\n assert.strictEqual(accounts[1].credits_pending, 0n)\n assert.strictEqual(accounts[1].debits_posted, 150n)\n assert.strictEqual(accounts[1].debits_pending, 0n)\n})\n\ntest('can reject a two-phase transfer', async (): Promise<void> => {\n // Create a two-phase transfer:\n const transfer: Transfer = {\n id: 4n,\n debit_account_id: accountB.id,\n credit_account_id: accountA.id,\n amount: 50n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n pending_id: 0n,\n timeout: 1e9,\n ledger: 1,\n code: 1,\n flags: TransferFlags.pending,\n timestamp: 0n, // this will be set correctly by the TigerBeetle server\n }\n const transferErrors = await client.createTransfers([transfer])\n assert.deepStrictEqual(transferErrors, [])\n\n // send in the reject\n const reject: Transfer = {\n id: 5n,\n debit_account_id: BigInt(0),\n credit_account_id: BigInt(0),\n amount: 0n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n pending_id: 4n, // must match the id of the pending transfer\n timeout: 0,\n ledger: 1,\n code: 1,\n flags: TransferFlags.void_pending_transfer,\n timestamp: 0n, // this will be set correctly by the TigerBeetle server\n }\n\n const errors = await client.createTransfers([reject])\n assert.deepStrictEqual(errors, [])\n\n const accounts = await client.lookupAccounts([accountA.id, accountB.id])\n assert.strictEqual(accounts.length, 2)\n assert.strictEqual(accounts[0].credits_posted, 150n)\n assert.strictEqual(accounts[0].credits_pending, 0n)\n assert.strictEqual(accounts[0].debits_posted, 0n)\n assert.strictEqual(accounts[0].debits_pending, 0n)\n\n assert.strictEqual(accounts[1].credits_posted, 0n)\n assert.strictEqual(accounts[1].credits_pending, 0n)\n assert.strictEqual(accounts[1].debits_posted, 150n)\n assert.strictEqual(accounts[1].debits_pending, 0n)\n})\n\ntest('can link transfers', async (): Promise<void> => {\n const transfer1: Transfer = {\n id: 6n,\n debit_account_id: accountB.id,\n credit_account_id: accountA.id,\n amount: 100n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n pending_id: 0n,\n timeout: 0,\n ledger: 1,\n code: 1,\n flags: TransferFlags.linked, // points to transfer2\n timestamp: 0n, // will be set correctly by the TigerBeetle server\n }\n const transfer2: Transfer = {\n id: 6n,\n debit_account_id: accountB.id,\n credit_account_id: accountA.id,\n amount: 100n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n pending_id: 0n,\n timeout: 0,\n ledger: 1,\n code: 1,\n // Does not have linked flag as it is the end of the chain.\n // This will also cause it to fail as this is now a duplicate with different flags\n flags: 0,\n timestamp: 0n, // will be set correctly by the TigerBeetle server\n }\n\n const errors = await client.createTransfers([transfer1, transfer2])\n assert.strictEqual(errors.length, 2)\n assert.deepStrictEqual(errors[0], { index: 0, result: CreateTransferError.linked_event_failed })\n assert.deepStrictEqual(errors[1], { index: 1, result: CreateTransferError.exists_with_different_flags })\n\n const accounts = await client.lookupAccounts([accountA.id, accountB.id])\n assert.strictEqual(accounts.length, 2)\n assert.strictEqual(accounts[0].credits_posted, 150n)\n assert.strictEqual(accounts[0].credits_pending, 0n)\n assert.strictEqual(accounts[0].debits_posted, 0n)\n assert.strictEqual(accounts[0].debits_pending, 0n)\n\n assert.strictEqual(accounts[1].credits_posted, 0n)\n assert.strictEqual(accounts[1].credits_pending, 0n)\n assert.strictEqual(accounts[1].debits_posted, 150n)\n assert.strictEqual(accounts[1].debits_pending, 0n)\n})\n\ntest('cannot void an expired transfer', async (): Promise<void> => {\n // Create a two-phase transfer:\n const transfer: Transfer = {\n id: 6n,\n debit_account_id: accountB.id,\n credit_account_id: accountA.id,\n amount: 50n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n pending_id: 0n,\n timeout: 1,\n ledger: 1,\n code: 1,\n flags: TransferFlags.pending,\n timestamp: 0n, // this will be set correctly by the TigerBeetle server\n }\n const transferErrors = await client.createTransfers([transfer])\n assert.deepStrictEqual(transferErrors, [])\n\n var accounts = await client.lookupAccounts([accountA.id, accountB.id])\n assert.strictEqual(accounts.length, 2)\n assert.strictEqual(accounts[0].credits_posted, 150n)\n assert.strictEqual(accounts[0].credits_pending, 50n)\n assert.strictEqual(accounts[0].debits_posted, 0n)\n assert.strictEqual(accounts[0].debits_pending, 0n)\n\n assert.strictEqual(accounts[1].credits_posted, 0n)\n assert.strictEqual(accounts[1].credits_pending, 0n)\n assert.strictEqual(accounts[1].debits_posted, 150n)\n assert.strictEqual(accounts[1].debits_pending, 50n)\n\n // We need to wait 1s for the server to expire the transfer, however the\n // server can pulse the expiry operation anytime after the timeout,\n // so adding an extra delay to avoid flaky tests.\n // TODO: Use `await setTimeout(1000)` when upgrade to Node > 15.\n const extra_wait_time = 250;\n await new Promise(_ => setTimeout(_, (transfer.timeout * 1000) + extra_wait_time));\n\n // Looking up the accounts again for the updated balance.\n accounts = await client.lookupAccounts([accountA.id, accountB.id])\n assert.strictEqual(accounts.length, 2)\n assert.strictEqual(accounts[0].credits_posted, 150n)\n assert.strictEqual(accounts[0].credits_pending, 0n)\n assert.strictEqual(accounts[0].debits_posted, 0n)\n assert.strictEqual(accounts[0].debits_pending, 0n)\n\n assert.strictEqual(accounts[1].credits_posted, 0n)\n assert.strictEqual(accounts[1].credits_pending, 0n)\n assert.strictEqual(accounts[1].debits_posted, 150n)\n assert.strictEqual(accounts[1].debits_pending, 0n)\n\n // send in the reject\n const reject: Transfer = {\n id: 7n,\n debit_account_id: BigInt(0),\n credit_account_id: BigInt(0),\n amount: 0n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n pending_id: 6n, // must match the id of the pending transfer\n timeout: 0,\n ledger: 1,\n code: 1,\n flags: TransferFlags.void_pending_transfer,\n timestamp: 0n, // this will be set correctly by the TigerBeetle server\n }\n\n const errors = await client.createTransfers([reject])\n assert.strictEqual(errors.length, 1)\n assert.deepStrictEqual(errors[0], { index: 0, result: CreateTransferError.pending_transfer_expired })\n})\n\ntest('can close accounts', async (): Promise<void> => {\n const closing_transfer: Transfer = {\n id: id(),\n debit_account_id: accountB.id,\n credit_account_id: accountA.id,\n amount: 0n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n pending_id: 0n,\n timeout: 0,\n ledger: 1,\n code: 1,\n flags: TransferFlags.closing_debit | TransferFlags.closing_credit | TransferFlags.pending,\n timestamp: 0n, // will be set correctly by the TigerBeetle server\n }\n let errors = await client.createTransfers([closing_transfer])\n assert.strictEqual(errors.length, 0)\n\n let accounts = await client.lookupAccounts([accountA.id, accountB.id])\n assert.strictEqual(accounts.length, 2)\n assert.ok(accountA.flags != accounts[0].flags)\n assert.ok((accounts[0].flags & AccountFlags.closed) != 0)\n\n assert.ok(accountB.flags != accounts[1].flags)\n assert.ok((accounts[1].flags & AccountFlags.closed) != 0)\n\n const voiding_transfer: Transfer = {\n id: id(),\n debit_account_id: accountB.id,\n credit_account_id: accountA.id,\n amount: 0n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n timeout: 0,\n ledger: 1,\n code: 1,\n flags: TransferFlags.void_pending_transfer,\n pending_id: closing_transfer.id,\n timestamp: 0n, // will be set correctly by the TigerBeetle server\n }\n\n errors = await client.createTransfers([voiding_transfer])\n assert.strictEqual(errors.length, 0)\n\n accounts = await client.lookupAccounts([accountA.id, accountB.id])\n assert.strictEqual(accounts.length, 2)\n assert.strictEqual(accountA.flags, accounts[0].flags)\n assert.ok((accounts[0].flags & AccountFlags.closed) == 0)\n\n assert.strictEqual(accountB.flags, accounts[1].flags)\n assert.ok((accounts[1].flags & AccountFlags.closed) == 0)\n})\n\ntest('can get account transfers', async (): Promise<void> => {\n const accountC: Account = {\n id: 21n,\n debits_pending: 0n,\n debits_posted: 0n,\n credits_pending: 0n,\n credits_posted: 0n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n reserved: 0,\n ledger: 1,\n code: 718,\n flags: AccountFlags.history,\n timestamp: 0n\n }\n const account_errors = await client.createAccounts([accountC])\n assert.deepStrictEqual(account_errors, [])\n\n var transfers_created : Transfer[] = [];\n // Create transfers where the new account is either the debit or credit account:\n for (var i=0; i<10;i++) {\n transfers_created.push({\n id: BigInt(i + 10000),\n debit_account_id: i % 2 == 0 ? accountC.id : accountA.id,\n credit_account_id: i % 2 == 0 ? accountB.id : accountC.id,\n amount: 100n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n pending_id: 0n,\n timeout: 0,\n ledger: 1,\n code: 1,\n flags: 0,\n timestamp: 0n,\n });\n }\n\n const transfers_created_result = await client.createTransfers(transfers_created)\n assert.deepStrictEqual(transfers_created_result, [])\n\n // Query all transfers for accountC:\n var filter: AccountFilter = {\n account_id: accountC.id,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 8190,\n flags: AccountFilterFlags.credits | AccountFilterFlags.debits,\n }\n var transfers = await client.getAccountTransfers(filter)\n var account_balances = await client.getAccountBalances(filter)\n assert.strictEqual(transfers.length, transfers_created.length)\n assert.strictEqual(account_balances.length, transfers.length)\n\n var timestamp = 0n;\n var i = 0;\n for (var transfer of transfers) {\n assert.ok(timestamp < transfer.timestamp);\n timestamp = transfer.timestamp;\n\n assert.ok(account_balances[i].timestamp == transfer.timestamp);\n i++;\n }\n\n // Query only the debit transfers for accountC, descending:\n filter = {\n account_id: accountC.id,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 8190,\n flags: AccountFilterFlags.debits | AccountFilterFlags.reversed,\n }\n transfers = await client.getAccountTransfers(filter)\n account_balances = await client.getAccountBalances(filter)\n\n assert.strictEqual(transfers.length, transfers_created.length / 2)\n assert.strictEqual(account_balances.length, transfers.length)\n\n timestamp = 1n << 64n;\n i = 0;\n for (var transfer of transfers) {\n assert.ok(transfer.timestamp < timestamp);\n timestamp = transfer.timestamp;\n\n assert.ok(account_balances[i].timestamp == transfer.timestamp);\n i++;\n }\n\n // Query only the credit transfers for accountC, descending:\n filter = {\n account_id: accountC.id,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 8190,\n flags: AccountFilterFlags.credits | AccountFilterFlags.reversed,\n }\n transfers = await client.getAccountTransfers(filter)\n account_balances = await client.getAccountBalances(filter)\n\n assert.strictEqual(transfers.length, transfers_created.length / 2)\n assert.strictEqual(account_balances.length, transfers.length)\n\n timestamp = 1n << 64n;\n i = 0;\n for (var transfer of transfers) {\n assert.ok(transfer.timestamp < timestamp);\n timestamp = transfer.timestamp;\n\n assert.ok(account_balances[i].timestamp == transfer.timestamp);\n i++;\n }\n\n // Query the first 5 transfers for accountC:\n filter = {\n account_id: accountC.id,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: transfers_created.length / 2,\n flags: AccountFilterFlags.credits | AccountFilterFlags.debits,\n }\n transfers = await client.getAccountTransfers(filter)\n account_balances = await client.getAccountBalances(filter)\n\n assert.strictEqual(transfers.length, transfers_created.length / 2)\n assert.strictEqual(account_balances.length, transfers.length)\n\n timestamp = 0n;\n i = 0;\n for (var transfer of transfers) {\n assert.ok(timestamp < transfer.timestamp);\n timestamp = transfer.timestamp;\n\n assert.ok(account_balances[i].timestamp == transfer.timestamp);\n i++;\n }\n\n // Query the next 5 transfers for accountC, with pagination:\n filter = {\n account_id: accountC.id,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: timestamp + 1n,\n timestamp_max: 0n,\n limit: transfers_created.length / 2,\n flags: AccountFilterFlags.credits | AccountFilterFlags.debits,\n }\n transfers = await client.getAccountTransfers(filter)\n account_balances = await client.getAccountBalances(filter)\n\n assert.strictEqual(transfers.length, transfers_created.length / 2)\n assert.strictEqual(account_balances.length, transfers.length)\n\n i = 0;\n for (var transfer of transfers) {\n assert.ok(timestamp < transfer.timestamp);\n timestamp = transfer.timestamp;\n\n assert.ok(account_balances[i].timestamp == transfer.timestamp);\n i++;\n }\n\n // Query again, no more transfers should be found:\n filter = {\n account_id: accountC.id,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: timestamp + 1n,\n timestamp_max: 0n,\n limit: transfers_created.length / 2,\n flags: AccountFilterFlags.credits | AccountFilterFlags.debits,\n }\n transfers = await client.getAccountTransfers(filter)\n account_balances = await client.getAccountBalances(filter)\n\n assert.deepStrictEqual(transfers, [])\n assert.strictEqual(account_balances.length, transfers.length)\n\n // Query the first 5 transfers for accountC ORDER BY DESC:\n filter = {\n account_id: accountC.id,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: transfers_created.length / 2,\n flags: AccountFilterFlags.credits | AccountFilterFlags.debits | AccountFilterFlags.reversed,\n }\n transfers = await client.getAccountTransfers(filter)\n account_balances = await client.getAccountBalances(filter)\n\n assert.strictEqual(transfers.length, transfers_created.length / 2)\n assert.strictEqual(account_balances.length, transfers.length)\n\n timestamp = 1n << 64n;\n i = 0;\n for (var transfer of transfers) {\n assert.ok(timestamp > transfer.timestamp);\n timestamp = transfer.timestamp;\n\n assert.ok(account_balances[i].timestamp == transfer.timestamp);\n i++;\n }\n\n // Query the next 5 transfers for accountC, with pagination:\n filter = {\n account_id: accountC.id,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: timestamp - 1n,\n limit: transfers_created.length / 2,\n flags: AccountFilterFlags.credits | AccountFilterFlags.debits | AccountFilterFlags.reversed,\n }\n transfers = await client.getAccountTransfers(filter)\n account_balances = await client.getAccountBalances(filter)\n\n assert.strictEqual(transfers.length, transfers_created.length / 2)\n assert.strictEqual(account_balances.length, transfers.length)\n\n i = 0;\n for (var transfer of transfers) {\n assert.ok(timestamp > transfer.timestamp);\n timestamp = transfer.timestamp;\n\n assert.ok(account_balances[i].timestamp == transfer.timestamp);\n i++;\n }\n\n // Query again, no more transfers should be found:\n filter = {\n account_id: accountC.id,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: timestamp - 1n,\n limit: transfers_created.length / 2,\n flags: AccountFilterFlags.credits | AccountFilterFlags.debits | AccountFilterFlags.reversed,\n }\n transfers = await client.getAccountTransfers(filter)\n account_balances = await client.getAccountBalances(filter)\n\n assert.deepStrictEqual(transfers, [])\n assert.strictEqual(account_balances.length, transfers.length)\n\n // Invalid account:\n filter = {\n account_id: 0n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 8190,\n flags: AccountFilterFlags.credits | AccountFilterFlags.debits,\n }\n assert.deepStrictEqual((await client.getAccountTransfers(filter)), [])\n assert.deepStrictEqual((await client.getAccountBalances(filter)), [])\n\n // Invalid timestamp min:\n filter = {\n account_id: accountC.id,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: (1n << 64n) - 1n, // ulong max value\n timestamp_max: 0n,\n limit: 8190,\n flags: AccountFilterFlags.credits | AccountFilterFlags.debits,\n }\n assert.deepStrictEqual((await client.getAccountTransfers(filter)), [])\n assert.deepStrictEqual((await client.getAccountBalances(filter)), [])\n\n // Invalid timestamp max:\n filter = {\n account_id: accountC.id,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: (1n << 64n) - 1n, // ulong max value\n limit: 8190,\n flags: AccountFilterFlags.credits | AccountFilterFlags.debits,\n }\n assert.deepStrictEqual((await client.getAccountTransfers(filter)), [])\n assert.deepStrictEqual((await client.getAccountBalances(filter)), [])\n\n // Invalid timestamp range:\n filter = {\n account_id: accountC.id,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: (1n << 64n) - 2n, // ulong max - 1\n timestamp_max: 1n,\n limit: 8190,\n flags: AccountFilterFlags.credits | AccountFilterFlags.debits,\n }\n assert.deepStrictEqual((await client.getAccountTransfers(filter)), [])\n assert.deepStrictEqual((await client.getAccountBalances(filter)), [])\n\n // Zero limit:\n filter = {\n account_id: accountC.id,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 0,\n flags: AccountFilterFlags.credits | AccountFilterFlags.debits,\n }\n assert.deepStrictEqual((await client.getAccountTransfers(filter)), [])\n assert.deepStrictEqual((await client.getAccountBalances(filter)), [])\n\n // Empty flags:\n filter = {\n account_id: accountC.id,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 8190,\n flags: AccountFilterFlags.none,\n }\n assert.deepStrictEqual((await client.getAccountTransfers(filter)), [])\n assert.deepStrictEqual((await client.getAccountBalances(filter)), [])\n\n // Invalid flags:\n filter = {\n account_id: accountC.id,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 8190,\n flags: 0xFFFF,\n }\n assert.deepStrictEqual((await client.getAccountTransfers(filter)), [])\n assert.deepStrictEqual((await client.getAccountBalances(filter)), [])\n\n})\n\ntest('can query accounts', async (): Promise<void> => {\n {\n var accounts : Account[] = [];\n // Create transfers:\n for (var i=0; i<10;i++) {\n accounts.push({\n id: id(),\n debits_pending: 0n,\n debits_posted: 0n,\n credits_pending: 0n,\n credits_posted: 0n,\n user_data_128: i % 2 == 0 ? 1000n : 2000n,\n user_data_64: i % 2 == 0 ? 100n : 200n,\n user_data_32: i % 2 == 0 ? 10 : 20,\n ledger: 1,\n code: 999,\n flags: AccountFlags.none,\n reserved: 0,\n timestamp: 0n,\n })\n }\n\n const create_accounts_result = await client.createAccounts(accounts)\n assert.deepStrictEqual(create_accounts_result, [])\n }\n\n {\n // Querying accounts where:\n // `user_data_128=1000 AND user_data_64=100 AND user_data_32=10\n // AND code=999 AND ledger=1 ORDER BY timestamp ASC`.\n var filter: QueryFilter = {\n user_data_128: 1000n,\n user_data_64: 100n,\n user_data_32: 10,\n ledger: 1,\n code: 999,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 8190,\n flags: QueryFilterFlags.none,\n }\n var query: Account[] = await client.queryAccounts(filter)\n assert.strictEqual(query.length, 5)\n\n var timestamp = 0n;\n for (var account of query) {\n assert.ok(timestamp < account.timestamp);\n timestamp = account.timestamp;\n\n assert.strictEqual(account.user_data_128, filter.user_data_128);\n assert.strictEqual(account.user_data_64, filter.user_data_64);\n assert.strictEqual(account.user_data_32, filter.user_data_32);\n assert.strictEqual(account.ledger, filter.ledger);\n assert.strictEqual(account.code, filter.code);\n }\n }\n\n {\n // Querying accounts where:\n // `user_data_128=2000 AND user_data_64=200 AND user_data_32=20\n // AND code=999 AND ledger=1 ORDER BY timestamp DESC`.\n var filter: QueryFilter = {\n user_data_128: 2000n,\n user_data_64: 200n,\n user_data_32: 20,\n ledger: 1,\n code: 999,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 8190,\n flags: QueryFilterFlags.reversed,\n }\n var query: Account[] = await client.queryAccounts(filter)\n assert.strictEqual(query.length, 5)\n\n var timestamp = 1n << 64n;\n for (var account of query) {\n assert.ok(timestamp > account.timestamp);\n timestamp = account.timestamp;\n\n assert.strictEqual(account.user_data_128, filter.user_data_128);\n assert.strictEqual(account.user_data_64, filter.user_data_64);\n assert.strictEqual(account.user_data_32, filter.user_data_32);\n assert.strictEqual(account.ledger, filter.ledger);\n assert.strictEqual(account.code, filter.code);\n }\n }\n\n {\n // Querying accounts where:\n // `code=999 ORDER BY timestamp ASC`\n var filter: QueryFilter = {\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n ledger: 0,\n code: 999,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 8190,\n flags: QueryFilterFlags.none,\n }\n var query: Account[] = await client.queryAccounts(filter)\n assert.strictEqual(query.length, 10)\n\n var timestamp = 0n;\n for (var account of query) {\n assert.ok(timestamp < account.timestamp);\n timestamp = account.timestamp;\n\n assert.strictEqual(account.code, filter.code);\n }\n }\n\n {\n // Querying accounts where:\n // `code=999 ORDER BY timestamp DESC LIMIT 5`.\n var filter: QueryFilter = {\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n ledger: 0,\n code: 999,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 5,\n flags: QueryFilterFlags.reversed,\n }\n\n // First 5 items:\n var query: Account[] = await client.queryAccounts(filter)\n assert.strictEqual(query.length, 5)\n\n var timestamp = 1n << 64n;\n for (var account of query) {\n assert.ok(timestamp > account.timestamp);\n timestamp = account.timestamp;\n\n assert.strictEqual(account.code, filter.code);\n }\n\n // Next 5 items:\n filter.timestamp_max = timestamp - 1n\n query = await client.queryAccounts(filter)\n assert.strictEqual(query.length, 5)\n\n for (var account of query) {\n assert.ok(timestamp > account.timestamp);\n timestamp = account.timestamp;\n\n assert.strictEqual(account.code, filter.code);\n }\n\n // No more results:\n filter.timestamp_max = timestamp - 1n\n query = await client.queryAccounts(filter)\n assert.strictEqual(query.length, 0)\n }\n\n {\n // Not found:\n var filter: QueryFilter = {\n user_data_128: 0n,\n user_data_64: 200n,\n user_data_32: 10,\n ledger: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 8190,\n flags: QueryFilterFlags.none,\n }\n var query: Account[] = await client.queryAccounts(filter)\n assert.strictEqual(query.length, 0)\n }\n})\n\ntest('can query transfers', async (): Promise<void> => {\n {\n const account: Account = {\n id: id(),\n debits_pending: 0n,\n debits_posted: 0n,\n credits_pending: 0n,\n credits_posted: 0n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n reserved: 0,\n ledger: 1,\n code: 718,\n flags: AccountFlags.none,\n timestamp: 0n\n }\n const create_accounts_result = await client.createAccounts([account])\n assert.deepStrictEqual(create_accounts_result, [])\n\n var transfers_created : Transfer[] = [];\n // Create transfers:\n for (var i=0; i<10;i++) {\n transfers_created.push({\n id: id(),\n debit_account_id: i % 2 == 0 ? account.id : accountA.id,\n credit_account_id: i % 2 == 0 ? accountB.id : account.id,\n amount: 100n,\n user_data_128: i % 2 == 0 ? 1000n : 2000n,\n user_data_64: i % 2 == 0 ? 100n : 200n,\n user_data_32: i % 2 == 0 ? 10 : 20,\n pending_id: 0n,\n timeout: 0,\n ledger: 1,\n code: 999,\n flags: 0,\n timestamp: 0n,\n })\n }\n\n const create_transfers_result = await client.createTransfers(transfers_created)\n assert.deepStrictEqual(create_transfers_result, [])\n }\n\n {\n // Querying transfers where:\n // `user_data_128=1000 AND user_data_64=100 AND user_data_32=10\n // AND code=999 AND ledger=1 ORDER BY timestamp ASC`.\n var filter: QueryFilter = {\n user_data_128: 1000n,\n user_data_64: 100n,\n user_data_32: 10,\n ledger: 1,\n code: 999,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 8190,\n flags: QueryFilterFlags.none,\n }\n var query: Transfer[] = await client.queryTransfers(filter)\n assert.strictEqual(query.length, 5)\n\n var timestamp = 0n;\n for (var transfer of query) {\n assert.ok(timestamp < transfer.timestamp);\n timestamp = transfer.timestamp;\n\n assert.strictEqual(transfer.user_data_128, filter.user_data_128);\n assert.strictEqual(transfer.user_data_64, filter.user_data_64);\n assert.strictEqual(transfer.user_data_32, filter.user_data_32);\n assert.strictEqual(transfer.ledger, filter.ledger);\n assert.strictEqual(transfer.code, filter.code);\n }\n }\n\n {\n // Querying transfers where:\n // `user_data_128=2000 AND user_data_64=200 AND user_data_32=20\n // AND code=999 AND ledger=1 ORDER BY timestamp DESC`.\n var filter: QueryFilter = {\n user_data_128: 2000n,\n user_data_64: 200n,\n user_data_32: 20,\n ledger: 1,\n code: 999,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 8190,\n flags: QueryFilterFlags.reversed,\n }\n var query: Transfer[] = await client.queryTransfers(filter)\n assert.strictEqual(query.length, 5)\n\n var timestamp = 1n << 64n;\n for (var transfer of query) {\n assert.ok(timestamp > transfer.timestamp);\n timestamp = transfer.timestamp;\n\n assert.strictEqual(transfer.user_data_128, filter.user_data_128);\n assert.strictEqual(transfer.user_data_64, filter.user_data_64);\n assert.strictEqual(transfer.user_data_32, filter.user_data_32);\n assert.strictEqual(transfer.ledger, filter.ledger);\n assert.strictEqual(transfer.code, filter.code);\n }\n }\n\n {\n // Querying transfers where:\n // `code=999 ORDER BY timestamp ASC`\n var filter: QueryFilter = {\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n ledger: 0,\n code: 999,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 8190,\n flags: QueryFilterFlags.none,\n }\n var query: Transfer[] = await client.queryTransfers(filter)\n assert.strictEqual(query.length, 10)\n\n var timestamp = 0n;\n for (var transfer of query) {\n assert.ok(timestamp < transfer.timestamp);\n timestamp = transfer.timestamp;\n\n assert.strictEqual(transfer.code, filter.code);\n }\n }\n\n {\n // Querying transfers where:\n // `code=999 ORDER BY timestamp DESC LIMIT 5`.\n var filter: QueryFilter = {\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n ledger: 0,\n code: 999,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 5,\n flags: QueryFilterFlags.reversed,\n }\n\n // First 5 items:\n var query: Transfer[] = await client.queryTransfers(filter)\n assert.strictEqual(query.length, 5)\n\n var timestamp = 1n << 64n;\n for (var transfer of query) {\n assert.ok(timestamp > transfer.timestamp);\n timestamp = transfer.timestamp;\n\n assert.strictEqual(transfer.code, filter.code);\n }\n\n // Next 5 items:\n filter.timestamp_max = timestamp - 1n\n query = await client.queryTransfers(filter)\n assert.strictEqual(query.length, 5)\n\n for (var transfer of query) {\n assert.ok(timestamp > transfer.timestamp);\n timestamp = transfer.timestamp;\n\n assert.strictEqual(transfer.code, filter.code);\n }\n\n // No more results:\n filter.timestamp_max = timestamp - 1n\n query = await client.queryTransfers(filter)\n assert.strictEqual(query.length, 0)\n }\n\n {\n // Not found:\n var filter: QueryFilter = {\n user_data_128: 0n,\n user_data_64: 200n,\n user_data_32: 10,\n ledger: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 8190,\n flags: QueryFilterFlags.none,\n }\n var query: Transfer[] = await client.queryTransfers(filter)\n assert.strictEqual(query.length, 0)\n }\n})\n\ntest('query with invalid filter', async (): Promise<void> => {\n // Invalid timestamp min:\n var filter: QueryFilter = {\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n ledger: 0,\n code: 0,\n timestamp_min: (1n << 64n) - 1n, // ulong max value\n timestamp_max: 0n,\n limit: 8190,\n flags: QueryFilterFlags.none,\n }\n assert.deepStrictEqual((await client.queryAccounts(filter)), [])\n assert.deepStrictEqual((await client.queryTransfers(filter)), [])\n\n // Invalid timestamp max:\n filter = {\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n ledger: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: (1n << 64n) - 1n, // ulong max value,\n limit: 8190,\n flags: QueryFilterFlags.none,\n }\n assert.deepStrictEqual((await client.queryAccounts(filter)), [])\n assert.deepStrictEqual((await client.queryTransfers(filter)), [])\n\n // Invalid timestamp range:\n filter = {\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n ledger: 0,\n code: 0,\n timestamp_min: (1n << 64n) - 2n, // ulong max - 1\n timestamp_max: 1n,\n limit: 8190,\n flags: QueryFilterFlags.none,\n }\n assert.deepStrictEqual((await client.queryAccounts(filter)), [])\n assert.deepStrictEqual((await client.queryTransfers(filter)), [])\n\n // Zero limit:\n filter = {\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n ledger: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 0,\n flags: QueryFilterFlags.none,\n }\n assert.deepStrictEqual((await client.queryAccounts(filter)), [])\n assert.deepStrictEqual((await client.queryTransfers(filter)), [])\n\n // Invalid flags:\n filter = {\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n ledger: 0,\n code: 0,\n timestamp_min: 0n,\n timestamp_max: 0n,\n limit: 0,\n flags: 0xFFFF,\n }\n assert.deepStrictEqual((await client.queryAccounts(filter)), [])\n assert.deepStrictEqual((await client.queryTransfers(filter)), [])\n})\n\ntest('can import accounts and transfers', async (): Promise<void> => {\n const accountTmp: Account = {\n id: id(),\n debits_pending: 0n,\n debits_posted: 0n,\n credits_pending: 0n,\n credits_posted: 0n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n reserved: 0,\n ledger: 1,\n code: 718,\n flags: 0,\n timestamp: 0n // this will be set correctly by the TigerBeetle server\n }\n let accountsErrors = await client.createAccounts([accountTmp])\n assert.deepStrictEqual(accountsErrors, [])\n\n let accountLookup = await client.lookupAccounts([accountTmp.id])\n assert.strictEqual(accountLookup.length, 1)\n const timestampMax = accountLookup[0].timestamp\n\n // Wait 10 ms so we can use the account's timestamp as the reference for past time\n // after the last object inserted.\n await new Promise(_ => setTimeout(_, 10));\n\n const accountA: Account = {\n id: id(),\n debits_pending: 0n,\n debits_posted: 0n,\n credits_pending: 0n,\n credits_posted: 0n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n reserved: 0,\n ledger: 1,\n code: 718,\n flags: AccountFlags.imported,\n timestamp: timestampMax + 1n // user-defined timestamp\n }\n const accountB: Account = {\n id: id(),\n debits_pending: 0n,\n debits_posted: 0n,\n credits_pending: 0n,\n credits_posted: 0n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n reserved: 0,\n ledger: 1,\n code: 718,\n flags: AccountFlags.imported,\n timestamp: timestampMax + 2n // user-defined timestamp\n }\n accountsErrors = await client.createAccounts([accountA, accountB])\n assert.deepStrictEqual(accountsErrors, [])\n\n accountLookup = await client.lookupAccounts([accountA.id, accountB.id])\n assert.strictEqual(accountLookup.length, 2)\n assert.strictEqual(accountLookup[0].timestamp, accountA.timestamp)\n assert.strictEqual(accountLookup[1].timestamp, accountB.timestamp)\n\n const transfer: Transfer = {\n id: id(),\n debit_account_id: accountA.id,\n credit_account_id: accountB.id,\n amount: 100n,\n user_data_128: 0n,\n user_data_64: 0n,\n user_data_32: 0,\n pending_id: 0n,\n timeout: 0,\n ledger: 1,\n code: 1,\n flags: TransferFlags.imported,\n timestamp: timestampMax + 3n, // user-defined timestamp.\n }\n\n const errors = await client.createTransfers([transfer])\n assert.deepStrictEqual(errors, [])\n\n const transfers = await client.lookupTransfers([transfer.id])\n assert.strictEqual(transfers.length, 1)\n assert.strictEqual(transfers[0].timestamp, timestampMax + 3n)\n})\n\ntest('accept zero-length create_accounts', async (): Promise<void> => {\n const errors = await client.createAccounts([])\n assert.deepStrictEqual(errors, [])\n})\n\ntest('accept zero-length create_transfers', async (): Promise<void> => {\n const errors = await client.createTransfers([])\n assert.deepStrictEqual(errors, [])\n})\n\ntest('accept zero-length lookup_accounts', async (): Promise<void> => {\n const accounts = await client.lookupAccounts([])\n assert.deepStrictEqual(accounts, [])\n})\n\ntest('accept zero-length lookup_transfers', async (): Promise<void> => {\n const transfers = await client.lookupTransfers([])\n assert.deepStrictEqual(transfers, [])\n})\n\ntest(\"destroy client in-flight\", async (): Promise<void> => {\n // Non-existing cluster.\n const client = createClient({ cluster_id: 92n, replica_addresses: [\"99\"] });\n setTimeout(() => client.destroy(), 30);\n try {\n await client.lookupAccounts([0n]);\n } catch (error) {\n assert.strictEqual(error.message, \"Client was shutdown.\");\n return;\n }\n throw \"expected an error\";\n});\n\nasync function main () {\n const start = new Date().getTime()\n try {\n for (let i = 0; i < tests.length; i++) {\n await tests[i].fn().then(() => {\n console.log(tests[i].name + \": PASSED\")\n }).catch(error => {\n console.log(tests[i].name + \": FAILED\")\n throw error\n })\n }\n const end = new Date().getTime()\n console.log('Time taken (s):', (end - start)/1000)\n } finally {\n await client.destroy()\n }\n}\n\nmain().catch((error: AssertionError) => {\n console.log('operator:', error.operator)\n console.log('stack:', error.stack)\n process.exit(-1);\n})\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tigerbeetle-node",
3
- "version": "0.16.32",
3
+ "version": "0.16.34",
4
4
  "description": "TigerBeetle Node.js client",
5
5
  "main": "dist/index.js",
6
6
  "typings": "dist/index.d.ts",
package/src/bindings.ts CHANGED
@@ -602,11 +602,6 @@ export enum CreateTransferError {
602
602
  */
603
603
  closing_transfer_must_be_pending = 64,
604
604
 
605
- /**
606
- * See [amount_must_not_be_zero](https://docs.tigerbeetle.com/reference/requests/create_transfers#amount_must_not_be_zero)
607
- */
608
- amount_must_not_be_zero = 18,
609
-
610
605
  /**
611
606
  * See [ledger_must_not_be_zero](https://docs.tigerbeetle.com/reference/requests/create_transfers#ledger_must_not_be_zero)
612
607
  */
package/src/test.ts CHANGED
@@ -105,6 +105,35 @@ test('error if timestamp is not set to 0n on account', async (): Promise<void> =
105
105
  assert.deepStrictEqual(errors[0], { index: 0, result: CreateAccountError.timestamp_must_be_zero })
106
106
  })
107
107
 
108
+ test('batch max size', async (): Promise<void> => {
109
+ const BATCH_SIZE = 10_000;
110
+ var transfers: Transfer[] = [];
111
+ for (var i=0; i<BATCH_SIZE;i++) {
112
+ transfers.push({
113
+ id: 0n,
114
+ debit_account_id: 0n,
115
+ credit_account_id: 0n,
116
+ amount: 0n,
117
+ user_data_128: 0n,
118
+ user_data_64: 0n,
119
+ user_data_32: 0,
120
+ pending_id: 0n,
121
+ timeout: 0,
122
+ ledger: 0,
123
+ code: 0,
124
+ flags: 0,
125
+ timestamp: 0n,
126
+ });
127
+ }
128
+
129
+ try {
130
+ const results = await client.createTransfers(transfers);
131
+ assert.fail();
132
+ } catch (error) {
133
+ assert.strictEqual(error.message, "Too much data provided on this batch.");
134
+ }
135
+ })
136
+
108
137
  test('can lookup accounts', async (): Promise<void> => {
109
138
  const accounts = await client.lookupAccounts([accountA.id, accountB.id])
110
139