@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,179 @@
|
|
|
1
|
+
# TypeScript Definition Generation from JSDoc
|
|
2
|
+
|
|
3
|
+
This document explains how to generate TypeScript definition files (.d.ts) from the JSDoc comments in the JoystickDB project.
|
|
4
|
+
|
|
5
|
+
## Prerequisites
|
|
6
|
+
|
|
7
|
+
Make sure you have TypeScript installed as a dev dependency:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install --save-dev typescript
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Configuration Files
|
|
14
|
+
|
|
15
|
+
### tsconfig.json
|
|
16
|
+
The TypeScript configuration file is set up to:
|
|
17
|
+
- Allow JavaScript files (`allowJs: true`)
|
|
18
|
+
- Generate only declaration files (`emitDeclarationOnly: true`)
|
|
19
|
+
- Output to the `./types` directory
|
|
20
|
+
- Include all files in `src/**/*.js`
|
|
21
|
+
- Exclude test files and node_modules
|
|
22
|
+
|
|
23
|
+
### package.json Scripts
|
|
24
|
+
Three npm scripts are available for type generation:
|
|
25
|
+
|
|
26
|
+
```json
|
|
27
|
+
{
|
|
28
|
+
"build:types": "tsc --declaration --emitDeclarationOnly --allowJs --outDir types src/**/*.js",
|
|
29
|
+
"build:types:client": "tsc --declaration --emitDeclarationOnly --allowJs --outDir types/client src/client/*.js",
|
|
30
|
+
"build:types:server": "tsc --declaration --emitDeclarationOnly --allowJs --outDir types/server src/server/**/*.js"
|
|
31
|
+
}
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Generating TypeScript Definitions
|
|
35
|
+
|
|
36
|
+
### Generate All Types
|
|
37
|
+
```bash
|
|
38
|
+
npm run build:types
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Generate Client Types Only
|
|
42
|
+
```bash
|
|
43
|
+
npm run build:types:client
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Generate Server Types Only
|
|
47
|
+
```bash
|
|
48
|
+
npm run build:types:server
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Manual Generation
|
|
52
|
+
You can also run TypeScript compiler directly:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# Generate all types
|
|
56
|
+
npx tsc
|
|
57
|
+
|
|
58
|
+
# Generate specific files
|
|
59
|
+
npx tsc --declaration --emitDeclarationOnly --allowJs --outDir types src/client/index.js
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Output Structure
|
|
63
|
+
|
|
64
|
+
After running the type generation, you'll find the TypeScript definition files in the `types/` directory:
|
|
65
|
+
|
|
66
|
+
```
|
|
67
|
+
types/
|
|
68
|
+
├── client/
|
|
69
|
+
│ └── index.d.ts # Client library types
|
|
70
|
+
└── server/
|
|
71
|
+
├── index.d.ts # Main server types
|
|
72
|
+
├── cluster/
|
|
73
|
+
│ ├── index.d.ts # Cluster management types
|
|
74
|
+
│ └── master.d.ts # Cluster master types
|
|
75
|
+
└── lib/
|
|
76
|
+
├── logger.d.ts # Logger types
|
|
77
|
+
├── tcp_protocol.d.ts # TCP protocol types
|
|
78
|
+
└── operations/
|
|
79
|
+
├── insert_one.d.ts # Insert operation types
|
|
80
|
+
├── find_one.d.ts # Find operation types
|
|
81
|
+
└── ... # Other operation types
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## Using the Generated Types
|
|
85
|
+
|
|
86
|
+
### In TypeScript Projects
|
|
87
|
+
```typescript
|
|
88
|
+
import { JoystickDBClient, ClientOptions } from './types/client/index.js';
|
|
89
|
+
|
|
90
|
+
const client: JoystickDBClient = joystickdb.client({
|
|
91
|
+
host: 'localhost',
|
|
92
|
+
port: 1983,
|
|
93
|
+
authentication: {
|
|
94
|
+
password: 'your-password'
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### In JavaScript Projects with JSDoc
|
|
100
|
+
```javascript
|
|
101
|
+
/**
|
|
102
|
+
* @typedef {import('./types/client/index.js').ClientOptions} ClientOptions
|
|
103
|
+
* @typedef {import('./types/client/index.js').JoystickDBClient} JoystickDBClient
|
|
104
|
+
*/
|
|
105
|
+
|
|
106
|
+
/** @type {ClientOptions} */
|
|
107
|
+
const options = {
|
|
108
|
+
host: 'localhost',
|
|
109
|
+
port: 1983
|
|
110
|
+
};
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Troubleshooting
|
|
114
|
+
|
|
115
|
+
### Common Issues
|
|
116
|
+
|
|
117
|
+
1. **"No inputs were found" error**: Make sure your JavaScript files have proper JSDoc comments and are in the correct directories.
|
|
118
|
+
|
|
119
|
+
2. **Import/Export issues**: Ensure your JavaScript files use proper ES module syntax (`import`/`export`).
|
|
120
|
+
|
|
121
|
+
3. **Missing types**: Check that your JSDoc comments use proper syntax:
|
|
122
|
+
- `@param {Type} name - description`
|
|
123
|
+
- `@returns {Type} description`
|
|
124
|
+
- `@typedef {Object} TypeName`
|
|
125
|
+
|
|
126
|
+
### Validating Generated Types
|
|
127
|
+
|
|
128
|
+
You can validate the generated types by creating a test TypeScript file:
|
|
129
|
+
|
|
130
|
+
```typescript
|
|
131
|
+
// test-types.ts
|
|
132
|
+
import { JoystickDBClient } from './types/client/index.js';
|
|
133
|
+
|
|
134
|
+
// This should compile without errors if types are correct
|
|
135
|
+
const client = new JoystickDBClient({
|
|
136
|
+
host: 'localhost',
|
|
137
|
+
port: 1983
|
|
138
|
+
});
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
Then compile it:
|
|
142
|
+
```bash
|
|
143
|
+
npx tsc test-types.ts --noEmit
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Continuous Integration
|
|
147
|
+
|
|
148
|
+
Add type generation to your CI/CD pipeline:
|
|
149
|
+
|
|
150
|
+
```yaml
|
|
151
|
+
# .github/workflows/ci.yml
|
|
152
|
+
- name: Generate TypeScript definitions
|
|
153
|
+
run: npm run build:types
|
|
154
|
+
|
|
155
|
+
- name: Validate generated types
|
|
156
|
+
run: npx tsc --noEmit types/**/*.d.ts
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Updating Types
|
|
160
|
+
|
|
161
|
+
When you modify JSDoc comments in your source files:
|
|
162
|
+
|
|
163
|
+
1. Run the type generation script again
|
|
164
|
+
2. Commit the updated `.d.ts` files to version control
|
|
165
|
+
3. Update version numbers if publishing to npm
|
|
166
|
+
|
|
167
|
+
## Publishing Types
|
|
168
|
+
|
|
169
|
+
If publishing to npm, include the types in your package.json:
|
|
170
|
+
|
|
171
|
+
```json
|
|
172
|
+
{
|
|
173
|
+
"main": "src/server/index.js",
|
|
174
|
+
"types": "types/server/index.d.ts",
|
|
175
|
+
"files": [
|
|
176
|
+
"src/",
|
|
177
|
+
"types/"
|
|
178
|
+
]
|
|
179
|
+
}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Database interface for method chaining operations.
|
|
3
|
+
* Provides a fluent API for database-level operations and collection access.
|
|
4
|
+
*/
|
|
5
|
+
class Database {
|
|
6
|
+
/**
|
|
7
|
+
* Creates a new Database instance.
|
|
8
|
+
* @param {JoystickDBClient} client - The client instance
|
|
9
|
+
* @param {string} database_name - Name of the database
|
|
10
|
+
*/
|
|
11
|
+
constructor(client, database_name) {
|
|
12
|
+
this.client = client;
|
|
13
|
+
this.database_name = database_name;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Returns a collection interface for method chaining operations.
|
|
18
|
+
* @param {string} collection_name - Collection name
|
|
19
|
+
* @returns {Collection} Collection interface instance
|
|
20
|
+
*/
|
|
21
|
+
collection(collection_name) {
|
|
22
|
+
// NOTE: Import Collection class dynamically to avoid circular dependency.
|
|
23
|
+
const Collection = this.client.constructor.Collection;
|
|
24
|
+
return new Collection(this.client, this.database_name, collection_name);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Lists all collections in the database.
|
|
29
|
+
* @returns {Promise<Object>} Collections list
|
|
30
|
+
*/
|
|
31
|
+
async list_collections() {
|
|
32
|
+
return this.client.send_request('admin', {
|
|
33
|
+
admin_action: 'list_collections',
|
|
34
|
+
database: this.database_name
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Gets database-specific statistics.
|
|
40
|
+
* @returns {Promise<Object>} Database statistics
|
|
41
|
+
*/
|
|
42
|
+
async get_stats() {
|
|
43
|
+
return this.client.send_request('admin', {
|
|
44
|
+
admin_action: 'get_database_stats',
|
|
45
|
+
database: this.database_name
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Drops the entire database (admin operation).
|
|
51
|
+
* @returns {Promise<Object>} Drop database result
|
|
52
|
+
*/
|
|
53
|
+
async drop_database() {
|
|
54
|
+
return this.client.send_request('admin', {
|
|
55
|
+
admin_action: 'drop_database',
|
|
56
|
+
database: this.database_name
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Explicitly creates a collection in the database.
|
|
62
|
+
* @param {string} collection_name - Name of collection to create
|
|
63
|
+
* @param {Object} [options={}] - Collection creation options
|
|
64
|
+
* @returns {Promise<Object>} Create collection result
|
|
65
|
+
*/
|
|
66
|
+
async create_collection(collection_name, options = {}) {
|
|
67
|
+
return this.client.send_request('admin', {
|
|
68
|
+
admin_action: 'create_collection',
|
|
69
|
+
database: this.database_name,
|
|
70
|
+
collection: collection_name,
|
|
71
|
+
options
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Lists all documents in a collection (admin operation).
|
|
77
|
+
* @param {string} collection_name - Name of collection
|
|
78
|
+
* @returns {Promise<Object>} List documents result
|
|
79
|
+
*/
|
|
80
|
+
async list_documents(collection_name) {
|
|
81
|
+
return this.client.send_request('admin', {
|
|
82
|
+
admin_action: 'list_documents',
|
|
83
|
+
database: this.database_name,
|
|
84
|
+
collection: collection_name
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Gets a specific document by ID (admin operation).
|
|
90
|
+
* @param {string} collection_name - Name of collection
|
|
91
|
+
* @param {string} document_id - Document ID
|
|
92
|
+
* @returns {Promise<Object>} Get document result
|
|
93
|
+
*/
|
|
94
|
+
async get_document(collection_name, document_id) {
|
|
95
|
+
return this.client.send_request('admin', {
|
|
96
|
+
admin_action: 'get_document',
|
|
97
|
+
database: this.database_name,
|
|
98
|
+
collection: collection_name,
|
|
99
|
+
document_id
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Queries documents in a collection (admin operation).
|
|
105
|
+
* @param {string} collection_name - Name of collection
|
|
106
|
+
* @param {Object} filter - Query filter
|
|
107
|
+
* @returns {Promise<Object>} Query documents result
|
|
108
|
+
*/
|
|
109
|
+
async query_documents(collection_name, filter) {
|
|
110
|
+
return this.client.send_request('admin', {
|
|
111
|
+
admin_action: 'query_documents',
|
|
112
|
+
database: this.database_name,
|
|
113
|
+
collection: collection_name,
|
|
114
|
+
filter
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Inserts a document into a collection (admin operation).
|
|
120
|
+
* @param {string} collection_name - Name of collection
|
|
121
|
+
* @param {Object} document - Document to insert
|
|
122
|
+
* @returns {Promise<Object>} Insert document result
|
|
123
|
+
*/
|
|
124
|
+
async insert_document(collection_name, document) {
|
|
125
|
+
return this.client.send_request('admin', {
|
|
126
|
+
admin_action: 'insert_document',
|
|
127
|
+
database: this.database_name,
|
|
128
|
+
collection: collection_name,
|
|
129
|
+
document
|
|
130
|
+
});
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Updates a document in a collection (admin operation).
|
|
135
|
+
* @param {string} collection_name - Name of collection
|
|
136
|
+
* @param {string} document_id - Document ID
|
|
137
|
+
* @param {Object} update - Update operations
|
|
138
|
+
* @returns {Promise<Object>} Update document result
|
|
139
|
+
*/
|
|
140
|
+
async update_document(collection_name, document_id, update) {
|
|
141
|
+
return this.client.send_request('admin', {
|
|
142
|
+
admin_action: 'update_document',
|
|
143
|
+
database: this.database_name,
|
|
144
|
+
collection: collection_name,
|
|
145
|
+
document_id,
|
|
146
|
+
update
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Deletes a document from a collection (admin operation).
|
|
152
|
+
* @param {string} collection_name - Name of collection
|
|
153
|
+
* @param {string} document_id - Document ID
|
|
154
|
+
* @returns {Promise<Object>} Delete document result
|
|
155
|
+
*/
|
|
156
|
+
async delete_document(collection_name, document_id) {
|
|
157
|
+
return this.client.send_request('admin', {
|
|
158
|
+
admin_action: 'delete_document',
|
|
159
|
+
database: this.database_name,
|
|
160
|
+
collection: collection_name,
|
|
161
|
+
document_id
|
|
162
|
+
});
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
export default Database;
|