@joystick.js/node-canary 0.0.0-canary.47 → 0.0.0-canary.470

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 (439) hide show
  1. package/.build/getFilesToBuild.js +26 -0
  2. package/.build/getPlatformSafeFilePath.js +6 -0
  3. package/.build/getPlatformSafePath.js +6 -0
  4. package/.build/index.js +88 -0
  5. package/.build/isWindows.js +3 -0
  6. package/dist/action/class.js +1 -82
  7. package/dist/action/index.js +1 -8
  8. package/dist/app/accounts/default_user_output_fields.js +1 -0
  9. package/dist/app/accounts/delete_user.js +1 -0
  10. package/dist/app/accounts/generate_account_session.js +1 -0
  11. package/dist/app/accounts/generate_password_reset_token.js +1 -0
  12. package/dist/app/accounts/get_browser_safe_user.js +1 -0
  13. package/dist/app/accounts/has_login_token_expired.js +1 -0
  14. package/dist/app/accounts/index.js +1 -29
  15. package/dist/app/accounts/login.js +1 -59
  16. package/dist/app/accounts/recover_password.js +1 -0
  17. package/dist/app/accounts/reset_password.js +1 -0
  18. package/dist/app/accounts/roles/add.js +1 -7
  19. package/dist/app/accounts/roles/grant.js +1 -7
  20. package/dist/app/accounts/roles/index.js +1 -17
  21. package/dist/app/accounts/roles/list.js +1 -7
  22. package/dist/app/accounts/roles/remove.js +1 -7
  23. package/dist/app/accounts/roles/revoke.js +1 -7
  24. package/dist/app/accounts/roles/user_has_role.js +1 -0
  25. package/dist/app/accounts/send_email_verification.js +1 -0
  26. package/dist/app/accounts/set_account_cookie.js +1 -0
  27. package/dist/app/accounts/set_password.js +1 -0
  28. package/dist/app/accounts/signup.js +1 -97
  29. package/dist/app/accounts/unset_account_cookie.js +1 -0
  30. package/dist/app/accounts/verify_email.js +1 -0
  31. package/dist/app/api/accounts/authenticated.js +1 -0
  32. package/dist/app/api/accounts/login.js +1 -0
  33. package/dist/app/api/accounts/logout.js +1 -0
  34. package/dist/app/api/accounts/recover_password.js +1 -0
  35. package/dist/app/api/accounts/reset_password.js +1 -0
  36. package/dist/app/api/accounts/signup.js +1 -0
  37. package/dist/app/api/accounts/user.js +1 -0
  38. package/dist/app/api/accounts/verify_email.js +1 -0
  39. package/dist/app/api/format_api_error.js +1 -0
  40. package/dist/app/api/get.js +2 -0
  41. package/dist/app/api/get_api_context.js +1 -0
  42. package/dist/app/api/get_api_for_data_functions.js +1 -0
  43. package/dist/app/api/get_api_url_component.js +1 -0
  44. package/dist/app/api/get_output.js +1 -0
  45. package/dist/app/api/get_value_from_object.js +1 -0
  46. package/dist/app/api/handle_api_error.js +1 -0
  47. package/dist/app/api/input_validators.js +1 -0
  48. package/dist/app/api/is_array_path.js +1 -0
  49. package/dist/app/api/push/health.js +2 -0
  50. package/dist/app/api/register_getters.js +1 -0
  51. package/dist/app/api/register_setters.js +1 -0
  52. package/dist/app/api/sanitize_api_response.js +1 -0
  53. package/dist/app/api/set.js +2 -0
  54. package/dist/app/api/test/accounts/delete.js +1 -0
  55. package/dist/app/api/test/accounts/signup.js +1 -0
  56. package/dist/app/api/test/bootstrap.js +1 -0
  57. package/dist/app/api/test/process.js +1 -0
  58. package/dist/app/api/test/queues.js +1 -0
  59. package/dist/app/api/validate_input.js +1 -0
  60. package/dist/app/api/validate_session.js +1 -0
  61. package/dist/app/api/validate_type.js +1 -0
  62. package/dist/app/browser/hmr_client.js +1 -0
  63. package/dist/app/browser/process_polyfill.js +1 -0
  64. package/dist/app/cron_jobs/register.js +1 -0
  65. package/dist/app/databases/database_type_map.js +1 -0
  66. package/dist/app/databases/get_target_database_connection.js +1 -0
  67. package/dist/app/databases/mongodb/available_query_parameters.js +1 -0
  68. package/dist/app/databases/mongodb/build_connection_string.js +1 -0
  69. package/dist/app/databases/mongodb/build_query_parameters.js +1 -0
  70. package/dist/app/databases/mongodb/connect.js +6 -0
  71. package/dist/app/databases/mongodb/create_indexes.js +1 -0
  72. package/dist/app/databases/postgresql/accounts/create_accounts_metadata_table_columns.js +1 -0
  73. package/dist/app/databases/postgresql/connect.js +30 -0
  74. package/dist/app/databases/postgresql/create_indexes.js +1 -0
  75. package/dist/app/databases/postgresql/create_tables.js +1 -0
  76. package/dist/app/databases/postgresql/handle_cleanup_queues.js +5 -0
  77. package/dist/app/databases/postgresql/handle_cleanup_sessions.js +1 -0
  78. package/dist/app/databases/queries/accounts.js +1 -0
  79. package/dist/app/databases/queries/map.js +1 -0
  80. package/dist/app/databases/queries/mongodb/accounts.js +1 -0
  81. package/dist/app/databases/queries/mongodb/queues.js +1 -0
  82. package/dist/app/databases/queries/mongodb/sessions.js +1 -0
  83. package/dist/app/databases/queries/postgresql/accounts.js +1 -0
  84. package/dist/app/databases/queries/postgresql/queues.js +123 -0
  85. package/dist/app/databases/queries/postgresql/sessions.js +14 -0
  86. package/dist/app/databases/queries/sessions.js +1 -0
  87. package/dist/app/databases/register_database.js +1 -0
  88. package/dist/app/databases/sql.js +1 -0
  89. package/dist/app/email/send.js +1 -0
  90. package/dist/app/email/validate_smtp_settings.js +1 -0
  91. package/dist/app/fixture/index.js +1 -0
  92. package/dist/app/generate_machine_id.js +1 -0
  93. package/dist/app/generate_process_id.js +1 -0
  94. package/dist/app/get_ssl_certificates.js +1 -0
  95. package/dist/app/handle_process_errors.js +1 -0
  96. package/dist/app/index.js +1 -656
  97. package/dist/app/middleware/account.js +1 -0
  98. package/dist/app/middleware/body_parser.js +1 -0
  99. package/dist/app/middleware/build_error.js +1 -0
  100. package/dist/app/middleware/built_in.js +1 -0
  101. package/dist/app/middleware/context.js +1 -0
  102. package/dist/app/middleware/cors.js +1 -22
  103. package/dist/app/middleware/csp.js +1 -48
  104. package/dist/app/middleware/generate_insecure_page.js +65 -0
  105. package/dist/app/middleware/generate_joystick_error_page.js +147 -0
  106. package/dist/app/middleware/hmr_client.js +1 -0
  107. package/dist/app/middleware/insecure.js +1 -11
  108. package/dist/app/middleware/process_browser_polyfill.js +1 -0
  109. package/dist/app/middleware/render/get_url.js +1 -0
  110. package/dist/app/middleware/render/index.js +1 -0
  111. package/dist/app/middleware/request_methods.js +1 -0
  112. package/dist/app/middleware/session.js +1 -24
  113. package/dist/app/push_logs.js +1 -0
  114. package/dist/app/queues/index.js +1 -119
  115. package/dist/app/register_app_options.js +1 -0
  116. package/dist/app/routes/register_route_from_function.js +1 -0
  117. package/dist/app/routes/register_route_from_object.js +1 -0
  118. package/dist/app/routes/supported_http_methods.js +1 -0
  119. package/dist/app/settings/load.js +1 -0
  120. package/dist/app/ssr/index.js +33 -0
  121. package/dist/app/ssr/set_base_attributes_in_html.js +1 -0
  122. package/dist/app/ssr/set_head_tags_in_html.js +1 -0
  123. package/dist/app/start_express.js +1 -0
  124. package/dist/app/start_node_as_cluster.js +1 -0
  125. package/dist/app/uploaders/local_upload_progress_middleware.js +1 -0
  126. package/dist/app/uploaders/register.js +1 -0
  127. package/dist/app/uploaders/run_upload.js +1 -0
  128. package/dist/app/uploaders/validate_options.js +1 -0
  129. package/dist/app/uploaders/validate_uploads.js +1 -0
  130. package/dist/app/websockets/emit_event.js +1 -0
  131. package/dist/app/websockets/index.js +1 -0
  132. package/dist/app/websockets/register.js +1 -0
  133. package/dist/index.js +4 -76
  134. package/dist/lib/camel_pascal_to_snake.js +1 -0
  135. package/dist/lib/constants.js +1 -13
  136. package/dist/lib/dynamic_import.js +1 -0
  137. package/dist/lib/escape_html.js +1 -0
  138. package/dist/lib/escape_key_value_pair.js +1 -0
  139. package/dist/lib/float_to_decimal_place.js +1 -0
  140. package/dist/lib/generate_id.js +1 -0
  141. package/dist/lib/get_browser_safe_request.js +1 -0
  142. package/dist/lib/get_joystick_build_path.js +1 -0
  143. package/dist/lib/get_origin.js +1 -0
  144. package/dist/lib/get_platform_safe_path.js +1 -0
  145. package/dist/lib/get_sanitized_context.js +1 -0
  146. package/dist/lib/get_translations.js +1 -0
  147. package/dist/lib/hash_string.js +1 -0
  148. package/dist/lib/is_valid_json.js +1 -0
  149. package/dist/lib/log.js +13 -49
  150. package/dist/lib/node_path_polyfills.js +1 -0
  151. package/dist/lib/parse_json.js +1 -0
  152. package/dist/lib/path_exists.js +1 -0
  153. package/dist/lib/rainbow_road.js +1 -0
  154. package/dist/lib/serialize_query_parameters.js +1 -0
  155. package/dist/lib/set_cookie.js +1 -0
  156. package/dist/lib/string_to_slug.js +1 -0
  157. package/dist/lib/timestamps.js +1 -0
  158. package/dist/lib/types.js +1 -0
  159. package/dist/lib/unset_cookie.js +1 -0
  160. package/dist/lib/wait.js +1 -0
  161. package/dist/test/track_function_call.js +1 -0
  162. package/increment_version.js +3 -0
  163. package/package.json +27 -44
  164. package/src/action/class.js +137 -0
  165. package/src/action/index.js +8 -0
  166. package/src/app/accounts/default_user_output_fields.js +10 -0
  167. package/src/app/accounts/delete_user.js +18 -0
  168. package/src/app/accounts/generate_account_session.js +11 -0
  169. package/src/app/accounts/generate_password_reset_token.js +16 -0
  170. package/src/app/accounts/get_browser_safe_user.js +29 -0
  171. package/src/app/accounts/has_login_token_expired.js +9 -0
  172. package/src/app/accounts/index.js +38 -0
  173. package/src/app/accounts/login.js +82 -0
  174. package/src/app/accounts/recover_password.js +58 -0
  175. package/src/app/accounts/reset_password.js +69 -0
  176. package/src/app/accounts/roles/add.js +7 -0
  177. package/src/app/accounts/roles/grant.js +7 -0
  178. package/src/app/accounts/roles/index.js +18 -0
  179. package/src/app/accounts/roles/list.js +7 -0
  180. package/src/app/accounts/roles/remove.js +7 -0
  181. package/src/app/accounts/roles/revoke.js +7 -0
  182. package/src/app/accounts/roles/user_has_role.js +7 -0
  183. package/src/app/accounts/send_email_verification.js +48 -0
  184. package/src/app/accounts/set_account_cookie.js +12 -0
  185. package/src/app/accounts/set_password.js +46 -0
  186. package/src/app/accounts/signup.js +158 -0
  187. package/src/app/accounts/unset_account_cookie.js +12 -0
  188. package/src/app/accounts/verify_email.js +32 -0
  189. package/src/app/api/accounts/authenticated.js +17 -0
  190. package/src/app/api/accounts/login.js +36 -0
  191. package/src/app/api/accounts/logout.js +20 -0
  192. package/src/app/api/accounts/recover_password.js +16 -0
  193. package/src/app/api/accounts/reset_password.js +24 -0
  194. package/src/app/api/accounts/signup.js +49 -0
  195. package/src/app/api/accounts/user.js +21 -0
  196. package/src/app/api/accounts/verify_email.js +11 -0
  197. package/src/app/api/format_api_error.js +10 -0
  198. package/src/app/api/get.js +119 -0
  199. package/src/app/api/get_api_context.js +27 -0
  200. package/src/app/api/get_api_for_data_functions.js +37 -0
  201. package/src/app/api/get_api_url_component.js +5 -0
  202. package/src/app/api/get_output.js +116 -0
  203. package/src/app/api/get_value_from_object.js +8 -0
  204. package/src/app/api/handle_api_error.js +28 -0
  205. package/src/app/api/input_validators.js +227 -0
  206. package/src/app/api/is_array_path.js +6 -0
  207. package/src/app/api/push/health.js +17 -0
  208. package/src/app/api/register_getters.js +57 -0
  209. package/src/app/api/register_setters.js +55 -0
  210. package/src/app/api/sanitize_api_response.js +35 -0
  211. package/src/app/api/set.js +119 -0
  212. package/src/app/api/test/accounts/delete.js +8 -0
  213. package/src/app/api/test/accounts/signup.js +50 -0
  214. package/src/app/api/test/bootstrap.js +39 -0
  215. package/src/app/api/test/process.js +7 -0
  216. package/src/app/api/test/queues.js +25 -0
  217. package/src/app/api/validate_input.js +130 -0
  218. package/src/app/api/validate_session.js +20 -0
  219. package/src/app/api/validate_type.js +24 -0
  220. package/src/app/browser/hmr_client.js +196 -0
  221. package/src/app/browser/process_polyfill.js +11 -0
  222. package/src/app/cron_jobs/register.js +29 -0
  223. package/src/app/databases/database_type_map.js +6 -0
  224. package/src/app/databases/get_target_database_connection.js +25 -0
  225. package/{dist/app/databases/mongodb/availableQueryParameters.js → src/app/databases/mongodb/available_query_parameters.js} +3 -4
  226. package/src/app/databases/mongodb/build_connection_string.js +30 -0
  227. package/src/app/databases/mongodb/build_query_parameters.js +17 -0
  228. package/src/app/databases/mongodb/connect.js +42 -0
  229. package/src/app/databases/mongodb/create_indexes.js +35 -0
  230. package/src/app/databases/postgresql/accounts/create_accounts_metadata_table_columns.js +18 -0
  231. package/src/app/databases/postgresql/connect.js +128 -0
  232. package/src/app/databases/postgresql/create_indexes.js +58 -0
  233. package/src/app/databases/postgresql/create_tables.js +70 -0
  234. package/src/app/databases/postgresql/handle_cleanup_queues.js +36 -0
  235. package/src/app/databases/postgresql/handle_cleanup_sessions.js +5 -0
  236. package/src/app/databases/queries/accounts.js +17 -0
  237. package/src/app/databases/queries/map.js +21 -0
  238. package/src/app/databases/queries/mongodb/accounts.js +360 -0
  239. package/src/app/databases/queries/mongodb/queues.js +164 -0
  240. package/src/app/databases/queries/mongodb/sessions.js +22 -0
  241. package/src/app/databases/queries/postgresql/accounts.js +379 -0
  242. package/src/app/databases/queries/postgresql/queues.js +294 -0
  243. package/src/app/databases/queries/postgresql/sessions.js +37 -0
  244. package/src/app/databases/queries/sessions.js +17 -0
  245. package/src/app/databases/register_database.js +30 -0
  246. package/src/app/databases/sql.js +63 -0
  247. package/src/app/email/send.js +108 -0
  248. package/src/app/email/validate_smtp_settings.js +53 -0
  249. package/src/app/fixture/index.js +50 -0
  250. package/src/app/generate_machine_id.js +26 -0
  251. package/src/app/generate_process_id.js +30 -0
  252. package/src/app/get_ssl_certificates.js +23 -0
  253. package/src/app/handle_process_errors.js +101 -0
  254. package/src/app/index.js +253 -0
  255. package/src/app/middleware/account.js +28 -0
  256. package/src/app/middleware/body_parser.js +18 -0
  257. package/src/app/middleware/build_error.js +18 -0
  258. package/src/app/middleware/built_in.js +76 -0
  259. package/src/app/middleware/context.js +34 -0
  260. package/src/app/middleware/cors.js +23 -0
  261. package/src/app/middleware/csp.js +54 -0
  262. package/src/app/middleware/generate_insecure_page.js +71 -0
  263. package/{dist/lib/generateErrorPage.js → src/app/middleware/generate_joystick_error_page.js} +25 -21
  264. package/src/app/middleware/hmr_client.js +12 -0
  265. package/src/app/middleware/insecure.js +22 -0
  266. package/src/app/middleware/process_browser_polyfill.js +12 -0
  267. package/src/app/middleware/render/get_url.js +15 -0
  268. package/src/app/middleware/render/index.js +93 -0
  269. package/src/app/middleware/request_methods.js +21 -0
  270. package/src/app/middleware/session.js +31 -0
  271. package/src/app/push_logs.js +44 -0
  272. package/src/app/queues/index.js +268 -0
  273. package/src/app/register_app_options.js +7 -0
  274. package/src/app/routes/register_route_from_function.js +10 -0
  275. package/src/app/routes/register_route_from_object.js +34 -0
  276. package/src/app/routes/supported_http_methods.js +9 -0
  277. package/src/app/settings/load.js +33 -0
  278. package/src/app/ssr/index.js +133 -0
  279. package/src/app/ssr/set_base_attributes_in_html.js +43 -0
  280. package/src/app/ssr/set_head_tags_in_html.js +104 -0
  281. package/src/app/start_express.js +50 -0
  282. package/src/app/start_node_as_cluster.js +30 -0
  283. package/src/app/uploaders/local_upload_progress_middleware.js +24 -0
  284. package/src/app/uploaders/register.js +169 -0
  285. package/src/app/uploaders/run_upload.js +136 -0
  286. package/src/app/uploaders/validate_options.js +74 -0
  287. package/src/app/uploaders/validate_uploads.js +127 -0
  288. package/src/app/websockets/emit_event.js +14 -0
  289. package/src/app/websockets/index.js +16 -0
  290. package/src/app/websockets/register.js +175 -0
  291. package/src/index.js +81 -0
  292. package/{dist/lib/camelPascalToSnake.js → src/lib/camel_pascal_to_snake.js} +3 -4
  293. package/src/lib/constants.js +21 -0
  294. package/src/lib/dynamic_import.js +8 -0
  295. package/src/lib/escape_html.js +9 -0
  296. package/src/lib/escape_key_value_pair.js +15 -0
  297. package/src/lib/float_to_decimal_place.js +5 -0
  298. package/src/lib/generate_id.js +15 -0
  299. package/src/lib/get_browser_safe_request.js +17 -0
  300. package/src/lib/get_joystick_build_path.js +22 -0
  301. package/src/lib/get_origin.js +7 -0
  302. package/src/lib/get_platform_safe_path.js +8 -0
  303. package/src/lib/get_sanitized_context.js +51 -0
  304. package/src/lib/get_translations.js +109 -0
  305. package/src/lib/hash_string.js +7 -0
  306. package/src/lib/is_valid_json.js +10 -0
  307. package/src/lib/log.js +42 -0
  308. package/src/lib/node_path_polyfills.js +23 -0
  309. package/src/lib/parse_json.js +9 -0
  310. package/src/lib/path_exists.js +12 -0
  311. package/src/lib/rainbow_road.js +7 -0
  312. package/src/lib/serialize_query_parameters.js +7 -0
  313. package/src/lib/set_cookie.js +16 -0
  314. package/src/lib/string_to_slug.js +14 -0
  315. package/src/lib/timestamps.js +48 -0
  316. package/src/lib/types.js +59 -0
  317. package/src/lib/unset_cookie.js +11 -0
  318. package/src/lib/wait.js +9 -0
  319. package/src/test/track_function_call.js +16 -0
  320. package/README.md +0 -8
  321. package/_package.json +0 -63
  322. package/canary.js +0 -12
  323. package/dist/api/get.js +0 -29
  324. package/dist/api/getOrigin.js +0 -6
  325. package/dist/api/index.js +0 -9
  326. package/dist/api/set.js +0 -29
  327. package/dist/app/accounts/defaultUserOutputFields.js +0 -9
  328. package/dist/app/accounts/generateResetToken.js +0 -28
  329. package/dist/app/accounts/generateSession.js +0 -15
  330. package/dist/app/accounts/getBrowserSafeUser.js +0 -24
  331. package/dist/app/accounts/hasLoginTokenExpired.js +0 -17
  332. package/dist/app/accounts/hashString.js +0 -7
  333. package/dist/app/accounts/recoverPassword.js +0 -30
  334. package/dist/app/accounts/resetPassword.js +0 -73
  335. package/dist/app/accounts/roles/userHasRole.js +0 -7
  336. package/dist/app/accounts/runUserQuery.js +0 -15
  337. package/dist/app/accounts/sendEmailVerification.js +0 -65
  338. package/dist/app/accounts/setAuthenticationCookie.js +0 -11
  339. package/dist/app/accounts/setPassword.js +0 -45
  340. package/dist/app/accounts/unsetAuthenticationCookie.js +0 -11
  341. package/dist/app/accounts/verifyEmail.js +0 -46
  342. package/dist/app/databases/getTargetDatabase.js +0 -10
  343. package/dist/app/databases/getTargetDatabaseConnection.js +0 -19
  344. package/dist/app/databases/getTargetDatabaseProvider.js +0 -10
  345. package/dist/app/databases/mongodb/buildConnectionString.js +0 -22
  346. package/dist/app/databases/mongodb/buildQueryParameters.js +0 -14
  347. package/dist/app/databases/mongodb/index.js +0 -40
  348. package/dist/app/databases/mongodb/queries/accounts.js +0 -266
  349. package/dist/app/databases/mongodb/queries/queues.js +0 -111
  350. package/dist/app/databases/postgresql/addColumnToTable.js +0 -6
  351. package/dist/app/databases/postgresql/createAccountsIndexes.js +0 -21
  352. package/dist/app/databases/postgresql/createAccountsTables.js +0 -39
  353. package/dist/app/databases/postgresql/createDatabase.js +0 -0
  354. package/dist/app/databases/postgresql/index.js +0 -55
  355. package/dist/app/databases/postgresql/queries/accounts.js +0 -186
  356. package/dist/app/databases/postgresql/queries/queues.js +0 -211
  357. package/dist/app/databases/queryMap.js +0 -17
  358. package/dist/app/databases/typesMap.js +0 -7
  359. package/dist/app/getAPIContext.js +0 -25
  360. package/dist/app/getAPIURLComponent.js +0 -6
  361. package/dist/app/getBrowserSafeRequest.js +0 -14
  362. package/dist/app/getOutput.js +0 -74
  363. package/dist/app/handleProcessErrors.js +0 -73
  364. package/dist/app/initExpress.js +0 -41
  365. package/dist/app/middleware/bodyParser.js +0 -16
  366. package/dist/app/middleware/hmr/client.js +0 -113
  367. package/dist/app/middleware/index.js +0 -89
  368. package/dist/app/middleware/render.js +0 -213
  369. package/dist/app/middleware/requestMethods.js +0 -19
  370. package/dist/app/registerGetters.js +0 -45
  371. package/dist/app/registerSetters.js +0 -45
  372. package/dist/app/runGetter.js +0 -103
  373. package/dist/app/runSetter.js +0 -103
  374. package/dist/app/runUploader.js +0 -143
  375. package/dist/app/sanitizeAPIResponse.js +0 -27
  376. package/dist/app/utils/process.js +0 -193
  377. package/dist/app/validateSession.js +0 -19
  378. package/dist/app/validateUploaderOptions.js +0 -53
  379. package/dist/app/validateUploads.js +0 -102
  380. package/dist/email/render.js +0 -50
  381. package/dist/email/send.js +0 -55
  382. package/dist/email/templates/base.css +0 -194
  383. package/dist/email/templates/base.html +0 -28
  384. package/dist/email/templates/reset-password.js +0 -13
  385. package/dist/email/validateSMTPSettings.js +0 -27
  386. package/dist/lib/escapeHTML.js +0 -9
  387. package/dist/lib/escapeKeyValuePair.js +0 -13
  388. package/dist/lib/formatAPIError.js +0 -12
  389. package/dist/lib/formatErrorString.js +0 -8
  390. package/dist/lib/generateCookie.js +0 -14
  391. package/dist/lib/generateId.js +0 -13
  392. package/dist/lib/generateMachineId.js +0 -15
  393. package/dist/lib/getBuildPath.js +0 -10
  394. package/dist/lib/getErrorObject.js +0 -9
  395. package/dist/lib/getPlatformSafeFilePath.js +0 -8
  396. package/dist/lib/getPlatformSafePath.js +0 -8
  397. package/dist/lib/getSSLCertificates.js +0 -19
  398. package/dist/lib/isValidHTTPMethod.js +0 -7
  399. package/dist/lib/isValidJSONString.js +0 -11
  400. package/dist/lib/nodeUrlPolyfills.js +0 -14
  401. package/dist/lib/objectToSQLKeysString.js +0 -18
  402. package/dist/lib/objectToSQLValuesString.js +0 -16
  403. package/dist/lib/obscenedb/debounce.js +0 -12
  404. package/dist/lib/obscenedb/index.js +0 -61
  405. package/dist/lib/parseDatabasesFromEnvironment.js +0 -9
  406. package/dist/lib/rainbowRoad.js +0 -7
  407. package/dist/lib/readDirectory.js +0 -24
  408. package/dist/lib/replaceBackslashesWithForwardSlashes.js +0 -8
  409. package/dist/lib/replaceFileProtocol.js +0 -8
  410. package/dist/lib/replaceForwardSlashesWithBackslashes.js +0 -8
  411. package/dist/lib/serializeQueryParameters.js +0 -8
  412. package/dist/lib/serverAvailable.js +0 -0
  413. package/dist/lib/setCookie.js +0 -16
  414. package/dist/lib/supportedHTTPMethods.js +0 -4
  415. package/dist/lib/unsetCookie.js +0 -13
  416. package/dist/push/logs/index.js +0 -55
  417. package/dist/settings/index.js +0 -5
  418. package/dist/settings/load.js +0 -30
  419. package/dist/ssr/compileCSS.js +0 -85
  420. package/dist/ssr/findComponentInTree.js +0 -29
  421. package/dist/ssr/formatCSS.js +0 -6
  422. package/dist/ssr/getCSSFromTree.js +0 -33
  423. package/dist/ssr/index.js +0 -441
  424. package/dist/ssr/replaceWhenTags.js +0 -37
  425. package/dist/ssr/setHeadTagsInHTML.js +0 -84
  426. package/dist/validation/index.js +0 -10
  427. package/dist/validation/index.test.js +0 -463
  428. package/dist/validation/inputWithSchema/index.js +0 -105
  429. package/dist/validation/lib/constants.js +0 -162
  430. package/dist/validation/lib/getValueFromObject.js +0 -12
  431. package/dist/validation/lib/getValueFromObject.test.js +0 -7
  432. package/dist/validation/lib/isArrayPath.js +0 -6
  433. package/dist/validation/lib/throwError.js +0 -6
  434. package/dist/validation/lib/typeValidators.js +0 -38
  435. package/dist/validation/lib/validateType.js +0 -33
  436. package/dist/validation/schema/index.js +0 -44
  437. package/dist/websockets/emitWebsocketEvent.js +0 -12
  438. package/dist/websockets/index.js +0 -12
  439. package/notes +0 -1
