@joystick.js/cli-canary 0.0.0-canary.162 → 0.0.0-canary.1621

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (584) hide show
  1. package/.build/getFilesToBuild.js +1 -1
  2. package/.build/index.js +3 -3
  3. package/LICENSE.md +59 -0
  4. package/README.md +45 -4
  5. package/dist/cli.js +1 -76
  6. package/dist/commands/build/definition.js +1 -0
  7. package/dist/commands/build/index.js +1 -0
  8. package/dist/commands/create/build_package_json.js +1 -0
  9. package/dist/commands/create/definition.js +1 -0
  10. package/dist/commands/create/index.js +2 -0
  11. package/dist/commands/create/template/api/index.js +6 -0
  12. package/dist/commands/create/template/email/base.css +9 -0
  13. package/dist/commands/create/template/email/base.html +10 -0
  14. package/dist/commands/create/template/email/reset_password.js +20 -0
  15. package/dist/commands/create/template/i18n/en-US.js +14 -0
  16. package/dist/commands/create/template/index.client.js +1 -0
  17. package/dist/commands/create/template/index.css +34 -0
  18. package/dist/{functions/create/templates → commands/create/template}/index.html +2 -3
  19. package/dist/{functions/create/templates → commands/create/template}/index.server.js +6 -6
  20. package/dist/commands/create/template/public/apple-touch-icon-152x152.png +0 -0
  21. package/dist/commands/create/template/public/favicon.ico +0 -0
  22. package/dist/commands/create/template/public/joystick_logo.webp +0 -0
  23. package/dist/{functions/create/templates → commands/create/template}/public/manifest.json +4 -4
  24. package/dist/commands/create/template/public/splash-screen-1024x1024.png +0 -0
  25. package/{src/functions/create/templates → dist/commands/create/template}/ui/components/button/index.js +14 -6
  26. package/{src/functions/create/templates → dist/commands/create/template}/ui/layouts/app/index.js +2 -2
  27. package/dist/commands/create/template/ui/pages/error/index.js +50 -0
  28. package/dist/commands/create/template/ui/pages/index/index.js +121 -0
  29. package/dist/commands/help/definition.js +1 -0
  30. package/dist/commands/help/index.js +19 -0
  31. package/dist/commands/index.js +1 -0
  32. package/dist/commands/logout/definition.js +1 -0
  33. package/dist/commands/logout/index.js +3 -0
  34. package/dist/commands/push/cdn_mirrors.js +1 -0
  35. package/dist/commands/push/check_if_settings_valid.js +1 -0
  36. package/dist/commands/push/create_version.js +1 -0
  37. package/dist/commands/push/definition.js +1 -0
  38. package/dist/commands/push/get_app_domain.js +1 -0
  39. package/dist/commands/push/get_deployment.js +1 -0
  40. package/dist/commands/push/get_provision_domain.js +1 -0
  41. package/dist/commands/push/get_session_token.js +1 -0
  42. package/dist/commands/push/get_settings_file.js +1 -0
  43. package/dist/commands/push/handle_initial_deployment.js +1 -0
  44. package/dist/commands/push/handle_version_deployment.js +1 -0
  45. package/dist/commands/push/index.js +8 -0
  46. package/dist/commands/push/prompts/confirm_deployment.js +17 -0
  47. package/dist/commands/push/prompts/session_token.js +5 -0
  48. package/dist/commands/push/upload_build_to_cdn.js +1 -0
  49. package/dist/commands/push/validate_deployment.js +1 -0
  50. package/dist/commands/push/validate_push_config.js +1 -0
  51. package/dist/commands/start/definition.js +1 -0
  52. package/dist/commands/start/index.js +1 -0
  53. package/dist/commands/test/definition.js +1 -0
  54. package/dist/commands/test/index.js +1 -0
  55. package/dist/commands/update/definition.js +1 -0
  56. package/dist/commands/update/index.js +1 -0
  57. package/dist/commands/use/definition.js +1 -0
  58. package/dist/commands/use/index.js +1 -0
  59. package/dist/index.js +1 -7
  60. package/dist/lib/build/browser_path_exclusions.js +1 -0
  61. package/dist/lib/build/browser_paths.js +1 -0
  62. package/dist/lib/build/build_files.js +3 -0
  63. package/dist/lib/build/copy_paths.js +1 -0
  64. package/dist/lib/build/get_code_frame.js +1 -0
  65. package/dist/lib/build/get_file_operation.js +1 -0
  66. package/dist/lib/build/get_files_to_build.js +1 -0
  67. package/dist/lib/build/get_path_platform.js +1 -0
  68. package/dist/lib/build/get_platform_safe_path.js +1 -0
  69. package/dist/lib/build/get_tar_ignore_list.js +2 -0
  70. package/dist/lib/build/index.js +3 -0
  71. package/dist/lib/build/master_ignore_list.js +1 -0
  72. package/dist/lib/build/minify_file.js +1 -0
  73. package/dist/lib/build/node_paths.js +1 -0
  74. package/dist/lib/build/on_warn.js +10 -0
  75. package/dist/lib/build/plugins/bootstrap_component.js +33 -0
  76. package/dist/lib/build/plugins/generate_file_dependency_map.js +1 -0
  77. package/dist/lib/build/plugins/index.js +1 -0
  78. package/dist/lib/build/plugins/set_component_id.js +2 -0
  79. package/dist/lib/build/plugins/update_file_map.js +1 -0
  80. package/dist/lib/build/plugins/warn_node_environment.js +3 -0
  81. package/dist/lib/cli_log.js +13 -0
  82. package/dist/lib/color_log.js +1 -0
  83. package/dist/lib/command_exists.js +1 -0
  84. package/dist/lib/constants.js +1 -4
  85. package/dist/lib/debounce.js +1 -0
  86. package/dist/lib/decrypt_buffer.js +1 -0
  87. package/dist/lib/development_server/ava_config.js +1 -0
  88. package/dist/lib/development_server/check_if_port_occupied.js +1 -0
  89. package/dist/lib/development_server/cleanup.js +1 -0
  90. package/dist/lib/development_server/databases/download_database_binary.js +1 -0
  91. package/dist/lib/development_server/databases/mongodb/available_query_parameters.js +1 -0
  92. package/dist/lib/development_server/databases/mongodb/build_connection_string.js +1 -0
  93. package/dist/lib/development_server/databases/mongodb/build_query_parameters.js +1 -0
  94. package/dist/lib/development_server/databases/mongodb/check_connection.js +2 -0
  95. package/dist/lib/development_server/databases/mongodb/connect.js +1 -0
  96. package/dist/lib/development_server/databases/mongodb/index.js +1 -0
  97. package/dist/lib/development_server/databases/mongodb/installers/linux.js +1 -0
  98. package/dist/lib/development_server/databases/mongodb/installers/macos.js +1 -0
  99. package/dist/lib/development_server/databases/mongodb/installers/windows.js +1 -0
  100. package/dist/lib/development_server/databases/postgresql/check_connection.js +2 -0
  101. package/dist/lib/development_server/databases/postgresql/connect.js +1 -0
  102. package/dist/lib/development_server/databases/postgresql/index.js +2 -0
  103. package/dist/lib/development_server/databases/postgresql/installers/linux.js +1 -0
  104. package/dist/lib/development_server/databases/postgresql/installers/macos.js +1 -0
  105. package/dist/lib/development_server/databases/postgresql/installers/windows.js +1 -0
  106. package/dist/lib/development_server/databases/provider_map.js +1 -0
  107. package/dist/lib/development_server/get_database_process_ids.js +1 -0
  108. package/dist/lib/development_server/get_translations.js +1 -0
  109. package/dist/lib/development_server/hmr_server.js +1 -0
  110. package/dist/lib/development_server/index.js +10 -0
  111. package/dist/lib/development_server/kill_process_ids.js +1 -0
  112. package/dist/lib/development_server/run_tests.js +2 -0
  113. package/dist/lib/development_server/start_app_server.js +1 -0
  114. package/dist/lib/development_server/start_databases.js +1 -0
  115. package/dist/lib/development_server/start_hmr_server.js +1 -0
  116. package/dist/lib/development_server/watch_for_changes/browser_path_exclusions.js +1 -0
  117. package/dist/lib/development_server/watch_for_changes/browser_paths.js +1 -0
  118. package/dist/lib/development_server/watch_for_changes/get_after_run_tasks.js +1 -0
  119. package/dist/lib/development_server/watch_for_changes/get_file_codependencies.js +1 -0
  120. package/dist/lib/development_server/watch_for_changes/get_platform_safe_path.js +1 -0
  121. package/dist/lib/development_server/watch_for_changes/index.js +1 -0
  122. package/dist/lib/development_server/watch_for_changes/node_paths.js +1 -0
  123. package/dist/lib/development_server/watch_for_changes/read_file_dependency_map.js +1 -0
  124. package/dist/lib/development_server/watch_for_changes/watch_paths.js +1 -0
  125. package/dist/lib/dynamic_import.js +1 -0
  126. package/dist/lib/encrypt_buffer.js +1 -0
  127. package/dist/lib/generate_id.js +1 -0
  128. package/dist/lib/get_files_in_path.js +1 -0
  129. package/dist/lib/get_platform_safe_path.js +1 -0
  130. package/dist/lib/get_process_id_from_port.js +2 -0
  131. package/dist/lib/is_valid_json_string.js +1 -0
  132. package/dist/lib/kill_port_process.js +1 -0
  133. package/dist/lib/kill_process_id.js +1 -0
  134. package/dist/lib/load_settings.js +1 -0
  135. package/dist/lib/loader.js +2 -82
  136. package/dist/lib/log_bars.js +1 -0
  137. package/dist/lib/node_path_polyfills.js +1 -0
  138. package/dist/lib/parse_args.js +1 -0
  139. package/dist/lib/parse_options.js +1 -0
  140. package/dist/lib/path_exists.js +1 -0
  141. package/dist/lib/rainbow_road.js +1 -0
  142. package/dist/lib/replace_in_files.js +1 -0
  143. package/dist/lib/required_files.js +1 -0
  144. package/dist/lib/serialize_query_parameters.js +1 -0
  145. package/dist/lib/types.js +1 -6
  146. package/dist/lib/unique_array.js +1 -0
  147. package/increment_version.js +3 -0
  148. package/package.json +19 -38
  149. package/src/cli.js +59 -51
  150. package/src/commands/build/definition.js +58 -0
  151. package/src/commands/build/index.js +7 -0
  152. package/src/commands/create/build_package_json.js +20 -0
  153. package/src/commands/create/definition.js +35 -0
  154. package/src/commands/create/index.js +71 -0
  155. package/src/commands/create/template/api/index.js +6 -0
  156. package/src/commands/create/template/email/base.css +9 -0
  157. package/src/commands/create/template/email/base.html +10 -0
  158. package/src/commands/create/template/email/reset_password.js +20 -0
  159. package/src/commands/create/template/i18n/en-US.js +14 -0
  160. package/src/commands/create/template/index.client.js +1 -0
  161. package/src/commands/create/template/index.css +34 -0
  162. package/src/{functions/create/templates → commands/create/template}/index.html +2 -3
  163. package/src/{functions/create/templates → commands/create/template}/index.server.js +6 -6
  164. package/src/commands/create/template/public/apple-touch-icon-152x152.png +0 -0
  165. package/src/commands/create/template/public/favicon.ico +0 -0
  166. package/src/commands/create/template/public/joystick_logo.webp +0 -0
  167. package/src/{functions/create/templates → commands/create/template}/public/manifest.json +4 -4
  168. package/src/commands/create/template/public/splash-screen-1024x1024.png +0 -0
  169. package/{dist/functions/create/templates → src/commands/create/template}/ui/components/button/index.js +14 -6
  170. package/{dist/functions/create/templates → src/commands/create/template}/ui/layouts/app/index.js +2 -2
  171. package/src/commands/create/template/ui/pages/error/index.js +50 -0
  172. package/src/commands/create/template/ui/pages/index/index.js +121 -0
  173. package/src/commands/help/definition.js +12 -0
  174. package/src/commands/help/index.js +48 -0
  175. package/src/commands/index.js +23 -0
  176. package/src/commands/logout/definition.js +10 -0
  177. package/src/commands/logout/index.js +20 -0
  178. package/src/commands/push/cdn_mirrors.js +7 -0
  179. package/src/commands/push/check_if_settings_valid.js +10 -0
  180. package/src/commands/push/create_version.js +20 -0
  181. package/src/commands/push/definition.js +43 -0
  182. package/src/commands/push/get_app_domain.js +11 -0
  183. package/src/commands/push/get_deployment.js +19 -0
  184. package/src/commands/push/get_provision_domain.js +9 -0
  185. package/src/commands/push/get_session_token.js +31 -0
  186. package/src/commands/push/get_settings_file.js +47 -0
  187. package/src/commands/push/handle_initial_deployment.js +24 -0
  188. package/src/commands/push/handle_version_deployment.js +23 -0
  189. package/src/commands/push/index.js +190 -0
  190. package/src/commands/push/prompts/confirm_deployment.js +73 -0
  191. package/src/commands/push/prompts/session_token.js +11 -0
  192. package/src/commands/push/upload_build_to_cdn.js +59 -0
  193. package/src/commands/push/validate_deployment.js +19 -0
  194. package/src/commands/push/validate_push_config.js +18 -0
  195. package/src/commands/start/definition.js +58 -0
  196. package/src/commands/start/index.js +11 -0
  197. package/src/commands/test/definition.js +28 -0
  198. package/src/commands/test/index.js +12 -0
  199. package/src/commands/update/definition.js +28 -0
  200. package/src/commands/update/index.js +29 -0
  201. package/src/commands/use/definition.js +19 -0
  202. package/src/commands/use/index.js +54 -0
  203. package/src/index.js +0 -0
  204. package/src/lib/build/browser_path_exclusions.js +8 -0
  205. package/src/lib/build/browser_paths.js +11 -0
  206. package/src/lib/build/build_files.js +163 -0
  207. package/src/{functions/start/filesToCopy.js → lib/build/copy_paths.js} +7 -5
  208. package/src/lib/build/get_code_frame.js +11 -0
  209. package/src/lib/build/get_file_operation.js +25 -0
  210. package/src/lib/build/get_files_to_build.js +41 -0
  211. package/src/lib/build/get_path_platform.js +32 -0
  212. package/src/lib/build/get_platform_safe_path.js +6 -0
  213. package/src/lib/build/get_tar_ignore_list.js +41 -0
  214. package/src/lib/build/index.js +137 -0
  215. package/src/lib/build/master_ignore_list.js +14 -0
  216. package/src/lib/build/minify_file.js +15 -0
  217. package/src/lib/build/node_paths.js +19 -0
  218. package/src/lib/build/on_warn.js +70 -0
  219. package/src/lib/build/plugins/bootstrap_component.js +191 -0
  220. package/src/lib/build/plugins/generate_file_dependency_map.js +20 -0
  221. package/src/lib/build/plugins/index.js +26 -0
  222. package/src/lib/build/plugins/set_component_id.js +89 -0
  223. package/src/lib/build/plugins/update_file_map.js +98 -0
  224. package/src/lib/build/plugins/warn_node_environment.js +20 -0
  225. package/src/lib/{CLILog.js → cli_log.js} +12 -8
  226. package/src/lib/color_log.js +7 -0
  227. package/src/lib/command_exists.js +16 -0
  228. package/src/lib/constants.js +11 -1
  229. package/src/lib/debounce.js +9 -0
  230. package/src/lib/decrypt_buffer.js +12 -0
  231. package/src/lib/development_server/ava_config.js +14 -0
  232. package/src/lib/development_server/check_if_port_occupied.js +31 -0
  233. package/src/lib/development_server/cleanup.js +15 -0
  234. package/src/lib/development_server/databases/download_database_binary.js +35 -0
  235. package/src/lib/{dev/databases/mongodb/availableQueryParameters.js → development_server/databases/mongodb/available_query_parameters.js} +3 -1
  236. package/src/lib/development_server/databases/mongodb/build_connection_string.js +36 -0
  237. package/src/lib/development_server/databases/mongodb/build_query_parameters.js +17 -0
  238. package/src/lib/development_server/databases/mongodb/check_connection.js +41 -0
  239. package/src/lib/development_server/databases/mongodb/connect.js +27 -0
  240. package/src/lib/development_server/databases/mongodb/index.js +102 -0
  241. package/src/lib/development_server/databases/mongodb/installers/linux.js +107 -0
  242. package/src/lib/development_server/databases/mongodb/installers/macos.js +109 -0
  243. package/src/lib/development_server/databases/mongodb/installers/windows.js +90 -0
  244. package/src/lib/development_server/databases/postgresql/check_connection.js +56 -0
  245. package/src/lib/development_server/databases/postgresql/connect.js +33 -0
  246. package/src/lib/development_server/databases/postgresql/index.js +157 -0
  247. package/src/lib/development_server/databases/postgresql/installers/linux.js +80 -0
  248. package/src/lib/development_server/databases/postgresql/installers/macos.js +91 -0
  249. package/src/lib/development_server/databases/postgresql/installers/windows.js +83 -0
  250. package/src/lib/development_server/databases/provider_map.js +15 -0
  251. package/src/lib/development_server/get_database_process_ids.js +28 -0
  252. package/src/lib/development_server/get_translations.js +85 -0
  253. package/src/lib/development_server/hmr_server.js +94 -0
  254. package/src/lib/development_server/index.js +436 -0
  255. package/src/lib/development_server/kill_process_ids.js +8 -0
  256. package/src/lib/development_server/run_tests.js +84 -0
  257. package/src/lib/development_server/start_app_server.js +55 -0
  258. package/src/lib/development_server/start_databases.js +108 -0
  259. package/src/lib/development_server/start_hmr_server.js +36 -0
  260. package/src/lib/development_server/watch_for_changes/browser_path_exclusions.js +8 -0
  261. package/src/lib/development_server/watch_for_changes/browser_paths.js +11 -0
  262. package/src/lib/development_server/watch_for_changes/get_after_run_tasks.js +36 -0
  263. package/src/lib/development_server/watch_for_changes/get_file_codependencies.js +53 -0
  264. package/src/lib/development_server/watch_for_changes/get_platform_safe_path.js +6 -0
  265. package/src/lib/development_server/watch_for_changes/index.js +222 -0
  266. package/src/lib/development_server/watch_for_changes/node_paths.js +17 -0
  267. package/src/lib/development_server/watch_for_changes/read_file_dependency_map.js +18 -0
  268. package/src/lib/development_server/watch_for_changes/watch_paths.js +22 -0
  269. package/src/lib/dynamic_import.js +6 -0
  270. package/src/lib/encrypt_buffer.js +10 -0
  271. package/src/lib/generate_id.js +15 -0
  272. package/src/lib/get_files_in_path.js +25 -0
  273. package/src/lib/get_platform_safe_path.js +8 -0
  274. package/src/lib/get_process_id_from_port.js +26 -0
  275. package/src/lib/is_valid_json_string.js +10 -0
  276. package/src/lib/kill_port_process.js +12 -0
  277. package/src/lib/kill_process_id.js +19 -0
  278. package/src/lib/load_settings.js +43 -0
  279. package/src/lib/loader.js +4 -77
  280. package/src/lib/log_bars.js +7 -0
  281. package/src/lib/node_path_polyfills.js +23 -0
  282. package/src/lib/parse_args.js +16 -0
  283. package/src/lib/parse_options.js +16 -0
  284. package/src/lib/path_exists.js +11 -0
  285. package/src/lib/{rainbowRoad.js → rainbow_road.js} +4 -2
  286. package/src/lib/replace_in_files.js +40 -0
  287. package/src/lib/{dev/requiredFiles.js → required_files.js} +3 -1
  288. package/src/lib/serialize_query_parameters.js +7 -0
  289. package/src/lib/types.js +59 -2
  290. package/src/lib/unique_array.js +24 -0
  291. package/HMRNOTES.txt +0 -23
  292. package/_package.json +0 -56
  293. package/canary.js +0 -12
  294. package/dist/functions/build/getTarIgnoreList.js +0 -25
  295. package/dist/functions/build/index.js +0 -54
  296. package/dist/functions/create/buildPackageJSON.js +0 -20
  297. package/dist/functions/create/index.js +0 -193
  298. package/dist/functions/create/templates/api/index.js +0 -4
  299. package/dist/functions/create/templates/i18n/en-US.js +0 -4
  300. package/dist/functions/create/templates/index.client.js +0 -7
  301. package/dist/functions/create/templates/index.css +0 -20
  302. package/dist/functions/create/templates/public/apple-touch-icon-152x152.png +0 -0
  303. package/dist/functions/create/templates/public/favicon.ico +0 -0
  304. package/dist/functions/create/templates/public/splash-screen-1024x1024.png +0 -0
  305. package/dist/functions/create/templates/ui/pages/error/index.js +0 -31
  306. package/dist/functions/create/templates/ui/pages/index/index.js +0 -94
  307. package/dist/functions/index.js +0 -269
  308. package/dist/functions/logout/index.js +0 -20
  309. package/dist/functions/push/checkIfProvisionAvailable.js +0 -19
  310. package/dist/functions/push/deploy/index.js +0 -173
  311. package/dist/functions/push/deploy/initial.js +0 -100
  312. package/dist/functions/push/deploy/version.js +0 -100
  313. package/dist/functions/push/domains.js +0 -23
  314. package/dist/functions/push/getAvailableCDN.js +0 -23
  315. package/dist/functions/push/getDeployment.js +0 -41
  316. package/dist/functions/push/getDeploymentSummary.js +0 -38
  317. package/dist/functions/push/getInstanceSizeRegions.js +0 -37
  318. package/dist/functions/push/getInstanceSizesForRegion.js +0 -34
  319. package/dist/functions/push/getProviderInstanceSizes.js +0 -34
  320. package/dist/functions/push/getProviderRegions.js +0 -36
  321. package/dist/functions/push/getProvidersWithConnectionStatus.js +0 -20
  322. package/dist/functions/push/getSessionToken.js +0 -23
  323. package/dist/functions/push/getUserFromSessionToken.js +0 -37
  324. package/dist/functions/push/index.js +0 -210
  325. package/dist/functions/push/loginToCheatCode.js +0 -33
  326. package/dist/functions/push/pingProvisionAPI.js +0 -31
  327. package/dist/functions/push/prompts.js +0 -332
  328. package/dist/functions/push/providerMap.js +0 -11
  329. package/dist/functions/push/providers.js +0 -9
  330. package/dist/functions/reset/index.js +0 -0
  331. package/dist/functions/reset/reset.js +0 -127
  332. package/dist/functions/start/bootstrapLayoutComponent.js +0 -54
  333. package/dist/functions/start/bootstrapPageComponent.js +0 -51
  334. package/dist/functions/start/buildFile.js +0 -85
  335. package/dist/functions/start/buildFiles.js +0 -76
  336. package/dist/functions/start/buildPlugins.js +0 -183
  337. package/dist/functions/start/checkIfPortAvailable.js +0 -18
  338. package/dist/functions/start/cleanup/index.js +0 -18
  339. package/dist/functions/start/databases/mongodb/availableQueryParameters.js +0 -42
  340. package/dist/functions/start/databases/mongodb/buildConnectionString.js +0 -22
  341. package/dist/functions/start/databases/mongodb/buildQueryParameters.js +0 -14
  342. package/dist/functions/start/databases/mongodb/checkConnection.js +0 -35
  343. package/dist/functions/start/databases/mongodb/connect.js +0 -25
  344. package/dist/functions/start/databases/mongodb/index.js +0 -93
  345. package/dist/functions/start/databases/postgresql/checkConnection.js +0 -41
  346. package/dist/functions/start/databases/postgresql/connect.js +0 -27
  347. package/dist/functions/start/databases/postgresql/index.js +0 -106
  348. package/dist/functions/start/databases/redis.js +0 -0
  349. package/dist/functions/start/databases/startProvider.js +0 -16
  350. package/dist/functions/start/fileDependencyMapper.js +0 -22
  351. package/dist/functions/start/filesToCopy.js +0 -18
  352. package/dist/functions/start/generateId.js +0 -74
  353. package/dist/functions/start/getCodependenciesForFile.js +0 -64
  354. package/dist/functions/start/getFilesToBuild.js +0 -39
  355. package/dist/functions/start/getProcessIdFromPort.js +0 -60
  356. package/dist/functions/start/hmrServer.js +0 -66
  357. package/dist/functions/start/index.js +0 -11
  358. package/dist/functions/start/isWindows.js +0 -5
  359. package/dist/functions/start/minifyFile.js +0 -12
  360. package/dist/functions/start/onWarn.js +0 -63
  361. package/dist/functions/start/readFileDependencyMap.js +0 -16
  362. package/dist/functions/start/removeDeletedDependenciesFromMap.js +0 -18
  363. package/dist/functions/start/setComponentId.js +0 -46
  364. package/dist/functions/start/updateFileMap.js +0 -67
  365. package/dist/functions/test/index.js +0 -12
  366. package/dist/functions/update/index.js +0 -21
  367. package/dist/functions/use/index.js +0 -61
  368. package/dist/lib/CLILog.js +0 -49
  369. package/dist/lib/build/browserPathExclusions.js +0 -8
  370. package/dist/lib/build/browserPaths.js +0 -11
  371. package/dist/lib/build/buildFile.js +0 -84
  372. package/dist/lib/build/buildFiles.js +0 -240
  373. package/dist/lib/build/buildPlugins.js +0 -186
  374. package/dist/lib/build/getCodeFrame.js +0 -9
  375. package/dist/lib/build/minifyFile.js +0 -12
  376. package/dist/lib/build/nodePathExclusions.js +0 -7
  377. package/dist/lib/build/nodePaths.js +0 -12
  378. package/dist/lib/build/onWarn.js +0 -63
  379. package/dist/lib/build/removeDeletedDependenciesFromMap.js +0 -18
  380. package/dist/lib/build/setComponentId.js +0 -46
  381. package/dist/lib/build/updateFileMap.js +0 -67
  382. package/dist/lib/buildResolvePlugin.js +0 -21
  383. package/dist/lib/checkIfValidJSON.js +0 -11
  384. package/dist/lib/colorLog.js +0 -7
  385. package/dist/lib/dev/cleanup.js +0 -18
  386. package/dist/lib/dev/databases/mongodb/availableQueryParameters.js +0 -42
  387. package/dist/lib/dev/databases/mongodb/buildConnectionString.js +0 -22
  388. package/dist/lib/dev/databases/mongodb/buildQueryParameters.js +0 -14
  389. package/dist/lib/dev/databases/mongodb/checkConnection.js +0 -38
  390. package/dist/lib/dev/databases/mongodb/connect.js +0 -25
  391. package/dist/lib/dev/databases/mongodb/index.js +0 -93
  392. package/dist/lib/dev/databases/postgresql/checkConnection.js +0 -41
  393. package/dist/lib/dev/databases/postgresql/connect.js +0 -27
  394. package/dist/lib/dev/databases/postgresql/index.js +0 -106
  395. package/dist/lib/dev/databases/providerMap.js +0 -15
  396. package/dist/lib/dev/getCodependenciesForFile.js +0 -64
  397. package/dist/lib/dev/getFilesToBuild.js +0 -38
  398. package/dist/lib/dev/hmrServer.js +0 -66
  399. package/dist/lib/dev/index.js +0 -559
  400. package/dist/lib/dev/isWindows.js +0 -5
  401. package/dist/lib/dev/loadSettings.js +0 -79
  402. package/dist/lib/dev/readFileDependencyMap.js +0 -16
  403. package/dist/lib/dev/requiredFiles.js +0 -18
  404. package/dist/lib/dev/runBuild.js +0 -30
  405. package/dist/lib/dev/runTests.js +0 -96
  406. package/dist/lib/dev/startApp.js +0 -70
  407. package/dist/lib/dev/startDatabases.js +0 -109
  408. package/dist/lib/dev/startHMR.js +0 -55
  409. package/dist/lib/dev/tests.config.js +0 -6
  410. package/dist/lib/dev/updateFileMap.js +0 -67
  411. package/dist/lib/dev/validateProject.js +0 -0
  412. package/dist/lib/dev/watchlist.js +0 -15
  413. package/dist/lib/filesToCopy.js +0 -18
  414. package/dist/lib/generateId.js +0 -74
  415. package/dist/lib/getArgs.js +0 -14
  416. package/dist/lib/getOptions.js +0 -15
  417. package/dist/lib/getPlatformSafePath.js +0 -7
  418. package/dist/lib/getProcessIdFromPort.js +0 -60
  419. package/dist/lib/getProvider.js +0 -8
  420. package/dist/lib/help.js +0 -56
  421. package/dist/lib/isObject.js +0 -6
  422. package/dist/lib/isValidJSONString.js +0 -11
  423. package/dist/lib/isWindows.js +0 -5
  424. package/dist/lib/killProcesses.js +0 -0
  425. package/dist/lib/loadSettings.js +0 -33
  426. package/dist/lib/masterIgnoreList.js +0 -16
  427. package/dist/lib/nodeEnvironment.js +0 -9
  428. package/dist/lib/nodeEnvironments.js +0 -8
  429. package/dist/lib/parseCookiesFromLogin.js +0 -18
  430. package/dist/lib/rainbowRoad.js +0 -7
  431. package/dist/lib/readDirectorySync.js +0 -14
  432. package/dist/lib/regexes.js +0 -14
  433. package/dist/lib/replaceBackslashesWithForwardSlashes.js +0 -8
  434. package/dist/lib/replaceFileProtocol.js +0 -8
  435. package/dist/lib/serializeQueryParameters.js +0 -8
  436. package/dist/lib/settings.js +0 -4
  437. package/dist/lib/validateDatabasesFromSettings.js +0 -34
  438. package/dist/lib/wait.js +0 -8
  439. package/release.js +0 -40
  440. package/src/functions/build/getTarIgnoreList.js +0 -30
  441. package/src/functions/build/index.js +0 -63
  442. package/src/functions/create/buildPackageJSON.js +0 -18
  443. package/src/functions/create/index.js +0 -209
  444. package/src/functions/create/templates/api/index.js +0 -4
  445. package/src/functions/create/templates/i18n/en-US.js +0 -4
  446. package/src/functions/create/templates/index.client.js +0 -7
  447. package/src/functions/create/templates/index.css +0 -20
  448. package/src/functions/create/templates/public/apple-touch-icon-152x152.png +0 -0
  449. package/src/functions/create/templates/public/favicon.ico +0 -0
  450. package/src/functions/create/templates/public/splash-screen-1024x1024.png +0 -0
  451. package/src/functions/create/templates/ui/pages/error/index.js +0 -31
  452. package/src/functions/create/templates/ui/pages/index/index.js +0 -94
  453. package/src/functions/index.js +0 -269
  454. package/src/functions/logout/index.js +0 -20
  455. package/src/functions/push/checkIfProvisionAvailable.js +0 -20
  456. package/src/functions/push/deploy/index.js +0 -199
  457. package/src/functions/push/deploy/initial.js +0 -108
  458. package/src/functions/push/deploy/version.js +0 -108
  459. package/src/functions/push/domains.js +0 -23
  460. package/src/functions/push/getAvailableCDN.js +0 -27
  461. package/src/functions/push/getDeployment.js +0 -43
  462. package/src/functions/push/getDeploymentSummary.js +0 -39
  463. package/src/functions/push/getInstanceSizeRegions.js +0 -40
  464. package/src/functions/push/getInstanceSizesForRegion.js +0 -35
  465. package/src/functions/push/getProviderInstanceSizes.js +0 -35
  466. package/src/functions/push/getProviderRegions.js +0 -39
  467. package/src/functions/push/getProvidersWithConnectionStatus.js +0 -25
  468. package/src/functions/push/getSessionToken.js +0 -26
  469. package/src/functions/push/getUserFromSessionToken.js +0 -39
  470. package/src/functions/push/index.js +0 -245
  471. package/src/functions/push/loginToCheatCode.js +0 -34
  472. package/src/functions/push/pingProvisionAPI.js +0 -33
  473. package/src/functions/push/prompts.js +0 -276
  474. package/src/functions/push/providerMap.js +0 -8
  475. package/src/functions/push/providers.js +0 -6
  476. package/src/functions/reset/index.js +0 -0
  477. package/src/functions/reset/reset.js +0 -163
  478. package/src/functions/start/bootstrapLayoutComponent.js +0 -57
  479. package/src/functions/start/bootstrapPageComponent.js +0 -54
  480. package/src/functions/start/buildFile.js +0 -97
  481. package/src/functions/start/buildFiles.js +0 -101
  482. package/src/functions/start/buildPlugins.js +0 -215
  483. package/src/functions/start/checkIfPortAvailable.js +0 -21
  484. package/src/functions/start/cleanup/index.js +0 -23
  485. package/src/functions/start/databases/mongodb/availableQueryParameters.js +0 -39
  486. package/src/functions/start/databases/mongodb/buildConnectionString.js +0 -28
  487. package/src/functions/start/databases/mongodb/buildQueryParameters.js +0 -15
  488. package/src/functions/start/databases/mongodb/checkConnection.js +0 -36
  489. package/src/functions/start/databases/mongodb/connect.js +0 -25
  490. package/src/functions/start/databases/mongodb/index.js +0 -108
  491. package/src/functions/start/databases/postgresql/checkConnection.js +0 -43
  492. package/src/functions/start/databases/postgresql/connect.js +0 -27
  493. package/src/functions/start/databases/postgresql/index.js +0 -127
  494. package/src/functions/start/databases/redis.js +0 -0
  495. package/src/functions/start/databases/startProvider.js +0 -15
  496. package/src/functions/start/fileDependencyMapper.js +0 -24
  497. package/src/functions/start/generateId.js +0 -73
  498. package/src/functions/start/getCodependenciesForFile.js +0 -84
  499. package/src/functions/start/getFilesToBuild.js +0 -49
  500. package/src/functions/start/getProcessIdFromPort.js +0 -92
  501. package/src/functions/start/hmrServer.js +0 -78
  502. package/src/functions/start/index.js +0 -9
  503. package/src/functions/start/isWindows.js +0 -3
  504. package/src/functions/start/minifyFile.js +0 -10
  505. package/src/functions/start/onWarn.js +0 -68
  506. package/src/functions/start/readFileDependencyMap.js +0 -19
  507. package/src/functions/start/removeDeletedDependenciesFromMap.js +0 -19
  508. package/src/functions/start/setComponentId.js +0 -58
  509. package/src/functions/start/updateFileMap.js +0 -100
  510. package/src/functions/test/index.js +0 -10
  511. package/src/functions/update/index.js +0 -20
  512. package/src/functions/use/index.js +0 -62
  513. package/src/lib/build/browserPathExclusions.js +0 -6
  514. package/src/lib/build/browserPaths.js +0 -9
  515. package/src/lib/build/buildFile.js +0 -91
  516. package/src/lib/build/buildFiles.js +0 -273
  517. package/src/lib/build/buildPlugins.js +0 -222
  518. package/src/lib/build/getCodeFrame.js +0 -7
  519. package/src/lib/build/minifyFile.js +0 -10
  520. package/src/lib/build/nodePathExclusions.js +0 -5
  521. package/src/lib/build/nodePaths.js +0 -10
  522. package/src/lib/build/onWarn.js +0 -68
  523. package/src/lib/build/removeDeletedDependenciesFromMap.js +0 -19
  524. package/src/lib/build/setComponentId.js +0 -58
  525. package/src/lib/build/updateFileMap.js +0 -100
  526. package/src/lib/buildResolvePlugin.js +0 -32
  527. package/src/lib/checkIfValidJSON.js +0 -8
  528. package/src/lib/colorLog.js +0 -5
  529. package/src/lib/dev/cleanup.js +0 -26
  530. package/src/lib/dev/databases/mongodb/buildConnectionString.js +0 -28
  531. package/src/lib/dev/databases/mongodb/buildQueryParameters.js +0 -15
  532. package/src/lib/dev/databases/mongodb/checkConnection.js +0 -40
  533. package/src/lib/dev/databases/mongodb/connect.js +0 -25
  534. package/src/lib/dev/databases/mongodb/index.js +0 -108
  535. package/src/lib/dev/databases/postgresql/checkConnection.js +0 -43
  536. package/src/lib/dev/databases/postgresql/connect.js +0 -27
  537. package/src/lib/dev/databases/postgresql/index.js +0 -127
  538. package/src/lib/dev/databases/providerMap.js +0 -13
  539. package/src/lib/dev/getCodependenciesForFile.js +0 -84
  540. package/src/lib/dev/getFilesToBuild.js +0 -47
  541. package/src/lib/dev/hmrServer.js +0 -78
  542. package/src/lib/dev/index.js +0 -684
  543. package/src/lib/dev/isWindows.js +0 -3
  544. package/src/lib/dev/loadSettings.js +0 -90
  545. package/src/lib/dev/readFileDependencyMap.js +0 -19
  546. package/src/lib/dev/runBuild.js +0 -33
  547. package/src/lib/dev/runTests.js +0 -122
  548. package/src/lib/dev/startApp.js +0 -79
  549. package/src/lib/dev/startDatabases.js +0 -131
  550. package/src/lib/dev/startHMR.js +0 -62
  551. package/src/lib/dev/tests.config.js +0 -3
  552. package/src/lib/dev/updateFileMap.js +0 -100
  553. package/src/lib/dev/validateProject.js +0 -0
  554. package/src/lib/dev/watchlist.js +0 -13
  555. package/src/lib/filesToCopy.js +0 -15
  556. package/src/lib/generateId.js +0 -73
  557. package/src/lib/getArgs.js +0 -14
  558. package/src/lib/getOptions.js +0 -12
  559. package/src/lib/getProcessIdFromPort.js +0 -92
  560. package/src/lib/getProvider.js +0 -5
  561. package/src/lib/help.js +0 -56
  562. package/src/lib/isObject.js +0 -3
  563. package/src/lib/isValidJSONString.js +0 -8
  564. package/src/lib/killProcesses.js +0 -5
  565. package/src/lib/loadSettings.js +0 -40
  566. package/src/lib/masterIgnoreList.js +0 -13
  567. package/src/lib/nodeEnvironment.js +0 -6
  568. package/src/lib/nodeEnvironments.js +0 -8
  569. package/src/lib/parseCookiesFromLogin.js +0 -21
  570. package/src/lib/readDirectorySync.js +0 -13
  571. package/src/lib/regexes.js +0 -7
  572. package/src/lib/replaceBackslashesWithForwardSlashes.js +0 -8
  573. package/src/lib/replaceFileProtocol.js +0 -8
  574. package/src/lib/serializeQueryParameters.js +0 -5
  575. package/src/lib/settings.js +0 -1
  576. package/src/lib/validateDatabasesFromSettings.js +0 -37
  577. package/src/lib/wait.js +0 -5
  578. package/storage/.verdaccio-db.json +0 -1
  579. /package/{src/lib → .build}/getPlatformSafePath.js +0 -0
  580. /package/{src/lib → .build}/isWindows.js +0 -0
  581. /package/dist/{functions/create/templates → commands/create/template}/public/service-worker.js +0 -0
  582. /package/dist/{functions/create/templates → commands/create/template}/settings.development.json +0 -0
  583. /package/src/{functions/create/templates → commands/create/template}/public/service-worker.js +0 -0
  584. /package/src/{functions/create/templates → commands/create/template}/settings.development.json +0 -0
