@casual-simulation/aux-records 3.8.1 → 3.10.2

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 (239) hide show
  1. package/AIChatInterface.d.ts +7 -43
  2. package/AIChatInterface.js +8 -6
  3. package/AIChatInterface.js.map +1 -1
  4. package/AIController.js +44 -49
  5. package/AIController.js.map +1 -1
  6. package/AIOpenAIRealtimeInterface.d.ts +1 -1
  7. package/AnthropicAIChatInterface.js +4 -4
  8. package/AnthropicAIChatInterface.js.map +1 -1
  9. package/AuthController.d.ts +78 -10
  10. package/AuthController.js +230 -166
  11. package/AuthController.js.map +1 -1
  12. package/AuthStore.d.ts +317 -4
  13. package/BigIntPatch.d.ts +1 -0
  14. package/BigIntPatch.js +24 -0
  15. package/BigIntPatch.js.map +1 -0
  16. package/BlockadeLabsGenerateSkyboxInterface.js +4 -4
  17. package/BlockadeLabsGenerateSkyboxInterface.js.map +1 -1
  18. package/CachingConfigStore.d.ts +8 -1
  19. package/CachingConfigStore.js +50 -0
  20. package/CachingConfigStore.js.map +1 -1
  21. package/ComIdConfig.d.ts +132 -86
  22. package/ComIdConfig.js +5 -5
  23. package/ComIdConfig.js.map +1 -1
  24. package/ConfigurationStore.d.ts +1393 -3
  25. package/ConfigurationStore.js +49 -0
  26. package/ConfigurationStore.js.map +1 -1
  27. package/DataRecordsController.js +28 -28
  28. package/DataRecordsController.js.map +1 -1
  29. package/EventRecordsController.js +9 -9
  30. package/EventRecordsController.js.map +1 -1
  31. package/FileRecordsController.js +18 -17
  32. package/FileRecordsController.js.map +1 -1
  33. package/GoogleAIChatInterface.js +4 -4
  34. package/GoogleAIChatInterface.js.map +1 -1
  35. package/HttpTestUtils.d.ts +48 -0
  36. package/HttpTestUtils.js +256 -0
  37. package/HttpTestUtils.js.map +1 -0
  38. package/LivekitController.js +2 -2
  39. package/LivekitController.js.map +1 -1
  40. package/LoomController.js +3 -4
  41. package/LoomController.js.map +1 -1
  42. package/MemoryStore.d.ts +60 -7
  43. package/MemoryStore.js +427 -59
  44. package/MemoryStore.js.map +1 -1
  45. package/MetricsStore.d.ts +11 -0
  46. package/ModerationConfiguration.d.ts +11 -85
  47. package/ModerationConfiguration.js +17 -17
  48. package/ModerationConfiguration.js.map +1 -1
  49. package/ModerationController.js +9 -11
  50. package/ModerationController.js.map +1 -1
  51. package/OpenAIChatInterface.js +8 -13
  52. package/OpenAIChatInterface.js.map +1 -1
  53. package/OpenAIImageInterface.js +4 -5
  54. package/OpenAIImageInterface.js.map +1 -1
  55. package/PolicyController.js +66 -73
  56. package/PolicyController.js.map +1 -1
  57. package/PolicyStore.d.ts +59 -33
  58. package/PolicyStore.js +35 -1
  59. package/PolicyStore.js.map +1 -1
  60. package/PrivoClient.d.ts +3 -1
  61. package/PrivoClient.js +2 -4
  62. package/PrivoClient.js.map +1 -1
  63. package/PrivoConfiguration.d.ts +6 -72
  64. package/PrivoConfiguration.js +30 -31
  65. package/PrivoConfiguration.js.map +1 -1
  66. package/README.md +276 -2
  67. package/RateLimitController.js +2 -2
  68. package/RateLimitController.js.map +1 -1
  69. package/RecordsClient.d.ts +3 -1
  70. package/RecordsClient.js +6 -6
  71. package/RecordsClient.js.map +1 -1
  72. package/RecordsController.d.ts +145 -3
  73. package/RecordsController.js +399 -61
  74. package/RecordsController.js.map +1 -1
  75. package/RecordsServer.d.ts +1932 -1109
  76. package/RecordsStore.d.ts +99 -14
  77. package/RecordsStore.js +8 -10
  78. package/RecordsStore.js.map +1 -1
  79. package/ServerConfig.d.ts +698 -9867
  80. package/ServerConfig.js +457 -377
  81. package/ServerConfig.js.map +1 -1
  82. package/SloydInterface.js +1 -1
  83. package/SloydInterface.js.map +1 -1
  84. package/StabilityAIImageInterface.js +6 -9
  85. package/StabilityAIImageInterface.js.map +1 -1
  86. package/StripeInterface.d.ts +431 -287
  87. package/StripeInterface.js +21 -1
  88. package/StripeInterface.js.map +1 -1
  89. package/SubscriptionConfigBuilder.d.ts +10 -1
  90. package/SubscriptionConfigBuilder.js +72 -41
  91. package/SubscriptionConfigBuilder.js.map +1 -1
  92. package/SubscriptionConfiguration.d.ts +606 -6334
  93. package/SubscriptionConfiguration.js +460 -277
  94. package/SubscriptionConfiguration.js.map +1 -1
  95. package/SubscriptionController.d.ts +677 -4
  96. package/SubscriptionController.js +2986 -186
  97. package/SubscriptionController.js.map +1 -1
  98. package/SystemNotificationMessenger.d.ts +14 -70
  99. package/SystemNotificationMessenger.js +17 -20
  100. package/SystemNotificationMessenger.js.map +1 -1
  101. package/TestUtils.d.ts +18 -3
  102. package/TestUtils.js +84 -8
  103. package/TestUtils.js.map +1 -1
  104. package/TypeUtils.d.ts +991 -0
  105. package/TypeUtils.js +2 -0
  106. package/TypeUtils.js.map +1 -0
  107. package/Utils.d.ts +59 -0
  108. package/Utils.js +507 -3
  109. package/Utils.js.map +1 -1
  110. package/Validations.d.ts +24 -108
  111. package/Validations.js +62 -45
  112. package/Validations.js.map +1 -1
  113. package/ViewTemplateRenderer.d.ts +39 -0
  114. package/ViewTemplateRenderer.js +19 -0
  115. package/ViewTemplateRenderer.js.map +1 -0
  116. package/contracts/ContractRecordsController.d.ts +58 -0
  117. package/contracts/ContractRecordsController.js +144 -0
  118. package/contracts/ContractRecordsController.js.map +1 -0
  119. package/contracts/ContractRecordsStore.d.ts +285 -0
  120. package/contracts/ContractRecordsStore.js +19 -0
  121. package/contracts/ContractRecordsStore.js.map +1 -0
  122. package/contracts/MemoryContractRecordsStore.d.ts +27 -0
  123. package/contracts/MemoryContractRecordsStore.js +124 -0
  124. package/contracts/MemoryContractRecordsStore.js.map +1 -0
  125. package/contracts/index.d.ts +4 -0
  126. package/contracts/index.js +21 -0
  127. package/contracts/index.js.map +1 -0
  128. package/crud/CrudHelpers.d.ts +25 -26
  129. package/crud/CrudHelpers.js +1 -1
  130. package/crud/CrudHelpers.js.map +1 -1
  131. package/crud/CrudRecordsController.js +13 -16
  132. package/crud/CrudRecordsController.js.map +1 -1
  133. package/crud/CrudRecordsControllerTests.d.ts +2 -2
  134. package/crud/CrudRecordsControllerTests.js +605 -580
  135. package/crud/CrudRecordsControllerTests.js.map +1 -1
  136. package/crud/MemoryCrudRecordsStore.js +1 -2
  137. package/crud/MemoryCrudRecordsStore.js.map +1 -1
  138. package/crud/sub/MemorySubCrudRecordsStore.js +4 -6
  139. package/crud/sub/MemorySubCrudRecordsStore.js.map +1 -1
  140. package/crud/sub/SubCrudRecordsController.js +8 -8
  141. package/crud/sub/SubCrudRecordsController.js.map +1 -1
  142. package/database/DatabaseRecordsController.js +1 -2
  143. package/database/DatabaseRecordsController.js.map +1 -1
  144. package/database/SqliteDatabaseInterface.js +1 -2
  145. package/database/SqliteDatabaseInterface.js.map +1 -1
  146. package/dns/DNSDomainNameValidator.d.ts +11 -0
  147. package/dns/DNSDomainNameValidator.js +59 -0
  148. package/dns/DNSDomainNameValidator.js.map +1 -0
  149. package/dns/DomainNameValidator.d.ts +36 -0
  150. package/dns/DomainNameValidator.js +19 -0
  151. package/dns/DomainNameValidator.js.map +1 -0
  152. package/dns/index.d.ts +3 -0
  153. package/dns/index.js +20 -0
  154. package/dns/index.js.map +1 -0
  155. package/financial/FinancialController.d.ts +272 -0
  156. package/financial/FinancialController.js +762 -0
  157. package/financial/FinancialController.js.map +1 -0
  158. package/financial/FinancialInterface.d.ts +352 -0
  159. package/financial/FinancialInterface.js +642 -0
  160. package/financial/FinancialInterface.js.map +1 -0
  161. package/financial/FinancialStore.d.ts +186 -0
  162. package/financial/FinancialStore.js +19 -0
  163. package/financial/FinancialStore.js.map +1 -0
  164. package/financial/MemoryFinancialInterface.d.ts +23 -0
  165. package/financial/MemoryFinancialInterface.js +592 -0
  166. package/financial/MemoryFinancialInterface.js.map +1 -0
  167. package/financial/TigerBeetleFinancialInterface.d.ts +46 -0
  168. package/financial/TigerBeetleFinancialInterface.js +109 -0
  169. package/financial/TigerBeetleFinancialInterface.js.map +1 -0
  170. package/financial/TigerBeetleTestUtils.d.ts +40 -0
  171. package/financial/TigerBeetleTestUtils.js +185 -0
  172. package/financial/TigerBeetleTestUtils.js.map +1 -0
  173. package/financial/Types.d.ts +1 -0
  174. package/financial/Types.js +801 -0
  175. package/financial/Types.js.map +1 -0
  176. package/financial/index.d.ts +6 -0
  177. package/financial/index.js +24 -0
  178. package/financial/index.js.map +1 -0
  179. package/index.d.ts +4 -0
  180. package/index.js +3 -0
  181. package/index.js.map +1 -1
  182. package/notifications/NotificationRecordsController.js +14 -14
  183. package/notifications/NotificationRecordsController.js.map +1 -1
  184. package/notifications/WebPushInterface.d.ts +24 -155
  185. package/notifications/WebPushInterface.js +2 -2
  186. package/notifications/WebPushInterface.js.map +1 -1
  187. package/package.json +72 -70
  188. package/packages/version/MemoryPackageVersionRecordsStore.js +12 -15
  189. package/packages/version/MemoryPackageVersionRecordsStore.js.map +1 -1
  190. package/packages/version/PackageVersionRecordsController.d.ts +19 -0
  191. package/packages/version/PackageVersionRecordsController.js +102 -22
  192. package/packages/version/PackageVersionRecordsController.js.map +1 -1
  193. package/packages/version/PackageVersionRecordsStore.js +6 -8
  194. package/packages/version/PackageVersionRecordsStore.js.map +1 -1
  195. package/purchasable-items/MemoryPurchasableItemRecordsStore.d.ts +7 -0
  196. package/purchasable-items/MemoryPurchasableItemRecordsStore.js +33 -0
  197. package/purchasable-items/MemoryPurchasableItemRecordsStore.js.map +1 -0
  198. package/purchasable-items/PurchasableItemRecordsController.d.ts +16 -0
  199. package/purchasable-items/PurchasableItemRecordsController.js +72 -0
  200. package/purchasable-items/PurchasableItemRecordsController.js.map +1 -0
  201. package/purchasable-items/PurchasableItemRecordsStore.d.ts +66 -0
  202. package/purchasable-items/PurchasableItemRecordsStore.js +2 -0
  203. package/purchasable-items/PurchasableItemRecordsStore.js.map +1 -0
  204. package/purchasable-items/index.d.ts +4 -0
  205. package/purchasable-items/index.js +21 -0
  206. package/purchasable-items/index.js.map +1 -0
  207. package/queue/MemoryQueue.js +1 -1
  208. package/queue/MemoryQueue.js.map +1 -1
  209. package/search/MemorySearchInterface.js +1 -2
  210. package/search/MemorySearchInterface.js.map +1 -1
  211. package/search/SearchRecordsController.d.ts +66 -244
  212. package/search/SearchRecordsController.js +35 -36
  213. package/search/SearchRecordsController.js.map +1 -1
  214. package/search/SearchSyncProcessor.d.ts +7 -83
  215. package/search/TypesenseSearchInterface.js +8 -11
  216. package/search/TypesenseSearchInterface.js.map +1 -1
  217. package/tracing/TracingDecorators.js +5 -8
  218. package/tracing/TracingDecorators.js.map +1 -1
  219. package/webhooks/WebhookEnvironment.d.ts +36 -560
  220. package/webhooks/WebhookEnvironment.js +1 -1
  221. package/webhooks/WebhookEnvironment.js.map +1 -1
  222. package/webhooks/WebhookRecordsController.js +14 -16
  223. package/webhooks/WebhookRecordsController.js.map +1 -1
  224. package/websockets/MemoryLockStore.d.ts +18 -0
  225. package/websockets/MemoryLockStore.js +2 -0
  226. package/websockets/MemoryLockStore.js.map +1 -0
  227. package/websockets/MemoryTempInstRecordsStore.js +15 -27
  228. package/websockets/MemoryTempInstRecordsStore.js.map +1 -1
  229. package/websockets/MemoryWebsocketConnectionStore.js +6 -8
  230. package/websockets/MemoryWebsocketConnectionStore.js.map +1 -1
  231. package/websockets/MemoryWebsocketMessenger.js +1 -2
  232. package/websockets/MemoryWebsocketMessenger.js.map +1 -1
  233. package/websockets/SplitInstRecordsStore.js +2 -2
  234. package/websockets/SplitInstRecordsStore.js.map +1 -1
  235. package/websockets/WebsocketController.d.ts +5 -0
  236. package/websockets/WebsocketController.js +122 -83
  237. package/websockets/WebsocketController.js.map +1 -1
  238. package/RecordsServer.js +0 -6435
  239. package/RecordsServer.js.map +0 -1
