tigerbeetle-node 0.11.10 → 0.11.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/dist/.client.node.sha256 +1 -1
  2. package/dist/index.d.ts +70 -67
  3. package/dist/index.js +70 -67
  4. package/dist/index.js.map +1 -1
  5. package/package.json +4 -7
  6. package/scripts/build_lib.sh +22 -2
  7. package/src/index.ts +3 -0
  8. package/src/tigerbeetle/scripts/benchmark.bat +0 -3
  9. package/src/tigerbeetle/scripts/benchmark.sh +0 -3
  10. package/src/tigerbeetle/scripts/scripts/benchmark.bat +48 -0
  11. package/src/tigerbeetle/scripts/scripts/benchmark.sh +66 -0
  12. package/src/tigerbeetle/scripts/scripts/confirm_image.sh +44 -0
  13. package/src/tigerbeetle/scripts/scripts/fuzz_loop.sh +15 -0
  14. package/src/tigerbeetle/scripts/scripts/fuzz_unique_errors.sh +7 -0
  15. package/src/tigerbeetle/scripts/scripts/install.bat +7 -0
  16. package/src/tigerbeetle/scripts/scripts/install.sh +21 -0
  17. package/src/tigerbeetle/scripts/scripts/install_zig.bat +113 -0
  18. package/src/tigerbeetle/scripts/scripts/install_zig.sh +90 -0
  19. package/src/tigerbeetle/scripts/scripts/lint.zig +199 -0
  20. package/src/tigerbeetle/scripts/scripts/pre-commit.sh +9 -0
  21. package/src/tigerbeetle/scripts/scripts/shellcheck.sh +5 -0
  22. package/src/tigerbeetle/scripts/scripts/tests_on_alpine.sh +10 -0
  23. package/src/tigerbeetle/scripts/scripts/tests_on_ubuntu.sh +14 -0
  24. package/src/tigerbeetle/scripts/scripts/upgrade_ubuntu_kernel.sh +48 -0
  25. package/src/tigerbeetle/scripts/scripts/validate_docs.sh +23 -0
  26. package/src/tigerbeetle/scripts/scripts/vr_state_enumerate +46 -0
  27. package/src/tigerbeetle/src/message_bus.zig +1 -1
  28. package/src/tigerbeetle/src/stdx.zig +23 -0
  29. package/src/tigerbeetle/src/testing/cluster/network.zig +6 -7
  30. package/src/tigerbeetle/src/testing/cluster.zig +5 -5
  31. package/src/tigerbeetle/src/testing/packet_simulator.zig +0 -1
  32. package/src/tigerbeetle/src/vsr/README.md +209 -0
  33. package/src/tigerbeetle/src/vsr/replica.zig +195 -362
  34. package/src/tigerbeetle/src/vsr/superblock.zig +14 -17
  35. package/src/tigerbeetle/src/vsr/superblock_fuzz.zig +5 -5
  36. package/src/tigerbeetle/src/vsr.zig +274 -14