@@ -0,0 +1,14 @@
1
+ const ava_config = {
2
+ files: [
3
+ `tests/**/*.test.js`,
4
+ ],
5
+ ignoredByWatcher: ['.joystick', './uploads'],
6
+ // NOTE: Intentionally limit to 1 test at a time to avoid concurrency creating
7
+ // race conditions in tests that have users or other global data that needs
8
+ // to be cleaned up. The extra time needed is worth it to guarantee that tests
9
+ // don't step on each other's toes and our code is properly verified.
10
+ concurrency: 1,
11
+ cache: false,
12
+ };
13
+
14
+ export default ava_config;
@@ -0,0 +1,31 @@
1
+ import net from 'net';
2
+
3
+ const reset_client = (client = {}) => {
4
+ client.end();
5
+ client.destroy();
6
+ client.unref();
7
+ };
8
+
9
+ const check_if_port_occupied = (port = 2600) => {
10
+ return new Promise((resolve) => {
11
+ const client = new net.Socket();
12
+
13
+ // NOTE: This is inverted. If we can connect, the port is occupied. If we can't, the port is free.
14
+ client.once('connect', () => {
15
+ reset_client(client);
16
+ resolve(true);
17
+ });
18
+
19
+ client.once('error', () => {
20
+ reset_client(client);
21
+ resolve(false);
22
+ });
23
+
24
+ client.connect({
25
+ port,
26
+ host: '127.0.0.1',
27
+ }, function() {});
28
+ });
29
+ };
30
+
31
+ export default check_if_port_occupied;
@@ -0,0 +1,15 @@
1
+ // NOTE: This module is intended to be run as a child_process as part of
2
+ // a SIGINT or SIGTERM event.
3
+
4
+ import kill_process_ids from "./kill_process_ids.js";
5
+
6
+ process.title = "joystick_cleanup";
7
+
8
+ process.on('message', async (message) => {
9
+ const parsed_message = JSON.parse(message);
10
+ const process_ids = parsed_message?.process_ids;
11
+
12
+ kill_process_ids(process_ids);
13
+
14
+ process.exit();
15
+ });
@@ -0,0 +1,35 @@
1
+ import os from 'os';
2
+ import mongodb_macos from './mongodb/installers/macos.js';
3
+ import mongodb_windows from './mongodb/installers/windows.js';
4
+ import mongodb_linux from './mongodb/installers/linux.js';
5
+ import postgresql_macos from './postgresql/installers/macos.js';
6
+ import postgresql_windows from './postgresql/installers/windows.js';
7
+ import postgresql_linux from './postgresql/installers/linux.js';
8
+
9
+ const installers = {
10
+ darwin: {
11
+ mongodb: mongodb_macos,
12
+ postgresql: postgresql_macos,
13
+ },
14
+ win32: {
15
+ mongodb: mongodb_windows,
16
+ postgresql: postgresql_windows,
17
+ },
18
+ linux: {
19
+ mongodb: mongodb_linux,
20
+ postgresql: postgresql_linux,
21
+ },
22
+ };
23
+
24
+ const download_database_binary = async (database_name = '') => {
25
+ const platform = os.platform();
26
+ const installer = installers[platform] && installers[platform][database_name];
27
+
28
+ if (typeof installer === 'function') {
29
+ await installer();
30
+ } else {
31
+ console.warn(`${database_name} not supported on ${platform}`);
32
+ }
33
+ };
34
+
35
+ export default download_database_binary;
@@ -1,4 +1,4 @@
1
- export default [
1
+ const available_query_parameters = [
2
2
  "replicaSet",
3
3
  "tls",
4
4
  "ssl",
@@ -37,3 +37,5 @@ export default [
37
37
  "retryWrites",
38
38
  "uuidRepresentation"
39
39
  ];
40
+
41
+ export default available_query_parameters;
@@ -0,0 +1,36 @@
1
+ import build_query_parameters from "./build_query_parameters.js";
2
+ import serialize_query_parameters from "../../../serialize_query_parameters.js";
3
+ import types from "../../../types.js";
4
+
5
+ const build_connection_string = (connection = {}) => {
6
+ let connection_string = "mongodb://";
7
+
8
+ // NOTE: Swap protocols if we're using a DNS Seedlist URL (mongodb+srv://).
9
+ if (connection?.srv) {
10
+ connection_string = "mongodb+srv://";
11
+ }
12
+
13
+ if (connection && (connection.username || connection.password)) {
14
+ connection_string = `${connection_string}${connection.username || connection.password ? `${connection.username || ""}${!!connection.username && !!connection.password ? ':' : ''}${connection.password || ""}@` : ''}`;
15
+ }
16
+
17
+ if (connection && connection.hosts && types.is_array(connection.hosts)) {
18
+ connection_string = `${connection_string}${connection.hosts
19
+ .map((host) => connection?.srv ? host.hostname : `${host.hostname}:${host.port}`)
20
+ .join(",")}`;
21
+ }
22
+
23
+ if (connection && connection.database) {
24
+ connection_string = `${connection_string}/${connection.database}`;
25
+ }
26
+
27
+ const query_parameters = build_query_parameters(connection);
28
+
29
+ if (Object.keys(query_parameters)?.length > 0 ) {
30
+ connection_string = `${connection_string}?${serialize_query_parameters(query_parameters)}`;
31
+ }
32
+
33
+ return connection_string;
34
+ };
35
+
36
+ export default build_connection_string;
@@ -0,0 +1,17 @@
1
+ import available_query_parameters from "./available_query_parameters.js";
2
+
3
+ const build_query_parameters = (connection = {}) => {
4
+ const query_parameters = {};
5
+
6
+ for (let i = 0; i < available_query_parameters.length; i += 1) {
7
+ const available_query_parameter = available_query_parameters[i];
8
+
9
+ if (connection && connection[available_query_parameter]) {
10
+ query_parameters[available_query_parameter] = connection[available_query_parameter];
11
+ }
12
+ }
13
+
14
+ return query_parameters;
15
+ };
16
+
17
+ export default build_query_parameters;
@@ -0,0 +1,41 @@
1
+ import { MongoClient } from "mongodb";
2
+ import fs from 'fs';
3
+ import build_connection_string from "./build_connection_string.js";
4
+ import color_log from '../../../color_log.js';
5
+
6
+ const { readFile } = fs.promises;
7
+
8
+ const check_connection = async (connection = {}, mongodb_options = {}) => {
9
+ const connection_string = build_connection_string(connection);
10
+
11
+ try {
12
+ const connectionOptions = {
13
+ connectTimeoutMS: 3000,
14
+ socketTimeoutMS: 3000,
15
+ useNewUrlParser: true,
16
+ useUnifiedTopology: true,
17
+ ssl: false,
18
+ ...(mongodb_options || {}),
19
+ };
20
+
21
+ if (mongodb_options?.ca) {
22
+ connectionOptions.ca = await readFile(mongodb_options?.ca);
23
+ }
24
+
25
+ const connection = await MongoClient.connect(connection_string, connectionOptions);
26
+ connection.close();
27
+
28
+ return true;
29
+ } catch (exception) {
30
+ console.warn(exception);
31
+
32
+ color_log(
33
+ `\n✖ Failed to connect to MongoDB. Please double-check connection settings and try again.`,
34
+ 'yellow'
35
+ );
36
+
37
+ process.exit(1);
38
+ }
39
+ };
40
+
41
+ export default check_connection;
@@ -0,0 +1,27 @@
1
+ import check_connection from "./check_connection.js";
2
+ import mongodb from "./index.js";
3
+
4
+ const connect = async (settings = {}, port = 2610) => {
5
+ const has_connection = settings.connection && Object.keys(settings.connection).length > 0;
6
+
7
+ if (has_connection) {
8
+ await check_connection(settings.connection, settings.options);
9
+ }
10
+
11
+ return {
12
+ pid: !has_connection ? await mongodb(port) : null,
13
+ connection: has_connection ? settings.connection : {
14
+ hosts: [
15
+ {
16
+ hostname: "127.0.0.1",
17
+ port,
18
+ },
19
+ ],
20
+ database: "app",
21
+ username: "",
22
+ password: "",
23
+ },
24
+ };
25
+ };
26
+
27
+ export default connect;
@@ -0,0 +1,102 @@
1
+ import child_process from "child_process";
2
+ import fs from "fs";
3
+ import os from "os";
4
+ import get_platform_safe_path from '../../../get_platform_safe_path.js';
5
+ import get_process_id_from_port from "../../../get_process_id_from_port.js";
6
+ import kill_port_process from "../../../kill_port_process.js";
7
+ import path_exists from "../../../path_exists.js";
8
+
9
+ const { rename, mkdir } = fs.promises;
10
+
11
+ const get_mongo_shell_command = () => {
12
+ if (process.platform === 'win32') {
13
+ return 'mongosh.exe';
14
+ }
15
+
16
+ return 'mongosh';
17
+ };
18
+
19
+ const get_mongo_server_command = () => {
20
+ if (process.platform === 'win32') {
21
+ return 'mongod.exe';
22
+ }
23
+
24
+ return 'mongod';
25
+ };
26
+
27
+ const start_mongodb_process = (mongodb_port = 2610) => {
28
+ return new Promise((resolve) => {
29
+ // TODO: Does this hold up on Linux?
30
+ const mongo_server_command = get_mongo_server_command();
31
+ const joystick_mongod_path = `${os.homedir()}/.joystick/databases/mongodb/bin/bin/${mongo_server_command}`;
32
+ const database_process_flags = [
33
+ '--port',
34
+ mongodb_port,
35
+ '--dbpath',
36
+ get_platform_safe_path(`./.joystick/data/mongodb_${mongodb_port}`),
37
+ '--quiet',
38
+ '--replSet',
39
+ `joystick_${mongodb_port}`,
40
+ ];
41
+
42
+ const database_process = child_process.spawn(
43
+ joystick_mongod_path,
44
+ database_process_flags.filter((command) => !!command),
45
+ );
46
+
47
+ database_process.stdout.on('data', async (data) => {
48
+ const stdout = data?.toString();
49
+
50
+ if (stdout.includes('Waiting for connections')) {
51
+ const mongo_shell_command = get_mongo_shell_command();
52
+ const joystick_mongo_shell_path = `${os.homedir()}/.joystick/databases/mongodb/bin/bin/${mongo_shell_command}`;
53
+ child_process.exec(`${joystick_mongo_shell_path} --eval "rs.initiate()" --verbose --port ${mongodb_port}`, async (error, _stdout, _stderr) => {
54
+ if (error && !error?.message?.includes('already initialized')) {
55
+ console.log(error);
56
+ }
57
+
58
+ const process_id = await get_process_id_from_port(mongodb_port);
59
+ return resolve(parseInt(process_id, 10));
60
+ });
61
+ }
62
+ });
63
+
64
+ database_process.stderr.on('data', async (data) => {
65
+ const stderr = data.toString();
66
+ console.log(stderr);
67
+ });
68
+ });
69
+ };
70
+
71
+ const setup_data_directory = async (mongodb_port = 2610) => {
72
+ // NOTE: MongoDB was originally started as a standalone server. To enable additional functionality,
73
+ // we moved to a replica set config which necessitated multiple data directories in order to support
74
+ // running the same app on multiple ports (a limitation of MongoDB).
75
+ const legacy_data_directory_exists = await path_exists(".joystick/data/mongodb");
76
+ const data_directory_exists = await path_exists(`.joystick/data/mongodb_${mongodb_port}`);
77
+
78
+ if (legacy_data_directory_exists && !data_directory_exists) {
79
+ await rename('.joystick/data/mongodb', `.joystick/data/mongodb_${mongodb_port}`);
80
+ }
81
+
82
+ if (!data_directory_exists) {
83
+ await mkdir(`.joystick/data/mongodb_${mongodb_port}`, { recursive: true });
84
+ }
85
+
86
+ return data_directory_exists;
87
+ };
88
+
89
+ const start_mongodb = async (mongodb_port = 2610) => {
90
+ await setup_data_directory(mongodb_port);
91
+
92
+ try {
93
+ await kill_port_process(mongodb_port);
94
+ const mongo_process_id = await start_mongodb_process(mongodb_port);
95
+ return mongo_process_id;
96
+ } catch (exception) {
97
+ console.warn(exception);
98
+ process.exit(1);
99
+ }
100
+ };
101
+
102
+ export default start_mongodb;
@@ -0,0 +1,107 @@
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_linux = 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 mongodb_url = 'https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-ubuntu2204-7.0.2.tgz';
23
+ const mongosh_url = 'https://downloads.mongodb.com/compass/mongosh-2.2.12-linux-x64.tgz';
24
+
25
+ const mongodb_file_name = path.basename(new URL(mongodb_url).pathname);
26
+ const mongodb_file_path = path.join(base_directory, mongodb_file_name);
27
+
28
+ const mongosh_file_name = path.basename(new URL(mongosh_url).pathname);
29
+ const mongosh_file_path = path.join(base_directory, mongosh_file_name);
30
+
31
+ process.loader.print('MongoDB not found. Downloading... (this may take a few minutes)');
32
+ await download_file(mongodb_url, mongodb_file_path);
33
+ await download_file(mongosh_url, mongosh_file_path);
34
+
35
+ process.loader.print('Installing MongoDB...');
36
+
37
+ // Extract MongoDB
38
+ await execFileAsync('tar', ['-xzf', mongodb_file_path, '-C', base_directory]);
39
+ const mongodb_extracted_dir = (await fs.promises.readdir(base_directory)).find(dir => dir.startsWith('mongodb-'));
40
+ if (!mongodb_extracted_dir) {
41
+ throw new Error('Could not find extracted MongoDB directory');
42
+ }
43
+ const mongodb_bin_path = path.join(base_directory, mongodb_extracted_dir, 'bin');
44
+
45
+ // Move MongoDB binaries to bin/bin
46
+ const mongodb_binaries = await fs.promises.readdir(mongodb_bin_path);
47
+ for (const binary of mongodb_binaries) {
48
+ await fs.promises.rename(path.join(mongodb_bin_path, binary), path.join(bin_bin_directory, binary));
49
+ }
50
+
51
+ // Extract mongosh
52
+ const mongosh_temp_directory = path.join(base_directory, 'mongosh_temp');
53
+ await fs.promises.mkdir(mongosh_temp_directory, { recursive: true });
54
+ await execFileAsync('tar', ['-xzf', mongosh_file_path, '-C', mongosh_temp_directory]);
55
+
56
+ // Find and copy mongosh executable
57
+ const mongosh_contents = await fs.promises.readdir(mongosh_temp_directory);
58
+ const mongosh_dir = mongosh_contents.find(item => item.startsWith('mongosh-'));
59
+ if (!mongosh_dir) {
60
+ throw new Error('Could not find mongosh directory in extracted contents');
61
+ }
62
+
63
+ const mongosh_bin_path = path.join(mongosh_temp_directory, mongosh_dir, 'bin', 'mongosh');
64
+ const final_mongosh_path = path.join(bin_bin_directory, 'mongosh');
65
+ await fs.promises.copyFile(mongosh_bin_path, final_mongosh_path);
66
+
67
+ // Clean up
68
+ await fs.promises.unlink(mongodb_file_path);
69
+ await fs.promises.unlink(mongosh_file_path);
70
+ await fs.promises.rm(mongosh_temp_directory, { recursive: true, force: true });
71
+ await fs.promises.rm(path.join(base_directory, mongodb_extracted_dir), { recursive: true, force: true });
72
+
73
+ await make_file_executable(bin_bin_directory);
74
+ process.loader.print('MongoDB installed!');
75
+ };
76
+
77
+ const download_file = async (url, file_path) => {
78
+ const response = await fetch(url);
79
+ if (!response.ok) {
80
+ throw new Error(`Failed to download: ${response.statusText}`);
81
+ }
82
+ await streamPipeline(response.body, fs.createWriteStream(file_path));
83
+ };
84
+
85
+ const check_if_file_exists = async (file_path) => {
86
+ try {
87
+ await fs.promises.access(file_path);
88
+ return true;
89
+ } catch {
90
+ return false;
91
+ }
92
+ };
93
+
94
+ const create_directories = async (base_directory, bin_directory, bin_bin_directory) => {
95
+ await fs.promises.mkdir(base_directory, { recursive: true });
96
+ await fs.promises.mkdir(bin_directory, { recursive: true });
97
+ await fs.promises.mkdir(bin_bin_directory, { recursive: true });
98
+ };
99
+
100
+ const make_file_executable = async (directory) => {
101
+ const files = await fs.promises.readdir(directory);
102
+ for (const file of files) {
103
+ await fs.promises.chmod(path.join(directory, file), '755');
104
+ }
105
+ };
106
+
107
+ export default download_mongodb_linux;
@@ -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;