@@ -0,0 +1,592 @@
1
+ /* CasualOS is a set of web-based tools designed to facilitate the creation of real-time, multi-user, context-aware interactive experiences.
2
+ *
3
+ * Copyright (c) 2019-2025 Casual Simulation, Inc.
4
+ *
5
+ * This program is free software: you can redistribute it and/or modify
6
+ * it under the terms of the GNU Affero General Public License as
7
+ * published by the Free Software Foundation, either version 3 of the
8
+ * License, or (at your option) any later version.
9
+ *
10
+ * This program is distributed in the hope that it will be useful,
11
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ * GNU Affero General Public License for more details.
14
+ *
15
+ * You should have received a copy of the GNU Affero General Public License
16
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
17
+ */
18
+ import { orderBy } from 'es-toolkit/compat';
19
+ import { CreateAccountError } from 'tigerbeetle-node';
20
+ import { AccountFilterFlags, AccountFlags, CreateTransferError, TransferFlags, } from 'tigerbeetle-node';
21
+ /**
22
+ * The max bigint tigerbeetle can handle. 2^128 - 1 is reserved.
23
+ */
24
+ const MAX_BIGINT_128 = BigInt('340282366920938463463374607431768211454');
25
+ export class MemoryFinancialInterface {
26
+ constructor() {
27
+ this._accounts = new Map();
28
+ this._balances = new Map();
29
+ this._transfers = [];
30
+ this._currentId = 1n;
31
+ }
32
+ get accounts() {
33
+ return this._accounts;
34
+ }
35
+ get transfers() {
36
+ return this._transfers;
37
+ }
38
+ now() {
39
+ // now() returns the current time in nanoseconds since the epoch.
40
+ return BigInt(Date.now()) * 1000n;
41
+ }
42
+ // private _validateAccount(account: Account): CreateAccountError {
43
+ // if (this._accounts.has(account.id)) {
44
+ // return CreateAccountError.exists;
45
+ // } else if (account.id === 0n) {
46
+ // return CreateAccountError.id_must_not_be_zero;
47
+ // } else if (account.code > MAX_BIGINT_128) {
48
+ // return CreateAccountError.id_must_not_be_int_max;
49
+ // } else if (
50
+ // account.timestamp !== 0n &&
51
+ // account.flags & AccountFlags.imported
52
+ // ) {
53
+ // return CreateAccountError.timestamp_must_be_zero;
54
+ // } else {
55
+ // return CreateAccountError.ok;
56
+ // }
57
+ // //? Possibly add more validation
58
+ // }
59
+ // private _validateTransfer(transfer: Transfer): CreateTransferError {
60
+ // /**
61
+ // * * Format and convention validation
62
+ // */
63
+ // if (transfer.id === 0n) {
64
+ // return CreateTransferError.id_must_not_be_zero;
65
+ // }
66
+ // if (transfer.id > MAX_BIGINT_128) {
67
+ // return CreateTransferError.id_must_not_be_int_max;
68
+ // }
69
+ // const existingTransfer = this._transfers.find(
70
+ // (t) => t.id === transfer.id
71
+ // );
72
+ // if (existingTransfer) {
73
+ // if (existingTransfer.flags !== transfer.flags) {
74
+ // return CreateTransferError.exists_with_different_flags;
75
+ // }
76
+ // if (existingTransfer.pending_id !== transfer.pending_id) {
77
+ // return CreateTransferError.exists_with_different_pending_id;
78
+ // }
79
+ // if (existingTransfer.timeout !== transfer.timeout) {
80
+ // return CreateTransferError.exists_with_different_timeout;
81
+ // }
82
+ // if (
83
+ // existingTransfer.debit_account_id !== transfer.debit_account_id
84
+ // ) {
85
+ // return CreateTransferError.exists_with_different_debit_account_id;
86
+ // }
87
+ // if (
88
+ // existingTransfer.credit_account_id !==
89
+ // transfer.credit_account_id
90
+ // ) {
91
+ // return CreateTransferError.exists_with_different_credit_account_id;
92
+ // }
93
+ // if (existingTransfer.user_data_128 !== transfer.user_data_128) {
94
+ // return CreateTransferError.exists_with_different_user_data_128;
95
+ // }
96
+ // if (existingTransfer.user_data_64 !== transfer.user_data_64) {
97
+ // return CreateTransferError.exists_with_different_user_data_64;
98
+ // }
99
+ // if (existingTransfer.user_data_32 !== transfer.user_data_32) {
100
+ // return CreateTransferError.exists_with_different_user_data_32;
101
+ // }
102
+ // if (existingTransfer.ledger !== transfer.ledger) {
103
+ // return CreateTransferError.exists_with_different_ledger;
104
+ // }
105
+ // if (existingTransfer.code !== transfer.code) {
106
+ // return CreateTransferError.exists_with_different_code;
107
+ // }
108
+ // }
109
+ // /**
110
+ // * * Existential validation
111
+ // * 1. Credit account must exist
112
+ // * 2. Debit account must exist
113
+ // */
114
+ // let creditAccount = this._accounts.get(transfer.credit_account_id);
115
+ // let debitAccount = this._accounts.get(transfer.debit_account_id);
116
+ // if (
117
+ // transfer.flags & TransferFlags.void_pending_transfer ||
118
+ // transfer.flags & TransferFlags.post_pending_transfer
119
+ // ) {
120
+ // if (!transfer.pending_id || transfer.pending_id === 0n) {
121
+ // return CreateTransferError.pending_id_must_not_be_zero;
122
+ // }
123
+ // if (transfer.pending_id > MAX_BIGINT_128) {
124
+ // return CreateTransferError.pending_id_must_not_be_int_max;
125
+ // }
126
+ // const pendingTransfer =
127
+ // this._transfers[
128
+ // this._transfers.findIndex(
129
+ // (t) => t.id === transfer.pending_id
130
+ // )
131
+ // ];
132
+ // if (!pendingTransfer) {
133
+ // return CreateTransferError.pending_transfer_not_found;
134
+ // }
135
+ // if (pendingTransfer.flags & TransferFlags.pending) {
136
+ // return CreateTransferError.pending_transfer_not_pending;
137
+ // }
138
+ // if (pendingTransfer.flags & TransferFlags.void_pending_transfer) {
139
+ // return CreateTransferError.pending_transfer_already_voided;
140
+ // }
141
+ // if (pendingTransfer.flags & TransferFlags.post_pending_transfer) {
142
+ // return CreateTransferError.pending_transfer_already_posted;
143
+ // }
144
+ // /**
145
+ // * TODO: Expired pending transfer logic.
146
+ // * * There doesn't appear to be a way to mark whether an expired transfer has previously been handled.
147
+ // */
148
+ // creditAccount = this._accounts.get(
149
+ // pendingTransfer.credit_account_id
150
+ // );
151
+ // debitAccount = this._accounts.get(pendingTransfer.debit_account_id);
152
+ // }
153
+ // if (!creditAccount) {
154
+ // return CreateTransferError.credit_account_not_found;
155
+ // }
156
+ // if (!debitAccount) {
157
+ // return CreateTransferError.debit_account_not_found;
158
+ // }
159
+ // /**
160
+ // *? Possibly add more validation
161
+ // */
162
+ // return CreateTransferError.ok;
163
+ // }
164
+ // private _performTransfer(transfer: Transfer): CreateTransferError {
165
+ // const validation = this._validateTransfer(transfer);
166
+ // if (validation !== CreateTransferError.ok) return validation;
167
+ // // Gather the accounts
168
+ // let creditAccount = this._accounts.get(transfer.credit_account_id);
169
+ // let debitAccount = this._accounts.get(transfer.debit_account_id);
170
+ // // If pending, contribute to the pending accounts respective balances
171
+ // if (transfer.flags & TransferFlags.pending) {
172
+ // creditAccount.credits_pending += transfer.amount;
173
+ // debitAccount.debits_pending += transfer.amount;
174
+ // }
175
+ // // If voiding a pending transfer, remove the pending amount from the accounts
176
+ // else if (transfer.flags & TransferFlags.void_pending_transfer) {
177
+ // if (!creditAccount || !debitAccount) {
178
+ // const voidTransfer =
179
+ // this._transfers[
180
+ // this._transfers.findIndex(
181
+ // (t) => t.id === transfer.pending_id
182
+ // )
183
+ // ];
184
+ // creditAccount = this._accounts.get(
185
+ // voidTransfer.credit_account_id
186
+ // );
187
+ // debitAccount = this._accounts.get(
188
+ // voidTransfer.debit_account_id
189
+ // );
190
+ // }
191
+ // creditAccount.credits_pending -= transfer.amount;
192
+ // debitAccount.debits_pending -= transfer.amount;
193
+ // }
194
+ // // If posting a pending transfer, remove the pending amount from the accounts and add to the posted amounts
195
+ // else if (transfer.flags & TransferFlags.post_pending_transfer) {
196
+ // if (!creditAccount || !debitAccount) {
197
+ // const postTransfer =
198
+ // this._transfers[
199
+ // this._transfers.findIndex(
200
+ // (t) => t.id === transfer.pending_id
201
+ // )
202
+ // ];
203
+ // creditAccount = this._accounts.get(
204
+ // postTransfer.credit_account_id
205
+ // );
206
+ // debitAccount = this._accounts.get(
207
+ // postTransfer.debit_account_id
208
+ // );
209
+ // }
210
+ // creditAccount.credits_pending -= transfer.amount;
211
+ // debitAccount.debits_pending -= transfer.amount;
212
+ // creditAccount.credits_posted += transfer.amount;
213
+ // debitAccount.debits_posted += transfer.amount;
214
+ // }
215
+ // // Otherwise, add the amount to the posted amounts
216
+ // else {
217
+ // creditAccount.credits_posted += transfer.amount;
218
+ // debitAccount.debits_posted += transfer.amount;
219
+ // }
220
+ // return CreateTransferError.ok;
221
+ // }
222
+ generateId() {
223
+ return this._currentId++;
224
+ }
225
+ async createAccount(account) {
226
+ this._accounts.set(account.id, account);
227
+ return [{ index: 0, result: CreateAccountError.ok }];
228
+ }
229
+ async createAccounts(batch) {
230
+ return batch.map((account, index) => {
231
+ this._accounts.set(account.id, account);
232
+ return { index, result: CreateAccountError.ok };
233
+ });
234
+ }
235
+ async createTransfers(batch) {
236
+ const errs = [];
237
+ let linkedTransfers = [];
238
+ for (let i = 0; i < batch.length; i++) {
239
+ const transfer = {
240
+ ...batch[i],
241
+ };
242
+ let pendingTransfer;
243
+ let valid = true;
244
+ let creditAccountId = transfer.credit_account_id;
245
+ let debitAccountId = transfer.debit_account_id;
246
+ if (transfer.flags & TransferFlags.post_pending_transfer ||
247
+ transfer.flags & TransferFlags.void_pending_transfer) {
248
+ pendingTransfer = this._transfers.find((t) => t.id === transfer.pending_id);
249
+ if (!pendingTransfer) {
250
+ valid = false;
251
+ errs.push({
252
+ index: i,
253
+ result: CreateTransferError.pending_transfer_not_found,
254
+ });
255
+ }
256
+ else {
257
+ const closingTransfer = this._transfers.find((t) => t.pending_id === transfer.pending_id);
258
+ if (closingTransfer) {
259
+ valid = false;
260
+ errs.push({
261
+ index: i,
262
+ result: closingTransfer.flags &
263
+ TransferFlags.post_pending_transfer
264
+ ? CreateTransferError.pending_transfer_already_posted
265
+ : CreateTransferError.pending_transfer_already_voided,
266
+ });
267
+ }
268
+ else {
269
+ creditAccountId = pendingTransfer.credit_account_id;
270
+ debitAccountId = pendingTransfer.debit_account_id;
271
+ }
272
+ }
273
+ }
274
+ if (!pendingTransfer && creditAccountId === debitAccountId) {
275
+ errs.push({
276
+ index: i,
277
+ result: CreateTransferError.accounts_must_be_different,
278
+ });
279
+ valid = false;
280
+ }
281
+ const creditAccount = this._accounts.get(creditAccountId);
282
+ if (!pendingTransfer && !creditAccount) {
283
+ errs.push({
284
+ index: i,
285
+ result: CreateTransferError.credit_account_not_found,
286
+ });
287
+ valid = false;
288
+ }
289
+ const debitAccount = this._accounts.get(debitAccountId);
290
+ if (!pendingTransfer && !debitAccount) {
291
+ errs.push({
292
+ index: i,
293
+ result: CreateTransferError.debit_account_not_found,
294
+ });
295
+ valid = false;
296
+ }
297
+ if (creditAccount && debitAccount) {
298
+ if (transfer.ledger &&
299
+ (creditAccount.ledger !== transfer.ledger ||
300
+ debitAccount.ledger !== transfer.ledger)) {
301
+ errs.push({
302
+ index: i,
303
+ result: CreateTransferError.transfer_must_have_the_same_ledger_as_accounts,
304
+ });
305
+ valid = false;
306
+ return errs;
307
+ }
308
+ else if (creditAccount.ledger !== debitAccount.ledger) {
309
+ errs.push({
310
+ index: i,
311
+ result: CreateTransferError.accounts_must_have_the_same_ledger,
312
+ });
313
+ valid = false;
314
+ return errs;
315
+ }
316
+ if (transfer.flags & TransferFlags.balancing_credit) {
317
+ const balancingAmount = creditAccount.debits_posted -
318
+ (creditAccount.credits_posted +
319
+ creditAccount.credits_pending);
320
+ if (balancingAmount >= 0 &&
321
+ balancingAmount < transfer.amount) {
322
+ transfer.amount = balancingAmount;
323
+ }
324
+ }
325
+ if (transfer.flags & TransferFlags.balancing_debit) {
326
+ const balancingAmount = debitAccount.credits_posted -
327
+ (debitAccount.debits_posted +
328
+ debitAccount.debits_pending);
329
+ if (balancingAmount >= 0 &&
330
+ balancingAmount < transfer.amount) {
331
+ transfer.amount = balancingAmount;
332
+ }
333
+ }
334
+ if (creditAccount.flags &
335
+ AccountFlags.credits_must_not_exceed_debits) {
336
+ if (creditAccount.credits_pending +
337
+ creditAccount.credits_posted +
338
+ transfer.amount >
339
+ creditAccount.debits_posted) {
340
+ valid = false;
341
+ errs.push({
342
+ index: i,
343
+ result: CreateTransferError.exceeds_debits,
344
+ });
345
+ }
346
+ }
347
+ if (debitAccount.flags &
348
+ AccountFlags.debits_must_not_exceed_credits) {
349
+ if (debitAccount.debits_pending +
350
+ debitAccount.debits_posted +
351
+ transfer.amount >
352
+ debitAccount.credits_posted) {
353
+ valid = false;
354
+ errs.push({
355
+ index: i,
356
+ result: CreateTransferError.exceeds_credits,
357
+ });
358
+ }
359
+ }
360
+ if (valid) {
361
+ if (transfer.flags & TransferFlags.pending) {
362
+ creditAccount.credits_pending += transfer.amount;
363
+ debitAccount.debits_pending += transfer.amount;
364
+ }
365
+ else if (transfer.flags & TransferFlags.post_pending_transfer) {
366
+ creditAccount.credits_pending -= pendingTransfer.amount;
367
+ debitAccount.debits_pending -= pendingTransfer.amount;
368
+ creditAccount.credits_posted += pendingTransfer.amount;
369
+ debitAccount.debits_posted += pendingTransfer.amount;
370
+ }
371
+ else if (transfer.flags & TransferFlags.void_pending_transfer) {
372
+ creditAccount.credits_pending -= pendingTransfer.amount;
373
+ debitAccount.debits_pending -= pendingTransfer.amount;
374
+ if (pendingTransfer.flags & TransferFlags.closing_credit) {
375
+ creditAccount.flags &= ~AccountFlags.closed;
376
+ }
377
+ if (pendingTransfer.flags & TransferFlags.closing_debit) {
378
+ debitAccount.flags &= ~AccountFlags.closed;
379
+ }
380
+ }
381
+ else {
382
+ creditAccount.credits_posted += transfer.amount;
383
+ debitAccount.debits_posted += transfer.amount;
384
+ }
385
+ if (transfer.flags & TransferFlags.closing_credit) {
386
+ creditAccount.flags |= AccountFlags.closed;
387
+ }
388
+ if (transfer.flags & TransferFlags.closing_debit) {
389
+ debitAccount.flags |= AccountFlags.closed;
390
+ }
391
+ this._recordBalance(creditAccount, transfer.timestamp);
392
+ this._recordBalance(debitAccount, transfer.timestamp);
393
+ }
394
+ }
395
+ if (valid) {
396
+ if (transfer.flags & TransferFlags.linked) {
397
+ linkedTransfers.push(transfer);
398
+ }
399
+ else {
400
+ if (linkedTransfers.length > 0) {
401
+ this._transfers.push(...linkedTransfers);
402
+ linkedTransfers = [];
403
+ }
404
+ this._transfers.push(transfer);
405
+ }
406
+ }
407
+ else {
408
+ linkedTransfers = [];
409
+ }
410
+ }
411
+ return errs;
412
+ }
413
+ _recordBalance(account, timestamp) {
414
+ if ((account.flags & AccountFlags.history) !== AccountFlags.history) {
415
+ return;
416
+ }
417
+ let accountBalances = this._balances.get(account.id);
418
+ if (!accountBalances) {
419
+ accountBalances = [];
420
+ this._balances.set(account.id, accountBalances);
421
+ }
422
+ accountBalances.push({
423
+ debits_pending: account.debits_pending,
424
+ credits_pending: account.credits_pending,
425
+ credits_posted: account.credits_posted,
426
+ debits_posted: account.debits_posted,
427
+ timestamp: timestamp,
428
+ });
429
+ }
430
+ async lookupAccounts(batch) {
431
+ const accounts = [];
432
+ for (const id of batch) {
433
+ const account = this._accounts.get(id);
434
+ if (account) {
435
+ accounts.push({
436
+ ...account,
437
+ });
438
+ }
439
+ }
440
+ return accounts;
441
+ }
442
+ async lookupTransfers(batch) {
443
+ const transfers = [];
444
+ for (const id of batch) {
445
+ const transfer = this._transfers.find((t) => t.id === id);
446
+ if (transfer) {
447
+ transfers.push({
448
+ ...transfer,
449
+ });
450
+ }
451
+ }
452
+ return transfers;
453
+ }
454
+ async getAccountTransfers(filter) {
455
+ let transfers = this._transfers.filter((t) => {
456
+ if (t.credit_account_id !== filter.account_id &&
457
+ t.debit_account_id !== filter.account_id) {
458
+ return false;
459
+ }
460
+ if (filter.timestamp_min && t.timestamp < filter.timestamp_min) {
461
+ return false;
462
+ }
463
+ if (filter.timestamp_max && t.timestamp > filter.timestamp_max) {
464
+ return false;
465
+ }
466
+ if (filter.user_data_128 &&
467
+ t.user_data_128 !== filter.user_data_128) {
468
+ return false;
469
+ }
470
+ if (filter.user_data_64 && t.user_data_64 !== filter.user_data_64) {
471
+ return false;
472
+ }
473
+ if (filter.user_data_32 && t.user_data_32 !== filter.user_data_32) {
474
+ return false;
475
+ }
476
+ if (filter.code && t.code !== filter.code) {
477
+ return false;
478
+ }
479
+ if (filter.flags) {
480
+ if (filter.flags & AccountFilterFlags.debits) {
481
+ if (t.debit_account_id !== filter.account_id) {
482
+ return false;
483
+ }
484
+ }
485
+ if (filter.flags & AccountFilterFlags.credits) {
486
+ if (t.credit_account_id !== filter.account_id) {
487
+ return false;
488
+ }
489
+ }
490
+ }
491
+ });
492
+ if (filter.flags & AccountFilterFlags.reversed) {
493
+ transfers = orderBy(transfers, ['timestamp'], ['desc']);
494
+ }
495
+ else {
496
+ transfers = orderBy(transfers, ['timestamp'], ['asc']);
497
+ }
498
+ if (filter.limit) {
499
+ transfers = transfers.slice(0, filter.limit);
500
+ }
501
+ return transfers;
502
+ }
503
+ async getAccountBalances(filter) {
504
+ return this._balances.get(filter.account_id) || [];
505
+ }
506
+ async queryAccounts(filter) {
507
+ let accounts = [];
508
+ for (let account of this._accounts.values()) {
509
+ if (filter.user_data_128 &&
510
+ account.user_data_128 !== filter.user_data_128) {
511
+ continue;
512
+ }
513
+ if (filter.user_data_64 &&
514
+ account.user_data_64 !== filter.user_data_64) {
515
+ continue;
516
+ }
517
+ if (filter.user_data_32 &&
518
+ account.user_data_32 !== filter.user_data_32) {
519
+ continue;
520
+ }
521
+ if (filter.ledger && account.ledger !== filter.ledger) {
522
+ continue;
523
+ }
524
+ if (filter.code && account.code !== filter.code) {
525
+ continue;
526
+ }
527
+ if (filter.timestamp_max &&
528
+ account.timestamp > filter.timestamp_max) {
529
+ continue;
530
+ }
531
+ if (filter.timestamp_min &&
532
+ account.timestamp < filter.timestamp_min) {
533
+ continue;
534
+ }
535
+ accounts.push({
536
+ ...account,
537
+ });
538
+ }
539
+ if (filter.flags & AccountFilterFlags.reversed) {
540
+ accounts = orderBy(accounts, ['timestamp'], ['desc']);
541
+ }
542
+ else {
543
+ accounts = orderBy(accounts, ['timestamp'], ['asc']);
544
+ }
545
+ if (filter.limit) {
546
+ accounts = accounts.slice(0, filter.limit);
547
+ }
548
+ return accounts;
549
+ }
550
+ async queryTransfers(filter) {
551
+ let transfers = [];
552
+ for (let transfer of this._transfers) {
553
+ if (filter.user_data_128 &&
554
+ transfer.user_data_128 !== filter.user_data_128) {
555
+ continue;
556
+ }
557
+ if (filter.user_data_64 &&
558
+ transfer.user_data_64 !== filter.user_data_64) {
559
+ continue;
560
+ }
561
+ if (filter.user_data_32 &&
562
+ transfer.user_data_32 !== filter.user_data_32) {
563
+ continue;
564
+ }
565
+ if (filter.ledger && transfer.ledger !== filter.ledger) {
566
+ continue;
567
+ }
568
+ if (filter.code && transfer.code !== filter.code) {
569
+ continue;
570
+ }
571
+ if (filter.timestamp_max &&
572
+ transfer.timestamp > filter.timestamp_max) {
573
+ continue;
574
+ }
575
+ if (filter.timestamp_min &&
576
+ transfer.timestamp < filter.timestamp_min) {
577
+ continue;
578
+ }
579
+ }
580
+ if (filter.flags & AccountFilterFlags.reversed) {
581
+ transfers = orderBy(transfers, ['timestamp'], ['desc']);
582
+ }
583
+ else {
584
+ transfers = orderBy(transfers, ['timestamp'], ['asc']);
585
+ }
586
+ if (filter.limit) {
587
+ transfers = transfers.slice(0, filter.limit);
588
+ }
589
+ return transfers;
590
+ }
591
+ }
592
+ //# sourceMappingURL=MemoryFinancialInterface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MemoryFinancialInterface.js","sourceRoot":"","sources":["MemoryFinancialInterface.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import type { FinancialInterface } from './FinancialInterface';
2
+ import type { Account, AccountBalance, AccountFilter, Client, CreateAccountsError, CreateTransfersError, QueryFilter, Transfer } from 'tigerbeetle-node';
3
+ /**
4
+ * Configuration for the instantiation of the TigerBeetleFinancialInterface.
5
+ */
6
+ export interface Config {
7
+ /**
8
+ * The TigerBeetle client to use for financial operations.
9
+ */
10
+ client: Client;
11
+ /**
12
+ * A function that generates a unique ID for accounts, transfers, etc.
13
+ */
14
+ id: () => Account['id'];
15
+ /**
16
+ * The offset that should be added to the generated IDs.
17
+ * This is useful for testing purposes to avoid ID collisions.
18
+ */
19
+ idOffset?: bigint;
20
+ }
21
+ /**
22
+ * The TigerBeetleFinancialInterface class implements the FinancialInterface
23
+ * using the TigerBeetle client.
24
+ */
25
+ export declare class TigerBeetleFinancialInterface implements FinancialInterface {
26
+ private _client;
27
+ private _id;
28
+ private _idOffset;
29
+ constructor(config: Config);
30
+ private _mapAccountIds;
31
+ private _mapTransferIds;
32
+ private _mapIds;
33
+ private _mapAccountFilter;
34
+ private _mapQueryFilter;
35
+ generateId(): Account['id'];
36
+ createAccount(account: Account): Promise<CreateAccountsError[]>;
37
+ createAccounts(batch: Account[]): Promise<CreateAccountsError[]>;
38
+ createTransfers(batch: Transfer[]): Promise<CreateTransfersError[]>;
39
+ lookupAccounts(batch: Account['id'][]): Promise<Account[]>;
40
+ lookupTransfers(batch: Transfer['id'][]): Promise<Transfer[]>;
41
+ getAccountTransfers(filter: AccountFilter): Promise<Transfer[]>;
42
+ getAccountBalances(filter: AccountFilter): Promise<AccountBalance[]>;
43
+ queryAccounts(filter: QueryFilter): Promise<Account[]>;
44
+ queryTransfers(filter: QueryFilter): Promise<Transfer[]>;
45
+ }
46
+ //# sourceMappingURL=TigerBeetleFinancialInterface.d.ts.map