@@ -1 +1 @@
1
- 21c6105d76e0efc68fe5cbe799d363a083a9b44359e16d7dbfbb172e381ea0c3 dist/client.node
1
+ 5d30352e917b04b1b6453bc9ba0d1c8f48673d155bee91caa8240e48130211ec dist/client.node
package/dist/index.d.ts CHANGED
@@ -25,22 +25,23 @@ export declare enum AccountFlags {
25
25
  export declare enum CreateAccountError {
26
26
  linked_event_failed = 1,
27
27
  linked_event_chain_open = 2,
28
- reserved_flag = 3,
29
- reserved_field = 4,
30
- id_must_not_be_zero = 5,
31
- id_must_not_be_int_max = 6,
32
- ledger_must_not_be_zero = 7,
33
- code_must_not_be_zero = 8,
34
- debits_pending_must_be_zero = 9,
35
- debits_posted_must_be_zero = 10,
36
- credits_pending_must_be_zero = 11,
37
- credits_posted_must_be_zero = 12,
38
- mutually_exclusive_flags = 13,
39
- exists_with_different_flags = 14,
40
- exists_with_different_user_data = 15,
41
- exists_with_different_ledger = 16,
42
- exists_with_different_code = 17,
43
- exists = 18
28
+ timestamp_must_be_zero = 3,
29
+ reserved_flag = 4,
30
+ reserved_field = 5,
31
+ id_must_not_be_zero = 6,
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,
40
+ exists_with_different_flags = 15,
41
+ exists_with_different_user_data = 16,
42
+ exists_with_different_ledger = 17,
43
+ exists_with_different_code = 18,
44
+ exists = 19
44
45
  }
45
46
  export declare type CreateAccountsError = {
46
47
  index: number;
@@ -69,57 +70,59 @@ export declare enum TransferFlags {
69
70
  export declare enum CreateTransferError {
70
71
  linked_event_failed = 1,
71
72
  linked_event_chain_open = 2,
72
- reserved_flag = 3,
73
- reserved_field = 4,
74
- id_must_not_be_zero = 5,
75
- id_must_not_be_int_max = 6,
76
- debit_account_id_must_not_be_zero = 7,
77
- debit_account_id_must_not_be_int_max = 8,
78
- credit_account_id_must_not_be_zero = 9,
79
- credit_account_id_must_not_be_int_max = 10,
80
- accounts_must_be_different = 11,
81
- pending_id_must_be_zero = 12,
82
- ledger_must_not_be_zero = 13,
83
- code_must_not_be_zero = 14,
84
- amount_must_not_be_zero = 15,
85
- debit_account_not_found = 16,
86
- credit_account_not_found = 17,
87
- accounts_must_have_the_same_ledger = 18,
88
- transfer_must_have_the_same_ledger_as_accounts = 19,
89
- exists_with_different_flags = 20,
90
- exists_with_different_debit_account_id = 21,
91
- exists_with_different_credit_account_id = 22,
92
- exists_with_different_user_data = 23,
93
- exists_with_different_pending_id = 24,
94
- exists_with_different_timeout = 25,
95
- exists_with_different_code = 26,
96
- exists_with_different_amount = 27,
97
- exists = 28,
98
- overflows_debits_pending = 29,
99
- overflows_credits_pending = 30,
100
- overflows_debits_posted = 31,
101
- overflows_credits_posted = 32,
102
- overflows_debits = 33,
103
- overflows_credits = 34,
104
- exceeds_credits = 35,
105
- exceeds_debits = 36,
106
- cannot_post_and_void_pending_transfer = 37,
107
- pending_transfer_cannot_post_or_void_another = 38,
108
- timeout_reserved_for_pending_transfer = 39,
109
- pending_id_must_not_be_zero = 40,
110
- pending_id_must_not_be_int_max = 41,
111
- pending_id_must_be_different = 42,
112
- pending_transfer_not_found = 43,
113
- pending_transfer_not_pending = 44,
114
- pending_transfer_has_different_debit_account_id = 45,
115
- pending_transfer_has_different_credit_account_id = 46,
116
- pending_transfer_has_different_ledger = 47,
117
- pending_transfer_has_different_code = 48,
118
- exceeds_pending_transfer_amount = 49,
119
- pending_transfer_has_different_amount = 50,
120
- pending_transfer_already_posted = 51,
121
- pending_transfer_already_voided = 52,
122
- pending_transfer_expired = 53
73
+ timestamp_must_be_zero = 3,
74
+ reserved_flag = 4,
75
+ reserved_field = 5,
76
+ id_must_not_be_zero = 6,
77
+ 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
123
126
  }
124
127
  export declare type CreateTransfersError = {
125
128
  index: number;
package/dist/index.js CHANGED
@@ -12,22 +12,23 @@ var CreateAccountError;
12
12
  (function (CreateAccountError) {
13
13
  CreateAccountError[CreateAccountError["linked_event_failed"] = 1] = "linked_event_failed";
14
14
  CreateAccountError[CreateAccountError["linked_event_chain_open"] = 2] = "linked_event_chain_open";
15
- CreateAccountError[CreateAccountError["reserved_flag"] = 3] = "reserved_flag";
16
- CreateAccountError[CreateAccountError["reserved_field"] = 4] = "reserved_field";
17
- CreateAccountError[CreateAccountError["id_must_not_be_zero"] = 5] = "id_must_not_be_zero";
18
- CreateAccountError[CreateAccountError["id_must_not_be_int_max"] = 6] = "id_must_not_be_int_max";
19
- CreateAccountError[CreateAccountError["ledger_must_not_be_zero"] = 7] = "ledger_must_not_be_zero";
20
- CreateAccountError[CreateAccountError["code_must_not_be_zero"] = 8] = "code_must_not_be_zero";
21
- CreateAccountError[CreateAccountError["debits_pending_must_be_zero"] = 9] = "debits_pending_must_be_zero";
22
- CreateAccountError[CreateAccountError["debits_posted_must_be_zero"] = 10] = "debits_posted_must_be_zero";
23
- CreateAccountError[CreateAccountError["credits_pending_must_be_zero"] = 11] = "credits_pending_must_be_zero";
24
- CreateAccountError[CreateAccountError["credits_posted_must_be_zero"] = 12] = "credits_posted_must_be_zero";
25
- CreateAccountError[CreateAccountError["mutually_exclusive_flags"] = 13] = "mutually_exclusive_flags";
26
- CreateAccountError[CreateAccountError["exists_with_different_flags"] = 14] = "exists_with_different_flags";
27
- CreateAccountError[CreateAccountError["exists_with_different_user_data"] = 15] = "exists_with_different_user_data";
28
- CreateAccountError[CreateAccountError["exists_with_different_ledger"] = 16] = "exists_with_different_ledger";
29
- CreateAccountError[CreateAccountError["exists_with_different_code"] = 17] = "exists_with_different_code";
30
- CreateAccountError[CreateAccountError["exists"] = 18] = "exists";
15
+ CreateAccountError[CreateAccountError["timestamp_must_be_zero"] = 3] = "timestamp_must_be_zero";
16
+ CreateAccountError[CreateAccountError["reserved_flag"] = 4] = "reserved_flag";
17
+ CreateAccountError[CreateAccountError["reserved_field"] = 5] = "reserved_field";
18
+ CreateAccountError[CreateAccountError["id_must_not_be_zero"] = 6] = "id_must_not_be_zero";
19
+ CreateAccountError[CreateAccountError["id_must_not_be_int_max"] = 7] = "id_must_not_be_int_max";
20
+ CreateAccountError[CreateAccountError["ledger_must_not_be_zero"] = 8] = "ledger_must_not_be_zero";
21
+ CreateAccountError[CreateAccountError["code_must_not_be_zero"] = 9] = "code_must_not_be_zero";
22
+ CreateAccountError[CreateAccountError["debits_pending_must_be_zero"] = 10] = "debits_pending_must_be_zero";
23
+ CreateAccountError[CreateAccountError["debits_posted_must_be_zero"] = 11] = "debits_posted_must_be_zero";
24
+ CreateAccountError[CreateAccountError["credits_pending_must_be_zero"] = 12] = "credits_pending_must_be_zero";
25
+ CreateAccountError[CreateAccountError["credits_posted_must_be_zero"] = 13] = "credits_posted_must_be_zero";
26
+ CreateAccountError[CreateAccountError["mutually_exclusive_flags"] = 14] = "mutually_exclusive_flags";
27
+ CreateAccountError[CreateAccountError["exists_with_different_flags"] = 15] = "exists_with_different_flags";
28
+ CreateAccountError[CreateAccountError["exists_with_different_user_data"] = 16] = "exists_with_different_user_data";
29
+ CreateAccountError[CreateAccountError["exists_with_different_ledger"] = 17] = "exists_with_different_ledger";
30
+ CreateAccountError[CreateAccountError["exists_with_different_code"] = 18] = "exists_with_different_code";
31
+ CreateAccountError[CreateAccountError["exists"] = 19] = "exists";
31
32
  })(CreateAccountError = exports.CreateAccountError || (exports.CreateAccountError = {}));
32
33
  var TransferFlags;
33
34
  (function (TransferFlags) {
@@ -40,57 +41,59 @@ var CreateTransferError;
40
41
  (function (CreateTransferError) {
41
42
  CreateTransferError[CreateTransferError["linked_event_failed"] = 1] = "linked_event_failed";
42
43
  CreateTransferError[CreateTransferError["linked_event_chain_open"] = 2] = "linked_event_chain_open";
43
- CreateTransferError[CreateTransferError["reserved_flag"] = 3] = "reserved_flag";
44
- CreateTransferError[CreateTransferError["reserved_field"] = 4] = "reserved_field";
45
- CreateTransferError[CreateTransferError["id_must_not_be_zero"] = 5] = "id_must_not_be_zero";
46
- CreateTransferError[CreateTransferError["id_must_not_be_int_max"] = 6] = "id_must_not_be_int_max";
47
- CreateTransferError[CreateTransferError["debit_account_id_must_not_be_zero"] = 7] = "debit_account_id_must_not_be_zero";
48
- CreateTransferError[CreateTransferError["debit_account_id_must_not_be_int_max"] = 8] = "debit_account_id_must_not_be_int_max";
49
- CreateTransferError[CreateTransferError["credit_account_id_must_not_be_zero"] = 9] = "credit_account_id_must_not_be_zero";
50
- CreateTransferError[CreateTransferError["credit_account_id_must_not_be_int_max"] = 10] = "credit_account_id_must_not_be_int_max";
51
- CreateTransferError[CreateTransferError["accounts_must_be_different"] = 11] = "accounts_must_be_different";
52
- CreateTransferError[CreateTransferError["pending_id_must_be_zero"] = 12] = "pending_id_must_be_zero";
53
- CreateTransferError[CreateTransferError["ledger_must_not_be_zero"] = 13] = "ledger_must_not_be_zero";
54
- CreateTransferError[CreateTransferError["code_must_not_be_zero"] = 14] = "code_must_not_be_zero";
55
- CreateTransferError[CreateTransferError["amount_must_not_be_zero"] = 15] = "amount_must_not_be_zero";
56
- CreateTransferError[CreateTransferError["debit_account_not_found"] = 16] = "debit_account_not_found";
57
- CreateTransferError[CreateTransferError["credit_account_not_found"] = 17] = "credit_account_not_found";
58
- CreateTransferError[CreateTransferError["accounts_must_have_the_same_ledger"] = 18] = "accounts_must_have_the_same_ledger";
59
- CreateTransferError[CreateTransferError["transfer_must_have_the_same_ledger_as_accounts"] = 19] = "transfer_must_have_the_same_ledger_as_accounts";
60
- CreateTransferError[CreateTransferError["exists_with_different_flags"] = 20] = "exists_with_different_flags";
61
- CreateTransferError[CreateTransferError["exists_with_different_debit_account_id"] = 21] = "exists_with_different_debit_account_id";
62
- CreateTransferError[CreateTransferError["exists_with_different_credit_account_id"] = 22] = "exists_with_different_credit_account_id";
63
- CreateTransferError[CreateTransferError["exists_with_different_user_data"] = 23] = "exists_with_different_user_data";
64
- CreateTransferError[CreateTransferError["exists_with_different_pending_id"] = 24] = "exists_with_different_pending_id";
65
- CreateTransferError[CreateTransferError["exists_with_different_timeout"] = 25] = "exists_with_different_timeout";
66
- CreateTransferError[CreateTransferError["exists_with_different_code"] = 26] = "exists_with_different_code";
67
- CreateTransferError[CreateTransferError["exists_with_different_amount"] = 27] = "exists_with_different_amount";
68
- CreateTransferError[CreateTransferError["exists"] = 28] = "exists";
69
- CreateTransferError[CreateTransferError["overflows_debits_pending"] = 29] = "overflows_debits_pending";
70
- CreateTransferError[CreateTransferError["overflows_credits_pending"] = 30] = "overflows_credits_pending";
71
- CreateTransferError[CreateTransferError["overflows_debits_posted"] = 31] = "overflows_debits_posted";
72
- CreateTransferError[CreateTransferError["overflows_credits_posted"] = 32] = "overflows_credits_posted";
73
- CreateTransferError[CreateTransferError["overflows_debits"] = 33] = "overflows_debits";
74
- CreateTransferError[CreateTransferError["overflows_credits"] = 34] = "overflows_credits";
75
- CreateTransferError[CreateTransferError["exceeds_credits"] = 35] = "exceeds_credits";
76
- CreateTransferError[CreateTransferError["exceeds_debits"] = 36] = "exceeds_debits";
77
- CreateTransferError[CreateTransferError["cannot_post_and_void_pending_transfer"] = 37] = "cannot_post_and_void_pending_transfer";
78
- CreateTransferError[CreateTransferError["pending_transfer_cannot_post_or_void_another"] = 38] = "pending_transfer_cannot_post_or_void_another";
79
- CreateTransferError[CreateTransferError["timeout_reserved_for_pending_transfer"] = 39] = "timeout_reserved_for_pending_transfer";
80
- CreateTransferError[CreateTransferError["pending_id_must_not_be_zero"] = 40] = "pending_id_must_not_be_zero";
81
- CreateTransferError[CreateTransferError["pending_id_must_not_be_int_max"] = 41] = "pending_id_must_not_be_int_max";
82
- CreateTransferError[CreateTransferError["pending_id_must_be_different"] = 42] = "pending_id_must_be_different";
83
- CreateTransferError[CreateTransferError["pending_transfer_not_found"] = 43] = "pending_transfer_not_found";
84
- CreateTransferError[CreateTransferError["pending_transfer_not_pending"] = 44] = "pending_transfer_not_pending";
85
- CreateTransferError[CreateTransferError["pending_transfer_has_different_debit_account_id"] = 45] = "pending_transfer_has_different_debit_account_id";
86
- CreateTransferError[CreateTransferError["pending_transfer_has_different_credit_account_id"] = 46] = "pending_transfer_has_different_credit_account_id";
87
- CreateTransferError[CreateTransferError["pending_transfer_has_different_ledger"] = 47] = "pending_transfer_has_different_ledger";
88
- CreateTransferError[CreateTransferError["pending_transfer_has_different_code"] = 48] = "pending_transfer_has_different_code";
89
- CreateTransferError[CreateTransferError["exceeds_pending_transfer_amount"] = 49] = "exceeds_pending_transfer_amount";
90
- CreateTransferError[CreateTransferError["pending_transfer_has_different_amount"] = 50] = "pending_transfer_has_different_amount";
91
- CreateTransferError[CreateTransferError["pending_transfer_already_posted"] = 51] = "pending_transfer_already_posted";
92
- CreateTransferError[CreateTransferError["pending_transfer_already_voided"] = 52] = "pending_transfer_already_voided";
93
- CreateTransferError[CreateTransferError["pending_transfer_expired"] = 53] = "pending_transfer_expired";
44
+ CreateTransferError[CreateTransferError["timestamp_must_be_zero"] = 3] = "timestamp_must_be_zero";
45
+ CreateTransferError[CreateTransferError["reserved_flag"] = 4] = "reserved_flag";
46
+ CreateTransferError[CreateTransferError["reserved_field"] = 5] = "reserved_field";
47
+ CreateTransferError[CreateTransferError["id_must_not_be_zero"] = 6] = "id_must_not_be_zero";
48
+ CreateTransferError[CreateTransferError["id_must_not_be_int_max"] = 7] = "id_must_not_be_int_max";
49
+ CreateTransferError[CreateTransferError["debit_account_id_must_not_be_zero"] = 8] = "debit_account_id_must_not_be_zero";
50
+ CreateTransferError[CreateTransferError["debit_account_id_must_not_be_int_max"] = 9] = "debit_account_id_must_not_be_int_max";
51
+ CreateTransferError[CreateTransferError["credit_account_id_must_not_be_zero"] = 10] = "credit_account_id_must_not_be_zero";
52
+ CreateTransferError[CreateTransferError["credit_account_id_must_not_be_int_max"] = 11] = "credit_account_id_must_not_be_int_max";
53
+ CreateTransferError[CreateTransferError["accounts_must_be_different"] = 12] = "accounts_must_be_different";
54
+ CreateTransferError[CreateTransferError["pending_id_must_be_zero"] = 13] = "pending_id_must_be_zero";
55
+ CreateTransferError[CreateTransferError["ledger_must_not_be_zero"] = 14] = "ledger_must_not_be_zero";
56
+ CreateTransferError[CreateTransferError["code_must_not_be_zero"] = 15] = "code_must_not_be_zero";
57
+ CreateTransferError[CreateTransferError["amount_must_not_be_zero"] = 16] = "amount_must_not_be_zero";
58
+ CreateTransferError[CreateTransferError["debit_account_not_found"] = 17] = "debit_account_not_found";
59
+ CreateTransferError[CreateTransferError["credit_account_not_found"] = 18] = "credit_account_not_found";
60
+ CreateTransferError[CreateTransferError["accounts_must_have_the_same_ledger"] = 19] = "accounts_must_have_the_same_ledger";
61
+ CreateTransferError[CreateTransferError["transfer_must_have_the_same_ledger_as_accounts"] = 20] = "transfer_must_have_the_same_ledger_as_accounts";
62
+ CreateTransferError[CreateTransferError["exists_with_different_flags"] = 21] = "exists_with_different_flags";
63
+ CreateTransferError[CreateTransferError["exists_with_different_debit_account_id"] = 22] = "exists_with_different_debit_account_id";
64
+ CreateTransferError[CreateTransferError["exists_with_different_credit_account_id"] = 23] = "exists_with_different_credit_account_id";
65
+ CreateTransferError[CreateTransferError["exists_with_different_user_data"] = 24] = "exists_with_different_user_data";
66
+ CreateTransferError[CreateTransferError["exists_with_different_pending_id"] = 25] = "exists_with_different_pending_id";
67
+ CreateTransferError[CreateTransferError["exists_with_different_timeout"] = 26] = "exists_with_different_timeout";
68
+ CreateTransferError[CreateTransferError["exists_with_different_code"] = 27] = "exists_with_different_code";
69
+ CreateTransferError[CreateTransferError["exists_with_different_amount"] = 28] = "exists_with_different_amount";
70
+ CreateTransferError[CreateTransferError["exists"] = 29] = "exists";
71
+ CreateTransferError[CreateTransferError["overflows_debits_pending"] = 30] = "overflows_debits_pending";
72
+ CreateTransferError[CreateTransferError["overflows_credits_pending"] = 31] = "overflows_credits_pending";
73
+ CreateTransferError[CreateTransferError["overflows_debits_posted"] = 32] = "overflows_debits_posted";
74
+ CreateTransferError[CreateTransferError["overflows_credits_posted"] = 33] = "overflows_credits_posted";
75
+ CreateTransferError[CreateTransferError["overflows_debits"] = 34] = "overflows_debits";
76
+ CreateTransferError[CreateTransferError["overflows_credits"] = 35] = "overflows_credits";
77
+ CreateTransferError[CreateTransferError["overflows_timeout"] = 36] = "overflows_timeout";
78
+ CreateTransferError[CreateTransferError["exceeds_credits"] = 37] = "exceeds_credits";
79
+ CreateTransferError[CreateTransferError["exceeds_debits"] = 38] = "exceeds_debits";
80
+ CreateTransferError[CreateTransferError["cannot_post_and_void_pending_transfer"] = 39] = "cannot_post_and_void_pending_transfer";
81
+ CreateTransferError[CreateTransferError["pending_transfer_cannot_post_or_void_another"] = 40] = "pending_transfer_cannot_post_or_void_another";
82
+ CreateTransferError[CreateTransferError["timeout_reserved_for_pending_transfer"] = 41] = "timeout_reserved_for_pending_transfer";
83
+ CreateTransferError[CreateTransferError["pending_id_must_not_be_zero"] = 42] = "pending_id_must_not_be_zero";
84
+ CreateTransferError[CreateTransferError["pending_id_must_not_be_int_max"] = 43] = "pending_id_must_not_be_int_max";
85
+ CreateTransferError[CreateTransferError["pending_id_must_be_different"] = 44] = "pending_id_must_be_different";
86
+ CreateTransferError[CreateTransferError["pending_transfer_not_found"] = 45] = "pending_transfer_not_found";
87
+ CreateTransferError[CreateTransferError["pending_transfer_not_pending"] = 46] = "pending_transfer_not_pending";
88
+ CreateTransferError[CreateTransferError["pending_transfer_has_different_debit_account_id"] = 47] = "pending_transfer_has_different_debit_account_id";
89
+ CreateTransferError[CreateTransferError["pending_transfer_has_different_credit_account_id"] = 48] = "pending_transfer_has_different_credit_account_id";
90
+ CreateTransferError[CreateTransferError["pending_transfer_has_different_ledger"] = 49] = "pending_transfer_has_different_ledger";
91
+ CreateTransferError[CreateTransferError["pending_transfer_has_different_code"] = 50] = "pending_transfer_has_different_code";
92
+ CreateTransferError[CreateTransferError["exceeds_pending_transfer_amount"] = 51] = "exceeds_pending_transfer_amount";
93
+ CreateTransferError[CreateTransferError["pending_transfer_has_different_amount"] = 52] = "pending_transfer_has_different_amount";
94
+ CreateTransferError[CreateTransferError["pending_transfer_already_posted"] = 53] = "pending_transfer_already_posted";
95
+ CreateTransferError[CreateTransferError["pending_transfer_already_voided"] = 54] = "pending_transfer_already_voided";
96
+ CreateTransferError[CreateTransferError["pending_transfer_expired"] = 55] = "pending_transfer_expired";
94
97
  })(CreateTransferError = exports.CreateTransferError || (exports.CreateTransferError = {}));
95
98
  var Operation;
96
99
  (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":["const binding: Binding = require('./client.node')\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\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\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\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":["const binding: Binding = require('./client.node')\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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tigerbeetle-node",
3
- "version": "0.11.10",
3
+ "version": "0.11.12",
4
4
  "description": "TigerBeetle Node.js client",
5
5
  "main": "dist/index.js",
6
6
  "typings": "dist/index.d.ts",
@@ -24,9 +24,7 @@
24
24
  "src/index.ts",
25
25
  "src/node.zig",
26
26
  "src/test.ts",
27
- "src/tigerbeetle/src/*.zig",
28
- "src/tigerbeetle/src/{c,io,lsm,testing,vsr,state_machine}",
29
- "src/tigerbeetle/scripts",
27
+ "src/tigerbeetle",
30
28
  "src/translate.zig",
31
29
  "tsconfig.json"
32
30
  ],
@@ -36,13 +34,12 @@
36
34
  "scripts": {
37
35
  "benchmark": "./scripts/benchmark.sh",
38
36
  "test": "node dist/test",
39
- "postinstall": "npm run install_zig && npm run download_node_headers && npm run build_lib",
40
- "install_zig": "sh ./src/tigerbeetle/scripts/install_zig.sh",
37
+ "postinstall": "npm run download_node_headers && npm run build_lib",
41
38
  "download_node_headers": "sh ./scripts/download_node_headers.sh",
42
39
  "build": "npm run build_tsc && npm run build_lib",
43
40
  "build_tsc": "./node_modules/typescript/bin/tsc",
44
41
  "build_lib": "sh ./scripts/build_lib.sh",
45
- "prepack": "npm run build_tsc",
42
+ "prepack": "npm run build",
46
43
  "clean": "rm -rf build dist node_modules src/zig-cache zig"
47
44
  },
48
45
  "author": "TigerBeetle, Inc",
@@ -2,11 +2,30 @@
2
2
 
3
3
  set -e
4
4
 
5
+ # This is a bit hacky. If the script is run inside tigerbeetle's repository,
6
+ # copy sources over, so that we can package them into an npm package.
7
+ #
8
+ # If the script is run inside user's node_modules, do nothing, as we assume
9
+ # the sources are already there.
10
+ if [ -f "../../tigerbeetle.zig" ] && [ -d "../../clients/node" ]; then
11
+ rm -rf ./src/tigerbeetle/src
12
+ mkdir -p ./src/tigerbeetle/src
13
+ cp -r ../../../scripts/ ./src/tigerbeetle/scripts/
14
+ cp ../../*.zig ./src/tigerbeetle/src/
15
+ for dir in io lsm testing vsr state_machine; do
16
+ cp -r ../../$dir ./src/tigerbeetle/src/$dir
17
+ done
18
+ fi
19
+
20
+ if ! [ -f "./zig/zig" ]; then
21
+ ./src/tigerbeetle/scripts/install_zig.sh
22
+ fi
23
+
5
24
  # macOS 13 Ventura is not supported on Zig 0.9.x.
6
25
  # Overriding -target is one workaround Andrew suggests.
7
26
  # https://github.com/ziglang/zig/issues/10478#issuecomment-1294313967
8
27
  target=""
9
- if [ "$(./zig/zig targets | grep triple |cut -d '"' -f 4 | cut -d '.' -f 1,2)" = "aarch64-macos.13" ]; then
28
+ if [ "$(./zig/zig targets | grep triple |cut -d '"' -f 4 | cut -d '.' -f 1,2 | cut -d '-' -f 2)" = "macos.13" ]; then
10
29
  target="-target native-macos.11"
11
30
  fi
12
31
 
@@ -24,11 +43,12 @@ else
24
43
  echo "Building for '$target'"
25
44
  fi
26
45
 
27
- mkdir -p dist
46
+ mkdir -p ./dist
28
47
 
29
48
  # Need to do string eval-ing because of shellcheck's strict string
30
49
  # interpolation rules.
31
50
  cmd="./zig/zig build-lib \
51
+ --global-cache-dir ./zig/global-cache \
32
52
  -mcpu=baseline \
33
53
  -OReleaseSafe \
34
54
  -dynamic \
package/src/index.ts CHANGED
@@ -44,6 +44,7 @@ export enum CreateAccountError {
44
44
  // ok = 0 (No Error)
45
45
  linked_event_failed = 1,
46
46
  linked_event_chain_open,
47
+ timestamp_must_be_zero,
47
48
 
48
49
  reserved_flag,
49
50
  reserved_field,
@@ -97,6 +98,7 @@ export enum CreateTransferError {
97
98
  // ok = 0 (No Error)
98
99
  linked_event_failed = 1,
99
100
  linked_event_chain_open,
101
+ timestamp_must_be_zero,
100
102
 
101
103
  reserved_flag,
102
104
  reserved_field,
@@ -137,6 +139,7 @@ export enum CreateTransferError {
137
139
  overflows_credits_posted,
138
140
  overflows_debits,
139
141
  overflows_credits,
142
+ overflows_timeout,
140
143
 
141
144
  exceeds_credits,
142
145
  exceeds_debits,
@@ -42,9 +42,6 @@ for /l %%i in (0, 1, 0) do (
42
42
  start /B "tigerbeetle_%%i" .\tigerbeetle.exe start --addresses=3001 !ZIG_FILE! > benchmark.log 2>&1
43
43
  )
44
44
 
45
- rem Wait for replicas to start, listen and connect:
46
- timeout /t 2
47
-
48
45
  echo.
49
46
  echo Benchmarking...
50
47
  zig\zig.exe build benchmark -Drelease-safe
@@ -52,9 +52,6 @@ do
52
52
  ./tigerbeetle start --addresses=3001 "$FILE" >> benchmark.log 2>&1 &
53
53
  done
54
54
 
55
- # Wait for replicas to start, listen and connect:
56
- sleep 1
57
-
58
55
  echo ""
59
56
  echo "Benchmarking..."
60
57
  zig/zig build benchmark -Drelease-safe
@@ -0,0 +1,48 @@
1
+ @echo off
2
+ setlocal enabledelayedexpansion
3
+
4
+ REM Install Zig if it does not already exist:
5
+ if not exist "zig" (
6
+ call .\scripts\install_zig.bat
7
+ )
8
+
9
+ if "%~1" equ ":main" (
10
+ shift /1
11
+ goto main
12
+ )
13
+
14
+ cmd /d /c "%~f0" :main %*
15
+ set ZIG_RESULT=%ERRORLEVEL%
16
+ taskkill /F /IM tigerbeetle.exe >nul
17
+
18
+ if !ZIG_RESULT! equ 0 (
19
+ del /f benchmark.log
20
+ ) else (
21
+ echo.
22
+ echo Error running benchmark, here are more details
23
+ type benchmark.log
24
+ )
25
+
26
+ echo.
27
+ exit /b
28
+
29
+ :main
30
+ zig\zig.exe build install -Drelease-safe
31
+
32
+ for /l %%i in (0, 1, 0) do (
33
+ echo Initializing replica %%i
34
+ set ZIG_FILE=.\0_%%i.tigerbeetle.benchmark
35
+ if exist "!ZIG_FILE!" DEL /F "!ZIG_FILE!"
36
+ .\tigerbeetle.exe format --cluster=0 --replica=%%i !ZIG_FILE! > benchmark.log 2>&1
37
+ )
38
+
39
+ for /l %%i in (0, 1, 0) do (
40
+ echo Starting replica %%i
41
+ set ZIG_FILE=.\0_%%i.tigerbeetle.benchmark
42
+ start /B "tigerbeetle_%%i" .\tigerbeetle.exe start --addresses=3001 !ZIG_FILE! > benchmark.log 2>&1
43
+ )
44
+
45
+ echo.
46
+ echo Benchmarking...
47
+ zig\zig.exe build benchmark -Drelease-safe
48
+ exit /b %errorlevel%