@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,56 @@
1
+ # Task 1: Core Infrastructure Upgrades
2
+
3
+ ## Objective
4
+ Upgrade the existing JoystickDB implementation with core production-grade infrastructure features.
5
+
6
+ ## Current State
7
+ - Basic LMDB query engine with CRUD operations
8
+ - Simple TCP server using Node.js net module on port 1983
9
+ - MessagePack serialization with msgpackr
10
+ - Basic authentication and settings management
11
+ - 119 passing tests
12
+
13
+ ## Requirements
14
+
15
+ ### 1. Auto-calculating LMDB map_size
16
+ - Detect total disk size using `df -k .` command
17
+ - Set `map_size = disk_size * 0.8` (80% of total disk)
18
+ - Example: 3 TB disk → map_size = ~2.4 TB
19
+ - Implement auto-growth: when data approaches 80% of current map_size, double it (capped at 80% of total disk)
20
+ - Add monitoring and logging for map_size changes
21
+
22
+ ### 2. Proper TCP Protocol with Length Prefixing
23
+ - Replace current direct MessagePack protocol
24
+ - Implement: 4-byte length prefix + MessagePack payload
25
+ - Each message format: `[4-byte length][MessagePack data]`
26
+ - Update both server message handling for proper framing
27
+
28
+ ### 3. Enhanced Server Configuration
29
+ - Keep port 1983 as default
30
+ - Add connection limits (~1000 max connections)
31
+ - Implement idle connection timeout (10 minutes)
32
+ - Add request timeout handling (5 seconds max per request)
33
+
34
+ ### 4. Dependencies Update
35
+ - Install missing dependencies: `@aws-sdk/client-s3`, `crypto`
36
+ - Keep msgpackr (no change needed)
37
+ - Update package.json with new dependencies
38
+
39
+ ### 5. Enhanced Error Handling and Logging
40
+ - Add structured logging with: `{ ts, client_id, op, collection, duration_ms, status }`
41
+ - Implement proper connection management and cleanup
42
+ - Add memory and performance monitoring
43
+
44
+ ## Implementation Notes
45
+ - Follow existing code patterns: ESM syntax, snake_case, arrow functions
46
+ - Maintain all existing tests (119 tests must continue passing)
47
+ - Add comprehensive tests for new features
48
+ - Ensure graceful degradation if disk size detection fails
49
+
50
+ ## Success Criteria
51
+ - All existing tests pass
52
+ - New tests for map_size calculation and auto-growth
53
+ - Proper TCP framing protocol implemented
54
+ - Connection limits and timeouts working
55
+ - Enhanced logging in place
56
+ - Performance monitoring active
@@ -0,0 +1,65 @@
1
+ # Task 2: Secondary Indexing System
2
+
3
+ ## Objective
4
+ Implement a comprehensive secondary indexing system for JoystickDB to optimize query performance.
5
+
6
+ ## Current State
7
+ - Basic LMDB storage with collection:document_id keys
8
+ - MongoDB-compatible query operators implemented
9
+ - No indexing - all queries scan entire collections
10
+ - Query engine supports filters but without optimization
11
+
12
+ ## Requirements
13
+
14
+ ### 1. Index Storage Architecture
15
+ - Create sub-databases for indexed fields in LMDB
16
+ - Index key format: `index:<collection>:<field>:<value> → [document_ids...]`
17
+ - Support multiple document IDs per index entry (array of IDs)
18
+ - Maintain separate index databases for different field types
19
+
20
+ ### 2. Index Management Operations
21
+ - `create_index(collection, field, options)` - Create new index
22
+ - `drop_index(collection, field)` - Remove existing index
23
+ - `get_indexes(collection)` - List all indexes for collection
24
+ - `list_collections()` - Enhanced to show index information
25
+
26
+ ### 3. Index Maintenance
27
+ - Auto-update indexes on `insert_one`, `update_one`, `delete_one`
28
+ - Handle `bulk_write` operations with proper index updates
29
+ - Rollback index changes if document operations fail
30
+ - Support for compound field updates (nested object fields)
31
+
32
+ ### 4. Query Optimization
33
+ - Detect when queries can use indexes
34
+ - Automatically use indexes for supported operators:
35
+ - `$eq`, `$ne`, `$in`, `$nin`
36
+ - `$gt`, `$gte`, `$lt`, `$lte` (range queries)
37
+ - `$exists`
38
+ - Fall back to collection scan when no suitable index exists
39
+ - Add query planning and execution statistics
40
+
41
+ ### 5. Index Types Support
42
+ - Single field indexes
43
+ - Compound indexes (multiple fields)
44
+ - Sparse indexes (skip null/undefined values)
45
+ - Unique indexes (enforce uniqueness constraint)
46
+
47
+ ### 6. Admin Integration
48
+ - Extend admin operation to include index statistics
49
+ - Add index-specific admin actions:
50
+ - `create_index`, `drop_index`, `get_indexes`
51
+ - Index usage statistics and performance metrics
52
+
53
+ ## Implementation Notes
54
+ - Follow existing code patterns: ESM syntax, snake_case, arrow functions
55
+ - Maintain transactional consistency between documents and indexes
56
+ - Add comprehensive error handling for index corruption
57
+ - Implement index rebuilding capabilities for recovery
58
+
59
+ ## Success Criteria
60
+ - All existing tests continue to pass
61
+ - New comprehensive test suite for indexing operations
62
+ - Query performance significantly improved for indexed fields
63
+ - Index management operations working correctly
64
+ - Proper error handling and recovery mechanisms
65
+ - Admin operations enhanced with index information
@@ -0,0 +1,63 @@
1
+ # Task 3: Write Serialization and Queuing
2
+
3
+ ## Objective
4
+ Implement proper write serialization to ensure only one LMDB write transaction occurs at a time, with proper queuing for concurrent writes.
5
+
6
+ ## Current State
7
+ - Multiple concurrent writes can cause LMDB conflicts
8
+ - No write queuing system in place
9
+ - Bulk operations work but lack proper serialization
10
+ - No write performance monitoring
11
+
12
+ ## Requirements
13
+
14
+ ### 1. Write Queue System
15
+ - Implement a single write queue for all write operations
16
+ - Queue operations: `insert_one`, `update_one`, `delete_one`, `bulk_write`
17
+ - Process writes sequentially in FIFO order
18
+ - Maintain operation context and client information
19
+
20
+ ### 2. Transaction Management
21
+ - Ensure only one LMDB write transaction at a time
22
+ - Implement proper transaction rollback on failures
23
+ - Handle transaction timeouts and deadlocks
24
+ - Add transaction retry logic with exponential backoff
25
+
26
+ ### 3. Write Operation Wrapper
27
+ - Create unified write operation handler
28
+ - Wrap all write operations in queue system
29
+ - Maintain operation ordering and atomicity
30
+ - Add write operation logging and metrics
31
+
32
+ ### 4. Concurrent Read Support
33
+ - Allow concurrent read operations during writes
34
+ - Implement read-write lock semantics
35
+ - Ensure read consistency during write operations
36
+ - Optimize read performance while writes are queued
37
+
38
+ ### 5. Performance Monitoring
39
+ - Track write queue depth and wait times
40
+ - Monitor write operation throughput
41
+ - Add write latency metrics
42
+ - Implement write performance alerts
43
+
44
+ ### 6. Error Handling and Recovery
45
+ - Handle write queue overflow scenarios
46
+ - Implement graceful degradation under high load
47
+ - Add write operation timeout handling
48
+ - Ensure proper cleanup on server shutdown
49
+
50
+ ## Implementation Notes
51
+ - Follow existing code patterns: ESM syntax, snake_case, arrow functions
52
+ - Maintain all existing functionality and tests
53
+ - Add comprehensive error handling
54
+ - Implement proper resource cleanup
55
+
56
+ ## Success Criteria
57
+ - All existing tests continue to pass
58
+ - Write operations properly serialized
59
+ - No LMDB write conflicts under concurrent load
60
+ - Write queue functioning correctly
61
+ - Performance monitoring in place
62
+ - Proper error handling and recovery
63
+ - New tests for write serialization scenarios
@@ -0,0 +1,75 @@
1
+ # Task 4: Enhanced Authentication System
2
+
3
+ ## Objective
4
+ Implement a production-grade authentication system with proper password management, rate limiting, and protocol versioning.
5
+
6
+ ## Current State
7
+ - Basic bcrypt authentication with simple password checking
8
+ - Authentication stored in settings, not dedicated auth file
9
+ - No rate limiting for failed attempts
10
+ - No protocol versioning
11
+ - Simple socket-based session management
12
+
13
+ ## Requirements
14
+
15
+ ### 1. Setup Command for Password Bootstrap
16
+ - Add new `setup` operation to op_types
17
+ - Generate 32-character random password on `setup` command
18
+ - Store bcrypt hash in dedicated `./authentication.json` file
19
+ - Return the generated password to client (one-time only)
20
+ - Only allow setup if no authentication.json exists (prevent overwrite)
21
+
22
+ ### 2. Authentication File Management
23
+ - Create `./authentication.json` with structure:
24
+ ```json
25
+ {
26
+ "password_hash": "bcrypt_hash_here",
27
+ "created_at": "2025-08-30T19:00:00.000Z",
28
+ "last_updated": "2025-08-30T19:00:00.000Z",
29
+ "failed_attempts": {},
30
+ "rate_limits": {}
31
+ }
32
+ ```
33
+ - Secure file permissions (600)
34
+ - Atomic file updates for password changes
35
+
36
+ ### 3. Rate Limiting System
37
+ - Implement 5 failed attempts per minute per IP address
38
+ - Track failed attempts in memory and persist to authentication.json
39
+ - Exponential backoff for repeated failures
40
+ - IP-based blocking with automatic expiration
41
+ - Whitelist for local/trusted IPs
42
+
43
+ ### 4. Protocol Versioning
44
+ - Return version information after successful authentication
45
+ - Response format: `{ ok: 1, version: "1.0.0" }`
46
+ - Maintain API compatibility promise
47
+ - Add version checking for future client compatibility
48
+
49
+ ### 5. Enhanced Session Management
50
+ - Improve socket-based session tracking
51
+ - Add session timeouts and cleanup
52
+ - Track authentication timestamps
53
+ - Support session invalidation
54
+
55
+ ### 6. Security Enhancements
56
+ - Add timing attack protection for password verification
57
+ - Implement secure password generation utilities
58
+ - Add authentication audit logging
59
+ - Support for future multi-factor authentication
60
+
61
+ ## Implementation Notes
62
+ - Follow existing code patterns: ESM syntax, snake_case, arrow functions
63
+ - Update op_types.js to include "setup" operation
64
+ - Maintain backward compatibility with existing tests
65
+ - Add comprehensive security testing
66
+ - Implement proper error handling without information leakage
67
+
68
+ ## Success Criteria
69
+ - All existing tests continue to pass
70
+ - Setup command generates and returns password
71
+ - Rate limiting prevents brute force attacks
72
+ - Protocol versioning implemented
73
+ - Secure authentication.json file management
74
+ - New comprehensive authentication test suite
75
+ - Security audit logging in place
@@ -0,0 +1,75 @@
1
+ # Task 5: Comprehensive Admin Operations
2
+
3
+ ## Objective
4
+ Expand the basic admin operation into a comprehensive administrative interface with metadata management, data operations, and system monitoring.
5
+
6
+ ## Current State
7
+ - Basic admin operation returns server info, database stats, and authentication status
8
+ - No granular admin actions or data management capabilities
9
+ - Limited administrative functionality
10
+
11
+ ## Requirements
12
+
13
+ ### 1. Admin Action Framework
14
+ - Extend admin operation to support `admin_action` parameter
15
+ - Route different admin actions to specialized handlers
16
+ - Maintain authentication requirements for all admin operations
17
+ - Add proper error handling and validation
18
+
19
+ ### 2. Metadata Operations
20
+ - `stats` - Enhanced server and database statistics
21
+ - Memory usage, disk usage, ops/sec metrics
22
+ - Database size, document counts, map_size usage %
23
+ - Index statistics and performance metrics
24
+ - `list_collections` - List all collections with metadata
25
+ - Document counts per collection
26
+ - Index information per collection
27
+ - Collection size and statistics
28
+ - Index management (if indexing implemented):
29
+ - `create_index` - Create new indexes
30
+ - `drop_index` - Remove existing indexes
31
+ - `get_indexes` - List indexes for collection
32
+
33
+ ### 3. Data Management Operations
34
+ - `list_documents` - List documents in collection with pagination
35
+ - `get_document` - Retrieve specific document by ID
36
+ - `query_documents` - Execute ad-hoc queries with admin privileges
37
+ - `insert_document` - Insert document with admin privileges
38
+ - `update_document` - Update document with admin privileges
39
+ - `delete_document` - Delete document with admin privileges
40
+
41
+ ### 4. System Monitoring
42
+ - Real-time performance metrics
43
+ - Connection statistics and client information
44
+ - Query performance analytics
45
+ - Error rate monitoring and alerting
46
+ - Resource usage tracking (CPU, memory, disk I/O)
47
+
48
+ ### 5. Enhanced Statistics
49
+ - Operations per second (read/write breakdown)
50
+ - Average query response times
51
+ - Connection pool statistics
52
+ - Cache hit rates (if applicable)
53
+ - Database health indicators
54
+
55
+ ### 6. Admin Security
56
+ - Separate admin authentication level (if needed)
57
+ - Admin operation audit logging
58
+ - Rate limiting for admin operations
59
+ - Admin session management
60
+
61
+ ## Implementation Notes
62
+ - Follow existing code patterns: ESM syntax, snake_case, arrow functions
63
+ - Extend current admin operation rather than replacing it
64
+ - Add comprehensive error handling and validation
65
+ - Implement proper pagination for large result sets
66
+ - Add performance monitoring for admin operations themselves
67
+
68
+ ## Success Criteria
69
+ - All existing tests continue to pass
70
+ - Admin action routing working correctly
71
+ - All metadata operations implemented and tested
72
+ - Data management operations secure and functional
73
+ - System monitoring providing accurate metrics
74
+ - Comprehensive admin test suite
75
+ - Proper error handling and security measures
@@ -0,0 +1,106 @@
1
+ # Task 6: Backup and Restore System
2
+
3
+ ## Objective
4
+ Implement a comprehensive backup and restore system with S3 integration, automatic scheduling, and one-shot restore capabilities.
5
+
6
+ ## Current State
7
+ - No backup or restore functionality
8
+ - No S3 integration
9
+ - No automated backup scheduling
10
+ - No backup verification or integrity checking
11
+
12
+ ## Requirements
13
+
14
+ ### 1. S3 Integration Setup
15
+ - Install and configure `@aws-sdk/client-s3`
16
+ - Support S3-compatible endpoints (AWS, MinIO, etc.)
17
+ - Implement S3 credential management from settings.json
18
+ - Add S3 connection testing and validation
19
+
20
+ ### 2. Backup Operations
21
+ - `backup_now` admin action for manual backups
22
+ - Create compressed sparse backups using `tar --sparse`
23
+ - Generate SHA256 checksums for backup verification
24
+ - Stream backups directly to S3 (minimal local storage)
25
+ - Keep only current backup locally as temporary file
26
+ - Backup filename format: `joystickdb-backup-YYYY-MM-DDTHH:mm:ss.tar.gz`
27
+
28
+ ### 3. Automatic Backup Scheduling
29
+ - Implement hourly backup schedule if S3 configured
30
+ - Use settings.json `backup_schedule` parameter (default: "hourly")
31
+ - Support different schedules: hourly, daily, weekly
32
+ - Add backup job management and monitoring
33
+ - Ensure backups don't interfere with database operations
34
+
35
+ ### 4. Backup Retention Management (S3 Only)
36
+ - Keep 24 hourly backups in S3
37
+ - Keep 30 daily backups (retain one per day after 24 hours)
38
+ - Automatic cleanup of old backups in S3
39
+ - Configurable retention policies
40
+ - Safe deletion with verification
41
+ - No long-term local backup storage
42
+
43
+ ### 5. Restore System
44
+ - `restore_backup` admin action for manual restore
45
+ - One-shot restore via settings.json `restore_from` parameter
46
+ - Download backup from S3 to temporary local file
47
+ - Verify SHA256 checksum before restore
48
+ - Replace `./data/data.mdb` with restored data
49
+ - Clean up temporary restore files immediately
50
+ - Handle restore failures gracefully (boot fresh LMDB)
51
+ - Auto-remove `restore_from` from settings.json on success
52
+
53
+ ### 6. Backup Management Operations
54
+ - `list_backups` admin action to show available S3 backups
55
+ - Show backup metadata: size, date, checksum, S3 location
56
+ - Support filtering and sorting of backup lists
57
+ - Backup integrity verification commands
58
+ - Backup deletion and cleanup operations in S3
59
+
60
+ ### 7. Settings.json Schema Support
61
+ ```json
62
+ {
63
+ "s3": {
64
+ "bucket": "joystickdb-backups",
65
+ "region": "us-east-1",
66
+ "access_key": "AKIA...",
67
+ "secret_key": "abcd...",
68
+ "endpoint": "https://s3.amazonaws.com"
69
+ },
70
+ "backup_schedule": "hourly",
71
+ "restore_from": "joystickdb-backup-2025-08-28T12:00:00.tar.gz"
72
+ }
73
+ ```
74
+
75
+ ### 8. Local Storage Management
76
+ - Use temporary directory for backup creation
77
+ - Stream backups to S3 during creation
78
+ - Clean up temporary files immediately after S3 upload
79
+ - Monitor local disk usage during backup operations
80
+ - Fail backup if insufficient local disk space
81
+
82
+ ### 9. Error Handling and Recovery
83
+ - Robust error handling for S3 operations
84
+ - Network failure recovery for uploads/downloads
85
+ - Immediate cleanup of temporary files on failures
86
+ - Backup corruption detection and handling
87
+ - Comprehensive logging for backup operations
88
+
89
+ ## Implementation Notes
90
+ - Follow existing code patterns: ESM syntax, snake_case, arrow functions
91
+ - Add backup operations to admin action routing
92
+ - Implement proper file locking during backups
93
+ - Use streaming for large backup files to minimize disk usage
94
+ - Add comprehensive error handling and logging
95
+ - Prioritize S3 storage over local storage
96
+
97
+ ## Success Criteria
98
+ - All existing tests continue to pass
99
+ - Manual backup operations working correctly
100
+ - Automatic backup scheduling functional
101
+ - S3 integration working with proper error handling
102
+ - Restore operations reliable and safe
103
+ - Backup retention policies enforced in S3
104
+ - Minimal local disk usage for backups
105
+ - Comprehensive backup test suite
106
+ - Settings.json schema properly supported
@@ -0,0 +1,107 @@
1
+ # Task 7: Production Safety Features
2
+
3
+ ## Objective
4
+ Implement comprehensive production safety features including health monitoring, timeouts, connection management, and enhanced logging.
5
+
6
+ ## Current State
7
+ - Basic server functionality without production safety measures
8
+ - Limited connection management
9
+ - Basic logging without structured monitoring
10
+ - No timeout handling or resource limits
11
+
12
+ ## Requirements
13
+
14
+ ### 1. Health Monitoring System
15
+ - Enhanced `ping` operation always returns `{ ok: 1 }`
16
+ - Comprehensive `stats` in admin operations including:
17
+ - Memory usage and trends
18
+ - Disk usage and available space
19
+ - Operations per second (read/write breakdown)
20
+ - Document count and database size
21
+ - Map_size usage percentage
22
+ - Connection statistics
23
+ - Error rates and response times
24
+
25
+ ### 2. Request Timeout Management
26
+ - Implement 5-second maximum timeout per request
27
+ - Add timeout handling for all operations
28
+ - Graceful timeout responses to clients
29
+ - Timeout monitoring and logging
30
+ - Configurable timeout values per operation type
31
+
32
+ ### 3. Connection Management
33
+ - Maximum ~1000 concurrent connections
34
+ - Connection pooling and resource management
35
+ - Drop idle connections after 10 minutes
36
+ - Connection rate limiting and throttling
37
+ - Client connection tracking and monitoring
38
+ - Graceful connection cleanup on server shutdown
39
+
40
+ ### 4. Enhanced Structured Logging
41
+ - Implement comprehensive logging format:
42
+ ```json
43
+ {
44
+ "ts": "2025-08-30T19:00:00.000Z",
45
+ "client_id": "socket_12345",
46
+ "op": "find_one",
47
+ "collection": "users",
48
+ "duration_ms": 45,
49
+ "status": "success|error",
50
+ "error": "error_message_if_any",
51
+ "request_size": 1024,
52
+ "response_size": 2048
53
+ }
54
+ ```
55
+ - Log all operations with performance metrics
56
+ - Error tracking and categorization
57
+ - Request/response size monitoring
58
+
59
+ ### 5. Resource Monitoring and Alerts
60
+ - Memory usage monitoring with thresholds
61
+ - Disk space monitoring and alerts
62
+ - CPU usage tracking
63
+ - Database performance metrics
64
+ - Connection pool health monitoring
65
+ - Automatic resource cleanup
66
+
67
+ ### 6. Error Handling and Recovery
68
+ - Comprehensive error categorization
69
+ - Graceful degradation under high load
70
+ - Circuit breaker patterns for failing operations
71
+ - Automatic recovery mechanisms
72
+ - Error rate monitoring and alerting
73
+ - Client error response standardization
74
+
75
+ ### 7. Performance Optimization
76
+ - Query performance monitoring
77
+ - Slow query detection and logging
78
+ - Connection reuse optimization
79
+ - Memory usage optimization
80
+ - Database operation batching where appropriate
81
+ - Resource usage profiling
82
+
83
+ ### 8. Security and Rate Limiting
84
+ - Request rate limiting per client
85
+ - Resource usage limits per connection
86
+ - DDoS protection mechanisms
87
+ - Malformed request handling
88
+ - Security event logging
89
+ - IP-based connection limits
90
+
91
+ ## Implementation Notes
92
+ - Follow existing code patterns: ESM syntax, snake_case, arrow functions
93
+ - Integrate with existing logging infrastructure
94
+ - Add comprehensive monitoring without impacting performance
95
+ - Implement graceful degradation strategies
96
+ - Add extensive testing for edge cases and failure scenarios
97
+
98
+ ## Success Criteria
99
+ - All existing tests continue to pass
100
+ - Request timeouts working correctly
101
+ - Connection limits enforced properly
102
+ - Enhanced logging providing detailed insights
103
+ - Health monitoring accurate and responsive
104
+ - Resource usage optimized and monitored
105
+ - Error handling robust and informative
106
+ - Performance metrics available and actionable
107
+ - New comprehensive test suite for safety features
@@ -0,0 +1,121 @@
1
+ # Task 8: JoystickDB TCP Client Library
2
+
3
+ ## Objective
4
+ Create a comprehensive Node.js client library for connecting to JoystickDB with automatic reconnection, connection pooling, and full operation support.
5
+
6
+ ## Current State
7
+ - No client library exists
8
+ - Server uses TCP with 4-byte length prefix + MessagePack protocol
9
+ - Server supports all CRUD operations, admin actions, and authentication
10
+
11
+ ## Requirements
12
+
13
+ ### 1. Client Connection Management
14
+ - Export main `joystickdb` object with `client(options)` method
15
+ - Automatic connection establishment and authentication
16
+ - Connection pooling and reuse
17
+ - Auto-reconnection with exponential backoff
18
+ - Connection health monitoring and heartbeat
19
+
20
+ ### 2. Authentication Handling
21
+ - Automatic authentication on connect using provided password
22
+ - Handle authentication failures gracefully
23
+ - Support for setup operation (password generation)
24
+ - Session management and re-authentication on reconnect
25
+ - Protocol version handling
26
+
27
+ ### 3. CRUD Operations
28
+ - `insert_one(collection, document, options)`
29
+ - `find_one(collection, filter, options)`
30
+ - `find(collection, filter, options)`
31
+ - `update_one(collection, filter, update, options)`
32
+ - `delete_one(collection, filter, options)`
33
+ - `bulk_write(collection, operations, options)`
34
+
35
+ ### 4. Admin Operations
36
+ #### Metadata Operations
37
+ - `get_stats()` - Server and database statistics
38
+ - `list_collections()` - List all collections
39
+ - `create_index(collection, field, options)` - Create index
40
+ - `drop_index(collection, field)` - Drop index
41
+ - `get_indexes(collection)` - List collection indexes
42
+
43
+ #### Data Management Operations
44
+ - `list_documents(collection, options)` - List documents with pagination
45
+ - `get_document(collection, document_id)` - Get specific document
46
+ - `query_documents(collection, filter, options)` - Ad-hoc queries
47
+ - `insert_document(collection, document)` - Admin insert
48
+ - `update_document(collection, document_id, update)` - Admin update
49
+ - `delete_document(collection, document_id)` - Admin delete
50
+
51
+ #### Backup Operations
52
+ - `backup_now()` - Trigger manual backup
53
+ - `list_backups()` - List available backups
54
+ - `restore_backup(backup_name)` - Restore from backup
55
+
56
+ ### 5. Health and Utility Operations
57
+ - `ping()` - Health check
58
+ - `reload()` - Reload server configuration
59
+
60
+ ### 6. Protocol Implementation
61
+ - Implement 4-byte length prefix + MessagePack protocol
62
+ - Handle message framing correctly
63
+ - Support for large message handling
64
+ - Proper error handling for malformed messages
65
+
66
+ ### 7. Request Management
67
+ - Per-request timeout (5 seconds default, configurable)
68
+ - Request queuing during disconnection
69
+ - Request retry logic with backoff
70
+ - Concurrent request handling
71
+ - Request/response correlation
72
+
73
+ ### 8. Error Handling and Recovery
74
+ - Comprehensive error handling for all operations
75
+ - Network error recovery and reconnection
76
+ - Timeout handling and cleanup
77
+ - Connection failure notifications
78
+ - Graceful degradation strategies
79
+
80
+ ### 9. Client Configuration and Usage
81
+ ```javascript
82
+ import joystickdb from 'joystickdb';
83
+
84
+ const client = joystickdb.client({
85
+ host: 'localhost',
86
+ port: 1983,
87
+ authentication: {
88
+ password: 'generated_password_from_setup'
89
+ },
90
+ timeout: 5000,
91
+ reconnect: true,
92
+ max_reconnect_attempts: 10,
93
+ reconnect_delay: 1000
94
+ });
95
+ ```
96
+
97
+ ### 10. Event System
98
+ - Connection events: 'connect', 'disconnect', 'error', 'reconnect'
99
+ - Operation events for monitoring and debugging
100
+ - Error event handling and logging
101
+ - Connection state change notifications
102
+
103
+ ## Implementation Notes
104
+ - Follow existing code patterns: ESM syntax, snake_case, arrow functions
105
+ - Use msgpackr for MessagePack serialization (consistent with server)
106
+ - Implement proper resource cleanup and connection management
107
+ - Add comprehensive error handling and logging
108
+ - Support both callback and Promise-based APIs
109
+ - Password should be obtained from setup operation and stored separately
110
+ - Main export should be `joystickdb` object with `client()` method
111
+
112
+ ## Success Criteria
113
+ - Client can connect and authenticate successfully
114
+ - All CRUD operations working correctly
115
+ - All admin operations implemented and functional
116
+ - Auto-reconnection working reliably
117
+ - Request timeout and retry logic functional
118
+ - Comprehensive error handling in place
119
+ - Full test suite covering all client functionality
120
+ - Documentation and usage examples provided
121
+ - Performance optimized for high-throughput scenarios