tigerbeetle-node 0.12.25 → 0.12.27

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
package/dist/index.d.ts CHANGED
@@ -30,13 +30,13 @@ export declare enum CreateAccountError {
30
30
  reserved_field = 5,
31
31
  id_must_not_be_zero = 6,
32
32
  id_must_not_be_int_max = 7,
33
- ledger_must_not_be_zero = 8,
34
- code_must_not_be_zero = 9,
35
- debits_pending_must_be_zero = 10,
36
- debits_posted_must_be_zero = 11,
37
- credits_pending_must_be_zero = 12,
38
- credits_posted_must_be_zero = 13,
39
- mutually_exclusive_flags = 14,
33
+ flags_are_mutually_exclusive = 8,
34
+ ledger_must_not_be_zero = 9,
35
+ code_must_not_be_zero = 10,
36
+ debits_pending_must_be_zero = 11,
37
+ debits_posted_must_be_zero = 12,
38
+ credits_pending_must_be_zero = 13,
39
+ credits_posted_must_be_zero = 14,
40
40
  exists_with_different_flags = 15,
41
41
  exists_with_different_user_data = 16,
42
42
  exists_with_different_ledger = 17,
@@ -65,7 +65,9 @@ export declare enum TransferFlags {
65
65
  linked = 1,
66
66
  pending = 2,
67
67
  post_pending_transfer = 4,
68
- void_pending_transfer = 8
68
+ void_pending_transfer = 8,
69
+ balancing_debit = 16,
70
+ balancing_credit = 32
69
71
  }
70
72
  export declare enum CreateTransferError {
71
73
  linked_event_failed = 1,
@@ -75,54 +77,53 @@ export declare enum CreateTransferError {
75
77
  reserved_field = 5,
76
78
  id_must_not_be_zero = 6,
77
79
  id_must_not_be_int_max = 7,
78
- debit_account_id_must_not_be_zero = 8,
79
- debit_account_id_must_not_be_int_max = 9,
80
- credit_account_id_must_not_be_zero = 10,
81
- credit_account_id_must_not_be_int_max = 11,
82
- accounts_must_be_different = 12,
83
- pending_id_must_be_zero = 13,
84
- ledger_must_not_be_zero = 14,
85
- code_must_not_be_zero = 15,
86
- amount_must_not_be_zero = 16,
87
- debit_account_not_found = 17,
88
- credit_account_not_found = 18,
89
- accounts_must_have_the_same_ledger = 19,
90
- transfer_must_have_the_same_ledger_as_accounts = 20,
91
- exists_with_different_flags = 21,
92
- exists_with_different_debit_account_id = 22,
93
- exists_with_different_credit_account_id = 23,
94
- exists_with_different_user_data = 24,
95
- exists_with_different_pending_id = 25,
96
- exists_with_different_timeout = 26,
97
- exists_with_different_code = 27,
98
- exists_with_different_amount = 28,
99
- exists = 29,
100
- overflows_debits_pending = 30,
101
- overflows_credits_pending = 31,
102
- overflows_debits_posted = 32,
103
- overflows_credits_posted = 33,
104
- overflows_debits = 34,
105
- overflows_credits = 35,
106
- overflows_timeout = 36,
107
- exceeds_credits = 37,
108
- exceeds_debits = 38,
109
- cannot_post_and_void_pending_transfer = 39,
110
- pending_transfer_cannot_post_or_void_another = 40,
111
- timeout_reserved_for_pending_transfer = 41,
112
- pending_id_must_not_be_zero = 42,
113
- pending_id_must_not_be_int_max = 43,
114
- pending_id_must_be_different = 44,
115
- pending_transfer_not_found = 45,
116
- pending_transfer_not_pending = 46,
117
- pending_transfer_has_different_debit_account_id = 47,
118
- pending_transfer_has_different_credit_account_id = 48,
119
- pending_transfer_has_different_ledger = 49,
120
- pending_transfer_has_different_code = 50,
121
- exceeds_pending_transfer_amount = 51,
122
- pending_transfer_has_different_amount = 52,
123
- pending_transfer_already_posted = 53,
124
- pending_transfer_already_voided = 54,
125
- pending_transfer_expired = 55
80
+ flags_are_mutually_exclusive = 8,
81
+ debit_account_id_must_not_be_zero = 9,
82
+ debit_account_id_must_not_be_int_max = 10,
83
+ credit_account_id_must_not_be_zero = 11,
84
+ credit_account_id_must_not_be_int_max = 12,
85
+ accounts_must_be_different = 13,
86
+ pending_id_must_be_zero = 14,
87
+ pending_id_must_not_be_zero = 15,
88
+ pending_id_must_not_be_int_max = 16,
89
+ pending_id_must_be_different = 17,
90
+ timeout_reserved_for_pending_transfer = 18,
91
+ ledger_must_not_be_zero = 19,
92
+ code_must_not_be_zero = 20,
93
+ amount_must_not_be_zero = 21,
94
+ debit_account_not_found = 22,
95
+ credit_account_not_found = 23,
96
+ accounts_must_have_the_same_ledger = 24,
97
+ transfer_must_have_the_same_ledger_as_accounts = 25,
98
+ pending_transfer_not_found = 26,
99
+ pending_transfer_not_pending = 27,
100
+ pending_transfer_has_different_debit_account_id = 28,
101
+ pending_transfer_has_different_credit_account_id = 29,
102
+ pending_transfer_has_different_ledger = 30,
103
+ pending_transfer_has_different_code = 31,
104
+ exceeds_pending_transfer_amount = 32,
105
+ pending_transfer_has_different_amount = 33,
106
+ pending_transfer_already_posted = 34,
107
+ pending_transfer_already_voided = 35,
108
+ pending_transfer_expired = 36,
109
+ exists_with_different_flags = 37,
110
+ exists_with_different_debit_account_id = 38,
111
+ exists_with_different_credit_account_id = 39,
112
+ exists_with_different_user_data = 40,
113
+ exists_with_different_pending_id = 41,
114
+ exists_with_different_timeout = 42,
115
+ exists_with_different_code = 43,
116
+ exists_with_different_amount = 44,
117
+ exists = 45,
118
+ overflows_debits_pending = 46,
119
+ overflows_credits_pending = 47,
120
+ overflows_debits_posted = 48,
121
+ overflows_credits_posted = 49,
122
+ overflows_debits = 50,
123
+ overflows_credits = 51,
124
+ overflows_timeout = 52,
125
+ exceeds_credits = 53,
126
+ exceeds_debits = 54
126
127
  }
127
128
  export declare type CreateTransfersError = {
128
129
  index: number;
package/dist/index.js CHANGED
@@ -49,13 +49,13 @@ var CreateAccountError;
49
49
  CreateAccountError[CreateAccountError["reserved_field"] = 5] = "reserved_field";
50
50
  CreateAccountError[CreateAccountError["id_must_not_be_zero"] = 6] = "id_must_not_be_zero";
51
51
  CreateAccountError[CreateAccountError["id_must_not_be_int_max"] = 7] = "id_must_not_be_int_max";
52
- CreateAccountError[CreateAccountError["ledger_must_not_be_zero"] = 8] = "ledger_must_not_be_zero";
53
- CreateAccountError[CreateAccountError["code_must_not_be_zero"] = 9] = "code_must_not_be_zero";
54
- CreateAccountError[CreateAccountError["debits_pending_must_be_zero"] = 10] = "debits_pending_must_be_zero";
55
- CreateAccountError[CreateAccountError["debits_posted_must_be_zero"] = 11] = "debits_posted_must_be_zero";
56
- CreateAccountError[CreateAccountError["credits_pending_must_be_zero"] = 12] = "credits_pending_must_be_zero";
57
- CreateAccountError[CreateAccountError["credits_posted_must_be_zero"] = 13] = "credits_posted_must_be_zero";
58
- CreateAccountError[CreateAccountError["mutually_exclusive_flags"] = 14] = "mutually_exclusive_flags";
52
+ CreateAccountError[CreateAccountError["flags_are_mutually_exclusive"] = 8] = "flags_are_mutually_exclusive";
53
+ CreateAccountError[CreateAccountError["ledger_must_not_be_zero"] = 9] = "ledger_must_not_be_zero";
54
+ CreateAccountError[CreateAccountError["code_must_not_be_zero"] = 10] = "code_must_not_be_zero";
55
+ CreateAccountError[CreateAccountError["debits_pending_must_be_zero"] = 11] = "debits_pending_must_be_zero";
56
+ CreateAccountError[CreateAccountError["debits_posted_must_be_zero"] = 12] = "debits_posted_must_be_zero";
57
+ CreateAccountError[CreateAccountError["credits_pending_must_be_zero"] = 13] = "credits_pending_must_be_zero";
58
+ CreateAccountError[CreateAccountError["credits_posted_must_be_zero"] = 14] = "credits_posted_must_be_zero";
59
59
  CreateAccountError[CreateAccountError["exists_with_different_flags"] = 15] = "exists_with_different_flags";
60
60
  CreateAccountError[CreateAccountError["exists_with_different_user_data"] = 16] = "exists_with_different_user_data";
61
61
  CreateAccountError[CreateAccountError["exists_with_different_ledger"] = 17] = "exists_with_different_ledger";
@@ -68,6 +68,8 @@ var TransferFlags;
68
68
  TransferFlags[TransferFlags["pending"] = 2] = "pending";
69
69
  TransferFlags[TransferFlags["post_pending_transfer"] = 4] = "post_pending_transfer";
70
70
  TransferFlags[TransferFlags["void_pending_transfer"] = 8] = "void_pending_transfer";
71
+ TransferFlags[TransferFlags["balancing_debit"] = 16] = "balancing_debit";
72
+ TransferFlags[TransferFlags["balancing_credit"] = 32] = "balancing_credit";
71
73
  })(TransferFlags = exports.TransferFlags || (exports.TransferFlags = {}));
72
74
  var CreateTransferError;
73
75
  (function (CreateTransferError) {
@@ -78,54 +80,53 @@ var CreateTransferError;
78
80
  CreateTransferError[CreateTransferError["reserved_field"] = 5] = "reserved_field";
79
81
  CreateTransferError[CreateTransferError["id_must_not_be_zero"] = 6] = "id_must_not_be_zero";
80
82
  CreateTransferError[CreateTransferError["id_must_not_be_int_max"] = 7] = "id_must_not_be_int_max";
81
- CreateTransferError[CreateTransferError["debit_account_id_must_not_be_zero"] = 8] = "debit_account_id_must_not_be_zero";
82
- CreateTransferError[CreateTransferError["debit_account_id_must_not_be_int_max"] = 9] = "debit_account_id_must_not_be_int_max";
83
- CreateTransferError[CreateTransferError["credit_account_id_must_not_be_zero"] = 10] = "credit_account_id_must_not_be_zero";
84
- CreateTransferError[CreateTransferError["credit_account_id_must_not_be_int_max"] = 11] = "credit_account_id_must_not_be_int_max";
85
- CreateTransferError[CreateTransferError["accounts_must_be_different"] = 12] = "accounts_must_be_different";
86
- CreateTransferError[CreateTransferError["pending_id_must_be_zero"] = 13] = "pending_id_must_be_zero";
87
- CreateTransferError[CreateTransferError["ledger_must_not_be_zero"] = 14] = "ledger_must_not_be_zero";
88
- CreateTransferError[CreateTransferError["code_must_not_be_zero"] = 15] = "code_must_not_be_zero";
89
- CreateTransferError[CreateTransferError["amount_must_not_be_zero"] = 16] = "amount_must_not_be_zero";
90
- CreateTransferError[CreateTransferError["debit_account_not_found"] = 17] = "debit_account_not_found";
91
- CreateTransferError[CreateTransferError["credit_account_not_found"] = 18] = "credit_account_not_found";
92
- CreateTransferError[CreateTransferError["accounts_must_have_the_same_ledger"] = 19] = "accounts_must_have_the_same_ledger";
93
- CreateTransferError[CreateTransferError["transfer_must_have_the_same_ledger_as_accounts"] = 20] = "transfer_must_have_the_same_ledger_as_accounts";
94
- CreateTransferError[CreateTransferError["exists_with_different_flags"] = 21] = "exists_with_different_flags";
95
- CreateTransferError[CreateTransferError["exists_with_different_debit_account_id"] = 22] = "exists_with_different_debit_account_id";
96
- CreateTransferError[CreateTransferError["exists_with_different_credit_account_id"] = 23] = "exists_with_different_credit_account_id";
97
- CreateTransferError[CreateTransferError["exists_with_different_user_data"] = 24] = "exists_with_different_user_data";
98
- CreateTransferError[CreateTransferError["exists_with_different_pending_id"] = 25] = "exists_with_different_pending_id";
99
- CreateTransferError[CreateTransferError["exists_with_different_timeout"] = 26] = "exists_with_different_timeout";
100
- CreateTransferError[CreateTransferError["exists_with_different_code"] = 27] = "exists_with_different_code";
101
- CreateTransferError[CreateTransferError["exists_with_different_amount"] = 28] = "exists_with_different_amount";
102
- CreateTransferError[CreateTransferError["exists"] = 29] = "exists";
103
- CreateTransferError[CreateTransferError["overflows_debits_pending"] = 30] = "overflows_debits_pending";
104
- CreateTransferError[CreateTransferError["overflows_credits_pending"] = 31] = "overflows_credits_pending";
105
- CreateTransferError[CreateTransferError["overflows_debits_posted"] = 32] = "overflows_debits_posted";
106
- CreateTransferError[CreateTransferError["overflows_credits_posted"] = 33] = "overflows_credits_posted";
107
- CreateTransferError[CreateTransferError["overflows_debits"] = 34] = "overflows_debits";
108
- CreateTransferError[CreateTransferError["overflows_credits"] = 35] = "overflows_credits";
109
- CreateTransferError[CreateTransferError["overflows_timeout"] = 36] = "overflows_timeout";
110
- CreateTransferError[CreateTransferError["exceeds_credits"] = 37] = "exceeds_credits";
111
- CreateTransferError[CreateTransferError["exceeds_debits"] = 38] = "exceeds_debits";
112
- CreateTransferError[CreateTransferError["cannot_post_and_void_pending_transfer"] = 39] = "cannot_post_and_void_pending_transfer";
113
- CreateTransferError[CreateTransferError["pending_transfer_cannot_post_or_void_another"] = 40] = "pending_transfer_cannot_post_or_void_another";
114
- CreateTransferError[CreateTransferError["timeout_reserved_for_pending_transfer"] = 41] = "timeout_reserved_for_pending_transfer";
115
- CreateTransferError[CreateTransferError["pending_id_must_not_be_zero"] = 42] = "pending_id_must_not_be_zero";
116
- CreateTransferError[CreateTransferError["pending_id_must_not_be_int_max"] = 43] = "pending_id_must_not_be_int_max";
117
- CreateTransferError[CreateTransferError["pending_id_must_be_different"] = 44] = "pending_id_must_be_different";
118
- CreateTransferError[CreateTransferError["pending_transfer_not_found"] = 45] = "pending_transfer_not_found";
119
- CreateTransferError[CreateTransferError["pending_transfer_not_pending"] = 46] = "pending_transfer_not_pending";
120
- CreateTransferError[CreateTransferError["pending_transfer_has_different_debit_account_id"] = 47] = "pending_transfer_has_different_debit_account_id";
121
- CreateTransferError[CreateTransferError["pending_transfer_has_different_credit_account_id"] = 48] = "pending_transfer_has_different_credit_account_id";
122
- CreateTransferError[CreateTransferError["pending_transfer_has_different_ledger"] = 49] = "pending_transfer_has_different_ledger";
123
- CreateTransferError[CreateTransferError["pending_transfer_has_different_code"] = 50] = "pending_transfer_has_different_code";
124
- CreateTransferError[CreateTransferError["exceeds_pending_transfer_amount"] = 51] = "exceeds_pending_transfer_amount";
125
- CreateTransferError[CreateTransferError["pending_transfer_has_different_amount"] = 52] = "pending_transfer_has_different_amount";
126
- CreateTransferError[CreateTransferError["pending_transfer_already_posted"] = 53] = "pending_transfer_already_posted";
127
- CreateTransferError[CreateTransferError["pending_transfer_already_voided"] = 54] = "pending_transfer_already_voided";
128
- CreateTransferError[CreateTransferError["pending_transfer_expired"] = 55] = "pending_transfer_expired";
83
+ CreateTransferError[CreateTransferError["flags_are_mutually_exclusive"] = 8] = "flags_are_mutually_exclusive";
84
+ CreateTransferError[CreateTransferError["debit_account_id_must_not_be_zero"] = 9] = "debit_account_id_must_not_be_zero";
85
+ CreateTransferError[CreateTransferError["debit_account_id_must_not_be_int_max"] = 10] = "debit_account_id_must_not_be_int_max";
86
+ CreateTransferError[CreateTransferError["credit_account_id_must_not_be_zero"] = 11] = "credit_account_id_must_not_be_zero";
87
+ CreateTransferError[CreateTransferError["credit_account_id_must_not_be_int_max"] = 12] = "credit_account_id_must_not_be_int_max";
88
+ CreateTransferError[CreateTransferError["accounts_must_be_different"] = 13] = "accounts_must_be_different";
89
+ CreateTransferError[CreateTransferError["pending_id_must_be_zero"] = 14] = "pending_id_must_be_zero";
90
+ CreateTransferError[CreateTransferError["pending_id_must_not_be_zero"] = 15] = "pending_id_must_not_be_zero";
91
+ CreateTransferError[CreateTransferError["pending_id_must_not_be_int_max"] = 16] = "pending_id_must_not_be_int_max";
92
+ CreateTransferError[CreateTransferError["pending_id_must_be_different"] = 17] = "pending_id_must_be_different";
93
+ CreateTransferError[CreateTransferError["timeout_reserved_for_pending_transfer"] = 18] = "timeout_reserved_for_pending_transfer";
94
+ CreateTransferError[CreateTransferError["ledger_must_not_be_zero"] = 19] = "ledger_must_not_be_zero";
95
+ CreateTransferError[CreateTransferError["code_must_not_be_zero"] = 20] = "code_must_not_be_zero";
96
+ CreateTransferError[CreateTransferError["amount_must_not_be_zero"] = 21] = "amount_must_not_be_zero";
97
+ CreateTransferError[CreateTransferError["debit_account_not_found"] = 22] = "debit_account_not_found";
98
+ CreateTransferError[CreateTransferError["credit_account_not_found"] = 23] = "credit_account_not_found";
99
+ CreateTransferError[CreateTransferError["accounts_must_have_the_same_ledger"] = 24] = "accounts_must_have_the_same_ledger";
100
+ CreateTransferError[CreateTransferError["transfer_must_have_the_same_ledger_as_accounts"] = 25] = "transfer_must_have_the_same_ledger_as_accounts";
101
+ CreateTransferError[CreateTransferError["pending_transfer_not_found"] = 26] = "pending_transfer_not_found";
102
+ CreateTransferError[CreateTransferError["pending_transfer_not_pending"] = 27] = "pending_transfer_not_pending";
103
+ CreateTransferError[CreateTransferError["pending_transfer_has_different_debit_account_id"] = 28] = "pending_transfer_has_different_debit_account_id";
104
+ CreateTransferError[CreateTransferError["pending_transfer_has_different_credit_account_id"] = 29] = "pending_transfer_has_different_credit_account_id";
105
+ CreateTransferError[CreateTransferError["pending_transfer_has_different_ledger"] = 30] = "pending_transfer_has_different_ledger";
106
+ CreateTransferError[CreateTransferError["pending_transfer_has_different_code"] = 31] = "pending_transfer_has_different_code";
107
+ CreateTransferError[CreateTransferError["exceeds_pending_transfer_amount"] = 32] = "exceeds_pending_transfer_amount";
108
+ CreateTransferError[CreateTransferError["pending_transfer_has_different_amount"] = 33] = "pending_transfer_has_different_amount";
109
+ CreateTransferError[CreateTransferError["pending_transfer_already_posted"] = 34] = "pending_transfer_already_posted";
110
+ CreateTransferError[CreateTransferError["pending_transfer_already_voided"] = 35] = "pending_transfer_already_voided";
111
+ CreateTransferError[CreateTransferError["pending_transfer_expired"] = 36] = "pending_transfer_expired";
112
+ CreateTransferError[CreateTransferError["exists_with_different_flags"] = 37] = "exists_with_different_flags";
113
+ CreateTransferError[CreateTransferError["exists_with_different_debit_account_id"] = 38] = "exists_with_different_debit_account_id";
114
+ CreateTransferError[CreateTransferError["exists_with_different_credit_account_id"] = 39] = "exists_with_different_credit_account_id";
115
+ CreateTransferError[CreateTransferError["exists_with_different_user_data"] = 40] = "exists_with_different_user_data";
116
+ CreateTransferError[CreateTransferError["exists_with_different_pending_id"] = 41] = "exists_with_different_pending_id";
117
+ CreateTransferError[CreateTransferError["exists_with_different_timeout"] = 42] = "exists_with_different_timeout";
118
+ CreateTransferError[CreateTransferError["exists_with_different_code"] = 43] = "exists_with_different_code";
119
+ CreateTransferError[CreateTransferError["exists_with_different_amount"] = 44] = "exists_with_different_amount";
120
+ CreateTransferError[CreateTransferError["exists"] = 45] = "exists";
121
+ CreateTransferError[CreateTransferError["overflows_debits_pending"] = 46] = "overflows_debits_pending";
122
+ CreateTransferError[CreateTransferError["overflows_credits_pending"] = 47] = "overflows_credits_pending";
123
+ CreateTransferError[CreateTransferError["overflows_debits_posted"] = 48] = "overflows_debits_posted";
124
+ CreateTransferError[CreateTransferError["overflows_credits_posted"] = 49] = "overflows_credits_posted";
125
+ CreateTransferError[CreateTransferError["overflows_debits"] = 50] = "overflows_debits";
126
+ CreateTransferError[CreateTransferError["overflows_credits"] = 51] = "overflows_credits";
127
+ CreateTransferError[CreateTransferError["overflows_timeout"] = 52] = "overflows_timeout";
128
+ CreateTransferError[CreateTransferError["exceeds_credits"] = 53] = "exceeds_credits";
129
+ CreateTransferError[CreateTransferError["exceeds_debits"] = 54] = "exceeds_debits";
129
130
  })(CreateTransferError = exports.CreateTransferError || (exports.CreateTransferError = {}));
130
131
  var Operation;
131
132
  (function (Operation) {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["function getBinding (): Binding {\n const { arch, platform } = process\n\n const archMap = {\n \"arm64\": \"aarch64\",\n \"x64\": \"x86_64\"\n }\n\n const platformMap = {\n \"linux\": \"linux\",\n \"darwin\": \"macos\"\n }\n\n if (! (arch in archMap)) {\n throw new Error(`Unsupported arch: ${arch}`)\n }\n\n if (! (platform in platformMap)) {\n throw new Error(`Unsupported platform: ${platform}`)\n }\n\n let extra = ''\n\n /**\n * We need to detect during runtime which libc we're running on to load the correct NAPI.\n * binary.\n *\n * Rationale: The /proc/self/map_files/ subdirectory contains entries corresponding to\n * memory-mapped files loaded by Node.\n * https://man7.org/linux/man-pages/man5/proc.5.html: We detect a musl-based distro by\n * checking if any library contains the name \"musl\".\n *\n * Prior art: https://github.com/xerial/sqlite-jdbc/issues/623\n */\n\n const fs = require('fs')\n const path = require('path')\n\n if (platform === 'linux') {\n extra = '-gnu'\n\n for (const file of fs.readdirSync(\"/proc/self/map_files/\")) {\n const realPath = fs.readlinkSync(path.join(\"/proc/self/map_files/\", file))\n if (realPath.includes('musl')) {\n extra = '-musl'\n break\n }\n }\n }\n\n const filename = `./bin/${archMap[arch]}-${platformMap[platform]}${extra}/client.node`\n return require(filename)\n}\n\nconst binding = getBinding()\n\ninterface Binding {\n init: (args: BindingInitArgs) => Context\n request: (context: Context, operation: Operation, batch: Event[], result: ResultCallback) => void\n raw_request: (context: Context, operation: Operation, raw_batch: Buffer, result: ResultCallback) => void\n tick: (context: Context) => void,\n deinit: (context: Context) => void,\n tick_ms: number\n}\n\ninterface BindingInitArgs {\n cluster_id: number, // u32\n replica_addresses: Buffer,\n}\n\nexport interface InitArgs {\n cluster_id: number, // u32\n replica_addresses: Array<string | number>,\n}\n\nexport type Context = object\n\nexport type Account = {\n id: bigint // u128\n user_data: bigint // u128\n reserved: Buffer // [48]u8\n ledger: number // u32, ledger of value\n code: number // u16, A chart of accounts code describing the type of account (e.g. clearing, settlement)\n flags: number // u16\n debits_pending: bigint // u64\n debits_posted: bigint // u64\n credits_pending: bigint // u64\n credits_posted: bigint // u64\n timestamp: bigint // u64, Set this to 0n - the actual value will be set by TigerBeetle server\n}\n\nexport enum AccountFlags {\n linked = (1 << 0),\n debits_must_not_exceed_credits = (1 << 1),\n credits_must_not_exceed_debits = (1 << 2)\n}\n\nexport enum CreateAccountError {\n // ok = 0 (No Error)\n linked_event_failed = 1,\n linked_event_chain_open,\n timestamp_must_be_zero,\n\n reserved_flag,\n reserved_field,\n\n id_must_not_be_zero,\n id_must_not_be_int_max,\n ledger_must_not_be_zero,\n code_must_not_be_zero,\n debits_pending_must_be_zero,\n debits_posted_must_be_zero,\n credits_pending_must_be_zero,\n credits_posted_must_be_zero,\n\n mutually_exclusive_flags,\n\n exists_with_different_flags,\n exists_with_different_user_data,\n exists_with_different_ledger,\n exists_with_different_code,\n exists,\n}\n\nexport type CreateAccountsError = {\n index: number,\n code: CreateAccountError,\n}\n\nexport type Transfer = {\n id: bigint, // u128\n debit_account_id: bigint, // u128\n credit_account_id: bigint, // u128\n user_data: bigint, // u128\n reserved: bigint, // u128\n pending_id: bigint, // u128\n timeout: bigint, // u64, In nanoseconds.\n ledger: number // u32, The ledger of value.\n code: number, // u16, A user-defined accounting code to describe the type of transfer (e.g. settlement).\n flags: number, // u16\n amount: bigint, // u64,\n timestamp: bigint, // u64, Set this to 0n - the timestamp will be set by TigerBeetle.\n}\n\nexport enum TransferFlags {\n linked = (1 << 0),\n pending = (1 << 1),\n post_pending_transfer = (1 << 2),\n void_pending_transfer = (1 << 3)\n}\n\nexport enum CreateTransferError {\n // ok = 0 (No Error)\n linked_event_failed = 1,\n linked_event_chain_open,\n timestamp_must_be_zero,\n\n reserved_flag,\n reserved_field,\n\n id_must_not_be_zero,\n id_must_not_be_int_max,\n debit_account_id_must_not_be_zero,\n debit_account_id_must_not_be_int_max,\n credit_account_id_must_not_be_zero,\n credit_account_id_must_not_be_int_max,\n accounts_must_be_different,\n\n pending_id_must_be_zero,\n\n ledger_must_not_be_zero,\n code_must_not_be_zero,\n amount_must_not_be_zero,\n\n debit_account_not_found,\n credit_account_not_found,\n\n accounts_must_have_the_same_ledger,\n transfer_must_have_the_same_ledger_as_accounts,\n\n exists_with_different_flags,\n exists_with_different_debit_account_id,\n exists_with_different_credit_account_id,\n exists_with_different_user_data,\n exists_with_different_pending_id,\n exists_with_different_timeout,\n exists_with_different_code,\n exists_with_different_amount,\n exists,\n\n overflows_debits_pending,\n overflows_credits_pending,\n overflows_debits_posted,\n overflows_credits_posted,\n overflows_debits,\n overflows_credits,\n overflows_timeout,\n\n exceeds_credits,\n exceeds_debits,\n\n cannot_post_and_void_pending_transfer,\n pending_transfer_cannot_post_or_void_another,\n timeout_reserved_for_pending_transfer,\n\n pending_id_must_not_be_zero,\n pending_id_must_not_be_int_max,\n pending_id_must_be_different,\n\n pending_transfer_not_found,\n pending_transfer_not_pending,\n\n pending_transfer_has_different_debit_account_id,\n pending_transfer_has_different_credit_account_id,\n pending_transfer_has_different_ledger,\n pending_transfer_has_different_code,\n\n exceeds_pending_transfer_amount,\n pending_transfer_has_different_amount,\n\n pending_transfer_already_posted,\n pending_transfer_already_voided,\n\n pending_transfer_expired,\n}\n\nexport type CreateTransfersError = {\n index: number,\n code: CreateTransferError,\n}\n\nexport type AccountID = bigint // u128\nexport type TransferID = bigint // u128\n\nexport type Event = Account | Transfer | AccountID | TransferID\nexport type Result = CreateAccountsError | CreateTransfersError | Account | Transfer\nexport type ResultCallback = (error: undefined | Error, results: Result[]) => void\n\nexport enum Operation {\n CREATE_ACCOUNT = 3,\n CREATE_TRANSFER,\n ACCOUNT_LOOKUP,\n TRANSFER_LOOKUP\n}\n\nexport interface Client {\n createAccounts: (batch: Account[]) => Promise<CreateAccountsError[]>\n createTransfers: (batch: Transfer[]) => Promise<CreateTransfersError[]>\n lookupAccounts: (batch: AccountID[]) => Promise<Account[]>\n lookupTransfers: (batch: TransferID[]) => Promise<Transfer[]>\n request: (operation: Operation, batch: Event[], callback: ResultCallback) => void\n rawRequest: (operation: Operation, rawBatch: Buffer, callback: ResultCallback) => void\n destroy: () => void\n}\n\nlet _args: InitArgs | undefined = undefined\nconst isSameArgs = (args: InitArgs): boolean => {\n if (typeof _args === 'undefined') {\n return false\n }\n\n if (_args.replica_addresses.length !== args.replica_addresses.length) {\n return false\n }\n\n let isSameReplicas = true\n args.replica_addresses.forEach((entry, index) => {\n if (_args?.replica_addresses[index] !== entry) {\n isSameReplicas = false\n }\n })\n\n return args.cluster_id === _args.cluster_id && isSameReplicas\n}\n\nlet _client: Client | undefined = undefined\nlet _interval: NodeJS.Timeout | undefined = undefined\n// Here to wait until `ping` is sent to server so that connection is registered - temporary till client table and sessions are implemented.\nlet _pinged = false\n// TODO: allow creation of clients if the arguments are different. Will require changes in node.zig as well.\nexport function createClient (args: InitArgs): Client {\n const duplicateArgs = isSameArgs(args)\n if (!duplicateArgs && typeof _client !== 'undefined'){\n throw new Error('Client has already been initialized with different arguments.')\n }\n\n if (duplicateArgs && typeof _client !== 'undefined'){\n throw new Error('Client has already been initialized with the same arguments.')\n }\n\n _args = Object.assign({}, { ...args })\n const context = binding.init({\n ...args,\n replica_addresses: Buffer.from(args.replica_addresses.join(','))\n })\n\n const request = (operation: Operation, batch: Event[], callback: ResultCallback) => {\n binding.request(context, operation, batch, callback)\n }\n\n const rawRequest = (operation: Operation, rawBatch: Buffer, callback: ResultCallback) => {\n binding.raw_request(context, operation, rawBatch, callback)\n }\n\n const createAccounts = async (batch: Account[]): Promise<CreateAccountsError[]> => {\n // Here to wait until `ping` is sent to server so that connection is registered - temporary till client table and sessions are implemented.\n if (!_pinged) {\n await new Promise<void>(resolve => {\n setTimeout(() => {\n _pinged = true\n resolve()\n }, 600)\n })\n }\n return new Promise((resolve, reject) => {\n const callback = (error: undefined | Error, results: CreateAccountsError[]) => {\n if (error) {\n reject(error)\n return\n }\n resolve(results)\n }\n\n try {\n binding.request(context, Operation.CREATE_ACCOUNT, batch, callback)\n } catch (error) {\n reject(error)\n }\n })\n }\n\n const createTransfers = async (batch: Transfer[]): Promise<CreateTransfersError[]> => {\n // Here to wait until `ping` is sent to server so that connection is registered - temporary till client table and sessions are implemented.\n if (!_pinged) {\n await new Promise<void>(resolve => {\n setTimeout(() => {\n _pinged = true\n resolve()\n }, 600)\n })\n }\n return new Promise((resolve, reject) => {\n const callback = (error: undefined | Error, results: CreateTransfersError[]) => {\n if (error) {\n reject(error)\n return\n }\n resolve(results)\n }\n\n try {\n binding.request(context, Operation.CREATE_TRANSFER, batch, callback)\n } catch (error) {\n reject(error)\n }\n })\n }\n\n const lookupAccounts = async (batch: AccountID[]): Promise<Account[]> => {\n return new Promise((resolve, reject) => {\n const callback = (error: undefined | Error, results: Account[]) => {\n if (error) {\n reject(error)\n return\n }\n resolve(results)\n }\n\n try {\n binding.request(context, Operation.ACCOUNT_LOOKUP, batch, callback)\n } catch (error) {\n reject(error)\n }\n })\n }\n\n const lookupTransfers = async (batch: TransferID[]): Promise<Transfer[]> => {\n return new Promise((resolve, reject) => {\n const callback = (error: undefined | Error, results: Transfer[]) => {\n if (error) {\n reject(error)\n return\n }\n resolve(results)\n }\n\n try {\n binding.request(context, Operation.TRANSFER_LOOKUP, batch, callback)\n } catch (error) {\n reject(error)\n }\n })\n }\n\n const destroy = (): void => {\n binding.deinit(context)\n if (_interval){\n clearInterval(_interval)\n }\n _client = undefined\n }\n\n _client = {\n createAccounts,\n createTransfers,\n lookupAccounts,\n lookupTransfers,\n request,\n rawRequest,\n destroy\n }\n\n _interval = setInterval(() => {\n binding.tick(context)\n }, binding.tick_ms)\n\n return _client\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,SAAS,UAAU;IACjB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;IAElC,MAAM,OAAO,GAAG;QACd,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,QAAQ;KAChB,CAAA;IAED,MAAM,WAAW,GAAG;QAClB,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,OAAO;KAClB,CAAA;IAED,IAAI,CAAE,CAAC,IAAI,IAAI,OAAO,CAAC,EAAE;QACvB,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAA;KAC7C;IAED,IAAI,CAAE,CAAC,QAAQ,IAAI,WAAW,CAAC,EAAE;QAC/B,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAA;KACrD;IAED,IAAI,KAAK,GAAG,EAAE,CAAA;IAcd,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxB,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IAE5B,IAAI,QAAQ,KAAK,OAAO,EAAE;QACxB,KAAK,GAAG,MAAM,CAAA;QAEd,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,WAAW,CAAC,uBAAuB,CAAC,EAAE;YAC1D,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC,CAAA;YAC1E,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBAC7B,KAAK,GAAG,OAAO,CAAA;gBACf,MAAK;aACN;SACF;KACF;IAED,MAAM,QAAQ,GAAG,SAAS,OAAO,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,KAAK,cAAc,CAAA;IACtF,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAA;AAC1B,CAAC;AAED,MAAM,OAAO,GAAG,UAAU,EAAE,CAAA;AAqC5B,IAAY,YAIX;AAJD,WAAY,YAAY;IACtB,mDAAiB,CAAA;IACjB,mGAAyC,CAAA;IACzC,mGAAyC,CAAA;AAC3C,CAAC,EAJW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAIvB;AAED,IAAY,kBA0BX;AA1BD,WAAY,kBAAkB;IAE5B,yFAAuB,CAAA;IACvB,iGAAuB,CAAA;IACvB,+FAAsB,CAAA;IAEtB,6EAAa,CAAA;IACb,+EAAc,CAAA;IAEd,yFAAmB,CAAA;IACnB,+FAAsB,CAAA;IAEtB,2GAA4B,CAAA;IAE5B,iGAAuB,CAAA;IACvB,8FAAqB,CAAA;IACrB,0GAA2B,CAAA;IAC3B,wGAA0B,CAAA;IAC1B,4GAA4B,CAAA;IAC5B,0GAA2B,CAAA;IAE3B,0GAA2B,CAAA;IAC3B,kHAA+B,CAAA;IAC/B,4GAA4B,CAAA;IAC5B,wGAA0B,CAAA;IAC1B,gEAAM,CAAA;AACR,CAAC,EA1BW,kBAAkB,GAAlB,0BAAkB,KAAlB,0BAAkB,QA0B7B;AAsBD,IAAY,aAOX;AAPD,WAAY,aAAa;IACvB,qDAAiB,CAAA;IACjB,uDAAkB,CAAA;IAClB,mFAAgC,CAAA;IAChC,mFAAgC,CAAA;IAChC,wEAA0B,CAAA;IAC1B,0EAA2B,CAAA;AAC7B,CAAC,EAPW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAOxB;AAED,IAAY,mBAwEX;AAxED,WAAY,mBAAmB;IAE7B,2FAAuB,CAAA;IACvB,mGAAuB,CAAA;IACvB,iGAAsB,CAAA;IAEtB,+EAAa,CAAA;IACb,iFAAc,CAAA;IAEd,2FAAmB,CAAA;IACnB,iGAAsB,CAAA;IAEtB,6GAA4B,CAAA;IAE5B,uHAAiC,CAAA;IACjC,8HAAoC,CAAA;IACpC,0HAAkC,CAAA;IAClC,gIAAqC,CAAA;IACrC,0GAA0B,CAAA;IAE1B,oGAAuB,CAAA;IACvB,4GAA2B,CAAA;IAC3B,kHAA8B,CAAA;IAC9B,8GAA4B,CAAA;IAC5B,gIAAqC,CAAA;IAErC,oGAAuB,CAAA;IACvB,gGAAqB,CAAA;IACrB,oGAAuB,CAAA;IAEvB,oGAAuB,CAAA;IACvB,sGAAwB,CAAA;IAExB,0HAAkC,CAAA;IAClC,kJAA8C,CAAA;IAE9C,0GAA0B,CAAA;IAC1B,8GAA4B,CAAA;IAE5B,oJAA+C,CAAA;IAC/C,sJAAgD,CAAA;IAChD,gIAAqC,CAAA;IACrC,4HAAmC,CAAA;IAEnC,oHAA+B,CAAA;IAC/B,gIAAqC,CAAA;IAErC,oHAA+B,CAAA;IAC/B,oHAA+B,CAAA;IAE/B,sGAAwB,CAAA;IAExB,4GAA2B,CAAA;IAC3B,kIAAsC,CAAA;IACtC,oIAAuC,CAAA;IACvC,oHAA+B,CAAA;IAC/B,sHAAgC,CAAA;IAChC,gHAA6B,CAAA;IAC7B,0GAA0B,CAAA;IAC1B,8GAA4B,CAAA;IAC5B,kEAAM,CAAA;IAEN,sGAAwB,CAAA;IACxB,wGAAyB,CAAA;IACzB,oGAAuB,CAAA;IACvB,sGAAwB,CAAA;IACxB,sFAAgB,CAAA;IAChB,wFAAiB,CAAA;IACjB,wFAAiB,CAAA;IAEjB,oFAAe,CAAA;IACf,kFAAc,CAAA;AAChB,CAAC,EAxEW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAwE9B;AAcD,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,6DAAkB,CAAA;IAClB,+DAAe,CAAA;IACf,6DAAc,CAAA;IACd,+DAAe,CAAA;AACjB,CAAC,EALW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAKpB;AAYD,IAAI,KAAK,GAAyB,SAAS,CAAA;AAC3C,MAAM,UAAU,GAAG,CAAC,IAAc,EAAW,EAAE;IAC7C,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;QAChC,OAAO,KAAK,CAAA;KACb;IAED,IAAI,KAAK,CAAC,iBAAiB,CAAC,MAAM,KAAK,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE;QACpE,OAAO,KAAK,CAAA;KACb;IAED,IAAI,cAAc,GAAG,IAAI,CAAA;IACzB,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC9C,IAAI,KAAK,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE;YAC7C,cAAc,GAAG,KAAK,CAAA;SACvB;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,IAAI,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,IAAI,cAAc,CAAA;AAC/D,CAAC,CAAA;AAED,IAAI,OAAO,GAAuB,SAAS,CAAA;AAC3C,IAAI,SAAS,GAA+B,SAAS,CAAA;AAErD,IAAI,OAAO,GAAG,KAAK,CAAA;AAEnB,SAAgB,YAAY,CAAE,IAAc;IAC1C,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;IACtC,IAAI,CAAC,aAAa,IAAI,OAAO,OAAO,KAAK,WAAW,EAAC;QACnD,MAAM,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAA;KACjF;IAED,IAAI,aAAa,IAAI,OAAO,OAAO,KAAK,WAAW,EAAC;QAClD,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAA;KAChF;IAED,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC,CAAA;IACtC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;QAC3B,GAAG,IAAI;QACP,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;KACjE,CAAC,CAAA;IAEF,MAAM,OAAO,GAAG,CAAC,SAAoB,EAAE,KAAc,EAAE,QAAwB,EAAE,EAAE;QACjF,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;IACtD,CAAC,CAAA;IAED,MAAM,UAAU,GAAG,CAAC,SAAoB,EAAE,QAAgB,EAAE,QAAwB,EAAE,EAAE;QACtF,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;IAC7D,CAAC,CAAA;IAED,MAAM,cAAc,GAAG,KAAK,EAAE,KAAgB,EAAkC,EAAE;QAEhF,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;gBAChC,UAAU,CAAC,GAAG,EAAE;oBACd,OAAO,GAAG,IAAI,CAAA;oBACd,OAAO,EAAE,CAAA;gBACX,CAAC,EAAE,GAAG,CAAC,CAAA;YACT,CAAC,CAAC,CAAA;SACH;QACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,QAAQ,GAAG,CAAC,KAAwB,EAAE,OAA8B,EAAE,EAAE;gBAC5E,IAAI,KAAK,EAAE;oBACT,MAAM,CAAC,KAAK,CAAC,CAAA;oBACb,OAAM;iBACP;gBACD,OAAO,CAAC,OAAO,CAAC,CAAA;YAClB,CAAC,CAAA;YAED,IAAI;gBACF,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,cAAc,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;aACpE;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,CAAC,KAAK,CAAC,CAAA;aACd;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,MAAM,eAAe,GAAG,KAAK,EAAE,KAAiB,EAAmC,EAAE;QAEnF,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;gBAChC,UAAU,CAAC,GAAG,EAAE;oBACd,OAAO,GAAG,IAAI,CAAA;oBACd,OAAO,EAAE,CAAA;gBACX,CAAC,EAAE,GAAG,CAAC,CAAA;YACT,CAAC,CAAC,CAAA;SACH;QACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,QAAQ,GAAG,CAAC,KAAwB,EAAE,OAA+B,EAAE,EAAE;gBAC7E,IAAI,KAAK,EAAE;oBACT,MAAM,CAAC,KAAK,CAAC,CAAA;oBACb,OAAM;iBACP;gBACD,OAAO,CAAC,OAAO,CAAC,CAAA;YAClB,CAAC,CAAA;YAED,IAAI;gBACF,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,eAAe,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;aACrE;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,CAAC,KAAK,CAAC,CAAA;aACd;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,MAAM,cAAc,GAAG,KAAK,EAAE,KAAkB,EAAsB,EAAE;QACtE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,QAAQ,GAAG,CAAC,KAAwB,EAAE,OAAkB,EAAE,EAAE;gBAChE,IAAI,KAAK,EAAE;oBACT,MAAM,CAAC,KAAK,CAAC,CAAA;oBACb,OAAM;iBACP;gBACD,OAAO,CAAC,OAAO,CAAC,CAAA;YAClB,CAAC,CAAA;YAED,IAAI;gBACF,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,cAAc,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;aACpE;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,CAAC,KAAK,CAAC,CAAA;aACd;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,MAAM,eAAe,GAAG,KAAK,EAAE,KAAmB,EAAuB,EAAE;QACzE,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,QAAQ,GAAG,CAAC,KAAwB,EAAE,OAAmB,EAAE,EAAE;gBACjE,IAAI,KAAK,EAAE;oBACT,MAAM,CAAC,KAAK,CAAC,CAAA;oBACb,OAAM;iBACP;gBACD,OAAO,CAAC,OAAO,CAAC,CAAA;YAClB,CAAC,CAAA;YAED,IAAI;gBACF,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,eAAe,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAA;aACrE;YAAC,OAAO,KAAK,EAAE;gBACd,MAAM,CAAC,KAAK,CAAC,CAAA;aACd;QACH,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,GAAS,EAAE;QACzB,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACvB,IAAI,SAAS,EAAC;YACZ,aAAa,CAAC,SAAS,CAAC,CAAA;SACzB;QACD,OAAO,GAAG,SAAS,CAAA;IACrB,CAAC,CAAA;IAED,OAAO,GAAG;QACR,cAAc;QACd,eAAe;QACf,cAAc;QACd,eAAe;QACf,OAAO;QACP,UAAU;QACV,OAAO;KACR,CAAA;IAED,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE;QAC3B,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACvB,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IAEnB,OAAO,OAAO,CAAA;AAChB,CAAC;AAzID,oCAyIC","sourcesContent":["function getBinding (): Binding {\n const { arch, platform } = process\n\n const archMap = {\n \"arm64\": \"aarch64\",\n \"x64\": \"x86_64\"\n }\n\n const platformMap = {\n \"linux\": \"linux\",\n \"darwin\": \"macos\"\n }\n\n if (! (arch in archMap)) {\n throw new Error(`Unsupported arch: ${arch}`)\n }\n\n if (! (platform in platformMap)) {\n throw new Error(`Unsupported platform: ${platform}`)\n }\n\n let extra = ''\n\n /**\n * We need to detect during runtime which libc we're running on to load the correct NAPI.\n * binary.\n *\n * Rationale: The /proc/self/map_files/ subdirectory contains entries corresponding to\n * memory-mapped files loaded by Node.\n * https://man7.org/linux/man-pages/man5/proc.5.html: We detect a musl-based distro by\n * checking if any library contains the name \"musl\".\n *\n * Prior art: https://github.com/xerial/sqlite-jdbc/issues/623\n */\n\n const fs = require('fs')\n const path = require('path')\n\n if (platform === 'linux') {\n extra = '-gnu'\n\n for (const file of fs.readdirSync(\"/proc/self/map_files/\")) {\n const realPath = fs.readlinkSync(path.join(\"/proc/self/map_files/\", file))\n if (realPath.includes('musl')) {\n extra = '-musl'\n break\n }\n }\n }\n\n const filename = `./bin/${archMap[arch]}-${platformMap[platform]}${extra}/client.node`\n return require(filename)\n}\n\nconst binding = getBinding()\n\ninterface Binding {\n init: (args: BindingInitArgs) => Context\n request: (context: Context, operation: Operation, batch: Event[], result: ResultCallback) => void\n raw_request: (context: Context, operation: Operation, raw_batch: Buffer, result: ResultCallback) => void\n tick: (context: Context) => void,\n deinit: (context: Context) => void,\n tick_ms: number\n}\n\ninterface BindingInitArgs {\n cluster_id: number, // u32\n replica_addresses: Buffer,\n}\n\nexport interface InitArgs {\n cluster_id: number, // u32\n replica_addresses: Array<string | number>,\n}\n\nexport type Context = object\n\nexport type Account = {\n id: bigint // u128\n user_data: bigint // u128\n reserved: Buffer // [48]u8\n ledger: number // u32, ledger of value\n code: number // u16, A chart of accounts code describing the type of account (e.g. clearing, settlement)\n flags: number // u16\n debits_pending: bigint // u64\n debits_posted: bigint // u64\n credits_pending: bigint // u64\n credits_posted: bigint // u64\n timestamp: bigint // u64, Set this to 0n - the actual value will be set by TigerBeetle server\n}\n\nexport enum AccountFlags {\n linked = (1 << 0),\n debits_must_not_exceed_credits = (1 << 1),\n credits_must_not_exceed_debits = (1 << 2)\n}\n\nexport enum CreateAccountError {\n // ok = 0 (No Error)\n linked_event_failed = 1,\n linked_event_chain_open,\n timestamp_must_be_zero,\n\n reserved_flag,\n reserved_field,\n\n id_must_not_be_zero,\n id_must_not_be_int_max,\n\n flags_are_mutually_exclusive,\n\n ledger_must_not_be_zero,\n code_must_not_be_zero,\n debits_pending_must_be_zero,\n debits_posted_must_be_zero,\n credits_pending_must_be_zero,\n credits_posted_must_be_zero,\n\n exists_with_different_flags,\n exists_with_different_user_data,\n exists_with_different_ledger,\n exists_with_different_code,\n exists,\n}\n\nexport type CreateAccountsError = {\n index: number,\n code: CreateAccountError,\n}\n\nexport type Transfer = {\n id: bigint, // u128\n debit_account_id: bigint, // u128\n credit_account_id: bigint, // u128\n user_data: bigint, // u128\n reserved: bigint, // u128\n pending_id: bigint, // u128\n timeout: bigint, // u64, In nanoseconds.\n ledger: number // u32, The ledger of value.\n code: number, // u16, A user-defined accounting code to describe the type of transfer (e.g. settlement).\n flags: number, // u16\n amount: bigint, // u64,\n timestamp: bigint, // u64, Set this to 0n - the timestamp will be set by TigerBeetle.\n}\n\nexport enum TransferFlags {\n linked = (1 << 0),\n pending = (1 << 1),\n post_pending_transfer = (1 << 2),\n void_pending_transfer = (1 << 3),\n balancing_debit = (1 << 4),\n balancing_credit = (1 << 5),\n}\n\nexport enum CreateTransferError {\n // ok = 0 (No Error)\n linked_event_failed = 1,\n linked_event_chain_open,\n timestamp_must_be_zero,\n\n reserved_flag,\n reserved_field,\n\n id_must_not_be_zero,\n id_must_not_be_int_max,\n\n flags_are_mutually_exclusive,\n\n debit_account_id_must_not_be_zero,\n debit_account_id_must_not_be_int_max,\n credit_account_id_must_not_be_zero,\n credit_account_id_must_not_be_int_max,\n accounts_must_be_different,\n\n pending_id_must_be_zero,\n pending_id_must_not_be_zero,\n pending_id_must_not_be_int_max,\n pending_id_must_be_different,\n timeout_reserved_for_pending_transfer,\n\n ledger_must_not_be_zero,\n code_must_not_be_zero,\n amount_must_not_be_zero,\n\n debit_account_not_found,\n credit_account_not_found,\n\n accounts_must_have_the_same_ledger,\n transfer_must_have_the_same_ledger_as_accounts,\n\n pending_transfer_not_found,\n pending_transfer_not_pending,\n\n pending_transfer_has_different_debit_account_id,\n pending_transfer_has_different_credit_account_id,\n pending_transfer_has_different_ledger,\n pending_transfer_has_different_code,\n\n exceeds_pending_transfer_amount,\n pending_transfer_has_different_amount,\n\n pending_transfer_already_posted,\n pending_transfer_already_voided,\n\n pending_transfer_expired,\n\n exists_with_different_flags,\n exists_with_different_debit_account_id,\n exists_with_different_credit_account_id,\n exists_with_different_user_data,\n exists_with_different_pending_id,\n exists_with_different_timeout,\n exists_with_different_code,\n exists_with_different_amount,\n exists,\n\n overflows_debits_pending,\n overflows_credits_pending,\n overflows_debits_posted,\n overflows_credits_posted,\n overflows_debits,\n overflows_credits,\n overflows_timeout,\n\n exceeds_credits,\n exceeds_debits,\n}\n\nexport type CreateTransfersError = {\n index: number,\n code: CreateTransferError,\n}\n\nexport type AccountID = bigint // u128\nexport type TransferID = bigint // u128\n\nexport type Event = Account | Transfer | AccountID | TransferID\nexport type Result = CreateAccountsError | CreateTransfersError | Account | Transfer\nexport type ResultCallback = (error: undefined | Error, results: Result[]) => void\n\nexport enum Operation {\n CREATE_ACCOUNT = 3,\n CREATE_TRANSFER,\n ACCOUNT_LOOKUP,\n TRANSFER_LOOKUP\n}\n\nexport interface Client {\n createAccounts: (batch: Account[]) => Promise<CreateAccountsError[]>\n createTransfers: (batch: Transfer[]) => Promise<CreateTransfersError[]>\n lookupAccounts: (batch: AccountID[]) => Promise<Account[]>\n lookupTransfers: (batch: TransferID[]) => Promise<Transfer[]>\n request: (operation: Operation, batch: Event[], callback: ResultCallback) => void\n rawRequest: (operation: Operation, rawBatch: Buffer, callback: ResultCallback) => void\n destroy: () => void\n}\n\nlet _args: InitArgs | undefined = undefined\nconst isSameArgs = (args: InitArgs): boolean => {\n if (typeof _args === 'undefined') {\n return false\n }\n\n if (_args.replica_addresses.length !== args.replica_addresses.length) {\n return false\n }\n\n let isSameReplicas = true\n args.replica_addresses.forEach((entry, index) => {\n if (_args?.replica_addresses[index] !== entry) {\n isSameReplicas = false\n }\n })\n\n return args.cluster_id === _args.cluster_id && isSameReplicas\n}\n\nlet _client: Client | undefined = undefined\nlet _interval: NodeJS.Timeout | undefined = undefined\n// Here to wait until `ping` is sent to server so that connection is registered - temporary till client table and sessions are implemented.\nlet _pinged = false\n// TODO: allow creation of clients if the arguments are different. Will require changes in node.zig as well.\nexport function createClient (args: InitArgs): Client {\n const duplicateArgs = isSameArgs(args)\n if (!duplicateArgs && typeof _client !== 'undefined'){\n throw new Error('Client has already been initialized with different arguments.')\n }\n\n if (duplicateArgs && typeof _client !== 'undefined'){\n throw new Error('Client has already been initialized with the same arguments.')\n }\n\n _args = Object.assign({}, { ...args })\n const context = binding.init({\n ...args,\n replica_addresses: Buffer.from(args.replica_addresses.join(','))\n })\n\n const request = (operation: Operation, batch: Event[], callback: ResultCallback) => {\n binding.request(context, operation, batch, callback)\n }\n\n const rawRequest = (operation: Operation, rawBatch: Buffer, callback: ResultCallback) => {\n binding.raw_request(context, operation, rawBatch, callback)\n }\n\n const createAccounts = async (batch: Account[]): Promise<CreateAccountsError[]> => {\n // Here to wait until `ping` is sent to server so that connection is registered - temporary till client table and sessions are implemented.\n if (!_pinged) {\n await new Promise<void>(resolve => {\n setTimeout(() => {\n _pinged = true\n resolve()\n }, 600)\n })\n }\n return new Promise((resolve, reject) => {\n const callback = (error: undefined | Error, results: CreateAccountsError[]) => {\n if (error) {\n reject(error)\n return\n }\n resolve(results)\n }\n\n try {\n binding.request(context, Operation.CREATE_ACCOUNT, batch, callback)\n } catch (error) {\n reject(error)\n }\n })\n }\n\n const createTransfers = async (batch: Transfer[]): Promise<CreateTransfersError[]> => {\n // Here to wait until `ping` is sent to server so that connection is registered - temporary till client table and sessions are implemented.\n if (!_pinged) {\n await new Promise<void>(resolve => {\n setTimeout(() => {\n _pinged = true\n resolve()\n }, 600)\n })\n }\n return new Promise((resolve, reject) => {\n const callback = (error: undefined | Error, results: CreateTransfersError[]) => {\n if (error) {\n reject(error)\n return\n }\n resolve(results)\n }\n\n try {\n binding.request(context, Operation.CREATE_TRANSFER, batch, callback)\n } catch (error) {\n reject(error)\n }\n })\n }\n\n const lookupAccounts = async (batch: AccountID[]): Promise<Account[]> => {\n return new Promise((resolve, reject) => {\n const callback = (error: undefined | Error, results: Account[]) => {\n if (error) {\n reject(error)\n return\n }\n resolve(results)\n }\n\n try {\n binding.request(context, Operation.ACCOUNT_LOOKUP, batch, callback)\n } catch (error) {\n reject(error)\n }\n })\n }\n\n const lookupTransfers = async (batch: TransferID[]): Promise<Transfer[]> => {\n return new Promise((resolve, reject) => {\n const callback = (error: undefined | Error, results: Transfer[]) => {\n if (error) {\n reject(error)\n return\n }\n resolve(results)\n }\n\n try {\n binding.request(context, Operation.TRANSFER_LOOKUP, batch, callback)\n } catch (error) {\n reject(error)\n }\n })\n }\n\n const destroy = (): void => {\n binding.deinit(context)\n if (_interval){\n clearInterval(_interval)\n }\n _client = undefined\n }\n\n _client = {\n createAccounts,\n createTransfers,\n lookupAccounts,\n lookupTransfers,\n request,\n rawRequest,\n destroy\n }\n\n _interval = setInterval(() => {\n binding.tick(context)\n }, binding.tick_ms)\n\n return _client\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tigerbeetle-node",
3
- "version": "0.12.25",
3
+ "version": "0.12.27",
4
4
  "description": "TigerBeetle Node.js client",
5
5
  "main": "dist/index.js",
6
6
  "typings": "dist/index.d.ts",
package/src/index.ts CHANGED
@@ -106,6 +106,9 @@ export enum CreateAccountError {
106
106
 
107
107
  id_must_not_be_zero,
108
108
  id_must_not_be_int_max,
109
+
110
+ flags_are_mutually_exclusive,
111
+
109
112
  ledger_must_not_be_zero,
110
113
  code_must_not_be_zero,
111
114
  debits_pending_must_be_zero,
@@ -113,8 +116,6 @@ export enum CreateAccountError {
113
116
  credits_pending_must_be_zero,
114
117
  credits_posted_must_be_zero,
115
118
 
116
- mutually_exclusive_flags,
117
-
118
119
  exists_with_different_flags,
119
120
  exists_with_different_user_data,
120
121
  exists_with_different_ledger,
@@ -146,7 +147,9 @@ export enum TransferFlags {
146
147
  linked = (1 << 0),
147
148
  pending = (1 << 1),
148
149
  post_pending_transfer = (1 << 2),
149
- void_pending_transfer = (1 << 3)
150
+ void_pending_transfer = (1 << 3),
151
+ balancing_debit = (1 << 4),
152
+ balancing_credit = (1 << 5),
150
153
  }
151
154
 
152
155
  export enum CreateTransferError {
@@ -160,6 +163,9 @@ export enum CreateTransferError {
160
163
 
161
164
  id_must_not_be_zero,
162
165
  id_must_not_be_int_max,
166
+
167
+ flags_are_mutually_exclusive,
168
+
163
169
  debit_account_id_must_not_be_zero,
164
170
  debit_account_id_must_not_be_int_max,
165
171
  credit_account_id_must_not_be_zero,
@@ -167,6 +173,10 @@ export enum CreateTransferError {
167
173
  accounts_must_be_different,
168
174
 
169
175
  pending_id_must_be_zero,
176
+ pending_id_must_not_be_zero,
177
+ pending_id_must_not_be_int_max,
178
+ pending_id_must_be_different,
179
+ timeout_reserved_for_pending_transfer,
170
180
 
171
181
  ledger_must_not_be_zero,
172
182
  code_must_not_be_zero,
@@ -178,6 +188,22 @@ export enum CreateTransferError {
178
188
  accounts_must_have_the_same_ledger,
179
189
  transfer_must_have_the_same_ledger_as_accounts,
180
190
 
191
+ pending_transfer_not_found,
192
+ pending_transfer_not_pending,
193
+
194
+ pending_transfer_has_different_debit_account_id,
195
+ pending_transfer_has_different_credit_account_id,
196
+ pending_transfer_has_different_ledger,
197
+ pending_transfer_has_different_code,
198
+
199
+ exceeds_pending_transfer_amount,
200
+ pending_transfer_has_different_amount,
201
+
202
+ pending_transfer_already_posted,
203
+ pending_transfer_already_voided,
204
+
205
+ pending_transfer_expired,
206
+
181
207
  exists_with_different_flags,
182
208
  exists_with_different_debit_account_id,
183
209
  exists_with_different_credit_account_id,
@@ -198,30 +224,6 @@ export enum CreateTransferError {
198
224
 
199
225
  exceeds_credits,
200
226
  exceeds_debits,
201
-
202
- cannot_post_and_void_pending_transfer,
203
- pending_transfer_cannot_post_or_void_another,
204
- timeout_reserved_for_pending_transfer,
205
-
206
- pending_id_must_not_be_zero,
207
- pending_id_must_not_be_int_max,
208
- pending_id_must_be_different,
209
-
210
- pending_transfer_not_found,
211
- pending_transfer_not_pending,
212
-
213
- pending_transfer_has_different_debit_account_id,
214
- pending_transfer_has_different_credit_account_id,
215
- pending_transfer_has_different_ledger,
216
- pending_transfer_has_different_code,
217
-
218
- exceeds_pending_transfer_amount,
219
- pending_transfer_has_different_amount,
220
-
221
- pending_transfer_already_posted,
222
- pending_transfer_already_voided,
223
-
224
- pending_transfer_expired,
225
227
  }
226
228
 
227
229
  export type CreateTransfersError = {