@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,436 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import child_process from 'child_process';
|
|
3
|
+
import fs from 'fs';
|
|
4
|
+
import os from 'os';
|
|
5
|
+
import path, { dirname } from "path";
|
|
6
|
+
import { fileURLToPath } from "url";
|
|
7
|
+
import util from 'util';
|
|
8
|
+
import check_if_port_occupied from './check_if_port_occupied.js';
|
|
9
|
+
import cli_log from '../cli_log.js';
|
|
10
|
+
import get_database_process_ids from './get_database_process_ids.js';
|
|
11
|
+
import get_platform_safe_path from '../get_platform_safe_path.js';
|
|
12
|
+
import kill_port_process from '../kill_port_process.js';
|
|
13
|
+
import load_settings from '../load_settings.js';
|
|
14
|
+
import Loader from '../loader.js';
|
|
15
|
+
import path_exists from '../path_exists.js';
|
|
16
|
+
import required_files from '../required_files.js';
|
|
17
|
+
import start_app_server from './start_app_server.js';
|
|
18
|
+
import start_databases from './start_databases.js';
|
|
19
|
+
import start_hmr_server from './start_hmr_server.js';
|
|
20
|
+
import watch_for_changes from './watch_for_changes/index.js';
|
|
21
|
+
import constants from '../constants.js';
|
|
22
|
+
import kill_process_ids from './kill_process_ids.js';
|
|
23
|
+
import run_tests from './run_tests.js';
|
|
24
|
+
import debounce from '../debounce.js';
|
|
25
|
+
import download_database_binary from './databases/download_database_binary.js';
|
|
26
|
+
|
|
27
|
+
const { stat } = fs.promises;
|
|
28
|
+
const exec = util.promisify(child_process.exec);
|
|
29
|
+
|
|
30
|
+
const node_major_version = parseInt(
|
|
31
|
+
process?.version?.split(".")[0]?.replace("v", ""),
|
|
32
|
+
10
|
|
33
|
+
);
|
|
34
|
+
|
|
35
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
36
|
+
const __dirname = dirname(__filename);
|
|
37
|
+
|
|
38
|
+
const process_ids = [];
|
|
39
|
+
|
|
40
|
+
const handle_run_tests = async (watch = false) => {
|
|
41
|
+
const database_process_ids = get_database_process_ids();
|
|
42
|
+
await run_tests({
|
|
43
|
+
watch,
|
|
44
|
+
__dirname,
|
|
45
|
+
process_ids: [
|
|
46
|
+
...process_ids,
|
|
47
|
+
...database_process_ids,
|
|
48
|
+
],
|
|
49
|
+
cleanup_process: process.cleanup_process,
|
|
50
|
+
});
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
const handle_signal_events = (process_ids = [], node_major_version = 0, __dirname = '') => {
|
|
54
|
+
const exec_argv = ["--no-warnings"];
|
|
55
|
+
|
|
56
|
+
if (node_major_version < 19) {
|
|
57
|
+
exec_argv.push("--experimental-specifier-resolution=node");
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
const cleanup_process = child_process.fork(
|
|
61
|
+
path.resolve(`${__dirname}/cleanup.js`),
|
|
62
|
+
[],
|
|
63
|
+
{
|
|
64
|
+
// NOTE: Run in detached mode so when parent process dies, the child still runs
|
|
65
|
+
// and cleanup completes. Keep silent as we don't wan't/expect any messages.
|
|
66
|
+
detached: true,
|
|
67
|
+
silent: true,
|
|
68
|
+
}
|
|
69
|
+
);
|
|
70
|
+
|
|
71
|
+
process.cleanup_process = cleanup_process;
|
|
72
|
+
|
|
73
|
+
process.on("SIGINT", async () => {
|
|
74
|
+
const database_process_ids = get_database_process_ids();
|
|
75
|
+
cleanup_process.send(JSON.stringify(({ process_ids: [...process_ids, ...database_process_ids] })));
|
|
76
|
+
process.exit();
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
process.on("SIGTERM", async () => {
|
|
80
|
+
const database_process_ids = get_database_process_ids();
|
|
81
|
+
cleanup_process.send(JSON.stringify(({ process_ids: [...process_ids, ...database_process_ids] })));
|
|
82
|
+
process.exit();
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
const handle_signal_hmr_update = async (jobs = []) => {
|
|
87
|
+
const has_settings_change = jobs?.find((job) => (job?.path?.match(constants.SETTINGS_FILE_NAME_REGEX))?.length > 0);
|
|
88
|
+
const has_i18n_change = jobs?.find((job) => job?.path?.includes('i18n'));
|
|
89
|
+
const has_index_html_change = jobs?.find((job) => job?.path?.includes('index.html'));
|
|
90
|
+
const has_index_css_change = jobs?.find((job) => {
|
|
91
|
+
return job?.path?.includes('index.css') || job?.path?.includes('css/');
|
|
92
|
+
});
|
|
93
|
+
const has_index_client_change = jobs?.find((job) => job?.path?.includes('index.client.js'));
|
|
94
|
+
|
|
95
|
+
process.hmr_server_process.send(JSON.stringify({
|
|
96
|
+
type: 'FILE_CHANGE',
|
|
97
|
+
settings: has_settings_change ? await load_settings(process.env.NODE_ENV) : null,
|
|
98
|
+
i18n_change: !!has_i18n_change,
|
|
99
|
+
index_html_change: !!has_index_html_change,
|
|
100
|
+
index_css_change: !!has_index_css_change,
|
|
101
|
+
index_client_change: !!has_index_client_change,
|
|
102
|
+
}));
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
const handle_hmr_server_process_messages = (node_major_version = 0, watch = false, old_settings = {}) => {
|
|
106
|
+
process.hmr_server_process.on("message", async (message) => {
|
|
107
|
+
const process_messages = [
|
|
108
|
+
"HAS_HMR_CONNECTIONS",
|
|
109
|
+
"HAS_NO_HMR_CONNECTIONS",
|
|
110
|
+
"HMR_UPDATE_COMPLETE",
|
|
111
|
+
];
|
|
112
|
+
|
|
113
|
+
if (!process_messages.includes(message?.type)) {
|
|
114
|
+
process.loader.print(message);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
if (message?.type === "HAS_HMR_CONNECTIONS") {
|
|
118
|
+
process.hmr_server_process.has_connections = true;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if (message?.type === "HAS_NO_HMR_CONNECTIONS") {
|
|
122
|
+
process.hmr_server_process.has_connections = false;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
if (message?.type === "HMR_UPDATE_COMPLETE") {
|
|
126
|
+
if (process.app_server_process && !process.app_server_restarting) {
|
|
127
|
+
process.app_server_restarting = true;
|
|
128
|
+
handle_restart_app_server(node_major_version, watch, old_settings);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
const handle_hmr_server_process_stdio = () => {
|
|
135
|
+
process.hmr_server_process.on("error", (error) => {
|
|
136
|
+
cli_log(error.toString(), {
|
|
137
|
+
level: "danger",
|
|
138
|
+
docs: "https://github.com/cheatcode/joystick",
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
process.hmr_server_process.stdout.on("data", (data) => {
|
|
143
|
+
console.log(data.toString());
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
process.hmr_server_process.stderr.on("data", (data) => {
|
|
147
|
+
cli_log(data.toString(), {
|
|
148
|
+
level: "danger",
|
|
149
|
+
docs: "https://github.com/cheatcode/joystick",
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
const handle_start_hmr_server = (node_major_version = 0, __dirname = '', watch = false, old_settings = {}) => {
|
|
155
|
+
process.hmr_server_process = start_hmr_server(node_major_version, __dirname);
|
|
156
|
+
process_ids.push(process.hmr_server_process?.pid);
|
|
157
|
+
handle_hmr_server_process_stdio();
|
|
158
|
+
handle_hmr_server_process_messages(node_major_version, watch, old_settings);
|
|
159
|
+
};
|
|
160
|
+
|
|
161
|
+
const check_if_database_changes = async (old_settings = {}) => {
|
|
162
|
+
const new_settings = await load_settings(process.env.NODE_ENV);
|
|
163
|
+
const new_databse_settings = new_settings?.config?.databases ? JSON.stringify(new_settings?.config?.databases) : '';
|
|
164
|
+
const old_database_settings = old_settings?.config?.databases ? JSON.stringify(old_settings?.config?.databases) : '';
|
|
165
|
+
return new_databse_settings !== old_database_settings;
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
const handle_restart_app_server = async (node_major_version = 0, watch = false, old_settings = null) => {
|
|
169
|
+
debounce(async () => {
|
|
170
|
+
const has_database_changes = await check_if_database_changes(old_settings);
|
|
171
|
+
|
|
172
|
+
if (has_database_changes) {
|
|
173
|
+
const database_process_ids = get_database_process_ids();
|
|
174
|
+
|
|
175
|
+
cli_log(`Database configuration has changed in settings.${process.env.NODE_ENV}.json. Please restart your app to add, change, or remove databases.`, {
|
|
176
|
+
level: "danger",
|
|
177
|
+
docs: "https://cheatcode.co/docs/joystick/structure",
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
kill_process_ids([
|
|
181
|
+
process.hmr_server_process?.pid,
|
|
182
|
+
process.app_server_process?.pid,
|
|
183
|
+
...database_process_ids,
|
|
184
|
+
]);
|
|
185
|
+
|
|
186
|
+
process.exit(0);
|
|
187
|
+
} else {
|
|
188
|
+
kill_process_ids([
|
|
189
|
+
...(process.app_server_process.external_process_ids || []),
|
|
190
|
+
]);
|
|
191
|
+
|
|
192
|
+
await kill_port_process(process.env.PORT);
|
|
193
|
+
handle_start_app_server(node_major_version, watch);
|
|
194
|
+
}
|
|
195
|
+
}, 300);
|
|
196
|
+
};
|
|
197
|
+
|
|
198
|
+
const handle_app_server_process_stdio = (watch = false) => {
|
|
199
|
+
// NOTE: Default this in case we never get any external process IDs.
|
|
200
|
+
process.app_server_process.external_process_ids = [];
|
|
201
|
+
|
|
202
|
+
process.app_server_process.on('message', (message_from_child) => {
|
|
203
|
+
if (message_from_child?.external_process_id) {
|
|
204
|
+
process.app_server_process.external_process_ids = [
|
|
205
|
+
...(process.app_server_process.external_process_ids || []),
|
|
206
|
+
message_from_child?.external_process_id,
|
|
207
|
+
];
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
process.app_server_process.on('error', (error) => {
|
|
212
|
+
cli_log(error.toString(), {
|
|
213
|
+
level: "danger",
|
|
214
|
+
docs: "https://github.com/cheatcode/joystick",
|
|
215
|
+
});
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
process.app_server_process.stdout.on("data", (data) => {
|
|
219
|
+
const stdout = data.toString();
|
|
220
|
+
const is_startup_notification = stdout.includes("App running at:");
|
|
221
|
+
|
|
222
|
+
if (stdout && is_startup_notification && process.env.NODE_ENV !== 'test') {
|
|
223
|
+
process.loader.print(stdout);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
if (stdout && !is_startup_notification && !stdout.includes("BUILD_ERROR")) {
|
|
227
|
+
console.log(stdout);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
// NOTE: Run tests here so we can guarantee app server is running. Do a slight delay
|
|
231
|
+
// to ensure that test routes are registered.
|
|
232
|
+
if (stdout && is_startup_notification && process.env.NODE_ENV === 'test') {
|
|
233
|
+
handle_run_tests(watch);
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
|
|
237
|
+
process.app_server_process.stderr.on("data", (data) => {
|
|
238
|
+
cli_log(data.toString(), {
|
|
239
|
+
level: "danger",
|
|
240
|
+
docs: "https://cheatcode.co/docs/joystick",
|
|
241
|
+
});
|
|
242
|
+
});
|
|
243
|
+
};
|
|
244
|
+
|
|
245
|
+
const handle_start_app_server = (node_major_version = 0, watch = false) => {
|
|
246
|
+
process.app_server_process = start_app_server(node_major_version, watch);
|
|
247
|
+
process_ids.push(process.app_server_process?.pid);
|
|
248
|
+
handle_app_server_process_stdio(watch);
|
|
249
|
+
process.app_server_restarting = false;
|
|
250
|
+
};
|
|
251
|
+
|
|
252
|
+
const install_missing_databases = async (settings = {}) => {
|
|
253
|
+
const required_databases = settings?.config?.databases?.map((database = {}) => {
|
|
254
|
+
return database?.provider;
|
|
255
|
+
});
|
|
256
|
+
|
|
257
|
+
for (let i = 0; i < required_databases?.length; i += 1) {
|
|
258
|
+
const provider_name = required_databases[i];
|
|
259
|
+
await download_database_binary(provider_name);
|
|
260
|
+
}
|
|
261
|
+
};
|
|
262
|
+
|
|
263
|
+
const set_process_variables = (development_server_options = {}, port = 2600) => {
|
|
264
|
+
process.title = development_server_options?.environment === 'test' ? "joystick_test" : 'joystick';
|
|
265
|
+
process.project_folder = path.basename(process.cwd());
|
|
266
|
+
process.loader = new Loader();
|
|
267
|
+
|
|
268
|
+
if (development_server_options?.environment === 'test') {
|
|
269
|
+
process.loader.print("Initializing test environment...");
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
process.env.LOGS_PATH = development_server_options?.logs || null;
|
|
273
|
+
process.env.NODE_ENV = development_server_options?.environment || "development";
|
|
274
|
+
process.env.PORT = port;
|
|
275
|
+
process.env.IS_DEBUG_MODE = development_server_options?.debug;
|
|
276
|
+
};
|
|
277
|
+
|
|
278
|
+
const warn_app_port_occupied = (port = 2600) => {
|
|
279
|
+
cli_log(`Port ${port} is already occupied. To start Joystick on this port, clear it and try again.`, {
|
|
280
|
+
level: 'danger',
|
|
281
|
+
});
|
|
282
|
+
|
|
283
|
+
process.exit(0);
|
|
284
|
+
};
|
|
285
|
+
|
|
286
|
+
const get_port = (port = 2600) => {
|
|
287
|
+
return parseInt(port || 2600, 10);
|
|
288
|
+
};
|
|
289
|
+
|
|
290
|
+
const clean_up_existing_build = async () => {
|
|
291
|
+
const build_path = get_platform_safe_path(`${process.cwd()}/.joystick/build`);
|
|
292
|
+
|
|
293
|
+
if (await path_exists(build_path)) {
|
|
294
|
+
await exec(`${process.platform === 'win32' ? 'rmdir /s /q' : 'rm -rf'} ${build_path}`);
|
|
295
|
+
}
|
|
296
|
+
};
|
|
297
|
+
|
|
298
|
+
const check_for_required_files = async () => {
|
|
299
|
+
const missing_files = [];
|
|
300
|
+
|
|
301
|
+
for (let i = 0; i < required_files?.length; i += 1) {
|
|
302
|
+
const required_file = required_files[i];
|
|
303
|
+
const exists = await path_exists(`${process.cwd()}/${required_file.path}`);
|
|
304
|
+
const stats = exists && await stat(`${process.cwd()}/${required_file.path}`);
|
|
305
|
+
|
|
306
|
+
if (required_file && required_file.type === "file" && (!exists || (exists && !stats.isFile()))) {
|
|
307
|
+
missing_files.push({ type: 'file', path: required_file.path });
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
if (required_file && required_file.type === "directory" && (!exists || (exists && !stats.isDirectory()))) {
|
|
311
|
+
missing_files.push({ type: 'directory', path: required_file.path });
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
if (missing_files?.length > 0) {
|
|
316
|
+
const files = missing_files?.filter((path) => path.type === 'file');
|
|
317
|
+
const directories = missing_files?.filter((path) => path.type === 'directory');
|
|
318
|
+
|
|
319
|
+
let error = `The following paths are missing and required in a Joystick project:\n\n`;
|
|
320
|
+
|
|
321
|
+
if (files?.length > 0) {
|
|
322
|
+
error += ` ${chalk.yellow('>')} Required Files:\n\n`;
|
|
323
|
+
|
|
324
|
+
for (let i = 0; i < files?.length; i += 1) {
|
|
325
|
+
const file = files[i];
|
|
326
|
+
const is_last_file = i +1 === files?.length;
|
|
327
|
+
error += ` ${chalk.red(`/${file.path}\n${is_last_file && directories?.length > 0 ? '\n' : ''}`)}`;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
|
|
331
|
+
if (directories?.length > 0) {
|
|
332
|
+
error += ` ${chalk.yellow('>')} Required Directories:\n\n`;
|
|
333
|
+
|
|
334
|
+
for (let i = 0; i < directories?.length; i += 1) {
|
|
335
|
+
const file = directories[i];
|
|
336
|
+
error += ` ${chalk.red(`/${file.path}\n`)}`;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
cli_log(error, {
|
|
341
|
+
level: "danger",
|
|
342
|
+
docs: "https://cheatcode.co/docs/joystick/structure",
|
|
343
|
+
});
|
|
344
|
+
|
|
345
|
+
process.exit(0);
|
|
346
|
+
}
|
|
347
|
+
};
|
|
348
|
+
|
|
349
|
+
const warn_invalid_joystick_environment = async () => {
|
|
350
|
+
const has_joystick_folder = await path_exists(`${process.cwd()}/.joystick`);
|
|
351
|
+
const has_tests_folder = await path_exists(`${process.cwd()}/tests`);
|
|
352
|
+
|
|
353
|
+
if (process.env.NODE_ENV === 'test' && (!has_joystick_folder || !has_tests_folder)) {
|
|
354
|
+
cli_log(
|
|
355
|
+
"joystick test must be run in a directory with a .joystick folder and tests folder.",
|
|
356
|
+
{
|
|
357
|
+
level: "danger",
|
|
358
|
+
docs: "https://cheatcode.co/docs/joystick/cli/test",
|
|
359
|
+
}
|
|
360
|
+
);
|
|
361
|
+
|
|
362
|
+
process.exit(0);
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
if (process.env.NODE_ENV !== 'test' && !has_joystick_folder) {
|
|
366
|
+
cli_log(
|
|
367
|
+
"joystick start must be run in a directory with a .joystick folder.",
|
|
368
|
+
{
|
|
369
|
+
level: "danger",
|
|
370
|
+
docs: "https://cheatcode.co/docs/joystick/cli/start",
|
|
371
|
+
}
|
|
372
|
+
);
|
|
373
|
+
|
|
374
|
+
process.exit(0);
|
|
375
|
+
}
|
|
376
|
+
};
|
|
377
|
+
|
|
378
|
+
const development_server = async (development_server_options = {}) => {
|
|
379
|
+
await warn_invalid_joystick_environment();
|
|
380
|
+
await check_for_required_files();
|
|
381
|
+
|
|
382
|
+
await clean_up_existing_build();
|
|
383
|
+
|
|
384
|
+
const port = get_port(development_server_options?.port);
|
|
385
|
+
const app_port_occupied = await check_if_port_occupied(port);
|
|
386
|
+
const hmr_port_occupied = await check_if_port_occupied(port + 1);
|
|
387
|
+
|
|
388
|
+
if (app_port_occupied) {
|
|
389
|
+
warn_app_port_occupied(port);
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
if (hmr_port_occupied) {
|
|
393
|
+
kill_port_process(port);
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
set_process_variables(development_server_options, port);
|
|
397
|
+
|
|
398
|
+
const settings = await load_settings(process.env.NODE_ENV);
|
|
399
|
+
|
|
400
|
+
await install_missing_databases(settings);
|
|
401
|
+
|
|
402
|
+
await start_databases({
|
|
403
|
+
environment: process.env.NODE_ENV,
|
|
404
|
+
port,
|
|
405
|
+
settings
|
|
406
|
+
});
|
|
407
|
+
|
|
408
|
+
watch_for_changes({
|
|
409
|
+
hot_module_reload: (jobs = []) => handle_signal_hmr_update(jobs),
|
|
410
|
+
restart_app_server: () => handle_restart_app_server(
|
|
411
|
+
node_major_version,
|
|
412
|
+
development_server_options?.watch,
|
|
413
|
+
settings,
|
|
414
|
+
),
|
|
415
|
+
start_app_server: () => handle_start_app_server(
|
|
416
|
+
node_major_version,
|
|
417
|
+
development_server_options?.watch,
|
|
418
|
+
|
|
419
|
+
),
|
|
420
|
+
start_hmr_server: development_server_options?.environment !== 'test' ? () => handle_start_hmr_server(
|
|
421
|
+
node_major_version,
|
|
422
|
+
__dirname,
|
|
423
|
+
development_server_options?.watch,
|
|
424
|
+
settings,
|
|
425
|
+
) : null,
|
|
426
|
+
}, {
|
|
427
|
+
excluded_paths: settings?.config?.build?.excluded_paths,
|
|
428
|
+
custom_copy_paths: settings?.config?.build?.copy_paths?.map((path) => {
|
|
429
|
+
return { path };
|
|
430
|
+
}) || [],
|
|
431
|
+
});
|
|
432
|
+
|
|
433
|
+
handle_signal_events(process_ids, node_major_version, __dirname);
|
|
434
|
+
};
|
|
435
|
+
|
|
436
|
+
export default development_server;
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import child_process from "child_process";
|
|
2
|
+
import cli_log from "../cli_log.js";
|
|
3
|
+
|
|
4
|
+
const handle_ava_stderr = (stderr = '') => {
|
|
5
|
+
// NOTE: Squash output about using a configuration file (we always do in the framework).
|
|
6
|
+
if (stderr?.includes('Using configuration')) {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
if (stderr?.includes('No tests found')) {
|
|
11
|
+
return cli_log('No tests found. Add tests in the /tests folder at the root of your Joystick app.', {
|
|
12
|
+
level: 'danger',
|
|
13
|
+
docs: 'https://cheatcode.co/docs/joystick/test/setup',
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
console.log(stderr);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
const handle_ava_stdout = (stdout = '') => {
|
|
21
|
+
// NOTE: Squash output about using a configuration file (we always do in the framework).
|
|
22
|
+
if (stdout?.includes('Using configuration')) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
if (stdout?.includes('No tests found in')) {
|
|
27
|
+
const [message] = stdout?.split(',');
|
|
28
|
+
return console.log(`${message}\n`);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
console.log(stdout);
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const handle_ava_stdio = (ava = {}, run_tests_options = {}) => {
|
|
35
|
+
ava.stdout.on('data', function (data) {
|
|
36
|
+
const string = data.toString();
|
|
37
|
+
handle_ava_stdout(string, run_tests_options);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
ava.stderr.on('data', function (data) {
|
|
41
|
+
const string = data.toString();
|
|
42
|
+
handle_ava_stderr(string, run_tests_options);
|
|
43
|
+
});
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const run_tests = (run_tests_options = {}) => {
|
|
47
|
+
// NOTE: A little bananas to reason through this. In order for Ava to run w/o errors,
|
|
48
|
+
// the Ava binary being run here has to be identical to the one used in @joystick.js/test.
|
|
49
|
+
// That would equal the copy of Ava that's installed in a Joystick app's node_modules
|
|
50
|
+
// directory, not the node_modules directory of the CLI here. We can guarantee that will
|
|
51
|
+
// exist for the CLI here because a developer has to install @joystick.js/test which will
|
|
52
|
+
// add Ava as a dependency to their app in order to write tests.
|
|
53
|
+
const ava_path = `${process.cwd()}/node_modules/.bin/ava`;
|
|
54
|
+
|
|
55
|
+
return new Promise((resolve) => {
|
|
56
|
+
// NOTE: Despite using the app's node_modules path to reference Ava, we still want to reference
|
|
57
|
+
// the internal path here for the default test config in /lib/dev/tests.config.js.
|
|
58
|
+
const ava = child_process.exec(`DEBUG=ava:watcher && ${ava_path} --config ${run_tests_options?.__dirname}/ava_config.js ${run_tests_options?.watch ? '--watch' : ''}`, {
|
|
59
|
+
stdio: 'inherit',
|
|
60
|
+
env: {
|
|
61
|
+
...(process.env),
|
|
62
|
+
databases: process.databases,
|
|
63
|
+
FORCE_COLOR: "1"
|
|
64
|
+
}
|
|
65
|
+
}, (error) => {
|
|
66
|
+
if (!error) {
|
|
67
|
+
// NOTE: Do this here because the standard SIGINT and SIGTERM hooks the dev process
|
|
68
|
+
// listens for don't catch a clean exit (and the process.exit() hook fires after exit).
|
|
69
|
+
run_tests_options.cleanup_process.send(JSON.stringify(({ process_ids: run_tests_options?.process_ids })));
|
|
70
|
+
process.exit(0);
|
|
71
|
+
} else {
|
|
72
|
+
// NOTE: Do not report any Ava errors here because they're picked up by the handle_ava_stdio();
|
|
73
|
+
// hook below. Just do a clean exit here so Node doesn't hang.
|
|
74
|
+
run_tests_options.cleanup_process.send(JSON.stringify(({ process_ids: run_tests_options?.process_ids })));
|
|
75
|
+
process.exit(0);
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
handle_ava_stdio(ava, run_tests_options);
|
|
80
|
+
});
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
export default run_tests;
|
|
84
|
+
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import child_process from "child_process";
|
|
2
|
+
import path from "path";
|
|
3
|
+
|
|
4
|
+
const start_app_server_process = (exec_argv = [], watch = false) => {
|
|
5
|
+
if (process.env.NODE_ENV !== 'test') {
|
|
6
|
+
process.loader.print('Starting app...');
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
return child_process.fork(
|
|
10
|
+
path.resolve(".joystick/build/index.server.js"),
|
|
11
|
+
[],
|
|
12
|
+
{
|
|
13
|
+
execArgv: exec_argv,
|
|
14
|
+
// NOTE: Pipe stdin, stdout, and stderr. IPC establishes a message channel so we
|
|
15
|
+
// communicate with the child_process.
|
|
16
|
+
silent: true,
|
|
17
|
+
env: {
|
|
18
|
+
FORCE_COLOR: "1",
|
|
19
|
+
LOGS_PATH: process.env.LOGS_PATH,
|
|
20
|
+
NODE_ENV: process.env.NODE_ENV,
|
|
21
|
+
ROOT_URL: process.env.ROOT_URL,
|
|
22
|
+
PORT: process.env.PORT,
|
|
23
|
+
JOYSTICK_SETTINGS: process.env.JOYSTICK_SETTINGS,
|
|
24
|
+
},
|
|
25
|
+
}
|
|
26
|
+
);
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
const get_exec_args = (node_major_version = 0) => {
|
|
30
|
+
const exec_argv = ["--no-warnings"];
|
|
31
|
+
|
|
32
|
+
if (process.env.NODE_ENV === 'development') {
|
|
33
|
+
// NOTE: Ensure that localhost is not swapped with ::1 (IPv6 local address) in Node v17-v19.
|
|
34
|
+
// See here for information: https://github.com/nodejs/node/issues/40702#issuecomment-958157082
|
|
35
|
+
exec_argv.push("--dns-result-order=ipv4first");
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (node_major_version < 19) {
|
|
39
|
+
exec_argv.push("--experimental-specifier-resolution=node");
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if (process.env.NODE_ENV === "development" && process.env.IS_DEBUG_MODE === "true") {
|
|
43
|
+
exec_argv.push("--inspect");
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
return exec_argv;
|
|
47
|
+
};
|
|
48
|
+
|
|
49
|
+
const start_app_server = (node_major_version = 0, watch = false) => {
|
|
50
|
+
const exec_argv = get_exec_args(node_major_version);
|
|
51
|
+
const app_server_process = start_app_server_process(exec_argv, watch);
|
|
52
|
+
return app_server_process;
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
export default start_app_server;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
/* eslint-disable consistent-return */
|
|
2
|
+
|
|
3
|
+
import cli_log from "../cli_log.js";
|
|
4
|
+
import provider_map from "./databases/provider_map.js";
|
|
5
|
+
import types from '../types.js';
|
|
6
|
+
|
|
7
|
+
const start_database_provider = async (
|
|
8
|
+
environment = 'development',
|
|
9
|
+
database = {},
|
|
10
|
+
port = 2610,
|
|
11
|
+
has_multiple_of_provider = false
|
|
12
|
+
) => {
|
|
13
|
+
const provider = provider_map[database?.provider];
|
|
14
|
+
|
|
15
|
+
if (provider) {
|
|
16
|
+
if (process.env.NODE_ENV !== 'test') {
|
|
17
|
+
process.loader.print(`Starting ${provider?.name}${database?.name ? ` (${database?.name})`: ''}...`);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
process._databases = {
|
|
21
|
+
...(process._databases || {}),
|
|
22
|
+
[database.provider]: !has_multiple_of_provider ? await provider.connect(database, port, environment) : {
|
|
23
|
+
...((process._databases && process._databases[database.provider]) || {}),
|
|
24
|
+
[database?.name || `${database.provider}_${port}`]: await provider.connect(database, port, environment)
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
const start_database_providers = async (databases = [], database_port = 2610, environment = '') => {
|
|
31
|
+
for (let i = 0; i < databases?.length; i += 1) {
|
|
32
|
+
const database = databases[i];
|
|
33
|
+
const has_multiple_of_provider = (databases?.filter((database) => database?.provider === database?.provider))?.length > 1;
|
|
34
|
+
|
|
35
|
+
await start_database_provider(
|
|
36
|
+
environment,
|
|
37
|
+
database,
|
|
38
|
+
// NOTE: Increment each database port using index in the databases array from settings if no port
|
|
39
|
+
// is assigned in the settings.
|
|
40
|
+
database?.port || database_port + i,
|
|
41
|
+
has_multiple_of_provider,
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const validate_databases_from_settings = (databases = []) => {
|
|
47
|
+
const databases_not_as_objects = databases.filter(
|
|
48
|
+
(database) => !types.is_object(database)
|
|
49
|
+
);
|
|
50
|
+
|
|
51
|
+
const user_databases = databases.filter((database) => !!database.users);
|
|
52
|
+
const queue_databases = databases.filter((database) => !!database.queues);
|
|
53
|
+
const session_databases = databases.filter((database) => !!database.sessions);
|
|
54
|
+
|
|
55
|
+
if (databases_not_as_objects && databases_not_as_objects.length > 0) {
|
|
56
|
+
cli_log(`Please ensure that each database in the config.databases array in your settings.${process.env.NODE_ENV}.json is an object. Correct the array and restart your app.`, {
|
|
57
|
+
level: 'danger',
|
|
58
|
+
docs: 'https://cheatcode.co/docs/joystick/cli/databases',
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
if (user_databases && user_databases.length > 1) {
|
|
65
|
+
cli_log(`Please select a single database for your user accounts and restart your app.`, {
|
|
66
|
+
level: 'danger',
|
|
67
|
+
docs: 'https://cheatcode.co/docs/joystick/cli/databases#users',
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
process.exit(1);
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
if (queue_databases && queue_databases.length > 1) {
|
|
74
|
+
cli_log(`Please select a single database for your queues and restart your app. If you need to spread queues across databases, use the database object on the queue definition instead (see documentation link below).`, {
|
|
75
|
+
level: 'danger',
|
|
76
|
+
docs: 'https://cheatcode.co/docs/joystick/cli/databases#queues',
|
|
77
|
+
});
|
|
78
|
+
|
|
79
|
+
process.exit(1);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
if (session_databases && session_databases.length > 1) {
|
|
83
|
+
cli_log(`Please select a single database for your sessions and restart your app.`, {
|
|
84
|
+
level: 'danger',
|
|
85
|
+
docs: 'https://cheatcode.co/docs/joystick/cli/databases#sessions',
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
process.exit(1);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return true;
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
const start_databases = async (options = {}) => {
|
|
95
|
+
const databases = options?.settings?.config?.databases || [];
|
|
96
|
+
|
|
97
|
+
if (databases?.length > 0) {
|
|
98
|
+
validate_databases_from_settings(databases);
|
|
99
|
+
|
|
100
|
+
await start_database_providers(
|
|
101
|
+
databases,
|
|
102
|
+
options?.port + 10,
|
|
103
|
+
options?.environment,
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
|
|
108
|
+
export default start_databases;
|