@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,20 @@
1
+ import fetch from 'node-fetch';
2
+
3
+ const create_version = (options = {}) => {
4
+ return fetch(`${options?.push_provision_domain}/api/versions/${options?.domain}`, {
5
+ method: 'POST',
6
+ headers: {
7
+ 'Content-Type': 'application/json',
8
+ 'x-push-session-token': options?.session_token,
9
+ },
10
+ body: JSON.stringify(options?.body),
11
+ })?.then(async (response) => {
12
+ // NOTE: We only care about the response body here so parse it out and return it.
13
+ const data = await response.json();
14
+ return data?.data;
15
+ }).catch((error) => {
16
+ console.warn(error);
17
+ });
18
+ };
19
+
20
+ export default create_version;
@@ -0,0 +1,43 @@
1
+ import push from './index.js';
2
+
3
+ const [_node, _bin, ...raw_args] = process.argv;
4
+
5
+ const definition = {
6
+ description: 'Deploy your Joystick app using Push.',
7
+ args: {},
8
+ options: {
9
+ environment: {
10
+ flags: {
11
+ '-e': {
12
+ set: !!raw_args.includes('-e'),
13
+ value: !!raw_args.includes('-e') && raw_args[raw_args.indexOf('-e') + 1],
14
+ parent: 'push',
15
+ },
16
+ '--environment': {
17
+ set: !!raw_args.includes('--environment'),
18
+ value: !!raw_args.includes('--environment') && raw_args[raw_args.indexOf('--environment') + 1],
19
+ parent: 'push',
20
+ },
21
+ },
22
+ description: 'The value you want to use for NODE_ENV in the deployed app (e.g., staging or production). Default is production.',
23
+ },
24
+ provision_server: {
25
+ flags: {
26
+ '-s': {
27
+ set: !!raw_args.includes('-s'),
28
+ value: !!raw_args.includes('-s') && raw_args[raw_args.indexOf('-s') + 1],
29
+ parent: 'push',
30
+ },
31
+ '--server': {
32
+ set: !!raw_args.includes('--server'),
33
+ value: !!raw_args.includes('--server') && raw_args[raw_args.indexOf('--server') + 1],
34
+ parent: 'push',
35
+ },
36
+ },
37
+ description: 'The Push provision server to target (development or production).',
38
+ },
39
+ },
40
+ command: push,
41
+ };
42
+
43
+ export default definition;
@@ -0,0 +1,11 @@
1
+ const get_app_domain = (provision_server = 'production') => {
2
+ // NOTE: Rely on provision_server CLI option flag here because that will need
3
+ // to be paired with the appropriate app server.
4
+ return {
5
+ development: 'http://localhost:2600',
6
+ staging: 'https://staging.push.cheatcode.co',
7
+ production: 'https://push.cheatcode.co',
8
+ }[provision_server];
9
+ };
10
+
11
+ export default get_app_domain;
@@ -0,0 +1,19 @@
1
+ import fetch from 'node-fetch';
2
+
3
+ const get_deployment = (options = {}) => {
4
+ return fetch(`${options?.push_provision_domain}/api/deployments/${options?.domain}`, {
5
+ method: 'GET',
6
+ headers: {
7
+ 'x-push-session-token': options?.session_token,
8
+ Accept: 'application/json',
9
+ },
10
+ })?.then(async (response) => {
11
+ // NOTE: We only care about the data in the response here so just return it.
12
+ const data = await response.json();
13
+ return data?.data;
14
+ }).catch((error) => {
15
+ console.warn(error);
16
+ });
17
+ };
18
+
19
+ export default get_deployment;
@@ -0,0 +1,9 @@
1
+ const get_provision_domain = (provision_server = 'production') => {
2
+ return {
3
+ development: 'http://localhost:2603',
4
+ staging: 'https://staging.provision.cheatcode.co',
5
+ production: 'https://provision.cheatcode.co',
6
+ }[provision_server];
7
+ };
8
+
9
+ export default get_provision_domain;
@@ -0,0 +1,31 @@
1
+ import os from 'os';
2
+ import fs from 'fs';
3
+ import inquirer from 'inquirer';
4
+ import path_exists from '../../lib/path_exists.js';
5
+ import session_token_prompt from './prompts/session_token.js';
6
+
7
+ const { readFile, mkdir, writeFile } = fs.promises;
8
+
9
+ const get_session_token = async () => {
10
+ const home_directory = os.homedir();
11
+ const session_token_path = `${home_directory}/.push/session_token`;
12
+ const session_token_exists = await path_exists(session_token_path);
13
+
14
+ if (session_token_exists) {
15
+ return readFile(session_token_path, 'utf-8');
16
+ }
17
+
18
+ const { session_token } = await inquirer.prompt(session_token_prompt());
19
+
20
+ if (session_token) {
21
+ if (!(await path_exists(`${home_directory}/.push`))) {
22
+ await mkdir(`${home_directory}/.push`);
23
+ }
24
+
25
+ await writeFile(`${home_directory}/.push/session_token`, session_token);
26
+
27
+ return session_token;
28
+ }
29
+ };
30
+
31
+ export default get_session_token;
@@ -0,0 +1,47 @@
1
+ import fs from 'fs';
2
+ import cli_log from '../../lib/cli_log.js';
3
+ import is_valid_json_string from '../../lib/is_valid_json_string.js';
4
+ import path_exists from '../../lib/path_exists.js';
5
+
6
+ const { readFile } = fs.promises;
7
+
8
+ const read_settings_file = async (environment = '') => {
9
+ const settings_file_name = `settings.${environment}.json`;
10
+ const settings_file_exists = await path_exists(settings_file_name);
11
+
12
+ if (!settings_file_exists) {
13
+ cli_log(
14
+ `Could not find a ${settings_file_name} in your project. Double-check this exists and try again.`,
15
+ {
16
+ level: "danger",
17
+ docs: "https://cheatcode.co/docs/push/config"
18
+ }
19
+ );
20
+
21
+ return process.exit(0);
22
+ }
23
+
24
+ return readFile(settings_file_name);
25
+ };
26
+
27
+ const get_settings_file = async (options) => {
28
+ const settings_file_name = `settings.${options?.environment}.json`;
29
+ const raw_settings_file = await read_settings_file(options?.environment);
30
+ const settings_file_is_valid_json = is_valid_json_string(raw_settings_file);
31
+
32
+ if (!settings_file_is_valid_json) {
33
+ cli_log(
34
+ `${settings_file_name} contains invalid JSON. Double-check the syntax and try again.`,
35
+ {
36
+ level: "danger",
37
+ docs: "https://cheatcode.co/docs/push/config"
38
+ }
39
+ );
40
+
41
+ return process.exit(0);
42
+ }
43
+
44
+ return JSON.parse(raw_settings_file);
45
+ };
46
+
47
+ export default get_settings_file;
@@ -0,0 +1,24 @@
1
+ import fetch from "node-fetch";
2
+
3
+ const handle_initial_deployment = async (options = {}) => {
4
+ return fetch(`${options?.push_provision_domain}/api/deployments/${options?.deployment?.domain}`, {
5
+ method: "POST",
6
+ headers: {
7
+ "x-push-session-token": options?.session_token,
8
+ 'Content-Type': 'application/json',
9
+ },
10
+ body: JSON.stringify({
11
+ environment: options?.environment,
12
+ build_timestamp: options?.build_timestamp,
13
+ domain: options?.deployment?.domain,
14
+ deployment_id: options?.deployment?._id,
15
+ }),
16
+ }).then(async (response) => {
17
+ const data = await response.json();
18
+ return data?.data;
19
+ }).catch((error) => {
20
+ console.warn(error);
21
+ });
22
+ };
23
+
24
+ export default handle_initial_deployment;
@@ -0,0 +1,23 @@
1
+ import fetch from "node-fetch";
2
+
3
+ const handle_version_deployment = async (options = {}) => {
4
+ return fetch(`${options?.push_provision_domain}/api/deployments/${options?.deployment?.domain}`, {
5
+ method: "PUT",
6
+ headers: {
7
+ "x-push-session-token": options?.session_token,
8
+ 'Content-Type': 'application/json',
9
+ },
10
+ body: JSON.stringify({
11
+ build_timestamp: options?.build_timestamp,
12
+ domain: options?.deployment?.domain,
13
+ deployment_id: options?.deployment?._id,
14
+ }),
15
+ }).then(async (response) => {
16
+ const data = await response.json();
17
+ return data?.data;
18
+ }).catch((error) => {
19
+ console.warn(error);
20
+ });
21
+ };
22
+
23
+ export default handle_version_deployment;
@@ -0,0 +1,190 @@
1
+ import chalk from 'chalk';
2
+ import inquirer from "inquirer";
3
+ import build from '../../lib/build/index.js';
4
+ import cli_log from '../../lib/cli_log.js';
5
+ import confirm_deployment_prompt from './prompts/confirm_deployment.js';
6
+ import create_version from './create_version.js';
7
+ import get_app_domain from './get_app_domain.js';
8
+ import get_deployment from './get_deployment.js';
9
+ import get_provision_domain from './get_provision_domain.js';
10
+ import get_settings_file from './get_settings_file.js';
11
+ import get_session_token from './get_session_token.js';
12
+ import handle_initial_deployment from './handle_initial_deployment.js';
13
+ import handle_version_deployment from './handle_version_deployment.js';
14
+ import Loader from '../../lib/loader.js';
15
+ import upload_build_to_cdn from './upload_build_to_cdn.js';
16
+ import validate_deployment from './validate_deployment.js';
17
+ import validate_push_config from './validate_push_config.js';
18
+
19
+ const log_validation_error_response = (validation_type = '', root_error = '', validation_response = {}) => {
20
+ let errors_list = ``;
21
+
22
+ for (let i = 0; i < validation_response?.errors?.length; i += 1) {
23
+ const validation_error = validation_response?.errors[i];
24
+
25
+ if (validation_type === 'push_config') {
26
+ errors_list += `${chalk.yellowBright(`> ${validation_error.field}`)}\n`;
27
+ }
28
+
29
+ errors_list += `${validation_error?.error}\n${i + 1 === validation_response?.errors?.length ? '' : '\n'}`;
30
+ }
31
+
32
+ cli_log(
33
+ `${root_error ? `${chalk.yellowBright(root_error)}\n\n\n` : ''}${errors_list}`,
34
+ {
35
+ level: "danger",
36
+ docs: {
37
+ push_config: "https://cheatcode.co/docs/push/config",
38
+ deployment: "https://cheatcode.co/docs/push/subscription",
39
+ }[validation_type],
40
+ }
41
+ );
42
+
43
+ process.exit(0);
44
+ };
45
+
46
+ const get_session_for_deployment = async () => {
47
+ const session_token = await get_session_token();
48
+
49
+ if (!session_token) {
50
+ cli_log(
51
+ data?.error?.message,
52
+ {
53
+ level: "danger",
54
+ docs: "https://cheatcode.co/docs/push/cli#authentication"
55
+ }
56
+ );
57
+
58
+ return process.exit(0);
59
+ }
60
+
61
+ return session_token;
62
+ };
63
+
64
+ const warn_no_push_config = (environment = '') => {
65
+ cli_log(
66
+ `settings.${environment}.json must contain a push config object. Add this following the docs link below and try again.`,
67
+ {
68
+ level: "danger",
69
+ docs: "https://cheatcode.co/docs/push/config"
70
+ }
71
+ );
72
+
73
+ return process.exit(0);
74
+ };
75
+
76
+ const push = async (args = {}, options = {}) => {
77
+ process.loader = new Loader();
78
+ process.loader.print('Starting deployment...');
79
+
80
+ const session_token = await get_session_for_deployment();
81
+ const environment = options?.environment || 'production';
82
+ const settings = await get_settings_file({ environment });
83
+
84
+ if (!settings?.push) {
85
+ return warn_no_push_config(environment);
86
+ }
87
+
88
+ const push_provision_domain = get_provision_domain(options?.provision_server);
89
+ const push_app_domain = get_app_domain(options?.provision_server);
90
+ const deployment = await get_deployment({
91
+ domain: settings?.push?.domain,
92
+ session_token,
93
+ push_provision_domain,
94
+ });
95
+
96
+ let push_config_validation_response;
97
+
98
+ if (deployment?.status === 'undeployed') {
99
+ push_config_validation_response = await validate_push_config({
100
+ push_provision_domain,
101
+ push_config: settings?.push,
102
+ });
103
+
104
+ if (push_config_validation_response?.errors?.length > 0) {
105
+ log_validation_error_response(
106
+ 'push_config',
107
+ `Push config in settings.${environment}.json failed validation with the following errors:`,
108
+ push_config_validation_response,
109
+ );
110
+ }
111
+ }
112
+
113
+ const deployment_validation_response = await validate_deployment({
114
+ session_token,
115
+ push_provision_domain,
116
+ push_config: settings?.push,
117
+ });
118
+
119
+ if (deployment_validation_response?.errors?.length > 0) {
120
+ log_validation_error_response(
121
+ 'deployment',
122
+ `Deployment failed validation with the following errors:`,
123
+ deployment_validation_response,
124
+ );
125
+ }
126
+
127
+ // NOTE: A bit hacky but removes need for weird if {} statement nesting.
128
+ const { confirm_deployment } = deployment?.status === 'undeployed' ? await inquirer.prompt(
129
+ confirm_deployment_prompt(push_config_validation_response?.instances)
130
+ ) : { confirm_deployment: true };
131
+
132
+ if (confirm_deployment) {
133
+ // NOTE: Do this to create a gap between the confirmation text above (only applies if
134
+ // the deployment is a first-run).
135
+ if (deployment?.status === 'undeployed') {
136
+ console.log('\n');
137
+ }
138
+
139
+ const build_timestamp = new Date().toISOString();
140
+ await build({
141
+ environment,
142
+ encrypt_build: true,
143
+ encryption_key: deployment?.deployment_secret,
144
+ silence_confirmation: true,
145
+ });
146
+
147
+ process.loader.print('Uploading version...');
148
+
149
+ await upload_build_to_cdn(
150
+ build_timestamp,
151
+ deployment,
152
+ session_token,
153
+ );
154
+
155
+ const create_version_response = await create_version({
156
+ push_provision_domain,
157
+ domain: settings?.push?.domain,
158
+ session_token,
159
+ body: {
160
+ // NOTE: Endpoint anticipates a stringified version of settings.
161
+ settings: JSON.stringify(settings),
162
+ build_timestamp,
163
+ },
164
+ });
165
+
166
+ process.loader.print('Deploying app...');
167
+
168
+ if (deployment?.status === 'undeployed') {
169
+ return handle_initial_deployment({
170
+ push_provision_domain,
171
+ push_app_domain,
172
+ session_token,
173
+ environment,
174
+ build_timestamp,
175
+ deployment,
176
+ });
177
+ }
178
+
179
+ return handle_version_deployment({
180
+ push_provision_domain,
181
+ push_app_domain,
182
+ session_token,
183
+ environment,
184
+ build_timestamp,
185
+ deployment,
186
+ });
187
+ }
188
+ };
189
+
190
+ export default push;
@@ -0,0 +1,73 @@
1
+ import AsciiTable from 'ascii-table';
2
+ import chalk from 'chalk';
3
+
4
+ const render_instance_row = (table, [continent_name = '', continent_instances = []]) => {
5
+ table.addRow(`${chalk.magenta(continent_name)}\n`);
6
+
7
+ for (let i = 0; i < continent_instances?.length; i += 1) {
8
+ const instance = continent_instances[i];
9
+ table.addRow(
10
+ `${chalk.yellow(instance?.provider)} (${chalk.green(instance?.region)})`,
11
+ `${chalk.white(instance?.size)} $${chalk.green(instance?.pricePerMonth)}/mo. x${chalk.blue(instance?.quantity)} ${chalk.white('=')} $${chalk.green((instance?.quantity * instance?.pricePerMonth))}/mo.${i + 1 === continent_instances?.length ? '\n' : ''}`,
12
+ );
13
+ }
14
+ };
15
+
16
+ const get_total_monthly_cost_for_instances = (instances = []) => {
17
+ const instances_by_continent = Object.values(instances)?.flatMap((instances_for_continent) => instances_for_continent);
18
+ return instances_by_continent?.reduce((total = 0, instance = {}) => {
19
+ total += instance?.pricePerMonth * instance?.quantity;
20
+ return total;
21
+ }, 0);
22
+ };
23
+
24
+ const confirm_deployment = (instances = {}) => {
25
+ const load_balancer_total_per_month = get_total_monthly_cost_for_instances(instances?.load_balancer);
26
+ const app_total_per_month = get_total_monthly_cost_for_instances(instances?.app);
27
+ const total_monthly_cost = load_balancer_total_per_month + app_total_per_month;
28
+
29
+ const table = new AsciiTable();
30
+
31
+ table.removeBorder();
32
+ table.addRow(`${chalk.blue('Load Balancer')}\n`);
33
+
34
+ const load_balancer_continents = Object.entries(instances?.load_balancer);
35
+ const app_continents = Object.entries(instances?.app);
36
+
37
+ for (let i = 0; i < load_balancer_continents?.length; i += 1) {
38
+ render_instance_row(table, load_balancer_continents[i]);
39
+ }
40
+
41
+ table.addRow(`\n ${chalk.blue('App')}\n`);
42
+
43
+ for (let i = 0; i < app_continents?.length; i += 1) {
44
+ render_instance_row(table, app_continents[i]);
45
+ }
46
+
47
+ table.addRow(chalk.white('\n ---\n'));
48
+
49
+ table.addRow(
50
+ chalk.green('Monthly Cost'),
51
+ chalk.white(`$${chalk.green(total_monthly_cost)}/mo.`)
52
+ );
53
+
54
+ table.addRow(
55
+ chalk.green('Annual Cost'),
56
+ chalk.white(`$${chalk.green(total_monthly_cost * 12)}/yr.`)
57
+ );
58
+
59
+ const is_abnormal = total_monthly_cost > 100;
60
+
61
+ return [{
62
+ name: 'confirm_deployment',
63
+ type: 'confirm',
64
+ prefix: '',
65
+ message: `\n ${chalk.greenBright('>')} Start deployment and provision these instances?`,
66
+ suffix: `
67
+ \n${table.toString()}
68
+ ${is_abnormal ? `\n\n ${chalk.yellowBright(`!!! >>> These costs are ${chalk.magenta('high')}. Be absolutely ${chalk.magenta('CERTAIN')} you want to run this deployment. <<< !!!`)}
69
+ \n ` : '\n'}`,
70
+ }];
71
+ };
72
+
73
+ export default confirm_deployment;
@@ -0,0 +1,11 @@
1
+ import chalk from 'chalk';
2
+
3
+ const session_token = () => [{
4
+ name: 'session_token',
5
+ type: 'text',
6
+ prefix: '',
7
+ message: `\n${chalk.yellowBright('>')} To login to Push, paste your session token below:\n`,
8
+ suffix: ` ${chalk.yellowBright('Find your session token here:')} https://push.cheatcode.co/account/profile\n\n`,
9
+ }];
10
+
11
+ export default session_token;
@@ -0,0 +1,59 @@
1
+ import fetch from "node-fetch";
2
+ import FormData from "form-data";
3
+ import fs from "fs";
4
+ import _ from 'lodash';
5
+ import cdn_mirrors from './cdn_mirrors.js';
6
+
7
+ const { readFile } = fs.promises;
8
+
9
+ const get_first_available_mirror = async () => {
10
+ const results = (await Promise.allSettled(cdn_mirrors?.map(async (mirror) => {
11
+ const controller = new AbortController();
12
+ setTimeout(() => controller.abort(), 2000);
13
+
14
+ const result = await fetch(`${mirror}/api/ping`, { signal: controller.signal }).catch((error) => {
15
+ return { status: 503 };
16
+ });
17
+
18
+ return {
19
+ mirror,
20
+ status: result.status,
21
+ };
22
+ })))?.map((result) => {
23
+ return result.value;
24
+ });
25
+
26
+ return _.orderBy(results, ['status', 'mirror'])[0];
27
+ };
28
+
29
+ const upload_build_to_cdn = async (build_timestamp = '', deployment = {}, session_token = '') => {
30
+ const first_available_mirror = await get_first_available_mirror();
31
+ const form_data = new FormData();
32
+
33
+ form_data.append(
34
+ "version_tar",
35
+ await readFile(`.build/build.encrypted.tar.gz`),
36
+ `${build_timestamp}.tar.gz`
37
+ );
38
+
39
+ form_data.append("build_timestamp", build_timestamp);
40
+ form_data.append("domain", deployment?.domain);
41
+ form_data.append("deployment_id", deployment?._id);
42
+
43
+ return fetch(`${first_available_mirror?.mirror}/api/versions`, {
44
+ method: "POST",
45
+ headers: {
46
+ ...form_data.getHeaders(),
47
+ "x-push-session-token": session_token,
48
+ },
49
+ body: form_data,
50
+ }).then(async (response) => {
51
+ const data = await response.json();
52
+ return data?.data;
53
+ }).catch((error) => {
54
+ console.warn(error);
55
+ });
56
+ };
57
+
58
+ export default upload_build_to_cdn;
59
+
@@ -0,0 +1,19 @@
1
+ import fetch from 'node-fetch';
2
+
3
+ const validate_deployment = (options = {}) => {
4
+ return fetch(`${options?.push_provision_domain}/api/deployments/${options?.push_config?.domain}/validate`, {
5
+ method: 'POST',
6
+ headers: {
7
+ 'Content-Type': 'application/json',
8
+ 'x-push-session-token': options?.session_token,
9
+ },
10
+ body: JSON.stringify(options?.push_config),
11
+ })?.then(async (response) => {
12
+ const data = await response.json();
13
+ return data?.data;
14
+ }).catch((error) => {
15
+ console.warn(error);
16
+ });
17
+ };
18
+
19
+ export default validate_deployment;
@@ -0,0 +1,18 @@
1
+ import fetch from 'node-fetch';
2
+
3
+ const validate_push_config = (options = {}) => {
4
+ return fetch(`${options?.push_provision_domain}/api/validate/config`, {
5
+ method: 'POST',
6
+ headers: {
7
+ 'Content-Type': 'application/json',
8
+ },
9
+ body: JSON.stringify(options?.push_config),
10
+ })?.then(async (response) => {
11
+ const data = await response.json();
12
+ return data?.data;
13
+ }).catch((error) => {
14
+ console.warn(error);
15
+ });
16
+ };
17
+
18
+ export default validate_push_config;
@@ -0,0 +1,58 @@
1
+ import start from './index.js';
2
+
3
+ const [_node, _bin, ...raw_args] = process.argv;
4
+
5
+ const definition = {
6
+ description: 'Start an existing Joystick app.',
7
+ args: {},
8
+ options: {
9
+ environment: {
10
+ flags: {
11
+ '-e': {
12
+ set: !!raw_args.includes('-e'),
13
+ value: !!raw_args.includes('-e') && raw_args[raw_args.indexOf('-e') + 1],
14
+ parent: 'start'
15
+ },
16
+ '--environment': {
17
+ set: !!raw_args.includes('--environment'),
18
+ value: !!raw_args.includes('--environment') && raw_args[raw_args.indexOf('--environment') + 1],
19
+ parent: 'start'
20
+ },
21
+ },
22
+ description: 'Environment to set for process.env.NODE_ENV.',
23
+ },
24
+ port: {
25
+ flags: {
26
+ '-p': {
27
+ set: !!raw_args.includes('-p'),
28
+ value: !!raw_args.includes('-p') && parseInt(raw_args[raw_args.indexOf('-p') + 1], 10),
29
+ parent: 'start'
30
+ },
31
+ '--port': {
32
+ set: !!raw_args.includes('--port'),
33
+ value: !!raw_args.includes('--port') && parseInt(raw_args[raw_args.indexOf('--port') + 1], 10),
34
+ parent: 'start'
35
+ },
36
+ },
37
+ description: 'Port number to run the app on.',
38
+ },
39
+ debug: {
40
+ flags: {
41
+ '-d': {
42
+ set: !!raw_args.includes('-d'),
43
+ value: !!raw_args.includes('-d'),
44
+ parent: 'start'
45
+ },
46
+ '--debug': {
47
+ set: !!raw_args.includes('--debug'),
48
+ value: !!raw_args.includes('--debug'),
49
+ parent: 'start'
50
+ },
51
+ },
52
+ description: 'Run the Joystick app\'s Node.js process in debug mode with --inspect.',
53
+ }
54
+ },
55
+ command: start,
56
+ }
57
+
58
+ export default definition;
@@ -0,0 +1,11 @@
1
+ import development_server from "../../lib/development_server/index.js";
2
+
3
+ const start = async (args = {}, options = {}) => {
4
+ await development_server({
5
+ environment: options?.environment || 'development',
6
+ port: options?.port || 2600,
7
+ debug: !!options?.debug,
8
+ });
9
+ };
10
+
11
+ export default start;