@joystick.js/db-canary 0.0.0-canary.2209

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 (354) hide show
  1. package/.build/getFilesToBuild.js +26 -0
  2. package/.build/getPlatformSafeFilePath.js +6 -0
  3. package/.build/getPlatformSafePath.js +6 -0
  4. package/.build/index.js +88 -0
  5. package/.build/isWindows.js +3 -0
  6. package/API_KEY +1 -0
  7. package/README.md +1821 -0
  8. package/data/data.mdb +0 -0
  9. package/data/lock.mdb +0 -0
  10. package/dist/client/database.js +1 -0
  11. package/dist/client/index.js +1 -0
  12. package/dist/server/cluster/index.js +1 -0
  13. package/dist/server/cluster/master.js +20 -0
  14. package/dist/server/cluster/worker.js +1 -0
  15. package/dist/server/index.js +1 -0
  16. package/dist/server/lib/api_key_manager.js +9 -0
  17. package/dist/server/lib/auth_manager.js +1 -0
  18. package/dist/server/lib/auto_index_manager.js +1 -0
  19. package/dist/server/lib/backup_manager.js +1 -0
  20. package/dist/server/lib/connection_manager.js +1 -0
  21. package/dist/server/lib/disk_utils.js +2 -0
  22. package/dist/server/lib/http_server.js +405 -0
  23. package/dist/server/lib/index_manager.js +1 -0
  24. package/dist/server/lib/load_settings.js +1 -0
  25. package/dist/server/lib/logger.js +1 -0
  26. package/dist/server/lib/op_types.js +1 -0
  27. package/dist/server/lib/operation_dispatcher.js +1 -0
  28. package/dist/server/lib/operations/admin.js +1 -0
  29. package/dist/server/lib/operations/bulk_write.js +1 -0
  30. package/dist/server/lib/operations/create_index.js +1 -0
  31. package/dist/server/lib/operations/delete_one.js +1 -0
  32. package/dist/server/lib/operations/drop_index.js +1 -0
  33. package/dist/server/lib/operations/find.js +1 -0
  34. package/dist/server/lib/operations/find_one.js +1 -0
  35. package/dist/server/lib/operations/get_indexes.js +1 -0
  36. package/dist/server/lib/operations/insert_one.js +1 -0
  37. package/dist/server/lib/operations/update_one.js +1 -0
  38. package/dist/server/lib/performance_monitor.js +1 -0
  39. package/dist/server/lib/query_engine.js +1 -0
  40. package/dist/server/lib/recovery_manager.js +1 -0
  41. package/dist/server/lib/replication_manager.js +1 -0
  42. package/dist/server/lib/safe_json_parse.js +1 -0
  43. package/dist/server/lib/send_response.js +1 -0
  44. package/dist/server/lib/tcp_protocol.js +1 -0
  45. package/dist/server/lib/write_forwarder.js +1 -0
  46. package/dist/server/lib/write_queue.js +1 -0
  47. package/increment_version.js +3 -0
  48. package/logs/.013e15b54597d05db4b4b53ecc37b10c92a72927-audit.json +20 -0
  49. package/logs/.02de550a67ea0f5961faa2dfd458a4d06f59ebd1-audit.json +20 -0
  50. package/logs/.03494ba24eb3c72214b4068a77d54b8993bee651-audit.json +20 -0
  51. package/logs/.06309ec60b339be1259a7993dd09c732f8907fbc-audit.json +20 -0
  52. package/logs/.0663a04dcfa17285661e5e1b8cfa51f41523b210-audit.json +20 -0
  53. package/logs/.0f06e6c4c9b824622729e13927587479e5060391-audit.json +20 -0
  54. package/logs/.16ccf58682ecb22b3e3ec63f0da1b7fe9be56528-audit.json +20 -0
  55. package/logs/.1fa1a5d02f496474b1ab473524c65c984146a9ad-audit.json +20 -0
  56. package/logs/.2223c0ae3bea6f0d62c62b1d319cc8634856abb7-audit.json +20 -0
  57. package/logs/.23dc79ffda3e083665e6f5993f59397adcbf4a46-audit.json +20 -0
  58. package/logs/.28104f49b03906b189eefd1cd462cb46c3c0af22-audit.json +20 -0
  59. package/logs/.29cdbf13808abe6a0ce70ee2f2efdd680ce3fd8e-audit.json +20 -0
  60. package/logs/.2a9889afd071f77f41f5170d08703a0afca866b7-audit.json +20 -0
  61. package/logs/.2acec3d1940a2bbed487528b703ee5948959a599-audit.json +20 -0
  62. package/logs/.2fb60ff326338c02bfedbcd0e936444e4a216750-audit.json +20 -0
  63. package/logs/.318fc7a19530d76a345f030f7cad00dda15300e7-audit.json +20 -0
  64. package/logs/.3cf27043e19085f908cedc7701e6d013463208ee-audit.json +25 -0
  65. package/logs/.3d90d785415817fc443402843b7c95f8371adc9b-audit.json +20 -0
  66. package/logs/.4074bca620375f72966fc52dfd439577727671e5-audit.json +20 -0
  67. package/logs/.40eecf018417ea80a70ea8ec7a3cc9406bc6334b-audit.json +20 -0
  68. package/logs/.50e974f1ef7c365fca6a1251b2e2c2252914cb5e-audit.json +20 -0
  69. package/logs/.52cb7d9e4223cf26ba36006ac26b949a97c7923c-audit.json +20 -0
  70. package/logs/.54befcdb84c15aad980705a31bcc9f555c3577ab-audit.json +20 -0
  71. package/logs/.57dfb70e22eddb84db2e3c0ceeefac5c0b9baffa-audit.json +20 -0
  72. package/logs/.5f0b24705a1eaad4eca4968f2d86f91b3f9be683-audit.json +20 -0
  73. package/logs/.61ba98fdda7db58576b382fee07904e5db1169d6-audit.json +20 -0
  74. package/logs/.6235017727ef6b199d569a99d6aa8c8e80a1b475-audit.json +20 -0
  75. package/logs/.63db16193699219489d218a1ddea5dde3750cae4-audit.json +20 -0
  76. package/logs/.64fb67dfe14149c9eef728d79bf30a54da809c60-audit.json +20 -0
  77. package/logs/.669137453368987c1f311b5345342527afb54e50-audit.json +20 -0
  78. package/logs/.7a71f8c89ea28ae266d356aeff6306e876a30fbb-audit.json +20 -0
  79. package/logs/.7afbaa90fe9dc3a7d682676f9bb79f9a1b1fd9a6-audit.json +20 -0
  80. package/logs/.7ca29e322cd05327035de850099e7610864f2347-audit.json +20 -0
  81. package/logs/.83335ab3347e449dae03455a110aaf7f120d4802-audit.json +20 -0
  82. package/logs/.8c2487b5fd445d2c8e5c483c80b9fa99bbf1ca58-audit.json +20 -0
  83. package/logs/.8c8b9dc386922c9f3b4c13251af7052aac1d24c0-audit.json +20 -0
  84. package/logs/.8d6155d94640c4863301ae0fee5e4e7372a21446-audit.json +20 -0
  85. package/logs/.944a3119a243deea7c8270d5d9e582bb1d0eaa10-audit.json +20 -0
  86. package/logs/.9816a845c30fb2909f3b26a23eeb3538ebcad5db-audit.json +20 -0
  87. package/logs/.9dc08784e38b865488177c26d4af5934555e0323-audit.json +20 -0
  88. package/logs/.9dd27d2e0e454ac0a37600206d1cac5493b0d7ee-audit.json +20 -0
  89. package/logs/.a3d486feeac7654c59b547de96600e8849a06d4f-audit.json +20 -0
  90. package/logs/.a5b811f4def22250f86cc18870d7c4573625df22-audit.json +20 -0
  91. package/logs/.a61648eb5f830e0b6f508ac35e4f8f629d2ad4c7-audit.json +20 -0
  92. package/logs/.a89016d507045771b4b5a65656944a9c0f1e528b-audit.json +20 -0
  93. package/logs/.a99bee160a1c590be959af46bacc02724803f691-audit.json +20 -0
  94. package/logs/.ada7906d6243fd7da802f03d86c4ae5dd9df6236-audit.json +20 -0
  95. package/logs/.b518339ee942143b6af983af167f5bbb6983b4de-audit.json +20 -0
  96. package/logs/.b51b124b166d53c9519017856ea610d61d65fabe-audit.json +20 -0
  97. package/logs/.b7a6aee19f58e55633d5e4a3709041c47dfff975-audit.json +20 -0
  98. package/logs/.bd7a8a6ba9c55d557a4867ab53f02e3ec2e1553d-audit.json +20 -0
  99. package/logs/.c1435dafe453b169d6392b25065f3cf4ab6fbb21-audit.json +20 -0
  100. package/logs/.c17e1ce043109f77dc2f0e2aa290a9d1ed842c03-audit.json +20 -0
  101. package/logs/.ca62637ce9540e5a38a2fbedb2115febb6ad308a-audit.json +15 -0
  102. package/logs/.ccee67b9c176967f8977071409a41f5cb5cd6ad4-audit.json +20 -0
  103. package/logs/.db24043417ea79a6f14cd947476399e53930b48d-audit.json +20 -0
  104. package/logs/.e0f12acccb57829f5f33712bb2e2607ecd808147-audit.json +20 -0
  105. package/logs/.e9b6cc33d0bbd2e644c4e2bf44d177f850016557-audit.json +20 -0
  106. package/logs/.f15291d434808e3bdca7963ccd2e73893be027e6-audit.json +20 -0
  107. package/logs/.f4bdf9e21ef84f8a3fae3ffb32bbc39275991351-audit.json +15 -0
  108. package/logs/.fbac3aefac1e81b4230df5aa50667cb90d51024f-audit.json +20 -0
  109. package/logs/.fcfd495c0a9169db243f4a4f21878ee02b76413c-audit.json +20 -0
  110. package/logs/admin-2025-09-12.log +580 -0
  111. package/logs/admin-2025-09-15.log +283 -0
  112. package/logs/admin-error-2025-09-12.log +22 -0
  113. package/logs/admin-error-2025-09-15.log +10 -0
  114. package/logs/api_key_manager-2025-09-12.log +658 -0
  115. package/logs/api_key_manager-2025-09-15.log +295 -0
  116. package/logs/api_key_manager-error-2025-09-12.log +0 -0
  117. package/logs/api_key_manager-error-2025-09-15.log +0 -0
  118. package/logs/auth_manager-2025-09-12.log +4432 -0
  119. package/logs/auth_manager-2025-09-15.log +2000 -0
  120. package/logs/auth_manager-error-2025-09-12.log +11 -0
  121. package/logs/auth_manager-error-2025-09-15.log +5 -0
  122. package/logs/auto_index_manager-2025-09-12.log +84 -0
  123. package/logs/auto_index_manager-2025-09-15.log +45 -0
  124. package/logs/auto_index_manager-error-2025-09-12.log +6 -0
  125. package/logs/auto_index_manager-error-2025-09-15.log +0 -0
  126. package/logs/backup_manager-2025-09-12.log +198 -0
  127. package/logs/backup_manager-2025-09-15.log +90 -0
  128. package/logs/backup_manager-error-2025-09-12.log +198 -0
  129. package/logs/backup_manager-error-2025-09-15.log +90 -0
  130. package/logs/bulk_write-2025-09-12.log +66 -0
  131. package/logs/bulk_write-2025-09-15.log +38 -0
  132. package/logs/bulk_write-error-2025-09-12.log +0 -0
  133. package/logs/bulk_write-error-2025-09-15.log +0 -0
  134. package/logs/connection_manager-2025-09-12.log +2412 -0
  135. package/logs/connection_manager-2025-09-15.log +1132 -0
  136. package/logs/connection_manager-error-2025-09-12.log +0 -0
  137. package/logs/connection_manager-error-2025-09-15.log +0 -0
  138. package/logs/create_index-2025-09-12.log +302 -0
  139. package/logs/create_index-2025-09-15.log +158 -0
  140. package/logs/create_index-error-2025-09-12.log +30 -0
  141. package/logs/create_index-error-2025-09-15.log +13 -0
  142. package/logs/delete_one-2025-09-12.log +73 -0
  143. package/logs/delete_one-2025-09-15.log +43 -0
  144. package/logs/delete_one-error-2025-09-12.log +0 -0
  145. package/logs/delete_one-error-2025-09-15.log +0 -0
  146. package/logs/disk_utils-2025-09-12.log +4954 -0
  147. package/logs/disk_utils-2025-09-15.log +2446 -0
  148. package/logs/disk_utils-error-2025-09-12.log +0 -0
  149. package/logs/disk_utils-error-2025-09-15.log +0 -0
  150. package/logs/drop_index-2025-09-12.log +41 -0
  151. package/logs/drop_index-2025-09-15.log +23 -0
  152. package/logs/drop_index-error-2025-09-12.log +11 -0
  153. package/logs/drop_index-error-2025-09-15.log +5 -0
  154. package/logs/find-2025-09-12.log +1050 -0
  155. package/logs/find-2025-09-15.log +592 -0
  156. package/logs/find-error-2025-09-12.log +1 -0
  157. package/logs/find-error-2025-09-15.log +0 -0
  158. package/logs/find_one-2025-09-12.log +425 -0
  159. package/logs/find_one-2025-09-15.log +264 -0
  160. package/logs/find_one-error-2025-09-12.log +5 -0
  161. package/logs/find_one-error-2025-09-15.log +0 -0
  162. package/logs/get_indexes-2025-09-12.log +84 -0
  163. package/logs/get_indexes-2025-09-15.log +56 -0
  164. package/logs/get_indexes-error-2025-09-12.log +6 -0
  165. package/logs/get_indexes-error-2025-09-15.log +0 -0
  166. package/logs/http_server-2025-09-12.log +2772 -0
  167. package/logs/http_server-2025-09-15.log +1276 -0
  168. package/logs/http_server-error-2025-09-12.log +212 -0
  169. package/logs/http_server-error-2025-09-15.log +44 -0
  170. package/logs/index_manager-2025-09-12.log +5031 -0
  171. package/logs/index_manager-2025-09-15.log +2909 -0
  172. package/logs/index_manager-error-2025-09-12.log +80 -0
  173. package/logs/index_manager-error-2025-09-15.log +38 -0
  174. package/logs/insert_one-2025-09-12.log +2181 -0
  175. package/logs/insert_one-2025-09-15.log +1293 -0
  176. package/logs/insert_one-error-2025-09-12.log +0 -0
  177. package/logs/insert_one-error-2025-09-15.log +0 -0
  178. package/logs/master-2025-09-12.log +1882 -0
  179. package/logs/master-2025-09-15.log +910 -0
  180. package/logs/master-error-2025-09-12.log +80 -0
  181. package/logs/master-error-2025-09-15.log +0 -0
  182. package/logs/operation_dispatcher-2025-09-12.log +751 -0
  183. package/logs/operation_dispatcher-2025-09-15.log +359 -0
  184. package/logs/operation_dispatcher-error-2025-09-12.log +33 -0
  185. package/logs/operation_dispatcher-error-2025-09-15.log +11 -0
  186. package/logs/performance_monitor-2025-09-12.log +14889 -0
  187. package/logs/performance_monitor-2025-09-15.log +6803 -0
  188. package/logs/performance_monitor-error-2025-09-12.log +0 -0
  189. package/logs/performance_monitor-error-2025-09-15.log +0 -0
  190. package/logs/query_engine-2025-09-12.log +5310 -0
  191. package/logs/query_engine-2025-09-15.log +2639 -0
  192. package/logs/query_engine-error-2025-09-12.log +0 -0
  193. package/logs/query_engine-error-2025-09-15.log +0 -0
  194. package/logs/recovery_manager-2025-09-12.log +462 -0
  195. package/logs/recovery_manager-2025-09-15.log +210 -0
  196. package/logs/recovery_manager-error-2025-09-12.log +22 -0
  197. package/logs/recovery_manager-error-2025-09-15.log +10 -0
  198. package/logs/replication-2025-09-12.log +1923 -0
  199. package/logs/replication-2025-09-15.log +917 -0
  200. package/logs/replication-error-2025-09-12.log +33 -0
  201. package/logs/replication-error-2025-09-15.log +15 -0
  202. package/logs/server-2025-09-12.log +2601 -0
  203. package/logs/server-2025-09-15.log +1191 -0
  204. package/logs/server-error-2025-09-12.log +0 -0
  205. package/logs/server-error-2025-09-15.log +0 -0
  206. package/logs/tcp_protocol-2025-09-12.log +22 -0
  207. package/logs/tcp_protocol-2025-09-15.log +10 -0
  208. package/logs/tcp_protocol-error-2025-09-12.log +22 -0
  209. package/logs/tcp_protocol-error-2025-09-15.log +10 -0
  210. package/logs/test-2025-09-12.log +0 -0
  211. package/logs/test-2025-09-15.log +0 -0
  212. package/logs/test-error-2025-09-12.log +0 -0
  213. package/logs/test-error-2025-09-15.log +0 -0
  214. package/logs/update_one-2025-09-12.log +173 -0
  215. package/logs/update_one-2025-09-15.log +118 -0
  216. package/logs/update_one-error-2025-09-12.log +0 -0
  217. package/logs/update_one-error-2025-09-15.log +0 -0
  218. package/logs/worker-2025-09-12.log +1457 -0
  219. package/logs/worker-2025-09-15.log +695 -0
  220. package/logs/worker-error-2025-09-12.log +0 -0
  221. package/logs/worker-error-2025-09-15.log +0 -0
  222. package/logs/write_forwarder-2025-09-12.log +1956 -0
  223. package/logs/write_forwarder-2025-09-15.log +932 -0
  224. package/logs/write_forwarder-error-2025-09-12.log +66 -0
  225. package/logs/write_forwarder-error-2025-09-15.log +30 -0
  226. package/logs/write_queue-2025-09-12.log +612 -0
  227. package/logs/write_queue-2025-09-15.log +301 -0
  228. package/logs/write_queue-error-2025-09-12.log +184 -0
  229. package/logs/write_queue-error-2025-09-15.log +83 -0
  230. package/package.json +48 -0
  231. package/prompts/01-core-infrastructure.md +56 -0
  232. package/prompts/02-secondary-indexing.md +65 -0
  233. package/prompts/03-write-serialization.md +63 -0
  234. package/prompts/04-enhanced-authentication.md +75 -0
  235. package/prompts/05-comprehensive-admin-operations.md +75 -0
  236. package/prompts/06-backup-and-restore-system.md +106 -0
  237. package/prompts/07-production-safety-features.md +107 -0
  238. package/prompts/08-tcp-client-library.md +121 -0
  239. package/prompts/09-api-method-chaining.md +134 -0
  240. package/prompts/10-automatic-index-creation.md +223 -0
  241. package/prompts/11-operation-naming-consistency.md +268 -0
  242. package/prompts/12-tcp-replication-system.md +333 -0
  243. package/prompts/13-master-read-write-operations.md +57 -0
  244. package/prompts/14-index-upsert-operations.md +68 -0
  245. package/prompts/15-client-api-return-types.md +81 -0
  246. package/prompts/16-server-setup-ui.md +97 -0
  247. package/prompts/17-emergency-password-change.md +108 -0
  248. package/prompts/18-joystick-framework-integration.md +116 -0
  249. package/prompts/19-api-key-authentication-system.md +137 -0
  250. package/prompts/20-configurable-server-port.md +105 -0
  251. package/prompts/21-multi-database-support.md +161 -0
  252. package/prompts/FULL_TEXT_SEARCH.md +293 -0
  253. package/prompts/PROMPTS.md +158 -0
  254. package/prompts/README.md +221 -0
  255. package/prompts/TYPESCRIPT_GENERATION.md +179 -0
  256. package/src/client/database.js +166 -0
  257. package/src/client/index.js +752 -0
  258. package/src/server/cluster/index.js +53 -0
  259. package/src/server/cluster/master.js +774 -0
  260. package/src/server/cluster/worker.js +537 -0
  261. package/src/server/index.js +540 -0
  262. package/src/server/lib/api_key_manager.js +473 -0
  263. package/src/server/lib/auth_manager.js +375 -0
  264. package/src/server/lib/auto_index_manager.js +681 -0
  265. package/src/server/lib/backup_manager.js +650 -0
  266. package/src/server/lib/connection_manager.js +218 -0
  267. package/src/server/lib/disk_utils.js +118 -0
  268. package/src/server/lib/http_server.js +1165 -0
  269. package/src/server/lib/index_manager.js +756 -0
  270. package/src/server/lib/load_settings.js +143 -0
  271. package/src/server/lib/logger.js +135 -0
  272. package/src/server/lib/op_types.js +29 -0
  273. package/src/server/lib/operation_dispatcher.js +268 -0
  274. package/src/server/lib/operations/admin.js +808 -0
  275. package/src/server/lib/operations/bulk_write.js +367 -0
  276. package/src/server/lib/operations/create_index.js +68 -0
  277. package/src/server/lib/operations/delete_one.js +114 -0
  278. package/src/server/lib/operations/drop_index.js +58 -0
  279. package/src/server/lib/operations/find.js +340 -0
  280. package/src/server/lib/operations/find_one.js +319 -0
  281. package/src/server/lib/operations/get_indexes.js +52 -0
  282. package/src/server/lib/operations/insert_one.js +113 -0
  283. package/src/server/lib/operations/update_one.js +225 -0
  284. package/src/server/lib/performance_monitor.js +313 -0
  285. package/src/server/lib/query_engine.js +243 -0
  286. package/src/server/lib/recovery_manager.js +388 -0
  287. package/src/server/lib/replication_manager.js +727 -0
  288. package/src/server/lib/safe_json_parse.js +21 -0
  289. package/src/server/lib/send_response.js +47 -0
  290. package/src/server/lib/tcp_protocol.js +130 -0
  291. package/src/server/lib/write_forwarder.js +636 -0
  292. package/src/server/lib/write_queue.js +335 -0
  293. package/test_data/data.mdb +0 -0
  294. package/test_data/lock.mdb +0 -0
  295. package/tests/client/index.test.js +1232 -0
  296. package/tests/server/cluster/cluster.test.js +248 -0
  297. package/tests/server/cluster/master_read_write_operations.test.js +577 -0
  298. package/tests/server/index.test.js +651 -0
  299. package/tests/server/integration/authentication_integration.test.js +294 -0
  300. package/tests/server/integration/auto_indexing_integration.test.js +268 -0
  301. package/tests/server/integration/backup_integration.test.js +513 -0
  302. package/tests/server/integration/indexing_integration.test.js +126 -0
  303. package/tests/server/integration/production_safety_integration.test.js +358 -0
  304. package/tests/server/integration/replication_integration.test.js +227 -0
  305. package/tests/server/integration/write_serialization_integration.test.js +246 -0
  306. package/tests/server/lib/api_key_manager.test.js +516 -0
  307. package/tests/server/lib/auth_manager.test.js +317 -0
  308. package/tests/server/lib/auto_index_manager.test.js +275 -0
  309. package/tests/server/lib/backup_manager.test.js +238 -0
  310. package/tests/server/lib/connection_manager.test.js +221 -0
  311. package/tests/server/lib/disk_utils.test.js +63 -0
  312. package/tests/server/lib/http_server.test.js +389 -0
  313. package/tests/server/lib/index_manager.test.js +301 -0
  314. package/tests/server/lib/load_settings.test.js +107 -0
  315. package/tests/server/lib/load_settings_port_config.test.js +243 -0
  316. package/tests/server/lib/logger.test.js +282 -0
  317. package/tests/server/lib/operations/admin.test.js +638 -0
  318. package/tests/server/lib/operations/bulk_write.test.js +128 -0
  319. package/tests/server/lib/operations/create_index.test.js +138 -0
  320. package/tests/server/lib/operations/delete_one.test.js +52 -0
  321. package/tests/server/lib/operations/drop_index.test.js +72 -0
  322. package/tests/server/lib/operations/find.test.js +93 -0
  323. package/tests/server/lib/operations/find_one.test.js +91 -0
  324. package/tests/server/lib/operations/get_indexes.test.js +87 -0
  325. package/tests/server/lib/operations/insert_one.test.js +42 -0
  326. package/tests/server/lib/operations/update_one.test.js +89 -0
  327. package/tests/server/lib/performance_monitor.test.js +185 -0
  328. package/tests/server/lib/query_engine.test.js +46 -0
  329. package/tests/server/lib/recovery_manager.test.js +414 -0
  330. package/tests/server/lib/replication_manager.test.js +202 -0
  331. package/tests/server/lib/safe_json_parse.test.js +45 -0
  332. package/tests/server/lib/send_response.test.js +155 -0
  333. package/tests/server/lib/tcp_protocol.test.js +169 -0
  334. package/tests/server/lib/write_forwarder.test.js +258 -0
  335. package/tests/server/lib/write_queue.test.js +255 -0
  336. package/tsconfig.json +30 -0
  337. package/types/client/index.d.ts +447 -0
  338. package/types/server/cluster/index.d.ts +28 -0
  339. package/types/server/cluster/master.d.ts +115 -0
  340. package/types/server/cluster/worker.d.ts +1 -0
  341. package/types/server/lib/auth_manager.d.ts +13 -0
  342. package/types/server/lib/backup_manager.d.ts +43 -0
  343. package/types/server/lib/connection_manager.d.ts +15 -0
  344. package/types/server/lib/disk_utils.d.ts +3 -0
  345. package/types/server/lib/index_manager.d.ts +24 -0
  346. package/types/server/lib/load_settings.d.ts +4 -0
  347. package/types/server/lib/logger.d.ts +44 -0
  348. package/types/server/lib/op_types.d.ts +6 -0
  349. package/types/server/lib/performance_monitor.d.ts +68 -0
  350. package/types/server/lib/query_engine.d.ts +10 -0
  351. package/types/server/lib/safe_json_parse.d.ts +7 -0
  352. package/types/server/lib/send_response.d.ts +3 -0
  353. package/types/server/lib/tcp_protocol.d.ts +12 -0
  354. package/types/server/lib/write_queue.d.ts +2 -0
