@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.
- package/.build/getFilesToBuild.js +26 -0
- package/.build/getPlatformSafeFilePath.js +6 -0
- package/.build/getPlatformSafePath.js +6 -0
- package/.build/index.js +88 -0
- package/.build/isWindows.js +3 -0
- package/API_KEY +1 -0
- package/README.md +1821 -0
- package/data/data.mdb +0 -0
- package/data/lock.mdb +0 -0
- package/dist/client/database.js +1 -0
- package/dist/client/index.js +1 -0
- package/dist/server/cluster/index.js +1 -0
- package/dist/server/cluster/master.js +20 -0
- package/dist/server/cluster/worker.js +1 -0
- package/dist/server/index.js +1 -0
- package/dist/server/lib/api_key_manager.js +9 -0
- package/dist/server/lib/auth_manager.js +1 -0
- package/dist/server/lib/auto_index_manager.js +1 -0
- package/dist/server/lib/backup_manager.js +1 -0
- package/dist/server/lib/connection_manager.js +1 -0
- package/dist/server/lib/disk_utils.js +2 -0
- package/dist/server/lib/http_server.js +405 -0
- package/dist/server/lib/index_manager.js +1 -0
- package/dist/server/lib/load_settings.js +1 -0
- package/dist/server/lib/logger.js +1 -0
- package/dist/server/lib/op_types.js +1 -0
- package/dist/server/lib/operation_dispatcher.js +1 -0
- package/dist/server/lib/operations/admin.js +1 -0
- package/dist/server/lib/operations/bulk_write.js +1 -0
- package/dist/server/lib/operations/create_index.js +1 -0
- package/dist/server/lib/operations/delete_one.js +1 -0
- package/dist/server/lib/operations/drop_index.js +1 -0
- package/dist/server/lib/operations/find.js +1 -0
- package/dist/server/lib/operations/find_one.js +1 -0
- package/dist/server/lib/operations/get_indexes.js +1 -0
- package/dist/server/lib/operations/insert_one.js +1 -0
- package/dist/server/lib/operations/update_one.js +1 -0
- package/dist/server/lib/performance_monitor.js +1 -0
- package/dist/server/lib/query_engine.js +1 -0
- package/dist/server/lib/recovery_manager.js +1 -0
- package/dist/server/lib/replication_manager.js +1 -0
- package/dist/server/lib/safe_json_parse.js +1 -0
- package/dist/server/lib/send_response.js +1 -0
- package/dist/server/lib/tcp_protocol.js +1 -0
- package/dist/server/lib/write_forwarder.js +1 -0
- package/dist/server/lib/write_queue.js +1 -0
- package/increment_version.js +3 -0
- package/logs/.013e15b54597d05db4b4b53ecc37b10c92a72927-audit.json +20 -0
- package/logs/.02de550a67ea0f5961faa2dfd458a4d06f59ebd1-audit.json +20 -0
- package/logs/.03494ba24eb3c72214b4068a77d54b8993bee651-audit.json +20 -0
- package/logs/.06309ec60b339be1259a7993dd09c732f8907fbc-audit.json +20 -0
- package/logs/.0663a04dcfa17285661e5e1b8cfa51f41523b210-audit.json +20 -0
- package/logs/.0f06e6c4c9b824622729e13927587479e5060391-audit.json +20 -0
- package/logs/.16ccf58682ecb22b3e3ec63f0da1b7fe9be56528-audit.json +20 -0
- package/logs/.1fa1a5d02f496474b1ab473524c65c984146a9ad-audit.json +20 -0
- package/logs/.2223c0ae3bea6f0d62c62b1d319cc8634856abb7-audit.json +20 -0
- package/logs/.23dc79ffda3e083665e6f5993f59397adcbf4a46-audit.json +20 -0
- package/logs/.28104f49b03906b189eefd1cd462cb46c3c0af22-audit.json +20 -0
- package/logs/.29cdbf13808abe6a0ce70ee2f2efdd680ce3fd8e-audit.json +20 -0
- package/logs/.2a9889afd071f77f41f5170d08703a0afca866b7-audit.json +20 -0
- package/logs/.2acec3d1940a2bbed487528b703ee5948959a599-audit.json +20 -0
- package/logs/.2fb60ff326338c02bfedbcd0e936444e4a216750-audit.json +20 -0
- package/logs/.318fc7a19530d76a345f030f7cad00dda15300e7-audit.json +20 -0
- package/logs/.3cf27043e19085f908cedc7701e6d013463208ee-audit.json +25 -0
- package/logs/.3d90d785415817fc443402843b7c95f8371adc9b-audit.json +20 -0
- package/logs/.4074bca620375f72966fc52dfd439577727671e5-audit.json +20 -0
- package/logs/.40eecf018417ea80a70ea8ec7a3cc9406bc6334b-audit.json +20 -0
- package/logs/.50e974f1ef7c365fca6a1251b2e2c2252914cb5e-audit.json +20 -0
- package/logs/.52cb7d9e4223cf26ba36006ac26b949a97c7923c-audit.json +20 -0
- package/logs/.54befcdb84c15aad980705a31bcc9f555c3577ab-audit.json +20 -0
- package/logs/.57dfb70e22eddb84db2e3c0ceeefac5c0b9baffa-audit.json +20 -0
- package/logs/.5f0b24705a1eaad4eca4968f2d86f91b3f9be683-audit.json +20 -0
- package/logs/.61ba98fdda7db58576b382fee07904e5db1169d6-audit.json +20 -0
- package/logs/.6235017727ef6b199d569a99d6aa8c8e80a1b475-audit.json +20 -0
- package/logs/.63db16193699219489d218a1ddea5dde3750cae4-audit.json +20 -0
- package/logs/.64fb67dfe14149c9eef728d79bf30a54da809c60-audit.json +20 -0
- package/logs/.669137453368987c1f311b5345342527afb54e50-audit.json +20 -0
- package/logs/.7a71f8c89ea28ae266d356aeff6306e876a30fbb-audit.json +20 -0
- package/logs/.7afbaa90fe9dc3a7d682676f9bb79f9a1b1fd9a6-audit.json +20 -0
- package/logs/.7ca29e322cd05327035de850099e7610864f2347-audit.json +20 -0
- package/logs/.83335ab3347e449dae03455a110aaf7f120d4802-audit.json +20 -0
- package/logs/.8c2487b5fd445d2c8e5c483c80b9fa99bbf1ca58-audit.json +20 -0
- package/logs/.8c8b9dc386922c9f3b4c13251af7052aac1d24c0-audit.json +20 -0
- package/logs/.8d6155d94640c4863301ae0fee5e4e7372a21446-audit.json +20 -0
- package/logs/.944a3119a243deea7c8270d5d9e582bb1d0eaa10-audit.json +20 -0
- package/logs/.9816a845c30fb2909f3b26a23eeb3538ebcad5db-audit.json +20 -0
- package/logs/.9dc08784e38b865488177c26d4af5934555e0323-audit.json +20 -0
- package/logs/.9dd27d2e0e454ac0a37600206d1cac5493b0d7ee-audit.json +20 -0
- package/logs/.a3d486feeac7654c59b547de96600e8849a06d4f-audit.json +20 -0
- package/logs/.a5b811f4def22250f86cc18870d7c4573625df22-audit.json +20 -0
- package/logs/.a61648eb5f830e0b6f508ac35e4f8f629d2ad4c7-audit.json +20 -0
- package/logs/.a89016d507045771b4b5a65656944a9c0f1e528b-audit.json +20 -0
- package/logs/.a99bee160a1c590be959af46bacc02724803f691-audit.json +20 -0
- package/logs/.ada7906d6243fd7da802f03d86c4ae5dd9df6236-audit.json +20 -0
- package/logs/.b518339ee942143b6af983af167f5bbb6983b4de-audit.json +20 -0
- package/logs/.b51b124b166d53c9519017856ea610d61d65fabe-audit.json +20 -0
- package/logs/.b7a6aee19f58e55633d5e4a3709041c47dfff975-audit.json +20 -0
- package/logs/.bd7a8a6ba9c55d557a4867ab53f02e3ec2e1553d-audit.json +20 -0
- package/logs/.c1435dafe453b169d6392b25065f3cf4ab6fbb21-audit.json +20 -0
- package/logs/.c17e1ce043109f77dc2f0e2aa290a9d1ed842c03-audit.json +20 -0
- package/logs/.ca62637ce9540e5a38a2fbedb2115febb6ad308a-audit.json +15 -0
- package/logs/.ccee67b9c176967f8977071409a41f5cb5cd6ad4-audit.json +20 -0
- package/logs/.db24043417ea79a6f14cd947476399e53930b48d-audit.json +20 -0
- package/logs/.e0f12acccb57829f5f33712bb2e2607ecd808147-audit.json +20 -0
- package/logs/.e9b6cc33d0bbd2e644c4e2bf44d177f850016557-audit.json +20 -0
- package/logs/.f15291d434808e3bdca7963ccd2e73893be027e6-audit.json +20 -0
- package/logs/.f4bdf9e21ef84f8a3fae3ffb32bbc39275991351-audit.json +15 -0
- package/logs/.fbac3aefac1e81b4230df5aa50667cb90d51024f-audit.json +20 -0
- package/logs/.fcfd495c0a9169db243f4a4f21878ee02b76413c-audit.json +20 -0
- package/logs/admin-2025-09-12.log +580 -0
- package/logs/admin-2025-09-15.log +283 -0
- package/logs/admin-error-2025-09-12.log +22 -0
- package/logs/admin-error-2025-09-15.log +10 -0
- package/logs/api_key_manager-2025-09-12.log +658 -0
- package/logs/api_key_manager-2025-09-15.log +295 -0
- package/logs/api_key_manager-error-2025-09-12.log +0 -0
- package/logs/api_key_manager-error-2025-09-15.log +0 -0
- package/logs/auth_manager-2025-09-12.log +4432 -0
- package/logs/auth_manager-2025-09-15.log +2000 -0
- package/logs/auth_manager-error-2025-09-12.log +11 -0
- package/logs/auth_manager-error-2025-09-15.log +5 -0
- package/logs/auto_index_manager-2025-09-12.log +84 -0
- package/logs/auto_index_manager-2025-09-15.log +45 -0
- package/logs/auto_index_manager-error-2025-09-12.log +6 -0
- package/logs/auto_index_manager-error-2025-09-15.log +0 -0
- package/logs/backup_manager-2025-09-12.log +198 -0
- package/logs/backup_manager-2025-09-15.log +90 -0
- package/logs/backup_manager-error-2025-09-12.log +198 -0
- package/logs/backup_manager-error-2025-09-15.log +90 -0
- package/logs/bulk_write-2025-09-12.log +66 -0
- package/logs/bulk_write-2025-09-15.log +38 -0
- package/logs/bulk_write-error-2025-09-12.log +0 -0
- package/logs/bulk_write-error-2025-09-15.log +0 -0
- package/logs/connection_manager-2025-09-12.log +2412 -0
- package/logs/connection_manager-2025-09-15.log +1132 -0
- package/logs/connection_manager-error-2025-09-12.log +0 -0
- package/logs/connection_manager-error-2025-09-15.log +0 -0
- package/logs/create_index-2025-09-12.log +302 -0
- package/logs/create_index-2025-09-15.log +158 -0
- package/logs/create_index-error-2025-09-12.log +30 -0
- package/logs/create_index-error-2025-09-15.log +13 -0
- package/logs/delete_one-2025-09-12.log +73 -0
- package/logs/delete_one-2025-09-15.log +43 -0
- package/logs/delete_one-error-2025-09-12.log +0 -0
- package/logs/delete_one-error-2025-09-15.log +0 -0
- package/logs/disk_utils-2025-09-12.log +4954 -0
- package/logs/disk_utils-2025-09-15.log +2446 -0
- package/logs/disk_utils-error-2025-09-12.log +0 -0
- package/logs/disk_utils-error-2025-09-15.log +0 -0
- package/logs/drop_index-2025-09-12.log +41 -0
- package/logs/drop_index-2025-09-15.log +23 -0
- package/logs/drop_index-error-2025-09-12.log +11 -0
- package/logs/drop_index-error-2025-09-15.log +5 -0
- package/logs/find-2025-09-12.log +1050 -0
- package/logs/find-2025-09-15.log +592 -0
- package/logs/find-error-2025-09-12.log +1 -0
- package/logs/find-error-2025-09-15.log +0 -0
- package/logs/find_one-2025-09-12.log +425 -0
- package/logs/find_one-2025-09-15.log +264 -0
- package/logs/find_one-error-2025-09-12.log +5 -0
- package/logs/find_one-error-2025-09-15.log +0 -0
- package/logs/get_indexes-2025-09-12.log +84 -0
- package/logs/get_indexes-2025-09-15.log +56 -0
- package/logs/get_indexes-error-2025-09-12.log +6 -0
- package/logs/get_indexes-error-2025-09-15.log +0 -0
- package/logs/http_server-2025-09-12.log +2772 -0
- package/logs/http_server-2025-09-15.log +1276 -0
- package/logs/http_server-error-2025-09-12.log +212 -0
- package/logs/http_server-error-2025-09-15.log +44 -0
- package/logs/index_manager-2025-09-12.log +5031 -0
- package/logs/index_manager-2025-09-15.log +2909 -0
- package/logs/index_manager-error-2025-09-12.log +80 -0
- package/logs/index_manager-error-2025-09-15.log +38 -0
- package/logs/insert_one-2025-09-12.log +2181 -0
- package/logs/insert_one-2025-09-15.log +1293 -0
- package/logs/insert_one-error-2025-09-12.log +0 -0
- package/logs/insert_one-error-2025-09-15.log +0 -0
- package/logs/master-2025-09-12.log +1882 -0
- package/logs/master-2025-09-15.log +910 -0
- package/logs/master-error-2025-09-12.log +80 -0
- package/logs/master-error-2025-09-15.log +0 -0
- package/logs/operation_dispatcher-2025-09-12.log +751 -0
- package/logs/operation_dispatcher-2025-09-15.log +359 -0
- package/logs/operation_dispatcher-error-2025-09-12.log +33 -0
- package/logs/operation_dispatcher-error-2025-09-15.log +11 -0
- package/logs/performance_monitor-2025-09-12.log +14889 -0
- package/logs/performance_monitor-2025-09-15.log +6803 -0
- package/logs/performance_monitor-error-2025-09-12.log +0 -0
- package/logs/performance_monitor-error-2025-09-15.log +0 -0
- package/logs/query_engine-2025-09-12.log +5310 -0
- package/logs/query_engine-2025-09-15.log +2639 -0
- package/logs/query_engine-error-2025-09-12.log +0 -0
- package/logs/query_engine-error-2025-09-15.log +0 -0
- package/logs/recovery_manager-2025-09-12.log +462 -0
- package/logs/recovery_manager-2025-09-15.log +210 -0
- package/logs/recovery_manager-error-2025-09-12.log +22 -0
- package/logs/recovery_manager-error-2025-09-15.log +10 -0
- package/logs/replication-2025-09-12.log +1923 -0
- package/logs/replication-2025-09-15.log +917 -0
- package/logs/replication-error-2025-09-12.log +33 -0
- package/logs/replication-error-2025-09-15.log +15 -0
- package/logs/server-2025-09-12.log +2601 -0
- package/logs/server-2025-09-15.log +1191 -0
- package/logs/server-error-2025-09-12.log +0 -0
- package/logs/server-error-2025-09-15.log +0 -0
- package/logs/tcp_protocol-2025-09-12.log +22 -0
- package/logs/tcp_protocol-2025-09-15.log +10 -0
- package/logs/tcp_protocol-error-2025-09-12.log +22 -0
- package/logs/tcp_protocol-error-2025-09-15.log +10 -0
- package/logs/test-2025-09-12.log +0 -0
- package/logs/test-2025-09-15.log +0 -0
- package/logs/test-error-2025-09-12.log +0 -0
- package/logs/test-error-2025-09-15.log +0 -0
- package/logs/update_one-2025-09-12.log +173 -0
- package/logs/update_one-2025-09-15.log +118 -0
- package/logs/update_one-error-2025-09-12.log +0 -0
- package/logs/update_one-error-2025-09-15.log +0 -0
- package/logs/worker-2025-09-12.log +1457 -0
- package/logs/worker-2025-09-15.log +695 -0
- package/logs/worker-error-2025-09-12.log +0 -0
- package/logs/worker-error-2025-09-15.log +0 -0
- package/logs/write_forwarder-2025-09-12.log +1956 -0
- package/logs/write_forwarder-2025-09-15.log +932 -0
- package/logs/write_forwarder-error-2025-09-12.log +66 -0
- package/logs/write_forwarder-error-2025-09-15.log +30 -0
- package/logs/write_queue-2025-09-12.log +612 -0
- package/logs/write_queue-2025-09-15.log +301 -0
- package/logs/write_queue-error-2025-09-12.log +184 -0
- package/logs/write_queue-error-2025-09-15.log +83 -0
- package/package.json +48 -0
- package/prompts/01-core-infrastructure.md +56 -0
- package/prompts/02-secondary-indexing.md +65 -0
- package/prompts/03-write-serialization.md +63 -0
- package/prompts/04-enhanced-authentication.md +75 -0
- package/prompts/05-comprehensive-admin-operations.md +75 -0
- package/prompts/06-backup-and-restore-system.md +106 -0
- package/prompts/07-production-safety-features.md +107 -0
- package/prompts/08-tcp-client-library.md +121 -0
- package/prompts/09-api-method-chaining.md +134 -0
- package/prompts/10-automatic-index-creation.md +223 -0
- package/prompts/11-operation-naming-consistency.md +268 -0
- package/prompts/12-tcp-replication-system.md +333 -0
- package/prompts/13-master-read-write-operations.md +57 -0
- package/prompts/14-index-upsert-operations.md +68 -0
- package/prompts/15-client-api-return-types.md +81 -0
- package/prompts/16-server-setup-ui.md +97 -0
- package/prompts/17-emergency-password-change.md +108 -0
- package/prompts/18-joystick-framework-integration.md +116 -0
- package/prompts/19-api-key-authentication-system.md +137 -0
- package/prompts/20-configurable-server-port.md +105 -0
- package/prompts/21-multi-database-support.md +161 -0
- package/prompts/FULL_TEXT_SEARCH.md +293 -0
- package/prompts/PROMPTS.md +158 -0
- package/prompts/README.md +221 -0
- package/prompts/TYPESCRIPT_GENERATION.md +179 -0
- package/src/client/database.js +166 -0
- package/src/client/index.js +752 -0
- package/src/server/cluster/index.js +53 -0
- package/src/server/cluster/master.js +774 -0
- package/src/server/cluster/worker.js +537 -0
- package/src/server/index.js +540 -0
- package/src/server/lib/api_key_manager.js +473 -0
- package/src/server/lib/auth_manager.js +375 -0
- package/src/server/lib/auto_index_manager.js +681 -0
- package/src/server/lib/backup_manager.js +650 -0
- package/src/server/lib/connection_manager.js +218 -0
- package/src/server/lib/disk_utils.js +118 -0
- package/src/server/lib/http_server.js +1165 -0
- package/src/server/lib/index_manager.js +756 -0
- package/src/server/lib/load_settings.js +143 -0
- package/src/server/lib/logger.js +135 -0
- package/src/server/lib/op_types.js +29 -0
- package/src/server/lib/operation_dispatcher.js +268 -0
- package/src/server/lib/operations/admin.js +808 -0
- package/src/server/lib/operations/bulk_write.js +367 -0
- package/src/server/lib/operations/create_index.js +68 -0
- package/src/server/lib/operations/delete_one.js +114 -0
- package/src/server/lib/operations/drop_index.js +58 -0
- package/src/server/lib/operations/find.js +340 -0
- package/src/server/lib/operations/find_one.js +319 -0
- package/src/server/lib/operations/get_indexes.js +52 -0
- package/src/server/lib/operations/insert_one.js +113 -0
- package/src/server/lib/operations/update_one.js +225 -0
- package/src/server/lib/performance_monitor.js +313 -0
- package/src/server/lib/query_engine.js +243 -0
- package/src/server/lib/recovery_manager.js +388 -0
- package/src/server/lib/replication_manager.js +727 -0
- package/src/server/lib/safe_json_parse.js +21 -0
- package/src/server/lib/send_response.js +47 -0
- package/src/server/lib/tcp_protocol.js +130 -0
- package/src/server/lib/write_forwarder.js +636 -0
- package/src/server/lib/write_queue.js +335 -0
- package/test_data/data.mdb +0 -0
- package/test_data/lock.mdb +0 -0
- package/tests/client/index.test.js +1232 -0
- package/tests/server/cluster/cluster.test.js +248 -0
- package/tests/server/cluster/master_read_write_operations.test.js +577 -0
- package/tests/server/index.test.js +651 -0
- package/tests/server/integration/authentication_integration.test.js +294 -0
- package/tests/server/integration/auto_indexing_integration.test.js +268 -0
- package/tests/server/integration/backup_integration.test.js +513 -0
- package/tests/server/integration/indexing_integration.test.js +126 -0
- package/tests/server/integration/production_safety_integration.test.js +358 -0
- package/tests/server/integration/replication_integration.test.js +227 -0
- package/tests/server/integration/write_serialization_integration.test.js +246 -0
- package/tests/server/lib/api_key_manager.test.js +516 -0
- package/tests/server/lib/auth_manager.test.js +317 -0
- package/tests/server/lib/auto_index_manager.test.js +275 -0
- package/tests/server/lib/backup_manager.test.js +238 -0
- package/tests/server/lib/connection_manager.test.js +221 -0
- package/tests/server/lib/disk_utils.test.js +63 -0
- package/tests/server/lib/http_server.test.js +389 -0
- package/tests/server/lib/index_manager.test.js +301 -0
- package/tests/server/lib/load_settings.test.js +107 -0
- package/tests/server/lib/load_settings_port_config.test.js +243 -0
- package/tests/server/lib/logger.test.js +282 -0
- package/tests/server/lib/operations/admin.test.js +638 -0
- package/tests/server/lib/operations/bulk_write.test.js +128 -0
- package/tests/server/lib/operations/create_index.test.js +138 -0
- package/tests/server/lib/operations/delete_one.test.js +52 -0
- package/tests/server/lib/operations/drop_index.test.js +72 -0
- package/tests/server/lib/operations/find.test.js +93 -0
- package/tests/server/lib/operations/find_one.test.js +91 -0
- package/tests/server/lib/operations/get_indexes.test.js +87 -0
- package/tests/server/lib/operations/insert_one.test.js +42 -0
- package/tests/server/lib/operations/update_one.test.js +89 -0
- package/tests/server/lib/performance_monitor.test.js +185 -0
- package/tests/server/lib/query_engine.test.js +46 -0
- package/tests/server/lib/recovery_manager.test.js +414 -0
- package/tests/server/lib/replication_manager.test.js +202 -0
- package/tests/server/lib/safe_json_parse.test.js +45 -0
- package/tests/server/lib/send_response.test.js +155 -0
- package/tests/server/lib/tcp_protocol.test.js +169 -0
- package/tests/server/lib/write_forwarder.test.js +258 -0
- package/tests/server/lib/write_queue.test.js +255 -0
- package/tsconfig.json +30 -0
- package/types/client/index.d.ts +447 -0
- package/types/server/cluster/index.d.ts +28 -0
- package/types/server/cluster/master.d.ts +115 -0
- package/types/server/cluster/worker.d.ts +1 -0
- package/types/server/lib/auth_manager.d.ts +13 -0
- package/types/server/lib/backup_manager.d.ts +43 -0
- package/types/server/lib/connection_manager.d.ts +15 -0
- package/types/server/lib/disk_utils.d.ts +3 -0
- package/types/server/lib/index_manager.d.ts +24 -0
- package/types/server/lib/load_settings.d.ts +4 -0
- package/types/server/lib/logger.d.ts +44 -0
- package/types/server/lib/op_types.d.ts +6 -0
- package/types/server/lib/performance_monitor.d.ts +68 -0
- package/types/server/lib/query_engine.d.ts +10 -0
- package/types/server/lib/safe_json_parse.d.ts +7 -0
- package/types/server/lib/send_response.d.ts +3 -0
- package/types/server/lib/tcp_protocol.d.ts +12 -0
- 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,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;
|