@joystick.js/node-canary 0.0.0-canary.47 → 0.0.0-canary.471
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.
- package/.build/getFilesToBuild.js +26 -0
- package/.build/getPlatformSafeFilePath.js +6 -0
- package/.build/getPlatformSafePath.js +6 -0
- package/.build/index.js +88 -0
- package/.build/isWindows.js +3 -0
- package/dist/action/class.js +1 -82
- package/dist/action/index.js +1 -8
- package/dist/app/accounts/default_user_output_fields.js +1 -0
- package/dist/app/accounts/delete_user.js +1 -0
- package/dist/app/accounts/generate_account_session.js +1 -0
- package/dist/app/accounts/generate_password_reset_token.js +1 -0
- package/dist/app/accounts/get_browser_safe_user.js +1 -0
- package/dist/app/accounts/has_login_token_expired.js +1 -0
- package/dist/app/accounts/index.js +1 -29
- package/dist/app/accounts/login.js +1 -59
- package/dist/app/accounts/recover_password.js +1 -0
- package/dist/app/accounts/reset_password.js +1 -0
- package/dist/app/accounts/roles/add.js +1 -7
- package/dist/app/accounts/roles/grant.js +1 -7
- package/dist/app/accounts/roles/index.js +1 -17
- package/dist/app/accounts/roles/list.js +1 -7
- package/dist/app/accounts/roles/remove.js +1 -7
- package/dist/app/accounts/roles/revoke.js +1 -7
- package/dist/app/accounts/roles/user_has_role.js +1 -0
- package/dist/app/accounts/send_email_verification.js +1 -0
- package/dist/app/accounts/set_account_cookie.js +1 -0
- package/dist/app/accounts/set_password.js +1 -0
- package/dist/app/accounts/signup.js +1 -97
- package/dist/app/accounts/unset_account_cookie.js +1 -0
- package/dist/app/accounts/verify_email.js +1 -0
- package/dist/app/api/accounts/authenticated.js +1 -0
- package/dist/app/api/accounts/login.js +1 -0
- package/dist/app/api/accounts/logout.js +1 -0
- package/dist/app/api/accounts/recover_password.js +1 -0
- package/dist/app/api/accounts/reset_password.js +1 -0
- package/dist/app/api/accounts/signup.js +1 -0
- package/dist/app/api/accounts/user.js +1 -0
- package/dist/app/api/accounts/verify_email.js +1 -0
- package/dist/app/api/format_api_error.js +1 -0
- package/dist/app/api/get.js +2 -0
- package/dist/app/api/get_api_context.js +1 -0
- package/dist/app/api/get_api_for_data_functions.js +1 -0
- package/dist/app/api/get_api_url_component.js +1 -0
- package/dist/app/api/get_output.js +1 -0
- package/dist/app/api/get_value_from_object.js +1 -0
- package/dist/app/api/handle_api_error.js +1 -0
- package/dist/app/api/input_validators.js +1 -0
- package/dist/app/api/is_array_path.js +1 -0
- package/dist/app/api/push/health.js +2 -0
- package/dist/app/api/register_getters.js +1 -0
- package/dist/app/api/register_setters.js +1 -0
- package/dist/app/api/sanitize_api_response.js +1 -0
- package/dist/app/api/set.js +2 -0
- package/dist/app/api/test/accounts/delete.js +1 -0
- package/dist/app/api/test/accounts/signup.js +1 -0
- package/dist/app/api/test/bootstrap.js +1 -0
- package/dist/app/api/test/process.js +1 -0
- package/dist/app/api/test/queues.js +1 -0
- package/dist/app/api/validate_input.js +1 -0
- package/dist/app/api/validate_session.js +1 -0
- package/dist/app/api/validate_type.js +1 -0
- package/dist/app/browser/hmr_client.js +1 -0
- package/dist/app/browser/process_polyfill.js +1 -0
- package/dist/app/cron_jobs/register.js +1 -0
- package/dist/app/databases/database_type_map.js +1 -0
- package/dist/app/databases/get_target_database_connection.js +1 -0
- package/dist/app/databases/mongodb/available_query_parameters.js +1 -0
- package/dist/app/databases/mongodb/build_connection_string.js +1 -0
- package/dist/app/databases/mongodb/build_query_parameters.js +1 -0
- package/dist/app/databases/mongodb/connect.js +6 -0
- package/dist/app/databases/mongodb/create_indexes.js +1 -0
- package/dist/app/databases/postgresql/accounts/create_accounts_metadata_table_columns.js +1 -0
- package/dist/app/databases/postgresql/connect.js +30 -0
- package/dist/app/databases/postgresql/create_indexes.js +1 -0
- package/dist/app/databases/postgresql/create_tables.js +1 -0
- package/dist/app/databases/postgresql/handle_cleanup_queues.js +5 -0
- package/dist/app/databases/postgresql/handle_cleanup_sessions.js +1 -0
- package/dist/app/databases/queries/accounts.js +1 -0
- package/dist/app/databases/queries/map.js +1 -0
- package/dist/app/databases/queries/mongodb/accounts.js +1 -0
- package/dist/app/databases/queries/mongodb/queues.js +1 -0
- package/dist/app/databases/queries/mongodb/sessions.js +1 -0
- package/dist/app/databases/queries/postgresql/accounts.js +1 -0
- package/dist/app/databases/queries/postgresql/queues.js +123 -0
- package/dist/app/databases/queries/postgresql/sessions.js +14 -0
- package/dist/app/databases/queries/sessions.js +1 -0
- package/dist/app/databases/register_database.js +1 -0
- package/dist/app/databases/sql.js +1 -0
- package/dist/app/email/send.js +1 -0
- package/dist/app/email/validate_smtp_settings.js +1 -0
- package/dist/app/fixture/index.js +1 -0
- package/dist/app/generate_machine_id.js +1 -0
- package/dist/app/generate_process_id.js +1 -0
- package/dist/app/get_ssl_certificates.js +1 -0
- package/dist/app/handle_process_errors.js +1 -0
- package/dist/app/index.js +1 -656
- package/dist/app/middleware/account.js +1 -0
- package/dist/app/middleware/body_parser.js +1 -0
- package/dist/app/middleware/build_error.js +1 -0
- package/dist/app/middleware/built_in.js +1 -0
- package/dist/app/middleware/context.js +1 -0
- package/dist/app/middleware/cors.js +1 -22
- package/dist/app/middleware/csp.js +1 -48
- package/dist/app/middleware/generate_insecure_page.js +65 -0
- package/dist/app/middleware/generate_joystick_error_page.js +147 -0
- package/dist/app/middleware/hmr_client.js +1 -0
- package/dist/app/middleware/insecure.js +1 -11
- package/dist/app/middleware/process_browser_polyfill.js +1 -0
- package/dist/app/middleware/render/get_url.js +1 -0
- package/dist/app/middleware/render/index.js +1 -0
- package/dist/app/middleware/request_methods.js +1 -0
- package/dist/app/middleware/session.js +1 -24
- package/dist/app/push_logs.js +1 -0
- package/dist/app/queues/index.js +1 -119
- package/dist/app/register_app_options.js +1 -0
- package/dist/app/routes/register_route_from_function.js +1 -0
- package/dist/app/routes/register_route_from_object.js +1 -0
- package/dist/app/routes/supported_http_methods.js +1 -0
- package/dist/app/settings/load.js +1 -0
- package/dist/app/ssr/index.js +33 -0
- package/dist/app/ssr/set_base_attributes_in_html.js +1 -0
- package/dist/app/ssr/set_head_tags_in_html.js +1 -0
- package/dist/app/start_express.js +1 -0
- package/dist/app/start_node_as_cluster.js +1 -0
- package/dist/app/uploaders/local_upload_progress_middleware.js +1 -0
- package/dist/app/uploaders/register.js +1 -0
- package/dist/app/uploaders/run_upload.js +1 -0
- package/dist/app/uploaders/validate_options.js +1 -0
- package/dist/app/uploaders/validate_uploads.js +1 -0
- package/dist/app/websockets/emit_event.js +1 -0
- package/dist/app/websockets/index.js +1 -0
- package/dist/app/websockets/register.js +1 -0
- package/dist/index.js +4 -76
- package/dist/lib/camel_pascal_to_snake.js +1 -0
- package/dist/lib/constants.js +1 -13
- package/dist/lib/dynamic_import.js +1 -0
- package/dist/lib/escape_html.js +1 -0
- package/dist/lib/escape_key_value_pair.js +1 -0
- package/dist/lib/float_to_decimal_place.js +1 -0
- package/dist/lib/generate_id.js +1 -0
- package/dist/lib/get_browser_safe_request.js +1 -0
- package/dist/lib/get_joystick_build_path.js +1 -0
- package/dist/lib/get_origin.js +1 -0
- package/dist/lib/get_platform_safe_path.js +1 -0
- package/dist/lib/get_sanitized_context.js +1 -0
- package/dist/lib/get_translations.js +1 -0
- package/dist/lib/hash_string.js +1 -0
- package/dist/lib/is_valid_json.js +1 -0
- package/dist/lib/log.js +13 -49
- package/dist/lib/node_path_polyfills.js +1 -0
- package/dist/lib/parse_json.js +1 -0
- package/dist/lib/path_exists.js +1 -0
- package/dist/lib/rainbow_road.js +1 -0
- package/dist/lib/serialize_query_parameters.js +1 -0
- package/dist/lib/set_cookie.js +1 -0
- package/dist/lib/string_to_slug.js +1 -0
- package/dist/lib/timestamps.js +1 -0
- package/dist/lib/types.js +1 -0
- package/dist/lib/unset_cookie.js +1 -0
- package/dist/lib/wait.js +1 -0
- package/dist/test/track_function_call.js +1 -0
- package/increment_version.js +3 -0
- package/package.json +27 -44
- package/src/action/class.js +137 -0
- package/src/action/index.js +8 -0
- package/src/app/accounts/default_user_output_fields.js +10 -0
- package/src/app/accounts/delete_user.js +18 -0
- package/src/app/accounts/generate_account_session.js +11 -0
- package/src/app/accounts/generate_password_reset_token.js +16 -0
- package/src/app/accounts/get_browser_safe_user.js +29 -0
- package/src/app/accounts/has_login_token_expired.js +9 -0
- package/src/app/accounts/index.js +38 -0
- package/src/app/accounts/login.js +82 -0
- package/src/app/accounts/recover_password.js +58 -0
- package/src/app/accounts/reset_password.js +69 -0
- package/src/app/accounts/roles/add.js +7 -0
- package/src/app/accounts/roles/grant.js +7 -0
- package/src/app/accounts/roles/index.js +18 -0
- package/src/app/accounts/roles/list.js +7 -0
- package/src/app/accounts/roles/remove.js +7 -0
- package/src/app/accounts/roles/revoke.js +7 -0
- package/src/app/accounts/roles/user_has_role.js +7 -0
- package/src/app/accounts/send_email_verification.js +48 -0
- package/src/app/accounts/set_account_cookie.js +12 -0
- package/src/app/accounts/set_password.js +46 -0
- package/src/app/accounts/signup.js +158 -0
- package/src/app/accounts/unset_account_cookie.js +12 -0
- package/src/app/accounts/verify_email.js +32 -0
- package/src/app/api/accounts/authenticated.js +17 -0
- package/src/app/api/accounts/login.js +36 -0
- package/src/app/api/accounts/logout.js +20 -0
- package/src/app/api/accounts/recover_password.js +16 -0
- package/src/app/api/accounts/reset_password.js +24 -0
- package/src/app/api/accounts/signup.js +49 -0
- package/src/app/api/accounts/user.js +21 -0
- package/src/app/api/accounts/verify_email.js +11 -0
- package/src/app/api/format_api_error.js +10 -0
- package/src/app/api/get.js +119 -0
- package/src/app/api/get_api_context.js +27 -0
- package/src/app/api/get_api_for_data_functions.js +37 -0
- package/src/app/api/get_api_url_component.js +5 -0
- package/src/app/api/get_output.js +116 -0
- package/src/app/api/get_value_from_object.js +8 -0
- package/src/app/api/handle_api_error.js +28 -0
- package/src/app/api/input_validators.js +227 -0
- package/src/app/api/is_array_path.js +6 -0
- package/src/app/api/push/health.js +17 -0
- package/src/app/api/register_getters.js +57 -0
- package/src/app/api/register_setters.js +55 -0
- package/src/app/api/sanitize_api_response.js +35 -0
- package/src/app/api/set.js +119 -0
- package/src/app/api/test/accounts/delete.js +8 -0
- package/src/app/api/test/accounts/signup.js +50 -0
- package/src/app/api/test/bootstrap.js +39 -0
- package/src/app/api/test/process.js +7 -0
- package/src/app/api/test/queues.js +25 -0
- package/src/app/api/validate_input.js +130 -0
- package/src/app/api/validate_session.js +20 -0
- package/src/app/api/validate_type.js +24 -0
- package/src/app/browser/hmr_client.js +196 -0
- package/src/app/browser/process_polyfill.js +11 -0
- package/src/app/cron_jobs/register.js +29 -0
- package/src/app/databases/database_type_map.js +6 -0
- package/src/app/databases/get_target_database_connection.js +25 -0
- package/{dist/app/databases/mongodb/availableQueryParameters.js → src/app/databases/mongodb/available_query_parameters.js} +3 -4
- package/src/app/databases/mongodb/build_connection_string.js +30 -0
- package/src/app/databases/mongodb/build_query_parameters.js +17 -0
- package/src/app/databases/mongodb/connect.js +42 -0
- package/src/app/databases/mongodb/create_indexes.js +35 -0
- package/src/app/databases/postgresql/accounts/create_accounts_metadata_table_columns.js +18 -0
- package/src/app/databases/postgresql/connect.js +128 -0
- package/src/app/databases/postgresql/create_indexes.js +58 -0
- package/src/app/databases/postgresql/create_tables.js +70 -0
- package/src/app/databases/postgresql/handle_cleanup_queues.js +36 -0
- package/src/app/databases/postgresql/handle_cleanup_sessions.js +5 -0
- package/src/app/databases/queries/accounts.js +17 -0
- package/src/app/databases/queries/map.js +21 -0
- package/src/app/databases/queries/mongodb/accounts.js +360 -0
- package/src/app/databases/queries/mongodb/queues.js +164 -0
- package/src/app/databases/queries/mongodb/sessions.js +22 -0
- package/src/app/databases/queries/postgresql/accounts.js +379 -0
- package/src/app/databases/queries/postgresql/queues.js +294 -0
- package/src/app/databases/queries/postgresql/sessions.js +37 -0
- package/src/app/databases/queries/sessions.js +17 -0
- package/src/app/databases/register_database.js +30 -0
- package/src/app/databases/sql.js +63 -0
- package/src/app/email/send.js +108 -0
- package/src/app/email/validate_smtp_settings.js +53 -0
- package/src/app/fixture/index.js +50 -0
- package/src/app/generate_machine_id.js +26 -0
- package/src/app/generate_process_id.js +30 -0
- package/src/app/get_ssl_certificates.js +23 -0
- package/src/app/handle_process_errors.js +101 -0
- package/src/app/index.js +253 -0
- package/src/app/middleware/account.js +28 -0
- package/src/app/middleware/body_parser.js +18 -0
- package/src/app/middleware/build_error.js +18 -0
- package/src/app/middleware/built_in.js +76 -0
- package/src/app/middleware/context.js +34 -0
- package/src/app/middleware/cors.js +23 -0
- package/src/app/middleware/csp.js +54 -0
- package/src/app/middleware/generate_insecure_page.js +71 -0
- package/{dist/lib/generateErrorPage.js → src/app/middleware/generate_joystick_error_page.js} +25 -21
- package/src/app/middleware/hmr_client.js +12 -0
- package/src/app/middleware/insecure.js +22 -0
- package/src/app/middleware/process_browser_polyfill.js +12 -0
- package/src/app/middleware/render/get_url.js +15 -0
- package/src/app/middleware/render/index.js +93 -0
- package/src/app/middleware/request_methods.js +21 -0
- package/src/app/middleware/session.js +31 -0
- package/src/app/push_logs.js +44 -0
- package/src/app/queues/index.js +268 -0
- package/src/app/register_app_options.js +7 -0
- package/src/app/routes/register_route_from_function.js +10 -0
- package/src/app/routes/register_route_from_object.js +34 -0
- package/src/app/routes/supported_http_methods.js +9 -0
- package/src/app/settings/load.js +33 -0
- package/src/app/ssr/index.js +133 -0
- package/src/app/ssr/set_base_attributes_in_html.js +43 -0
- package/src/app/ssr/set_head_tags_in_html.js +104 -0
- package/src/app/start_express.js +50 -0
- package/src/app/start_node_as_cluster.js +30 -0
- package/src/app/uploaders/local_upload_progress_middleware.js +24 -0
- package/src/app/uploaders/register.js +169 -0
- package/src/app/uploaders/run_upload.js +136 -0
- package/src/app/uploaders/validate_options.js +74 -0
- package/src/app/uploaders/validate_uploads.js +127 -0
- package/src/app/websockets/emit_event.js +14 -0
- package/src/app/websockets/index.js +16 -0
- package/src/app/websockets/register.js +175 -0
- package/src/index.js +81 -0
- package/{dist/lib/camelPascalToSnake.js → src/lib/camel_pascal_to_snake.js} +3 -4
- package/src/lib/constants.js +21 -0
- package/src/lib/dynamic_import.js +8 -0
- package/src/lib/escape_html.js +9 -0
- package/src/lib/escape_key_value_pair.js +15 -0
- package/src/lib/float_to_decimal_place.js +5 -0
- package/src/lib/generate_id.js +15 -0
- package/src/lib/get_browser_safe_request.js +17 -0
- package/src/lib/get_joystick_build_path.js +22 -0
- package/src/lib/get_origin.js +7 -0
- package/src/lib/get_platform_safe_path.js +8 -0
- package/src/lib/get_sanitized_context.js +51 -0
- package/src/lib/get_translations.js +109 -0
- package/src/lib/hash_string.js +7 -0
- package/src/lib/is_valid_json.js +10 -0
- package/src/lib/log.js +42 -0
- package/src/lib/node_path_polyfills.js +23 -0
- package/src/lib/parse_json.js +9 -0
- package/src/lib/path_exists.js +12 -0
- package/src/lib/rainbow_road.js +7 -0
- package/src/lib/serialize_query_parameters.js +7 -0
- package/src/lib/set_cookie.js +16 -0
- package/src/lib/string_to_slug.js +14 -0
- package/src/lib/timestamps.js +48 -0
- package/src/lib/types.js +59 -0
- package/src/lib/unset_cookie.js +11 -0
- package/src/lib/wait.js +9 -0
- package/src/test/track_function_call.js +16 -0
- package/README.md +0 -8
- package/_package.json +0 -63
- package/canary.js +0 -12
- package/dist/api/get.js +0 -29
- package/dist/api/getOrigin.js +0 -6
- package/dist/api/index.js +0 -9
- package/dist/api/set.js +0 -29
- package/dist/app/accounts/defaultUserOutputFields.js +0 -9
- package/dist/app/accounts/generateResetToken.js +0 -28
- package/dist/app/accounts/generateSession.js +0 -15
- package/dist/app/accounts/getBrowserSafeUser.js +0 -24
- package/dist/app/accounts/hasLoginTokenExpired.js +0 -17
- package/dist/app/accounts/hashString.js +0 -7
- package/dist/app/accounts/recoverPassword.js +0 -30
- package/dist/app/accounts/resetPassword.js +0 -73
- package/dist/app/accounts/roles/userHasRole.js +0 -7
- package/dist/app/accounts/runUserQuery.js +0 -15
- package/dist/app/accounts/sendEmailVerification.js +0 -65
- package/dist/app/accounts/setAuthenticationCookie.js +0 -11
- package/dist/app/accounts/setPassword.js +0 -45
- package/dist/app/accounts/unsetAuthenticationCookie.js +0 -11
- package/dist/app/accounts/verifyEmail.js +0 -46
- package/dist/app/databases/getTargetDatabase.js +0 -10
- package/dist/app/databases/getTargetDatabaseConnection.js +0 -19
- package/dist/app/databases/getTargetDatabaseProvider.js +0 -10
- package/dist/app/databases/mongodb/buildConnectionString.js +0 -22
- package/dist/app/databases/mongodb/buildQueryParameters.js +0 -14
- package/dist/app/databases/mongodb/index.js +0 -40
- package/dist/app/databases/mongodb/queries/accounts.js +0 -266
- package/dist/app/databases/mongodb/queries/queues.js +0 -111
- package/dist/app/databases/postgresql/addColumnToTable.js +0 -6
- package/dist/app/databases/postgresql/createAccountsIndexes.js +0 -21
- package/dist/app/databases/postgresql/createAccountsTables.js +0 -39
- package/dist/app/databases/postgresql/createDatabase.js +0 -0
- package/dist/app/databases/postgresql/index.js +0 -55
- package/dist/app/databases/postgresql/queries/accounts.js +0 -186
- package/dist/app/databases/postgresql/queries/queues.js +0 -211
- package/dist/app/databases/queryMap.js +0 -17
- package/dist/app/databases/typesMap.js +0 -7
- package/dist/app/getAPIContext.js +0 -25
- package/dist/app/getAPIURLComponent.js +0 -6
- package/dist/app/getBrowserSafeRequest.js +0 -14
- package/dist/app/getOutput.js +0 -74
- package/dist/app/handleProcessErrors.js +0 -73
- package/dist/app/initExpress.js +0 -41
- package/dist/app/middleware/bodyParser.js +0 -16
- package/dist/app/middleware/hmr/client.js +0 -113
- package/dist/app/middleware/index.js +0 -89
- package/dist/app/middleware/render.js +0 -213
- package/dist/app/middleware/requestMethods.js +0 -19
- package/dist/app/registerGetters.js +0 -45
- package/dist/app/registerSetters.js +0 -45
- package/dist/app/runGetter.js +0 -103
- package/dist/app/runSetter.js +0 -103
- package/dist/app/runUploader.js +0 -143
- package/dist/app/sanitizeAPIResponse.js +0 -27
- package/dist/app/utils/process.js +0 -193
- package/dist/app/validateSession.js +0 -19
- package/dist/app/validateUploaderOptions.js +0 -53
- package/dist/app/validateUploads.js +0 -102
- package/dist/email/render.js +0 -50
- package/dist/email/send.js +0 -55
- package/dist/email/templates/base.css +0 -194
- package/dist/email/templates/base.html +0 -28
- package/dist/email/templates/reset-password.js +0 -13
- package/dist/email/validateSMTPSettings.js +0 -27
- package/dist/lib/escapeHTML.js +0 -9
- package/dist/lib/escapeKeyValuePair.js +0 -13
- package/dist/lib/formatAPIError.js +0 -12
- package/dist/lib/formatErrorString.js +0 -8
- package/dist/lib/generateCookie.js +0 -14
- package/dist/lib/generateId.js +0 -13
- package/dist/lib/generateMachineId.js +0 -15
- package/dist/lib/getBuildPath.js +0 -10
- package/dist/lib/getErrorObject.js +0 -9
- package/dist/lib/getPlatformSafeFilePath.js +0 -8
- package/dist/lib/getPlatformSafePath.js +0 -8
- package/dist/lib/getSSLCertificates.js +0 -19
- package/dist/lib/isValidHTTPMethod.js +0 -7
- package/dist/lib/isValidJSONString.js +0 -11
- package/dist/lib/nodeUrlPolyfills.js +0 -14
- package/dist/lib/objectToSQLKeysString.js +0 -18
- package/dist/lib/objectToSQLValuesString.js +0 -16
- package/dist/lib/obscenedb/debounce.js +0 -12
- package/dist/lib/obscenedb/index.js +0 -61
- package/dist/lib/parseDatabasesFromEnvironment.js +0 -9
- package/dist/lib/rainbowRoad.js +0 -7
- package/dist/lib/readDirectory.js +0 -24
- package/dist/lib/replaceBackslashesWithForwardSlashes.js +0 -8
- package/dist/lib/replaceFileProtocol.js +0 -8
- package/dist/lib/replaceForwardSlashesWithBackslashes.js +0 -8
- package/dist/lib/serializeQueryParameters.js +0 -8
- package/dist/lib/serverAvailable.js +0 -0
- package/dist/lib/setCookie.js +0 -16
- package/dist/lib/supportedHTTPMethods.js +0 -4
- package/dist/lib/unsetCookie.js +0 -13
- package/dist/push/logs/index.js +0 -55
- package/dist/settings/index.js +0 -5
- package/dist/settings/load.js +0 -30
- package/dist/ssr/compileCSS.js +0 -85
- package/dist/ssr/findComponentInTree.js +0 -29
- package/dist/ssr/formatCSS.js +0 -6
- package/dist/ssr/getCSSFromTree.js +0 -33
- package/dist/ssr/index.js +0 -441
- package/dist/ssr/replaceWhenTags.js +0 -37
- package/dist/ssr/setHeadTagsInHTML.js +0 -84
- package/dist/validation/index.js +0 -10
- package/dist/validation/index.test.js +0 -463
- package/dist/validation/inputWithSchema/index.js +0 -105
- package/dist/validation/lib/constants.js +0 -162
- package/dist/validation/lib/getValueFromObject.js +0 -12
- package/dist/validation/lib/getValueFromObject.test.js +0 -7
- package/dist/validation/lib/isArrayPath.js +0 -6
- package/dist/validation/lib/throwError.js +0 -6
- package/dist/validation/lib/typeValidators.js +0 -38
- package/dist/validation/lib/validateType.js +0 -33
- package/dist/validation/schema/index.js +0 -44
- package/dist/websockets/emitWebsocketEvent.js +0 -12
- package/dist/websockets/index.js +0 -12
- 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,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
|
-
};
|