@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
@@ -1,266 +0,0 @@
1
- import generateId from "../../../../lib/generateId";
2
- import dayjs from "dayjs";
3
- var accounts_default = {
4
- existingUser: async (input = {}) => {
5
- let existingUserWithEmailAddress;
6
- let existingUserWithUsername;
7
- if (input?.emailAddress) {
8
- existingUserWithEmailAddress = await process.databases._users?.collection("users").findOne({ emailAddress: input.emailAddress });
9
- }
10
- if (input?.username) {
11
- existingUserWithUsername = await process.databases._users?.collection("users").findOne({ username: input.username });
12
- }
13
- return existingUserWithEmailAddress || existingUserWithUsername ? {
14
- existingEmailAddress: existingUserWithEmailAddress?.emailAddress,
15
- existingUsername: existingUserWithUsername?.username
16
- } : null;
17
- },
18
- createUser: async (input = {}) => {
19
- const userId = generateId();
20
- await process.databases._users?.collection("users").insertOne({ _id: userId, ...input });
21
- return userId;
22
- },
23
- user: async (input) => {
24
- if (input?.emailAddress) {
25
- const user = await process.databases._users?.collection("users").findOne({ emailAddress: input.emailAddress });
26
- return user;
27
- }
28
- if (input?.username) {
29
- const user = await process.databases._users?.collection("users").findOne({ username: input.username });
30
- return user;
31
- }
32
- if (input?._id) {
33
- const user = await process.databases._users?.collection("users").findOne({ _id: input._id });
34
- return user;
35
- }
36
- return null;
37
- },
38
- deleteOldSessions: async (input = {}) => {
39
- const user = await process.databases._users?.collection("users").findOne({
40
- _id: input?.userId
41
- });
42
- if (user) {
43
- const sessions = user?.sessions?.filter((session) => {
44
- return dayjs(session?.tokenExpiresAt).isAfter(dayjs().utc().format());
45
- });
46
- await process.databases._users?.collection("users").updateOne({
47
- _id: input.userId
48
- }, {
49
- $set: {
50
- sessions
51
- }
52
- });
53
- }
54
- },
55
- addSession: async (input = {}) => {
56
- await process.databases._users?.collection("users").updateOne({
57
- _id: input.userId
58
- }, {
59
- $addToSet: {
60
- sessions: input.session
61
- }
62
- });
63
- },
64
- userWithLoginToken: async (input) => {
65
- const user = await process.databases._users?.collection("users").findOne({
66
- "sessions.token": input?.token
67
- });
68
- return user;
69
- },
70
- createVerifyEmailToken: async (input) => {
71
- const token = generateId();
72
- await process.databases._users?.collection("users").updateOne({
73
- _id: input?.userId
74
- }, {
75
- $addToSet: {
76
- verifyEmailTokens: {
77
- userId: input?.userId,
78
- token
79
- }
80
- }
81
- });
82
- return token;
83
- },
84
- userWithVerifyEmailToken: async (input) => {
85
- const user = await process.databases._users?.collection("users").findOne({
86
- "verifyEmailTokens.token": input?.token
87
- });
88
- return user;
89
- },
90
- markEmailVerifiedAt: async (input) => {
91
- const user = await process.databases._users?.collection("users").findOne({
92
- _id: input?.userId
93
- });
94
- await process.databases._users?.collection("users").updateOne({
95
- _id: input?.userId
96
- }, {
97
- $set: {
98
- emailVerified: true,
99
- emailVerifiedAt: new Date().toISOString(),
100
- verifyEmailTokens: user?.verifyEmailTokens?.filter((verifyEmailToken) => {
101
- return verifyEmailToken?.token === input?.token;
102
- })
103
- }
104
- });
105
- return true;
106
- },
107
- addPasswordResetToken: (input = {}) => {
108
- return process.databases._users?.collection("users").updateOne({
109
- emailAddress: input.emailAddress
110
- }, {
111
- $addToSet: {
112
- passwordResetTokens: {
113
- token: input.token,
114
- requestedAt: new Date().toISOString()
115
- }
116
- }
117
- });
118
- },
119
- userWithResetToken: async (input) => {
120
- const user = await process.databases._users?.collection("users").findOne({
121
- "passwordResetTokens.token": input["passwordResetTokens.token"]
122
- });
123
- return user;
124
- },
125
- setNewPassword: async (input = {}) => {
126
- return process.databases._users?.collection("users").updateOne({
127
- _id: input?.userId
128
- }, {
129
- $set: {
130
- password: input?.hashedPassword
131
- }
132
- });
133
- },
134
- removeResetToken: async (input = {}) => {
135
- const user = await process.databases._users?.collection("users").findOne({ _id: input?.userId });
136
- await process.databases._users?.collection("users").updateOne({
137
- _id: input?.userId
138
- }, {
139
- $set: {
140
- passwordResetTokens: user?.passwordResetTokens?.filter(({ token }) => {
141
- return token !== input?.token;
142
- })
143
- }
144
- });
145
- return process.databases._users?.collection("users").findOne({ _id: input?.userId });
146
- },
147
- addRole: async (input = {}) => {
148
- const existingRole = input?.role ? await process.databases._users?.collection("roles").findOne({ role: input?.role }) : null;
149
- if (!existingRole && input?.role) {
150
- await process.databases._users?.collection("roles").insertOne({
151
- _id: generateId(),
152
- role: input?.role
153
- });
154
- return {
155
- _id: input?.userId,
156
- action: "add",
157
- role: input?.role,
158
- ok: true,
159
- error: null
160
- };
161
- }
162
- return {
163
- action: "add",
164
- role: input?.role,
165
- ok: false,
166
- error: input?.role ? `Role already exists: ${input?.role}.` : `Must pass a name for role to add.`
167
- };
168
- },
169
- removeRole: async (input = {}) => {
170
- const existingRole = input?.role ? await process.databases._users?.collection("roles").findOne({ role: input?.role }) : null;
171
- if (existingRole) {
172
- await process.databases._users?.collection("users").updateMany({
173
- roles: { $in: [input?.role] }
174
- }, {
175
- $pull: {
176
- roles: input?.role
177
- }
178
- });
179
- await process.databases._users?.collection("roles").deleteOne({
180
- role: input?.role
181
- });
182
- return {
183
- _id: input?.userId,
184
- action: "remove",
185
- role: input?.role,
186
- ok: true,
187
- error: null
188
- };
189
- }
190
- return {
191
- action: "add",
192
- role: input?.role,
193
- ok: false,
194
- error: `Could not find an existing role with the name ${input?.role}.`
195
- };
196
- },
197
- listRoles: async (input = {}) => {
198
- const roles = await process.databases._users?.collection("roles").find().toArray();
199
- return (roles || []).map(({ role }) => role);
200
- },
201
- grantRole: async (input = {}) => {
202
- const user = await process.databases._users?.collection("users").findOne({ _id: input?.userId });
203
- if (user) {
204
- await process.databases._users?.collection("users").updateOne({ _id: input?.userId }, {
205
- $addToSet: {
206
- roles: input?.role
207
- }
208
- });
209
- const existingRole = await process.databases._users?.collection("roles").findOne({ role: input?.role });
210
- if (!existingRole) {
211
- await process.databases._users?.collection("roles").insertOne({
212
- _id: generateId(),
213
- role: input?.role
214
- });
215
- }
216
- return {
217
- _id: input?.userId,
218
- action: "grant",
219
- role: input?.role,
220
- ok: true,
221
- error: null
222
- };
223
- }
224
- return {
225
- _id: input?.userId,
226
- action: "grant",
227
- role: input?.role,
228
- ok: false,
229
- error: `User not found with the _id ${input?.userId}.`
230
- };
231
- },
232
- revokeRole: async (input = {}) => {
233
- const user = await process.databases._users?.collection("users").findOne({ _id: input?.userId });
234
- if (user && user.roles) {
235
- await process.databases._users?.collection("users").updateOne({ _id: input?.userId }, {
236
- $pull: {
237
- roles: input?.role
238
- }
239
- });
240
- return {
241
- _id: input?.userId,
242
- action: "revoke",
243
- role: input?.role,
244
- ok: true,
245
- error: null
246
- };
247
- }
248
- return {
249
- _id: input?.userId,
250
- action: "revoke",
251
- role: input?.role,
252
- ok: false,
253
- error: `User not found with the _id ${input?.userId}.`
254
- };
255
- },
256
- userHasRole: async (input = {}) => {
257
- const user = await process.databases._users?.collection("users").findOne({ _id: input?.userId });
258
- if (user && user.roles) {
259
- return user?.roles?.includes(input?.role);
260
- }
261
- return false;
262
- }
263
- };
264
- export {
265
- accounts_default as default
266
- };
@@ -1,111 +0,0 @@
1
- import dayjs from "dayjs";
2
- var queues_default = {
3
- addJob: function(jobToAdd = {}) {
4
- const db = process.databases._queues?.collection(`queue_${this.queue.name}`);
5
- return db.insertOne(jobToAdd);
6
- },
7
- countJobs: function(status = "") {
8
- const db = process.databases._queues?.collection(`queue_${this.queue.name}`);
9
- return db.countDocuments({ status });
10
- },
11
- deleteJob: function(jobId = "") {
12
- const db = process.databases._queues?.collection(`queue_${this.queue.name}`);
13
- return db.deleteOne({ _id: jobId });
14
- },
15
- getJobs: function(query = {}) {
16
- const db = process.databases._queues?.collection(`queue_${this.queue.name}`);
17
- return db.find(query).toArray();
18
- },
19
- getNextJobToRun: async function() {
20
- const db = process.databases._queues?.collection(`queue_${this.queue.name}`);
21
- const nextJob = await db.findOneAndUpdate({
22
- $or: [
23
- {
24
- status: "pending",
25
- nextRunAt: { $lte: dayjs().format() },
26
- lockedBy: { $exists: false }
27
- },
28
- {
29
- status: "pending",
30
- nextRunAt: { $lte: dayjs().format() },
31
- lockedBy: null
32
- }
33
- ]
34
- }, {
35
- $set: {
36
- status: "running",
37
- startedAt: dayjs().format(),
38
- lockedBy: this.machineId
39
- }
40
- }, {
41
- sort: {
42
- nextRunAt: 1
43
- }
44
- });
45
- return nextJob?.value;
46
- },
47
- initializeDatabase: function() {
48
- const db = process.databases._queues?.collection(`queue_${this.queue.name}`);
49
- db.createIndex({ status: 1 });
50
- db.createIndex({ status: 1, nextRunAt: 1 });
51
- if (this.queue.options?.cleanup?.completedAfterSeconds) {
52
- db.createIndex({ completedAt: 1 }, { expireAfterSeconds: this?.queue?.options?.cleanup?.completedAfterSeconds });
53
- }
54
- if (this.queue.options?.cleanup?.failedAfterSeconds) {
55
- db.createIndex({ failedAt: 1 }, { expireAfterSeconds: this?.queue?.options?.cleanup?.failedAfterSeconds });
56
- }
57
- },
58
- requeueJob: function(jobId = "", nextRunAt = null) {
59
- const db = process.databases._queues?.collection(`queue_${this.queue.name}`);
60
- return db.updateOne({ _id: jobId }, {
61
- $set: {
62
- status: "pending",
63
- nextRunAt
64
- },
65
- $unset: {
66
- lockedBy: ""
67
- }
68
- });
69
- },
70
- setJobsForMachineIncomplete: function() {
71
- const db = process.databases._queues?.collection(`queue_${this.queue.name}`);
72
- return db.updateMany({ status: "running", lockedBy: this.machineId }, {
73
- $set: {
74
- status: "incomplete"
75
- }
76
- });
77
- },
78
- setJobCompleted: function(jobId = "") {
79
- const db = process.databases._queues?.collection(`queue_${this.queue.name}`);
80
- return db.updateOne({ _id: jobId }, {
81
- $set: {
82
- status: "completed",
83
- completedAt: dayjs().format()
84
- }
85
- });
86
- },
87
- setJobFailed: function(jobId = "", error = "") {
88
- const db = process.databases._queues?.collection(`queue_${this.queue.name}`);
89
- return db.updateOne({ _id: jobId }, {
90
- $set: {
91
- status: "failed",
92
- failedAt: dayjs().format(),
93
- error
94
- }
95
- });
96
- },
97
- setJobsForMachinePending: function() {
98
- const db = process.databases._queues?.collection(`queue_${this.queue.name}`);
99
- return db.updateMany({ status: { $in: ["pending", "running"] }, lockedBy: this.machineId }, {
100
- $set: {
101
- status: "pending"
102
- },
103
- $unset: {
104
- lockedBy: ""
105
- }
106
- });
107
- }
108
- };
109
- export {
110
- queues_default as default
111
- };
@@ -1,6 +0,0 @@
1
- var addColumnToTable_default = (table = "", columnName = "", columnSchema = "") => {
2
- return process.databases._users?.query(`ALTER TABLE ${table} ADD COLUMN ${columnName} ${columnSchema}`);
3
- };
4
- export {
5
- addColumnToTable_default as default
6
- };
@@ -1,21 +0,0 @@
1
- const createUniqueIndex = async (indexName = "", tableName = "", tableColumns = []) => {
2
- return process.databases._users?.query(`CREATE UNIQUE INDEX IF NOT EXISTS ${indexName} ON ${tableName}(${tableColumns.join(", ")})`);
3
- };
4
- const createIndex = async (indexName = "", tableName = "", tableColumns = []) => {
5
- return process.databases._users?.query(`CREATE INDEX IF NOT EXISTS ${indexName} ON ${tableName}(${tableColumns.join(", ")})`);
6
- };
7
- var createAccountsIndexes_default = async () => {
8
- await createIndex("user_by_email", "users", ["email_address"]);
9
- await createIndex("user_by_username", "users", ["username"]);
10
- await createIndex("user_by_user_id", "users", ["user_id"]);
11
- await createIndex("user_session_by_token", "users_sessions", ["token"]);
12
- await createIndex("user_password_reset_token_by_token", "users_password_reset_tokens", ["token"]);
13
- await createIndex("user_password_reset_token_by_user_id_token", "users_password_reset_tokens", ["user_id", "token"]);
14
- await createIndex("user_role", "users_roles", ["role"]);
15
- await createIndex("user_roles_by_user_id_role", "users_roles", ["user_id", "role"]);
16
- await createIndex("role", "roles", ["role"]);
17
- await createUniqueIndex("user_roles", "users_roles", ["user_id", "role"]);
18
- };
19
- export {
20
- createAccountsIndexes_default as default
21
- };
@@ -1,39 +0,0 @@
1
- const createTable = async (table = "", tableColumns = []) => {
2
- return process.databases._users?.query(`CREATE TABLE IF NOT EXISTS ${table} (${tableColumns.join(", ")})`);
3
- };
4
- var createAccountsTables_default = async () => {
5
- await createTable("users", [
6
- "id bigserial primary key",
7
- "user_id text",
8
- "email_address text",
9
- "password text",
10
- "username text",
11
- "language text"
12
- ]);
13
- await createTable("users_sessions", [
14
- "id bigserial primary key",
15
- "user_id text",
16
- "token text",
17
- "token_expires_at text"
18
- ]);
19
- await createTable("users_password_reset_tokens", [
20
- "id bigserial primary key",
21
- "user_id text",
22
- "token text",
23
- "requested_at text"
24
- ]);
25
- await createTable("users_verify_email_tokens", [
26
- "id bigserial primary key",
27
- "user_id text",
28
- "token text"
29
- ]);
30
- await createTable("roles", ["id bigserial primary key", "role text"]);
31
- await createTable("users_roles", [
32
- "id bigserial primary key",
33
- "user_id text",
34
- "role text"
35
- ]);
36
- };
37
- export {
38
- createAccountsTables_default as default
39
- };
File without changes
@@ -1,55 +0,0 @@
1
- import postgresql from "pg";
2
- import chalk from "chalk";
3
- import os from "os";
4
- const { Pool } = postgresql;
5
- var postgresql_default = async (settings = {}, databasePort = 2610) => {
6
- const connection = settings?.connection || {
7
- hosts: [
8
- { hostname: "127.0.0.1", port: databasePort }
9
- ],
10
- database: "app",
11
- username: (os.userInfo() || {}).username || "",
12
- password: ""
13
- };
14
- try {
15
- const host = connection.hosts && connection.hosts[0];
16
- const pool = new Pool({
17
- user: connection?.username || "",
18
- database: connection?.database,
19
- password: connection?.password || "",
20
- host: host?.hostname,
21
- port: host?.port,
22
- ...settings?.options || {}
23
- });
24
- return {
25
- pool,
26
- query: (...args) => {
27
- return pool.query(...args).then((response) => {
28
- return response?.rows || [];
29
- }).catch((error) => {
30
- console.log(chalk.redBright(`
31
- Failed SQL Statement:
32
- `));
33
- console.log(args[0]);
34
- console.log(`
35
- `);
36
- console.log(chalk.redBright(`
37
- Failed Values:
38
- `));
39
- console.log(args[1]);
40
- throw error;
41
- });
42
- }
43
- };
44
- } catch (exception) {
45
- console.warn(chalk.yellowBright(`
46
- Failed to connect to PostgreSQL. Please double-check connection settings and try again.
47
-
48
- Error from PostgreSQL:
49
-
50
- ${chalk.redBright(exception?.message)}`));
51
- }
52
- };
53
- export {
54
- postgresql_default as default
55
- };
@@ -1,186 +0,0 @@
1
- import generateId from "../../../../lib/generateId";
2
- import objectToSQLKeysString from "../../../../lib/objectToSQLKeysString";
3
- import objectToSQLValuesString from "../../../../lib/objectToSQLValuesString";
4
- import camelPascalToSnake from "../../../../lib/camelPascalToSnake.js";
5
- var accounts_default = {
6
- existingUser: async (input = {}) => {
7
- let existingUserWithEmailAddress;
8
- let existingUserWithUsername;
9
- if (input?.emailAddress) {
10
- const [existingUser] = await process.databases._users?.query(`SELECT * FROM users WHERE email_address = $1;`, [input?.emailAddress]);
11
- existingUserWithEmailAddress = existingUser;
12
- }
13
- if (input?.username) {
14
- const [existingUser] = await process.databases._users?.query(`SELECT * FROM users WHERE username = $1;`, [input?.username]);
15
- existingUserWithUsername = existingUser;
16
- }
17
- return existingUserWithEmailAddress || existingUserWithUsername ? {
18
- existingEmailAddress: existingUserWithEmailAddress?.email_address,
19
- existingUsername: existingUserWithUsername?.username
20
- } : null;
21
- },
22
- createUser: async (input = {}) => {
23
- const userId = generateId();
24
- const keys = ["user_id", ...Object.keys(input) || []]?.map((inputKey) => {
25
- return camelPascalToSnake(inputKey);
26
- })?.join(",");
27
- const values = [userId, ...Object.values(input) || []];
28
- await process.databases._users?.query(`INSERT INTO users(${keys}) VALUES (${values?.map((_, index) => `$${index + 1}`)});`, values);
29
- return userId;
30
- },
31
- user: async (input) => {
32
- if (input?.emailAddress) {
33
- const [user] = await process.databases._users?.query(`SELECT * FROM users WHERE email_address = $1;`, [input?.emailAddress]);
34
- return user;
35
- }
36
- if (input?.username) {
37
- const [user] = await process.databases._users?.query(`SELECT * FROM users WHERE username = $1;`, [input?.username]);
38
- return user;
39
- }
40
- if (input?._id) {
41
- const [user] = await process.databases._users?.query(`SELECT * FROM users WHERE user_id = $1;`, [input?._id]);
42
- return user;
43
- }
44
- return null;
45
- },
46
- deleteOldSessions: async (input = {}) => {
47
- await process.databases._users?.query(`DELETE FROM users_sessions WHERE user_id = $1 AND token_expires_at::date < NOW()`, [input?.userId]);
48
- },
49
- addSession: async (input = {}) => {
50
- await process.databases._users?.query(`INSERT INTO users_sessions(user_id, token, token_expires_at) VALUES ($1, $2, $3);`, [input?.userId, input?.session?.token, input?.session?.tokenExpiresAt]);
51
- },
52
- userWithLoginToken: async (input) => {
53
- const [existingUser] = await process.databases._users?.query(`SELECT user_id FROM users_sessions WHERE token = $1;`, [input.token]);
54
- const [user] = await process.databases._users?.query(`SELECT * FROM users WHERE user_id = $1;`, [existingUser?.user_id]);
55
- return user;
56
- },
57
- createEmailVerificationToken: async (input) => {
58
- const token = generateId();
59
- await process.databases._users?.query(`INSERT INTO users_verify_email_tokens(user_id, token) VALUES ($1, $2);`, [input?.userId, token]);
60
- return token;
61
- },
62
- userWithVerifyEmailToken: async (input) => {
63
- const [existingUser] = await process.databases._users?.query(`SELECT user_id FROM users_verify_email_tokens WHERE token = $1;`, [input.token]);
64
- const [user] = await process.databases._users?.query(`SELECT * FROM users WHERE user_id = $1;`, [existingUser?.user_id]);
65
- return user;
66
- },
67
- markEmailVerifiedAt: async (input) => {
68
- await process.databases._users?.query(`UPDATE users SET email_verified = true, email_verified_at = $1 WHERE user_id = $2;`, [new Date().toISOString(), input?.userId]);
69
- await process.databases._users?.query(`DELETE FROM users_verify_email_tokens WHERE token = $1`, [input?.token]);
70
- },
71
- addPasswordResetToken: async (input = {}) => {
72
- const [user] = await process.databases._users?.query(`SELECT user_id FROM users WHERE email_address = $1;`, [input?.emailAddress]);
73
- await process.databases._users?.query(`INSERT INTO users_password_reset_tokens(user_id, token, requested_at) VALUES ($1, $2, $3);`, [user?.user_id, input?.token, new Date().toISOString()]);
74
- },
75
- userWithResetToken: async (input) => {
76
- const [existingUser] = await process.databases._users?.query(`SELECT user_id FROM users_password_reset_tokens WHERE token = $1;`, [input["passwordResetTokens.token"]]);
77
- const [user] = await process.databases._users?.query(`SELECT * FROM users WHERE user_id = $1;`, [existingUser?.user_id]);
78
- return user;
79
- },
80
- setNewPassword: async (input = {}) => {
81
- await process.databases._users?.query(`UPDATE users SET password = $1 WHERE user_id = $2;`, [input?.hashedPassword, input?.userId]);
82
- },
83
- removeResetToken: async (input = {}) => {
84
- await process.databases._users?.query(`DELETE FROM users_password_reset_tokens WHERE user_id = $1 AND token = $2;`, [input?.userId, input?.token]);
85
- const [user] = await process.databases._users?.query(`SELECT * FROM users WHERE user_id = $1;`, [input?.userId]);
86
- return user;
87
- },
88
- addRole: async (input = {}) => {
89
- const [existingRole] = await process.databases._users?.query(`SELECT * FROM roles WHERE role = $1;`, [input?.role]);
90
- if (!existingRole && input?.role) {
91
- await process.databases._users?.query(`INSERT INTO roles(role) VALUES ($1);`, [input?.role]);
92
- return {
93
- _id: input?.userId,
94
- action: "add",
95
- role: input?.role,
96
- ok: true,
97
- error: null
98
- };
99
- }
100
- return {
101
- action: "add",
102
- role: input?.role,
103
- ok: false,
104
- error: input?.role ? `Role already exists: ${input?.role}.` : `Must pass a name for role to add.`
105
- };
106
- },
107
- removeRole: async (input = {}) => {
108
- const [existingRole] = await process.databases._users?.query(`SELECT * FROM roles WHERE role = $1;`, [input?.role]);
109
- if (existingRole) {
110
- await process.databases._users?.query(`DELETE FROM users_roles WHERE role = $1;`, [input?.role]);
111
- await process.databases._users?.query(`DELETE FROM roles WHERE role = $1;`, [input?.role]);
112
- return {
113
- _id: input?.userId,
114
- action: "remove",
115
- role: input?.role,
116
- ok: true,
117
- error: null
118
- };
119
- }
120
- return {
121
- action: "add",
122
- role: input?.role,
123
- ok: false,
124
- error: `Could not find an existing role with the name ${input?.role}.`
125
- };
126
- },
127
- listRoles: async (input = {}) => {
128
- const roles = await process.databases._users?.query(`SELECT * FROM roles;`);
129
- return (roles || []).map(({ role }) => role);
130
- },
131
- grantRole: async (input = {}) => {
132
- const user = await process.databases._users?.query(`SELECT * FROM users WHERE user_id = $1;`, [input?.userId]);
133
- if (user) {
134
- await process.databases._users?.query(`INSERT INTO users_roles(user_id, role) VALUES ($1, $2) ON CONFLICT DO NOTHING;`, [input?.userId, input?.role]);
135
- const [existingRole] = await process.databases._users?.query(`SELECT * FROM roles WHERE role = $1;`, [input?.role]);
136
- if (!existingRole) {
137
- await process.databases._users?.query(`INSERT INTO roles(role) VALUES ($1) ON CONFLICT DO NOTHING;`, [input?.role]);
138
- }
139
- return {
140
- _id: input?.userId,
141
- action: "grant",
142
- role: input?.role,
143
- ok: true,
144
- error: null
145
- };
146
- }
147
- return {
148
- _id: input?.userId,
149
- action: "grant",
150
- role: input?.role,
151
- ok: false,
152
- error: `User not found with the _id ${input?.userId}.`
153
- };
154
- },
155
- revokeRole: async (input = {}) => {
156
- const user = await process.databases._users?.query(`SELECT * FROM users WHERE user_id = $1;`, [input?.userId]);
157
- if (user) {
158
- await process.databases._users?.query(`DELETE FROM users_roles WHERE user_id = $1 AND role = $2;`, [input?.userId, input?.role]);
159
- return {
160
- _id: input?.userId,
161
- action: "revoke",
162
- role: input?.role,
163
- ok: true,
164
- error: null
165
- };
166
- }
167
- return {
168
- _id: input?.userId,
169
- action: "revoke",
170
- role: input?.role,
171
- ok: false,
172
- error: `User not found with the _id ${input?.userId}.`
173
- };
174
- },
175
- userHasRole: async (input = {}) => {
176
- const user = await process.databases._users?.query(`SELECT * FROM users WHERE user_id = $1;`, [input?.userId]);
177
- if (user) {
178
- const [existingRole] = await process.databases._users?.query(`SELECT * FROM users_roles WHERE user_id = $1 AND role = $2;`, [input?.userId, input?.role]);
179
- return !!existingRole;
180
- }
181
- return false;
182
- }
183
- };
184
- export {
185
- accounts_default as default
186
- };