@joystick.js/cli-canary 0.0.0-canary.172 → 0.0.0-canary.1721
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 +1 -1
- package/.build/index.js +5 -3
- package/LICENSE.md +59 -0
- package/README.md +45 -4
- package/dist/cli.js +2 -76
- package/dist/cli.js.map +7 -0
- package/dist/commands/build/definition.js +2 -0
- package/dist/commands/build/definition.js.map +7 -0
- package/dist/commands/build/index.js +2 -0
- package/dist/commands/build/index.js.map +7 -0
- package/dist/commands/create/build_package_json.js +2 -0
- package/dist/commands/create/build_package_json.js.map +7 -0
- package/dist/commands/create/definition.js +2 -0
- package/dist/commands/create/definition.js.map +7 -0
- package/dist/commands/create/index.js +3 -0
- package/dist/commands/create/index.js.map +7 -0
- package/dist/commands/create/template/api/index.js +6 -0
- package/dist/commands/create/template/email/base.css +9 -0
- package/dist/commands/create/template/email/base.html +10 -0
- package/dist/commands/create/template/email/reset_password.js +20 -0
- package/dist/commands/create/template/i18n/en-US.js +14 -0
- package/dist/commands/create/template/index.client.js +1 -0
- package/dist/commands/create/template/index.css +34 -0
- package/dist/{functions/create/templates → commands/create/template}/index.html +2 -3
- package/dist/{functions/create/templates → commands/create/template}/index.server.js +6 -6
- package/dist/commands/create/template/public/apple-touch-icon-152x152.png +0 -0
- package/dist/commands/create/template/public/favicon.ico +0 -0
- package/dist/commands/create/template/public/joystick_logo.webp +0 -0
- package/dist/{functions/create/templates → commands/create/template}/public/manifest.json +4 -4
- package/dist/commands/create/template/public/splash-screen-1024x1024.png +0 -0
- package/{src/functions/create/templates → dist/commands/create/template}/ui/components/button/index.js +14 -6
- package/{src/functions/create/templates → dist/commands/create/template}/ui/layouts/app/index.js +2 -2
- package/dist/commands/create/template/ui/pages/error/index.js +50 -0
- package/dist/commands/create/template/ui/pages/index/index.js +121 -0
- package/dist/commands/help/definition.js +2 -0
- package/dist/commands/help/definition.js.map +7 -0
- package/dist/commands/help/index.js +20 -0
- package/dist/commands/help/index.js.map +7 -0
- package/dist/commands/index.js +2 -0
- package/dist/commands/index.js.map +7 -0
- package/dist/commands/logout/definition.js +2 -0
- package/dist/commands/logout/definition.js.map +7 -0
- package/dist/commands/logout/index.js +4 -0
- package/dist/commands/logout/index.js.map +7 -0
- package/dist/commands/push/cdn_mirrors.js +2 -0
- package/dist/commands/push/cdn_mirrors.js.map +7 -0
- package/dist/commands/push/check_if_settings_valid.js +2 -0
- package/dist/commands/push/check_if_settings_valid.js.map +7 -0
- package/dist/commands/push/create_version.js +2 -0
- package/dist/commands/push/create_version.js.map +7 -0
- package/dist/commands/push/definition.js +2 -0
- package/dist/commands/push/definition.js.map +7 -0
- package/dist/commands/push/get_app_domain.js +2 -0
- package/dist/commands/push/get_app_domain.js.map +7 -0
- package/dist/commands/push/get_deployment.js +2 -0
- package/dist/commands/push/get_deployment.js.map +7 -0
- package/dist/commands/push/get_provision_domain.js +2 -0
- package/dist/commands/push/get_provision_domain.js.map +7 -0
- package/dist/commands/push/get_session_token.js +2 -0
- package/dist/commands/push/get_session_token.js.map +7 -0
- package/dist/commands/push/get_settings_file.js +2 -0
- package/dist/commands/push/get_settings_file.js.map +7 -0
- package/dist/commands/push/handle_initial_deployment.js +2 -0
- package/dist/commands/push/handle_initial_deployment.js.map +7 -0
- package/dist/commands/push/handle_version_deployment.js +2 -0
- package/dist/commands/push/handle_version_deployment.js.map +7 -0
- package/dist/commands/push/index.js +9 -0
- package/dist/commands/push/index.js.map +7 -0
- package/dist/commands/push/prompts/confirm_deployment.js +18 -0
- package/dist/commands/push/prompts/confirm_deployment.js.map +7 -0
- package/dist/commands/push/prompts/session_token.js +6 -0
- package/dist/commands/push/prompts/session_token.js.map +7 -0
- package/dist/commands/push/upload_build_to_cdn.js +2 -0
- package/dist/commands/push/upload_build_to_cdn.js.map +7 -0
- package/dist/commands/push/validate_deployment.js +2 -0
- package/dist/commands/push/validate_deployment.js.map +7 -0
- package/dist/commands/push/validate_push_config.js +2 -0
- package/dist/commands/push/validate_push_config.js.map +7 -0
- package/dist/commands/push_v2/Dockerfile +47 -0
- package/dist/commands/push_v2/build_docker_image.js +2 -0
- package/dist/commands/push_v2/build_docker_image.js.map +7 -0
- package/dist/commands/push_v2/cdn_mirrors.js +2 -0
- package/dist/commands/push_v2/cdn_mirrors.js.map +7 -0
- package/dist/commands/push_v2/check_if_settings_valid.js +2 -0
- package/dist/commands/push_v2/check_if_settings_valid.js.map +7 -0
- package/dist/commands/push_v2/create_version.js +2 -0
- package/dist/commands/push_v2/create_version.js.map +7 -0
- package/dist/commands/push_v2/definition.js +2 -0
- package/dist/commands/push_v2/definition.js.map +7 -0
- package/dist/commands/push_v2/get_app_domain.js +2 -0
- package/dist/commands/push_v2/get_app_domain.js.map +7 -0
- package/dist/commands/push_v2/get_deployment.js +2 -0
- package/dist/commands/push_v2/get_deployment.js.map +7 -0
- package/dist/commands/push_v2/get_deployment_token.js +2 -0
- package/dist/commands/push_v2/get_deployment_token.js.map +7 -0
- package/dist/commands/push_v2/get_push_domain.js +2 -0
- package/dist/commands/push_v2/get_push_domain.js.map +7 -0
- package/dist/commands/push_v2/get_settings_file.js +2 -0
- package/dist/commands/push_v2/get_settings_file.js.map +7 -0
- package/dist/commands/push_v2/handle_initial_deployment.js +2 -0
- package/dist/commands/push_v2/handle_initial_deployment.js.map +7 -0
- package/dist/commands/push_v2/handle_version_deployment.js +2 -0
- package/dist/commands/push_v2/handle_version_deployment.js.map +7 -0
- package/dist/commands/push_v2/index.js +6 -0
- package/dist/commands/push_v2/index.js.map +7 -0
- package/dist/commands/push_v2/prompts/confirm_deployment.js +18 -0
- package/dist/commands/push_v2/prompts/confirm_deployment.js.map +7 -0
- package/dist/commands/push_v2/prompts/session_token.js +6 -0
- package/dist/commands/push_v2/prompts/session_token.js.map +7 -0
- package/dist/commands/push_v2/upload_build_to_push.js +2 -0
- package/dist/commands/push_v2/upload_build_to_push.js.map +7 -0
- package/dist/commands/push_v2/validate_deployment.js +2 -0
- package/dist/commands/push_v2/validate_deployment.js.map +7 -0
- package/dist/commands/push_v2/validate_push_config.js +2 -0
- package/dist/commands/push_v2/validate_push_config.js.map +7 -0
- package/dist/commands/start/definition.js +2 -0
- package/dist/commands/start/definition.js.map +7 -0
- package/dist/commands/start/index.js +2 -0
- package/dist/commands/start/index.js.map +7 -0
- package/dist/commands/test/definition.js +2 -0
- package/dist/commands/test/definition.js.map +7 -0
- package/dist/commands/test/index.js +2 -0
- package/dist/commands/test/index.js.map +7 -0
- package/dist/commands/update/definition.js +2 -0
- package/dist/commands/update/definition.js.map +7 -0
- package/dist/commands/update/index.js +2 -0
- package/dist/commands/update/index.js.map +7 -0
- package/dist/commands/use/definition.js +2 -0
- package/dist/commands/use/definition.js.map +7 -0
- package/dist/commands/use/index.js +2 -0
- package/dist/commands/use/index.js.map +7 -0
- package/dist/index.js +2 -7
- package/dist/index.js.map +7 -0
- package/dist/lib/build/browser_path_exclusions.js +2 -0
- package/dist/lib/build/browser_path_exclusions.js.map +7 -0
- package/dist/lib/build/browser_paths.js +2 -0
- package/dist/lib/build/browser_paths.js.map +7 -0
- package/dist/lib/build/build_files.js +4 -0
- package/dist/lib/build/build_files.js.map +7 -0
- package/dist/lib/build/copy_paths.js +2 -0
- package/dist/lib/build/copy_paths.js.map +7 -0
- package/dist/lib/build/get_code_frame.js +2 -0
- package/dist/lib/build/get_code_frame.js.map +7 -0
- package/dist/lib/build/get_file_operation.js +2 -0
- package/dist/lib/build/get_file_operation.js.map +7 -0
- package/dist/lib/build/get_files_to_build.js +2 -0
- package/dist/lib/build/get_files_to_build.js.map +7 -0
- package/dist/lib/build/get_path_platform.js +2 -0
- package/dist/lib/build/get_path_platform.js.map +7 -0
- package/dist/lib/build/get_platform_safe_path.js +2 -0
- package/dist/lib/build/get_platform_safe_path.js.map +7 -0
- package/dist/lib/build/get_tar_ignore_list.js +3 -0
- package/dist/lib/build/get_tar_ignore_list.js.map +7 -0
- package/dist/lib/build/index.js +4 -0
- package/dist/lib/build/index.js.map +7 -0
- package/dist/lib/build/master_ignore_list.js +2 -0
- package/dist/lib/build/master_ignore_list.js.map +7 -0
- package/dist/lib/build/minify_file.js +2 -0
- package/dist/lib/build/minify_file.js.map +7 -0
- package/dist/lib/build/node_paths.js +2 -0
- package/dist/lib/build/node_paths.js.map +7 -0
- package/dist/lib/build/on_warn.js +11 -0
- package/dist/lib/build/on_warn.js.map +7 -0
- package/dist/lib/build/plugins/bootstrap_component.js +34 -0
- package/dist/lib/build/plugins/bootstrap_component.js.map +7 -0
- package/dist/lib/build/plugins/generate_file_dependency_map.js +2 -0
- package/dist/lib/build/plugins/generate_file_dependency_map.js.map +7 -0
- package/dist/lib/build/plugins/index.js +2 -0
- package/dist/lib/build/plugins/index.js.map +7 -0
- package/dist/lib/build/plugins/set_component_id.js +3 -0
- package/dist/lib/build/plugins/set_component_id.js.map +7 -0
- package/dist/lib/build/plugins/update_file_map.js +2 -0
- package/dist/lib/build/plugins/update_file_map.js.map +7 -0
- package/dist/lib/build/plugins/warn_node_environment.js +4 -0
- package/dist/lib/build/plugins/warn_node_environment.js.map +7 -0
- package/dist/lib/cli_log.js +14 -0
- package/dist/lib/cli_log.js.map +7 -0
- package/dist/lib/color_log.js +2 -0
- package/dist/lib/color_log.js.map +7 -0
- package/dist/lib/command_exists.js +2 -0
- package/dist/lib/command_exists.js.map +7 -0
- package/dist/lib/constants.js +2 -4
- package/dist/lib/constants.js.map +7 -0
- package/dist/lib/debounce.js +2 -0
- package/dist/lib/debounce.js.map +7 -0
- package/dist/lib/decrypt_buffer.js +2 -0
- package/dist/lib/decrypt_buffer.js.map +7 -0
- package/dist/lib/development_server/ava_config.js +2 -0
- package/dist/lib/development_server/ava_config.js.map +7 -0
- package/dist/lib/development_server/check_if_port_occupied.js +2 -0
- package/dist/lib/development_server/check_if_port_occupied.js.map +7 -0
- package/dist/lib/development_server/cleanup.js +2 -0
- package/dist/lib/development_server/cleanup.js.map +7 -0
- package/dist/lib/development_server/databases/download_database_binary.js +2 -0
- package/dist/lib/development_server/databases/download_database_binary.js.map +7 -0
- package/dist/lib/development_server/databases/mongodb/available_query_parameters.js +2 -0
- package/dist/lib/development_server/databases/mongodb/available_query_parameters.js.map +7 -0
- package/dist/lib/development_server/databases/mongodb/build_connection_string.js +2 -0
- package/dist/lib/development_server/databases/mongodb/build_connection_string.js.map +7 -0
- package/dist/lib/development_server/databases/mongodb/build_query_parameters.js +2 -0
- package/dist/lib/development_server/databases/mongodb/build_query_parameters.js.map +7 -0
- package/dist/lib/development_server/databases/mongodb/check_connection.js +3 -0
- package/dist/lib/development_server/databases/mongodb/check_connection.js.map +7 -0
- package/dist/lib/development_server/databases/mongodb/connect.js +2 -0
- package/dist/lib/development_server/databases/mongodb/connect.js.map +7 -0
- package/dist/lib/development_server/databases/mongodb/index.js +2 -0
- package/dist/lib/development_server/databases/mongodb/index.js.map +7 -0
- package/dist/lib/development_server/databases/mongodb/installers/linux.js +2 -0
- package/dist/lib/development_server/databases/mongodb/installers/linux.js.map +7 -0
- package/dist/lib/development_server/databases/mongodb/installers/macos.js +2 -0
- package/dist/lib/development_server/databases/mongodb/installers/macos.js.map +7 -0
- package/dist/lib/development_server/databases/mongodb/installers/windows.js +2 -0
- package/dist/lib/development_server/databases/mongodb/installers/windows.js.map +7 -0
- package/dist/lib/development_server/databases/postgresql/check_connection.js +3 -0
- package/dist/lib/development_server/databases/postgresql/check_connection.js.map +7 -0
- package/dist/lib/development_server/databases/postgresql/connect.js +2 -0
- package/dist/lib/development_server/databases/postgresql/connect.js.map +7 -0
- package/dist/lib/development_server/databases/postgresql/index.js +3 -0
- package/dist/lib/development_server/databases/postgresql/index.js.map +7 -0
- package/dist/lib/development_server/databases/postgresql/installers/linux.js +2 -0
- package/dist/lib/development_server/databases/postgresql/installers/linux.js.map +7 -0
- package/dist/lib/development_server/databases/postgresql/installers/macos.js +2 -0
- package/dist/lib/development_server/databases/postgresql/installers/macos.js.map +7 -0
- package/dist/lib/development_server/databases/postgresql/installers/windows.js +2 -0
- package/dist/lib/development_server/databases/postgresql/installers/windows.js.map +7 -0
- package/dist/lib/development_server/databases/provider_map.js +2 -0
- package/dist/lib/development_server/databases/provider_map.js.map +7 -0
- package/dist/lib/development_server/get_database_process_ids.js +2 -0
- package/dist/lib/development_server/get_database_process_ids.js.map +7 -0
- package/dist/lib/development_server/get_translations.js +2 -0
- package/dist/lib/development_server/get_translations.js.map +7 -0
- package/dist/lib/development_server/hmr_server.js +2 -0
- package/dist/lib/development_server/hmr_server.js.map +7 -0
- package/dist/lib/development_server/index.js +11 -0
- package/dist/lib/development_server/index.js.map +7 -0
- package/dist/lib/development_server/kill_process_ids.js +2 -0
- package/dist/lib/development_server/kill_process_ids.js.map +7 -0
- package/dist/lib/development_server/run_tests.js +3 -0
- package/dist/lib/development_server/run_tests.js.map +7 -0
- package/dist/lib/development_server/start_app_server.js +2 -0
- package/dist/lib/development_server/start_app_server.js.map +7 -0
- package/dist/lib/development_server/start_databases.js +2 -0
- package/dist/lib/development_server/start_databases.js.map +7 -0
- package/dist/lib/development_server/start_hmr_server.js +2 -0
- package/dist/lib/development_server/start_hmr_server.js.map +7 -0
- package/dist/lib/development_server/watch_for_changes/browser_path_exclusions.js +2 -0
- package/dist/lib/development_server/watch_for_changes/browser_path_exclusions.js.map +7 -0
- package/dist/lib/development_server/watch_for_changes/browser_paths.js +2 -0
- package/dist/lib/development_server/watch_for_changes/browser_paths.js.map +7 -0
- package/dist/lib/development_server/watch_for_changes/get_after_run_tasks.js +2 -0
- package/dist/lib/development_server/watch_for_changes/get_after_run_tasks.js.map +7 -0
- package/dist/lib/development_server/watch_for_changes/get_file_codependencies.js +2 -0
- package/dist/lib/development_server/watch_for_changes/get_file_codependencies.js.map +7 -0
- package/dist/lib/development_server/watch_for_changes/get_platform_safe_path.js +2 -0
- package/dist/lib/development_server/watch_for_changes/get_platform_safe_path.js.map +7 -0
- package/dist/lib/development_server/watch_for_changes/index.js +2 -0
- package/dist/lib/development_server/watch_for_changes/index.js.map +7 -0
- package/dist/lib/development_server/watch_for_changes/node_paths.js +2 -0
- package/dist/lib/development_server/watch_for_changes/node_paths.js.map +7 -0
- package/dist/lib/development_server/watch_for_changes/read_file_dependency_map.js +2 -0
- package/dist/lib/development_server/watch_for_changes/read_file_dependency_map.js.map +7 -0
- package/dist/lib/development_server/watch_for_changes/watch_paths.js +2 -0
- package/dist/lib/development_server/watch_for_changes/watch_paths.js.map +7 -0
- package/dist/lib/dynamic_import.js +2 -0
- package/dist/lib/dynamic_import.js.map +7 -0
- package/dist/lib/encrypt_buffer.js +2 -0
- package/dist/lib/encrypt_buffer.js.map +7 -0
- package/dist/lib/generate_id.js +2 -0
- package/dist/lib/generate_id.js.map +7 -0
- package/dist/lib/get_files_in_path.js +2 -0
- package/dist/lib/get_files_in_path.js.map +7 -0
- package/dist/lib/get_platform_safe_path.js +2 -0
- package/dist/lib/get_platform_safe_path.js.map +7 -0
- package/dist/lib/get_process_id_from_port.js +3 -0
- package/dist/lib/get_process_id_from_port.js.map +7 -0
- package/dist/lib/is_valid_json_string.js +2 -0
- package/dist/lib/is_valid_json_string.js.map +7 -0
- package/dist/lib/kill_port_process.js +2 -0
- package/dist/lib/kill_port_process.js.map +7 -0
- package/dist/lib/kill_process_id.js +2 -0
- package/dist/lib/kill_process_id.js.map +7 -0
- package/dist/lib/load_settings.js +2 -0
- package/dist/lib/load_settings.js.map +7 -0
- package/dist/lib/loader.js +3 -82
- package/dist/lib/loader.js.map +7 -0
- package/dist/lib/log_bars.js +2 -0
- package/dist/lib/log_bars.js.map +7 -0
- package/dist/lib/node_path_polyfills.js +2 -0
- package/dist/lib/node_path_polyfills.js.map +7 -0
- package/dist/lib/parse_args.js +2 -0
- package/dist/lib/parse_args.js.map +7 -0
- package/dist/lib/parse_options.js +2 -0
- package/dist/lib/parse_options.js.map +7 -0
- package/dist/lib/path_exists.js +2 -0
- package/dist/lib/path_exists.js.map +7 -0
- package/dist/lib/rainbow_road.js +2 -0
- package/dist/lib/rainbow_road.js.map +7 -0
- package/dist/lib/replace_in_files.js +2 -0
- package/dist/lib/replace_in_files.js.map +7 -0
- package/dist/lib/required_files.js +2 -0
- package/dist/lib/required_files.js.map +7 -0
- package/dist/lib/serialize_query_parameters.js +2 -0
- package/dist/lib/serialize_query_parameters.js.map +7 -0
- package/dist/lib/types.js +2 -6
- package/dist/lib/types.js.map +7 -0
- package/dist/lib/unique_array.js +2 -0
- package/dist/lib/unique_array.js.map +7 -0
- package/increment_version.js +3 -0
- package/package.json +19 -38
- package/src/cli.js +69 -51
- package/src/commands/build/definition.js +58 -0
- package/src/commands/build/index.js +7 -0
- package/src/commands/create/build_package_json.js +20 -0
- package/src/commands/create/definition.js +35 -0
- package/src/commands/create/index.js +71 -0
- package/src/commands/create/template/api/index.js +6 -0
- package/src/commands/create/template/email/base.css +9 -0
- package/src/commands/create/template/email/base.html +10 -0
- package/src/commands/create/template/email/reset_password.js +20 -0
- package/src/commands/create/template/i18n/en-US.js +14 -0
- package/src/commands/create/template/index.client.js +1 -0
- package/src/commands/create/template/index.css +34 -0
- package/src/{functions/create/templates → commands/create/template}/index.html +2 -3
- package/src/{functions/create/templates → commands/create/template}/index.server.js +6 -6
- package/src/commands/create/template/public/apple-touch-icon-152x152.png +0 -0
- package/src/commands/create/template/public/favicon.ico +0 -0
- package/src/commands/create/template/public/joystick_logo.webp +0 -0
- package/src/{functions/create/templates → commands/create/template}/public/manifest.json +4 -4
- package/src/commands/create/template/public/splash-screen-1024x1024.png +0 -0
- package/{dist/functions/create/templates → src/commands/create/template}/ui/components/button/index.js +14 -6
- package/{dist/functions/create/templates → src/commands/create/template}/ui/layouts/app/index.js +2 -2
- package/src/commands/create/template/ui/pages/error/index.js +50 -0
- package/src/commands/create/template/ui/pages/index/index.js +121 -0
- package/src/commands/help/definition.js +12 -0
- package/src/commands/help/index.js +48 -0
- package/src/commands/index.js +25 -0
- package/src/commands/logout/definition.js +10 -0
- package/src/commands/logout/index.js +20 -0
- package/src/commands/push/cdn_mirrors.js +7 -0
- package/src/commands/push/check_if_settings_valid.js +10 -0
- package/src/commands/push/create_version.js +20 -0
- package/src/commands/push/definition.js +43 -0
- package/src/commands/push/get_app_domain.js +11 -0
- package/src/commands/push/get_deployment.js +19 -0
- package/src/commands/push/get_provision_domain.js +9 -0
- package/src/commands/push/get_session_token.js +31 -0
- package/src/commands/push/get_settings_file.js +47 -0
- package/src/commands/push/handle_initial_deployment.js +24 -0
- package/src/commands/push/handle_version_deployment.js +23 -0
- package/src/commands/push/index.js +190 -0
- package/src/commands/push/prompts/confirm_deployment.js +73 -0
- package/src/commands/push/prompts/session_token.js +11 -0
- package/src/commands/push/upload_build_to_cdn.js +59 -0
- package/src/commands/push/validate_deployment.js +19 -0
- package/src/commands/push/validate_push_config.js +18 -0
- package/src/commands/push_v2/Dockerfile +47 -0
- package/src/commands/push_v2/build_docker_image.js +78 -0
- package/src/commands/push_v2/cdn_mirrors.js +7 -0
- package/src/commands/push_v2/check_if_settings_valid.js +10 -0
- package/src/commands/push_v2/create_version.js +20 -0
- package/src/commands/push_v2/definition.js +58 -0
- package/src/commands/push_v2/get_app_domain.js +11 -0
- package/src/commands/push_v2/get_deployment.js +19 -0
- package/src/commands/push_v2/get_deployment_token.js +30 -0
- package/src/commands/push_v2/get_push_domain.js +8 -0
- package/src/commands/push_v2/get_settings_file.js +47 -0
- package/src/commands/push_v2/handle_initial_deployment.js +24 -0
- package/src/commands/push_v2/handle_version_deployment.js +23 -0
- package/src/commands/push_v2/index.js +90 -0
- package/src/commands/push_v2/prompts/confirm_deployment.js +73 -0
- package/src/commands/push_v2/prompts/session_token.js +11 -0
- package/src/commands/push_v2/upload_build_to_push.js +37 -0
- package/src/commands/push_v2/validate_deployment.js +19 -0
- package/src/commands/push_v2/validate_push_config.js +18 -0
- package/src/commands/start/definition.js +58 -0
- package/src/commands/start/index.js +11 -0
- package/src/commands/test/definition.js +28 -0
- package/src/commands/test/index.js +12 -0
- package/src/commands/update/definition.js +28 -0
- package/src/commands/update/index.js +29 -0
- package/src/commands/use/definition.js +19 -0
- package/src/commands/use/index.js +54 -0
- package/src/index.js +0 -0
- package/src/lib/build/browser_path_exclusions.js +8 -0
- package/src/lib/build/browser_paths.js +11 -0
- package/src/lib/build/build_files.js +167 -0
- package/src/{functions/start/filesToCopy.js → lib/build/copy_paths.js} +7 -5
- package/src/lib/build/get_code_frame.js +11 -0
- package/src/lib/build/get_file_operation.js +25 -0
- package/src/lib/build/get_files_to_build.js +41 -0
- package/src/lib/build/get_path_platform.js +32 -0
- package/src/lib/build/get_platform_safe_path.js +6 -0
- package/src/lib/build/get_tar_ignore_list.js +41 -0
- package/src/lib/build/index.js +137 -0
- package/src/lib/build/master_ignore_list.js +14 -0
- package/src/lib/build/minify_file.js +22 -0
- package/src/lib/build/node_paths.js +19 -0
- package/src/lib/build/on_warn.js +70 -0
- package/src/lib/build/plugins/bootstrap_component.js +191 -0
- package/src/lib/build/plugins/generate_file_dependency_map.js +20 -0
- package/src/lib/build/plugins/index.js +26 -0
- package/src/lib/build/plugins/set_component_id.js +89 -0
- package/src/lib/build/plugins/update_file_map.js +98 -0
- package/src/lib/build/plugins/warn_node_environment.js +20 -0
- package/src/lib/{CLILog.js → cli_log.js} +12 -8
- package/src/lib/color_log.js +7 -0
- package/src/lib/command_exists.js +16 -0
- package/src/lib/constants.js +11 -1
- package/src/lib/debounce.js +9 -0
- package/src/lib/decrypt_buffer.js +12 -0
- package/src/lib/development_server/ava_config.js +14 -0
- package/src/lib/development_server/check_if_port_occupied.js +31 -0
- package/src/lib/development_server/cleanup.js +15 -0
- package/src/lib/development_server/databases/download_database_binary.js +35 -0
- package/src/lib/{dev/databases/mongodb/availableQueryParameters.js → development_server/databases/mongodb/available_query_parameters.js} +3 -1
- package/src/lib/development_server/databases/mongodb/build_connection_string.js +36 -0
- package/src/lib/development_server/databases/mongodb/build_query_parameters.js +17 -0
- package/src/lib/development_server/databases/mongodb/check_connection.js +41 -0
- package/src/lib/development_server/databases/mongodb/connect.js +27 -0
- package/src/lib/development_server/databases/mongodb/index.js +102 -0
- package/src/lib/development_server/databases/mongodb/installers/linux.js +107 -0
- package/src/lib/development_server/databases/mongodb/installers/macos.js +109 -0
- package/src/lib/development_server/databases/mongodb/installers/windows.js +90 -0
- package/src/lib/development_server/databases/postgresql/check_connection.js +56 -0
- package/src/lib/development_server/databases/postgresql/connect.js +33 -0
- package/src/lib/development_server/databases/postgresql/index.js +157 -0
- package/src/lib/development_server/databases/postgresql/installers/linux.js +80 -0
- package/src/lib/development_server/databases/postgresql/installers/macos.js +91 -0
- package/src/lib/development_server/databases/postgresql/installers/windows.js +83 -0
- package/src/lib/development_server/databases/provider_map.js +15 -0
- package/src/lib/development_server/get_database_process_ids.js +28 -0
- package/src/lib/development_server/get_translations.js +85 -0
- package/src/lib/development_server/hmr_server.js +94 -0
- package/src/lib/development_server/index.js +436 -0
- package/src/lib/development_server/kill_process_ids.js +8 -0
- package/src/lib/development_server/run_tests.js +84 -0
- package/src/lib/development_server/start_app_server.js +55 -0
- package/src/lib/development_server/start_databases.js +108 -0
- package/src/lib/development_server/start_hmr_server.js +36 -0
- package/src/lib/development_server/watch_for_changes/browser_path_exclusions.js +8 -0
- package/src/lib/development_server/watch_for_changes/browser_paths.js +11 -0
- package/src/lib/development_server/watch_for_changes/get_after_run_tasks.js +36 -0
- package/src/lib/development_server/watch_for_changes/get_file_codependencies.js +53 -0
- package/src/lib/development_server/watch_for_changes/get_platform_safe_path.js +6 -0
- package/src/lib/development_server/watch_for_changes/index.js +222 -0
- package/src/lib/development_server/watch_for_changes/node_paths.js +17 -0
- package/src/lib/development_server/watch_for_changes/read_file_dependency_map.js +18 -0
- package/src/lib/development_server/watch_for_changes/watch_paths.js +22 -0
- package/src/lib/dynamic_import.js +6 -0
- package/src/lib/encrypt_buffer.js +10 -0
- package/src/lib/generate_id.js +15 -0
- package/src/lib/get_files_in_path.js +25 -0
- package/src/lib/get_platform_safe_path.js +8 -0
- package/src/lib/get_process_id_from_port.js +26 -0
- package/src/lib/is_valid_json_string.js +10 -0
- package/src/lib/kill_port_process.js +12 -0
- package/src/lib/kill_process_id.js +19 -0
- package/src/lib/load_settings.js +43 -0
- package/src/lib/loader.js +4 -77
- package/src/lib/log_bars.js +7 -0
- package/src/lib/node_path_polyfills.js +23 -0
- package/src/lib/parse_args.js +16 -0
- package/src/lib/parse_options.js +16 -0
- package/src/lib/path_exists.js +11 -0
- package/src/lib/{rainbowRoad.js → rainbow_road.js} +4 -2
- package/src/lib/replace_in_files.js +40 -0
- package/src/lib/{dev/requiredFiles.js → required_files.js} +3 -1
- package/src/lib/serialize_query_parameters.js +7 -0
- package/src/lib/types.js +59 -2
- package/src/lib/unique_array.js +24 -0
- package/HMRNOTES.txt +0 -23
- package/_package.json +0 -56
- package/canary.js +0 -12
- package/dist/functions/build/getTarIgnoreList.js +0 -25
- package/dist/functions/build/index.js +0 -54
- package/dist/functions/create/buildPackageJSON.js +0 -20
- package/dist/functions/create/index.js +0 -193
- package/dist/functions/create/templates/api/index.js +0 -4
- package/dist/functions/create/templates/i18n/en-US.js +0 -4
- package/dist/functions/create/templates/index.client.js +0 -7
- package/dist/functions/create/templates/index.css +0 -20
- package/dist/functions/create/templates/public/apple-touch-icon-152x152.png +0 -0
- package/dist/functions/create/templates/public/favicon.ico +0 -0
- package/dist/functions/create/templates/public/splash-screen-1024x1024.png +0 -0
- package/dist/functions/create/templates/ui/pages/error/index.js +0 -31
- package/dist/functions/create/templates/ui/pages/index/index.js +0 -94
- package/dist/functions/index.js +0 -269
- package/dist/functions/logout/index.js +0 -20
- package/dist/functions/push/checkIfProvisionAvailable.js +0 -19
- package/dist/functions/push/deploy/index.js +0 -173
- package/dist/functions/push/deploy/initial.js +0 -100
- package/dist/functions/push/deploy/version.js +0 -100
- package/dist/functions/push/domains.js +0 -23
- package/dist/functions/push/getAvailableCDN.js +0 -23
- package/dist/functions/push/getDeployment.js +0 -41
- package/dist/functions/push/getDeploymentSummary.js +0 -38
- package/dist/functions/push/getInstanceSizeRegions.js +0 -37
- package/dist/functions/push/getInstanceSizesForRegion.js +0 -34
- package/dist/functions/push/getProviderInstanceSizes.js +0 -34
- package/dist/functions/push/getProviderRegions.js +0 -36
- package/dist/functions/push/getProvidersWithConnectionStatus.js +0 -20
- package/dist/functions/push/getSessionToken.js +0 -23
- package/dist/functions/push/getUserFromSessionToken.js +0 -37
- package/dist/functions/push/index.js +0 -210
- package/dist/functions/push/loginToCheatCode.js +0 -33
- package/dist/functions/push/pingProvisionAPI.js +0 -31
- package/dist/functions/push/prompts.js +0 -332
- package/dist/functions/push/providerMap.js +0 -11
- package/dist/functions/push/providers.js +0 -9
- package/dist/functions/reset/index.js +0 -0
- package/dist/functions/reset/reset.js +0 -127
- package/dist/functions/start/bootstrapLayoutComponent.js +0 -54
- package/dist/functions/start/bootstrapPageComponent.js +0 -51
- package/dist/functions/start/buildFile.js +0 -85
- package/dist/functions/start/buildFiles.js +0 -76
- package/dist/functions/start/buildPlugins.js +0 -183
- package/dist/functions/start/checkIfPortAvailable.js +0 -18
- package/dist/functions/start/cleanup/index.js +0 -18
- package/dist/functions/start/databases/mongodb/availableQueryParameters.js +0 -42
- package/dist/functions/start/databases/mongodb/buildConnectionString.js +0 -22
- package/dist/functions/start/databases/mongodb/buildQueryParameters.js +0 -14
- package/dist/functions/start/databases/mongodb/checkConnection.js +0 -35
- package/dist/functions/start/databases/mongodb/connect.js +0 -25
- package/dist/functions/start/databases/mongodb/index.js +0 -93
- package/dist/functions/start/databases/postgresql/checkConnection.js +0 -41
- package/dist/functions/start/databases/postgresql/connect.js +0 -27
- package/dist/functions/start/databases/postgresql/index.js +0 -106
- package/dist/functions/start/databases/redis.js +0 -0
- package/dist/functions/start/databases/startProvider.js +0 -16
- package/dist/functions/start/fileDependencyMapper.js +0 -22
- package/dist/functions/start/filesToCopy.js +0 -18
- package/dist/functions/start/generateId.js +0 -74
- package/dist/functions/start/getCodependenciesForFile.js +0 -64
- package/dist/functions/start/getFilesToBuild.js +0 -39
- package/dist/functions/start/getProcessIdFromPort.js +0 -60
- package/dist/functions/start/hmrServer.js +0 -66
- package/dist/functions/start/index.js +0 -11
- package/dist/functions/start/isWindows.js +0 -5
- package/dist/functions/start/minifyFile.js +0 -12
- package/dist/functions/start/onWarn.js +0 -63
- package/dist/functions/start/readFileDependencyMap.js +0 -16
- package/dist/functions/start/removeDeletedDependenciesFromMap.js +0 -18
- package/dist/functions/start/setComponentId.js +0 -46
- package/dist/functions/start/updateFileMap.js +0 -67
- package/dist/functions/test/index.js +0 -12
- package/dist/functions/update/index.js +0 -21
- package/dist/functions/use/index.js +0 -61
- package/dist/lib/CLILog.js +0 -49
- package/dist/lib/build/browserPathExclusions.js +0 -8
- package/dist/lib/build/browserPaths.js +0 -11
- package/dist/lib/build/buildFile.js +0 -84
- package/dist/lib/build/buildFiles.js +0 -242
- package/dist/lib/build/buildPlugins.js +0 -186
- package/dist/lib/build/getCodeFrame.js +0 -9
- package/dist/lib/build/minifyFile.js +0 -12
- package/dist/lib/build/nodePathExclusions.js +0 -7
- package/dist/lib/build/nodePaths.js +0 -12
- package/dist/lib/build/onWarn.js +0 -63
- package/dist/lib/build/removeDeletedDependenciesFromMap.js +0 -18
- package/dist/lib/build/setComponentId.js +0 -46
- package/dist/lib/build/updateFileMap.js +0 -67
- package/dist/lib/buildResolvePlugin.js +0 -21
- package/dist/lib/checkIfValidJSON.js +0 -11
- package/dist/lib/colorLog.js +0 -7
- package/dist/lib/dev/cleanup.js +0 -18
- package/dist/lib/dev/databases/mongodb/availableQueryParameters.js +0 -42
- package/dist/lib/dev/databases/mongodb/buildConnectionString.js +0 -22
- package/dist/lib/dev/databases/mongodb/buildQueryParameters.js +0 -14
- package/dist/lib/dev/databases/mongodb/checkConnection.js +0 -38
- package/dist/lib/dev/databases/mongodb/connect.js +0 -25
- package/dist/lib/dev/databases/mongodb/index.js +0 -93
- package/dist/lib/dev/databases/postgresql/checkConnection.js +0 -41
- package/dist/lib/dev/databases/postgresql/connect.js +0 -27
- package/dist/lib/dev/databases/postgresql/index.js +0 -106
- package/dist/lib/dev/databases/providerMap.js +0 -15
- package/dist/lib/dev/getCodependenciesForFile.js +0 -64
- package/dist/lib/dev/getFilesToBuild.js +0 -38
- package/dist/lib/dev/hmrServer.js +0 -66
- package/dist/lib/dev/index.js +0 -561
- package/dist/lib/dev/isWindows.js +0 -5
- package/dist/lib/dev/loadSettings.js +0 -79
- package/dist/lib/dev/readFileDependencyMap.js +0 -16
- package/dist/lib/dev/requiredFiles.js +0 -18
- package/dist/lib/dev/runBuild.js +0 -30
- package/dist/lib/dev/runTests.js +0 -96
- package/dist/lib/dev/startDatabases.js +0 -109
- package/dist/lib/dev/startHMR.js +0 -55
- package/dist/lib/dev/tests.config.js +0 -6
- package/dist/lib/dev/updateFileMap.js +0 -67
- package/dist/lib/dev/validateProject.js +0 -0
- package/dist/lib/dev/watchlist.js +0 -15
- package/dist/lib/filesToCopy.js +0 -18
- package/dist/lib/generateId.js +0 -74
- package/dist/lib/getArgs.js +0 -14
- package/dist/lib/getOptions.js +0 -15
- package/dist/lib/getPlatformSafePath.js +0 -7
- package/dist/lib/getProcessIdFromPort.js +0 -60
- package/dist/lib/getProvider.js +0 -8
- package/dist/lib/help.js +0 -56
- package/dist/lib/isObject.js +0 -6
- package/dist/lib/isValidJSONString.js +0 -11
- package/dist/lib/isWindows.js +0 -5
- package/dist/lib/killProcesses.js +0 -0
- package/dist/lib/loadSettings.js +0 -33
- package/dist/lib/masterIgnoreList.js +0 -16
- package/dist/lib/nodeEnvironment.js +0 -9
- package/dist/lib/nodeEnvironments.js +0 -8
- package/dist/lib/parseCookiesFromLogin.js +0 -18
- package/dist/lib/rainbowRoad.js +0 -7
- package/dist/lib/readDirectorySync.js +0 -14
- package/dist/lib/regexes.js +0 -14
- package/dist/lib/replaceBackslashesWithForwardSlashes.js +0 -8
- package/dist/lib/replaceFileProtocol.js +0 -8
- package/dist/lib/serializeQueryParameters.js +0 -8
- package/dist/lib/settings.js +0 -4
- package/dist/lib/validateDatabasesFromSettings.js +0 -34
- package/dist/lib/wait.js +0 -8
- package/release.js +0 -40
- package/src/functions/build/getTarIgnoreList.js +0 -30
- package/src/functions/build/index.js +0 -63
- package/src/functions/create/buildPackageJSON.js +0 -18
- package/src/functions/create/index.js +0 -209
- package/src/functions/create/templates/api/index.js +0 -4
- package/src/functions/create/templates/i18n/en-US.js +0 -4
- package/src/functions/create/templates/index.client.js +0 -7
- package/src/functions/create/templates/index.css +0 -20
- package/src/functions/create/templates/public/apple-touch-icon-152x152.png +0 -0
- package/src/functions/create/templates/public/favicon.ico +0 -0
- package/src/functions/create/templates/public/splash-screen-1024x1024.png +0 -0
- package/src/functions/create/templates/ui/pages/error/index.js +0 -31
- package/src/functions/create/templates/ui/pages/index/index.js +0 -94
- package/src/functions/index.js +0 -269
- package/src/functions/logout/index.js +0 -20
- package/src/functions/push/checkIfProvisionAvailable.js +0 -20
- package/src/functions/push/deploy/index.js +0 -199
- package/src/functions/push/deploy/initial.js +0 -108
- package/src/functions/push/deploy/version.js +0 -108
- package/src/functions/push/domains.js +0 -23
- package/src/functions/push/getAvailableCDN.js +0 -27
- package/src/functions/push/getDeployment.js +0 -43
- package/src/functions/push/getDeploymentSummary.js +0 -39
- package/src/functions/push/getInstanceSizeRegions.js +0 -40
- package/src/functions/push/getInstanceSizesForRegion.js +0 -35
- package/src/functions/push/getProviderInstanceSizes.js +0 -35
- package/src/functions/push/getProviderRegions.js +0 -39
- package/src/functions/push/getProvidersWithConnectionStatus.js +0 -25
- package/src/functions/push/getSessionToken.js +0 -26
- package/src/functions/push/getUserFromSessionToken.js +0 -39
- package/src/functions/push/index.js +0 -245
- package/src/functions/push/loginToCheatCode.js +0 -34
- package/src/functions/push/pingProvisionAPI.js +0 -33
- package/src/functions/push/prompts.js +0 -276
- package/src/functions/push/providerMap.js +0 -8
- package/src/functions/push/providers.js +0 -6
- package/src/functions/reset/index.js +0 -0
- package/src/functions/reset/reset.js +0 -163
- package/src/functions/start/bootstrapLayoutComponent.js +0 -57
- package/src/functions/start/bootstrapPageComponent.js +0 -54
- package/src/functions/start/buildFile.js +0 -97
- package/src/functions/start/buildFiles.js +0 -101
- package/src/functions/start/buildPlugins.js +0 -215
- package/src/functions/start/checkIfPortAvailable.js +0 -21
- package/src/functions/start/cleanup/index.js +0 -23
- package/src/functions/start/databases/mongodb/availableQueryParameters.js +0 -39
- package/src/functions/start/databases/mongodb/buildConnectionString.js +0 -28
- package/src/functions/start/databases/mongodb/buildQueryParameters.js +0 -15
- package/src/functions/start/databases/mongodb/checkConnection.js +0 -36
- package/src/functions/start/databases/mongodb/connect.js +0 -25
- package/src/functions/start/databases/mongodb/index.js +0 -108
- package/src/functions/start/databases/postgresql/checkConnection.js +0 -43
- package/src/functions/start/databases/postgresql/connect.js +0 -27
- package/src/functions/start/databases/postgresql/index.js +0 -127
- package/src/functions/start/databases/redis.js +0 -0
- package/src/functions/start/databases/startProvider.js +0 -15
- package/src/functions/start/fileDependencyMapper.js +0 -24
- package/src/functions/start/generateId.js +0 -73
- package/src/functions/start/getCodependenciesForFile.js +0 -84
- package/src/functions/start/getFilesToBuild.js +0 -49
- package/src/functions/start/getProcessIdFromPort.js +0 -92
- package/src/functions/start/hmrServer.js +0 -78
- package/src/functions/start/index.js +0 -9
- package/src/functions/start/isWindows.js +0 -3
- package/src/functions/start/minifyFile.js +0 -10
- package/src/functions/start/onWarn.js +0 -68
- package/src/functions/start/readFileDependencyMap.js +0 -19
- package/src/functions/start/removeDeletedDependenciesFromMap.js +0 -19
- package/src/functions/start/setComponentId.js +0 -58
- package/src/functions/start/updateFileMap.js +0 -100
- package/src/functions/test/index.js +0 -10
- package/src/functions/update/index.js +0 -20
- package/src/functions/use/index.js +0 -62
- package/src/lib/build/browserPathExclusions.js +0 -6
- package/src/lib/build/browserPaths.js +0 -9
- package/src/lib/build/buildFile.js +0 -91
- package/src/lib/build/buildFiles.js +0 -274
- package/src/lib/build/buildPlugins.js +0 -222
- package/src/lib/build/getCodeFrame.js +0 -7
- package/src/lib/build/minifyFile.js +0 -10
- package/src/lib/build/nodePathExclusions.js +0 -5
- package/src/lib/build/nodePaths.js +0 -10
- package/src/lib/build/onWarn.js +0 -68
- package/src/lib/build/removeDeletedDependenciesFromMap.js +0 -19
- package/src/lib/build/setComponentId.js +0 -58
- package/src/lib/build/updateFileMap.js +0 -100
- package/src/lib/buildResolvePlugin.js +0 -32
- package/src/lib/checkIfValidJSON.js +0 -8
- package/src/lib/colorLog.js +0 -5
- package/src/lib/dev/cleanup.js +0 -26
- package/src/lib/dev/databases/mongodb/buildConnectionString.js +0 -28
- package/src/lib/dev/databases/mongodb/buildQueryParameters.js +0 -15
- package/src/lib/dev/databases/mongodb/checkConnection.js +0 -40
- package/src/lib/dev/databases/mongodb/connect.js +0 -25
- package/src/lib/dev/databases/mongodb/index.js +0 -108
- package/src/lib/dev/databases/postgresql/checkConnection.js +0 -43
- package/src/lib/dev/databases/postgresql/connect.js +0 -27
- package/src/lib/dev/databases/postgresql/index.js +0 -127
- package/src/lib/dev/databases/providerMap.js +0 -13
- package/src/lib/dev/getCodependenciesForFile.js +0 -84
- package/src/lib/dev/getFilesToBuild.js +0 -47
- package/src/lib/dev/hmrServer.js +0 -78
- package/src/lib/dev/index.js +0 -686
- package/src/lib/dev/isWindows.js +0 -3
- package/src/lib/dev/loadSettings.js +0 -90
- package/src/lib/dev/readFileDependencyMap.js +0 -19
- package/src/lib/dev/runBuild.js +0 -33
- package/src/lib/dev/runTests.js +0 -122
- package/src/lib/dev/startApp.js +0 -81
- package/src/lib/dev/startDatabases.js +0 -131
- package/src/lib/dev/startHMR.js +0 -62
- package/src/lib/dev/tests.config.js +0 -3
- package/src/lib/dev/updateFileMap.js +0 -100
- package/src/lib/dev/validateProject.js +0 -0
- package/src/lib/dev/watchlist.js +0 -13
- package/src/lib/filesToCopy.js +0 -15
- package/src/lib/generateId.js +0 -73
- package/src/lib/getArgs.js +0 -14
- package/src/lib/getOptions.js +0 -12
- package/src/lib/getProcessIdFromPort.js +0 -92
- package/src/lib/getProvider.js +0 -5
- package/src/lib/help.js +0 -56
- package/src/lib/isObject.js +0 -3
- package/src/lib/isValidJSONString.js +0 -8
- package/src/lib/killProcesses.js +0 -5
- package/src/lib/loadSettings.js +0 -40
- package/src/lib/masterIgnoreList.js +0 -13
- package/src/lib/nodeEnvironment.js +0 -6
- package/src/lib/nodeEnvironments.js +0 -8
- package/src/lib/parseCookiesFromLogin.js +0 -21
- package/src/lib/readDirectorySync.js +0 -13
- package/src/lib/regexes.js +0 -7
- package/src/lib/replaceBackslashesWithForwardSlashes.js +0 -8
- package/src/lib/replaceFileProtocol.js +0 -8
- package/src/lib/serializeQueryParameters.js +0 -5
- package/src/lib/settings.js +0 -1
- package/src/lib/validateDatabasesFromSettings.js +0 -37
- package/src/lib/wait.js +0 -5
- package/storage/.verdaccio-db.json +0 -1
- /package/{src/lib → .build}/getPlatformSafePath.js +0 -0
- /package/{src/lib → .build}/isWindows.js +0 -0
- /package/dist/{functions/create/templates → commands/create/template}/public/service-worker.js +0 -0
- /package/dist/{functions/create/templates → commands/create/template}/settings.development.json +0 -0
- /package/src/{functions/create/templates → commands/create/template}/public/service-worker.js +0 -0
- /package/src/{functions/create/templates → commands/create/template}/settings.development.json +0 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import os from 'os';
|
|
4
|
+
import { promisify } from 'util';
|
|
5
|
+
import { pipeline } from 'stream';
|
|
6
|
+
import { execFile } from 'child_process';
|
|
7
|
+
|
|
8
|
+
const streamPipeline = promisify(pipeline);
|
|
9
|
+
const execFileAsync = promisify(execFile);
|
|
10
|
+
|
|
11
|
+
const download_mongodb_macos = async (version_path = null) => {
|
|
12
|
+
const base_directory = path.join(os.homedir(), '.joystick', 'databases', 'mongodb');
|
|
13
|
+
const bin_directory = path.join(base_directory, 'bin');
|
|
14
|
+
const bin_bin_directory = path.join(bin_directory, 'bin');
|
|
15
|
+
|
|
16
|
+
if (await check_if_file_exists(base_directory)) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
await create_directories(base_directory, bin_directory, bin_bin_directory);
|
|
21
|
+
|
|
22
|
+
const cpu_info = await get_cpu_info();
|
|
23
|
+
const is_arm = cpu_info.includes('ARM');
|
|
24
|
+
|
|
25
|
+
const mongodb_url = is_arm
|
|
26
|
+
? 'https://fastdl.mongodb.org/osx/mongodb-macos-arm64-7.0.2.tgz'
|
|
27
|
+
: 'https://fastdl.mongodb.org/osx/mongodb-macos-x86_64-7.0.2.tgz';
|
|
28
|
+
|
|
29
|
+
const mongosh_url = is_arm
|
|
30
|
+
? 'https://downloads.mongodb.com/compass/mongosh-2.2.12-darwin-arm64.zip'
|
|
31
|
+
: 'https://downloads.mongodb.com/compass/mongosh-2.2.12-darwin-x64.zip';
|
|
32
|
+
|
|
33
|
+
const mongodb_file_name = path.basename(new URL(mongodb_url).pathname);
|
|
34
|
+
const mongodb_file_path = path.join(base_directory, mongodb_file_name);
|
|
35
|
+
|
|
36
|
+
const mongosh_file_name = path.basename(new URL(mongosh_url).pathname);
|
|
37
|
+
const mongosh_file_path = path.join(base_directory, mongosh_file_name);
|
|
38
|
+
|
|
39
|
+
process.loader.print('MongoDB not found. Downloading... (this may take a few minutes)');
|
|
40
|
+
await download_file(mongodb_url, mongodb_file_path);
|
|
41
|
+
await download_file(mongosh_url, mongosh_file_path);
|
|
42
|
+
|
|
43
|
+
process.loader.print('Installing MongoDB...');
|
|
44
|
+
|
|
45
|
+
// Extract MongoDB
|
|
46
|
+
await execFileAsync('tar', ['-xzf', mongodb_file_path, '-C', bin_directory, '--strip-components=1']);
|
|
47
|
+
|
|
48
|
+
// Extract mongosh
|
|
49
|
+
const mongosh_temp_directory = path.join(base_directory, 'mongosh_temp');
|
|
50
|
+
await fs.promises.mkdir(mongosh_temp_directory, { recursive: true });
|
|
51
|
+
await execFileAsync('unzip', ['-q', mongosh_file_path, '-d', mongosh_temp_directory]);
|
|
52
|
+
|
|
53
|
+
// Find and copy mongosh executable
|
|
54
|
+
const mongosh_contents = await fs.promises.readdir(mongosh_temp_directory);
|
|
55
|
+
const mongosh_dir = mongosh_contents.find(item => item.startsWith('mongosh-'));
|
|
56
|
+
if (!mongosh_dir) {
|
|
57
|
+
throw new Error('Could not find mongosh directory in extracted contents');
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const mongosh_bin_path = path.join(mongosh_temp_directory, mongosh_dir, 'bin', 'mongosh');
|
|
61
|
+
const final_mongosh_path = path.join(bin_bin_directory, 'mongosh');
|
|
62
|
+
await fs.promises.copyFile(mongosh_bin_path, final_mongosh_path);
|
|
63
|
+
|
|
64
|
+
// Clean up
|
|
65
|
+
await fs.promises.unlink(mongodb_file_path);
|
|
66
|
+
await fs.promises.unlink(mongosh_file_path);
|
|
67
|
+
await fs.promises.rm(mongosh_temp_directory, { recursive: true, force: true });
|
|
68
|
+
|
|
69
|
+
await make_file_executable(bin_directory);
|
|
70
|
+
await make_file_executable(bin_bin_directory);
|
|
71
|
+
process.loader.print('MongoDB installed!');
|
|
72
|
+
};
|
|
73
|
+
|
|
74
|
+
const download_file = async (url, file_path) => {
|
|
75
|
+
const response = await fetch(url);
|
|
76
|
+
if (!response.ok) {
|
|
77
|
+
throw new Error(`Failed to download: ${response.statusText}`);
|
|
78
|
+
}
|
|
79
|
+
await streamPipeline(response.body, fs.createWriteStream(file_path));
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
const check_if_file_exists = async (file_path) => {
|
|
83
|
+
try {
|
|
84
|
+
await fs.promises.access(file_path);
|
|
85
|
+
return true;
|
|
86
|
+
} catch {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
const get_cpu_info = async () => {
|
|
92
|
+
const { stdout } = await execFileAsync('sysctl', ['-n', 'machdep.cpu.brand_string']);
|
|
93
|
+
return stdout.trim();
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
const create_directories = async (base_directory, bin_directory, bin_bin_directory) => {
|
|
97
|
+
await fs.promises.mkdir(base_directory, { recursive: true });
|
|
98
|
+
await fs.promises.mkdir(bin_directory, { recursive: true });
|
|
99
|
+
await fs.promises.mkdir(bin_bin_directory, { recursive: true });
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
const make_file_executable = async (directory) => {
|
|
103
|
+
const files = await fs.promises.readdir(directory);
|
|
104
|
+
for (const file of files) {
|
|
105
|
+
await fs.promises.chmod(path.join(directory, file), '755');
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
export default download_mongodb_macos;
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import os from 'os';
|
|
4
|
+
import { promisify } from 'util';
|
|
5
|
+
import { pipeline } from 'stream';
|
|
6
|
+
import { execFile } from 'child_process';
|
|
7
|
+
|
|
8
|
+
const stream_pipeline = promisify(pipeline);
|
|
9
|
+
const exec_file_async = promisify(execFile);
|
|
10
|
+
|
|
11
|
+
const download_mongodb_windows = async () => {
|
|
12
|
+
const base_directory = path.join(os.homedir(), '.joystick', 'databases', 'mongodb');
|
|
13
|
+
const bin_directory = path.join(base_directory, 'bin');
|
|
14
|
+
|
|
15
|
+
if (await check_if_file_exists(base_directory)) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
await create_directories(base_directory, bin_directory);
|
|
20
|
+
|
|
21
|
+
const download_url = 'https://fastdl.mongodb.org/windows/mongodb-windows-x86_64-7.0.2.zip';
|
|
22
|
+
const file_name = path.basename(new URL(download_url).pathname);
|
|
23
|
+
const file_path = path.join(base_directory, file_name);
|
|
24
|
+
|
|
25
|
+
if (await check_if_file_exists(file_path)) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
process.loader.print('MongoDB not found. Downloading... (this may take a few minutes)');
|
|
30
|
+
await download_file(download_url, file_path);
|
|
31
|
+
process.loader.print('Installing MongoDB...');
|
|
32
|
+
|
|
33
|
+
const temp_directory = path.join(base_directory, 'temp');
|
|
34
|
+
await exec_file_async('powershell', ['Expand-Archive', '-Path', file_path, '-DestinationPath', temp_directory]);
|
|
35
|
+
const extracted_folder = (await fs.promises.readdir(temp_directory))[0];
|
|
36
|
+
const extracted_path = path.join(temp_directory, extracted_folder);
|
|
37
|
+
|
|
38
|
+
// Remove existing bin directory if it exists
|
|
39
|
+
if (await check_if_file_exists(bin_directory)) {
|
|
40
|
+
await fs.promises.rm(bin_directory, { recursive: true, force: true });
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Copy the entire contents of the extracted folder to the bin directory
|
|
44
|
+
await fs.promises.cp(extracted_path, bin_directory, { recursive: true });
|
|
45
|
+
|
|
46
|
+
// Download and install mongosh
|
|
47
|
+
const mongosh_url = 'https://downloads.mongodb.com/compass/mongosh-2.2.12-win32-x64.zip';
|
|
48
|
+
const mongosh_file_path = path.join(base_directory, 'mongosh.zip');
|
|
49
|
+
await download_file(mongosh_url, mongosh_file_path);
|
|
50
|
+
|
|
51
|
+
const mongosh_temp_directory = path.join(base_directory, 'mongosh_temp');
|
|
52
|
+
await exec_file_async('powershell', ['Expand-Archive', '-Path', mongosh_file_path, '-DestinationPath', mongosh_temp_directory]);
|
|
53
|
+
|
|
54
|
+
const mongosh_extracted_folder = (await fs.promises.readdir(mongosh_temp_directory))[0];
|
|
55
|
+
const mongosh_bin_path = path.join(mongosh_temp_directory, mongosh_extracted_folder, 'bin', 'mongosh.exe');
|
|
56
|
+
|
|
57
|
+
await fs.promises.copyFile(mongosh_bin_path, path.join(bin_directory, 'bin', 'mongosh.exe'));
|
|
58
|
+
|
|
59
|
+
// Clean up temporary files
|
|
60
|
+
await fs.promises.unlink(file_path);
|
|
61
|
+
await fs.promises.unlink(mongosh_file_path);
|
|
62
|
+
await fs.promises.rm(temp_directory, { recursive: true, force: true });
|
|
63
|
+
await fs.promises.rm(mongosh_temp_directory, { recursive: true, force: true });
|
|
64
|
+
|
|
65
|
+
process.loader.print('MongoDB installed!');
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
const download_file = async (url, file_path) => {
|
|
69
|
+
const response = await fetch(url);
|
|
70
|
+
if (!response.ok) {
|
|
71
|
+
throw new Error(`Failed to download: ${response.statusText}`);
|
|
72
|
+
}
|
|
73
|
+
await stream_pipeline(response.body, fs.createWriteStream(file_path));
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
const check_if_file_exists = async (file_path) => {
|
|
77
|
+
try {
|
|
78
|
+
await fs.promises.access(file_path);
|
|
79
|
+
return true;
|
|
80
|
+
} catch {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
const create_directories = async (base_directory, bin_directory) => {
|
|
86
|
+
await fs.promises.mkdir(base_directory, { recursive: true });
|
|
87
|
+
await fs.promises.mkdir(bin_directory, { recursive: true });
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
export default download_mongodb_windows;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import postgresql from "pg";
|
|
3
|
+
import color_log from "../../../color_log.js";
|
|
4
|
+
|
|
5
|
+
const { Client } = postgresql;
|
|
6
|
+
const { readFile } = fs.promises;
|
|
7
|
+
|
|
8
|
+
const test_query = (client = {}) => {
|
|
9
|
+
return new Promise((resolve, reject) => {
|
|
10
|
+
client.query('SELECT NOW()', (error) => {
|
|
11
|
+
if (error) {
|
|
12
|
+
reject();
|
|
13
|
+
} else {
|
|
14
|
+
resolve();
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
client.end();
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
const check_connection = async (connection = {}, options = {}) => {
|
|
23
|
+
try {
|
|
24
|
+
const host = connection?.hosts && connection?.hosts[0];
|
|
25
|
+
const connection_config = {
|
|
26
|
+
user: connection?.username,
|
|
27
|
+
host: host?.hostname,
|
|
28
|
+
database: connection?.database,
|
|
29
|
+
password: connection?.password,
|
|
30
|
+
port: host?.port,
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
if (options?.ssl?.ca) {
|
|
34
|
+
connection_config.ssl = {
|
|
35
|
+
ca: await readFile(options?.ssl?.ca)
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const client = new Client(connection_config);
|
|
40
|
+
|
|
41
|
+
client.connect();
|
|
42
|
+
await test_query(client);
|
|
43
|
+
|
|
44
|
+
return true;
|
|
45
|
+
} catch (exception) {
|
|
46
|
+
console.warn(exception);
|
|
47
|
+
color_log(
|
|
48
|
+
`\n✖ Failed to connect to PostgreSQL. Please double-check connection settings and try again.`,
|
|
49
|
+
'yellow'
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
process.exit(1);
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
export default check_connection;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import os from 'os';
|
|
2
|
+
import check_connection from "./check_connection.js";
|
|
3
|
+
import postgresql from "./index.js";
|
|
4
|
+
|
|
5
|
+
const connect = async (settings = {}, port = 2610) => {
|
|
6
|
+
try {
|
|
7
|
+
const has_connection = settings.connection && Object.keys(settings.connection).length > 0;
|
|
8
|
+
|
|
9
|
+
if (has_connection) {
|
|
10
|
+
await check_connection(settings.connection, settings.options);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
return {
|
|
14
|
+
pid: !has_connection ? await postgresql(port) : null,
|
|
15
|
+
connection: has_connection ? settings.connection : {
|
|
16
|
+
hosts: [
|
|
17
|
+
{
|
|
18
|
+
hostname: "127.0.0.1",
|
|
19
|
+
port,
|
|
20
|
+
},
|
|
21
|
+
],
|
|
22
|
+
database: "app",
|
|
23
|
+
// NOTE: PostgreSQL creates a default superuser based on the OS username.
|
|
24
|
+
username: (os.userInfo() || {}).username || "",
|
|
25
|
+
password: "",
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
} catch (exception) {
|
|
29
|
+
console.warn(exception);
|
|
30
|
+
}
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
export default connect;
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import child_process from "child_process";
|
|
2
|
+
import fs from "fs";
|
|
3
|
+
import util from "util";
|
|
4
|
+
import os from "os";
|
|
5
|
+
import get_platform_safe_path from "../../../get_platform_safe_path.js";
|
|
6
|
+
import get_process_id_from_port from "../../../get_process_id_from_port.js";
|
|
7
|
+
import path_exists from "../../../path_exists.js";
|
|
8
|
+
|
|
9
|
+
const exec = util.promisify(child_process.exec);
|
|
10
|
+
const { rename } = fs.promises;
|
|
11
|
+
|
|
12
|
+
const setup_data_directory = async (postgresql_port = 2610) => {
|
|
13
|
+
const legacy_data_directory_exists = await path_exists(".joystick/data/postgresql");
|
|
14
|
+
let data_directory_exists = await path_exists(`.joystick/data/postgresql_${postgresql_port}`);
|
|
15
|
+
|
|
16
|
+
if (legacy_data_directory_exists && !data_directory_exists) {
|
|
17
|
+
await rename ('.joystick/data/postgresql', `.joystick/data/postgresql_${postgresql_port}`);
|
|
18
|
+
data_directory_exists = true;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return data_directory_exists;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const get_createdb_command = () => {
|
|
25
|
+
if (process.platform === 'win32') {
|
|
26
|
+
return 'createdb.exe';
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return 'createdb';
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
const get_postgres_command = () => {
|
|
33
|
+
if (process.platform === 'win32') {
|
|
34
|
+
return 'postgres.exe';
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
return 'postgres';
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const get_initdb_command = () => {
|
|
41
|
+
if (process.platform === 'win32') {
|
|
42
|
+
return 'initdb.exe';
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
return 'initdb';
|
|
46
|
+
};
|
|
47
|
+
|
|
48
|
+
const get_pg_ctl_command = () => {
|
|
49
|
+
if (process.platform === 'win32') {
|
|
50
|
+
return 'pgctl.exe';
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return 'pgctl';
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
const start_postgresql = async (port = 2610) => {
|
|
57
|
+
try {
|
|
58
|
+
const postgresql_port = port;
|
|
59
|
+
const joystick_postgresql_bin_path = `${os.homedir()}/.joystick/databases/postgresql/bin/bin`;
|
|
60
|
+
|
|
61
|
+
const joystick_pg_ctl_command = get_pg_ctl_command();
|
|
62
|
+
const joystick_initdb_command = get_initdb_command();
|
|
63
|
+
const joystick_postgres_command = get_postgres_command();
|
|
64
|
+
const joystick_createdb_command = get_createdb_command();
|
|
65
|
+
|
|
66
|
+
const joystick_pg_ctl_path = `${joystick_postgresql_bin_path}/${joystick_pg_ctl_command}`;
|
|
67
|
+
const joystick_initdb_path = `${joystick_postgresql_bin_path}/${joystick_initdb_command}`;
|
|
68
|
+
const joystick_postgres_path = `${joystick_postgresql_bin_path}/${joystick_postgres_command}`;
|
|
69
|
+
const joystick_createdb_path = `${joystick_postgresql_bin_path}/${joystick_createdb_command}`;
|
|
70
|
+
|
|
71
|
+
const data_directory_exists = await setup_data_directory(port);
|
|
72
|
+
|
|
73
|
+
if (!data_directory_exists) {
|
|
74
|
+
if (process.platform === 'linux') {
|
|
75
|
+
await exec(`sudo -u postgres ./initdb -D ${process.cwd()}/.joystick/data/postgresql_${port} --no-locale`, {
|
|
76
|
+
cwd: joystick_postgresql_bin_path
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
// NOTE: For Linux, we need to set granular permissions on the data directory path
|
|
80
|
+
// to avoid access denied errors from the OS.
|
|
81
|
+
await exec(`sudo chmod 755 /root`);
|
|
82
|
+
await exec(`sudo chmod 755 /root/${process.project_folder}`);
|
|
83
|
+
await exec(`sudo chmod 755 /root/${process.project_folder}/.joystick`);
|
|
84
|
+
await exec(`sudo chmod 700 /root/${process.project_folder}/.joystick/data/postgresql_${postgresql_port}`);
|
|
85
|
+
await exec(`sudo chown -R postgres:postgres /root/${process.project_folder}/.joystick/data/postgresql_${postgresql_port}`);
|
|
86
|
+
} else {
|
|
87
|
+
await exec(`${joystick_initdb_path} -D .joystick/data/postgresql_${port} --no-locale`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
const existing_process_id = parseInt(await get_process_id_from_port(postgresql_port), 10);
|
|
92
|
+
|
|
93
|
+
if (existing_process_id) {
|
|
94
|
+
if (process.platform === 'linux') {
|
|
95
|
+
await exec(`${joystick_pg_ctl_path} kill KILL ${existing_process_id}`);
|
|
96
|
+
} else {
|
|
97
|
+
await exec(`${joystick_pg_ctl_path} kill KILL ${existing_process_id}`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
const database_process = process.platform === 'linux' ? child_process.spawn(
|
|
102
|
+
'sudo',
|
|
103
|
+
[
|
|
104
|
+
'-u',
|
|
105
|
+
'postgres',
|
|
106
|
+
'./postgres',
|
|
107
|
+
`-p ${postgresql_port}`,
|
|
108
|
+
'-D',
|
|
109
|
+
get_platform_safe_path(`${process.cwd()}/.joystick/data/postgresql_${port}`),
|
|
110
|
+
'-c log_destination=stderr -c logging_collector=off -c log_min_messages=WARNING',
|
|
111
|
+
],
|
|
112
|
+
{ cwd: joystick_postgresql_bin_path, shell: '/bin/bash' }
|
|
113
|
+
) : child_process.spawn(
|
|
114
|
+
joystick_postgres_path,
|
|
115
|
+
[
|
|
116
|
+
`-p ${postgresql_port}`,
|
|
117
|
+
'-D',
|
|
118
|
+
get_platform_safe_path(`.joystick/data/postgresql_${port}`),
|
|
119
|
+
],
|
|
120
|
+
);
|
|
121
|
+
|
|
122
|
+
return new Promise((resolve) => {
|
|
123
|
+
database_process.stderr.on('data', async (data) => {
|
|
124
|
+
const stderr = data?.toString();
|
|
125
|
+
|
|
126
|
+
if (stderr.includes('database system is ready to accept connections')) {
|
|
127
|
+
const process_id = (await get_process_id_from_port(postgresql_port))?.replace('\n', '');
|
|
128
|
+
const createdb_command = process.platform === 'linux'
|
|
129
|
+
? `sudo -u postgres ${joystick_createdb_path} -h 127.0.0.1 -p ${postgresql_port} app`
|
|
130
|
+
: `${joystick_createdb_path} -h 127.0.0.1 -p ${postgresql_port} app`;
|
|
131
|
+
|
|
132
|
+
exec(createdb_command).then(() => {
|
|
133
|
+
resolve(parseInt(process_id, 10));
|
|
134
|
+
}).catch(({ stderr: error }) => {
|
|
135
|
+
if (error && error.includes('database "app" already exists')) {
|
|
136
|
+
resolve(parseInt(process_id, 10));
|
|
137
|
+
} else {
|
|
138
|
+
console.log(error);
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
});
|
|
143
|
+
|
|
144
|
+
database_process.stdout.on('data', async (data) => {
|
|
145
|
+
// NOTE: PostgreSQL (16) appears to route all output to stderr(?!). Have this for posterity
|
|
146
|
+
// sake and to avoid trapping useful information.
|
|
147
|
+
const stdout = data?.toString();
|
|
148
|
+
console.log(stdout);
|
|
149
|
+
});
|
|
150
|
+
});
|
|
151
|
+
} catch (exception) {
|
|
152
|
+
console.warn(exception);
|
|
153
|
+
process.exit(1);
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
export default start_postgresql;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { promisify } from 'util';
|
|
2
|
+
import { execFile, exec } from 'child_process';
|
|
3
|
+
import fs from 'fs';
|
|
4
|
+
import os from 'os';
|
|
5
|
+
import path from 'path';
|
|
6
|
+
|
|
7
|
+
const exec_file_async = promisify(execFile);
|
|
8
|
+
const exec_async = promisify(exec);
|
|
9
|
+
const mkdir_async = promisify(fs.mkdir);
|
|
10
|
+
const symlink_async = promisify(fs.symlink);
|
|
11
|
+
const access_async = promisify(fs.access);
|
|
12
|
+
const writeFile_async = promisify(fs.writeFile);
|
|
13
|
+
|
|
14
|
+
const download_postgresql_linux = async () => {
|
|
15
|
+
try {
|
|
16
|
+
const postgresql_version = '16';
|
|
17
|
+
const system_bin_path = `/usr/lib/postgresql/${postgresql_version}/bin`;
|
|
18
|
+
const joystick_bin_path = path.join(os.homedir(), '.joystick', 'databases', 'postgresql', 'bin');
|
|
19
|
+
const symlink_path = path.join(joystick_bin_path, 'bin');
|
|
20
|
+
const postgres_executable = path.join(symlink_path, 'postgres');
|
|
21
|
+
|
|
22
|
+
// Check if PostgreSQL is already installed in the desired location
|
|
23
|
+
try {
|
|
24
|
+
await access_async(postgres_executable, fs.constants.X_OK);
|
|
25
|
+
return;
|
|
26
|
+
} catch (error) {
|
|
27
|
+
// PostgreSQL is not installed or not in the desired location, proceed with installation
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
process.loader.print('PostgreSQL not found. Installing... (this may take a few minutes)');
|
|
31
|
+
|
|
32
|
+
// Ensure wget is installed
|
|
33
|
+
await exec_file_async('sudo', ['apt-get', 'install', '-y', 'wget']);
|
|
34
|
+
|
|
35
|
+
// Add PostgreSQL 16 repository
|
|
36
|
+
await exec_file_async('sudo', ['sh', '-c', 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list']);
|
|
37
|
+
|
|
38
|
+
// Download the PostgreSQL public key
|
|
39
|
+
const { stdout: keyContent } = await exec_async('wget -qO- https://www.postgresql.org/media/keys/ACCC4CF8.asc');
|
|
40
|
+
|
|
41
|
+
// Save the key to a temporary file
|
|
42
|
+
const tempKeyPath = '/tmp/postgresql-ACCC4CF8.asc';
|
|
43
|
+
await writeFile_async(tempKeyPath, keyContent);
|
|
44
|
+
|
|
45
|
+
// Add the key
|
|
46
|
+
await exec_file_async('sudo', ['apt-key', 'add', tempKeyPath]);
|
|
47
|
+
|
|
48
|
+
// Remove the temporary key file
|
|
49
|
+
await exec_file_async('rm', [tempKeyPath]);
|
|
50
|
+
|
|
51
|
+
// Update package list and install PostgreSQL 16
|
|
52
|
+
await exec_file_async('sudo', ['apt-get', 'update']);
|
|
53
|
+
await exec_file_async('sudo', ['apt-get', 'install', '-y', `postgresql-${postgresql_version}`, `postgresql-client-${postgresql_version}`, `postgresql-server-dev-${postgresql_version}`]);
|
|
54
|
+
|
|
55
|
+
await mkdir_async(joystick_bin_path, { recursive: true });
|
|
56
|
+
|
|
57
|
+
try {
|
|
58
|
+
await symlink_async(system_bin_path, symlink_path);
|
|
59
|
+
} catch (symlink_error) {
|
|
60
|
+
if (symlink_error.code !== 'EEXIST') {
|
|
61
|
+
console.error('Error creating symlink:', symlink_error);
|
|
62
|
+
throw symlink_error;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
try {
|
|
67
|
+
await access_async(postgres_executable, fs.constants.X_OK);
|
|
68
|
+
} catch (access_error) {
|
|
69
|
+
console.error('Error accessing PostgreSQL executable:', access_error);
|
|
70
|
+
throw access_error;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
process.loader.print('PostgreSQL installed!');
|
|
74
|
+
} catch (error) {
|
|
75
|
+
console.error('Error installing PostgreSQL:', error);
|
|
76
|
+
throw error;
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
export default download_postgresql_linux;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import os from 'os';
|
|
4
|
+
import { promisify } from 'util';
|
|
5
|
+
import { pipeline } from 'stream';
|
|
6
|
+
import { execFile } from 'child_process';
|
|
7
|
+
|
|
8
|
+
const streamPipeline = promisify(pipeline);
|
|
9
|
+
const execFileAsync = promisify(execFile);
|
|
10
|
+
|
|
11
|
+
const download_postgresql_macos = async (version_path = null) => {
|
|
12
|
+
const base_directory = path.join(os.homedir(), '.joystick', 'databases', 'postgresql');
|
|
13
|
+
const bin_directory = path.join(base_directory, 'bin');
|
|
14
|
+
const bin_bin_directory = path.join(bin_directory, 'bin');
|
|
15
|
+
|
|
16
|
+
if (await check_if_file_exists(base_directory)) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
await create_directories(base_directory, bin_directory, bin_bin_directory);
|
|
21
|
+
|
|
22
|
+
const download_url = 'https://get.enterprisedb.com/postgresql/postgresql-16.0-1-osx-binaries.zip';
|
|
23
|
+
const file_name = path.basename(new URL(download_url).pathname);
|
|
24
|
+
const file_path = path.join(base_directory, file_name);
|
|
25
|
+
|
|
26
|
+
process.loader.print('PostgreSQL not found. Downloading... (this may take a few minutes)');
|
|
27
|
+
await download_file(download_url, file_path);
|
|
28
|
+
|
|
29
|
+
process.loader.print('Installing PostgreSQL...');
|
|
30
|
+
|
|
31
|
+
// Extract PostgreSQL
|
|
32
|
+
const temp_directory = path.join(base_directory, 'temp');
|
|
33
|
+
await fs.promises.mkdir(temp_directory, { recursive: true });
|
|
34
|
+
await execFileAsync('unzip', ['-q', file_path, '-d', temp_directory]);
|
|
35
|
+
|
|
36
|
+
// Move binaries to bin/bin
|
|
37
|
+
const extracted_bin_path = path.join(temp_directory, 'pgsql', 'bin');
|
|
38
|
+
const files = await fs.promises.readdir(extracted_bin_path);
|
|
39
|
+
for (const file of files) {
|
|
40
|
+
await fs.promises.rename(path.join(extracted_bin_path, file), path.join(bin_bin_directory, file));
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Move other necessary directories
|
|
44
|
+
const directories_to_move = ['share', 'lib', 'include'];
|
|
45
|
+
for (const dir of directories_to_move) {
|
|
46
|
+
const src_path = path.join(temp_directory, 'pgsql', dir);
|
|
47
|
+
const dest_path = path.join(bin_directory, dir);
|
|
48
|
+
if (await fs.promises.access(src_path).then(() => true).catch(() => false)) {
|
|
49
|
+
await fs.promises.rename(src_path, dest_path);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
// Clean up
|
|
54
|
+
await fs.promises.unlink(file_path);
|
|
55
|
+
await fs.promises.rm(temp_directory, { recursive: true, force: true });
|
|
56
|
+
|
|
57
|
+
await make_file_executable(bin_bin_directory);
|
|
58
|
+
process.loader.print('PostgreSQL installed!');
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
const download_file = async (url, file_path) => {
|
|
62
|
+
const response = await fetch(url);
|
|
63
|
+
if (!response.ok) {
|
|
64
|
+
throw new Error(`Failed to download: ${response.statusText}`);
|
|
65
|
+
}
|
|
66
|
+
await streamPipeline(response.body, fs.createWriteStream(file_path));
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
const check_if_file_exists = async (file_path) => {
|
|
70
|
+
try {
|
|
71
|
+
await fs.promises.access(file_path);
|
|
72
|
+
return true;
|
|
73
|
+
} catch {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
const create_directories = async (base_directory, bin_directory, bin_bin_directory) => {
|
|
79
|
+
await fs.promises.mkdir(base_directory, { recursive: true });
|
|
80
|
+
await fs.promises.mkdir(bin_directory, { recursive: true });
|
|
81
|
+
await fs.promises.mkdir(bin_bin_directory, { recursive: true });
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
const make_file_executable = async (directory) => {
|
|
85
|
+
const files = await fs.promises.readdir(directory);
|
|
86
|
+
for (const file of files) {
|
|
87
|
+
await fs.promises.chmod(path.join(directory, file), '755');
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
export default download_postgresql_macos;
|