@joystick.js/cli-canary 0.0.0-canary.66 → 0.0.0-canary.661

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 (563) hide show
  1. package/.build/getFilesToBuild.js +1 -1
  2. package/.build/index.js +3 -3
  3. package/dist/cli.js +1 -69
  4. package/dist/commands/build/definition.js +1 -0
  5. package/dist/commands/build/index.js +1 -0
  6. package/dist/commands/create/build_package_json.js +1 -0
  7. package/dist/commands/create/definition.js +1 -0
  8. package/dist/commands/create/index.js +2 -0
  9. package/dist/commands/create/template/api/index.js +6 -0
  10. package/dist/commands/create/template/email/base.css +1 -0
  11. package/dist/commands/create/template/email/base.html +1 -0
  12. package/dist/commands/create/template/email/reset_password.js +20 -0
  13. package/dist/commands/create/template/i18n/en-US.js +14 -0
  14. package/dist/commands/create/template/index.client.js +1 -0
  15. package/dist/commands/create/template/index.css +34 -0
  16. package/dist/{functions/create/templates → commands/create/template}/index.html +2 -3
  17. package/dist/{functions/create/templates → commands/create/template}/index.server.js +6 -6
  18. package/dist/commands/create/template/public/apple-touch-icon-152x152.png +0 -0
  19. package/dist/commands/create/template/public/favicon.ico +0 -0
  20. package/dist/commands/create/template/public/joystick_logo.webp +0 -0
  21. package/dist/{functions/create/templates → commands/create/template}/public/manifest.json +4 -4
  22. package/dist/commands/create/template/public/splash-screen-1024x1024.png +0 -0
  23. package/{src/functions/create/templates → dist/commands/create/template}/ui/components/button/index.js +14 -6
  24. package/{src/functions/create/templates → dist/commands/create/template}/ui/layouts/app/index.js +2 -2
  25. package/dist/commands/create/template/ui/pages/error/index.js +50 -0
  26. package/dist/commands/create/template/ui/pages/index/index.js +121 -0
  27. package/dist/commands/help/definition.js +1 -0
  28. package/dist/commands/help/index.js +19 -0
  29. package/dist/commands/index.js +1 -0
  30. package/dist/commands/logout/definition.js +1 -0
  31. package/dist/commands/logout/index.js +3 -0
  32. package/dist/commands/push/cdn_mirrors.js +1 -0
  33. package/dist/commands/push/check_if_settings_valid.js +1 -0
  34. package/dist/commands/push/create_version.js +1 -0
  35. package/dist/commands/push/definition.js +1 -0
  36. package/dist/commands/push/get_app_domain.js +1 -0
  37. package/dist/commands/push/get_deployment.js +1 -0
  38. package/dist/commands/push/get_provision_domain.js +1 -0
  39. package/dist/commands/push/get_session_token.js +1 -0
  40. package/dist/commands/push/get_settings_file.js +1 -0
  41. package/dist/commands/push/handle_initial_deployment.js +1 -0
  42. package/dist/commands/push/handle_version_deployment.js +1 -0
  43. package/dist/commands/push/index.js +8 -0
  44. package/dist/commands/push/prompts/confirm_deployment.js +17 -0
  45. package/dist/commands/push/prompts/session_token.js +5 -0
  46. package/dist/commands/push/upload_build_to_cdn.js +1 -0
  47. package/dist/commands/push/validate_deployment.js +1 -0
  48. package/dist/commands/push/validate_push_config.js +1 -0
  49. package/dist/commands/start/definition.js +1 -0
  50. package/dist/commands/start/index.js +1 -0
  51. package/dist/commands/test/definition.js +1 -0
  52. package/dist/commands/test/index.js +1 -0
  53. package/dist/commands/update/definition.js +1 -0
  54. package/dist/commands/update/index.js +1 -0
  55. package/dist/commands/use/definition.js +1 -0
  56. package/dist/commands/use/index.js +1 -0
  57. package/dist/index.js +1 -7
  58. package/dist/lib/build/browser_path_exclusions.js +1 -0
  59. package/dist/lib/build/browser_paths.js +1 -0
  60. package/dist/lib/build/build_files.js +3 -0
  61. package/dist/lib/build/copy_paths.js +1 -0
  62. package/dist/lib/build/get_code_frame.js +1 -0
  63. package/dist/lib/build/get_file_operation.js +1 -0
  64. package/dist/lib/build/get_files_to_build.js +1 -0
  65. package/dist/lib/build/get_path_platform.js +1 -0
  66. package/dist/lib/build/get_platform_safe_path.js +1 -0
  67. package/dist/lib/build/get_tar_ignore_list.js +2 -0
  68. package/dist/lib/build/index.js +3 -0
  69. package/dist/lib/build/master_ignore_list.js +1 -0
  70. package/dist/lib/build/minify_file.js +1 -0
  71. package/dist/lib/build/node_paths.js +1 -0
  72. package/dist/lib/build/on_warn.js +10 -0
  73. package/dist/lib/build/plugins/bootstrap_component.js +33 -0
  74. package/dist/lib/build/plugins/generate_file_dependency_map.js +1 -0
  75. package/dist/lib/build/plugins/index.js +1 -0
  76. package/dist/lib/build/plugins/set_component_id.js +2 -0
  77. package/dist/lib/build/plugins/update_file_map.js +1 -0
  78. package/dist/lib/build/plugins/warn_node_environment.js +3 -0
  79. package/dist/lib/cli_log.js +13 -0
  80. package/dist/lib/color_log.js +1 -0
  81. package/dist/lib/command_exists.js +1 -0
  82. package/dist/lib/constants.js +1 -4
  83. package/dist/lib/debounce.js +1 -0
  84. package/dist/lib/decrypt_buffer.js +1 -0
  85. package/dist/lib/development_server/ava_config.js +1 -0
  86. package/dist/lib/development_server/check_if_port_occupied.js +1 -0
  87. package/dist/lib/development_server/cleanup.js +1 -0
  88. package/dist/lib/development_server/databases/mongodb/available_query_parameters.js +1 -0
  89. package/dist/lib/development_server/databases/mongodb/build_connection_string.js +1 -0
  90. package/dist/lib/development_server/databases/mongodb/build_query_parameters.js +1 -0
  91. package/dist/lib/development_server/databases/mongodb/check_connection.js +2 -0
  92. package/dist/lib/development_server/databases/mongodb/connect.js +1 -0
  93. package/dist/lib/development_server/databases/mongodb/index.js +5 -0
  94. package/dist/lib/development_server/databases/postgresql/check_connection.js +2 -0
  95. package/dist/lib/development_server/databases/postgresql/connect.js +1 -0
  96. package/dist/lib/development_server/databases/postgresql/index.js +2 -0
  97. package/dist/lib/development_server/databases/provider_map.js +1 -0
  98. package/dist/lib/development_server/get_database_process_ids.js +1 -0
  99. package/dist/lib/development_server/get_translations.js +1 -0
  100. package/dist/lib/development_server/hmr_server.js +1 -0
  101. package/dist/lib/development_server/index.js +10 -0
  102. package/dist/lib/development_server/kill_process_ids.js +1 -0
  103. package/dist/lib/development_server/run_tests.js +2 -0
  104. package/dist/lib/development_server/start_app_server.js +1 -0
  105. package/dist/lib/development_server/start_databases.js +1 -0
  106. package/dist/lib/development_server/start_hmr_server.js +1 -0
  107. package/dist/lib/development_server/watch_for_changes/browser_path_exclusions.js +1 -0
  108. package/dist/lib/development_server/watch_for_changes/browser_paths.js +1 -0
  109. package/dist/lib/development_server/watch_for_changes/get_after_run_tasks.js +1 -0
  110. package/dist/lib/development_server/watch_for_changes/get_file_codependencies.js +1 -0
  111. package/dist/lib/development_server/watch_for_changes/get_platform_safe_path.js +1 -0
  112. package/dist/lib/development_server/watch_for_changes/index.js +1 -0
  113. package/dist/lib/development_server/watch_for_changes/node_paths.js +1 -0
  114. package/dist/lib/development_server/watch_for_changes/read_file_dependency_map.js +1 -0
  115. package/dist/lib/development_server/watch_for_changes/watch_paths.js +1 -0
  116. package/dist/lib/dynamic_import.js +1 -0
  117. package/dist/lib/encrypt_buffer.js +1 -0
  118. package/dist/lib/generate_id.js +1 -0
  119. package/dist/lib/get_files_in_path.js +1 -0
  120. package/dist/lib/get_platform_safe_path.js +1 -0
  121. package/dist/lib/get_process_id_from_port.js +2 -0
  122. package/dist/lib/is_valid_json_string.js +1 -0
  123. package/dist/lib/kill_port_process.js +1 -0
  124. package/dist/lib/kill_process_id.js +1 -0
  125. package/dist/lib/load_settings.js +1 -0
  126. package/dist/lib/loader.js +2 -82
  127. package/dist/lib/log_bars.js +1 -0
  128. package/dist/lib/node_path_polyfills.js +1 -0
  129. package/dist/lib/parse_args.js +1 -0
  130. package/dist/lib/parse_options.js +1 -0
  131. package/dist/lib/path_exists.js +1 -0
  132. package/dist/lib/rainbow_road.js +1 -0
  133. package/dist/lib/replace_in_files.js +1 -0
  134. package/dist/lib/required_files.js +1 -0
  135. package/dist/lib/serialize_query_parameters.js +1 -0
  136. package/dist/lib/types.js +1 -6
  137. package/increment_version.js +3 -0
  138. package/package.json +18 -37
  139. package/src/cli.js +63 -46
  140. package/src/commands/build/definition.js +58 -0
  141. package/src/commands/build/index.js +7 -0
  142. package/src/commands/create/build_package_json.js +20 -0
  143. package/src/commands/create/definition.js +35 -0
  144. package/src/commands/create/index.js +71 -0
  145. package/src/commands/create/template/api/index.js +6 -0
  146. package/src/commands/create/template/email/base.css +1 -0
  147. package/src/commands/create/template/email/base.html +1 -0
  148. package/src/commands/create/template/email/reset_password.js +20 -0
  149. package/src/commands/create/template/i18n/en-US.js +14 -0
  150. package/src/commands/create/template/index.client.js +1 -0
  151. package/src/commands/create/template/index.css +34 -0
  152. package/src/{functions/create/templates → commands/create/template}/index.html +2 -3
  153. package/src/{functions/create/templates → commands/create/template}/index.server.js +6 -6
  154. package/src/commands/create/template/public/apple-touch-icon-152x152.png +0 -0
  155. package/src/commands/create/template/public/favicon.ico +0 -0
  156. package/src/commands/create/template/public/joystick_logo.webp +0 -0
  157. package/src/{functions/create/templates → commands/create/template}/public/manifest.json +4 -4
  158. package/src/commands/create/template/public/splash-screen-1024x1024.png +0 -0
  159. package/{dist/functions/create/templates → src/commands/create/template}/ui/components/button/index.js +14 -6
  160. package/{dist/functions/create/templates → src/commands/create/template}/ui/layouts/app/index.js +2 -2
  161. package/src/commands/create/template/ui/pages/error/index.js +50 -0
  162. package/src/commands/create/template/ui/pages/index/index.js +121 -0
  163. package/src/commands/help/definition.js +12 -0
  164. package/src/commands/help/index.js +48 -0
  165. package/src/commands/index.js +23 -0
  166. package/src/commands/logout/definition.js +10 -0
  167. package/src/commands/logout/index.js +20 -0
  168. package/src/commands/push/cdn_mirrors.js +7 -0
  169. package/src/commands/push/check_if_settings_valid.js +10 -0
  170. package/src/commands/push/create_version.js +20 -0
  171. package/src/commands/push/definition.js +43 -0
  172. package/src/commands/push/get_app_domain.js +11 -0
  173. package/src/commands/push/get_deployment.js +19 -0
  174. package/src/commands/push/get_provision_domain.js +9 -0
  175. package/src/commands/push/get_session_token.js +31 -0
  176. package/src/commands/push/get_settings_file.js +47 -0
  177. package/src/commands/push/handle_initial_deployment.js +24 -0
  178. package/src/commands/push/handle_version_deployment.js +23 -0
  179. package/src/commands/push/index.js +190 -0
  180. package/src/commands/push/prompts/confirm_deployment.js +73 -0
  181. package/src/commands/push/prompts/session_token.js +11 -0
  182. package/src/commands/push/upload_build_to_cdn.js +59 -0
  183. package/src/commands/push/validate_deployment.js +19 -0
  184. package/src/commands/push/validate_push_config.js +18 -0
  185. package/src/commands/start/definition.js +58 -0
  186. package/src/commands/start/index.js +11 -0
  187. package/src/commands/test/definition.js +28 -0
  188. package/src/commands/test/index.js +12 -0
  189. package/src/commands/update/definition.js +28 -0
  190. package/src/commands/update/index.js +29 -0
  191. package/src/commands/use/definition.js +19 -0
  192. package/src/commands/use/index.js +54 -0
  193. package/src/index.js +0 -0
  194. package/src/lib/build/browser_path_exclusions.js +8 -0
  195. package/src/lib/build/browser_paths.js +11 -0
  196. package/src/lib/build/build_files.js +161 -0
  197. package/src/{functions/start/filesToCopy.js → lib/build/copy_paths.js} +3 -1
  198. package/src/lib/build/get_code_frame.js +11 -0
  199. package/src/lib/build/get_file_operation.js +25 -0
  200. package/src/lib/build/get_files_to_build.js +36 -0
  201. package/src/lib/build/get_path_platform.js +32 -0
  202. package/src/lib/build/get_platform_safe_path.js +6 -0
  203. package/src/lib/build/get_tar_ignore_list.js +41 -0
  204. package/src/lib/build/index.js +101 -0
  205. package/src/lib/build/master_ignore_list.js +14 -0
  206. package/src/lib/build/minify_file.js +15 -0
  207. package/src/lib/build/node_paths.js +17 -0
  208. package/src/lib/build/on_warn.js +70 -0
  209. package/src/lib/build/plugins/bootstrap_component.js +191 -0
  210. package/src/lib/build/plugins/generate_file_dependency_map.js +20 -0
  211. package/src/lib/build/plugins/index.js +26 -0
  212. package/src/lib/build/plugins/set_component_id.js +89 -0
  213. package/src/lib/build/plugins/update_file_map.js +98 -0
  214. package/src/lib/build/plugins/warn_node_environment.js +20 -0
  215. package/src/lib/{CLILog.js → cli_log.js} +12 -8
  216. package/src/lib/color_log.js +7 -0
  217. package/src/lib/command_exists.js +16 -0
  218. package/src/lib/constants.js +11 -1
  219. package/src/lib/debounce.js +9 -0
  220. package/src/lib/decrypt_buffer.js +12 -0
  221. package/src/lib/development_server/ava_config.js +14 -0
  222. package/src/lib/development_server/check_if_port_occupied.js +31 -0
  223. package/src/lib/development_server/cleanup.js +15 -0
  224. package/src/lib/{dev/databases/mongodb/availableQueryParameters.js → development_server/databases/mongodb/available_query_parameters.js} +3 -1
  225. package/src/lib/development_server/databases/mongodb/build_connection_string.js +31 -0
  226. package/src/lib/development_server/databases/mongodb/build_query_parameters.js +17 -0
  227. package/src/lib/development_server/databases/mongodb/check_connection.js +41 -0
  228. package/src/lib/development_server/databases/mongodb/connect.js +27 -0
  229. package/src/lib/development_server/databases/mongodb/index.js +118 -0
  230. package/src/lib/development_server/databases/postgresql/check_connection.js +56 -0
  231. package/src/lib/development_server/databases/postgresql/connect.js +33 -0
  232. package/src/lib/development_server/databases/postgresql/index.js +126 -0
  233. package/src/lib/development_server/databases/provider_map.js +15 -0
  234. package/src/lib/development_server/get_database_process_ids.js +28 -0
  235. package/src/lib/development_server/get_translations.js +85 -0
  236. package/src/lib/development_server/hmr_server.js +94 -0
  237. package/src/lib/development_server/index.js +394 -0
  238. package/src/lib/development_server/kill_process_ids.js +8 -0
  239. package/src/lib/development_server/run_tests.js +84 -0
  240. package/src/lib/development_server/start_app_server.js +55 -0
  241. package/src/lib/development_server/start_databases.js +108 -0
  242. package/src/lib/development_server/start_hmr_server.js +36 -0
  243. package/src/lib/development_server/watch_for_changes/browser_path_exclusions.js +8 -0
  244. package/src/lib/development_server/watch_for_changes/browser_paths.js +11 -0
  245. package/src/lib/development_server/watch_for_changes/get_after_run_tasks.js +31 -0
  246. package/src/lib/development_server/watch_for_changes/get_file_codependencies.js +48 -0
  247. package/src/lib/development_server/watch_for_changes/get_platform_safe_path.js +6 -0
  248. package/src/lib/development_server/watch_for_changes/index.js +216 -0
  249. package/src/lib/development_server/watch_for_changes/node_paths.js +16 -0
  250. package/src/lib/development_server/watch_for_changes/read_file_dependency_map.js +18 -0
  251. package/src/lib/development_server/watch_for_changes/watch_paths.js +21 -0
  252. package/src/lib/dynamic_import.js +6 -0
  253. package/src/lib/encrypt_buffer.js +10 -0
  254. package/src/lib/generate_id.js +15 -0
  255. package/src/lib/get_files_in_path.js +25 -0
  256. package/src/lib/get_platform_safe_path.js +8 -0
  257. package/src/lib/get_process_id_from_port.js +26 -0
  258. package/src/lib/is_valid_json_string.js +10 -0
  259. package/src/lib/kill_port_process.js +12 -0
  260. package/src/lib/kill_process_id.js +19 -0
  261. package/src/lib/load_settings.js +43 -0
  262. package/src/lib/loader.js +4 -77
  263. package/src/lib/log_bars.js +7 -0
  264. package/src/lib/node_path_polyfills.js +23 -0
  265. package/src/lib/parse_args.js +16 -0
  266. package/src/lib/parse_options.js +16 -0
  267. package/src/lib/path_exists.js +11 -0
  268. package/src/lib/{rainbowRoad.js → rainbow_road.js} +4 -2
  269. package/src/lib/replace_in_files.js +40 -0
  270. package/src/lib/{dev/requiredFiles.js → required_files.js} +3 -1
  271. package/src/lib/serialize_query_parameters.js +7 -0
  272. package/src/lib/types.js +59 -2
  273. package/HMRNOTES.txt +0 -23
  274. package/README.md +0 -7
  275. package/_package.json +0 -55
  276. package/canary.js +0 -12
  277. package/dist/functions/build/getTarIgnoreList.js +0 -25
  278. package/dist/functions/build/index.js +0 -54
  279. package/dist/functions/create/buildPackageJSON.js +0 -20
  280. package/dist/functions/create/index.js +0 -193
  281. package/dist/functions/create/templates/api/index.js +0 -4
  282. package/dist/functions/create/templates/i18n/en-US.js +0 -4
  283. package/dist/functions/create/templates/index.client.js +0 -7
  284. package/dist/functions/create/templates/index.css +0 -20
  285. package/dist/functions/create/templates/public/apple-touch-icon-152x152.png +0 -0
  286. package/dist/functions/create/templates/public/favicon.ico +0 -0
  287. package/dist/functions/create/templates/public/splash-screen-1024x1024.png +0 -0
  288. package/dist/functions/create/templates/ui/pages/error/index.js +0 -31
  289. package/dist/functions/create/templates/ui/pages/index/index.js +0 -94
  290. package/dist/functions/index.js +0 -243
  291. package/dist/functions/logout/index.js +0 -20
  292. package/dist/functions/push/checkIfProvisionAvailable.js +0 -19
  293. package/dist/functions/push/deploy/index.js +0 -173
  294. package/dist/functions/push/deploy/initial.js +0 -100
  295. package/dist/functions/push/deploy/version.js +0 -100
  296. package/dist/functions/push/domains.js +0 -23
  297. package/dist/functions/push/getAvailableCDN.js +0 -23
  298. package/dist/functions/push/getDeployment.js +0 -41
  299. package/dist/functions/push/getDeploymentSummary.js +0 -38
  300. package/dist/functions/push/getInstanceSizeRegions.js +0 -37
  301. package/dist/functions/push/getInstanceSizesForRegion.js +0 -34
  302. package/dist/functions/push/getProviderInstanceSizes.js +0 -34
  303. package/dist/functions/push/getProviderRegions.js +0 -36
  304. package/dist/functions/push/getProvidersWithConnectionStatus.js +0 -20
  305. package/dist/functions/push/getSessionToken.js +0 -23
  306. package/dist/functions/push/getUserFromSessionToken.js +0 -37
  307. package/dist/functions/push/index.js +0 -210
  308. package/dist/functions/push/loginToCheatCode.js +0 -33
  309. package/dist/functions/push/pingProvisionAPI.js +0 -31
  310. package/dist/functions/push/prompts.js +0 -332
  311. package/dist/functions/push/providerMap.js +0 -11
  312. package/dist/functions/push/providers.js +0 -9
  313. package/dist/functions/reset/index.js +0 -0
  314. package/dist/functions/reset/reset.js +0 -127
  315. package/dist/functions/start/bootstrapLayoutComponent.js +0 -54
  316. package/dist/functions/start/bootstrapPageComponent.js +0 -51
  317. package/dist/functions/start/buildFile.js +0 -85
  318. package/dist/functions/start/buildFiles.js +0 -76
  319. package/dist/functions/start/buildPlugins.js +0 -183
  320. package/dist/functions/start/checkIfPortAvailable.js +0 -18
  321. package/dist/functions/start/cleanup/index.js +0 -18
  322. package/dist/functions/start/databases/mongodb/availableQueryParameters.js +0 -42
  323. package/dist/functions/start/databases/mongodb/buildConnectionString.js +0 -22
  324. package/dist/functions/start/databases/mongodb/buildQueryParameters.js +0 -14
  325. package/dist/functions/start/databases/mongodb/checkConnection.js +0 -35
  326. package/dist/functions/start/databases/mongodb/connect.js +0 -25
  327. package/dist/functions/start/databases/mongodb/index.js +0 -93
  328. package/dist/functions/start/databases/postgresql/checkConnection.js +0 -41
  329. package/dist/functions/start/databases/postgresql/connect.js +0 -27
  330. package/dist/functions/start/databases/postgresql/index.js +0 -106
  331. package/dist/functions/start/databases/redis.js +0 -0
  332. package/dist/functions/start/databases/startProvider.js +0 -16
  333. package/dist/functions/start/fileDependencyMapper.js +0 -22
  334. package/dist/functions/start/filesToCopy.js +0 -18
  335. package/dist/functions/start/generateId.js +0 -74
  336. package/dist/functions/start/getCodependenciesForFile.js +0 -64
  337. package/dist/functions/start/getFilesToBuild.js +0 -39
  338. package/dist/functions/start/getProcessIdFromPort.js +0 -60
  339. package/dist/functions/start/hmrServer.js +0 -66
  340. package/dist/functions/start/index.js +0 -31
  341. package/dist/functions/start/isWindows.js +0 -5
  342. package/dist/functions/start/minifyFile.js +0 -12
  343. package/dist/functions/start/onWarn.js +0 -63
  344. package/dist/functions/start/readFileDependencyMap.js +0 -16
  345. package/dist/functions/start/removeDeletedDependenciesFromMap.js +0 -18
  346. package/dist/functions/start/setComponentId.js +0 -46
  347. package/dist/functions/start/updateFileMap.js +0 -67
  348. package/dist/functions/test/index.js +0 -30
  349. package/dist/functions/update/index.js +0 -21
  350. package/dist/functions/use/index.js +0 -61
  351. package/dist/lib/CLILog.js +0 -49
  352. package/dist/lib/build/browserPathExclusions.js +0 -7
  353. package/dist/lib/build/browserPaths.js +0 -11
  354. package/dist/lib/build/buildFile.js +0 -84
  355. package/dist/lib/build/buildFiles.js +0 -238
  356. package/dist/lib/build/buildPlugins.js +0 -186
  357. package/dist/lib/build/getCodeFrame.js +0 -9
  358. package/dist/lib/build/minifyFile.js +0 -12
  359. package/dist/lib/build/nodePathExclusions.js +0 -7
  360. package/dist/lib/build/nodePaths.js +0 -11
  361. package/dist/lib/build/onWarn.js +0 -63
  362. package/dist/lib/build/removeDeletedDependenciesFromMap.js +0 -18
  363. package/dist/lib/build/setComponentId.js +0 -46
  364. package/dist/lib/build/updateFileMap.js +0 -67
  365. package/dist/lib/buildResolvePlugin.js +0 -21
  366. package/dist/lib/checkIfValidJSON.js +0 -11
  367. package/dist/lib/colorLog.js +0 -7
  368. package/dist/lib/dev/cleanup.js +0 -30
  369. package/dist/lib/dev/databases/mongodb/availableQueryParameters.js +0 -42
  370. package/dist/lib/dev/databases/mongodb/buildConnectionString.js +0 -22
  371. package/dist/lib/dev/databases/mongodb/buildQueryParameters.js +0 -14
  372. package/dist/lib/dev/databases/mongodb/checkConnection.js +0 -38
  373. package/dist/lib/dev/databases/mongodb/connect.js +0 -25
  374. package/dist/lib/dev/databases/mongodb/index.js +0 -93
  375. package/dist/lib/dev/databases/postgresql/checkConnection.js +0 -41
  376. package/dist/lib/dev/databases/postgresql/connect.js +0 -27
  377. package/dist/lib/dev/databases/postgresql/index.js +0 -106
  378. package/dist/lib/dev/databases/providerMap.js +0 -15
  379. package/dist/lib/dev/getCodependenciesForFile.js +0 -64
  380. package/dist/lib/dev/getFilesToBuild.js +0 -38
  381. package/dist/lib/dev/index.js +0 -452
  382. package/dist/lib/dev/isWindows.js +0 -5
  383. package/dist/lib/dev/loadSettings.js +0 -79
  384. package/dist/lib/dev/readFileDependencyMap.js +0 -16
  385. package/dist/lib/dev/requiredFiles.js +0 -18
  386. package/dist/lib/dev/runBuild.js +0 -30
  387. package/dist/lib/dev/runTests.js +0 -30
  388. package/dist/lib/dev/startApp.js +0 -79
  389. package/dist/lib/dev/startDatabases.js +0 -109
  390. package/dist/lib/dev/startHMR.js +0 -55
  391. package/dist/lib/dev/updateFileMap.js +0 -67
  392. package/dist/lib/dev/validateProject.js +0 -0
  393. package/dist/lib/dev/watchlist.js +0 -15
  394. package/dist/lib/filesToCopy.js +0 -18
  395. package/dist/lib/generateId.js +0 -74
  396. package/dist/lib/getArgs.js +0 -14
  397. package/dist/lib/getOptions.js +0 -15
  398. package/dist/lib/getPlatformSafePath.js +0 -7
  399. package/dist/lib/getProcessIdFromPort.js +0 -60
  400. package/dist/lib/getProvider.js +0 -8
  401. package/dist/lib/help.js +0 -56
  402. package/dist/lib/isObject.js +0 -6
  403. package/dist/lib/isValidJSONString.js +0 -11
  404. package/dist/lib/isWindows.js +0 -5
  405. package/dist/lib/killProcesses.js +0 -0
  406. package/dist/lib/loadSettings.js +0 -33
  407. package/dist/lib/masterIgnoreList.js +0 -16
  408. package/dist/lib/nodeEnvironment.js +0 -9
  409. package/dist/lib/nodeEnvironments.js +0 -8
  410. package/dist/lib/parseCookiesFromLogin.js +0 -18
  411. package/dist/lib/rainbowRoad.js +0 -7
  412. package/dist/lib/readDirectorySync.js +0 -14
  413. package/dist/lib/regexes.js +0 -14
  414. package/dist/lib/replaceBackslashesWithForwardSlashes.js +0 -8
  415. package/dist/lib/replaceFileProtocol.js +0 -8
  416. package/dist/lib/serializeQueryParameters.js +0 -8
  417. package/dist/lib/settings.js +0 -4
  418. package/dist/lib/validateDatabasesFromSettings.js +0 -34
  419. package/dist/lib/wait.js +0 -8
  420. package/release.js +0 -40
  421. package/src/functions/build/getTarIgnoreList.js +0 -30
  422. package/src/functions/build/index.js +0 -63
  423. package/src/functions/create/buildPackageJSON.js +0 -18
  424. package/src/functions/create/index.js +0 -209
  425. package/src/functions/create/templates/api/index.js +0 -4
  426. package/src/functions/create/templates/i18n/en-US.js +0 -4
  427. package/src/functions/create/templates/index.client.js +0 -7
  428. package/src/functions/create/templates/index.css +0 -20
  429. package/src/functions/create/templates/public/apple-touch-icon-152x152.png +0 -0
  430. package/src/functions/create/templates/public/favicon.ico +0 -0
  431. package/src/functions/create/templates/public/splash-screen-1024x1024.png +0 -0
  432. package/src/functions/create/templates/ui/pages/error/index.js +0 -31
  433. package/src/functions/create/templates/ui/pages/index/index.js +0 -94
  434. package/src/functions/index.js +0 -243
  435. package/src/functions/logout/index.js +0 -20
  436. package/src/functions/push/checkIfProvisionAvailable.js +0 -20
  437. package/src/functions/push/deploy/index.js +0 -199
  438. package/src/functions/push/deploy/initial.js +0 -108
  439. package/src/functions/push/deploy/version.js +0 -108
  440. package/src/functions/push/domains.js +0 -23
  441. package/src/functions/push/getAvailableCDN.js +0 -27
  442. package/src/functions/push/getDeployment.js +0 -43
  443. package/src/functions/push/getDeploymentSummary.js +0 -39
  444. package/src/functions/push/getInstanceSizeRegions.js +0 -40
  445. package/src/functions/push/getInstanceSizesForRegion.js +0 -35
  446. package/src/functions/push/getProviderInstanceSizes.js +0 -35
  447. package/src/functions/push/getProviderRegions.js +0 -39
  448. package/src/functions/push/getProvidersWithConnectionStatus.js +0 -25
  449. package/src/functions/push/getSessionToken.js +0 -26
  450. package/src/functions/push/getUserFromSessionToken.js +0 -39
  451. package/src/functions/push/index.js +0 -245
  452. package/src/functions/push/loginToCheatCode.js +0 -34
  453. package/src/functions/push/pingProvisionAPI.js +0 -33
  454. package/src/functions/push/prompts.js +0 -276
  455. package/src/functions/push/providerMap.js +0 -8
  456. package/src/functions/push/providers.js +0 -6
  457. package/src/functions/reset/index.js +0 -0
  458. package/src/functions/reset/reset.js +0 -163
  459. package/src/functions/start/bootstrapLayoutComponent.js +0 -57
  460. package/src/functions/start/bootstrapPageComponent.js +0 -54
  461. package/src/functions/start/buildFile.js +0 -97
  462. package/src/functions/start/buildFiles.js +0 -101
  463. package/src/functions/start/buildPlugins.js +0 -215
  464. package/src/functions/start/checkIfPortAvailable.js +0 -21
  465. package/src/functions/start/cleanup/index.js +0 -23
  466. package/src/functions/start/databases/mongodb/availableQueryParameters.js +0 -39
  467. package/src/functions/start/databases/mongodb/buildConnectionString.js +0 -28
  468. package/src/functions/start/databases/mongodb/buildQueryParameters.js +0 -15
  469. package/src/functions/start/databases/mongodb/checkConnection.js +0 -36
  470. package/src/functions/start/databases/mongodb/connect.js +0 -25
  471. package/src/functions/start/databases/mongodb/index.js +0 -108
  472. package/src/functions/start/databases/postgresql/checkConnection.js +0 -43
  473. package/src/functions/start/databases/postgresql/connect.js +0 -27
  474. package/src/functions/start/databases/postgresql/index.js +0 -127
  475. package/src/functions/start/databases/redis.js +0 -0
  476. package/src/functions/start/databases/startProvider.js +0 -15
  477. package/src/functions/start/fileDependencyMapper.js +0 -24
  478. package/src/functions/start/generateId.js +0 -73
  479. package/src/functions/start/getCodependenciesForFile.js +0 -84
  480. package/src/functions/start/getFilesToBuild.js +0 -49
  481. package/src/functions/start/getProcessIdFromPort.js +0 -92
  482. package/src/functions/start/hmrServer.js +0 -78
  483. package/src/functions/start/index.js +0 -701
  484. package/src/functions/start/isWindows.js +0 -3
  485. package/src/functions/start/minifyFile.js +0 -10
  486. package/src/functions/start/onWarn.js +0 -68
  487. package/src/functions/start/readFileDependencyMap.js +0 -19
  488. package/src/functions/start/removeDeletedDependenciesFromMap.js +0 -19
  489. package/src/functions/start/setComponentId.js +0 -58
  490. package/src/functions/start/updateFileMap.js +0 -100
  491. package/src/functions/test/index.js +0 -34
  492. package/src/functions/update/index.js +0 -20
  493. package/src/functions/use/index.js +0 -62
  494. package/src/lib/build/browserPathExclusions.js +0 -5
  495. package/src/lib/build/browserPaths.js +0 -9
  496. package/src/lib/build/buildFile.js +0 -91
  497. package/src/lib/build/buildFiles.js +0 -270
  498. package/src/lib/build/buildPlugins.js +0 -222
  499. package/src/lib/build/getCodeFrame.js +0 -7
  500. package/src/lib/build/minifyFile.js +0 -10
  501. package/src/lib/build/nodePathExclusions.js +0 -5
  502. package/src/lib/build/nodePaths.js +0 -9
  503. package/src/lib/build/onWarn.js +0 -68
  504. package/src/lib/build/removeDeletedDependenciesFromMap.js +0 -19
  505. package/src/lib/build/setComponentId.js +0 -58
  506. package/src/lib/build/updateFileMap.js +0 -100
  507. package/src/lib/buildResolvePlugin.js +0 -32
  508. package/src/lib/checkIfValidJSON.js +0 -8
  509. package/src/lib/colorLog.js +0 -5
  510. package/src/lib/dev/cleanup.js +0 -34
  511. package/src/lib/dev/databases/mongodb/buildConnectionString.js +0 -28
  512. package/src/lib/dev/databases/mongodb/buildQueryParameters.js +0 -15
  513. package/src/lib/dev/databases/mongodb/checkConnection.js +0 -40
  514. package/src/lib/dev/databases/mongodb/connect.js +0 -25
  515. package/src/lib/dev/databases/mongodb/index.js +0 -108
  516. package/src/lib/dev/databases/postgresql/checkConnection.js +0 -43
  517. package/src/lib/dev/databases/postgresql/connect.js +0 -27
  518. package/src/lib/dev/databases/postgresql/index.js +0 -127
  519. package/src/lib/dev/databases/providerMap.js +0 -13
  520. package/src/lib/dev/getCodependenciesForFile.js +0 -84
  521. package/src/lib/dev/getFilesToBuild.js +0 -47
  522. package/src/lib/dev/index.js +0 -560
  523. package/src/lib/dev/isWindows.js +0 -3
  524. package/src/lib/dev/loadSettings.js +0 -90
  525. package/src/lib/dev/readFileDependencyMap.js +0 -19
  526. package/src/lib/dev/runBuild.js +0 -33
  527. package/src/lib/dev/runTests.js +0 -33
  528. package/src/lib/dev/startApp.js +0 -89
  529. package/src/lib/dev/startDatabases.js +0 -131
  530. package/src/lib/dev/startHMR.js +0 -62
  531. package/src/lib/dev/updateFileMap.js +0 -100
  532. package/src/lib/dev/validateProject.js +0 -0
  533. package/src/lib/dev/watchlist.js +0 -13
  534. package/src/lib/filesToCopy.js +0 -15
  535. package/src/lib/generateId.js +0 -73
  536. package/src/lib/getArgs.js +0 -14
  537. package/src/lib/getOptions.js +0 -12
  538. package/src/lib/getProcessIdFromPort.js +0 -92
  539. package/src/lib/getProvider.js +0 -5
  540. package/src/lib/help.js +0 -56
  541. package/src/lib/isObject.js +0 -3
  542. package/src/lib/isValidJSONString.js +0 -8
  543. package/src/lib/killProcesses.js +0 -5
  544. package/src/lib/loadSettings.js +0 -40
  545. package/src/lib/masterIgnoreList.js +0 -13
  546. package/src/lib/nodeEnvironment.js +0 -6
  547. package/src/lib/nodeEnvironments.js +0 -8
  548. package/src/lib/parseCookiesFromLogin.js +0 -21
  549. package/src/lib/readDirectorySync.js +0 -13
  550. package/src/lib/regexes.js +0 -7
  551. package/src/lib/replaceBackslashesWithForwardSlashes.js +0 -8
  552. package/src/lib/replaceFileProtocol.js +0 -8
  553. package/src/lib/serializeQueryParameters.js +0 -5
  554. package/src/lib/settings.js +0 -1
  555. package/src/lib/validateDatabasesFromSettings.js +0 -37
  556. package/src/lib/wait.js +0 -5
  557. package/storage/.verdaccio-db.json +0 -1
  558. /package/{src/lib → .build}/getPlatformSafePath.js +0 -0
  559. /package/{src/lib → .build}/isWindows.js +0 -0
  560. /package/dist/{functions/create/templates → commands/create/template}/public/service-worker.js +0 -0
  561. /package/dist/{functions/create/templates → commands/create/template}/settings.development.json +0 -0
  562. /package/src/{functions/create/templates → commands/create/template}/public/service-worker.js +0 -0
  563. /package/src/{functions/create/templates → commands/create/template}/settings.development.json +0 -0