@@ -0,0 +1,447 @@
1
+ export default joystickdb;
2
+ export type ClientOptions = {
3
+ /**
4
+ * - Server hostname
5
+ */
6
+ host?: string;
7
+ /**
8
+ * - Server port
9
+ */
10
+ port?: number;
11
+ /**
12
+ * - Authentication options
13
+ */
14
+ authentication?: {
15
+ password?: string;
16
+ };
17
+ /**
18
+ * - Request timeout in milliseconds
19
+ */
20
+ timeout?: number;
21
+ /**
22
+ * - Enable automatic reconnection
23
+ */
24
+ reconnect?: boolean;
25
+ /**
26
+ * - Maximum reconnection attempts
27
+ */
28
+ max_reconnect_attempts?: number;
29
+ /**
30
+ * - Initial reconnection delay in milliseconds
31
+ */
32
+ reconnect_delay?: number;
33
+ /**
34
+ * - Automatically connect on instantiation
35
+ */
36
+ auto_connect?: boolean;
37
+ };
38
+
39
+ /**
40
+ * Bulk write operation types using snake_case naming convention
41
+ */
42
+ export type BulkInsertOperation = {
43
+ insert_one: {
44
+ document: any;
45
+ };
46
+ };
47
+
48
+ export type BulkUpdateOperation = {
49
+ update_one: {
50
+ filter: any;
51
+ update: any;
52
+ upsert?: boolean;
53
+ };
54
+ };
55
+
56
+ export type BulkDeleteOperation = {
57
+ delete_one: {
58
+ filter: any;
59
+ };
60
+ };
61
+
62
+ /**
63
+ * Union type for all bulk write operations
64
+ */
65
+ export type BulkWriteOperation = BulkInsertOperation | BulkUpdateOperation | BulkDeleteOperation;
66
+
67
+ /**
68
+ * Legacy bulk write operation types using camelCase naming (deprecated but supported for backward compatibility)
69
+ */
70
+ export type LegacyBulkInsertOperation = {
71
+ insertOne: {
72
+ document: any;
73
+ };
74
+ };
75
+
76
+ export type LegacyBulkUpdateOperation = {
77
+ updateOne: {
78
+ filter: any;
79
+ update: any;
80
+ upsert?: boolean;
81
+ };
82
+ };
83
+
84
+ export type LegacyBulkDeleteOperation = {
85
+ deleteOne: {
86
+ filter: any;
87
+ };
88
+ };
89
+
90
+ /**
91
+ * Union type for legacy bulk write operations (backward compatibility)
92
+ */
93
+ export type LegacyBulkWriteOperation = LegacyBulkInsertOperation | LegacyBulkUpdateOperation | LegacyBulkDeleteOperation;
94
+ declare namespace joystickdb {
95
+ function client(options: ClientOptions): JoystickDBClient;
96
+ }
97
+ /**
98
+ * @typedef {Object} ClientOptions
99
+ * @property {string} [host='localhost'] - Server hostname
100
+ * @property {number} [port=1983] - Server port
101
+ * @property {Object} [authentication={}] - Authentication options
102
+ * @property {string} [authentication.password] - Authentication password
103
+ * @property {number} [timeout=5000] - Request timeout in milliseconds
104
+ * @property {boolean} [reconnect=true] - Enable automatic reconnection
105
+ * @property {number} [max_reconnect_attempts=10] - Maximum reconnection attempts
106
+ * @property {number} [reconnect_delay=1000] - Initial reconnection delay in milliseconds
107
+ * @property {boolean} [auto_connect=true] - Automatically connect on instantiation
108
+ */
109
+ /**
110
+ * JoystickDB TCP client for connecting to JoystickDB server.
111
+ * @extends EventEmitter
112
+ * @fires JoystickDBClient#connect
113
+ * @fires JoystickDBClient#authenticated
114
+ * @fires JoystickDBClient#error
115
+ * @fires JoystickDBClient#disconnect
116
+ * @fires JoystickDBClient#reconnecting
117
+ * @fires JoystickDBClient#response
118
+ */
119
+ declare class JoystickDBClient extends EventEmitter<[never]> {
120
+ /**
121
+ * Creates a new JoystickDB client instance.
122
+ * @param {ClientOptions} [options={}] - Client configuration options
123
+ */
124
+ constructor(options?: ClientOptions);
125
+ host: string;
126
+ port: number;
127
+ authentication: {
128
+ /**
129
+ * - Authentication password
130
+ */
131
+ password?: string;
132
+ };
133
+ timeout: number;
134
+ reconnect: boolean;
135
+ max_reconnect_attempts: number;
136
+ reconnect_delay: number;
137
+ socket: any;
138
+ message_parser: any;
139
+ is_connected: boolean;
140
+ is_authenticated: boolean;
141
+ is_connecting: boolean;
142
+ reconnect_attempts: number;
143
+ reconnect_timeout: NodeJS.Timeout;
144
+ pending_requests: Map<any, any>;
145
+ request_id_counter: number;
146
+ request_queue: any[];
147
+ /**
148
+ * Establishes connection to the JoystickDB server.
149
+ */
150
+ connect(): void;
151
+ /**
152
+ * Authenticates with the server using provided credentials.
153
+ * @throws {Error} When password is not provided or authentication fails
154
+ */
155
+ authenticate(): Promise<void>;
156
+ /**
157
+ * Handles incoming messages from the server.
158
+ * @param {Object} message - Decoded message from server
159
+ */
160
+ handle_message(message: any): void;
161
+ /**
162
+ * Handles connection errors and manages reconnection logic.
163
+ * @param {Error} error - The connection error
164
+ */
165
+ handle_connection_error(error: Error): void;
166
+ /**
167
+ * Handles disconnection events and manages reconnection logic.
168
+ */
169
+ handle_disconnect(): void;
170
+ /**
171
+ * Schedules a reconnection attempt with exponential backoff.
172
+ */
173
+ schedule_reconnect(): void;
174
+ /**
175
+ * Sends a request to the server.
176
+ * @param {string} op - Operation name
177
+ * @param {Object} [data={}] - Request data
178
+ * @param {boolean} [use_queue=true] - Whether to queue request if not connected
179
+ * @returns {Promise<Object>} Server response
180
+ */
181
+ send_request(op: string, data?: any, use_queue?: boolean): Promise<any>;
182
+ /**
183
+ * Immediately sends a request to the server.
184
+ * @param {Object} request - Request object with message, resolve, reject, and request_id
185
+ */
186
+ send_request_now(request: any): void;
187
+ /**
188
+ * Processes queued requests after connection and authentication.
189
+ */
190
+ process_request_queue(): void;
191
+ /**
192
+ * Disconnects from the server and disables reconnection.
193
+ */
194
+ disconnect(): void;
195
+ /**
196
+ * Inserts a single document into a collection.
197
+ * @param {string} collection - Collection name
198
+ * @param {Object} document - Document to insert
199
+ * @param {Object} [options={}] - Insert options
200
+ * @returns {Promise<Object>} Insert result
201
+ */
202
+ insert_one(collection: string, document: any, options?: any): Promise<any>;
203
+ /**
204
+ * Finds a single document in a collection.
205
+ * @param {string} collection - Collection name
206
+ * @param {Object} [filter={}] - Query filter
207
+ * @param {Object} [options={}] - Find options
208
+ * @returns {Promise<Object|null>} Found document or null
209
+ */
210
+ find_one(collection: string, filter?: any, options?: any): Promise<any | null>;
211
+ /**
212
+ * Finds multiple documents in a collection.
213
+ * @param {string} collection - Collection name
214
+ * @param {Object} [filter={}] - Query filter
215
+ * @param {Object} [options={}] - Find options
216
+ * @returns {Promise<any[]>} Array of found documents
217
+ */
218
+ find(collection: string, filter?: any, options?: any): Promise<any[]>;
219
+ /**
220
+ * Updates a single document in a collection.
221
+ * @param {string} collection - Collection name
222
+ * @param {Object} filter - Query filter to match document
223
+ * @param {Object} update - Update operations
224
+ * @param {Object} [options={}] - Update options
225
+ * @returns {Promise<Object>} Update result
226
+ */
227
+ update_one(collection: string, filter: any, update: any, options?: any): Promise<any>;
228
+ /**
229
+ * Deletes a single document from a collection.
230
+ * @param {string} collection - Collection name
231
+ * @param {Object} filter - Query filter to match document
232
+ * @param {Object} [options={}] - Delete options
233
+ * @returns {Promise<Object>} Delete result
234
+ */
235
+ delete_one(collection: string, filter: any, options?: any): Promise<any>;
236
+ /**
237
+ * Performs multiple write operations in a single request.
238
+ * @param {string} collection - Collection name
239
+ * @param {Array<BulkWriteOperation | LegacyBulkWriteOperation>} operations - Array of write operations (supports both snake_case and camelCase)
240
+ * @param {Object} [options={}] - Bulk write options
241
+ * @returns {Promise<Object>} Bulk write result
242
+ */
243
+ bulk_write(collection: string, operations: Array<BulkWriteOperation | LegacyBulkWriteOperation>, options?: any): Promise<any>;
244
+ /**
245
+ * Creates an index on a collection field.
246
+ * @param {string} collection - Collection name
247
+ * @param {string} field - Field name to index
248
+ * @param {Object} [options={}] - Index options
249
+ * @returns {Promise<Object>} Index creation result
250
+ */
251
+ create_index(collection: string, field: string, options?: any): Promise<any>;
252
+ /**
253
+ * Creates or updates an index on a collection field (upsert operation).
254
+ * @param {string} collection - Collection name
255
+ * @param {string} field - Field name to index
256
+ * @param {Object} [options={}] - Index options
257
+ * @returns {Promise<Object>} Index upsert result
258
+ */
259
+ upsert_index(collection: string, field: string, options?: any): Promise<any>;
260
+ /**
261
+ * Drops an index from a collection field.
262
+ * @param {string} collection - Collection name
263
+ * @param {string} field - Field name of index to drop
264
+ * @returns {Promise<Object>} Index drop result
265
+ */
266
+ drop_index(collection: string, field: string): Promise<any>;
267
+ /**
268
+ * Gets all indexes for a collection.
269
+ * @param {string} collection - Collection name
270
+ * @returns {Promise<Object>} Indexes information
271
+ */
272
+ get_indexes(collection: string): Promise<any>;
273
+ /**
274
+ * Gets database statistics.
275
+ * @returns {Promise<Object>} Database statistics
276
+ */
277
+ get_stats(): Promise<any>;
278
+ /**
279
+ * Lists all collections in the database.
280
+ * @returns {Promise<Object>} Collections list
281
+ */
282
+ list_collections(): Promise<any>;
283
+ /**
284
+ * Lists documents in a collection with pagination.
285
+ * @param {string} collection - Collection name
286
+ * @param {Object} [options={}] - List options (limit, offset, etc.)
287
+ * @returns {Promise<Object>} Documents list
288
+ */
289
+ list_documents(collection: string, options?: any): Promise<any>;
290
+ /**
291
+ * Gets a specific document by ID.
292
+ * @param {string} collection - Collection name
293
+ * @param {string} document_id - Document ID
294
+ * @returns {Promise<Object>} Document data
295
+ */
296
+ get_document(collection: string, document_id: string): Promise<any>;
297
+ /**
298
+ * Queries documents with advanced filtering.
299
+ * @param {string} collection - Collection name
300
+ * @param {Object} [filter={}] - Query filter
301
+ * @param {Object} [options={}] - Query options
302
+ * @returns {Promise<Object>} Query results
303
+ */
304
+ query_documents(collection: string, filter?: any, options?: any): Promise<any>;
305
+ /**
306
+ * Inserts a document via admin interface.
307
+ * @param {string} collection - Collection name
308
+ * @param {Object} document - Document to insert
309
+ * @returns {Promise<Object>} Insert result
310
+ */
311
+ insert_document(collection: string, document: any): Promise<any>;
312
+ /**
313
+ * Updates a document by ID via admin interface.
314
+ * @param {string} collection - Collection name
315
+ * @param {string} document_id - Document ID
316
+ * @param {Object} update - Update operations
317
+ * @returns {Promise<Object>} Update result
318
+ */
319
+ update_document(collection: string, document_id: string, update: any): Promise<any>;
320
+ /**
321
+ * Deletes a document by ID via admin interface.
322
+ * @param {string} collection - Collection name
323
+ * @param {string} document_id - Document ID
324
+ * @returns {Promise<Object>} Delete result
325
+ */
326
+ delete_document(collection: string, document_id: string): Promise<any>;
327
+ /**
328
+ * Triggers an immediate backup.
329
+ * @returns {Promise<Object>} Backup result
330
+ */
331
+ backup_now(): Promise<any>;
332
+ /**
333
+ * Lists all available backups.
334
+ * @returns {Promise<Object>} Backups list
335
+ */
336
+ list_backups(): Promise<any>;
337
+ /**
338
+ * Restores from a specific backup.
339
+ * @param {string} backup_name - Name of backup to restore
340
+ * @returns {Promise<Object>} Restore result
341
+ */
342
+ restore_backup(backup_name: string): Promise<any>;
343
+ /**
344
+ * Pings the server to check connectivity.
345
+ * @returns {Promise<Object>} Ping result
346
+ */
347
+ ping(): Promise<any>;
348
+ /**
349
+ * Reloads server configuration.
350
+ * @returns {Promise<Object>} Reload result
351
+ */
352
+ reload(): Promise<any>;
353
+ /**
354
+ * Performs initial server setup.
355
+ * @returns {Promise<Object>} Setup result
356
+ */
357
+ setup(): Promise<any>;
358
+ /**
359
+ * Returns a collection interface for method chaining operations.
360
+ * @param {string} name - Collection name
361
+ * @returns {Collection} Collection interface instance
362
+ */
363
+ collection(name: string): Collection;
364
+ }
365
+ /**
366
+ * Collection interface for method chaining operations.
367
+ * Provides a fluent API for database operations on a specific collection.
368
+ */
369
+ declare class Collection {
370
+ /**
371
+ * Creates a new Collection instance.
372
+ * @param {JoystickDBClient} client - The client instance
373
+ * @param {string} collection_name - Name of the collection
374
+ */
375
+ constructor(client: JoystickDBClient, collection_name: string);
376
+ client: JoystickDBClient;
377
+ collection_name: string;
378
+ /**
379
+ * Inserts a single document into the collection.
380
+ * @param {Object} document - Document to insert
381
+ * @param {Object} [options={}] - Insert options
382
+ * @returns {Promise<Object>} Insert result
383
+ */
384
+ insert_one(document: any, options?: any): Promise<any>;
385
+ /**
386
+ * Finds a single document in the collection.
387
+ * @param {Object} [filter={}] - Query filter
388
+ * @param {Object} [options={}] - Find options
389
+ * @returns {Promise<Object|null>} Found document or null
390
+ */
391
+ find_one(filter?: any, options?: any): Promise<any | null>;
392
+ /**
393
+ * Finds multiple documents in the collection.
394
+ * @param {Object} [filter={}] - Query filter
395
+ * @param {Object} [options={}] - Find options
396
+ * @returns {Promise<any[]>} Array of found documents
397
+ */
398
+ find(filter?: any, options?: any): Promise<any[]>;
399
+ /**
400
+ * Updates a single document in the collection.
401
+ * @param {Object} filter - Query filter to match document
402
+ * @param {Object} update - Update operations
403
+ * @param {Object} [options={}] - Update options
404
+ * @returns {Promise<Object>} Update result
405
+ */
406
+ update_one(filter: any, update: any, options?: any): Promise<any>;
407
+ /**
408
+ * Deletes a single document from the collection.
409
+ * @param {Object} filter - Query filter to match document
410
+ * @param {Object} [options={}] - Delete options
411
+ * @returns {Promise<Object>} Delete result
412
+ */
413
+ delete_one(filter: any, options?: any): Promise<any>;
414
+ /**
415
+ * Performs multiple write operations in a single request.
416
+ * @param {Array<BulkWriteOperation | LegacyBulkWriteOperation>} operations - Array of write operations (supports both snake_case and camelCase)
417
+ * @param {Object} [options={}] - Bulk write options
418
+ * @returns {Promise<Object>} Bulk write result
419
+ */
420
+ bulk_write(operations: Array<BulkWriteOperation | LegacyBulkWriteOperation>, options?: any): Promise<any>;
421
+ /**
422
+ * Creates an index on a collection field.
423
+ * @param {string} field - Field name to index
424
+ * @param {Object} [options={}] - Index options
425
+ * @returns {Promise<Object>} Index creation result
426
+ */
427
+ create_index(field: string, options?: any): Promise<any>;
428
+ /**
429
+ * Creates or updates an index on a collection field (upsert operation).
430
+ * @param {string} field - Field name to index
431
+ * @param {Object} [options={}] - Index options
432
+ * @returns {Promise<Object>} Index upsert result
433
+ */
434
+ upsert_index(field: string, options?: any): Promise<any>;
435
+ /**
436
+ * Drops an index from a collection field.
437
+ * @param {string} field - Field name of index to drop
438
+ * @returns {Promise<Object>} Index drop result
439
+ */
440
+ drop_index(field: string): Promise<any>;
441
+ /**
442
+ * Gets all indexes for the collection.
443
+ * @returns {Promise<Object>} Indexes information
444
+ */
445
+ get_indexes(): Promise<any>;
446
+ }
447
+ import { EventEmitter } from 'events';
@@ -0,0 +1,28 @@
1
+ export default start_cluster;
2
+ export type ClusterOptions = {
3
+ /**
4
+ * - Number of worker processes to spawn
5
+ */
6
+ worker_count?: number;
7
+ /**
8
+ * - Server port
9
+ */
10
+ port?: number;
11
+ /**
12
+ * - Settings file path
13
+ */
14
+ settings_file?: string;
15
+ };
16
+ /**
17
+ * @typedef {Object} ClusterOptions
18
+ * @property {number} [worker_count] - Number of worker processes to spawn
19
+ * @property {number} [port=1983] - Server port
20
+ * @property {string} [settings_file='settings.db.json'] - Settings file path
21
+ */
22
+ /**
23
+ * Starts the cluster with master and worker processes.
24
+ * @param {ClusterOptions} [options={}] - Cluster configuration options
25
+ * @returns {ClusterMaster|undefined} Master instance if running as master, undefined if worker
26
+ */
27
+ export function start_cluster(options?: ClusterOptions): ClusterMaster | undefined;
28
+ import ClusterMaster from './master.js';
@@ -0,0 +1,115 @@
1
+ export default ClusterMaster;
2
+ export type ClusterMasterOptions = {
3
+ /**
4
+ * - Number of worker processes to spawn
5
+ */
6
+ worker_count?: number;
7
+ /**
8
+ * - Server port
9
+ */
10
+ port?: number;
11
+ /**
12
+ * - Settings file path
13
+ */
14
+ settings_file?: string;
15
+ };
16
+ /**
17
+ * @typedef {Object} ClusterMasterOptions
18
+ * @property {number} [worker_count] - Number of worker processes to spawn
19
+ * @property {number} [port=1983] - Server port
20
+ * @property {string} [settings_file='settings.db.json'] - Settings file path
21
+ */
22
+ /**
23
+ * Cluster master process that manages worker processes and coordinates database writes.
24
+ * @extends EventEmitter
25
+ * @fires ClusterMaster#writes_completed
26
+ */
27
+ declare class ClusterMaster extends EventEmitter<[never]> {
28
+ /**
29
+ * Creates a new cluster master instance.
30
+ * @param {ClusterMasterOptions} [options={}] - Master configuration options
31
+ */
32
+ constructor(options?: ClusterMasterOptions);
33
+ workers: Map<any, any>;
34
+ write_queue: any[];
35
+ processing_writes: boolean;
36
+ authenticated_sessions: Map<any, any>;
37
+ worker_count: any;
38
+ port: number;
39
+ settings_file: string;
40
+ settings: any;
41
+ pending_writes: Map<any, any>;
42
+ write_id_counter: number;
43
+ shutting_down: boolean;
44
+ log: any;
45
+ /**
46
+ * Sets up the cluster master configuration and event handlers.
47
+ */
48
+ setup_master(): void;
49
+ /**
50
+ * Starts the cluster master and spawns worker processes.
51
+ * @throws {Error} When startup fails
52
+ */
53
+ start(): Promise<void>;
54
+ /**
55
+ * Spawns a new worker process.
56
+ * @returns {cluster.Worker} The spawned worker instance
57
+ */
58
+ spawn_worker(): cluster.Worker;
59
+ /**
60
+ * Handles worker process death and respawning.
61
+ * @param {cluster.Worker} dead_worker - The worker that died
62
+ */
63
+ handle_worker_death(dead_worker: cluster.Worker): void;
64
+ /**
65
+ * Handles messages from worker processes.
66
+ * @param {cluster.Worker} worker - Worker that sent the message
67
+ * @param {Object} message - Message from worker
68
+ */
69
+ handle_worker_message(worker: cluster.Worker, message: any): void;
70
+ handle_worker_ready_for_config(worker: any, message: any): void;
71
+ handle_worker_server_ready(worker: any, message: any): void;
72
+ /**
73
+ * Handles write requests from workers, queuing them for serialized execution.
74
+ * @param {cluster.Worker} worker - Worker requesting the write
75
+ * @param {Object} message - Write request message
76
+ */
77
+ handle_write_request(worker: cluster.Worker, message: any): Promise<void>;
78
+ /**
79
+ * Processes the write queue, executing operations serially.
80
+ */
81
+ process_write_queue(): Promise<void>;
82
+ /**
83
+ * Executes a single write operation and sends response to worker.
84
+ * @param {Object} write_op - Write operation to execute
85
+ */
86
+ execute_write_operation(write_op: any): Promise<void>;
87
+ /**
88
+ * Performs the actual database write operation.
89
+ * @param {string} op_type - Type of write operation
90
+ * @param {Object} data - Operation data
91
+ * @returns {Promise<Object>} Operation result
92
+ * @throws {Error} When operation fails or is unsupported
93
+ */
94
+ perform_database_write(op_type: string, data: any): Promise<any>;
95
+ /**
96
+ * Broadcasts write notifications to all workers except the originating one.
97
+ * @param {string} op_type - Type of write operation
98
+ * @param {Object} data - Operation data
99
+ * @param {number} exclude_worker_id - Worker ID to exclude from broadcast
100
+ */
101
+ broadcast_write_notification(op_type: string, data: any, exclude_worker_id: number): void;
102
+ handle_auth_request(worker: any, message: any): void;
103
+ update_worker_connections(worker: any, message: any): void;
104
+ handle_worker_heartbeat(worker: any, message: any): void;
105
+ /**
106
+ * Gets comprehensive cluster statistics.
107
+ * @returns {Object} Cluster statistics including worker info and connection counts
108
+ */
109
+ get_cluster_stats(): any;
110
+ /**
111
+ * Performs graceful shutdown of the cluster master and all workers.
112
+ */
113
+ shutdown(): Promise<void>;
114
+ }
115
+ import { EventEmitter } from 'events';
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ export function setup_authentication(): any;
2
+ export function verify_password(password: any, ip: any): Promise<boolean>;
3
+ export function get_client_ip(socket: any): any;
4
+ export function is_rate_limited(ip: any): boolean;
5
+ export function get_auth_stats(): {
6
+ configured: boolean;
7
+ failed_attempts_count: number;
8
+ rate_limited_ips: number;
9
+ created_at: any;
10
+ last_updated: any;
11
+ };
12
+ export function initialize_auth_manager(): void;
13
+ export function reset_auth_state(): void;
@@ -0,0 +1,43 @@
1
+ export function get_s3_client(): {
2
+ client: any;
3
+ bucket: any;
4
+ };
5
+ export function test_s3_connection(): Promise<boolean>;
6
+ export function create_backup(): Promise<{
7
+ filename: string;
8
+ size_bytes: number;
9
+ checksum: any;
10
+ created_at: string;
11
+ duration_ms: number;
12
+ s3_location: string;
13
+ }>;
14
+ export function list_backups(): Promise<{
15
+ backups: any[];
16
+ total_count: number;
17
+ total_size_bytes: number;
18
+ total_size_mb?: undefined;
19
+ } | {
20
+ backups: any;
21
+ total_count: any;
22
+ total_size_bytes: any;
23
+ total_size_mb: number;
24
+ }>;
25
+ export function restore_backup(backup_filename: any): Promise<{
26
+ backup_filename: any;
27
+ restored_at: string;
28
+ duration_ms: number;
29
+ status: string;
30
+ }>;
31
+ export function cleanup_old_backups(): Promise<{
32
+ deleted_count: number;
33
+ retained_count: number;
34
+ hourly_backups?: undefined;
35
+ daily_backups?: undefined;
36
+ } | {
37
+ deleted_count: number;
38
+ retained_count: number;
39
+ hourly_backups: number;
40
+ daily_backups: number;
41
+ }>;
42
+ export function start_backup_schedule(): void;
43
+ export function stop_backup_schedule(): void;
@@ -0,0 +1,15 @@
1
+ export function create_connection_manager(options?: {}): {
2
+ add_connection: (socket: any) => boolean;
3
+ remove_connection: (socket_id: any) => void;
4
+ update_activity: (socket_id: any) => void;
5
+ create_request_timeout: (socket_id: any, operation: any) => NodeJS.Timeout;
6
+ get_stats: () => {
7
+ total_connections: number;
8
+ max_connections: any;
9
+ total_requests: number;
10
+ oldest_connection_age_ms: number;
11
+ idle_timeout_ms: any;
12
+ request_timeout_ms: any;
13
+ };
14
+ shutdown: () => void;
15
+ };
@@ -0,0 +1,3 @@
1
+ export function get_disk_size(path?: string): Promise<number>;
2
+ export function calculate_map_size(database_path?: string): Promise<number>;
3
+ export function should_grow_map_size(current_size: any, used_size: any, disk_size: any): number;
@@ -0,0 +1,24 @@
1
+ export function initialize_index_database(): any;
2
+ export function get_index_database(): any;
3
+ export function create_index(collection_name: any, field_name: any, options?: {}): Promise<{
4
+ acknowledged: boolean;
5
+ }>;
6
+ export function drop_index(collection_name: any, field_name: any): Promise<{
7
+ acknowledged: boolean;
8
+ }>;
9
+ export function get_indexes(collection_name: any): any[];
10
+ export function update_indexes_on_insert(collection_name: any, document: any): Promise<void>;
11
+ export function update_indexes_on_update(collection_name: any, old_document: any, new_document: any): Promise<void>;
12
+ export function update_indexes_on_delete(collection_name: any, document: any): Promise<void>;
13
+ export function find_documents_by_index(collection_name: any, field_name: any, operator: any, value: any): any[];
14
+ export function can_use_index(collection_name: any, filter: any): {
15
+ field: string;
16
+ operators: string[];
17
+ };
18
+ export function build_index_key(collection_name: any, field_name: any, field_value: any): string;
19
+ export function parse_index_key(key: any): {
20
+ collection: any;
21
+ field: any;
22
+ value: any;
23
+ };
24
+ export function cleanup_index_database(): void;