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.
- package/dist/bin/aarch64-linux-gnu/client.node +0 -0
- package/dist/bin/aarch64-linux-musl/client.node +0 -0
- package/dist/bin/aarch64-macos/client.node +0 -0
- package/dist/bin/x86_64-linux-gnu/client.node +0 -0
- package/dist/bin/x86_64-linux-musl/client.node +0 -0
- package/dist/bin/x86_64-macos/client.node +0 -0
- package/dist/index.d.ts +57 -56
- package/dist/index.js +56 -55
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +29 -27
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
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
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
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["
|
|
53
|
-
CreateAccountError[CreateAccountError["
|
|
54
|
-
CreateAccountError[CreateAccountError["
|
|
55
|
-
CreateAccountError[CreateAccountError["
|
|
56
|
-
CreateAccountError[CreateAccountError["
|
|
57
|
-
CreateAccountError[CreateAccountError["
|
|
58
|
-
CreateAccountError[CreateAccountError["
|
|
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["
|
|
82
|
-
CreateTransferError[CreateTransferError["
|
|
83
|
-
CreateTransferError[CreateTransferError["
|
|
84
|
-
CreateTransferError[CreateTransferError["
|
|
85
|
-
CreateTransferError[CreateTransferError["
|
|
86
|
-
CreateTransferError[CreateTransferError["
|
|
87
|
-
CreateTransferError[CreateTransferError["
|
|
88
|
-
CreateTransferError[CreateTransferError["
|
|
89
|
-
CreateTransferError[CreateTransferError["
|
|
90
|
-
CreateTransferError[CreateTransferError["
|
|
91
|
-
CreateTransferError[CreateTransferError["
|
|
92
|
-
CreateTransferError[CreateTransferError["
|
|
93
|
-
CreateTransferError[CreateTransferError["
|
|
94
|
-
CreateTransferError[CreateTransferError["
|
|
95
|
-
CreateTransferError[CreateTransferError["
|
|
96
|
-
CreateTransferError[CreateTransferError["
|
|
97
|
-
CreateTransferError[CreateTransferError["
|
|
98
|
-
CreateTransferError[CreateTransferError["
|
|
99
|
-
CreateTransferError[CreateTransferError["
|
|
100
|
-
CreateTransferError[CreateTransferError["
|
|
101
|
-
CreateTransferError[CreateTransferError["
|
|
102
|
-
CreateTransferError[CreateTransferError["
|
|
103
|
-
CreateTransferError[CreateTransferError["
|
|
104
|
-
CreateTransferError[CreateTransferError["
|
|
105
|
-
CreateTransferError[CreateTransferError["
|
|
106
|
-
CreateTransferError[CreateTransferError["
|
|
107
|
-
CreateTransferError[CreateTransferError["
|
|
108
|
-
CreateTransferError[CreateTransferError["
|
|
109
|
-
CreateTransferError[CreateTransferError["
|
|
110
|
-
CreateTransferError[CreateTransferError["
|
|
111
|
-
CreateTransferError[CreateTransferError["
|
|
112
|
-
CreateTransferError[CreateTransferError["
|
|
113
|
-
CreateTransferError[CreateTransferError["
|
|
114
|
-
CreateTransferError[CreateTransferError["
|
|
115
|
-
CreateTransferError[CreateTransferError["
|
|
116
|
-
CreateTransferError[CreateTransferError["
|
|
117
|
-
CreateTransferError[CreateTransferError["
|
|
118
|
-
CreateTransferError[CreateTransferError["
|
|
119
|
-
CreateTransferError[CreateTransferError["
|
|
120
|
-
CreateTransferError[CreateTransferError["
|
|
121
|
-
CreateTransferError[CreateTransferError["
|
|
122
|
-
CreateTransferError[CreateTransferError["
|
|
123
|
-
CreateTransferError[CreateTransferError["
|
|
124
|
-
CreateTransferError[CreateTransferError["
|
|
125
|
-
CreateTransferError[CreateTransferError["
|
|
126
|
-
CreateTransferError[CreateTransferError["
|
|
127
|
-
CreateTransferError[CreateTransferError["
|
|
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":"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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\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
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 = {
|