@@ -0,0 +1,394 @@
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
+
25
+ const { stat } = fs.promises;
26
+ const exec = util.promisify(child_process.exec);
27
+
28
+ const node_major_version = parseInt(
29
+ process?.version?.split(".")[0]?.replace("v", ""),
30
+ 10
31
+ );
32
+
33
+ const __filename = fileURLToPath(import.meta.url);
34
+ const __dirname = dirname(__filename);
35
+
36
+ const process_ids = [];
37
+
38
+ const handle_run_tests = async (watch = false) => {
39
+ const database_process_ids = get_database_process_ids();
40
+ await run_tests({
41
+ watch,
42
+ __dirname,
43
+ process_ids: [
44
+ ...process_ids,
45
+ ...database_process_ids,
46
+ ],
47
+ cleanup_process: process.cleanup_process,
48
+ });
49
+ };
50
+
51
+ const handle_signal_events = (process_ids = [], node_major_version = 0, __dirname = '') => {
52
+ const exec_argv = ["--no-warnings"];
53
+
54
+ if (node_major_version < 19) {
55
+ exec_argv.push("--experimental-specifier-resolution=node");
56
+ }
57
+
58
+ const cleanup_process = child_process.fork(
59
+ path.resolve(`${__dirname}/cleanup.js`),
60
+ [],
61
+ {
62
+ // NOTE: Run in detached mode so when parent process dies, the child still runs
63
+ // and cleanup completes. Keep silent as we don't wan't/expect any messages.
64
+ detached: true,
65
+ silent: true,
66
+ }
67
+ );
68
+
69
+ process.cleanup_process = cleanup_process;
70
+
71
+ process.on("SIGINT", async () => {
72
+ const database_process_ids = get_database_process_ids();
73
+ cleanup_process.send(JSON.stringify(({ process_ids: [...process_ids, ...database_process_ids] })));
74
+ process.exit();
75
+ });
76
+
77
+ process.on("SIGTERM", async () => {
78
+ const database_process_ids = get_database_process_ids();
79
+ cleanup_process.send(JSON.stringify(({ process_ids: [...process_ids, ...database_process_ids] })));
80
+ process.exit();
81
+ });
82
+ };
83
+
84
+ const handle_signal_hmr_update = async (jobs = []) => {
85
+ const has_settings_change = jobs?.find((job) => (job?.path?.match(constants.SETTINGS_FILE_NAME_REGEX))?.length > 0);
86
+ const has_i18n_change = jobs?.find((job) => job?.path?.includes('i18n'));
87
+ const has_index_html_change = jobs?.find((job) => job?.path?.includes('index.html'));
88
+ const has_index_css_change = jobs?.find((job) => job?.path?.includes('index.css'));
89
+ const has_index_client_change = jobs?.find((job) => job?.path?.includes('index.client.js'));
90
+
91
+ process.hmr_server_process.send(JSON.stringify({
92
+ type: 'FILE_CHANGE',
93
+ settings: has_settings_change ? await load_settings(process.env.NODE_ENV) : null,
94
+ i18n_change: !!has_i18n_change,
95
+ index_html_change: !!has_index_html_change,
96
+ index_css_change: !!has_index_css_change,
97
+ index_client_change: !!has_index_client_change,
98
+ }));
99
+ };
100
+
101
+ const handle_hmr_server_process_messages = (node_major_version = 0, watch = false, old_settings = {}) => {
102
+ process.hmr_server_process.on("message", async (message) => {
103
+ const process_messages = [
104
+ "HAS_HMR_CONNECTIONS",
105
+ "HAS_NO_HMR_CONNECTIONS",
106
+ "HMR_UPDATE_COMPLETE",
107
+ ];
108
+
109
+ if (!process_messages.includes(message?.type)) {
110
+ process.loader.print(message);
111
+ }
112
+
113
+ if (message?.type === "HAS_HMR_CONNECTIONS") {
114
+ process.hmr_server_process.has_connections = true;
115
+ }
116
+
117
+ if (message?.type === "HAS_NO_HMR_CONNECTIONS") {
118
+ process.hmr_server_process.has_connections = false;
119
+ }
120
+
121
+ if (message?.type === "HMR_UPDATE_COMPLETE") {
122
+ if (process.app_server_process && !process.app_server_restarting) {
123
+ process.app_server_restarting = true;
124
+ handle_restart_app_server(node_major_version, watch, old_settings);
125
+ }
126
+ }
127
+ });
128
+ };
129
+
130
+ const handle_hmr_server_process_stdio = () => {
131
+ process.hmr_server_process.on("error", (error) => {
132
+ cli_log(error.toString(), {
133
+ level: "danger",
134
+ docs: "https://github.com/cheatcode/joystick",
135
+ });
136
+ });
137
+
138
+ process.hmr_server_process.stdout.on("data", (data) => {
139
+ console.log(data.toString());
140
+ });
141
+
142
+ process.hmr_server_process.stderr.on("data", (data) => {
143
+ cli_log(data.toString(), {
144
+ level: "danger",
145
+ docs: "https://github.com/cheatcode/joystick",
146
+ });
147
+ });
148
+ };
149
+
150
+ const handle_start_hmr_server = (node_major_version = 0, __dirname = '', watch = false, old_settings = {}) => {
151
+ process.hmr_server_process = start_hmr_server(node_major_version, __dirname);
152
+ process_ids.push(process.hmr_server_process?.pid);
153
+ handle_hmr_server_process_stdio();
154
+ handle_hmr_server_process_messages(node_major_version, watch, old_settings);
155
+ };
156
+
157
+ const check_if_database_changes = async (old_settings = {}) => {
158
+ const new_settings = await load_settings(process.env.NODE_ENV);
159
+ const new_databse_settings = new_settings?.config?.databases ? JSON.stringify(new_settings?.config?.databases) : '';
160
+ const old_database_settings = old_settings?.config?.databases ? JSON.stringify(old_settings?.config?.databases) : '';
161
+ return new_databse_settings !== old_database_settings;
162
+ };
163
+
164
+ const handle_restart_app_server = async (node_major_version = 0, watch = false, old_settings = null) => {
165
+ const has_database_changes = await check_if_database_changes(old_settings);
166
+
167
+ if (has_database_changes) {
168
+ const database_process_ids = get_database_process_ids();
169
+
170
+ cli_log(`Database configuration has changed in settings.${process.env.NODE_ENV}.json. Please restart your app to add, change, or remove databases.`, {
171
+ level: "danger",
172
+ docs: "https://cheatcode.co/docs/joystick/structure",
173
+ });
174
+
175
+ kill_process_ids([process.hmr_server_process?.pid, process.app_server_process?.pid, ...database_process_ids]);
176
+ process.exit(0);
177
+ } else {
178
+ await kill_port_process(process.env.PORT);
179
+ handle_start_app_server(node_major_version, watch);
180
+ }
181
+ };
182
+
183
+ const handle_app_server_process_stdio = (watch = false) => {
184
+ process.app_server_process.on('error', (error) => {
185
+ cli_log(error.toString(), {
186
+ level: "danger",
187
+ docs: "https://github.com/cheatcode/joystick",
188
+ });
189
+ });
190
+
191
+ process.app_server_process.stdout.on("data", (data) => {
192
+ const stdout = data.toString();
193
+ const is_startup_notification = stdout.includes("App running at:");
194
+
195
+ if (stdout && is_startup_notification && process.env.NODE_ENV !== 'test') {
196
+ process.loader.print(stdout);
197
+ }
198
+
199
+ if (stdout && !is_startup_notification && !stdout.includes("BUILD_ERROR")) {
200
+ console.log(stdout);
201
+ }
202
+
203
+ // NOTE: Run tests here so we can guarantee app server is running. Do a slight delay
204
+ // to ensure that test routes are registered.
205
+ if (stdout && is_startup_notification && process.env.NODE_ENV === 'test') {
206
+ handle_run_tests(watch);
207
+ }
208
+ });
209
+
210
+ process.app_server_process.stderr.on("data", (data) => {
211
+ cli_log(data.toString(), {
212
+ level: "danger",
213
+ docs: "https://cheatcode.co/docs/joystick",
214
+ });
215
+ });
216
+ };
217
+
218
+ const handle_start_app_server = (node_major_version = 0, watch = false) => {
219
+ process.app_server_process = start_app_server(node_major_version, watch);
220
+ process_ids.push(process.app_server_process?.pid);
221
+ handle_app_server_process_stdio(watch);
222
+ process.app_server_restarting = false;
223
+ };
224
+
225
+ const set_process_variables = (development_server_options = {}, port = 2600) => {
226
+ process.title = development_server_options?.environment === 'test' ? "joystick_test" : 'joystick';
227
+ process.loader = new Loader();
228
+
229
+ if (development_server_options?.environment === 'test') {
230
+ process.loader.print("Initializing test environment...");
231
+ }
232
+
233
+ process.env.LOGS_PATH = development_server_options?.logs || null;
234
+ process.env.NODE_ENV = development_server_options?.environment || "development";
235
+ process.env.PORT = port;
236
+ process.env.IS_DEBUG_MODE = development_server_options?.debug;
237
+ };
238
+
239
+ const warn_app_port_occupied = (port = 2600) => {
240
+ cli_log(`Port ${port} is already occupied. To start Joystick on this port, clear it and try again.`, {
241
+ level: 'danger',
242
+ });
243
+
244
+ process.exit(0);
245
+ };
246
+
247
+ const get_port = (port = 2600) => {
248
+ return parseInt(port || 2600, 10);
249
+ };
250
+
251
+ const clean_up_existing_build = async () => {
252
+ const build_path = get_platform_safe_path(`${process.cwd()}/.joystick/build`);
253
+
254
+ if (await path_exists(build_path)) {
255
+ await exec(`${process.platform === 'win32' ? 'rmdir /s /q' : 'rm -rf'} ${build_path}`);
256
+ }
257
+ };
258
+
259
+ const check_for_required_files = async () => {
260
+ const missing_files = [];
261
+
262
+ for (let i = 0; i < required_files?.length; i += 1) {
263
+ const required_file = required_files[i];
264
+ const exists = await path_exists(`${process.cwd()}/${required_file.path}`);
265
+ const stats = exists && await stat(`${process.cwd()}/${required_file.path}`);
266
+
267
+ if (required_file && required_file.type === "file" && (!exists || (exists && !stats.isFile()))) {
268
+ missing_files.push({ type: 'file', path: required_file.path });
269
+ }
270
+
271
+ if (required_file && required_file.type === "directory" && (!exists || (exists && !stats.isDirectory()))) {
272
+ missing_files.push({ type: 'directory', path: required_file.path });
273
+ }
274
+ }
275
+
276
+ if (missing_files?.length > 0) {
277
+ const files = missing_files?.filter((path) => path.type === 'file');
278
+ const directories = missing_files?.filter((path) => path.type === 'directory');
279
+
280
+ let error = `The following paths are missing and required in a Joystick project:\n\n`;
281
+
282
+ if (files?.length > 0) {
283
+ error += ` ${chalk.yellow('>')} Required Files:\n\n`;
284
+
285
+ for (let i = 0; i < files?.length; i += 1) {
286
+ const file = files[i];
287
+ const is_last_file = i +1 === files?.length;
288
+ error += ` ${chalk.red(`/${file.path}\n${is_last_file && directories?.length > 0 ? '\n' : ''}`)}`;
289
+ }
290
+ }
291
+
292
+ if (directories?.length > 0) {
293
+ error += ` ${chalk.yellow('>')} Required Directories:\n\n`;
294
+
295
+ for (let i = 0; i < directories?.length; i += 1) {
296
+ const file = directories[i];
297
+ error += ` ${chalk.red(`/${file.path}\n`)}`;
298
+ }
299
+ }
300
+
301
+ cli_log(error, {
302
+ level: "danger",
303
+ docs: "https://cheatcode.co/docs/joystick/structure",
304
+ });
305
+
306
+ process.exit(0);
307
+ }
308
+ };
309
+
310
+ const warn_invalid_joystick_environment = async () => {
311
+ const has_joystick_folder = await path_exists(`${process.cwd()}/.joystick`);
312
+ const has_tests_folder = await path_exists(`${process.cwd()}/tests`);
313
+
314
+ if (process.env.NODE_ENV === 'test' && (!has_joystick_folder || !has_tests_folder)) {
315
+ cli_log(
316
+ "joystick test must be run in a directory with a .joystick folder and tests folder.",
317
+ {
318
+ level: "danger",
319
+ docs: "https://cheatcode.co/docs/joystick/cli/test",
320
+ }
321
+ );
322
+
323
+ process.exit(0);
324
+ }
325
+
326
+ if (process.env.NODE_ENV !== 'test' && !has_joystick_folder) {
327
+ cli_log(
328
+ "joystick start must be run in a directory with a .joystick folder.",
329
+ {
330
+ level: "danger",
331
+ docs: "https://cheatcode.co/docs/joystick/cli/start",
332
+ }
333
+ );
334
+
335
+ process.exit(0);
336
+ }
337
+ };
338
+
339
+ const development_server = async (development_server_options = {}) => {
340
+ await warn_invalid_joystick_environment();
341
+ await check_for_required_files();
342
+
343
+ await clean_up_existing_build();
344
+
345
+ const port = get_port(development_server_options?.port);
346
+ const app_port_occupied = await check_if_port_occupied(port);
347
+ const hmr_port_occupied = await check_if_port_occupied(port + 1);
348
+
349
+ if (app_port_occupied) {
350
+ warn_app_port_occupied(port);
351
+ }
352
+
353
+ if (hmr_port_occupied) {
354
+ kill_port_process(port);
355
+ }
356
+
357
+ set_process_variables(development_server_options, port);
358
+
359
+ const settings = await load_settings(process.env.NODE_ENV);
360
+
361
+ await start_databases({
362
+ environment: process.env.NODE_ENV,
363
+ port,
364
+ settings
365
+ });
366
+
367
+ watch_for_changes({
368
+ hot_module_reload: (jobs = []) => handle_signal_hmr_update(jobs),
369
+ restart_app_server: (jobs = []) => handle_restart_app_server(
370
+ node_major_version,
371
+ development_server_options?.watch,
372
+ settings,
373
+ ),
374
+ start_app_server: () => handle_start_app_server(
375
+ node_major_version,
376
+ development_server_options?.watch,
377
+
378
+ ),
379
+ start_hmr_server: development_server_options?.environment !== 'test' ? () => handle_start_hmr_server(
380
+ node_major_version,
381
+ __dirname,
382
+ development_server_options?.watch,
383
+ settings,
384
+ ) : null,
385
+ }, {
386
+ custom_copy_paths: settings?.config?.build?.copy_paths?.map((path) => {
387
+ return { path };
388
+ }) || [],
389
+ });
390
+
391
+ handle_signal_events(process_ids, node_major_version, __dirname);
392
+ };
393
+
394
+ export default development_server;
@@ -0,0 +1,8 @@
1
+ const kill_process_ids = (process_ids = []) => {
2
+ for (let i = 0; i < process_ids?.length; i += 1) {
3
+ const process_id = process_ids[i];
4
+ process.kill(process_id);
5
+ }
6
+ };
7
+
8
+ export default kill_process_ids;
@@ -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;
@@ -0,0 +1,36 @@
1
+ import child_process from "child_process";
2
+ import path from "path";
3
+
4
+ const start_hmr_server_process = (exec_argv = [], __dirname = '') => {
5
+ // NOTE: Port is automatically pulled via process.env.PORT
6
+ // in the hmr_server.js script.
7
+ return child_process.fork(
8
+ path.resolve(`${__dirname}/hmr_server.js`),
9
+ [],
10
+ {
11
+ execArgv: exec_argv,
12
+ // NOTE: Pipe stdin, stdout, and stderr. IPC establishes a message channel so we
13
+ // communicate with the child_process.
14
+ silent: true,
15
+ }
16
+ );
17
+ };
18
+
19
+ const get_exec_args = (node_major_version = 0) => {
20
+ const exec_argv = ["--no-warnings"];
21
+
22
+ if (node_major_version < 19) {
23
+ exec_argv.push("--experimental-specifier-resolution=node");
24
+ }
25
+
26
+ return exec_argv;
27
+ };
28
+
29
+ const start_hmr_server = (node_major_version = 0, __dirname = '') => {
30
+ const exec_argv = get_exec_args(node_major_version);
31
+ const hmr_server_process = start_hmr_server_process(exec_argv, __dirname);
32
+ return hmr_server_process;
33
+ };
34
+
35
+ export default start_hmr_server;
36
+
@@ -0,0 +1,8 @@
1
+ import get_platform_safe_path from "./get_platform_safe_path.js";
2
+
3
+ const browser_path_exclusions = [
4
+ get_platform_safe_path("lib/node"),
5
+ get_platform_safe_path("tests/"),
6
+ ];
7
+
8
+ export default browser_path_exclusions;