@@ -0,0 +1,16 @@
1
+ import accounts from "../../accounts/index.js";
2
+ import handle_api_error from "../handle_api_error.js";
3
+
4
+ const recover_password = async (req = {}, res = {}) => {
5
+ try {
6
+ await accounts.recover_password({
7
+ email_address: req?.body?.emailAddress || req?.body?.email_address,
8
+ });
9
+
10
+ res.status(200).send(JSON.stringify({}));
11
+ } catch(error) {
12
+ handle_api_error('accounts.recover_password', error, res);
13
+ }
14
+ };
15
+
16
+ export default recover_password;
@@ -0,0 +1,24 @@
1
+ import accounts from "../../accounts/index.js";
2
+ import default_user_output_fields from "../../accounts/default_user_output_fields.js";
3
+ import handle_api_error from "../handle_api_error.js";
4
+
5
+ const reset_password = async (req = {}, res = {}) => {
6
+ try {
7
+ const reset = await accounts.reset_password({
8
+ token: req?.body?.token,
9
+ password: req?.body?.password,
10
+ output: req?.body?.output || default_user_output_fields,
11
+ });
12
+
13
+ accounts._set_account_cookie(res, {
14
+ token: reset?.token,
15
+ token_expires_at: reset?.token_expires_at,
16
+ });
17
+
18
+ res.status(200).send(JSON.stringify(reset?.user || {}));
19
+ } catch(error) {
20
+ handle_api_error('accounts.reset_password', error, res);
21
+ }
22
+ };
23
+
24
+ export default reset_password;
@@ -0,0 +1,49 @@
1
+ import accounts from "../../accounts/index.js";
2
+ import default_user_output_fields from "../../accounts/default_user_output_fields.js";
3
+ import format_api_error from "../format_api_error.js";
4
+ import handle_api_error from "../handle_api_error.js";
5
+ import validate_input from "../validate_input.js";
6
+
7
+ const signup = async (req = {}, res = {}) => {
8
+ try {
9
+ const metadata_schema = process.joystick?.app_options?.accounts?.signup?.metadata;
10
+ const metadata_errors = metadata_schema ? await validate_input(req?.body?.metadata, metadata_schema) : [];
11
+
12
+ if (metadata_errors?.length > 0) {
13
+ return handle_api_error('accounts.signup', {
14
+ errors: metadata_errors.map((error) => {
15
+ return format_api_error(new Error(error), `accounts.signup.metadata`, 401);
16
+ }),
17
+ }, res);
18
+ }
19
+
20
+ const signup = await accounts.signup({
21
+ email_address: req?.body?.emailAddress || req?.body?.email_address,
22
+ password: req?.body?.password,
23
+ metadata: req?.body?.metadata,
24
+ output: req?.body?.output || default_user_output_fields,
25
+ });
26
+
27
+ if (process.env.NODE_ENV !== 'test') {
28
+ accounts._set_account_cookie(res, {
29
+ token: signup?.token,
30
+ token_expires_at: signup?.token_expires_at,
31
+ });
32
+ }
33
+
34
+ const response = {
35
+ ...(signup?.user || {}),
36
+ };
37
+
38
+ if (process.env.NODE_ENV === 'test') {
39
+ response.joystick_token = signup?.token;
40
+ response.joystick_login_token_expires_at = signup?.token_expires_at;
41
+ }
42
+
43
+ res.status(200).send(JSON.stringify(response));
44
+ } catch(error) {
45
+ handle_api_error('accounts.signup', error, res);
46
+ }
47
+ };
48
+
49
+ export default signup;
@@ -0,0 +1,21 @@
1
+ import default_user_output_fields from "../../accounts/default_user_output_fields.js";
2
+ import get_output from "../get_output.js";
3
+ import has_login_token_expired from "../../accounts/has_login_token_expired.js";
4
+
5
+ const user = (req = {}, res = {}) => {
6
+ const login_token_has_expired = has_login_token_expired(
7
+ res,
8
+ req?.cookies?.joystick_login_token,
9
+ req?.cookies?.joystick_login_token_expires_at
10
+ );
11
+
12
+ const status = !login_token_has_expired ? 200 : 401;
13
+ const user = get_output(
14
+ req?.context?.user,
15
+ req?.body?.output || default_user_output_fields
16
+ );
17
+
18
+ return res.status(status).send(JSON.stringify({ status, user }));
19
+ };
20
+
21
+ export default user;
@@ -0,0 +1,11 @@
1
+ import accounts from "../../accounts/index.js";
2
+
3
+ const verify_email = async (req = {}, res = {}) => {
4
+ await accounts.verify_email({
5
+ token: req?.query?.token,
6
+ });
7
+
8
+ res.redirect("/");
9
+ };
10
+
11
+ export default verify_email;
@@ -0,0 +1,10 @@
1
+ const format_api_error = (exception = {}, location = "", status = 0) => {
2
+ return {
3
+ status,
4
+ error: exception,
5
+ message: exception?.message || exception,
6
+ location,
7
+ };
8
+ };
9
+
10
+ export default format_api_error;
@@ -0,0 +1,119 @@
1
+ import format_api_error from "./format_api_error.js";
2
+ import get_output from "./get_output.js";
3
+ import get_sanitized_context from "../../lib/get_sanitized_context.js";
4
+ import sanitize_api_response from "./sanitize_api_response.js";
5
+ import track_function_call from "../../test/track_function_call.js";
6
+ import types from "../../lib/types.js";
7
+ import validate_input from "./validate_input.js";
8
+
9
+ const run_getter = async (
10
+ get_name = '',
11
+ getter_definition = {},
12
+ input = null,
13
+ output = null,
14
+ context = {},
15
+ api_schema_options = {}
16
+ ) => {
17
+ const should_disable_sanitization = getter_definition?.sanitize === false;
18
+ const should_sanitize_output = (getter_definition?.sanitize || api_schema_options?.sanitize) === true;
19
+
20
+ track_function_call(`node.api.getters.${get_name}`, [
21
+ input,
22
+ get_sanitized_context(context),
23
+ ]);
24
+
25
+ const data = (await getter_definition?.get(input, context));
26
+ const response = output ? get_output(data, output) : data;
27
+
28
+ return !should_disable_sanitization && should_sanitize_output ? sanitize_api_response(
29
+ response
30
+ ) : response;
31
+ };
32
+
33
+ const run_authorization = async (getter_name = '', getter_definition = {}, input = {}, context = {}) => {
34
+ track_function_call(`node.api.getters.${getter_name}.authorized`, [
35
+ input,
36
+ get_sanitized_context(context),
37
+ ]);
38
+
39
+ const authorization = await getter_definition?.authorized(input, context);
40
+
41
+ if (typeof authorization === 'boolean') {
42
+ return authorization;
43
+ }
44
+
45
+ if (types.is_object(authorization) && !types.is_array(authorization) && !types.is_undefined(authorization?.authorized)) {
46
+ return authorization?.authorized ? true : authorization?.message;
47
+ }
48
+ };
49
+
50
+ const handle_log_validation_errors = (validation_errors = [], getter_name = '') => {
51
+ console.log(
52
+ `Input validation for getter "${getter_name}" failed with the following errors:\n`
53
+ );
54
+
55
+ for (let i = 0; i < validation_errors?.length; i += 1) {
56
+ const validation_error = validation_errors[i];
57
+ console.log(`${i + 1}. ${validation_error}`);
58
+ }
59
+ };
60
+
61
+ const run_validation = (get_request_input = {}, getter_definition_input = {}) => {
62
+ return validate_input(get_request_input, getter_definition_input);
63
+ };
64
+
65
+ const get = async ({
66
+ get_name,
67
+ get_options, // NOTE: skip, input, output.
68
+ getter_definition,
69
+ request_context,
70
+ api_schema_options,
71
+ }) => {
72
+ const should_run_validation = getter_definition?.input && Object.keys(getter_definition?.input)?.length > 0;
73
+ const should_run_authorization = types.is_function(getter_definition?.authorized);
74
+
75
+ if (should_run_validation) {
76
+ const validation_errors = await run_validation(get_options?.input, getter_definition?.input);
77
+
78
+ if (validation_errors?.length > 0) {
79
+ handle_log_validation_errors(validation_errors, get_name);
80
+
81
+ return Promise.reject({
82
+ errors: validation_errors.map((error) => {
83
+ return format_api_error(new Error(error), `getters.${get_name}.input`, 400);
84
+ }),
85
+ });
86
+ }
87
+ }
88
+
89
+ if (should_run_authorization) {
90
+ const authorized = await run_authorization(get_name, getter_definition, get_options?.input, request_context);
91
+
92
+ if (!authorized || types.is_string(authorized)) {
93
+ return Promise.reject({
94
+ errors: [
95
+ format_api_error(
96
+ new Error(typeof authorized === 'string' ? authorized : `Not authorized to access ${get_name}.`),
97
+ `getters.${get_name}.authorized`,
98
+ 403
99
+ ),
100
+ ],
101
+ });
102
+ }
103
+ }
104
+
105
+ if (types.is_function(getter_definition?.get)) {
106
+ const response = await run_getter(
107
+ get_name,
108
+ getter_definition,
109
+ get_options?.input,
110
+ get_options?.output,
111
+ request_context,
112
+ api_schema_options,
113
+ );
114
+
115
+ return Promise.resolve(response);
116
+ }
117
+ };
118
+
119
+ export default get;
@@ -0,0 +1,27 @@
1
+ const get_api_context = (req = {}, res = {}, api_context = null) => {
2
+ // NOTE: api_context is the optional *global* context defined in the API
3
+ // schema at /api/index.js in an app.
4
+ return new Promise(async (resolve) => {
5
+ if (typeof api_context === "function") {
6
+ const compiled_api_context = await api_context(req, res);
7
+
8
+ return resolve({
9
+ ...compiled_api_context,
10
+ ...(req?.context || {}),
11
+ req,
12
+ res,
13
+ ...(process.databases || {}),
14
+ });
15
+ }
16
+
17
+ return resolve({
18
+ ...api_context,
19
+ ...(req?.context || {}),
20
+ req,
21
+ res,
22
+ ...(process.databases || {}),
23
+ });
24
+ });
25
+ };
26
+
27
+ export default get_api_context;
@@ -0,0 +1,37 @@
1
+ import fetch from 'node-fetch';
2
+ import get from "./get.js";
3
+ import set from "./set.js";
4
+
5
+ const get_api_for_data_functions = (req = {}, api_schema = {}) => {
6
+ return {
7
+ fetch,
8
+ get: (get_name = '', get_options = {}) => {
9
+ if (get_options?.skip) {
10
+ return null;
11
+ }
12
+
13
+ return get({
14
+ get_name,
15
+ get_options, // NOTE: skip, input, output
16
+ getter_definition: api_schema?.getters[get_name],
17
+ request_context: req?.context,
18
+ api_schema_options: api_schema?.options,
19
+ });
20
+ },
21
+ set: (set_name = '', set_options = {}) => {
22
+ if (set_options?.skip) {
23
+ return null;
24
+ }
25
+
26
+ return set({
27
+ set_name,
28
+ set_options, // NOTE: skip, input, output
29
+ setter_definition: api_schema?.setters[set_name],
30
+ request_context: req?.context,
31
+ api_schema_options: api_schema?.options,
32
+ });
33
+ },
34
+ }
35
+ };
36
+
37
+ export default get_api_for_data_functions;
@@ -0,0 +1,5 @@
1
+ const get_api_url_component = (string = '') => {
2
+ return string.toLowerCase().replace(/\ /g, "-");
3
+ };
4
+
5
+ export default get_api_url_component;
@@ -0,0 +1,116 @@
1
+ import types from "../../lib/types.js";
2
+
3
+ const filter_output = (object = {}, fields = []) => {
4
+ const entries_for_object_to_filter = Object.entries(object || {});
5
+
6
+ for (let i = 0; i < entries_for_object_to_filter?.length; i += 1) {
7
+ const [key, value] = entries_for_object_to_filter[i];
8
+ const key_in_fields = fields.find((field) => field.key === key);
9
+
10
+ if (!key_in_fields) {
11
+ delete object[key];
12
+ }
13
+
14
+ if (key_in_fields && types.is_object(value) && key_in_fields.children.length === 0) {
15
+ return value;
16
+ }
17
+
18
+ if (key_in_fields && types.is_object(value) && key_in_fields.children.length > 0) {
19
+ filter_output(value, key_in_fields.children);
20
+ }
21
+
22
+ if (
23
+ key_in_fields &&
24
+ types.is_array(value) &&
25
+ key_in_fields.children &&
26
+ key_in_fields.children.length > 0
27
+ ) {
28
+ for (let i = 0; i < value?.length; i += 1) {
29
+ const value_element = value[i];
30
+ if (value_element && types.is_object(value_element)) {
31
+ filter_output(value_element, key_in_fields.children);
32
+ }
33
+ }
34
+ }
35
+ }
36
+
37
+ return object;
38
+ };
39
+
40
+ const get_path_part_arrays = (paths = []) => {
41
+ return paths.map((path) => {
42
+ return path.split(".");
43
+ });
44
+ };
45
+
46
+ const get_head_tail = (path_part_array = []) => {
47
+ const [head, ...tail] = path_part_array;
48
+ return {
49
+ head,
50
+ tail,
51
+ };
52
+ };
53
+
54
+ const get_head_tail_for_paths = (path_part_arrays = []) => {
55
+ return path_part_arrays.map((path_part_array) => {
56
+ return get_head_tail(path_part_array);
57
+ });
58
+ };
59
+
60
+ const add_to_map = (map = [], head_tail_for_paths = []) => {
61
+ for (let i = 0; i < head_tail_for_paths?.length; i += 1) {
62
+ const head_tail_for_path = head_tail_for_paths[i];
63
+
64
+ const existing_map_entry = map.find(
65
+ (map_entry) => map_entry.key === head_tail_for_path.head
66
+ );
67
+
68
+ if (!existing_map_entry) {
69
+ const head_tail_for_children =
70
+ head_tail_for_path.tail && head_tail_for_path.tail.length > 0
71
+ ? get_head_tail(head_tail_for_path.tail)
72
+ : null;
73
+
74
+ map.push({
75
+ key: head_tail_for_path.head,
76
+ children: head_tail_for_children
77
+ ? add_to_map([], [head_tail_for_children])
78
+ : [], // The NEXT thing to nest and the parent.
79
+ });
80
+ }
81
+
82
+ if (existing_map_entry) {
83
+ const head_tail_for_children =
84
+ head_tail_for_path.tail && head_tail_for_path.tail.length > 0
85
+ ? get_head_tail(head_tail_for_path.tail)
86
+ : null;
87
+
88
+ existing_map_entry.children = [
89
+ ...(head_tail_for_children
90
+ ? add_to_map(existing_map_entry.children, [head_tail_for_children])
91
+ : []),
92
+ ];
93
+ }
94
+ }
95
+
96
+ return map;
97
+ };
98
+
99
+ const get_output = (output = {}, output_fields = []) => {
100
+ const map = [];
101
+ const path_part_arrays = get_path_part_arrays(output_fields);
102
+ const head_tail_for_paths = get_head_tail_for_paths(path_part_arrays);
103
+
104
+ add_to_map(map, head_tail_for_paths);
105
+
106
+ if (types.is_array(output)) {
107
+ return output.map((element) => {
108
+ return filter_output(element, map);
109
+ });
110
+ }
111
+
112
+ return filter_output(output, map);
113
+ };
114
+
115
+ export default get_output;
116
+
@@ -0,0 +1,8 @@
1
+ const get_value_from_object = (object, path = '') => {
2
+ if (!path) return object;
3
+ if (!object) return undefined;
4
+ const properties = path.split(".");
5
+ return get_value_from_object(object[properties.shift()], properties.join("."));
6
+ };
7
+
8
+ export default get_value_from_object;
@@ -0,0 +1,28 @@
1
+ import format_api_error from "./format_api_error.js";
2
+ import types from "../../lib/types.js";
3
+
4
+ const handle_api_error = (location = '', error = '', res = {}) => {
5
+ // NOTE: This is an internal Joystick error that we control. Should be
6
+ // in the shape of { errors: [] } pre-formatted.
7
+ if (types.is_object(error) && !(error instanceof Error)) {
8
+ return res.status((error?.errors && error?.errors[0]?.status) || 500).send(
9
+ JSON.stringify(error)
10
+ );
11
+ }
12
+
13
+ if (error instanceof Error) {
14
+ return res.status(500).send(
15
+ JSON.stringify({
16
+ errors: [format_api_error(error, location, 500)]
17
+ })
18
+ );
19
+ }
20
+
21
+ return res.status(500).send(
22
+ JSON.stringify({
23
+ errors: [format_api_error(new Error(error), location, 500)]
24
+ })
25
+ );
26
+ };
27
+
28
+ export default handle_api_error;