diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e359684 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ + +Backend/.php-cs-fixer.cache diff --git a/Backend/.php-cs-fixer.cache b/Backend/.php-cs-fixer.cache index 48750f7..fec2eeb 100644 --- a/Backend/.php-cs-fixer.cache +++ b/Backend/.php-cs-fixer.cache @@ -1 +1 @@ -{"php":"8.2.12","version":"3.64.0:v3.64.0#58dd9c931c785a79739310aef5178928305ffa67","indent":" ","lineEnding":"\n","rules":{"no_whitespace_before_comma_in_array":true,"array_indentation":true,"trim_array_spaces":true,"whitespace_after_comma_in_array":true,"array_syntax":{"syntax":"short"},"php_unit_method_casing":true,"function_to_constant":true,"explicit_indirect_variable":true,"single_class_element_per_statement":{"elements":["const","property"]},"new_with_parentheses":true,"class_definition":{"single_line":true},"standardize_increment":true,"self_accessor":true,"magic_constant_casing":true,"no_useless_else":true,"ordered_class_elements":{"order":["use_trait","case","constant_public","constant_protected","constant_private","property_public","property_protected","property_private","construct","destruct","magic","phpunit","property_public_static","method_public_static","method_public","property_protected_static","method_protected_static","method_protected","property_private_static","method_private_static","method_private"]},"no_trailing_whitespace_in_comment":true,"phpdoc_trim_consecutive_blank_line_separation":true,"phpdoc_trim":true,"no_empty_phpdoc":true,"phpdoc_no_empty_return":true,"phpdoc_indent":true,"phpdoc_types":true,"phpdoc_return_self_reference":true,"phpdoc_var_without_name":true,"no_superfluous_phpdoc_tags":{"remove_inheritdoc":true,"allow_mixed":true},"php_unit_test_annotation":true,"php_unit_set_up_tear_down_visibility":true,"blank_line_after_opening_tag":true,"method_chaining_indentation":true,"concat_space":{"spacing":"one"},"binary_operator_spaces":{"operators":{"=>":"single_space","=":"single_space","&":"no_space"}},"single_trait_insert_per_statement":true,"no_blank_lines_after_class_opening":true,"no_singleline_whitespace_before_semicolons":true,"phpdoc_single_line_var_spacing":true,"no_leading_namespace_whitespace":true,"no_spaces_around_offset":true,"no_whitespace_in_blank_line":true,"return_type_declaration":true,"space_after_semicolon":true,"ternary_operator_spaces":true,"method_argument_space":true,"strict_comparison":true,"is_null":true,"strict_param":true,"no_unused_imports":true,"no_empty_statement":true,"no_unneeded_control_parentheses":true,"no_unneeded_braces":true,"declare_strict_types":true,"cast_spaces":{"space":"none"},"Blumilk\/double_quote":true,"void_return":true,"use_arrow_functions":true,"fully_qualified_strict_types":{"import_symbols":true},"ordered_imports":{"sort_algorithm":"alpha","imports_order":["class","function","const"]},"phpdoc_line_span":{"const":"single","property":"single"},"general_phpdoc_annotation_remove":{"annotations":["package","author"]},"no_extra_blank_lines":{"tokens":["attribute","break","case","continue","curly_brace_block","default","extra","parenthesis_brace_block","return","square_brace_block","switch","throw","use"]},"trailing_comma_in_multiline":{"elements":["arrays","parameters","arguments","match"]},"nullable_type_declaration_for_default_null_value":true,"PhpCsFixerCustomFixers\/constructor_empty_braces":true,"PhpCsFixerCustomFixers\/multiline_promoted_properties":true,"PhpCsFixerCustomFixers\/no_useless_comment":true,"PhpCsFixerCustomFixers\/phpdoc_array_style":true,"PhpCsFixerCustomFixers\/promoted_constructor_property":true,"PhpCsFixerCustomFixers\/single_space_after_statement":true,"PhpCsFixerCustomFixers\/single_space_before_statement":true,"PhpCsFixerCustomFixers\/stringable_interface":true,"visibility_required":true,"no_leading_import_slash":true,"lowercase_cast":true,"lowercase_static_reference":true,"compact_nullable_type_declaration":true,"declare_equal_normalize":true,"short_scalar_cast":true,"clean_namespace":true,"unary_operator_spaces":true,"class_attributes_separation":{"elements":{"property":"none","const":"none","method":"one","trait_import":"none","case":"none"}},"PhpCsFixerCustomFixers\/no_useless_parenthesis":true,"single_blank_line_at_eof":true,"Blumilk\/no_laravel_migrations_generated_comments":true,"PhpCsFixerCustomFixers\/commented_out_function":{"functions":["print_r","var_dump","var_export","dd"]},"PhpCsFixerCustomFixers\/no_commented_out_code":true,"PhpCsFixerCustomFixers\/no_php_storm_generated_comment":true,"PhpCsFixerCustomFixers\/phpdoc_no_incorrect_var_annotation":true,"PhpCsFixerCustomFixers\/phpdoc_no_superfluous_param":true,"yoda_style":{"equal":false,"identical":false,"less_and_greater":false},"object_operator_without_whitespace":true,"function_declaration":{"closure_function_spacing":"none","closure_fn_spacing":"none"},"single_line_after_imports":true,"single_line_comment_spacing":true,"blank_line_after_namespace":true,"simple_to_complex_string_variable":true,"no_empty_comment":true,"no_trailing_comma_in_singleline":true,"magic_method_casing":true,"native_function_casing":true,"lambda_not_used_import":true,"no_homoglyph_names":true,"assign_null_coalescing_to_coalesce_equal":true,"no_useless_nullsafe_operator":true,"no_useless_return":true,"simplified_null_return":true,"multiline_whitespace_before_semicolons":true,"line_ending":true,"statement_indentation":true,"blank_line_between_import_groups":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try","if","do","for","foreach","while"]},"no_multiple_statements_per_line":true,"blank_lines_before_namespace":true,"psr_autoloading":true,"type_declaration_spaces":true,"control_structure_braces":true,"control_structure_continuation_position":true,"braces_position":{"anonymous_functions_opening_brace":"same_line"},"lowercase_keywords":true,"no_multiline_whitespace_around_double_arrow":true,"Blumilk\/compact_empty_array":true,"Blumilk\/class_keyword_fixer":true,"Blumilk\/named_arguments":true,"no_blank_lines_after_phpdoc":true,"constant_case":true,"php_unit_attributes":true,"spaces_inside_parentheses":true},"hashes":{"storage\\framework\\views\\9bf0bf855bc13e16750e2a5e36744ca4.php":"e5844427b776eb699d5ec89f44d3e2ce","database\\migrations\\2024_10_16_105416_create_kebabs_table.php":"2a6935368dc3e59f1ad35e74d19acb4b","database\\migrations\\2024_10_16_110140_create_suggestions_table.php":"dcd28a096eb6ad324c7a7d79673a4e3f","database\\seeders\\DatabaseSeeder.php":"b82d88332bc59876a3e674a5fc2a8d8b","public\\index.php":"dd9420d1946e6f5ac53594066ed21bcd","resources\\views\\mail\\contactUsMail.blade.php":"2e5a0f145b80848cb5b1c643b0b6e2f2","resources\\views\\welcome.blade.php":"7c20c7ebc3218c403dea71117f69dfed","routes\\api.php":"52ec85f0a6cd9a3499e5d17728d7c104","routes\\channels.php":"69224ae3142ba715c9a88ab51ebb0f2a","routes\\console.php":"e8ec20fcf9db2c8ed133bd71f541959b","routes\\web.php":"e9b97e09a1af3d9e0ff688d87e147512","tests\\CreatesApplication.php":"547b076015f8c5a1bb558b7b1d3d8548","tests\\Feature\\ExampleTest.php":"cbc86ef604b670eff5077c52ba43cff3","tests\\TestCase.php":"b9ad5821823c481100f73431178caa71","tests\\Unit\\ExampleTest.php":"1892966e6e20f3cd936dcfa4ed7275eb","codestyle.php":"78106c01bb6c67815aad1f58ec44cd0d","config\\app.php":"9fc6583a7668465151943600476ea442","config\\auth.php":"a488b0d57431b546548feb34edccd48e","config\\broadcasting.php":"c72d877f6c2bc0726fb9a1e717fd62c8","config\\cache.php":"ef8901d79de3b0790253c5a96d0e4ca6","config\\cors.php":"6fcb0b17f2f7c50460588c995172acf7","app\\Http\\Middleware\\TrimStrings.php":"6fc714347e06b50092ab8ed32dde44a3","app\\Http\\Middleware\\TrustHosts.php":"296d5025e64924ad380db403db212e03","app\\Http\\Middleware\\TrustProxies.php":"6ef300cb0fa4760b0b78eeed4b562487","app\\Http\\Middleware\\ValidateSignature.php":"a3b8b6a39e865b98596215de1d2b1b49","app\\Http\\Middleware\\VerifyCsrfToken.php":"ec90d977fba72bf47b36209750f6c309","app\\Http\\Requests\\LoginRequest.php":"2e4b5eb1f7e96522fc6606563bc153c9","app\\Http\\Requests\\SignupRequest.php":"64d40c6fb14d7f0f4416f4fc65077af2","app\\Http\\Requests\\UserRequest.php":"9924fb264e27913626e84ac5caab2c2f","app\\Models\\User.php":"8e58a4ac95edb329538f5bfc27d9ee4f","app\\Providers\\AppServiceProvider.php":"1ec4db88d3552a5250b23a5730a20185","app\\Console\\Kernel.php":"f7036533db76cf5f2180e942e3a51ebb","app\\Exceptions\\Handler.php":"51a92074c25f79602e1d88bab27cc6f5","app\\Http\\Controllers\\AuthController.php":"8f1505c581c3fae595a22b8e5b1ef02d","app\\Http\\Controllers\\Controller.php":"3cd28b4b4ae4d9fa3300376350c2751c","app\\Http\\Controllers\\UserController.php":"1dd5a69833e88e3fec2c8d28564ed71d","app\\Http\\Kernel.php":"ac608ba6bc4e68cf52ad6f26c1c002bd","app\\Http\\Middleware\\Authenticate.php":"c5c9966ed056b0c30c346e4e1ed6de52","app\\Http\\Middleware\\EncryptCookies.php":"fba0599e278cebd030c54270cf855686","app\\Http\\Middleware\\PreventRequestsDuringMaintenance.php":"bc36f9173ef40b9ed9e334466863d3cd","app\\Http\\Middleware\\RedirectIfAuthenticated.php":"bbf6fd4f1eee7db7212ccf467071910c","config\\database.php":"59e8b95ff50e3af1234201287e03f44f","config\\filesystems.php":"0832e73395b006321f46a83ccedb3ccc","config\\hashing.php":"d00fd9ca9075c4ea6f6ad22ce52b3270","config\\logging.php":"555f0f96051df392fdf8eb228343fed7","config\\mail.php":"9eaf706909d67b21ba11906c18188479","config\\queue.php":"3602debf67f71c07e7448b9411146a5f","config\\sanctum.php":"a7d069d5340bf31bb697bff3fc71a969","config\\services.php":"58f64381ee639c666aa976be791e36e7","config\\session.php":"3e81cc78f6b54d08b7ffcaf100e6ce57","config\\view.php":"b06ef698da6be2f1214571bb4c4a311e","app\\Providers\\AuthServiceProvider.php":"9235162bfd5da878db7470e4c479451d","app\\Providers\\BroadcastServiceProvider.php":"06e096a7dbb308964951af17f6ea190c","app\\Providers\\EventServiceProvider.php":"b46c5ca9cef8dd7cb86250582c4dd6e0","app\\Providers\\RouteServiceProvider.php":"b178ac899e4b1c45d5672f07762590b8","bootstrap\\app.php":"5e869cd81ba78c305abc18d334c0cba2","bootstrap\\cache\\packages.php":"10b79dba6a80b7d2e2db7d4d0239f676","bootstrap\\cache\\services.php":"7f1948d3238688c7d2b954694882c3f4","database\\factories\\UserFactory.php":"529ff335b3146262e3d23374ed56a8bd","database\\migrations\\0001_01_01_000000_create_users_table.php":"e6563bc95e78a8c535ce12e4442eaaf8","database\\migrations\\2019_12_14_000001_create_personal_access_tokens_table.php":"56cb4a268545b0e74d68c8aced1f58e3","storage\\framework\\views\\967092ef3e1507558668863e9463f057.php":"71d1d2804f69c88121eb63e827f0de83","storage\\framework\\views\\f4aff3de51c6874079719f39e969bfb7.php":"2673d1d0efb6de66fc933b875221563e"}} \ No newline at end of file +{"php":"8.2.12","version":"3.64.0:v3.64.0#58dd9c931c785a79739310aef5178928305ffa67","indent":" ","lineEnding":"\n","rules":{"no_whitespace_before_comma_in_array":true,"array_indentation":true,"trim_array_spaces":true,"whitespace_after_comma_in_array":true,"array_syntax":{"syntax":"short"},"php_unit_method_casing":true,"function_to_constant":true,"explicit_indirect_variable":true,"single_class_element_per_statement":{"elements":["const","property"]},"new_with_parentheses":true,"class_definition":{"single_line":true},"standardize_increment":true,"self_accessor":true,"magic_constant_casing":true,"no_useless_else":true,"ordered_class_elements":{"order":["use_trait","case","constant_public","constant_protected","constant_private","property_public","property_protected","property_private","construct","destruct","magic","phpunit","property_public_static","method_public_static","method_public","property_protected_static","method_protected_static","method_protected","property_private_static","method_private_static","method_private"]},"no_trailing_whitespace_in_comment":true,"phpdoc_trim_consecutive_blank_line_separation":true,"phpdoc_trim":true,"no_empty_phpdoc":true,"phpdoc_no_empty_return":true,"phpdoc_indent":true,"phpdoc_types":true,"phpdoc_return_self_reference":true,"phpdoc_var_without_name":true,"no_superfluous_phpdoc_tags":{"remove_inheritdoc":true,"allow_mixed":true},"php_unit_test_annotation":true,"php_unit_set_up_tear_down_visibility":true,"blank_line_after_opening_tag":true,"method_chaining_indentation":true,"concat_space":{"spacing":"one"},"binary_operator_spaces":{"operators":{"=>":"single_space","=":"single_space","&":"no_space"}},"single_trait_insert_per_statement":true,"no_blank_lines_after_class_opening":true,"no_singleline_whitespace_before_semicolons":true,"phpdoc_single_line_var_spacing":true,"no_leading_namespace_whitespace":true,"no_spaces_around_offset":true,"no_whitespace_in_blank_line":true,"return_type_declaration":true,"space_after_semicolon":true,"ternary_operator_spaces":true,"method_argument_space":true,"strict_comparison":true,"is_null":true,"strict_param":true,"no_unused_imports":true,"no_empty_statement":true,"no_unneeded_control_parentheses":true,"no_unneeded_braces":true,"declare_strict_types":true,"cast_spaces":{"space":"none"},"Blumilk\/double_quote":true,"void_return":true,"use_arrow_functions":true,"fully_qualified_strict_types":{"import_symbols":true},"ordered_imports":{"sort_algorithm":"alpha","imports_order":["class","function","const"]},"phpdoc_line_span":{"const":"single","property":"single"},"general_phpdoc_annotation_remove":{"annotations":["package","author"]},"no_extra_blank_lines":{"tokens":["attribute","break","case","continue","curly_brace_block","default","extra","parenthesis_brace_block","return","square_brace_block","switch","throw","use"]},"trailing_comma_in_multiline":{"elements":["arrays","parameters","arguments","match"]},"nullable_type_declaration_for_default_null_value":true,"PhpCsFixerCustomFixers\/constructor_empty_braces":true,"PhpCsFixerCustomFixers\/multiline_promoted_properties":true,"PhpCsFixerCustomFixers\/no_useless_comment":true,"PhpCsFixerCustomFixers\/phpdoc_array_style":true,"PhpCsFixerCustomFixers\/promoted_constructor_property":true,"PhpCsFixerCustomFixers\/single_space_after_statement":true,"PhpCsFixerCustomFixers\/single_space_before_statement":true,"PhpCsFixerCustomFixers\/stringable_interface":true,"visibility_required":true,"no_leading_import_slash":true,"lowercase_cast":true,"lowercase_static_reference":true,"compact_nullable_type_declaration":true,"declare_equal_normalize":true,"short_scalar_cast":true,"clean_namespace":true,"unary_operator_spaces":true,"class_attributes_separation":{"elements":{"property":"none","const":"none","method":"one","trait_import":"none","case":"none"}},"PhpCsFixerCustomFixers\/no_useless_parenthesis":true,"single_blank_line_at_eof":true,"Blumilk\/no_laravel_migrations_generated_comments":true,"PhpCsFixerCustomFixers\/commented_out_function":{"functions":["print_r","var_dump","var_export","dd"]},"PhpCsFixerCustomFixers\/no_commented_out_code":true,"PhpCsFixerCustomFixers\/no_php_storm_generated_comment":true,"PhpCsFixerCustomFixers\/phpdoc_no_incorrect_var_annotation":true,"PhpCsFixerCustomFixers\/phpdoc_no_superfluous_param":true,"yoda_style":{"equal":false,"identical":false,"less_and_greater":false},"object_operator_without_whitespace":true,"function_declaration":{"closure_function_spacing":"none","closure_fn_spacing":"none"},"single_line_after_imports":true,"single_line_comment_spacing":true,"blank_line_after_namespace":true,"simple_to_complex_string_variable":true,"no_empty_comment":true,"no_trailing_comma_in_singleline":true,"magic_method_casing":true,"native_function_casing":true,"lambda_not_used_import":true,"no_homoglyph_names":true,"assign_null_coalescing_to_coalesce_equal":true,"no_useless_nullsafe_operator":true,"no_useless_return":true,"simplified_null_return":true,"multiline_whitespace_before_semicolons":true,"line_ending":true,"statement_indentation":true,"blank_line_between_import_groups":true,"blank_line_before_statement":{"statements":["break","continue","declare","return","throw","try","if","do","for","foreach","while"]},"no_multiple_statements_per_line":true,"blank_lines_before_namespace":true,"psr_autoloading":true,"type_declaration_spaces":true,"control_structure_braces":true,"control_structure_continuation_position":true,"braces_position":{"anonymous_functions_opening_brace":"same_line"},"lowercase_keywords":true,"no_multiline_whitespace_around_double_arrow":true,"Blumilk\/compact_empty_array":true,"Blumilk\/class_keyword_fixer":true,"Blumilk\/named_arguments":true,"no_blank_lines_after_phpdoc":true,"constant_case":true,"php_unit_attributes":true,"spaces_inside_parentheses":true},"hashes":{"storage\\framework\\views\\9bf0bf855bc13e16750e2a5e36744ca4.php":"e5844427b776eb699d5ec89f44d3e2ce","database\\migrations\\2024_10_16_105416_create_kebabs_table.php":"1e355493c4cc9272fb4c67c2e6ba96c4","database\\migrations\\2024_10_16_110140_create_suggestions_table.php":"dcd28a096eb6ad324c7a7d79673a4e3f","database\\seeders\\DatabaseSeeder.php":"b82d88332bc59876a3e674a5fc2a8d8b","public\\index.php":"dd9420d1946e6f5ac53594066ed21bcd","resources\\views\\mail\\contactUsMail.blade.php":"2e5a0f145b80848cb5b1c643b0b6e2f2","resources\\views\\welcome.blade.php":"7c20c7ebc3218c403dea71117f69dfed","routes\\api.php":"91da4672c7a81bfecd52f75776c26414","routes\\channels.php":"69224ae3142ba715c9a88ab51ebb0f2a","routes\\console.php":"e8ec20fcf9db2c8ed133bd71f541959b","routes\\web.php":"622624c7aa262186fec4dfff56aa46ed","tests\\CreatesApplication.php":"547b076015f8c5a1bb558b7b1d3d8548","tests\\Feature\\ExampleTest.php":"cbc86ef604b670eff5077c52ba43cff3","tests\\TestCase.php":"b9ad5821823c481100f73431178caa71","tests\\Unit\\ExampleTest.php":"1892966e6e20f3cd936dcfa4ed7275eb","codestyle.php":"78106c01bb6c67815aad1f58ec44cd0d","config\\app.php":"9fc6583a7668465151943600476ea442","config\\auth.php":"a488b0d57431b546548feb34edccd48e","config\\broadcasting.php":"c72d877f6c2bc0726fb9a1e717fd62c8","config\\cache.php":"ef8901d79de3b0790253c5a96d0e4ca6","config\\cors.php":"584b47b3b8a04d20e28ec711f88871b0","app\\Http\\Middleware\\TrimStrings.php":"6fc714347e06b50092ab8ed32dde44a3","app\\Http\\Middleware\\TrustHosts.php":"296d5025e64924ad380db403db212e03","app\\Http\\Middleware\\TrustProxies.php":"6ef300cb0fa4760b0b78eeed4b562487","app\\Http\\Middleware\\ValidateSignature.php":"a3b8b6a39e865b98596215de1d2b1b49","app\\Http\\Middleware\\VerifyCsrfToken.php":"ec90d977fba72bf47b36209750f6c309","app\\Http\\Requests\\LoginRequest.php":"2e4b5eb1f7e96522fc6606563bc153c9","app\\Http\\Requests\\SignupRequest.php":"64d40c6fb14d7f0f4416f4fc65077af2","app\\Http\\Requests\\UserRequest.php":"9924fb264e27913626e84ac5caab2c2f","app\\Models\\User.php":"804b578c498bc1a16659ba94c7e4ae4b","app\\Providers\\AppServiceProvider.php":"1ec4db88d3552a5250b23a5730a20185","app\\Console\\Kernel.php":"f7036533db76cf5f2180e942e3a51ebb","app\\Exceptions\\Handler.php":"51a92074c25f79602e1d88bab27cc6f5","app\\Http\\Controllers\\AuthController.php":"da2847a9a182eaec1d125b2d91bc0d42","app\\Http\\Controllers\\Controller.php":"3cd28b4b4ae4d9fa3300376350c2751c","app\\Http\\Controllers\\UserController.php":"a435c4286a2532f277def2023df7c315","app\\Http\\Kernel.php":"dd78ef286f08e779169ef79df8cbd150","app\\Http\\Middleware\\Authenticate.php":"c5c9966ed056b0c30c346e4e1ed6de52","app\\Http\\Middleware\\EncryptCookies.php":"fba0599e278cebd030c54270cf855686","app\\Http\\Middleware\\PreventRequestsDuringMaintenance.php":"bc36f9173ef40b9ed9e334466863d3cd","app\\Http\\Middleware\\RedirectIfAuthenticated.php":"bbf6fd4f1eee7db7212ccf467071910c","config\\database.php":"40d5122ad3be69b8da2be286baeb8a52","config\\filesystems.php":"0832e73395b006321f46a83ccedb3ccc","config\\hashing.php":"d00fd9ca9075c4ea6f6ad22ce52b3270","config\\logging.php":"555f0f96051df392fdf8eb228343fed7","config\\mail.php":"9eaf706909d67b21ba11906c18188479","config\\queue.php":"3602debf67f71c07e7448b9411146a5f","config\\sanctum.php":"a7d069d5340bf31bb697bff3fc71a969","config\\services.php":"58f64381ee639c666aa976be791e36e7","config\\session.php":"3e81cc78f6b54d08b7ffcaf100e6ce57","config\\view.php":"b06ef698da6be2f1214571bb4c4a311e","app\\Providers\\AuthServiceProvider.php":"9235162bfd5da878db7470e4c479451d","app\\Providers\\BroadcastServiceProvider.php":"06e096a7dbb308964951af17f6ea190c","app\\Providers\\EventServiceProvider.php":"b46c5ca9cef8dd7cb86250582c4dd6e0","app\\Providers\\RouteServiceProvider.php":"b178ac899e4b1c45d5672f07762590b8","bootstrap\\app.php":"5e869cd81ba78c305abc18d334c0cba2","bootstrap\\cache\\packages.php":"4729b9b7c89ffdcef02efc391e29d3e9","bootstrap\\cache\\services.php":"a7ef73ba590bbdc8deb767a8f3d6aab3","database\\factories\\UserFactory.php":"529ff335b3146262e3d23374ed56a8bd","database\\migrations\\0001_01_01_000000_create_users_table.php":"e6563bc95e78a8c535ce12e4442eaaf8","database\\migrations\\2019_12_14_000001_create_personal_access_tokens_table.php":"56cb4a268545b0e74d68c8aced1f58e3","storage\\framework\\views\\967092ef3e1507558668863e9463f057.php":"71d1d2804f69c88121eb63e827f0de83","storage\\framework\\views\\f4aff3de51c6874079719f39e969bfb7.php":"2673d1d0efb6de66fc933b875221563e","app\\Models\\Kebab.php":"fcdf01f9d18b9a53ee7c6be0d604c799","app\\Http\\Controllers\\KebabController.php":"5071168a7fd3eeaf2c1d90c4fcc627c3","app\\Http\\Middleware\\CheckAdmin.php":"bfbf273b33fdacb20f8577ad9748a8fc","app\\Http\\Requests\\ChangeEmailRequest.php":"70916b29c6e0aadd102159dc4cad920d","app\\Http\\Requests\\ChangeNameRequest.php":"5cb6eef366a99592a09d7b3ee1f98517","app\\Http\\Requests\\ChangePasswordRequest.php":"65da5c250cf407ebdead62c0a202d4e1","app\\Http\\Requests\\FavoriteKebabRequest.php":"5ce9e715b9cc3209e32cf9cd88b993d6","app\\Http\\Requests\\KebabRequests\\KebabRequest.php":"a2f7670c140e6b02e608b748e0a44cb1","app\\Http\\Controllers\\SuggestionsController.php":"443647e36b95f95002de7e0ca9e2e20d","app\\Models\\Suggestions.php":"dc615d61c486362961ac6b5759735a7c","app\\Http\\Requests\\UserRequests\\UserRequest.php":"e93fdf35b2e521d2b02a23664ded82e3","app\\Http\\Requests\\SuggestionRequest.php":"28832169adb92ccb25e8c62e090f04e5","app\\Http\\Requests\\UserRequests\\ChangeEmailRequest.php":"96acb58486b9bfc2d5d0e871f97d7e07","app\\Http\\Requests\\UserRequests\\ChangeNameRequest.php":"3de895405d2aba7f262fcf39fe48c16b","app\\Http\\Requests\\UserRequests\\ChangePasswordRequest.php":"55f7d4be9b989cf3781dc91a3c0c1dff","app\\Http\\Requests\\UserRequests\\FavoriteKebabRequest.php":"c9c04478f6be56243a4db1ea2a0e4fc4","tests\\Feature\\AuthControllerTest.php":"60def14d559fbc5969ca0dd43bba1020","app\\Http\\Controllers\\GoogleScraperController.php":"de8ae9535538ef7664559b2e3cebb12d","app\\Services\\GoogleScraper.php":"f6e5adad52184bce6d8f064868b4f3be","config\\l5-swagger.php":"933a221eeb784e9243d4c94531a8d40a","app\\Http\\Requests\\UserRequests\\ChangeUserRoleRequest.php":"0ec918f5e4c570ba8fd9db66d1de610a","resources\\views\\vendor\\l5-swagger\\index.blade.php":"5c07239178c67784c1ce65d0261c3cfb","storage\\framework\\views\\3f4a2a5117a095683b4bd4f4817cdd7e.php":"b0d3aaf049ae81da1627ad4a870c9408","app\\Http\\Requests\\KebabRequests\\KebabIsChainstoreRequest.php":"65ebf250f36e3a274d22c16b4dd791b4","app\\Http\\Requests\\KebabRequests\\KebabIsCraftedRequest.php":"381b102d9c9580c2d513531a7467dd3b","app\\Http\\Requests\\KebabRequests\\KebabIsPremisesRequest.php":"f8767ea5fa7565e29386cfa3cb324b56","app\\Http\\Requests\\KebabRequests\\KebabMeatRequest.php":"b9c006d775847fae4d10429f47342a93","app\\Http\\Requests\\KebabRequests\\KebabNameRequest.php":"0da0b3a32ef0c82df40f2e8f6c1c0fee","app\\Http\\Requests\\KebabRequests\\KebabOpeningHourRequest.php":"ab573d1cdc8dc61a5a35c3b4ff0c9012","app\\Http\\Requests\\KebabRequests\\KebabOpeningYearRequest.php":"bb638d93a94e75490ebfabf248cb69b9","app\\Http\\Requests\\KebabRequests\\KebabOrderingOptionRequest.php":"ed527e4eb517950688b22ad6303d9e8c","app\\Http\\Requests\\KebabRequests\\KebabPageRequest.php":"014b90a00819d4440cb3e749e28f2eb3","app\\Http\\Requests\\KebabRequests\\KebabRemoveOpeningHourRequest.php":"00b961233ee7a2d01eacbeeb1fd64aeb","storage\\framework\\views\\6c885b58304fbc4e2aec93b32e21e7d9.php":"b19e8caccdfc6bd8b1e7e830f5e1d73a","storage\\framework\\views\\7ad1c4a57fd20667e171684a776a6a4b.php":"821b94ab7733ebb96e50e1ad1433d626","storage\\framework\\views\\8db7a9c997446847b068860e72051f3f.php":"8edde35264218afe04804880f3021cb9","storage\\framework\\views\\92c61c37d62d309b2261696533623f0e.php":"feedb36e617bd932aee32f5245a5785d","storage\\framework\\views\\ab38df06e69f67dc01873ae179e9d8ac.php":"00b4d8ea20981e02df7d3a8b4ebc0069","storage\\framework\\views\\e5e9ac36fad87cbd2f3251ed9abe7296.php":"a1b239be85267d69c41a467c0f831f77","storage\\framework\\views\\06147b58b27e243b8a91117bcb2e7c76.php":"df03083fa4992a953a9adb33f86db636","storage\\framework\\views\\09d4d7244749dd8974944448cf2bf96f.php":"eb8405a6435c6d8e056d02342db1778f","storage\\framework\\views\\39b6db6ec59539b2c5045f87bed7448a.php":"1140a46aa1a4c1796bd0bf02b1131dbb","storage\\framework\\views\\533535455bececf37749798130da41bd.php":"74d47637030959bfde388944831898d9","storage\\framework\\views\\536ae9e7a221fbfbb57822904ba3aacd.php":"216b289ad08ab01d8a8753234c53796f","storage\\framework\\views\\5ed5e5b51be7b3cfa9851b0e60f8238d.php":"9993f6fb33357d32079c929de0a6c877","storage\\framework\\views\\643935d0d2475a73239c913510676f7a.php":"779fa58ac9e55d40597198c9a67c24fd","storage\\framework\\views\\6468ca2f48adc9c1058f7b5eba9629cd.php":"3cbe9f7c4e9bc14ec04ad4115e6dfcd8","config\\scribe.php":"b6c71b001f3da9b58b724528d6f00970","app\\Http\\Controllers\\KebabScraperController.php":"fa440530a00c1119560417d1e0d6fa00","app\\Http\\Requests\\KebabRequests\\KebabAddressRequest.php":"3fc80132ea0e01f7c599142a0713a32b","app\\Http\\Requests\\KebabRequests\\KebabClosingYearRequest.php":"a6c42ed5a33b0ca0149967228e4be2a9","app\\Http\\Requests\\KebabRequests\\KebabCommentRequest.php":"0315ce8a66bdb7e4d6923e5054f5ec7a","app\\Http\\Requests\\KebabRequests\\KebabCoordinatesRequest.php":"5f338ef5344cb8ed68e436f259db9eaa","app\\Http\\Requests\\KebabRequests\\KebabRemoveOrderingOptionRequest.php":"6be6e425d50113dbe68d31d43f3dceec","app\\Http\\Requests\\KebabRequests\\KebabStatusRequest.php":"6a95b56abfed7dcff01626258dff65e8","app\\Http\\Requests\\KebabRequests\\SauceKebabRequest.php":"a6db49ff8865a674e765f0375afdf96e","app\\Services\\PyszneScraper.php":"21286caf798b637455a2996ac278d24c","database\\seeders\\KebabSeeder.php":"165fb3475df8388da617cd92d5aa292d"}} \ No newline at end of file diff --git a/Backend/.scribe/.filehashes b/Backend/.scribe/.filehashes new file mode 100644 index 0000000..08fa645 --- /dev/null +++ b/Backend/.scribe/.filehashes @@ -0,0 +1,4 @@ +# GENERATED. YOU SHOULDN'T MODIFY OR DELETE THIS FILE. +# Scribe uses this file to know when you change something manually in your docs. +.scribe/intro.md=2d432f59f3d780ec094e1b4b0b024f33 +.scribe/auth.md=7cec6a1c5e4916daf2548212cee2ff83 \ No newline at end of file diff --git a/Backend/.scribe/auth.md b/Backend/.scribe/auth.md new file mode 100644 index 0000000..bc31d5f --- /dev/null +++ b/Backend/.scribe/auth.md @@ -0,0 +1,7 @@ +# Authenticating requests + +To authenticate requests, include an **`Authorization`** header with the value **`"Bearer {YOUR_AUTH_KEY}"`**. + +All authenticated endpoints are marked with a `requires authentication` badge in the documentation below. + +You can retrieve your token by visiting your dashboard and clicking Generate API token. diff --git a/Backend/.scribe/endpoints.cache/00.yaml b/Backend/.scribe/endpoints.cache/00.yaml new file mode 100644 index 0000000..568a33d --- /dev/null +++ b/Backend/.scribe/endpoints.cache/00.yaml @@ -0,0 +1,150 @@ +## Autogenerated by Scribe. DO NOT MODIFY. + +name: Auth +description: '*' +endpoints: + - + httpMethods: + - POST + uri: api/register + metadata: + groupName: Auth + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + name: + name: name + description: '' + required: true + example: aspernatur + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + email: + name: email + description: 'Must be a valid email address.' + required: true + example: jamison69@example.org + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + password: + name: password + description: '' + required: true + example: ut + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + name: aspernatur + email: jamison69@example.org + password: ut + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/login + metadata: + groupName: Auth + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + email: + name: email + description: 'Must be a valid email address. The email of an existing record in the users table.' + required: true + example: kamryn22@example.com + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + password: + name: password + description: '' + required: true + example: at + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + email: kamryn22@example.com + password: at + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/logout + metadata: + groupName: Auth + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] diff --git a/Backend/.scribe/endpoints.cache/01.yaml b/Backend/.scribe/endpoints.cache/01.yaml new file mode 100644 index 0000000..76a1d49 --- /dev/null +++ b/Backend/.scribe/endpoints.cache/01.yaml @@ -0,0 +1,1525 @@ +## Autogenerated by Scribe. DO NOT MODIFY. + +name: Kebab +description: '*' +endpoints: + - + httpMethods: + - GET + uri: api/kebabs + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 404 + content: |- + { + "message": "The route api/kebabs could not be found." + } + headers: + cache-control: 'no-cache, private' + content-type: application/json + vary: Origin + description: null + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/kebabs/{kebabId}/comments' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: unde + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: unde + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + id_user: + name: id_user + description: '' + required: true + example: 7 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + comment: + name: comment + description: '' + required: true + example: itaque + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + id_user: 7 + comment: itaque + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/kebabs/{kebabId}/comments' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: voluptatem + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: voluptatem + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + id_user: + name: id_user + description: '' + required: true + example: 18 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + comment: + name: comment + description: '' + required: true + example: deserunt + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + id_user: 18 + comment: deserunt + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/addKebab + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + logo: + name: logo + description: '' + required: true + example: ut + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + name: + name: name + description: '' + required: true + example: perferendis + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + address: + name: address + description: '' + required: true + example: vel + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + coordinates: + name: coordinates + description: '' + required: true + example: nisi + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + sauces: + name: sauces + description: '' + required: true + example: at + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + meats: + name: meats + description: '' + required: true + example: ullam + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + status: + name: status + description: '' + required: true + example: perferendis + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + opening_hours: + name: opening_hours + description: '' + required: true + example: perspiciatis + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + opening_year: + name: opening_year + description: '' + required: true + example: deleniti + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + closing_year: + name: closing_year + description: '' + required: true + example: accusantium + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + is_crafted: + name: is_crafted + description: '' + required: true + example: placeat + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + is_premises: + name: is_premises + description: '' + required: true + example: minus + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + is_chainstore: + name: is_chainstore + description: '' + required: true + example: aut + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + ordering_options: + name: ordering_options + description: '' + required: true + example: voluptas + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + logo: ut + name: perferendis + address: vel + coordinates: nisi + sauces: at + meats: ullam + status: perferendis + opening_hours: perspiciatis + opening_year: deleniti + closing_year: accusantium + is_crafted: placeat + is_premises: minus + is_chainstore: aut + ordering_options: voluptas + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/kebabs/{id}' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the kebab.' + required: true + example: adipisci + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: adipisci + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/kebabs/{kebabId}/logo' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: quia + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: quia + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/kebabs/{kebabId}/name' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: consequuntur + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: consequuntur + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + name: + name: name + description: '' + required: true + example: quidem + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + name: quidem + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/kebabs/{kebabId}/address' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: ab + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: ab + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + address: + name: address + description: 'Must not be greater than 255 characters.' + required: true + example: huxswcermiukedcsywurinn + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + address: huxswcermiukedcsywurinn + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/kebabs/{kebabId}/coordinates' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: eaque + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: eaque + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + coordinates: + name: coordinates + description: '' + required: true + example: [] + type: object + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + coordinates: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/kebabs/{kebabId}/sauce' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: laboriosam + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: laboriosam + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + sauce: + name: sauce + description: '' + required: true + example: nostrum + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + sauce: nostrum + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/kebabs/{kebabId}/sauce' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: necessitatibus + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: necessitatibus + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + sauce: + name: sauce + description: '' + required: true + example: dolore + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + sauce: dolore + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/kebabs/{kebabId}/meat' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: facere + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: facere + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + meat: + name: meat + description: '' + required: true + example: voluptatibus + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + meat: voluptatibus + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/kebabs/{kebabId}/meat' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: ratione + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: ratione + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + meat: + name: meat + description: '' + required: true + example: eos + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + meat: eos + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/kebabs/{kebabId}/status' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: quas + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: quas + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + status: + name: status + description: '' + required: true + example: exists + type: string + enumValues: + - exists + - closed + - planned + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + status: exists + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/kebabs/{kebabId}/opening-hours' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: est + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: est + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + day: + name: day + description: '' + required: true + example: saturday + type: string + enumValues: + - monday + - tuesday + - wednesday + - thursday + - friday + - saturday + - sunday + exampleWasSpecified: false + nullable: false + custom: [] + hours: + name: hours + description: '' + required: true + example: quis + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + day: saturday + hours: quis + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/kebabs/{kebabId}/opening-hours' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: omnis + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: omnis + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + day: + name: day + description: '' + required: true + example: monday + type: string + enumValues: + - monday + - tuesday + - wednesday + - thursday + - friday + - saturday + - sunday + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + day: monday + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/kebabs/{kebabId}/opening-hours' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: qui + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: qui + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + day: + name: day + description: '' + required: true + example: sunday + type: string + enumValues: + - monday + - tuesday + - wednesday + - thursday + - friday + - saturday + - sunday + exampleWasSpecified: false + nullable: false + custom: [] + hours: + name: hours + description: '' + required: true + example: explicabo + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + day: sunday + hours: explicabo + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/kebabs/{kebabId}/opening-year' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: recusandae + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: recusandae + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + opening_year: + name: opening_year + description: 'Must be 4 digits.' + required: false + example: '6167' + type: string + enumValues: [] + exampleWasSpecified: false + nullable: true + custom: [] + cleanBodyParameters: + opening_year: '6167' + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/kebabs/{kebabId}/closing-year' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: voluptatem + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: voluptatem + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + closing_year: + name: closing_year + description: 'Must be 4 digits.' + required: false + example: '2621' + type: string + enumValues: [] + exampleWasSpecified: false + nullable: true + custom: [] + cleanBodyParameters: + closing_year: '2621' + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/kebabs/{kebabId}/is-crafted' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: vel + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: vel + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + is_crafted: + name: is_crafted + description: '' + required: false + example: true + type: boolean + enumValues: [] + exampleWasSpecified: false + nullable: true + custom: [] + cleanBodyParameters: + is_crafted: true + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/kebabs/{kebabId}/is-premises' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: laudantium + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: laudantium + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + is_premises: + name: is_premises + description: '' + required: false + example: false + type: boolean + enumValues: [] + exampleWasSpecified: false + nullable: true + custom: [] + cleanBodyParameters: + is_premises: false + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/kebabs/{kebabId}/is-chainstore' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: ea + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: ea + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + is_chainstore: + name: is_chainstore + description: '' + required: false + example: false + type: boolean + enumValues: [] + exampleWasSpecified: false + nullable: true + custom: [] + cleanBodyParameters: + is_chainstore: false + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/kebabs/{kebabId}/ordering-options' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: reprehenderit + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: reprehenderit + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + new_option: + name: new_option + description: '' + required: true + example: nesciunt + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + new_option: nesciunt + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/kebabs/{kebabId}/ordering-options' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: assumenda + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: assumenda + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + option_to_remove: + name: option_to_remove + description: '' + required: true + example: est + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + option_to_remove: est + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/kebabs/{kebabId}/pages' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: consectetur + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: consectetur + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + new_page: + name: new_page + description: '' + required: true + example: explicabo + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + new_page: explicabo + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/kebabs/{kebabId}/pages' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: ad + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: ad + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + page_to_remove: + name: page_to_remove + description: '' + required: true + example: corporis + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + page_to_remove: corporis + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] diff --git a/Backend/.scribe/endpoints.cache/02.yaml b/Backend/.scribe/endpoints.cache/02.yaml new file mode 100644 index 0000000..e02ba93 --- /dev/null +++ b/Backend/.scribe/endpoints.cache/02.yaml @@ -0,0 +1,47 @@ +## Autogenerated by Scribe. DO NOT MODIFY. + +name: KebabScraper +description: '*' +endpoints: + - + httpMethods: + - GET + uri: api/scrape-reviews + metadata: + groupName: KebabScraper + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 404 + content: |- + { + "message": "The route api/scrape-reviews could not be found." + } + headers: + cache-control: 'no-cache, private' + content-type: application/json + vary: Origin + description: null + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] diff --git a/Backend/.scribe/endpoints.cache/03.yaml b/Backend/.scribe/endpoints.cache/03.yaml new file mode 100644 index 0000000..1c84934 --- /dev/null +++ b/Backend/.scribe/endpoints.cache/03.yaml @@ -0,0 +1,569 @@ +## Autogenerated by Scribe. DO NOT MODIFY. + +name: Users +description: '*' +endpoints: + - + httpMethods: + - GET + uri: api/getCurrentUser + metadata: + groupName: Users + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 404 + content: |- + { + "message": "The route api/getCurrentUser could not be found." + } + headers: + cache-control: 'no-cache, private' + content-type: application/json + vary: Origin + description: null + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/fav/{id}' + metadata: + groupName: Users + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the fav.' + required: true + example: veritatis + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: veritatis + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 404 + content: |- + { + "message": "The route api/fav/veritatis could not be found." + } + headers: + cache-control: 'no-cache, private' + content-type: application/json + vary: Origin + description: null + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/addfav + metadata: + groupName: Users + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + user_id: + name: user_id + description: '' + required: true + example: eum + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + kebab_id: + name: kebab_id + description: '' + required: true + example: quia + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + user_id: eum + kebab_id: quia + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/remfav + metadata: + groupName: Users + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + user_id: + name: user_id + description: '' + required: true + example: quas + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + kebab_id: + name: kebab_id + description: '' + required: true + example: quia + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + user_id: quas + kebab_id: quia + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/changeName/{id}' + metadata: + groupName: Users + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the changeName.' + required: true + example: facilis + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: facilis + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + newName: + name: newName + description: '' + required: true + example: nobis + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + newName: nobis + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/changePassword/{id}' + metadata: + groupName: Users + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the changePassword.' + required: true + example: laborum + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: laborum + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + newPassword: + name: newPassword + description: '' + required: true + example: quas + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + confirmPassword: + name: confirmPassword + description: '' + required: true + example: rerum + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + newPassword: quas + confirmPassword: rerum + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/changeEmail/{id}' + metadata: + groupName: Users + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the changeEmail.' + required: true + example: commodi + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: commodi + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + newEmail: + name: newEmail + description: 'Must be a valid email address.' + required: true + example: shanie84@example.org + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + newEmail: shanie84@example.org + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/changeUserRole/{id}' + metadata: + groupName: Users + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the changeUserRole.' + required: true + example: atque + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: atque + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + isAdmin: + name: isAdmin + description: '' + required: true + example: false + type: boolean + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + isAdmin: false + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/deleteUser/{id}' + metadata: + groupName: Users + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the deleteUser.' + required: true + example: ut + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: ut + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/getAllUsers + metadata: + groupName: Users + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 404 + content: |- + { + "message": "The route api/getAllUsers could not be found." + } + headers: + cache-control: 'no-cache, private' + content-type: application/json + vary: Origin + description: null + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/addNewUser + metadata: + groupName: Users + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + name: + name: name + description: '' + required: true + example: ut + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + email: + name: email + description: 'Must be a valid email address.' + required: true + example: moconnell@example.com + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + password: + name: password + description: '' + required: true + example: est + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + name: ut + email: moconnell@example.com + password: est + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] diff --git a/Backend/.scribe/endpoints.cache/04.yaml b/Backend/.scribe/endpoints.cache/04.yaml new file mode 100644 index 0000000..f36a418 --- /dev/null +++ b/Backend/.scribe/endpoints.cache/04.yaml @@ -0,0 +1,140 @@ +## Autogenerated by Scribe. DO NOT MODIFY. + +name: Suggestions +description: '*' +endpoints: + - + httpMethods: + - POST + uri: api/suggestions + metadata: + groupName: Suggestions + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + user: + name: user + description: 'Must not be greater than 255 characters.' + required: true + example: yhyrnmamtgxprtslmownvg + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + contents: + name: contents + description: 'Must not be greater than 255 characters.' + required: true + example: vmtnljhahaj + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + user: yhyrnmamtgxprtslmownvg + contents: vmtnljhahaj + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/suggestions + metadata: + groupName: Suggestions + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 404 + content: |- + { + "message": "The route api/suggestions could not be found." + } + headers: + cache-control: 'no-cache, private' + content-type: application/json + vary: Origin + description: null + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/suggestions/{id}' + metadata: + groupName: Suggestions + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the suggestion.' + required: true + example: magni + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: magni + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] diff --git a/Backend/.scribe/endpoints.cache/05.yaml b/Backend/.scribe/endpoints.cache/05.yaml new file mode 100644 index 0000000..528ac50 --- /dev/null +++ b/Backend/.scribe/endpoints.cache/05.yaml @@ -0,0 +1,47 @@ +## Autogenerated by Scribe. DO NOT MODIFY. + +name: Endpoints +description: '' +endpoints: + - + httpMethods: + - GET + uri: api/documentation + metadata: + groupName: Endpoints + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 404 + content: |- + { + "message": "The route api/documentation could not be found." + } + headers: + cache-control: 'no-cache, private' + content-type: application/json + vary: Origin + description: null + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] diff --git a/Backend/.scribe/endpoints/00.yaml b/Backend/.scribe/endpoints/00.yaml new file mode 100644 index 0000000..cc0ec1a --- /dev/null +++ b/Backend/.scribe/endpoints/00.yaml @@ -0,0 +1,148 @@ +name: Auth +description: '*' +endpoints: + - + httpMethods: + - POST + uri: api/register + metadata: + groupName: Auth + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + name: + name: name + description: '' + required: true + example: aspernatur + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + email: + name: email + description: 'Must be a valid email address.' + required: true + example: jamison69@example.org + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + password: + name: password + description: '' + required: true + example: ut + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + name: aspernatur + email: jamison69@example.org + password: ut + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/login + metadata: + groupName: Auth + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + email: + name: email + description: 'Must be a valid email address. The email of an existing record in the users table.' + required: true + example: kamryn22@example.com + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + password: + name: password + description: '' + required: true + example: at + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + email: kamryn22@example.com + password: at + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/logout + metadata: + groupName: Auth + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] diff --git a/Backend/.scribe/endpoints/01.yaml b/Backend/.scribe/endpoints/01.yaml new file mode 100644 index 0000000..3d66fe0 --- /dev/null +++ b/Backend/.scribe/endpoints/01.yaml @@ -0,0 +1,1523 @@ +name: Kebab +description: '*' +endpoints: + - + httpMethods: + - GET + uri: api/kebabs + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 404 + content: |- + { + "message": "The route api/kebabs could not be found." + } + headers: + cache-control: 'no-cache, private' + content-type: application/json + vary: Origin + description: null + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/kebabs/{kebabId}/comments' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: unde + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: unde + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + id_user: + name: id_user + description: '' + required: true + example: 7 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + comment: + name: comment + description: '' + required: true + example: itaque + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + id_user: 7 + comment: itaque + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/kebabs/{kebabId}/comments' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: voluptatem + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: voluptatem + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + id_user: + name: id_user + description: '' + required: true + example: 18 + type: integer + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + comment: + name: comment + description: '' + required: true + example: deserunt + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + id_user: 18 + comment: deserunt + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/addKebab + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + logo: + name: logo + description: '' + required: true + example: ut + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + name: + name: name + description: '' + required: true + example: perferendis + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + address: + name: address + description: '' + required: true + example: vel + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + coordinates: + name: coordinates + description: '' + required: true + example: nisi + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + sauces: + name: sauces + description: '' + required: true + example: at + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + meats: + name: meats + description: '' + required: true + example: ullam + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + status: + name: status + description: '' + required: true + example: perferendis + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + opening_hours: + name: opening_hours + description: '' + required: true + example: perspiciatis + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + opening_year: + name: opening_year + description: '' + required: true + example: deleniti + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + closing_year: + name: closing_year + description: '' + required: true + example: accusantium + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + is_crafted: + name: is_crafted + description: '' + required: true + example: placeat + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + is_premises: + name: is_premises + description: '' + required: true + example: minus + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + is_chainstore: + name: is_chainstore + description: '' + required: true + example: aut + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + ordering_options: + name: ordering_options + description: '' + required: true + example: voluptas + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + logo: ut + name: perferendis + address: vel + coordinates: nisi + sauces: at + meats: ullam + status: perferendis + opening_hours: perspiciatis + opening_year: deleniti + closing_year: accusantium + is_crafted: placeat + is_premises: minus + is_chainstore: aut + ordering_options: voluptas + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/kebabs/{id}' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the kebab.' + required: true + example: adipisci + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: adipisci + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/kebabs/{kebabId}/logo' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: quia + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: quia + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/kebabs/{kebabId}/name' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: consequuntur + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: consequuntur + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + name: + name: name + description: '' + required: true + example: quidem + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + name: quidem + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/kebabs/{kebabId}/address' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: ab + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: ab + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + address: + name: address + description: 'Must not be greater than 255 characters.' + required: true + example: huxswcermiukedcsywurinn + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + address: huxswcermiukedcsywurinn + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/kebabs/{kebabId}/coordinates' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: eaque + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: eaque + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + coordinates: + name: coordinates + description: '' + required: true + example: [] + type: object + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + coordinates: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/kebabs/{kebabId}/sauce' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: laboriosam + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: laboriosam + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + sauce: + name: sauce + description: '' + required: true + example: nostrum + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + sauce: nostrum + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/kebabs/{kebabId}/sauce' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: necessitatibus + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: necessitatibus + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + sauce: + name: sauce + description: '' + required: true + example: dolore + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + sauce: dolore + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/kebabs/{kebabId}/meat' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: facere + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: facere + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + meat: + name: meat + description: '' + required: true + example: voluptatibus + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + meat: voluptatibus + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/kebabs/{kebabId}/meat' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: ratione + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: ratione + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + meat: + name: meat + description: '' + required: true + example: eos + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + meat: eos + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/kebabs/{kebabId}/status' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: quas + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: quas + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + status: + name: status + description: '' + required: true + example: exists + type: string + enumValues: + - exists + - closed + - planned + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + status: exists + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/kebabs/{kebabId}/opening-hours' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: est + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: est + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + day: + name: day + description: '' + required: true + example: saturday + type: string + enumValues: + - monday + - tuesday + - wednesday + - thursday + - friday + - saturday + - sunday + exampleWasSpecified: false + nullable: false + custom: [] + hours: + name: hours + description: '' + required: true + example: quis + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + day: saturday + hours: quis + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/kebabs/{kebabId}/opening-hours' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: omnis + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: omnis + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + day: + name: day + description: '' + required: true + example: monday + type: string + enumValues: + - monday + - tuesday + - wednesday + - thursday + - friday + - saturday + - sunday + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + day: monday + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/kebabs/{kebabId}/opening-hours' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: qui + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: qui + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + day: + name: day + description: '' + required: true + example: sunday + type: string + enumValues: + - monday + - tuesday + - wednesday + - thursday + - friday + - saturday + - sunday + exampleWasSpecified: false + nullable: false + custom: [] + hours: + name: hours + description: '' + required: true + example: explicabo + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + day: sunday + hours: explicabo + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/kebabs/{kebabId}/opening-year' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: recusandae + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: recusandae + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + opening_year: + name: opening_year + description: 'Must be 4 digits.' + required: false + example: '6167' + type: string + enumValues: [] + exampleWasSpecified: false + nullable: true + custom: [] + cleanBodyParameters: + opening_year: '6167' + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/kebabs/{kebabId}/closing-year' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: voluptatem + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: voluptatem + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + closing_year: + name: closing_year + description: 'Must be 4 digits.' + required: false + example: '2621' + type: string + enumValues: [] + exampleWasSpecified: false + nullable: true + custom: [] + cleanBodyParameters: + closing_year: '2621' + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/kebabs/{kebabId}/is-crafted' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: vel + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: vel + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + is_crafted: + name: is_crafted + description: '' + required: false + example: true + type: boolean + enumValues: [] + exampleWasSpecified: false + nullable: true + custom: [] + cleanBodyParameters: + is_crafted: true + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/kebabs/{kebabId}/is-premises' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: laudantium + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: laudantium + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + is_premises: + name: is_premises + description: '' + required: false + example: false + type: boolean + enumValues: [] + exampleWasSpecified: false + nullable: true + custom: [] + cleanBodyParameters: + is_premises: false + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/kebabs/{kebabId}/is-chainstore' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: ea + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: ea + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + is_chainstore: + name: is_chainstore + description: '' + required: false + example: false + type: boolean + enumValues: [] + exampleWasSpecified: false + nullable: true + custom: [] + cleanBodyParameters: + is_chainstore: false + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/kebabs/{kebabId}/ordering-options' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: reprehenderit + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: reprehenderit + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + new_option: + name: new_option + description: '' + required: true + example: nesciunt + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + new_option: nesciunt + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/kebabs/{kebabId}/ordering-options' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: assumenda + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: assumenda + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + option_to_remove: + name: option_to_remove + description: '' + required: true + example: est + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + option_to_remove: est + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: 'api/kebabs/{kebabId}/pages' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: consectetur + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: consectetur + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + new_page: + name: new_page + description: '' + required: true + example: explicabo + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + new_page: explicabo + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/kebabs/{kebabId}/pages' + metadata: + groupName: Kebab + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + kebabId: + name: kebabId + description: '' + required: true + example: ad + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + kebabId: ad + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + page_to_remove: + name: page_to_remove + description: '' + required: true + example: corporis + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + page_to_remove: corporis + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] diff --git a/Backend/.scribe/endpoints/02.yaml b/Backend/.scribe/endpoints/02.yaml new file mode 100644 index 0000000..335420e --- /dev/null +++ b/Backend/.scribe/endpoints/02.yaml @@ -0,0 +1,45 @@ +name: KebabScraper +description: '*' +endpoints: + - + httpMethods: + - GET + uri: api/scrape-reviews + metadata: + groupName: KebabScraper + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 404 + content: |- + { + "message": "The route api/scrape-reviews could not be found." + } + headers: + cache-control: 'no-cache, private' + content-type: application/json + vary: Origin + description: null + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] diff --git a/Backend/.scribe/endpoints/03.yaml b/Backend/.scribe/endpoints/03.yaml new file mode 100644 index 0000000..e96baad --- /dev/null +++ b/Backend/.scribe/endpoints/03.yaml @@ -0,0 +1,567 @@ +name: Users +description: '*' +endpoints: + - + httpMethods: + - GET + uri: api/getCurrentUser + metadata: + groupName: Users + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 404 + content: |- + { + "message": "The route api/getCurrentUser could not be found." + } + headers: + cache-control: 'no-cache, private' + content-type: application/json + vary: Origin + description: null + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: 'api/fav/{id}' + metadata: + groupName: Users + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the fav.' + required: true + example: veritatis + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: veritatis + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 404 + content: |- + { + "message": "The route api/fav/veritatis could not be found." + } + headers: + cache-control: 'no-cache, private' + content-type: application/json + vary: Origin + description: null + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/addfav + metadata: + groupName: Users + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + user_id: + name: user_id + description: '' + required: true + example: eum + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + kebab_id: + name: kebab_id + description: '' + required: true + example: quia + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + user_id: eum + kebab_id: quia + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/remfav + metadata: + groupName: Users + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + user_id: + name: user_id + description: '' + required: true + example: quas + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + kebab_id: + name: kebab_id + description: '' + required: true + example: quia + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + user_id: quas + kebab_id: quia + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/changeName/{id}' + metadata: + groupName: Users + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the changeName.' + required: true + example: facilis + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: facilis + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + newName: + name: newName + description: '' + required: true + example: nobis + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + newName: nobis + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/changePassword/{id}' + metadata: + groupName: Users + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the changePassword.' + required: true + example: laborum + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: laborum + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + newPassword: + name: newPassword + description: '' + required: true + example: quas + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + confirmPassword: + name: confirmPassword + description: '' + required: true + example: rerum + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + newPassword: quas + confirmPassword: rerum + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/changeEmail/{id}' + metadata: + groupName: Users + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the changeEmail.' + required: true + example: commodi + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: commodi + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + newEmail: + name: newEmail + description: 'Must be a valid email address.' + required: true + example: shanie84@example.org + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + newEmail: shanie84@example.org + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - PUT + uri: 'api/changeUserRole/{id}' + metadata: + groupName: Users + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the changeUserRole.' + required: true + example: atque + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: atque + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + isAdmin: + name: isAdmin + description: '' + required: true + example: false + type: boolean + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + isAdmin: false + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/deleteUser/{id}' + metadata: + groupName: Users + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the deleteUser.' + required: true + example: ut + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: ut + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/getAllUsers + metadata: + groupName: Users + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 404 + content: |- + { + "message": "The route api/getAllUsers could not be found." + } + headers: + cache-control: 'no-cache, private' + content-type: application/json + vary: Origin + description: null + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - POST + uri: api/addNewUser + metadata: + groupName: Users + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + name: + name: name + description: '' + required: true + example: ut + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + email: + name: email + description: 'Must be a valid email address.' + required: true + example: moconnell@example.com + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + password: + name: password + description: '' + required: true + example: est + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + name: ut + email: moconnell@example.com + password: est + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] diff --git a/Backend/.scribe/endpoints/04.yaml b/Backend/.scribe/endpoints/04.yaml new file mode 100644 index 0000000..1743cc3 --- /dev/null +++ b/Backend/.scribe/endpoints/04.yaml @@ -0,0 +1,138 @@ +name: Suggestions +description: '*' +endpoints: + - + httpMethods: + - POST + uri: api/suggestions + metadata: + groupName: Suggestions + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: + user: + name: user + description: 'Must not be greater than 255 characters.' + required: true + example: yhyrnmamtgxprtslmownvg + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + contents: + name: contents + description: 'Must not be greater than 255 characters.' + required: true + example: vmtnljhahaj + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanBodyParameters: + user: yhyrnmamtgxprtslmownvg + contents: vmtnljhahaj + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - GET + uri: api/suggestions + metadata: + groupName: Suggestions + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 404 + content: |- + { + "message": "The route api/suggestions could not be found." + } + headers: + cache-control: 'no-cache, private' + content-type: application/json + vary: Origin + description: null + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] + - + httpMethods: + - DELETE + uri: 'api/suggestions/{id}' + metadata: + groupName: Suggestions + groupDescription: '*' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: + id: + name: id + description: 'The ID of the suggestion.' + required: true + example: magni + type: string + enumValues: [] + exampleWasSpecified: false + nullable: false + custom: [] + cleanUrlParameters: + id: magni + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] diff --git a/Backend/.scribe/endpoints/05.yaml b/Backend/.scribe/endpoints/05.yaml new file mode 100644 index 0000000..eac0c3b --- /dev/null +++ b/Backend/.scribe/endpoints/05.yaml @@ -0,0 +1,45 @@ +name: Endpoints +description: '' +endpoints: + - + httpMethods: + - GET + uri: api/documentation + metadata: + groupName: Endpoints + groupDescription: '' + subgroup: '' + subgroupDescription: '' + title: '' + description: '' + authenticated: false + custom: [] + headers: + Content-Type: application/json + Accept: application/json + urlParameters: [] + cleanUrlParameters: [] + queryParameters: [] + cleanQueryParameters: [] + bodyParameters: [] + cleanBodyParameters: [] + fileParameters: [] + responses: + - + status: 404 + content: |- + { + "message": "The route api/documentation could not be found." + } + headers: + cache-control: 'no-cache, private' + content-type: application/json + vary: Origin + description: null + custom: [] + responseFields: [] + auth: [] + controller: null + method: null + route: null + custom: [] diff --git a/Backend/.scribe/endpoints/custom.0.yaml b/Backend/.scribe/endpoints/custom.0.yaml new file mode 100644 index 0000000..4b02352 --- /dev/null +++ b/Backend/.scribe/endpoints/custom.0.yaml @@ -0,0 +1,53 @@ +# To include an endpoint that isn't a part of your Laravel app (or belongs to a vendor package), +# you can define it in a custom.*.yaml file, like this one. +# Each custom file should contain an array of endpoints. Here's an example: +# See https://scribe.knuckles.wtf/laravel/documenting/custom-endpoints#extra-sorting-groups-in-custom-endpoint-files for more options + +#- httpMethods: +# - POST +# uri: api/doSomething/{param} +# metadata: +# groupName: The group the endpoint belongs to. Can be a new group or an existing group. +# groupDescription: A description for the group. You don't need to set this for every endpoint; once is enough. +# subgroup: You can add a subgroup, too. +# title: Do something +# description: 'This endpoint allows you to do something.' +# authenticated: false +# headers: +# Content-Type: application/json +# Accept: application/json +# urlParameters: +# param: +# name: param +# description: A URL param for no reason. +# required: true +# example: 2 +# type: integer +# queryParameters: +# speed: +# name: speed +# description: How fast the thing should be done. Can be `slow` or `fast`. +# required: false +# example: fast +# type: string +# bodyParameters: +# something: +# name: something +# description: The things we should do. +# required: true +# example: +# - string 1 +# - string 2 +# type: 'string[]' +# responses: +# - status: 200 +# description: 'When the thing was done smoothly.' +# content: # Your response content can be an object, an array, a string or empty. +# { +# "hey": "ho ho ho" +# } +# responseFields: +# hey: +# name: hey +# description: Who knows? +# type: string # This is optional diff --git a/Backend/.scribe/intro.md b/Backend/.scribe/intro.md new file mode 100644 index 0000000..2ad461b --- /dev/null +++ b/Backend/.scribe/intro.md @@ -0,0 +1,13 @@ +# Introduction + + + + + +This documentation aims to provide all the information you need to work with our API. + + + diff --git a/Backend/Images/images.png b/Backend/Images/images.png new file mode 100644 index 0000000..59947a1 Binary files /dev/null and b/Backend/Images/images.png differ diff --git a/Backend/api/documentation/collection.json b/Backend/api/documentation/collection.json new file mode 100644 index 0000000..db935ee --- /dev/null +++ b/Backend/api/documentation/collection.json @@ -0,0 +1,1733 @@ +{ + "variable": [ + { + "id": "baseUrl", + "key": "baseUrl", + "type": "string", + "name": "string", + "value": "api\/documentation" + } + ], + "info": { + "name": "Kebab Api", + "_postman_id": "317b0c86-8c70-44bc-a09f-d4a42be95c59", + "description": "", + "schema": "https:\/\/schema.getpostman.com\/json\/collection\/v2.1.0\/collection.json" + }, + "item": [ + { + "name": "Endpoints", + "description": "", + "item": [ + { + "name": "POST api\/register", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/register", + "query": [], + "raw": "{{baseUrl}}\/api\/register" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"name\":\"est\",\"email\":\"igibson@example.com\",\"password\":\"corporis\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "POST api\/login", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/login", + "query": [], + "raw": "{{baseUrl}}\/api\/login" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"email\":\"kirlin.tara@example.com\",\"password\":\"expedita\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "GET api\/kebabs", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "no-cache, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + } + ], + "code": 404, + "body": "{\n \"message\": \"The route api\/kebabs could not be found.\"\n}", + "name": "" + } + ] + }, + { + "name": "GET api\/scrape-reviews", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/scrape-reviews", + "query": [], + "raw": "{{baseUrl}}\/api\/scrape-reviews" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "no-cache, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + } + ], + "code": 404, + "body": "{\n \"message\": \"The route api\/scrape-reviews could not be found.\"\n}", + "name": "" + } + ] + }, + { + "name": "POST api\/logout", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/logout", + "query": [], + "raw": "{{baseUrl}}\/api\/logout" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "GET api\/getCurrentUser", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/getCurrentUser", + "query": [], + "raw": "{{baseUrl}}\/api\/getCurrentUser" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "no-cache, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + } + ], + "code": 404, + "body": "{\n \"message\": \"The route api\/getCurrentUser could not be found.\"\n}", + "name": "" + } + ] + }, + { + "name": "GET api\/fav\/{id}", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/fav\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/fav\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "iste", + "description": "The ID of the fav." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "no-cache, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + } + ], + "code": 404, + "body": "{\n \"message\": \"The route api\/fav\/iste could not be found.\"\n}", + "name": "" + } + ] + }, + { + "name": "POST api\/addfav", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/addfav", + "query": [], + "raw": "{{baseUrl}}\/api\/addfav" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"user_id\":\"voluptatem\",\"kebab_id\":\"ullam\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "POST api\/remfav", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/remfav", + "query": [], + "raw": "{{baseUrl}}\/api\/remfav" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"user_id\":\"eum\",\"kebab_id\":\"dicta\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "PUT api\/changeName\/{id}", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/changeName\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/changeName\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "id", + "description": "The ID of the changeName." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"newName\":\"voluptas\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "PUT api\/changePassword\/{id}", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/changePassword\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/changePassword\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "culpa", + "description": "The ID of the changePassword." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"newPassword\":\"eligendi\",\"confirmPassword\":\"possimus\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "PUT api\/changeEmail\/{id}", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/changeEmail\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/changeEmail\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "et", + "description": "The ID of the changeEmail." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"newEmail\":\"ervin.kuphal@example.net\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "POST api\/suggestions", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/suggestions", + "query": [], + "raw": "{{baseUrl}}\/api\/suggestions" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"user\":\"bghrjiaodyjq\",\"contents\":\"vyjf\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "POST api\/kebabs\/{kebabId}\/comments", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/comments", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/comments", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "reprehenderit", + "description": "" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"id_user\":20,\"comment\":\"aliquam\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "DELETE api\/kebabs\/{kebabId}\/comments", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/comments", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/comments", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "rerum", + "description": "" + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"id_user\":12,\"comment\":\"inventore\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "PUT api\/changeUserRole\/{id}", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/changeUserRole\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/changeUserRole\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "nesciunt", + "description": "The ID of the changeUserRole." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"isAdmin\":true}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "DELETE api\/deleteUser\/{id}", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/deleteUser\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/deleteUser\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "minima", + "description": "The ID of the deleteUser." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "GET api\/getAllUsers", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/getAllUsers", + "query": [], + "raw": "{{baseUrl}}\/api\/getAllUsers" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "no-cache, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + } + ], + "code": 404, + "body": "{\n \"message\": \"The route api\/getAllUsers could not be found.\"\n}", + "name": "" + } + ] + }, + { + "name": "POST api\/addNewUser", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/addNewUser", + "query": [], + "raw": "{{baseUrl}}\/api\/addNewUser" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"name\":\"eveniet\",\"email\":\"tyrique37@example.org\",\"password\":\"qui\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "POST api\/addKebab", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/addKebab", + "query": [], + "raw": "{{baseUrl}}\/api\/addKebab" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"logo\":\"quis\",\"name\":\"qui\",\"address\":\"dicta\",\"coordinates\":\"porro\",\"sauces\":\"impedit\",\"meats\":\"dolorem\",\"status\":\"rem\",\"opening_hours\":\"eligendi\",\"opening_year\":\"eveniet\",\"closing_year\":\"omnis\",\"is_crafted\":\"molestias\",\"is_premises\":\"excepturi\",\"is_chainstore\":\"iste\",\"ordering_options\":\"nam\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "DELETE api\/kebabs\/{id}", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "architecto", + "description": "The ID of the kebab." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "PUT api\/kebabs\/{kebabId}\/logo", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/logo", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/logo", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "necessitatibus", + "description": "" + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "PUT api\/kebabs\/{kebabId}\/name", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/name", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/name", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "minima", + "description": "" + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"name\":\"molestiae\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "PUT api\/kebabs\/{kebabId}\/address", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/address", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/address", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "aut", + "description": "" + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"address\":\"hasoytxcdkunpxsulsofhjcbd\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "PUT api\/kebabs\/{kebabId}\/coordinates", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/coordinates", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/coordinates", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "autem", + "description": "" + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"coordinates\":[]}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "POST api\/kebabs\/{kebabId}\/sauce", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/sauce", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/sauce", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "accusamus", + "description": "" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"sauce\":\"nulla\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "DELETE api\/kebabs\/{kebabId}\/sauce", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/sauce", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/sauce", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "officia", + "description": "" + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"sauce\":\"est\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "POST api\/kebabs\/{kebabId}\/meat", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/meat", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/meat", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "et", + "description": "" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"meat\":\"voluptates\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "DELETE api\/kebabs\/{kebabId}\/meat", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/meat", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/meat", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "et", + "description": "" + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"meat\":\"suscipit\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "PUT api\/kebabs\/{kebabId}\/status", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/status", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/status", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "doloribus", + "description": "" + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"status\":\"exists\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "POST api\/kebabs\/{kebabId}\/opening-hours", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/opening-hours", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/opening-hours", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "quam", + "description": "" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"day\":\"saturday\",\"hours\":\"recusandae\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "DELETE api\/kebabs\/{kebabId}\/opening-hours", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/opening-hours", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/opening-hours", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "enim", + "description": "" + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"day\":\"wednesday\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "PUT api\/kebabs\/{kebabId}\/opening-hours", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/opening-hours", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/opening-hours", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "maxime", + "description": "" + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"day\":\"friday\",\"hours\":\"vel\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "PUT api\/kebabs\/{kebabId}\/opening-year", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/opening-year", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/opening-year", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "necessitatibus", + "description": "" + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"opening_year\":\"1897\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "PUT api\/kebabs\/{kebabId}\/closing-year", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/closing-year", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/closing-year", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "velit", + "description": "" + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"closing_year\":\"8861\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "PUT api\/kebabs\/{kebabId}\/is-crafted", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/is-crafted", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/is-crafted", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "dicta", + "description": "" + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"is_crafted\":true}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "PUT api\/kebabs\/{kebabId}\/is-premises", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/is-premises", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/is-premises", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "neque", + "description": "" + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"is_premises\":false}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "PUT api\/kebabs\/{kebabId}\/is-chainstore", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/is-chainstore", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/is-chainstore", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "corporis", + "description": "" + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"is_chainstore\":false}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "POST api\/kebabs\/{kebabId}\/ordering-options", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/ordering-options", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/ordering-options", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "eum", + "description": "" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"new_option\":\"distinctio\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "DELETE api\/kebabs\/{kebabId}\/ordering-options", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/ordering-options", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/ordering-options", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "tenetur", + "description": "" + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"option_to_remove\":\"eaque\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "POST api\/kebabs\/{kebabId}\/pages", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/pages", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/pages", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "id", + "description": "" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"new_page\":\"voluptates\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "DELETE api\/kebabs\/{kebabId}\/pages", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/pages", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/pages", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "iusto", + "description": "" + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"page_to_remove\":\"quaerat\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "GET api\/suggestions", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/suggestions", + "query": [], + "raw": "{{baseUrl}}\/api\/suggestions" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "no-cache, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + } + ], + "code": 404, + "body": "{\n \"message\": \"The route api\/suggestions could not be found.\"\n}", + "name": "" + } + ] + }, + { + "name": "DELETE api\/suggestions\/{id}", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/suggestions\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/suggestions\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "non", + "description": "The ID of the suggestion." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + } + ] + } + ], + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "Authorization", + "type": "string" + } + ] + } +} \ No newline at end of file diff --git a/Backend/api/documentation/css/theme-default.print.css b/Backend/api/documentation/css/theme-default.print.css new file mode 100644 index 0000000..18ab760 --- /dev/null +++ b/Backend/api/documentation/css/theme-default.print.css @@ -0,0 +1,393 @@ +/* Copied from https://github.com/slatedocs/slate/blob/c4b4c0b8f83e891ca9fab6bbe9a1a88d5fe41292/stylesheets/print.css and unminified */ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + +html { + font-family: sans-serif; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100% +} + +body { + margin: 0 +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block +} + +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline +} + +audio:not([controls]) { + display: none; + height: 0 +} + +[hidden], +template { + display: none +} + +a { + background-color: transparent +} + +a:active, +a:hover { + outline: 0 +} + +abbr[title] { + border-bottom: 1px dotted +} + +b, +strong { + font-weight: bold +} + +dfn { + font-style: italic +} + +h1 { + font-size: 2em; + margin: 0.67em 0 +} + +mark { + background: #ff0; + color: #000 +} + +small { + font-size: 80% +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline +} + +sup { + top: -0.5em +} + +sub { + bottom: -0.25em +} + +img { + border: 0 +} + +svg:not(:root) { + overflow: hidden +} + +figure { + margin: 1em 40px +} + +hr { + box-sizing: content-box; + height: 0 +} + +pre { + overflow: auto +} + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em +} + +button, +input, +optgroup, +select, +textarea { + color: inherit; + font: inherit; + margin: 0 +} + +button { + overflow: visible +} + +button, +select { + text-transform: none +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer +} + +button[disabled], +html input[disabled] { + cursor: default +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0 +} + +input { + line-height: normal +} + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + padding: 0 +} + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto +} + +input[type="search"] { + -webkit-appearance: textfield; + box-sizing: content-box +} + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none +} + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em +} + +legend { + border: 0; + padding: 0 +} + +textarea { + overflow: auto +} + +optgroup { + font-weight: bold +} + +table { + border-collapse: collapse; + border-spacing: 0 +} + +td, +th { + padding: 0 +} + +.content h1, +.content h2, +.content h3, +.content h4, +body { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-size: 14px +} + +.content h1, +.content h2, +.content h3, +.content h4 { + font-weight: bold +} + +.content pre, +.content code { + font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, serif; + font-size: 12px; + line-height: 1.5 +} + +.content pre, +.content code { + word-break: break-all; + -webkit-hyphens: auto; + -ms-hyphens: auto; + hyphens: auto +} + +@font-face { + font-family: 'slate'; + src: url(../fonts/slate.eot?-syv14m); + src: url(../fonts/slate.eot?#iefix-syv14m) format("embedded-opentype"), url(../fonts/slate.woff2?-syv14m) format("woff2"), url(../fonts/slate.woff?-syv14m) format("woff"), url(../fonts/slate.ttf?-syv14m) format("truetype"), url(../fonts/slate.svg?-syv14m#slate) format("svg"); + font-weight: normal; + font-style: normal +} + +.content aside.warning:before, +.content aside.notice:before, +.content aside.success:before { + font-family: 'slate'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1 +} + +.content aside.warning:before { + content: "\e600" +} + +.content aside.notice:before { + content: "\e602" +} + +.content aside.success:before { + content: "\e606" +} + +.tocify, +.toc-footer, +.lang-selector, +.search, +#nav-button { + display: none +} + +.tocify-wrapper>img { + margin: 0 auto; + display: block +} + +.content { + font-size: 12px +} + +.content pre, +.content code { + border: 1px solid #999; + border-radius: 5px; + font-size: 0.8em +} + +.content pre code { + border: 0 +} + +.content pre { + padding: 1.3em +} + +.content code { + padding: 0.2em +} + +.content table { + border: 1px solid #999 +} + +.content table tr { + border-bottom: 1px solid #999 +} + +.content table td, +.content table th { + padding: 0.7em +} + +.content p { + line-height: 1.5 +} + +.content a { + text-decoration: none; + color: #000 +} + +.content h1 { + font-size: 2.5em; + padding-top: 0.5em; + padding-bottom: 0.5em; + margin-top: 1em; + margin-bottom: 21px; + border: 2px solid #ccc; + border-width: 2px 0; + text-align: center +} + +.content h2 { + font-size: 1.8em; + margin-top: 2em; + border-top: 2px solid #ccc; + padding-top: 0.8em +} + +.content h1+h2, +.content h1+div+h2 { + border-top: none; + padding-top: 0; + margin-top: 0 +} + +.content h3, +.content h4 { + font-size: 0.8em; + margin-top: 1.5em; + margin-bottom: 0.8em; + text-transform: uppercase +} + +.content h5, +.content h6 { + text-transform: uppercase +} + +.content aside { + padding: 1em; + border: 1px solid #ccc; + border-radius: 5px; + margin-top: 1.5em; + margin-bottom: 1.5em; + line-height: 1.6 +} + +.content aside:before { + vertical-align: middle; + padding-right: 0.5em; + font-size: 14px +} diff --git a/Backend/api/documentation/css/theme-default.style.css b/Backend/api/documentation/css/theme-default.style.css new file mode 100644 index 0000000..9a4741c --- /dev/null +++ b/Backend/api/documentation/css/theme-default.style.css @@ -0,0 +1,1090 @@ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + +html { + font-family: 'Open Sans', sans-serif; + font-size: 1.2em; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100% +} + +body { + margin: 0 +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section { + display: block +} + +summary { + cursor: pointer; +} + +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline +} + +audio:not([controls]) { + display: none; + height: 0 +} + +[hidden], +template { + display: none +} + +a { + background-color: transparent +} + +a:active, +a:hover { + outline: 0 +} + +abbr[title] { + border-bottom: 1px dotted +} + +b, +strong { + font-weight: 700 +} + +dfn { + font-style: italic +} + +h1 { + font-size: 2em; + margin: .67em 0 +} + +mark { + background: #ff0; + color: #000 +} + +small { + font-size: 80% +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline +} + +sup { + top: -.5em +} + +sub { + bottom: -.25em +} + +img { + border: 0 +} + +svg:not(:root) { + overflow: hidden +} + +figure { + margin: 1em 40px +} + +hr { + box-sizing: content-box; + height: 0 +} + +pre { + overflow: auto +} + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em +} + +button, +input, +optgroup, +select, +textarea { + color: inherit; + font: inherit; + margin: 0 +} + +button { + overflow: visible +} + +button, +select { + text-transform: none +} + +button, +html input[type=button], +input[type=reset], +input[type=submit] { + -webkit-appearance: button; + cursor: pointer +} + +button[disabled], +html input[disabled] { + cursor: default +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0 +} + +input { + line-height: normal +} + +input[type=checkbox], +input[type=radio] { + box-sizing: border-box; + padding: 0 +} + +input[type=number]::-webkit-inner-spin-button, +input[type=number]::-webkit-outer-spin-button { + height: auto +} + +input[type=search] { + -webkit-appearance: textfield; + box-sizing: content-box +} + +input[type=search]::-webkit-search-cancel-button, +input[type=search]::-webkit-search-decoration { + -webkit-appearance: none +} + +fieldset { + border: 1px solid silver; + margin: 0 2px; + padding: .35em .625em .75em +} + +legend { + border: 0; + padding: 0 +} + +textarea { + overflow: auto +} + +optgroup { + font-weight: 700 +} + +table { + border-collapse: collapse; + border-spacing: 0 +} + +td, +th { + padding: 0 +} + +body, +html { + font-family: 'Open Sans', Helvetica Neue, Helvetica, Arial, Microsoft Yahei, 微软雅黑, STXihei, 华文细黑, sans-serif; + font-size: 16px; +} + +.content h1, +.content h2, +.content h3, +.content h4, +.content h5, +.content h6 { + font-family: 'Open Sans', Helvetica Neue, Helvetica, Arial, Microsoft Yahei, 微软雅黑, STXihei, 华文细黑, sans-serif; +} + +.content h1, +.content h2, +.content h3, +.content h4, +.content h5, +.content h6 { + font-weight: 700 +} + +.content code, +.content pre { + font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif; + font-size: 14px; + line-height: 1.5 +} + +.content code { + word-break: break-all; + word-break: break-word; + -webkit-hyphens: auto; + -ms-hyphens: auto; + hyphens: auto +} + +.content aside.notice:before, +.content aside.success:before, +.content aside.warning:before, +.tocify-wrapper>.search:before { + font-family: 'Open Sans', sans-serif; + speak: none; + font-style: normal; + font-variant: normal; + text-transform: none; + line-height: 1 +} + +.content aside.warning:before { + content: "✋" +} + +.content aside.notice:before { + content: "ℹ" +} + +.content aside.success:before { + content: "✅" +} + +.tocify-wrapper>.search:before { + content: "🔎" +} + +.highlight .c, +.highlight .c1, +.highlight .cm, +.highlight .cs { + color: #909090 +} + +.highlight, +.highlight .w { + background-color: #292929 +} + +.hljs { + display: block; + overflow-x: auto; + padding: .5em; + background: #23241f +} + +.hljs, +.hljs-subst, +.hljs-tag { + color: #f8f8f2 +} + +.hljs-emphasis, +.hljs-strong { + color: #a8a8a2 +} + +.hljs-bullet, +.hljs-link, +.hljs-literal, +.hljs-number, +.hljs-quote, +.hljs-regexp { + color: #ae81ff +} + +.hljs-code, +.hljs-section, +.hljs-selector-class, +.hljs-title { + color: #a6e22e +} + +.hljs-strong { + font-weight: 700 +} + +.hljs-emphasis { + font-style: italic +} + +.hljs-attr, +.hljs-keyword, +.hljs-name, +.hljs-selector-tag { + color: #f92672 +} + +.hljs-attribute, +.hljs-symbol { + color: #66d9ef +} + +.hljs-class .hljs-title, +.hljs-params { + color: #f8f8f2 +} + +.hljs-addition, +.hljs-built_in, +.hljs-builtin-name, +.hljs-selector-attr, +.hljs-selector-id, +.hljs-selector-pseudo, +.hljs-string, +.hljs-template-variable, +.hljs-type, +.hljs-variable { + color: #e6db74 +} + +.hljs-comment, +.hljs-deletion, +.hljs-meta { + color: #75715e +} + +body, +html { + color: #333; + padding: 0; + margin: 0; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + background-color: whitesmoke; + height: 100%; + -webkit-text-size-adjust: none +} + +#toc>ul>li>a>span { + float: right; + background-color: #2484ff; + border-radius: 40px; + width: 20px +} + +.tocify-wrapper { + transition: left .3s ease-in-out; + overflow-y: auto; + overflow-x: hidden; + position: fixed; + z-index: 30; + top: 0; + left: 0; + bottom: 0; + width: 230px; + background-color: #393939; + font-size: 13px; + font-weight: 700 +} + +.tocify-wrapper .lang-selector { + display: none +} + +.tocify-wrapper .lang-selector a { + padding-top: .5em; + padding-bottom: .5em +} + +.tocify-wrapper>img { + display: block +} + +.tocify-wrapper>.search { + position: relative +} + +.tocify-wrapper>.search input { + background: #393939; + border-width: 0 0 1px; + border-color: #666; + padding: 6px 0 6px 20px; + box-sizing: border-box; + margin: 10px 15px; + width: 200px; + outline: none; + color: #fff; + border-radius: 0 +} + +.tocify-wrapper>.search:before { + position: absolute; + top: 17px; + left: 15px; + color: #fff +} + +.tocify-wrapper img+.tocify { + margin-top: 20px +} + +.tocify-wrapper .search-results { + margin-top: 0; + box-sizing: border-box; + height: 0; + overflow-y: auto; + overflow-x: hidden; + transition-property: height, margin; + transition-duration: .18s; + transition-timing-function: ease-in-out; + background: linear-gradient(180deg, rgba(0, 0, 0, .2), transparent 8px), linear-gradient(0deg, rgba(0, 0, 0, .2), transparent 8px), linear-gradient(180deg, #000, transparent 1.5px), linear-gradient(0deg, #939393, hsla(0, 0%, 58%, 0) 1.5px), #262626 +} + +.tocify-wrapper .search-results.visible { + height: 30%; + margin-bottom: 1em +} + +.tocify-wrapper .search-results li { + margin: 1em 15px; + line-height: 1 +} + +.tocify-wrapper a { + color: #fff; + text-decoration: none +} + +.tocify-wrapper .search-results a:hover { + text-decoration: underline +} + +.tocify-wrapper .toc-footer li, +.tocify-wrapper .tocify-item>a { + padding: 0 15px; + display: block; + overflow-x: hidden; + white-space: nowrap; + text-overflow: ellipsis +} +.tocify-wrapper .tocify-item.level-3>a { + padding: 0 25px; +} + +.tocify-wrapper li, +.tocify-wrapper ul { + list-style: none; + margin: 0; + padding: 0; + line-height: 28px +} + +.tocify-wrapper li { + color: #fff; + transition-property: background; + transition-timing-function: linear; + transition-duration: .23s +} + +.tocify-wrapper .tocify-focus { + box-shadow: 0 1px 0 #000; + background-color: #2467af; + color: #fff; + font-weight: bold; +} + +.tocify-wrapper .tocify-subheader { + display: none; + background-color: #262626; + font-weight: 500; + background: linear-gradient(180deg, rgba(0, 0, 0, .2), transparent 8px), linear-gradient(0deg, rgba(0, 0, 0, .2), transparent 8px), linear-gradient(180deg, #000, transparent 1.5px), linear-gradient(0deg, #939393, hsla(0, 0%, 58%, 0) 1.5px), #262626 +} + +.tocify-wrapper .jets-searching .tocify-subheader, +.tocify-wrapper .tocify-subheader.visible { + display: block; +} + +.tocify-wrapper .tocify-subheader .tocify-item>a { + padding-left: 25px; + font-size: 12px +} + +.tocify-wrapper .tocify-subheader .tocify-item.level-3>a { + padding-left: 35px; +} + +.tocify-wrapper .tocify-subheader>li:last-child { + box-shadow: none +} + +.tocify-wrapper .toc-footer { + padding: 1em 0; + margin-top: 1em; + border-top: 1px dashed #666 +} + +.tocify-wrapper .toc-footer a, +.tocify-wrapper .toc-footer li { + color: #fff; + text-decoration: none +} + +.tocify-wrapper .toc-footer a:hover { + text-decoration: underline +} + +.tocify-wrapper .toc-footer li { + font-size: .8em; + line-height: 1.7; + text-decoration: none +} + +#nav-button { + padding: 0 1.5em 5em 0; + display: none; + position: fixed; + top: 0; + left: 0; + z-index: 100; + color: #000; + text-decoration: none; + font-weight: 700; + opacity: .7; + line-height: 16px; + transition: left .3s ease-in-out +} + +#nav-button span { + display: block; + padding: 6px; + background-color: rgba(234, 242, 246, .7); + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: rotate(-90deg) translate(-100%); + transform: rotate(-90deg) translate(-100%); + border-radius: 0 0 0 5px +} + +#nav-button img { + height: 16px; + vertical-align: bottom +} + +#nav-button:hover { + opacity: 1 +} + +#nav-button.open { + left: 230px +} + +.page-wrapper { + margin-left: 230px; + position: relative; + z-index: 10; + background-color: #eaf2f6; + min-height: 100%; + padding-bottom: 1px +} + +.page-wrapper .dark-box { + width: 50%; + background-color: #393939; + position: absolute; + right: 0; + top: 0; + bottom: 0 +} + +.page-wrapper .lang-selector { + position: fixed; + z-index: 50; + border-bottom: 5px solid #393939 +} + +.lang-selector { + background-color: #222; + width: 100%; + font-weight: 700 +} + +.lang-selector button { + display: block; + float: left; + color: #fff; + text-decoration: none; + padding: 0 10px; + line-height: 30px; + outline: 0; + background: transparent; + border: none; +} + +.lang-selector button:active, +.lang-selector button:hover, +.lang-selector button:focus { + background-color: #111; + color: #fff +} + +.lang-selector button.active { + background-color: #393939; + color: #fff +} + +.lang-selector:after { + content: ''; + clear: both; + display: block +} + +.content { + position: relative; + z-index: 30 +} + +.content:after { + content: ''; + display: block; + clear: both +} + +.content>aside, +.content>details, +.content>dl, +.content>h1, +.content>h2, +.content>h3, +.content>h4, +.content>h5, +.content>h6, +.content>ol, +.content>p, +.content>table, +.content>ul, +.content>div, +.content>form>aside, +.content>form>details, +.content>form>h1, +.content>form>h2, +.content>form>h3, +.content>form>h4, +.content>form>h5, +.content>form>h6, +.content>form>p, +.content>form>table, +.content>form>ul, +.content>form>div { + margin-right: 50%; + padding: 0 28px; + box-sizing: border-box; + display: block; + text-shadow: 0 1px 0 #fff +} + +.content>ol, +.content>ul { + padding-left: 43px +} + +.content>div, +.content>h1, +.content>h2 { + clear: both +} + +.content h1 { + font-size: 30px; + padding-top: .5em; + padding-bottom: .5em; + border-bottom: 1px solid #ccc; + margin-bottom: 21px; + margin-top: 2em; + border-top: 1px solid #ddd; + background-image: linear-gradient(180deg, #fff, #f9f9f9) +} + +.content div:first-child+h1, +.content h1:first-child { + border-top-width: 0; + margin-top: 0 +} + +.content h2 { + font-size: 20px; + margin-top: 4em; + margin-bottom: 0; + border-top: 1px solid #ccc; + padding-top: 1.2em; + padding-bottom: 1.2em; + background-image: linear-gradient(180deg, hsla(0, 0%, 100%, .4), hsla(0, 0%, 100%, 0)) +} + +.content h1+div+h2, +.content h1+h2 { + margin-top: -21px; + border-top: none +} + +.content h3, +.content h4, +.content h5, +.content h6 { + font-size: 15px; + margin-top: 2.5em; + margin-bottom: .8em +} + +.content h4, +.content h5, +.content h6 { + font-size: 10px +} + +.content hr { + margin: 2em 0; + border-top: 2px solid #393939; + border-bottom: 2px solid #eaf2f6 +} + +.content table { + margin-bottom: 1em; + overflow: auto +} + +.content table td, +.content table th { + text-align: left; + vertical-align: top; + line-height: 1.6 +} + +.content table th { + padding: 5px 10px; + border-bottom: 1px solid #ccc; + vertical-align: bottom +} + +.content table td { + padding: 10px +} + +.content table tr:last-child { + border-bottom: 1px solid #ccc +} + +.content table tr:nth-child(odd)>td { + background-color: #ebf3f6 +} + +.content table tr:nth-child(even)>td { + background-color: #ebf2f6 +} + +.content dt { + font-weight: 700 +} + +.content dd { + margin-left: 15px +} + +.content dd, +.content dt, +.content li, +.content p { + line-height: 1.6; + margin-top: 0 +} + +.content img { + max-width: 100% +} + +.content code { + padding: 3px; + border-radius: 3px +} + +.content pre>code { + background-color: transparent; + padding: 0 +} + +.content aside { + padding-top: 1em; + padding-bottom: 1em; + margin-top: 1.5em; + margin-bottom: 1.5em; + background: #292929; + line-height: 1.6; + color: #c8c8c8; + text-shadow: none; +} + +.content aside.info { + background: #8fbcd4; + text-shadow: 0 1px 0 #a0c6da; + color: initial; +} + +.content aside.warning { + background-color: #c97a7e; + text-shadow: 0 1px 0 #d18e91; + color: initial; +} + +.content aside.success { + background-color: #6ac174; + text-shadow: 0 1px 0 #80ca89; + color: initial; +} + +.content aside:before { + vertical-align: middle; + padding-right: .5em; + font-size: 14px +} + +.content .search-highlight { + padding: 2px; + margin: -2px; + border-radius: 4px; + border: 1px solid #f7e633; + text-shadow: 1px 1px 0 #666; + background: linear-gradient(to top left, #f7e633, #f1d32f) +} + +.content blockquote, +.content pre { + background-color: #292929; + color: #fff; + padding: 1.5em 28px; + margin: 0; + width: 50%; + float: right; + clear: right; + box-sizing: border-box; + text-shadow: 0 1px 2px rgba(0, 0, 0, .4) +} + +.content blockquote pre.sf-dump, +.content pre pre.sf-dump { + width: 100%; +} + +.content .annotation { + background-color: #292929; + color: #fff; + padding: 0 28px; + margin: 0; + width: 50%; + float: right; + clear: right; + box-sizing: border-box; + text-shadow: 0 1px 2px rgba(0, 0, 0, .4) +} + +.content .annotation pre { + padding: 0 0; + width: 100%; + float: none; +} + +.content blockquote>p, +.content pre>p { + margin: 0 +} + +.content blockquote a, +.content pre a { + color: #fff; + text-decoration: none; + border-bottom: 1px dashed #ccc +} + +.content blockquote>p { + background-color: #1c1c1c; + border-radius: 5px; + padding: 13px; + color: #ccc; + border-top: 1px solid #000; + border-bottom: 1px solid #404040 +} + +@media (max-width:930px) { + .tocify-wrapper { + left: -230px + } + .tocify-wrapper.open { + left: 0 + } + .page-wrapper { + margin-left: 0 + } + #nav-button { + display: block + } + .tocify-wrapper .tocify-item>a { + padding-top: .3em; + padding-bottom: .3em + } +} + +@media (max-width:700px) { + .dark-box { + display: none + } + .tocify-wrapper .lang-selector { + display: block + } + .page-wrapper .lang-selector { + display: none + } + .content>aside, + .content>details, + .content>dl, + .content>h1, + .content>h2, + .content>h3, + .content>h4, + .content>h5, + .content>h6, + .content>ol, + .content>p, + .content>table, + .content>ul, + .content>div, + .content>form>aside, + .content>form>details, + .content>form>h1, + .content>form>h2, + .content>form>h3, + .content>form>h4, + .content>form>h5, + .content>form>h6, + .content>form>p, + .content>form>table, + .content>form>ul, + .content>form>div { + margin-right: 0; + } + .content blockquote, + .content pre { + float: none; + width: auto + } + .content .annotation { + float: none; + width: auto + } +} + +.badge { + padding: 1px 9px 2px; + white-space: nowrap; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; + color: #ffffff; + text-shadow: none !important; + font-weight: bold; +} + +.badge.badge-darkred { + background-color: darkred; +} + +.badge.badge-red { + background-color: red; +} + +.badge.badge-blue { + background-color: blue; +} + +.badge.badge-darkblue { + background-color: darkblue; +} + +.badge.badge-green { + background-color: green; +} + +.badge.badge-darkgreen { + background-color: darkgreen; +} + +.badge.badge-purple { + background-color: purple; +} + +.badge.badge-black { + background-color: black; +} + +.badge.badge-grey { + background-color: grey; +} + +.fancy-heading-panel { + background-color: lightgrey; + border-radius: 5px; + padding-left: 5px !important; + padding-top: 5px !important; + padding-bottom: 5px !important; + margin-left: 25px; + margin-right: 10px; + width: 47%; +} + +@media screen and (max-width: 700px) { + .fancy-heading-panel { + width: 95%; + } + +} + +button { + border: none; +} + +* { + /* Foreground, Background */ + scrollbar-color: #3c4c67 transparent; +} +*::-webkit-scrollbar { /* Background */ + width: 10px; + height: 10px; + background: transparent; +} + +*::-webkit-scrollbar-thumb { /* Foreground */ + background: #626161; +} diff --git a/Backend/api/documentation/images/navbar.png b/Backend/api/documentation/images/navbar.png new file mode 100644 index 0000000..df38e90 Binary files /dev/null and b/Backend/api/documentation/images/navbar.png differ diff --git a/Backend/api/documentation/index.html b/Backend/api/documentation/index.html new file mode 100644 index 0000000..f106e7c --- /dev/null +++ b/Backend/api/documentation/index.html @@ -0,0 +1,7384 @@ + + + + + + + Kebab Api + + + + + + + + + + + + + + + + + + + + + + + + + + + MENU + navbar-image + + +
+ +
+ + + +
+ + + +
+ + + +
+ + + + +
+ +
+
+
+

Introduction

+ +

This documentation aims to provide all the information you need to work with our API.

+ + +

Authenticating requests

+

To authenticate requests, include an Authorization header with the value "Bearer {YOUR_AUTH_KEY}".

+

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

+

You can retrieve your token by visiting your dashboard and clicking Generate API token.

+ +

Endpoints

+ + + +

POST api/register

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "api/documentation/api/register" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"name\": \"est\",
+    \"email\": \"igibson@example.com\",
+    \"password\": \"corporis\"
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/register"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "name": "est",
+    "email": "igibson@example.com",
+    "password": "corporis"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/register';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'name' => 'est',
+            'email' => 'igibson@example.com',
+            'password' => 'corporis',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/register +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Body Parameters

+
+ name   +string  +   + +
+

Example: est

+
+
+ email   +string  +   + +
+

Must be a valid email address. Example: igibson@example.com

+
+
+ password   +string  +   + +
+

Example: corporis

+
+
+ +

POST api/login

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "api/documentation/api/login" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"email\": \"kirlin.tara@example.com\",
+    \"password\": \"expedita\"
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/login"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "email": "kirlin.tara@example.com",
+    "password": "expedita"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/login';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'email' => 'kirlin.tara@example.com',
+            'password' => 'expedita',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/login +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Body Parameters

+
+ email   +string  +   + +
+

Must be a valid email address. The email of an existing record in the users table. Example: kirlin.tara@example.com

+
+
+ password   +string  +   + +
+

Example: expedita

+
+
+ +

GET api/kebabs

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "api/documentation/api/kebabs" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "api/documentation/api/kebabs"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/kebabs';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + +
+

Example response (404):

+
+
+ + Show headers + +
cache-control: no-cache, private
+content-type: application/json
+vary: Origin
+ 
+
+{
+    "message": "The route api/kebabs could not be found."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/kebabs +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

GET api/scrape-reviews

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "api/documentation/api/scrape-reviews" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "api/documentation/api/scrape-reviews"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/scrape-reviews';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + +
+

Example response (404):

+
+
+ + Show headers + +
cache-control: no-cache, private
+content-type: application/json
+vary: Origin
+ 
+
+{
+    "message": "The route api/scrape-reviews could not be found."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/scrape-reviews +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

POST api/logout

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "api/documentation/api/logout" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "api/documentation/api/logout"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/logout';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/logout +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

GET api/getCurrentUser

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "api/documentation/api/getCurrentUser" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "api/documentation/api/getCurrentUser"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/getCurrentUser';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + +
+

Example response (404):

+
+
+ + Show headers + +
cache-control: no-cache, private
+content-type: application/json
+vary: Origin
+ 
+
+{
+    "message": "The route api/getCurrentUser could not be found."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/getCurrentUser +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

GET api/fav/{id}

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "api/documentation/api/fav/iste" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "api/documentation/api/fav/iste"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/fav/iste';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + +
+

Example response (404):

+
+
+ + Show headers + +
cache-control: no-cache, private
+content-type: application/json
+vary: Origin
+ 
+
+{
+    "message": "The route api/fav/iste could not be found."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/fav/{id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the fav. Example: iste

+
+
+ +

POST api/addfav

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "api/documentation/api/addfav" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"user_id\": \"voluptatem\",
+    \"kebab_id\": \"ullam\"
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/addfav"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "user_id": "voluptatem",
+    "kebab_id": "ullam"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/addfav';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'user_id' => 'voluptatem',
+            'kebab_id' => 'ullam',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/addfav +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Body Parameters

+
+ user_id   +string  +   + +
+

Example: voluptatem

+
+
+ kebab_id   +string  +   + +
+

Example: ullam

+
+
+ +

POST api/remfav

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "api/documentation/api/remfav" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"user_id\": \"eum\",
+    \"kebab_id\": \"dicta\"
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/remfav"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "user_id": "eum",
+    "kebab_id": "dicta"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/remfav';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'user_id' => 'eum',
+            'kebab_id' => 'dicta',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/remfav +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Body Parameters

+
+ user_id   +string  +   + +
+

Example: eum

+
+
+ kebab_id   +string  +   + +
+

Example: dicta

+
+
+ +

PUT api/changeName/{id}

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "api/documentation/api/changeName/id" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"newName\": \"voluptas\"
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/changeName/id"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "newName": "voluptas"
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/changeName/id';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'newName' => 'voluptas',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/changeName/{id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the changeName. Example: id

+
+

Body Parameters

+
+ newName   +string  +   + +
+

Example: voluptas

+
+
+ +

PUT api/changePassword/{id}

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "api/documentation/api/changePassword/culpa" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"newPassword\": \"eligendi\",
+    \"confirmPassword\": \"possimus\"
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/changePassword/culpa"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "newPassword": "eligendi",
+    "confirmPassword": "possimus"
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/changePassword/culpa';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'newPassword' => 'eligendi',
+            'confirmPassword' => 'possimus',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/changePassword/{id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the changePassword. Example: culpa

+
+

Body Parameters

+
+ newPassword   +string  +   + +
+

Example: eligendi

+
+
+ confirmPassword   +string  +   + +
+

Example: possimus

+
+
+ +

PUT api/changeEmail/{id}

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "api/documentation/api/changeEmail/et" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"newEmail\": \"ervin.kuphal@example.net\"
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/changeEmail/et"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "newEmail": "ervin.kuphal@example.net"
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/changeEmail/et';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'newEmail' => 'ervin.kuphal@example.net',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/changeEmail/{id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the changeEmail. Example: et

+
+

Body Parameters

+
+ newEmail   +string  +   + +
+

Must be a valid email address. Example: ervin.kuphal@example.net

+
+
+ +

POST api/suggestions

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "api/documentation/api/suggestions" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"user\": \"bghrjiaodyjq\",
+    \"contents\": \"vyjf\"
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/suggestions"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "user": "bghrjiaodyjq",
+    "contents": "vyjf"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/suggestions';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'user' => 'bghrjiaodyjq',
+            'contents' => 'vyjf',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/suggestions +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Body Parameters

+
+ user   +string  +   + +
+

Must not be greater than 255 characters. Example: bghrjiaodyjq

+
+
+ contents   +string  +   + +
+

Must not be greater than 255 characters. Example: vyjf

+
+
+ +

POST api/kebabs/{kebabId}/comments

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "api/documentation/api/kebabs/reprehenderit/comments" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"id_user\": 20,
+    \"comment\": \"aliquam\"
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/kebabs/reprehenderit/comments"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "id_user": 20,
+    "comment": "aliquam"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/kebabs/reprehenderit/comments';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'id_user' => 20,
+            'comment' => 'aliquam',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/kebabs/{kebabId}/comments +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: reprehenderit

+
+

Body Parameters

+
+ id_user   +integer  +   + +
+

Example: 20

+
+
+ comment   +string  +   + +
+

Example: aliquam

+
+
+ +

DELETE api/kebabs/{kebabId}/comments

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "api/documentation/api/kebabs/rerum/comments" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"id_user\": 12,
+    \"comment\": \"inventore\"
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/kebabs/rerum/comments"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "id_user": 12,
+    "comment": "inventore"
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/kebabs/rerum/comments';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'id_user' => 12,
+            'comment' => 'inventore',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/kebabs/{kebabId}/comments +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: rerum

+
+

Body Parameters

+
+ id_user   +integer  +   + +
+

Example: 12

+
+
+ comment   +string  +   + +
+

Example: inventore

+
+
+ +

PUT api/changeUserRole/{id}

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "api/documentation/api/changeUserRole/nesciunt" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"isAdmin\": true
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/changeUserRole/nesciunt"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "isAdmin": true
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/changeUserRole/nesciunt';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'isAdmin' => true,
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/changeUserRole/{id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the changeUserRole. Example: nesciunt

+
+

Body Parameters

+
+ isAdmin   +boolean  +   + + +
+

Example: true

+
+
+ +

DELETE api/deleteUser/{id}

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "api/documentation/api/deleteUser/minima" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "api/documentation/api/deleteUser/minima"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/deleteUser/minima';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/deleteUser/{id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the deleteUser. Example: minima

+
+
+ +

GET api/getAllUsers

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "api/documentation/api/getAllUsers" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "api/documentation/api/getAllUsers"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/getAllUsers';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + +
+

Example response (404):

+
+
+ + Show headers + +
cache-control: no-cache, private
+content-type: application/json
+vary: Origin
+ 
+
+{
+    "message": "The route api/getAllUsers could not be found."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/getAllUsers +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

POST api/addNewUser

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "api/documentation/api/addNewUser" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"name\": \"eveniet\",
+    \"email\": \"tyrique37@example.org\",
+    \"password\": \"qui\"
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/addNewUser"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "name": "eveniet",
+    "email": "tyrique37@example.org",
+    "password": "qui"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/addNewUser';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'name' => 'eveniet',
+            'email' => 'tyrique37@example.org',
+            'password' => 'qui',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/addNewUser +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Body Parameters

+
+ name   +string  +   + +
+

Example: eveniet

+
+
+ email   +string  +   + +
+

Must be a valid email address. Example: tyrique37@example.org

+
+
+ password   +string  +   + +
+

Example: qui

+
+
+ +

POST api/addKebab

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "api/documentation/api/addKebab" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"logo\": \"quis\",
+    \"name\": \"qui\",
+    \"address\": \"dicta\",
+    \"coordinates\": \"porro\",
+    \"sauces\": \"impedit\",
+    \"meats\": \"dolorem\",
+    \"status\": \"rem\",
+    \"opening_hours\": \"eligendi\",
+    \"opening_year\": \"eveniet\",
+    \"closing_year\": \"omnis\",
+    \"is_crafted\": \"molestias\",
+    \"is_premises\": \"excepturi\",
+    \"is_chainstore\": \"iste\",
+    \"ordering_options\": \"nam\"
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/addKebab"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "logo": "quis",
+    "name": "qui",
+    "address": "dicta",
+    "coordinates": "porro",
+    "sauces": "impedit",
+    "meats": "dolorem",
+    "status": "rem",
+    "opening_hours": "eligendi",
+    "opening_year": "eveniet",
+    "closing_year": "omnis",
+    "is_crafted": "molestias",
+    "is_premises": "excepturi",
+    "is_chainstore": "iste",
+    "ordering_options": "nam"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/addKebab';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'logo' => 'quis',
+            'name' => 'qui',
+            'address' => 'dicta',
+            'coordinates' => 'porro',
+            'sauces' => 'impedit',
+            'meats' => 'dolorem',
+            'status' => 'rem',
+            'opening_hours' => 'eligendi',
+            'opening_year' => 'eveniet',
+            'closing_year' => 'omnis',
+            'is_crafted' => 'molestias',
+            'is_premises' => 'excepturi',
+            'is_chainstore' => 'iste',
+            'ordering_options' => 'nam',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/addKebab +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Body Parameters

+
+ logo   +string  +   + +
+

Example: quis

+
+
+ name   +string  +   + +
+

Example: qui

+
+
+ address   +string  +   + +
+

Example: dicta

+
+
+ coordinates   +string  +   + +
+

Example: porro

+
+
+ sauces   +string  +   + +
+

Example: impedit

+
+
+ meats   +string  +   + +
+

Example: dolorem

+
+
+ status   +string  +   + +
+

Example: rem

+
+
+ opening_hours   +string  +   + +
+

Example: eligendi

+
+
+ opening_year   +string  +   + +
+

Example: eveniet

+
+
+ closing_year   +string  +   + +
+

Example: omnis

+
+
+ is_crafted   +string  +   + +
+

Example: molestias

+
+
+ is_premises   +string  +   + +
+

Example: excepturi

+
+
+ is_chainstore   +string  +   + +
+

Example: iste

+
+
+ ordering_options   +string  +   + +
+

Example: nam

+
+
+ +

DELETE api/kebabs/{id}

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "api/documentation/api/kebabs/architecto" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "api/documentation/api/kebabs/architecto"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/kebabs/architecto';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/kebabs/{id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the kebab. Example: architecto

+
+
+ + + +

+

+ + + + + + + + + + +

PUT api/kebabs/{kebabId}/name

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "api/documentation/api/kebabs/minima/name" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"name\": \"molestiae\"
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/kebabs/minima/name"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "name": "molestiae"
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/kebabs/minima/name';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'name' => 'molestiae',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/kebabs/{kebabId}/name +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: minima

+
+

Body Parameters

+
+ name   +string  +   + +
+

Example: molestiae

+
+
+ +

PUT api/kebabs/{kebabId}/address

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "api/documentation/api/kebabs/aut/address" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"address\": \"hasoytxcdkunpxsulsofhjcbd\"
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/kebabs/aut/address"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "address": "hasoytxcdkunpxsulsofhjcbd"
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/kebabs/aut/address';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'address' => 'hasoytxcdkunpxsulsofhjcbd',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/kebabs/{kebabId}/address +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: aut

+
+

Body Parameters

+
+ address   +string  +   + +
+

Must not be greater than 255 characters. Example: hasoytxcdkunpxsulsofhjcbd

+
+
+ +

PUT api/kebabs/{kebabId}/coordinates

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "api/documentation/api/kebabs/autem/coordinates" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"coordinates\": []
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/kebabs/autem/coordinates"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "coordinates": []
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/kebabs/autem/coordinates';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'coordinates' => [],
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/kebabs/{kebabId}/coordinates +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: autem

+
+

Body Parameters

+
+ coordinates   +object  +   + +
+ +
+
+ +

POST api/kebabs/{kebabId}/sauce

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "api/documentation/api/kebabs/accusamus/sauce" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"sauce\": \"nulla\"
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/kebabs/accusamus/sauce"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "sauce": "nulla"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/kebabs/accusamus/sauce';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'sauce' => 'nulla',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/kebabs/{kebabId}/sauce +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: accusamus

+
+

Body Parameters

+
+ sauce   +string  +   + +
+

Example: nulla

+
+
+ +

DELETE api/kebabs/{kebabId}/sauce

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "api/documentation/api/kebabs/officia/sauce" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"sauce\": \"est\"
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/kebabs/officia/sauce"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "sauce": "est"
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/kebabs/officia/sauce';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'sauce' => 'est',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/kebabs/{kebabId}/sauce +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: officia

+
+

Body Parameters

+
+ sauce   +string  +   + +
+

Example: est

+
+
+ +

POST api/kebabs/{kebabId}/meat

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "api/documentation/api/kebabs/et/meat" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"meat\": \"voluptates\"
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/kebabs/et/meat"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "meat": "voluptates"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/kebabs/et/meat';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'meat' => 'voluptates',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/kebabs/{kebabId}/meat +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: et

+
+

Body Parameters

+
+ meat   +string  +   + +
+

Example: voluptates

+
+
+ +

DELETE api/kebabs/{kebabId}/meat

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "api/documentation/api/kebabs/et/meat" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"meat\": \"suscipit\"
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/kebabs/et/meat"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "meat": "suscipit"
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/kebabs/et/meat';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'meat' => 'suscipit',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/kebabs/{kebabId}/meat +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: et

+
+

Body Parameters

+
+ meat   +string  +   + +
+

Example: suscipit

+
+
+ +

PUT api/kebabs/{kebabId}/status

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "api/documentation/api/kebabs/doloribus/status" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"status\": \"exists\"
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/kebabs/doloribus/status"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "status": "exists"
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/kebabs/doloribus/status';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'status' => 'exists',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/kebabs/{kebabId}/status +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: doloribus

+
+

Body Parameters

+
+ status   +string  +   + +
+

Example: exists

+Must be one of: +
  • exists
  • closed
  • planned
+
+
+ +

POST api/kebabs/{kebabId}/opening-hours

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "api/documentation/api/kebabs/quam/opening-hours" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"day\": \"saturday\",
+    \"hours\": \"recusandae\"
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/kebabs/quam/opening-hours"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "day": "saturday",
+    "hours": "recusandae"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/kebabs/quam/opening-hours';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'day' => 'saturday',
+            'hours' => 'recusandae',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/kebabs/{kebabId}/opening-hours +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: quam

+
+

Body Parameters

+
+ day   +string  +   + +
+

Example: saturday

+Must be one of: +
  • monday
  • tuesday
  • wednesday
  • thursday
  • friday
  • saturday
  • sunday
+
+
+ hours   +string  +   + +
+

Example: recusandae

+
+
+ +

DELETE api/kebabs/{kebabId}/opening-hours

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "api/documentation/api/kebabs/enim/opening-hours" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"day\": \"wednesday\"
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/kebabs/enim/opening-hours"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "day": "wednesday"
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/kebabs/enim/opening-hours';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'day' => 'wednesday',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/kebabs/{kebabId}/opening-hours +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: enim

+
+

Body Parameters

+
+ day   +string  +   + +
+

Example: wednesday

+Must be one of: +
  • monday
  • tuesday
  • wednesday
  • thursday
  • friday
  • saturday
  • sunday
+
+
+ +

PUT api/kebabs/{kebabId}/opening-hours

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "api/documentation/api/kebabs/maxime/opening-hours" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"day\": \"friday\",
+    \"hours\": \"vel\"
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/kebabs/maxime/opening-hours"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "day": "friday",
+    "hours": "vel"
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/kebabs/maxime/opening-hours';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'day' => 'friday',
+            'hours' => 'vel',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/kebabs/{kebabId}/opening-hours +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: maxime

+
+

Body Parameters

+
+ day   +string  +   + +
+

Example: friday

+Must be one of: +
  • monday
  • tuesday
  • wednesday
  • thursday
  • friday
  • saturday
  • sunday
+
+
+ hours   +string  +   + +
+

Example: vel

+
+
+ +

PUT api/kebabs/{kebabId}/opening-year

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "api/documentation/api/kebabs/necessitatibus/opening-year" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"opening_year\": \"1897\"
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/kebabs/necessitatibus/opening-year"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "opening_year": "1897"
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/kebabs/necessitatibus/opening-year';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'opening_year' => '1897',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/kebabs/{kebabId}/opening-year +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: necessitatibus

+
+

Body Parameters

+
+ opening_year   +string  +optional   + +
+

Must be 4 digits. Example: 1897

+
+
+ +

PUT api/kebabs/{kebabId}/closing-year

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "api/documentation/api/kebabs/velit/closing-year" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"closing_year\": \"8861\"
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/kebabs/velit/closing-year"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "closing_year": "8861"
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/kebabs/velit/closing-year';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'closing_year' => '8861',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/kebabs/{kebabId}/closing-year +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: velit

+
+

Body Parameters

+
+ closing_year   +string  +optional   + +
+

Must be 4 digits. Example: 8861

+
+
+ +

PUT api/kebabs/{kebabId}/is-crafted

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "api/documentation/api/kebabs/dicta/is-crafted" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"is_crafted\": true
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/kebabs/dicta/is-crafted"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "is_crafted": true
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/kebabs/dicta/is-crafted';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'is_crafted' => true,
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/kebabs/{kebabId}/is-crafted +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: dicta

+
+

Body Parameters

+
+ is_crafted   +boolean  +optional   + + +
+

Example: true

+
+
+ +

PUT api/kebabs/{kebabId}/is-premises

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "api/documentation/api/kebabs/neque/is-premises" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"is_premises\": false
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/kebabs/neque/is-premises"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "is_premises": false
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/kebabs/neque/is-premises';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'is_premises' => false,
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/kebabs/{kebabId}/is-premises +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: neque

+
+

Body Parameters

+
+ is_premises   +boolean  +optional   + + +
+

Example: false

+
+
+ +

PUT api/kebabs/{kebabId}/is-chainstore

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "api/documentation/api/kebabs/corporis/is-chainstore" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"is_chainstore\": false
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/kebabs/corporis/is-chainstore"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "is_chainstore": false
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/kebabs/corporis/is-chainstore';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'is_chainstore' => false,
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/kebabs/{kebabId}/is-chainstore +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: corporis

+
+

Body Parameters

+
+ is_chainstore   +boolean  +optional   + + +
+

Example: false

+
+
+ +

POST api/kebabs/{kebabId}/ordering-options

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "api/documentation/api/kebabs/eum/ordering-options" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"new_option\": \"distinctio\"
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/kebabs/eum/ordering-options"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "new_option": "distinctio"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/kebabs/eum/ordering-options';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'new_option' => 'distinctio',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/kebabs/{kebabId}/ordering-options +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: eum

+
+

Body Parameters

+
+ new_option   +string  +   + +
+

Example: distinctio

+
+
+ +

DELETE api/kebabs/{kebabId}/ordering-options

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "api/documentation/api/kebabs/tenetur/ordering-options" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"option_to_remove\": \"eaque\"
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/kebabs/tenetur/ordering-options"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "option_to_remove": "eaque"
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/kebabs/tenetur/ordering-options';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'option_to_remove' => 'eaque',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/kebabs/{kebabId}/ordering-options +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: tenetur

+
+

Body Parameters

+
+ option_to_remove   +string  +   + +
+

Example: eaque

+
+
+ +

POST api/kebabs/{kebabId}/pages

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "api/documentation/api/kebabs/id/pages" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"new_page\": \"voluptates\"
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/kebabs/id/pages"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "new_page": "voluptates"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/kebabs/id/pages';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'new_page' => 'voluptates',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/kebabs/{kebabId}/pages +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: id

+
+

Body Parameters

+
+ new_page   +string  +   + +
+

Example: voluptates

+
+
+ +

DELETE api/kebabs/{kebabId}/pages

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "api/documentation/api/kebabs/iusto/pages" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"page_to_remove\": \"quaerat\"
+}"
+
+ + +
+
const url = new URL(
+    "api/documentation/api/kebabs/iusto/pages"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "page_to_remove": "quaerat"
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/kebabs/iusto/pages';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'page_to_remove' => 'quaerat',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/kebabs/{kebabId}/pages +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: iusto

+
+

Body Parameters

+
+ page_to_remove   +string  +   + +
+

Example: quaerat

+
+
+ +

GET api/suggestions

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "api/documentation/api/suggestions" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "api/documentation/api/suggestions"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/suggestions';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + +
+

Example response (404):

+
+
+ + Show headers + +
cache-control: no-cache, private
+content-type: application/json
+vary: Origin
+ 
+
+{
+    "message": "The route api/suggestions could not be found."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/suggestions +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

DELETE api/suggestions/{id}

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "api/documentation/api/suggestions/non" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "api/documentation/api/suggestions/non"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'api/documentation/api/suggestions/non';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/suggestions/{id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the suggestion. Example: non

+
+
+ + + + +
+
+
+ + + +
+
+
+ + diff --git a/Backend/api/documentation/js/theme-default-4.39.0.js b/Backend/api/documentation/js/theme-default-4.39.0.js new file mode 100644 index 0000000..31c8451 --- /dev/null +++ b/Backend/api/documentation/js/theme-default-4.39.0.js @@ -0,0 +1,149 @@ +document.addEventListener('DOMContentLoaded', function() { + const updateHash = function (id) { + window.location.hash = `#${id}`; + }; + + const navButton = document.getElementById('nav-button'); + const menuWrapper = document.querySelector('.tocify-wrapper'); + function toggleSidebar(event) { + event.preventDefault(); + if (menuWrapper) { + menuWrapper.classList.toggle('open'); + navButton.classList.toggle('open'); + } + } + function closeSidebar() { + if (menuWrapper) { + menuWrapper.classList.remove('open'); + navButton.classList.remove('open'); + } + } + navButton.addEventListener('click', toggleSidebar); + + window.hljs.highlightAll(); + + const wrapper = document.getElementById('toc'); + // https://jets.js.org/ + window.jets = new window.Jets({ + // *OR - Selects elements whose values contains at least one part of search substring + searchSelector: '*OR', + searchTag: '#input-search', + contentTag: '#toc li', + didSearch: function(term) { + wrapper.classList.toggle('jets-searching', String(term).length > 0) + }, + // map these accent keys to plain values + diacriticsMap: { + a: 'ÀÁÂÃÄÅàáâãäåĀāąĄ', + c: 'ÇçćĆčČ', + d: 'đĐďĎ', + e: 'ÈÉÊËèéêëěĚĒēęĘ', + i: 'ÌÍÎÏìíîïĪī', + l: 'łŁ', + n: 'ÑñňŇńŃ', + o: 'ÒÓÔÕÕÖØòóôõöøŌō', + r: 'řŘ', + s: 'ŠšśŚ', + t: 'ťŤ', + u: 'ÙÚÛÜùúûüůŮŪū', + y: 'ŸÿýÝ', + z: 'ŽžżŻźŹ' + } + }); + + function hashChange() { + const currentItems = document.querySelectorAll('.tocify-subheader.visible, .tocify-item.tocify-focus'); + Array.from(currentItems).forEach((elem) => { + elem.classList.remove('visible', 'tocify-focus'); + }); + + const currentTag = document.querySelector(`a[href="${window.location.hash}"]`); + if (currentTag) { + const parent = currentTag.closest('.tocify-subheader'); + if (parent) { + parent.classList.add('visible'); + } + + const siblings = currentTag.closest('.tocify-header'); + if (siblings) { + Array.from(siblings.querySelectorAll('.tocify-subheader')).forEach((elem) => { + elem.classList.add('visible'); + }); + } + + currentTag.parentElement.classList.add('tocify-focus'); + + // wait for dom changes to be done + setTimeout(() => { + currentTag.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'center' }); + // only close the sidebar on level-2 events + if (currentTag.parentElement.classList.contains('level-2')) { + closeSidebar(); + } + }, 1500); + } + } + + let languages = JSON.parse(document.body.getAttribute('data-languages')); + // Support a key => value object where the key is the name, or an array of strings where the value is the name + if (!Array.isArray(languages)) { + languages = Object.values(languages); + } + // if there is no language use the first one + const currentLanguage = window.localStorage.getItem('language') || languages[0]; + const languageStyle = document.getElementById('language-style'); + const langSelector = document.querySelectorAll('.lang-selector button.lang-button'); + + function setActiveLanguage(newLanguage) { + window.localStorage.setItem('language', newLanguage); + if (!languageStyle) { + return; + } + + const newStyle = languages.map((language) => { + return language === newLanguage + // the current one should be visible + ? `body .content .${language}-example pre { display: block; }` + // the inactive one should be hidden + : `body .content .${language}-example pre { display: none; }`; + }).join(`\n`); + + Array.from(langSelector).forEach((elem) => { + elem.classList.toggle('active', elem.getAttribute('data-language-name') === newLanguage); + }); + + const activeHash = window.location.hash.slice(1); + + languageStyle.innerHTML = newStyle; + + setTimeout(() => { + updateHash(activeHash); + }, 200); + } + + setActiveLanguage(currentLanguage); + + Array.from(langSelector).forEach((elem) => { + elem.addEventListener('click', () => { + const newLanguage = elem.getAttribute('data-language-name'); + setActiveLanguage(newLanguage); + }); + }); + + window.addEventListener('hashchange', hashChange, false); + + const divs = document.querySelectorAll('.content h1[id], .content h2[id]'); + + document.addEventListener('scroll', () => { + divs.forEach(item => { + const rect = item.getBoundingClientRect(); + if (rect.top > 0 && rect.top < 150) { + const location = window.location.toString().split('#')[0]; + history.replaceState(null, null, location + '#' + item.id); + hashChange(); + } + }); + }); + + hashChange(); +}); diff --git a/Backend/api/documentation/js/tryitout-4.39.0.js b/Backend/api/documentation/js/tryitout-4.39.0.js new file mode 100644 index 0000000..2a1d2b8 --- /dev/null +++ b/Backend/api/documentation/js/tryitout-4.39.0.js @@ -0,0 +1,289 @@ +window.abortControllers = {}; + +function cacheAuthValue() { + // Whenever the auth header is set for one endpoint, cache it for the others + window.lastAuthValue = ''; + let authInputs = document.querySelectorAll(`.auth-value`) + authInputs.forEach(el => { + el.addEventListener('input', (event) => { + window.lastAuthValue = event.target.value; + authInputs.forEach(otherInput => { + if (otherInput === el) return; + // Don't block the main thread + setTimeout(() => { + otherInput.value = window.lastAuthValue; + }, 0); + }); + }); + }); +} + +window.addEventListener('DOMContentLoaded', cacheAuthValue); + +function getCookie(name) { + if (!document.cookie) { + return null; + } + + const cookies = document.cookie.split(';') + .map(c => c.trim()) + .filter(c => c.startsWith(name + '=')); + + if (cookies.length === 0) { + return null; + } + + return decodeURIComponent(cookies[0].split('=')[1]); +} + +function tryItOut(endpointId) { + document.querySelector(`#btn-tryout-${endpointId}`).hidden = true; + document.querySelector(`#btn-canceltryout-${endpointId}`).hidden = false; + const executeBtn = document.querySelector(`#btn-executetryout-${endpointId}`).hidden = false; + executeBtn.disabled = false; + + // Show all input fields + document.querySelectorAll(`input[data-endpoint=${endpointId}],label[data-endpoint=${endpointId}]`) + .forEach(el => el.style.display = 'block'); + + if (document.querySelector(`#form-${endpointId}`).dataset.authed === "1") { + const authElement = document.querySelector(`#auth-${endpointId}`); + authElement && (authElement.hidden = false); + } + // Expand all nested fields + document.querySelectorAll(`#form-${endpointId} details`) + .forEach(el => el.open = true); +} + +function cancelTryOut(endpointId) { + if (window.abortControllers[endpointId]) { + window.abortControllers[endpointId].abort(); + delete window.abortControllers[endpointId]; + } + + document.querySelector(`#btn-tryout-${endpointId}`).hidden = false; + const executeBtn = document.querySelector(`#btn-executetryout-${endpointId}`); + executeBtn.hidden = true; + executeBtn.textContent = executeBtn.dataset.initialText; + document.querySelector(`#btn-canceltryout-${endpointId}`).hidden = true; + // Hide inputs + document.querySelectorAll(`input[data-endpoint=${endpointId}],label[data-endpoint=${endpointId}]`) + .forEach(el => el.style.display = 'none'); + document.querySelectorAll(`#form-${endpointId} details`) + .forEach(el => el.open = false); + const authElement = document.querySelector(`#auth-${endpointId}`); + authElement && (authElement.hidden = true); + + document.querySelector('#execution-results-' + endpointId).hidden = true; + document.querySelector('#execution-error-' + endpointId).hidden = true; + + // Revert to sample code blocks + document.querySelector('#example-requests-' + endpointId).hidden = false; + document.querySelector('#example-responses-' + endpointId).hidden = false; +} + +function makeAPICall(method, path, body = {}, query = {}, headers = {}, endpointId = null) { + console.log({endpointId, path, body, query, headers}); + + if (!(body instanceof FormData) && typeof body !== "string") { + body = JSON.stringify(body) + } + + const url = new URL(window.tryItOutBaseUrl + '/' + path.replace(/^\//, '')); + + // We need this function because if you try to set an array or object directly to a URLSearchParams object, + // you'll get [object Object] or the array.toString() + function addItemToSearchParamsObject(key, value, searchParams) { + if (Array.isArray(value)) { + value.forEach((v, i) => { + // Append {filters: [first, second]} as filters[0]=first&filters[1]second + addItemToSearchParamsObject(key + '[' + i + ']', v, searchParams); + }) + } else if (typeof value === 'object' && value !== null) { + Object.keys(value).forEach((i) => { + // Append {filters: {name: first}} as filters[name]=first + addItemToSearchParamsObject(key + '[' + i + ']', value[i], searchParams); + }); + } else { + searchParams.append(key, value); + } + } + + Object.keys(query) + .forEach(key => addItemToSearchParamsObject(key, query[key], url.searchParams)); + + window.abortControllers[endpointId] = new AbortController(); + + return fetch(url, { + method, + headers, + body: method === 'GET' ? undefined : body, + signal: window.abortControllers[endpointId].signal, + referrer: window.tryItOutBaseUrl, + mode: 'cors', + credentials: 'same-origin', + }) + .then(response => Promise.all([response.status, response.statusText, response.text(), response.headers])); +} + +function hideCodeSamples(endpointId) { + document.querySelector('#example-requests-' + endpointId).hidden = true; + document.querySelector('#example-responses-' + endpointId).hidden = true; +} + +function handleResponse(endpointId, response, status, headers) { + hideCodeSamples(endpointId); + + // Hide error views + document.querySelector('#execution-error-' + endpointId).hidden = true; + + const responseContentEl = document.querySelector('#execution-response-content-' + endpointId); + + // Check if the response contains Laravel's dd() default dump output + const isLaravelDump = response.includes('Sfdump'); + + // If it's a Laravel dd() dump, use innerHTML to render it safely + if (isLaravelDump) { + responseContentEl.innerHTML = response === '' ? responseContentEl.dataset.emptyResponseText : response; + } else { + // Otherwise, stick to textContent for regular responses + responseContentEl.textContent = response === '' ? responseContentEl.dataset.emptyResponseText : response; + } + + // Prettify it if it's JSON + let isJson = false; + try { + const jsonParsed = JSON.parse(response); + if (jsonParsed !== null) { + isJson = true; + response = JSON.stringify(jsonParsed, null, 4); + responseContentEl.textContent = response; + } + } catch (e) { + + } + + isJson && window.hljs.highlightElement(responseContentEl); + const statusEl = document.querySelector('#execution-response-status-' + endpointId); + statusEl.textContent = ` (${status})`; + document.querySelector('#execution-results-' + endpointId).hidden = false; + statusEl.scrollIntoView({behavior: "smooth", block: "center"}); +} + +function handleError(endpointId, err) { + hideCodeSamples(endpointId); + // Hide response views + document.querySelector('#execution-results-' + endpointId).hidden = true; + + // Show error views + let errorMessage = err.message || err; + const $errorMessageEl = document.querySelector('#execution-error-message-' + endpointId); + $errorMessageEl.textContent = errorMessage + $errorMessageEl.textContent; + const errorEl = document.querySelector('#execution-error-' + endpointId); + errorEl.hidden = false; + errorEl.scrollIntoView({behavior: "smooth", block: "center"}); + +} + +async function executeTryOut(endpointId, form) { + const executeBtn = document.querySelector(`#btn-executetryout-${endpointId}`); + executeBtn.textContent = executeBtn.dataset.loadingText; + executeBtn.disabled = true; + executeBtn.scrollIntoView({behavior: "smooth", block: "center"}); + + let body; + let setter; + if (form.dataset.hasfiles === "1") { + body = new FormData(); + setter = (name, value) => body.append(name, value); + } else if (form.dataset.isarraybody === "1") { + body = []; + setter = (name, value) => _.set(body, name, value); + } else { + body = {}; + setter = (name, value) => _.set(body, name, value); + } + const bodyParameters = form.querySelectorAll('input[data-component=body]'); + bodyParameters.forEach(el => { + let value = el.value; + + if (el.type === 'number' && typeof value === 'string') { + value = parseFloat(value); + } + + if (el.type === 'file' && el.files[0]) { + setter(el.name, el.files[0]); + return; + } + + if (el.type !== 'radio') { + if (value === "" && el.required === false) { + // Don't include empty optional values in the request + return; + } + setter(el.name, value); + return; + } + + if (el.checked) { + value = (value === 'false') ? false : true; + setter(el.name, value); + } + }); + + const query = {}; + const queryParameters = form.querySelectorAll('input[data-component=query]'); + queryParameters.forEach(el => { + if (el.type !== 'radio' || (el.type === 'radio' && el.checked)) { + if (el.value === '') { + // Don't include empty values in the request + return; + } + + _.set(query, el.name, el.value); + } + }); + + let path = form.dataset.path; + const urlParameters = form.querySelectorAll('input[data-component=url]'); + urlParameters.forEach(el => (path = path.replace(new RegExp(`\\{${el.name}\\??}`), el.value))); + + const headers = Object.fromEntries(Array.from(form.querySelectorAll('input[data-component=header]')) + .map(el => [el.name, el.value])); + + // When using FormData, the browser sets the correct content-type + boundary + let method = form.dataset.method; + if (body instanceof FormData) { + delete headers['Content-Type']; + + // When using FormData with PUT or PATCH, use method spoofing so PHP can access the post body + if (['PUT', 'PATCH'].includes(form.dataset.method)) { + method = 'POST'; + setter('_method', form.dataset.method); + } + } + + let preflightPromise = Promise.resolve(); + if (window.useCsrf && window.csrfUrl) { + preflightPromise = makeAPICall('GET', window.csrfUrl).then(() => { + headers['X-XSRF-TOKEN'] = getCookie('XSRF-TOKEN'); + }); + } + + return preflightPromise.then(() => makeAPICall(method, path, body, query, headers, endpointId)) + .then(([responseStatus, statusText, responseContent, responseHeaders]) => { + handleResponse(endpointId, responseContent, responseStatus, responseHeaders) + }) + .catch(err => { + if (err.name === "AbortError") { + console.log("Request cancelled"); + return; + } + console.log("Error while making request: ", err); + handleError(endpointId, err); + }) + .finally(() => { + executeBtn.disabled = false; + executeBtn.textContent = executeBtn.dataset.initialText; + }); +} diff --git a/Backend/api/documentation/openapi.yaml b/Backend/api/documentation/openapi.yaml new file mode 100644 index 0000000..cb450fb --- /dev/null +++ b/Backend/api/documentation/openapi.yaml @@ -0,0 +1,1379 @@ +openapi: 3.0.3 +info: + title: 'Kebab Api' + description: '' + version: 1.0.0 +servers: + - + url: api/documentation +paths: + /api/register: + post: + summary: '' + operationId: postApiRegister + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: '' + example: est + nullable: false + email: + type: string + description: 'Must be a valid email address.' + example: igibson@example.com + nullable: false + password: + type: string + description: '' + example: corporis + nullable: false + required: + - name + - email + - password + security: [] + /api/login: + post: + summary: '' + operationId: postApiLogin + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + email: + type: string + description: 'Must be a valid email address. The email of an existing record in the users table.' + example: kirlin.tara@example.com + nullable: false + password: + type: string + description: '' + example: expedita + nullable: false + required: + - email + - password + security: [] + /api/kebabs: + get: + summary: '' + operationId: getApiKebabs + description: '' + parameters: [] + responses: + 404: + description: '' + content: + application/json: + schema: + type: object + example: + message: 'The route api/kebabs could not be found.' + properties: + message: + type: string + example: 'The route api/kebabs could not be found.' + tags: + - Endpoints + security: [] + /api/scrape-reviews: + get: + summary: '' + operationId: getApiScrapeReviews + description: '' + parameters: [] + responses: + 404: + description: '' + content: + application/json: + schema: + type: object + example: + message: 'The route api/scrape-reviews could not be found.' + properties: + message: + type: string + example: 'The route api/scrape-reviews could not be found.' + tags: + - Endpoints + security: [] + /api/logout: + post: + summary: '' + operationId: postApiLogout + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + security: [] + /api/getCurrentUser: + get: + summary: '' + operationId: getApiGetCurrentUser + description: '' + parameters: [] + responses: + 404: + description: '' + content: + application/json: + schema: + type: object + example: + message: 'The route api/getCurrentUser could not be found.' + properties: + message: + type: string + example: 'The route api/getCurrentUser could not be found.' + tags: + - Endpoints + security: [] + '/api/fav/{id}': + get: + summary: '' + operationId: getApiFavId + description: '' + parameters: [] + responses: + 404: + description: '' + content: + application/json: + schema: + type: object + example: + message: 'The route api/fav/iste could not be found.' + properties: + message: + type: string + example: 'The route api/fav/iste could not be found.' + tags: + - Endpoints + security: [] + parameters: + - + in: path + name: id + description: 'The ID of the fav.' + example: iste + required: true + schema: + type: string + /api/addfav: + post: + summary: '' + operationId: postApiAddfav + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + user_id: + type: string + description: '' + example: voluptatem + nullable: false + kebab_id: + type: string + description: '' + example: ullam + nullable: false + required: + - user_id + - kebab_id + security: [] + /api/remfav: + post: + summary: '' + operationId: postApiRemfav + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + user_id: + type: string + description: '' + example: eum + nullable: false + kebab_id: + type: string + description: '' + example: dicta + nullable: false + required: + - user_id + - kebab_id + security: [] + '/api/changeName/{id}': + put: + summary: '' + operationId: putApiChangeNameId + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + newName: + type: string + description: '' + example: voluptas + nullable: false + required: + - newName + security: [] + parameters: + - + in: path + name: id + description: 'The ID of the changeName.' + example: id + required: true + schema: + type: string + '/api/changePassword/{id}': + put: + summary: '' + operationId: putApiChangePasswordId + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + newPassword: + type: string + description: '' + example: eligendi + nullable: false + confirmPassword: + type: string + description: '' + example: possimus + nullable: false + required: + - newPassword + - confirmPassword + security: [] + parameters: + - + in: path + name: id + description: 'The ID of the changePassword.' + example: culpa + required: true + schema: + type: string + '/api/changeEmail/{id}': + put: + summary: '' + operationId: putApiChangeEmailId + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + newEmail: + type: string + description: 'Must be a valid email address.' + example: ervin.kuphal@example.net + nullable: false + required: + - newEmail + security: [] + parameters: + - + in: path + name: id + description: 'The ID of the changeEmail.' + example: et + required: true + schema: + type: string + /api/suggestions: + post: + summary: '' + operationId: postApiSuggestions + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + user: + type: string + description: 'Must not be greater than 255 characters.' + example: bghrjiaodyjq + nullable: false + contents: + type: string + description: 'Must not be greater than 255 characters.' + example: vyjf + nullable: false + required: + - user + - contents + security: [] + get: + summary: '' + operationId: getApiSuggestions + description: '' + parameters: [] + responses: + 404: + description: '' + content: + application/json: + schema: + type: object + example: + message: 'The route api/suggestions could not be found.' + properties: + message: + type: string + example: 'The route api/suggestions could not be found.' + tags: + - Endpoints + security: [] + '/api/kebabs/{kebabId}/comments': + post: + summary: '' + operationId: postApiKebabsKebabIdComments + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + id_user: + type: integer + description: '' + example: 20 + nullable: false + comment: + type: string + description: '' + example: aliquam + nullable: false + required: + - id_user + - comment + security: [] + delete: + summary: '' + operationId: deleteApiKebabsKebabIdComments + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + id_user: + type: integer + description: '' + example: 12 + nullable: false + comment: + type: string + description: '' + example: inventore + nullable: false + required: + - id_user + - comment + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: reprehenderit + required: true + schema: + type: string + '/api/changeUserRole/{id}': + put: + summary: '' + operationId: putApiChangeUserRoleId + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + isAdmin: + type: boolean + description: '' + example: true + nullable: false + required: + - isAdmin + security: [] + parameters: + - + in: path + name: id + description: 'The ID of the changeUserRole.' + example: nesciunt + required: true + schema: + type: string + '/api/deleteUser/{id}': + delete: + summary: '' + operationId: deleteApiDeleteUserId + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + security: [] + parameters: + - + in: path + name: id + description: 'The ID of the deleteUser.' + example: minima + required: true + schema: + type: string + /api/getAllUsers: + get: + summary: '' + operationId: getApiGetAllUsers + description: '' + parameters: [] + responses: + 404: + description: '' + content: + application/json: + schema: + type: object + example: + message: 'The route api/getAllUsers could not be found.' + properties: + message: + type: string + example: 'The route api/getAllUsers could not be found.' + tags: + - Endpoints + security: [] + /api/addNewUser: + post: + summary: '' + operationId: postApiAddNewUser + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: '' + example: eveniet + nullable: false + email: + type: string + description: 'Must be a valid email address.' + example: tyrique37@example.org + nullable: false + password: + type: string + description: '' + example: qui + nullable: false + required: + - name + - email + - password + security: [] + /api/addKebab: + post: + summary: '' + operationId: postApiAddKebab + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + logo: + type: string + description: '' + example: quis + nullable: false + name: + type: string + description: '' + example: qui + nullable: false + address: + type: string + description: '' + example: dicta + nullable: false + coordinates: + type: string + description: '' + example: porro + nullable: false + sauces: + type: string + description: '' + example: impedit + nullable: false + meats: + type: string + description: '' + example: dolorem + nullable: false + status: + type: string + description: '' + example: rem + nullable: false + opening_hours: + type: string + description: '' + example: eligendi + nullable: false + opening_year: + type: string + description: '' + example: eveniet + nullable: false + closing_year: + type: string + description: '' + example: omnis + nullable: false + is_crafted: + type: string + description: '' + example: molestias + nullable: false + is_premises: + type: string + description: '' + example: excepturi + nullable: false + is_chainstore: + type: string + description: '' + example: iste + nullable: false + ordering_options: + type: string + description: '' + example: nam + nullable: false + required: + - logo + - name + - address + - coordinates + - sauces + - meats + - status + - opening_hours + - opening_year + - closing_year + - is_crafted + - is_premises + - is_chainstore + - ordering_options + security: [] + '/api/kebabs/{id}': + delete: + summary: '' + operationId: deleteApiKebabsId + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + security: [] + parameters: + - + in: path + name: id + description: 'The ID of the kebab.' + example: architecto + required: true + schema: + type: string + '/api/kebabs/{kebabId}/logo': + put: + summary: '' + operationId: putApiKebabsKebabIdLogo + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: necessitatibus + required: true + schema: + type: string + '/api/kebabs/{kebabId}/name': + put: + summary: '' + operationId: putApiKebabsKebabIdName + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: '' + example: molestiae + nullable: false + required: + - name + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: minima + required: true + schema: + type: string + '/api/kebabs/{kebabId}/address': + put: + summary: '' + operationId: putApiKebabsKebabIdAddress + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + address: + type: string + description: 'Must not be greater than 255 characters.' + example: hasoytxcdkunpxsulsofhjcbd + nullable: false + required: + - address + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: aut + required: true + schema: + type: string + '/api/kebabs/{kebabId}/coordinates': + put: + summary: '' + operationId: putApiKebabsKebabIdCoordinates + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + coordinates: + type: object + description: '' + example: [] + nullable: false + properties: { } + required: + - coordinates + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: autem + required: true + schema: + type: string + '/api/kebabs/{kebabId}/sauce': + post: + summary: '' + operationId: postApiKebabsKebabIdSauce + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + sauce: + type: string + description: '' + example: nulla + nullable: false + required: + - sauce + security: [] + delete: + summary: '' + operationId: deleteApiKebabsKebabIdSauce + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + sauce: + type: string + description: '' + example: est + nullable: false + required: + - sauce + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: accusamus + required: true + schema: + type: string + '/api/kebabs/{kebabId}/meat': + post: + summary: '' + operationId: postApiKebabsKebabIdMeat + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + meat: + type: string + description: '' + example: voluptates + nullable: false + required: + - meat + security: [] + delete: + summary: '' + operationId: deleteApiKebabsKebabIdMeat + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + meat: + type: string + description: '' + example: suscipit + nullable: false + required: + - meat + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: et + required: true + schema: + type: string + '/api/kebabs/{kebabId}/status': + put: + summary: '' + operationId: putApiKebabsKebabIdStatus + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + status: + type: string + description: '' + example: exists + nullable: false + enum: + - exists + - closed + - planned + required: + - status + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: doloribus + required: true + schema: + type: string + '/api/kebabs/{kebabId}/opening-hours': + post: + summary: '' + operationId: postApiKebabsKebabIdOpeningHours + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + day: + type: string + description: '' + example: saturday + nullable: false + enum: + - monday + - tuesday + - wednesday + - thursday + - friday + - saturday + - sunday + hours: + type: string + description: '' + example: recusandae + nullable: false + required: + - day + - hours + security: [] + delete: + summary: '' + operationId: deleteApiKebabsKebabIdOpeningHours + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + day: + type: string + description: '' + example: wednesday + nullable: false + enum: + - monday + - tuesday + - wednesday + - thursday + - friday + - saturday + - sunday + required: + - day + security: [] + put: + summary: '' + operationId: putApiKebabsKebabIdOpeningHours + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + day: + type: string + description: '' + example: friday + nullable: false + enum: + - monday + - tuesday + - wednesday + - thursday + - friday + - saturday + - sunday + hours: + type: string + description: '' + example: vel + nullable: false + required: + - day + - hours + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: quam + required: true + schema: + type: string + '/api/kebabs/{kebabId}/opening-year': + put: + summary: '' + operationId: putApiKebabsKebabIdOpeningYear + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: false + content: + application/json: + schema: + type: object + properties: + opening_year: + type: string + description: 'Must be 4 digits.' + example: '1897' + nullable: true + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: necessitatibus + required: true + schema: + type: string + '/api/kebabs/{kebabId}/closing-year': + put: + summary: '' + operationId: putApiKebabsKebabIdClosingYear + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: false + content: + application/json: + schema: + type: object + properties: + closing_year: + type: string + description: 'Must be 4 digits.' + example: '8861' + nullable: true + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: velit + required: true + schema: + type: string + '/api/kebabs/{kebabId}/is-crafted': + put: + summary: '' + operationId: putApiKebabsKebabIdIsCrafted + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: false + content: + application/json: + schema: + type: object + properties: + is_crafted: + type: boolean + description: '' + example: true + nullable: true + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: dicta + required: true + schema: + type: string + '/api/kebabs/{kebabId}/is-premises': + put: + summary: '' + operationId: putApiKebabsKebabIdIsPremises + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: false + content: + application/json: + schema: + type: object + properties: + is_premises: + type: boolean + description: '' + example: false + nullable: true + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: neque + required: true + schema: + type: string + '/api/kebabs/{kebabId}/is-chainstore': + put: + summary: '' + operationId: putApiKebabsKebabIdIsChainstore + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: false + content: + application/json: + schema: + type: object + properties: + is_chainstore: + type: boolean + description: '' + example: false + nullable: true + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: corporis + required: true + schema: + type: string + '/api/kebabs/{kebabId}/ordering-options': + post: + summary: '' + operationId: postApiKebabsKebabIdOrderingOptions + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + new_option: + type: string + description: '' + example: distinctio + nullable: false + required: + - new_option + security: [] + delete: + summary: '' + operationId: deleteApiKebabsKebabIdOrderingOptions + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + option_to_remove: + type: string + description: '' + example: eaque + nullable: false + required: + - option_to_remove + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: eum + required: true + schema: + type: string + '/api/kebabs/{kebabId}/pages': + post: + summary: '' + operationId: postApiKebabsKebabIdPages + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + new_page: + type: string + description: '' + example: voluptates + nullable: false + required: + - new_page + security: [] + delete: + summary: '' + operationId: deleteApiKebabsKebabIdPages + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + page_to_remove: + type: string + description: '' + example: quaerat + nullable: false + required: + - page_to_remove + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: id + required: true + schema: + type: string + '/api/suggestions/{id}': + delete: + summary: '' + operationId: deleteApiSuggestionsId + description: '' + parameters: [] + responses: { } + tags: + - Endpoints + security: [] + parameters: + - + in: path + name: id + description: 'The ID of the suggestion.' + example: non + required: true + schema: + type: string +tags: + - + name: Endpoints + description: '' +components: + securitySchemes: + default: + type: http + scheme: bearer + description: 'You can retrieve your token by visiting your dashboard and clicking Generate API token.' +security: + - + default: [] diff --git a/Backend/app/Http/Controllers/AuthController.php b/Backend/app/Http/Controllers/AuthController.php index f3d8e89..fb48b45 100644 --- a/Backend/app/Http/Controllers/AuthController.php +++ b/Backend/app/Http/Controllers/AuthController.php @@ -10,8 +10,43 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; +/** + * @group Auth + * **/ class AuthController extends Controller { + /** + * @OA\Post( + * path="/api/register", + * tags={"Auth"}, + * summary="Register a new user", + * @OA\RequestBody( + * required=true, + * @OA\MediaType( + * mediaType="application/json", + * @OA\Schema( + * type="object", + * required={"name", "email", "password"}, + * @OA\Property(property="name", type="string", example="John Doe"), + * @OA\Property(property="email", type="string", example="johndoe@example.com"), + * @OA\Property(property="password", type="string", format="password", example="password123") + * ) + * ) + * ), + * @OA\Response( + * response=200, + * description="User registered successfully", + * @OA\JsonContent( + * @OA\Property(property="user", ref="#/components/schemas/User"), + * @OA\Property(property="token", type="string") + * ) + * ), + * @OA\Response( + * response=400, + * description="Invalid input" + * ) + * ) + */ public function register(SignupRequest $request) { $data = $request->validated(); @@ -22,7 +57,7 @@ public function register(SignupRequest $request) "password" => bcrypt($data["password"]), "isAdmin" => false, ]); - $token = $user->createToken((int)["id" => (string)$user->id])->plainTextToken; + $token = $user->createToken("auth_token")->plainTextToken; $res = [ "user" => $user, @@ -32,6 +67,37 @@ public function register(SignupRequest $request) return response($res); } + /** + * @OA\Post( + * path="/api/login", + * tags={"Auth"}, + * summary="Login an existing user", + * @OA\RequestBody( + * required=true, + * @OA\MediaType( + * mediaType="application/json", + * @OA\Schema( + * type="object", + * required={"email", "password"}, + * @OA\Property(property="email", type="string", example="johndoe@example.com"), + * @OA\Property(property="password", type="string", format="password", example="password123") + * ) + * ) + * ), + * @OA\Response( + * response=200, + * description="User logged in successfully", + * @OA\JsonContent( + * @OA\Property(property="user", ref="#/components/schemas/User"), + * @OA\Property(property="token", type="string") + * ) + * ), + * @OA\Response( + * response=400, + * description="Invalid credentials" + * ) + * ) + */ public function login(LoginRequest $request) { $credentials = $request->validated(); @@ -39,11 +105,11 @@ public function login(LoginRequest $request) if (!Auth::attempt($credentials)) { return response([ "message" => "Something wrong", - ]); + ], 400); } /** @var User $user */ $user = Auth::user(); - $token = $user->createToken((int)["id" => (string)$user->id])->plainTextToken; + $token = $user->createToken("auth_token")->plainTextToken; $res = [ "user" => $user, "token" => $token, @@ -52,6 +118,21 @@ public function login(LoginRequest $request) return response($res); } + /** + * @OA\Post( + * path="/api/logout", + * tags={"Auth"}, + * summary="Logout the current user", + * @OA\Response( + * response=204, + * description="Successfully logged out" + * ), + * @OA\Response( + * response=401, + * description="Unauthorized" + * ) + * ) + */ public function logout(Request $request) { /** @var User $user */ diff --git a/Backend/app/Http/Controllers/KebabController.php b/Backend/app/Http/Controllers/KebabController.php new file mode 100644 index 0000000..b9099ee --- /dev/null +++ b/Backend/app/Http/Controllers/KebabController.php @@ -0,0 +1,722 @@ +map(function ($kebab) { + $kebab->logo = $kebab->logo ? "data:image/jpeg;base64," . base64_encode($kebab->logo) : null; + + if (!is_array($kebab->opening_hours)) { + $kebab->opening_hours = json_decode($kebab->opening_hours, true) ?? []; + } + + if (!is_array($kebab->meats)) { + $kebab->meats = json_decode($kebab->meats, true) ?? []; + } + + if (!is_array($kebab->sauces)) { + $kebab->sauces = json_decode($kebab->sauces, true) ?? []; + } + + if (!is_array($kebab->ordering_options)) { + $kebab->ordering_options = json_decode($kebab->ordering_options, true) ?? []; + } + + if (!is_array($kebab->pages)) { + $kebab->pages = json_decode($kebab->pages, true) ?? []; + } + + return $kebab; + }); + + return response()->json($data, 200); + } catch (Exception $e) { + return response()->json([ + "error" => "Something went wrong.", + "message" => $e->getMessage(), + ], 500); + } + } + + public function addKebab(KebabRequest $request) + { + $data = $request->validated(); + + try { + $kebab = new Kebab($request->all()); + + if ($request->hasFile("logo")) { + $kebab->logo = file_get_contents($request->file("logo")->path()); + } + $kebab->save(); + + return response()->json($kebab, 201); + } catch (Exception $e) { + return response()->json([ + "error" => "Could not add kebab.", + "message" => $e->getMessage(), + ], 500); + } + } + + public function deleteKebab($id) + { + $kebab = Kebab::find($id); + + if (!$kebab) { + return response()->json(["message" => "Kebab not found"], 404); + } + + $kebab->delete(); + + return response()->json(["message" => "Kebab deleted"]); + } + + public function changeKebabLogo(Request $request, $kebabId) + { + try { + $kebab = Kebab::findOrFail($kebabId); + + $binaryData = file_get_contents("php://input"); + + if ($binaryData) { + $kebab->logo = $binaryData; + $kebab->save(); + + $logoUrl = url("/storage/kebabs/" . $kebab->id . "/logo.jpg"); + + return response()->json([ + "message" => "Logo updated successfully.", + "kebab" => [ + "id" => $kebab->id, + "logo_url" => $logoUrl, + ], + ], 200); + } + + return response()->json([ + "error" => "No logo file provided.", + ], 400); + } catch (Exception $e) { + Log::error("Error updating logo: " . $e->getMessage()); + + return response()->json([ + "error" => "Could not update logo.", + "message" => $e->getMessage(), + ], 500); + } + } + + public function changeKebabName(KebabNameRequest $request, $kebabId) + { + $request->validate([ + "name" => "required", + ]); + + try { + $kebab = Kebab::findOrFail($kebabId); + + $kebab->name = $request->input("name"); + + $kebab->save(); + + return response()->json([ + "message" => "Name updated successfully.", + "kebab" => $kebab, + ], 200); + } catch (Exception $e) { + return response()->json([ + "error" => "Could not update name.", + "message" => $e->getMessage(), + ], 500); + } + } + + public function changeKebabAddress(KebabAddressRequest $request, $kebabId) + { + try { + $kebab = Kebab::findOrFail($kebabId); + + $kebab->address = $request->input("address"); + + $kebab->save(); + + return response()->json([ + "message" => "Address updated successfully.", + "kebab" => $kebab, + ], 200); + } catch (Exception $e) { + return response()->json([ + "error" => "Could not update address.", + "message" => $e->getMessage(), + ], 500); + } + } + + public function changeKebabCoordinates(KebabCoordinatesRequest $request, $kebabId) + { + try { + $kebab = Kebab::findOrFail($kebabId); + + $kebab->coordinates = $request->input("coordinates"); + + $kebab->save(); + + return response()->json([ + "message" => "Coordinates updated successfully.", + "kebab" => $kebab, + ], 200); + } catch (Exception $e) { + return response()->json([ + "error" => "Could not update coordinates.", + "message" => $e->getMessage(), + ], 500); + } + } + + public function addSauceToKebab(SauceKebabRequest $request, $kebabId) + { + try { + $kebab = Kebab::findOrFail($kebabId); + + $sauces = is_array($kebab->sauces) ? $kebab->sauces : json_decode($kebab->sauces, true) ?? []; + + if (!in_array($request->input("sauce"), $sauces, true)) { + $sauces[] = $request->input("sauce"); + } + + $kebab->sauces = $sauces; + $kebab->save(); + + return response()->json([ + "message" => "Sauce added successfully.", + "sauces" => $sauces, + ], 200); + } catch (Exception $e) { + return response()->json([ + "error" => "Could not add sauce.", + "message" => $e->getMessage(), + ], 500); + } + } + + public function removeSauceFromKebab(SauceKebabRequest $request, $kebabId) + { + try { + $kebab = Kebab::findOrFail($kebabId); + + $sauces = is_array($kebab->sauces) ? $kebab->sauces : json_decode($kebab->sauces, true) ?? []; + + if (($key = array_search($request->input("sauce"), $sauces, true)) !== false) { + unset($sauces[$key]); + } + + $kebab->sauces = json_encode(array_values($sauces)); + $kebab->save(); + + return response()->json([ + "message" => "Sauce removed successfully.", + "sauces" => $sauces, + ], 200); + } catch (Exception $e) { + return response()->json([ + "error" => "Could not remove sauce.", + "message" => $e->getMessage(), + ], 500); + } + } + + public function addMeatToKebab(KebabMeatRequest $request, $kebabId) + { + try { + $kebab = Kebab::findOrFail($kebabId); + $meats = is_array($kebab->meats) ? $kebab->meats : json_decode($kebab->meats, true) ?? []; + + if (!in_array($request->input("meat"), $meats, true)) { + $meats[] = $request->input("meat"); + } + + $kebab->meats = json_encode($meats); + $kebab->save(); + + return response()->json([ + "message" => "Meat added successfully.", + "meats" => $meats, + ], 200); + } catch (Exception $e) { + return response()->json([ + "error" => "Could not add meat.", + "message" => $e->getMessage(), + ], 500); + } + } + + public function removeMeatFromKebab(KebabMeatRequest $request, $kebabId) + { + try { + $kebab = Kebab::findOrFail($kebabId); + + $meats = is_array($kebab->meats) ? $kebab->meats : json_decode($kebab->meats, true) ?? []; + + if (($key = array_search($request->input("meat"), $meats, true)) !== false) { + unset($meats[$key]); + } + + $kebab->meats = json_encode(array_values($meats)); + $kebab->save(); + + return response()->json([ + "message" => "Meat removed successfully.", + "meats" => $meats, + ], 200); + } catch (Exception $e) { + return response()->json([ + "error" => "Could not remove meat.", + "message" => $e->getMessage(), + ], 500); + } + } + + public function changeKebabStatus(KebabStatusRequest $request, $kebabId) + { + try { + $kebab = Kebab::findOrFail($kebabId); + + $kebab->status = $request->input("status"); + + $kebab->save(); + + return response()->json([ + "message" => "Status updated successfully.", + "kebab" => $kebab, + ], 200); + } catch (Exception $e) { + return response()->json([ + "error" => "Could not update status.", + "message" => $e->getMessage(), + ], 500); + } + } + + public function addOpeningHour(KebabOpeningHourRequest $request, $kebabId) + { + try { + $kebab = Kebab::findOrFail($kebabId); + $openingHours = []; + + if (is_array($kebab->opening_hours)) { + $openingHours = $kebab->opening_hours; + } else { + if (is_string($kebab->opening_hours)) { + $openingHours = json_decode($kebab->opening_hours, true) ?? []; + } + } + + $openingHours[$request->input("day")] = $request->input("hours"); + + $kebab->opening_hours = json_encode($openingHours); + $kebab->save(); + + return response()->json([ + "message" => "Opening hours updated successfully.", + "opening_hours" => $openingHours, + ], 200); + } catch (Exception $e) { + return response()->json([ + "error" => "Could not update opening hours.", + "message" => $e->getMessage(), + ], 500); + } + } + + public function removeOpeningHour(KebabRemoveOpeningHourRequest $request, $kebabId) + { + try { + $kebab = Kebab::findOrFail($kebabId); + Log::info("Kebab znaleziony:", ["id" => $kebabId]); + $openingHours = []; + + if (is_array($kebab->opening_hours)) { + $openingHours = $kebab->opening_hours; + } else { + if (is_string($kebab->opening_hours)) { + $openingHours = json_decode($kebab->opening_hours, true) ?? []; + } + } + + if (isset($openingHours[$request->input("day")])) { + unset($openingHours[$request->input("day")]); + } + + $kebab->opening_hours = $openingHours; + $kebab->save(); + + return response()->json([ + "message" => "Opening hour removed successfully.", + "opening_hours" => $openingHours, + ], 200); + } catch (Exception $e) { + return response()->json([ + "error" => "Could not remove opening hour.", + "message" => $e->getMessage(), + ], 500); + } + } + + public function changeOpeningHour(KebabOpeningHourRequest $request, $kebabId) + { + try { + $kebab = Kebab::findOrFail($kebabId); + + $openingHours = json_decode($kebab->opening_hours, true) ?? []; + + $openingHours[$request->input("day")] = $request->input("hours"); + + $kebab->opening_hours = json_encode($openingHours); + $kebab->save(); + + return response()->json([ + "message" => "Opening hour changed successfully.", + "opening_hours" => $openingHours, + ], 200); + } catch (Exception $e) { + return response()->json([ + "error" => "Could not change opening hour.", + "message" => $e->getMessage(), + ], 500); + } + } + + public function updateOpeningYear(KebabOpeningYearRequest $request, $kebabId) + { + try { + $kebab = Kebab::findOrFail($kebabId); + + $kebab->opening_year = $request->input("opening_year") ?? null; + + $kebab->save(); + + return response()->json([ + "message" => "Opening year updated successfully.", + "opening_year" => $kebab->opening_year, + ], 200); + } catch (Exception $e) { + return response()->json([ + "error" => "Could not update opening year.", + "message" => $e->getMessage(), + ], 500); + } + } + + public function updateClosingYear(KebabClosingYearRequest $request, $kebabId) + { + try { + $kebab = Kebab::findOrFail($kebabId); + + $kebab->closing_year = $request->input("closing_year") ?? null; + + $kebab->save(); + + return response()->json([ + "message" => "Closing year updated successfully.", + "closing_year" => $kebab->closing_year, + ], 200); + } catch (Exception $e) { + return response()->json([ + "error" => "Could not update closing year.", + "message" => $e->getMessage(), + ], 500); + } + } + + public function updateIsCrafted(KebabIsCraftedRequest $request, $kebabId) + { + try { + $kebab = Kebab::findOrFail($kebabId); + + $kebab->is_crafted = $request->input("is_crafted") ?? null; + + $kebab->save(); + + return response()->json([ + "message" => "Crafted status updated successfully.", + "is_crafted" => $kebab->is_crafted, + ], 200); + } catch (Exception $e) { + return response()->json([ + "error" => "Could not update crafted status.", + "message" => $e->getMessage(), + ], 500); + } + } + + public function updateIsPremises(KebabIsPremisesRequest $request, $kebabId) + { + try { + $kebab = Kebab::findOrFail($kebabId); + + $kebab->is_premises = $request->input("is_premises") ?? null; + + $kebab->save(); + + return response()->json([ + "message" => "Premises status updated successfully.", + "is_premises" => $kebab->is_premises, + ], 200); + } catch (Exception $e) { + return response()->json([ + "error" => "Could not update premises status.", + "message" => $e->getMessage(), + ], 500); + } + } + + public function updateIsChainstore(KebabIsChainstoreRequest $request, $kebabId) + { + $request->validate([ + "is_chainstore" => "nullable|boolean", + ]); + + try { + $kebab = Kebab::findOrFail($kebabId); + + $kebab->is_chainstore = $request->input("is_chainstore") ?? null; + + $kebab->save(); + + return response()->json([ + "message" => "Chainstore status updated successfully.", + "is_chainstore" => $kebab->is_chainstore, + ], 200); + } catch (Exception $e) { + return response()->json([ + "error" => "Could not update chainstore status.", + "message" => $e->getMessage(), + ], 500); + } + } + + public function addOrderingOption(KebabOrderingOptionRequest $request, $kebabId) + { + try { + $kebab = Kebab::findOrFail($kebabId); + + $orderingOptions = is_array($kebab->ordering_options) ? $kebab->ordering_options : json_decode($kebab->ordering_options, true) ?? []; + + if (!in_array($request->input("new_option"), $orderingOptions, true)) { + $orderingOptions[] = $request->input("new_option"); + } + $kebab->ordering_options = $orderingOptions; + + $kebab->save(); + + return response()->json([ + "message" => "New ordering option added successfully.", + "ordering_options" => $kebab->ordering_options, + ], 200); + } catch (Exception $e) { + return response()->json([ + "error" => "Could not add ordering option.", + "message" => $e->getMessage(), + ], 500); + } + } + + public function removeOrderingOption(KebabRemoveOrderingOptionRequest $request, $kebabId) + { + try { + $kebab = Kebab::findOrFail($kebabId); + + $orderingOptions = is_array($kebab->ordering_options) ? $kebab->ordering_options : json_decode($kebab->ordering_options, true) ?? []; + + if (($key = array_search($request->input("option_to_remove"), $orderingOptions, true)) !== false) { + unset($orderingOptions[$key]); + } + $kebab->ordering_options = $orderingOptions; + + $kebab->ordering_options = json_encode(array_values($orderingOptions)); + + $kebab->save(); + + return response()->json([ + "message" => "Ordering option removed successfully.", + "ordering_options" => $kebab->ordering_options, + ], 200); + } catch (Exception $e) { + return response()->json([ + "error" => "Could not remove ordering option.", + "message" => $e->getMessage(), + ], 500); + } + } + + public function addComment(KebabCommentRequest $request, $kebabId) + { + $request->validate([ + "id_user" => "required|integer", + "comment" => "required|string", + "user_name" => "required|string", + ]); + + try { + $kebab = Kebab::findOrFail($kebabId); + + $comments = $kebab->comments ?? []; + + $newComment = [ + "id_user" => $request->input("id_user"), + "user_name" => $request->input("user_name"), + "comment" => $request->input("comment"), + ]; + + $comments[] = $newComment; + + $kebab->comments = $comments; + + $kebab->save(); + + return response()->json([ + "message" => "Comment added successfully.", + "comments" => $kebab->comments, + ], 200); + } catch (Exception $e) { + return response()->json([ + "error" => "Could not add comment.", + "message" => $e->getMessage(), + ], 500); + } + } + + public function GetComments(Request $request, $kebabId) + { + try { + $kebab = Kebab::find($kebabId); + + if (!$kebab) { + return response()->json([ + "error" => "Kebab not found.", + ], 404); + } + + $comments = $kebab->comments; + + return response()->json($comments); + } catch (Exception $e) { + return response()->json([ + "error" => "An error occurred while fetching kebab comments.", + "message" => $e->getMessage(), + ], 500); + } + } + + public function removeComment(KebabCommentRequest $request, $kebabId) + { + try { + $kebab = Kebab::findOrFail($kebabId); + + $comments = $kebab->comments ?? []; + + $comments = array_filter($comments, fn($item) => $item["id_user"] !== $request->input("id_user") || $item["comment"] !== $request->input("comment")); + + $kebab->comments = array_values($comments); + + $kebab->save(); + + return response()->json([ + "message" => "Comment removed successfully.", + "comments" => $kebab->comments, + ], 200); + } catch (Exception $e) { + return response()->json([ + "error" => "Could not remove comment.", + "message" => $e->getMessage(), + ], 500); + } + } + + public function addPage(KebabPageRequest $request, $kebabId) + { + try { + $kebab = Kebab::findOrFail($kebabId); + + $page = is_array($kebab->pages) ? $kebab->pages : json_decode($kebab->pages, true) ?? []; + + if (!in_array($request->input("page"), $page, true)) { + $page[] = $request->input("page"); + } + $kebab->pages = $page; + + $kebab->save(); + + return response()->json([ + "message" => "New page added successfully.", + "pages" => $kebab->pages, + ], 200); + } catch (Exception $e) { + return response()->json([ + "error" => "Could not add page.", + "message" => $e->getMessage(), + ], 500); + } + } + + public function removePage(KebabPageRequest $request, $kebabId) + { + try { + $kebab = Kebab::findOrFail($kebabId); + + $page = is_array($kebab->pages) ? $kebab->pages : json_decode($kebab->pages, true) ?? []; + + if (($key = array_search($request->input("page"), $page, true)) !== false) { + unset($page[$key]); + } + $kebab->pages = $page; + + $kebab->pages = json_encode(array_values($page)); + + $kebab->save(); + + return response()->json([ + "message" => "Page removed successfully.", + "pages" => $kebab->pages, + ], 200); + } catch (Exception $e) { + return response()->json([ + "error" => "Could not remove page.", + "message" => $e->getMessage(), + ], 500); + } + } +} diff --git a/Backend/app/Http/Controllers/KebabScraperController.php b/Backend/app/Http/Controllers/KebabScraperController.php new file mode 100644 index 0000000..ec49a75 --- /dev/null +++ b/Backend/app/Http/Controllers/KebabScraperController.php @@ -0,0 +1,43 @@ +pages, true); + + if (isset($pages["pyszne.pl"])) { + $pyszneLink = $pages["pyszne.pl"]; + + $reviews = $this->scraper->scrapeReviews($pyszneLink); + + $results[] = [ + "kebab_id" => $kebab->id, + "name" => $kebab->name, + "reviews" => $reviews, + ]; + } + } + + return response()->json($results); + } +} diff --git a/Backend/app/Http/Controllers/SuggestionsController.php b/Backend/app/Http/Controllers/SuggestionsController.php new file mode 100644 index 0000000..f9e735e --- /dev/null +++ b/Backend/app/Http/Controllers/SuggestionsController.php @@ -0,0 +1,44 @@ + $request->input("user"), + "contents" => $request->input("contents"), + ]); + + return response()->json(["message" => "Suggestion created successfully!", "suggestion" => $suggestion], 201); + } + + public function showAllSuggestions() + { + $suggestions = Suggestions::all(); + + return response()->json(["suggestions" => $suggestions]); + } + + public function destroySuggestion($id) + { + $suggestion = Suggestions::find($id); + + if (!$suggestion) { + return response()->json(["message" => "Suggestion not found"], 404); + } + + $suggestion->delete(); + + return response()->json(["message" => "Suggestion deleted successfully."]); + } +} diff --git a/Backend/app/Http/Controllers/UserController.php b/Backend/app/Http/Controllers/UserController.php index bf7b45a..c88343b 100644 --- a/Backend/app/Http/Controllers/UserController.php +++ b/Backend/app/Http/Controllers/UserController.php @@ -4,8 +4,19 @@ namespace App\Http\Controllers; +use App\Http\Requests\UserRequests\ChangeEmailRequest; +use App\Http\Requests\UserRequests\ChangeNameRequest; +use App\Http\Requests\UserRequests\ChangePasswordRequest; +use App\Http\Requests\UserRequests\ChangeUserRoleRequest; +use App\Http\Requests\UserRequests\FavoriteKebabRequest; +use App\Http\Requests\UserRequests\UserRequest; +use App\Models\User; use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Hash; +/** + * @group Users + * **/ class UserController extends Controller { public function getCurrentUser() @@ -16,6 +27,143 @@ public function getCurrentUser() return response()->json(["user" => $user], 200); } - return response()->json(["message" => "Użytkownik niezalogowany"], 401); + return response()->json(["message" => "User not Auth"], 401); + } + + public function getAllUsers() + { + $users = User::all(); + + return response()->json($users); + } + + public function addNewUser(UserRequest $request) + { + $user = User::create([ + "name" => $request->name, + "email" => $request->email, + "password" => Hash::make($request->password), + "role" => $request->role, + ]); + + return response()->json($user, 201); + } + + public function deleteUser($id) + { + $user = User::find($id); + + if (!$user) { + return response()->json(["message" => "User not found"], 404); + } + + $user->delete(); + + return response()->json(["message" => "User deleted"]); + } + + public function changeName(ChangeNameRequest $request, $id) + { + $user = User::find($id); + + $user->update([ + "name" => $request->newName, + ]); + + return response()->json($user); + } + + public function changePassword(ChangePasswordRequest $request, $id) + { + $user = User::find($id); + + $user->update([ + "password" => Hash::make($request->newPassword), + ]); + + return response()->json($user); + } + + public function changeEmail(ChangeEmailRequest $request, $id) + { + $user = User::find($id); + + $user->update([ + "email" => $request->newEmail, + ]); + + return response()->json($user); + } + + public function changeUserRole(ChangeUserRoleRequest $request, $id) + { + $user = User::find($id); + + $user->isAdmin = $request->isAdmin; + + $user->save(); + + return response()->json($user); + } + + public function getUserFavorites($id) + { + $user = User::find($id); + + if ($user) { + $favorites = $user->favorites ? json_decode($user->favorites, true) : []; + + return response()->json(["favorites" => $favorites]); + } + + return response()->json(["error" => "User not found"], 404); + } + + public function addToFavorites(FavoriteKebabRequest $request) + { + $userId = $request->input("user_id"); + $kebabId = $request->input("kebab_id"); + + $user = User::find($userId); + + if ($user) { + $favorites = $user->favorites ? json_decode($user->favorites, true) : []; + + if (!in_array($kebabId, $favorites, true)) { + $favorites[] = $kebabId; + $user->favorites = json_encode($favorites); + $user->save(); + + return response()->json(["message" => "Kebab added to favorites"]); + } + + return response()->json(["message" => "Kebab is already in favorites"], 400); + } + + return response()->json(["error" => "User not found"], 404); + } + + public function removeFromFavorites(FavoriteKebabRequest $request) + { + $userId = $request->input("user_id"); + $kebabId = $request->input("kebab_id"); + + $user = User::find($userId); + + if ($user) { + $favorites = $user->favorites ? json_decode($user->favorites, true) : []; + + if (($key = array_search($kebabId, $favorites, true)) !== false) { + unset($favorites[$key]); + $user->favorites = json_encode(array_values($favorites)); + $user->save(); + + return response()->json(["message" => "Kebab removed from favorites"]); + } + + return response()->json(["message" => "Kebab not found in favorites"], 400); + } + + return response()->json(["error" => "User not found"], 404); } } diff --git a/Backend/app/Http/Kernel.php b/Backend/app/Http/Kernel.php index 9958719..f7a403f 100644 --- a/Backend/app/Http/Kernel.php +++ b/Backend/app/Http/Kernel.php @@ -5,6 +5,7 @@ namespace App\Http; use App\Http\Middleware\Authenticate; +use App\Http\Middleware\CheckAdmin; use App\Http\Middleware\EncryptCookies; use App\Http\Middleware\PreventRequestsDuringMaintenance; use App\Http\Middleware\RedirectIfAuthenticated; @@ -89,5 +90,6 @@ class Kernel extends HttpKernel "signed" => ValidateSignature::class, "throttle" => ThrottleRequests::class, "verified" => EnsureEmailIsVerified::class, + "admin" => CheckAdmin::class, ]; } diff --git a/Backend/app/Http/Middleware/CheckAdmin.php b/Backend/app/Http/Middleware/CheckAdmin.php new file mode 100644 index 0000000..e9fa623 --- /dev/null +++ b/Backend/app/Http/Middleware/CheckAdmin.php @@ -0,0 +1,22 @@ +user() && $request->user()->isAdmin === 1) { + return $next($request); + } + + return response()->json(["error" => "Unauthorized"], 403); + } +} diff --git a/Backend/app/Http/Requests/KebabRequests/KebabAddressRequest.php b/Backend/app/Http/Requests/KebabRequests/KebabAddressRequest.php new file mode 100644 index 0000000..78502fe --- /dev/null +++ b/Backend/app/Http/Requests/KebabRequests/KebabAddressRequest.php @@ -0,0 +1,30 @@ +|string> + */ + public function rules(): array + { + return [ + "address" => "required|string|max:255", + ]; + } +} diff --git a/Backend/app/Http/Requests/KebabRequests/KebabClosingYearRequest.php b/Backend/app/Http/Requests/KebabRequests/KebabClosingYearRequest.php new file mode 100644 index 0000000..a4f3fde --- /dev/null +++ b/Backend/app/Http/Requests/KebabRequests/KebabClosingYearRequest.php @@ -0,0 +1,30 @@ +|string> + */ + public function rules(): array + { + return [ + "closing_year" => "nullable|integer|digits:4", + ]; + } +} diff --git a/Backend/app/Http/Requests/KebabRequests/KebabCommentRequest.php b/Backend/app/Http/Requests/KebabRequests/KebabCommentRequest.php new file mode 100644 index 0000000..fd9a18e --- /dev/null +++ b/Backend/app/Http/Requests/KebabRequests/KebabCommentRequest.php @@ -0,0 +1,32 @@ +|string> + */ + public function rules(): array + { + return [ + "id_user" => "required|integer", + "comment" => "required|string", + "user_name" => "required|string", + ]; + } +} diff --git a/Backend/app/Http/Requests/KebabRequests/KebabCoordinatesRequest.php b/Backend/app/Http/Requests/KebabRequests/KebabCoordinatesRequest.php new file mode 100644 index 0000000..ad49578 --- /dev/null +++ b/Backend/app/Http/Requests/KebabRequests/KebabCoordinatesRequest.php @@ -0,0 +1,32 @@ +|string> + */ + public function rules(): array + { + return [ + "coordinates" => "required|array", + "coordinates.*.lat" => "required|numeric|between:-90,90", + "coordinates.*.lng" => "required|numeric|between:-180,180", + ]; + } +} diff --git a/Backend/app/Http/Requests/KebabRequests/KebabIsChainstoreRequest.php b/Backend/app/Http/Requests/KebabRequests/KebabIsChainstoreRequest.php new file mode 100644 index 0000000..f585ef7 --- /dev/null +++ b/Backend/app/Http/Requests/KebabRequests/KebabIsChainstoreRequest.php @@ -0,0 +1,30 @@ +|string> + */ + public function rules(): array + { + return [ + "is_chainstore" => "nullable|boolean", + ]; + } +} diff --git a/Backend/app/Http/Requests/KebabRequests/KebabIsCraftedRequest.php b/Backend/app/Http/Requests/KebabRequests/KebabIsCraftedRequest.php new file mode 100644 index 0000000..906dc29 --- /dev/null +++ b/Backend/app/Http/Requests/KebabRequests/KebabIsCraftedRequest.php @@ -0,0 +1,30 @@ +|string> + */ + public function rules(): array + { + return [ + "is_crafted" => "nullable|boolean", + ]; + } +} diff --git a/Backend/app/Http/Requests/KebabRequests/KebabIsPremisesRequest.php b/Backend/app/Http/Requests/KebabRequests/KebabIsPremisesRequest.php new file mode 100644 index 0000000..5cf1510 --- /dev/null +++ b/Backend/app/Http/Requests/KebabRequests/KebabIsPremisesRequest.php @@ -0,0 +1,30 @@ +|string> + */ + public function rules(): array + { + return [ + "is_premises" => "nullable|boolean", + ]; + } +} diff --git a/Backend/app/Http/Requests/KebabRequests/KebabMeatRequest.php b/Backend/app/Http/Requests/KebabRequests/KebabMeatRequest.php new file mode 100644 index 0000000..c516c5b --- /dev/null +++ b/Backend/app/Http/Requests/KebabRequests/KebabMeatRequest.php @@ -0,0 +1,30 @@ +|string> + */ + public function rules(): array + { + return [ + "meat" => "required|string", + ]; + } +} diff --git a/Backend/app/Http/Requests/KebabRequests/KebabNameRequest.php b/Backend/app/Http/Requests/KebabRequests/KebabNameRequest.php new file mode 100644 index 0000000..43821eb --- /dev/null +++ b/Backend/app/Http/Requests/KebabRequests/KebabNameRequest.php @@ -0,0 +1,30 @@ +|string> + */ + public function rules(): array + { + return [ + "name" => "required", + ]; + } +} diff --git a/Backend/app/Http/Requests/KebabRequests/KebabOpeningHourRequest.php b/Backend/app/Http/Requests/KebabRequests/KebabOpeningHourRequest.php new file mode 100644 index 0000000..c73225c --- /dev/null +++ b/Backend/app/Http/Requests/KebabRequests/KebabOpeningHourRequest.php @@ -0,0 +1,31 @@ +|string> + */ + public function rules(): array + { + return [ + "day" => "required|string|in:monday,tuesday,wednesday,thursday,friday,saturday,sunday", + "hours" => "required|string", + ]; + } +} diff --git a/Backend/app/Http/Requests/KebabRequests/KebabOpeningYearRequest.php b/Backend/app/Http/Requests/KebabRequests/KebabOpeningYearRequest.php new file mode 100644 index 0000000..a8e8d9d --- /dev/null +++ b/Backend/app/Http/Requests/KebabRequests/KebabOpeningYearRequest.php @@ -0,0 +1,30 @@ +|string> + */ + public function rules(): array + { + return [ + "opening_year" => "nullable|integer|digits:4", + ]; + } +} diff --git a/Backend/app/Http/Requests/KebabRequests/KebabOrderingOptionRequest.php b/Backend/app/Http/Requests/KebabRequests/KebabOrderingOptionRequest.php new file mode 100644 index 0000000..91f0816 --- /dev/null +++ b/Backend/app/Http/Requests/KebabRequests/KebabOrderingOptionRequest.php @@ -0,0 +1,30 @@ +|string> + */ + public function rules(): array + { + return [ + "new_option" => "required|string", + ]; + } +} diff --git a/Backend/app/Http/Requests/KebabRequests/KebabPageRequest.php b/Backend/app/Http/Requests/KebabRequests/KebabPageRequest.php new file mode 100644 index 0000000..7481e75 --- /dev/null +++ b/Backend/app/Http/Requests/KebabRequests/KebabPageRequest.php @@ -0,0 +1,30 @@ +|string> + */ + public function rules(): array + { + return [ + "page" => "required|string", + ]; + } +} diff --git a/Backend/app/Http/Requests/KebabRequests/KebabRemoveOpeningHourRequest.php b/Backend/app/Http/Requests/KebabRequests/KebabRemoveOpeningHourRequest.php new file mode 100644 index 0000000..b5e6a7a --- /dev/null +++ b/Backend/app/Http/Requests/KebabRequests/KebabRemoveOpeningHourRequest.php @@ -0,0 +1,30 @@ +|string> + */ + public function rules(): array + { + return [ + "day" => "required|string|in:monday,tuesday,wednesday,thursday,friday,saturday,sunday", + ]; + } +} diff --git a/Backend/app/Http/Requests/KebabRequests/KebabRemoveOrderingOptionRequest.php b/Backend/app/Http/Requests/KebabRequests/KebabRemoveOrderingOptionRequest.php new file mode 100644 index 0000000..a0d7b93 --- /dev/null +++ b/Backend/app/Http/Requests/KebabRequests/KebabRemoveOrderingOptionRequest.php @@ -0,0 +1,30 @@ +|string> + */ + public function rules(): array + { + return [ + "option_to_remove" => "required|string", + ]; + } +} diff --git a/Backend/app/Http/Requests/KebabRequests/KebabRequest.php b/Backend/app/Http/Requests/KebabRequests/KebabRequest.php new file mode 100644 index 0000000..542e307 --- /dev/null +++ b/Backend/app/Http/Requests/KebabRequests/KebabRequest.php @@ -0,0 +1,48 @@ +|string> + */ + public function rules(): array + { + return [ + "logo" => "required", + "name" => "required", + "address" => "required|string|max:255", + "coordinates" => "required|array", + "coordinates.*.lat" => "required|numeric|between:-90,90", + "coordinates.*.lng" => "required|numeric|between:-180,180", + "sauce" => "required|string", + "meats" => "required|string", + "status" => "required|in:exists,closed,planned", + "opening_hours" => "required|array", + "opening_hours.*.day" => "required|string|in:monday,tuesday,wednesday,thursday,friday,saturday,sunday", + "opening_hours.*.hours" => "required|string", + "opening_year" => "nullable|integer|digits:4", + "closing_year" => "nullable|integer|digits:4", + "is_crafted" => "required|boolean", + "is_premises" => "required|boolean", + "is_chainstore" => "required|boolean", + "ordering_options" => "required|string", + "page" => "required|string", + ]; + } +} diff --git a/Backend/app/Http/Requests/KebabRequests/KebabStatusRequest.php b/Backend/app/Http/Requests/KebabRequests/KebabStatusRequest.php new file mode 100644 index 0000000..8903031 --- /dev/null +++ b/Backend/app/Http/Requests/KebabRequests/KebabStatusRequest.php @@ -0,0 +1,30 @@ +|string> + */ + public function rules(): array + { + return [ + "status" => "required|in:exists,closed,planned", + ]; + } +} diff --git a/Backend/app/Http/Requests/KebabRequests/SauceKebabRequest.php b/Backend/app/Http/Requests/KebabRequests/SauceKebabRequest.php new file mode 100644 index 0000000..4ddd36b --- /dev/null +++ b/Backend/app/Http/Requests/KebabRequests/SauceKebabRequest.php @@ -0,0 +1,30 @@ +|string> + */ + public function rules(): array + { + return [ + "sauce" => "required|string", + ]; + } +} diff --git a/Backend/app/Http/Requests/SuggestionRequest.php b/Backend/app/Http/Requests/SuggestionRequest.php new file mode 100644 index 0000000..8098d82 --- /dev/null +++ b/Backend/app/Http/Requests/SuggestionRequest.php @@ -0,0 +1,28 @@ + + */ + public function rules(): array + { + return [ + "user" => "required|string|max:255", + "contents" => "required|string|max:255", + ]; + } +} diff --git a/Backend/app/Http/Requests/UserRequests/ChangeEmailRequest.php b/Backend/app/Http/Requests/UserRequests/ChangeEmailRequest.php new file mode 100644 index 0000000..17231f1 --- /dev/null +++ b/Backend/app/Http/Requests/UserRequests/ChangeEmailRequest.php @@ -0,0 +1,30 @@ +|string> + */ + public function rules(): array + { + return [ + "newEmail" => "required|email|unique:users,email", + ]; + } +} diff --git a/Backend/app/Http/Requests/UserRequests/ChangeNameRequest.php b/Backend/app/Http/Requests/UserRequests/ChangeNameRequest.php new file mode 100644 index 0000000..1162b8a --- /dev/null +++ b/Backend/app/Http/Requests/UserRequests/ChangeNameRequest.php @@ -0,0 +1,30 @@ +|string> + */ + public function rules(): array + { + return [ + "newName" => "required", + ]; + } +} diff --git a/Backend/app/Http/Requests/UserRequests/ChangePasswordRequest.php b/Backend/app/Http/Requests/UserRequests/ChangePasswordRequest.php new file mode 100644 index 0000000..7baa4f9 --- /dev/null +++ b/Backend/app/Http/Requests/UserRequests/ChangePasswordRequest.php @@ -0,0 +1,31 @@ +|string> + */ + public function rules(): array + { + return [ + "newPassword" => "required", + "confirmPassword" => "required", + ]; + } +} diff --git a/Backend/app/Http/Requests/UserRequests/ChangeUserRoleRequest.php b/Backend/app/Http/Requests/UserRequests/ChangeUserRoleRequest.php new file mode 100644 index 0000000..b00a2f9 --- /dev/null +++ b/Backend/app/Http/Requests/UserRequests/ChangeUserRoleRequest.php @@ -0,0 +1,30 @@ +|string> + */ + public function rules(): array + { + return [ + "isAdmin" => "required|boolean", + ]; + } +} diff --git a/Backend/app/Http/Requests/UserRequests/FavoriteKebabRequest.php b/Backend/app/Http/Requests/UserRequests/FavoriteKebabRequest.php new file mode 100644 index 0000000..13e6809 --- /dev/null +++ b/Backend/app/Http/Requests/UserRequests/FavoriteKebabRequest.php @@ -0,0 +1,31 @@ +|string> + */ + public function rules() + { + return [ + "user_id" => "required", + "kebab_id" => "required", + ]; + } +} diff --git a/Backend/app/Http/Requests/UserRequest.php b/Backend/app/Http/Requests/UserRequests/UserRequest.php similarity index 93% rename from Backend/app/Http/Requests/UserRequest.php rename to Backend/app/Http/Requests/UserRequests/UserRequest.php index 10680a4..346c1a1 100644 --- a/Backend/app/Http/Requests/UserRequest.php +++ b/Backend/app/Http/Requests/UserRequests/UserRequest.php @@ -2,7 +2,7 @@ declare(strict_types=1); -namespace App\Http\Requests; +namespace App\Http\Requests\UserRequests; use Illuminate\Foundation\Http\FormRequest; diff --git a/Backend/app/Models/Kebab.php b/Backend/app/Models/Kebab.php new file mode 100644 index 0000000..2b0a758 --- /dev/null +++ b/Backend/app/Models/Kebab.php @@ -0,0 +1,59 @@ + + */ + protected $fillable = [ + "logo", + "name", + "address", + "coordinates", + "sauces", + "meats", + "status", + "opening_hours", + "opening_year", + "closing_year", + "is_crafted", + "is_premises", + "is_chainstore", + "ordering_options", + "comments", + "pages", + ]; + + protected $casts = [ + "coordinates" => "array", + "sauces" => "array", + "meats" => "array", + "opening_hours" => "array", + "ordering_options" => "array", + "comments" => "array", + ]; + + public function getPyszneLink(): ?string + { + $pages = json_decode($this->pages, true); + + return $pages["pyszne.pl"] ?? null; + } +} diff --git a/Backend/app/Models/Suggestions.php b/Backend/app/Models/Suggestions.php new file mode 100644 index 0000000..7ac6696 --- /dev/null +++ b/Backend/app/Models/Suggestions.php @@ -0,0 +1,27 @@ + + */ + protected $fillable = [ + "user", + "contents", + ]; +} diff --git a/Backend/app/Models/User.php b/Backend/app/Models/User.php index dda6f9b..3ce613e 100644 --- a/Backend/app/Models/User.php +++ b/Backend/app/Models/User.php @@ -9,6 +9,17 @@ use Illuminate\Notifications\Notifiable; use Laravel\Sanctum\HasApiTokens; +/** + * @OA\Schema( + * schema="User", + * type="object", + * required={"id", "name", "email", "isAdmin"}, + * @OA\Property(property="id", type="integer", description="User ID"), + * @OA\Property(property="name", type="string", description="User's name"), + * @OA\Property(property="email", type="string", description="User's email"), + * @OA\Property(property="isAdmin", type="boolean", description="User's admin status") + * ) + */ class User extends Authenticatable { use HasApiTokens; @@ -47,4 +58,12 @@ class User extends Authenticatable "email_verified_at" => "datetime", "password" => "hashed", ]; + + /** + * Check if the user is an admin. + */ + public function isAdmin(): bool + { + return (bool)$this->getAttribute("isAdmin"); + } } diff --git a/Backend/app/Services/PyszneScraper.php b/Backend/app/Services/PyszneScraper.php new file mode 100644 index 0000000..98ea818 --- /dev/null +++ b/Backend/app/Services/PyszneScraper.php @@ -0,0 +1,45 @@ + [ + "User-Agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36", + "Accept-Language" => "en-US,en;q=0.5", + "Accept" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8", + "Referer" => "https://www.pyszne.pl", + ], + "timeout" => 10.0, + ]); + $response = $client->get($url); + + if ($response->getStatusCode() !== 200) { + throw new \Exception("Failed to retrieve the page"); + } + + $htmlContent = $response->getBody()->getContents(); + + $crawler = new Crawler($htmlContent); + + $element = $crawler->filter('[data-qa="restaurant-header-score"] b')->first(); + + if ($element->count()) { + return $element->text(); + } + + throw new \Exception('Element with data-qa="restaurant-header-score" and child not found'); + } catch (\Exception $e) { + return "Error: " . $e->getMessage(); + } + } +} diff --git a/Backend/composer.json b/Backend/composer.json index 80c0926..91ab8bb 100644 --- a/Backend/composer.json +++ b/Backend/composer.json @@ -9,19 +9,25 @@ "license": "MIT", "require": { "php": "^8.1", - "guzzlehttp/guzzle": "^7.2", + "guzzlehttp/guzzle": "^7.9", "laravel/framework": "^10.10", "laravel/sanctum": "^3.3", "laravel/socialite": "^5.11", - "laravel/tinker": "^2.8" + "laravel/tinker": "^2.8", + "symfony/browser-kit": "^7.1", + "symfony/dom-crawler": "^7.2", + "symfony/http-client": "^7.1", + "zircote/swagger-php": "^4.11" }, "require-dev": { "blumilksoftware/codestyle": "^4.0", "fakerphp/faker": "^1.9.1", + "knuckleswtf/scribe": "^4.39", "laravel/pint": "^1.0", "laravel/sail": "^1.18", "mockery/mockery": "^1.4.4", "nunomaduro/collision": "^7.0", + "pestphp/pest": "^2.36", "phpunit/phpunit": "^10.1", "spatie/laravel-ignition": "^2.0" }, @@ -70,4 +76,4 @@ }, "minimum-stability": "stable", "prefer-stable": true -} \ No newline at end of file +} diff --git a/Backend/composer.lock b/Backend/composer.lock index 0efb8f0..5860e27 100644 --- a/Backend/composer.lock +++ b/Backend/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "3f4d1f1e81335e57c61cd1ac364b7e4b", + "content-hash": "b91ee5c49b8bfea7096edda021ce182a", "packages": [ { "name": "brick/math", @@ -445,16 +445,16 @@ }, { "name": "egulias/email-validator", - "version": "4.0.2", + "version": "4.0.3", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e" + "reference": "b115554301161fa21467629f1e1391c1936de517" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ebaaf5be6c0286928352e054f2d5125608e5405e", - "reference": "ebaaf5be6c0286928352e054f2d5125608e5405e", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/b115554301161fa21467629f1e1391c1936de517", + "reference": "b115554301161fa21467629f1e1391c1936de517", "shasum": "" }, "require": { @@ -500,7 +500,7 @@ ], "support": { "issues": "https://github.com/egulias/EmailValidator/issues", - "source": "https://github.com/egulias/EmailValidator/tree/4.0.2" + "source": "https://github.com/egulias/EmailValidator/tree/4.0.3" }, "funding": [ { @@ -508,7 +508,7 @@ "type": "github" } ], - "time": "2023-10-06T06:47:41+00:00" + "time": "2024-12-27T00:36:43+00:00" }, { "name": "firebase/php-jwt", @@ -1119,16 +1119,16 @@ }, { "name": "laravel/framework", - "version": "v10.48.22", + "version": "v10.48.25", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "c4ea52bb044faef4a103d7dd81746c01b2ec860e" + "reference": "f132b23b13909cc22c615c01b0c5640541c3da0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/c4ea52bb044faef4a103d7dd81746c01b2ec860e", - "reference": "c4ea52bb044faef4a103d7dd81746c01b2ec860e", + "url": "https://api.github.com/repos/laravel/framework/zipball/f132b23b13909cc22c615c01b0c5640541c3da0c", + "reference": "f132b23b13909cc22c615c01b0c5640541c3da0c", "shasum": "" }, "require": { @@ -1235,7 +1235,7 @@ "nyholm/psr7": "^1.2", "orchestra/testbench-core": "^8.23.4", "pda/pheanstalk": "^4.0", - "phpstan/phpstan": "^1.4.7", + "phpstan/phpstan": "~1.11.11", "phpunit/phpunit": "^10.0.7", "predis/predis": "^2.0.2", "symfony/cache": "^6.2", @@ -1322,7 +1322,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2024-09-12T15:00:09+00:00" + "time": "2024-11-26T15:32:57+00:00" }, { "name": "laravel/prompts", @@ -1450,16 +1450,16 @@ }, { "name": "laravel/serializable-closure", - "version": "v1.3.5", + "version": "v1.3.7", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "1dc4a3dbfa2b7628a3114e43e32120cce7cdda9c" + "reference": "4f48ade902b94323ca3be7646db16209ec76be3d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/1dc4a3dbfa2b7628a3114e43e32120cce7cdda9c", - "reference": "1dc4a3dbfa2b7628a3114e43e32120cce7cdda9c", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/4f48ade902b94323ca3be7646db16209ec76be3d", + "reference": "4f48ade902b94323ca3be7646db16209ec76be3d", "shasum": "" }, "require": { @@ -1507,7 +1507,7 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2024-09-23T13:33:08+00:00" + "time": "2024-11-14T18:34:49+00:00" }, { "name": "laravel/socialite", @@ -1649,16 +1649,16 @@ }, { "name": "league/commonmark", - "version": "2.5.3", + "version": "2.6.1", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "b650144166dfa7703e62a22e493b853b58d874b0" + "reference": "d990688c91cedfb69753ffc2512727ec646df2ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/b650144166dfa7703e62a22e493b853b58d874b0", - "reference": "b650144166dfa7703e62a22e493b853b58d874b0", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/d990688c91cedfb69753ffc2512727ec646df2ad", + "reference": "d990688c91cedfb69753ffc2512727ec646df2ad", "shasum": "" }, "require": { @@ -1683,8 +1683,9 @@ "phpstan/phpstan": "^1.8.2", "phpunit/phpunit": "^9.5.21 || ^10.5.9 || ^11.0.0", "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3 | ^6.0 || ^7.0", - "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 || ^7.0", + "symfony/finder": "^5.3 | ^6.0 | ^7.0", + "symfony/process": "^5.4 | ^6.0 | ^7.0", + "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0 | ^7.0", "unleashedtech/php-coding-standard": "^3.1.1", "vimeo/psalm": "^4.24.0 || ^5.0.0" }, @@ -1694,7 +1695,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.6-dev" + "dev-main": "2.7-dev" } }, "autoload": { @@ -1751,7 +1752,7 @@ "type": "tidelift" } ], - "time": "2024-08-16T11:46:16+00:00" + "time": "2024-12-29T14:10:59+00:00" }, { "name": "league/config", @@ -2099,18 +2100,85 @@ }, "time": "2022-04-15T14:02:14+00:00" }, + { + "name": "masterminds/html5", + "version": "2.9.0", + "source": { + "type": "git", + "url": "https://github.com/Masterminds/html5-php.git", + "reference": "f5ac2c0b0a2eefca70b2ce32a5809992227e75a6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f5ac2c0b0a2eefca70b2ce32a5809992227e75a6", + "reference": "f5ac2c0b0a2eefca70b2ce32a5809992227e75a6", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8 || ^9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Masterminds\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matt Butcher", + "email": "technosophos@gmail.com" + }, + { + "name": "Matt Farina", + "email": "matt@mattfarina.com" + }, + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" + } + ], + "description": "An HTML5 parser and serializer.", + "homepage": "http://masterminds.github.io/html5-php", + "keywords": [ + "HTML5", + "dom", + "html", + "parser", + "querypath", + "serializer", + "xml" + ], + "support": { + "issues": "https://github.com/Masterminds/html5-php/issues", + "source": "https://github.com/Masterminds/html5-php/tree/2.9.0" + }, + "time": "2024-03-31T07:05:07+00:00" + }, { "name": "monolog/monolog", - "version": "3.7.0", + "version": "3.8.1", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "f4393b648b78a5408747de94fca38beb5f7e9ef8" + "reference": "aef6ee73a77a66e404dd6540934a9ef1b3c855b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f4393b648b78a5408747de94fca38beb5f7e9ef8", - "reference": "f4393b648b78a5408747de94fca38beb5f7e9ef8", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/aef6ee73a77a66e404dd6540934a9ef1b3c855b4", + "reference": "aef6ee73a77a66e404dd6540934a9ef1b3c855b4", "shasum": "" }, "require": { @@ -2130,12 +2198,14 @@ "guzzlehttp/psr7": "^2.2", "mongodb/mongodb": "^1.8", "php-amqplib/php-amqplib": "~2.4 || ^3", - "phpstan/phpstan": "^1.9", - "phpstan/phpstan-deprecation-rules": "^1.0", - "phpstan/phpstan-strict-rules": "^1.4", - "phpunit/phpunit": "^10.5.17", + "php-console/php-console": "^3.1.8", + "phpstan/phpstan": "^2", + "phpstan/phpstan-deprecation-rules": "^2", + "phpstan/phpstan-strict-rules": "^2", + "phpunit/phpunit": "^10.5.17 || ^11.0.7", "predis/predis": "^1.1 || ^2", - "ruflin/elastica": "^7", + "rollbar/rollbar": "^4.0", + "ruflin/elastica": "^7 || ^8", "symfony/mailer": "^5.4 || ^6", "symfony/mime": "^5.4 || ^6" }, @@ -2186,7 +2256,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.7.0" + "source": "https://github.com/Seldaek/monolog/tree/3.8.1" }, "funding": [ { @@ -2198,20 +2268,20 @@ "type": "tidelift" } ], - "time": "2024-06-28T09:40:51+00:00" + "time": "2024-12-05T17:15:07+00:00" }, { "name": "nesbot/carbon", - "version": "2.72.5", + "version": "2.72.6", "source": { "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "afd46589c216118ecd48ff2b95d77596af1e57ed" + "url": "https://github.com/CarbonPHP/carbon.git", + "reference": "1e9d50601e7035a4c61441a208cb5bed73e108c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/afd46589c216118ecd48ff2b95d77596af1e57ed", - "reference": "afd46589c216118ecd48ff2b95d77596af1e57ed", + "url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/1e9d50601e7035a4c61441a208cb5bed73e108c5", + "reference": "1e9d50601e7035a4c61441a208cb5bed73e108c5", "shasum": "" }, "require": { @@ -2231,7 +2301,7 @@ "doctrine/orm": "^2.7 || ^3.0", "friendsofphp/php-cs-fixer": "^3.0", "kylekatarnls/multi-tester": "^2.0", - "ondrejmirtes/better-reflection": "*", + "ondrejmirtes/better-reflection": "<6", "phpmd/phpmd": "^2.9", "phpstan/extension-installer": "^1.0", "phpstan/phpstan": "^0.12.99 || ^1.7.14", @@ -2244,10 +2314,6 @@ ], "type": "library", "extra": { - "branch-alias": { - "dev-master": "3.x-dev", - "dev-2.x": "2.x-dev" - }, "laravel": { "providers": [ "Carbon\\Laravel\\ServiceProvider" @@ -2257,6 +2323,10 @@ "includes": [ "extension.neon" ] + }, + "branch-alias": { + "dev-2.x": "2.x-dev", + "dev-master": "3.x-dev" } }, "autoload": { @@ -2305,7 +2375,7 @@ "type": "tidelift" } ], - "time": "2024-06-03T19:18:41+00:00" + "time": "2024-12-27T09:28:11+00:00" }, { "name": "nette/schema", @@ -2457,16 +2527,16 @@ }, { "name": "nikic/php-parser", - "version": "v5.3.1", + "version": "v5.4.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b" + "reference": "447a020a1f875a434d62f2a401f53b82a396e494" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/8eea230464783aa9671db8eea6f8c6ac5285794b", - "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/447a020a1f875a434d62f2a401f53b82a396e494", + "reference": "447a020a1f875a434d62f2a401f53b82a396e494", "shasum": "" }, "require": { @@ -2509,38 +2579,38 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.3.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.4.0" }, - "time": "2024-10-08T18:51:32+00:00" + "time": "2024-12-30T11:07:19+00:00" }, { "name": "nunomaduro/termwind", - "version": "v1.16.0", + "version": "v1.17.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/termwind.git", - "reference": "dcf1ec3dfa36137b7ce41d43866644a7ab8fc257" + "reference": "5369ef84d8142c1d87e4ec278711d4ece3cbf301" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/dcf1ec3dfa36137b7ce41d43866644a7ab8fc257", - "reference": "dcf1ec3dfa36137b7ce41d43866644a7ab8fc257", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/5369ef84d8142c1d87e4ec278711d4ece3cbf301", + "reference": "5369ef84d8142c1d87e4ec278711d4ece3cbf301", "shasum": "" }, "require": { "ext-mbstring": "*", "php": "^8.1", - "symfony/console": "^6.4.12" + "symfony/console": "^6.4.15" }, "require-dev": { - "illuminate/console": "^10.48.22", - "illuminate/support": "^10.48.22", - "laravel/pint": "^1.18.1", - "pestphp/pest": "^2", + "illuminate/console": "^10.48.24", + "illuminate/support": "^10.48.24", + "laravel/pint": "^1.18.2", + "pestphp/pest": "^2.36.0", "pestphp/pest-plugin-mock": "2.0.0", - "phpstan/phpstan": "^1.12.6", + "phpstan/phpstan": "^1.12.11", "phpstan/phpstan-strict-rules": "^1.6.1", - "symfony/var-dumper": "^6.4.11", + "symfony/var-dumper": "^6.4.15", "thecodingmachine/phpstan-strict-rules": "^1.0.0" }, "type": "library", @@ -2580,7 +2650,7 @@ ], "support": { "issues": "https://github.com/nunomaduro/termwind/issues", - "source": "https://github.com/nunomaduro/termwind/tree/v1.16.0" + "source": "https://github.com/nunomaduro/termwind/tree/v1.17.0" }, "funding": [ { @@ -2596,7 +2666,7 @@ "type": "github" } ], - "time": "2024-10-15T15:27:12+00:00" + "time": "2024-11-21T10:36:35+00:00" }, { "name": "paragonie/constant_time_encoding", @@ -3616,18 +3686,86 @@ ], "time": "2024-04-27T21:32:50+00:00" }, + { + "name": "symfony/browser-kit", + "version": "v7.1.6", + "source": { + "type": "git", + "url": "https://github.com/symfony/browser-kit.git", + "reference": "714becc9ba9b20115ffededc58f6b7172dc394cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/714becc9ba9b20115ffededc58f6b7172dc394cf", + "reference": "714becc9ba9b20115ffededc58f6b7172dc394cf", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/dom-crawler": "^6.4|^7.0" + }, + "require-dev": { + "symfony/css-selector": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/mime": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\BrowserKit\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/browser-kit/tree/v7.1.6" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-10-25T15:11:02+00:00" + }, { "name": "symfony/console", - "version": "v6.4.13", + "version": "v6.4.17", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "f793dd5a7d9ae9923e35d0503d08ba734cec1d79" + "reference": "799445db3f15768ecc382ac5699e6da0520a0a04" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/f793dd5a7d9ae9923e35d0503d08ba734cec1d79", - "reference": "f793dd5a7d9ae9923e35d0503d08ba734cec1d79", + "url": "https://api.github.com/repos/symfony/console/zipball/799445db3f15768ecc382ac5699e6da0520a0a04", + "reference": "799445db3f15768ecc382ac5699e6da0520a0a04", "shasum": "" }, "require": { @@ -3692,7 +3830,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.13" + "source": "https://github.com/symfony/console/tree/v6.4.17" }, "funding": [ { @@ -3708,20 +3846,20 @@ "type": "tidelift" } ], - "time": "2024-10-09T08:40:40+00:00" + "time": "2024-12-07T12:07:30+00:00" }, { "name": "symfony/css-selector", - "version": "v7.1.6", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "4aa4f6b3d6749c14d3aa815eef8226632e7bbc66" + "reference": "601a5ce9aaad7bf10797e3663faefce9e26c24e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/4aa4f6b3d6749c14d3aa815eef8226632e7bbc66", - "reference": "4aa4f6b3d6749c14d3aa815eef8226632e7bbc66", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/601a5ce9aaad7bf10797e3663faefce9e26c24e2", + "reference": "601a5ce9aaad7bf10797e3663faefce9e26c24e2", "shasum": "" }, "require": { @@ -3757,7 +3895,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v7.1.6" + "source": "https://github.com/symfony/css-selector/tree/v7.2.0" }, "funding": [ { @@ -3773,20 +3911,20 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", - "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", + "reference": "74c71c939a79f7d5bf3c1ce9f5ea37ba0114c6f6", "shasum": "" }, "require": { @@ -3794,12 +3932,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -3824,7 +3962,74 @@ "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.1" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:20:29+00:00" + }, + { + "name": "symfony/dom-crawler", + "version": "v7.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "b176e1f1f550ef44c94eb971bf92488de08f7c6b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/b176e1f1f550ef44c94eb971bf92488de08f7c6b", + "reference": "b176e1f1f550ef44c94eb971bf92488de08f7c6b", + "shasum": "" + }, + "require": { + "masterminds/html5": "^2.6", + "php": ">=8.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.0" + }, + "require-dev": { + "symfony/css-selector": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\DomCrawler\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Eases DOM navigation for HTML and XML documents", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/dom-crawler/tree/v7.2.0" }, "funding": [ { @@ -3840,20 +4045,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-11-13T16:15:23+00:00" }, { "name": "symfony/error-handler", - "version": "v6.4.13", + "version": "v6.4.17", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "e3c78742f86a5b65fe2ac4c4b6b776d92fd7ca0c" + "reference": "37ad2380e8c1a8cf62a1200a5c10080b679b446c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/e3c78742f86a5b65fe2ac4c4b6b776d92fd7ca0c", - "reference": "e3c78742f86a5b65fe2ac4c4b6b776d92fd7ca0c", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/37ad2380e8c1a8cf62a1200a5c10080b679b446c", + "reference": "37ad2380e8c1a8cf62a1200a5c10080b679b446c", "shasum": "" }, "require": { @@ -3899,7 +4104,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.4.13" + "source": "https://github.com/symfony/error-handler/tree/v6.4.17" }, "funding": [ { @@ -3915,20 +4120,20 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2024-12-06T13:30:51+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.1.6", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "87254c78dd50721cfd015b62277a8281c5589702" + "reference": "910c5db85a5356d0fea57680defec4e99eb9c8c1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/87254c78dd50721cfd015b62277a8281c5589702", - "reference": "87254c78dd50721cfd015b62277a8281c5589702", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/910c5db85a5356d0fea57680defec4e99eb9c8c1", + "reference": "910c5db85a5356d0fea57680defec4e99eb9c8c1", "shasum": "" }, "require": { @@ -3979,7 +4184,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.1.6" + "source": "https://github.com/symfony/event-dispatcher/tree/v7.2.0" }, "funding": [ { @@ -3995,20 +4200,20 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-09-25T14:21:43+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50" + "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50", - "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/7642f5e970b672283b7823222ae8ef8bbc160b9f", + "reference": "7642f5e970b672283b7823222ae8ef8bbc160b9f", "shasum": "" }, "require": { @@ -4017,12 +4222,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -4055,7 +4260,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.1" }, "funding": [ { @@ -4071,20 +4276,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/finder", - "version": "v6.4.13", + "version": "v6.4.17", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "daea9eca0b08d0ed1dc9ab702a46128fd1be4958" + "reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/daea9eca0b08d0ed1dc9ab702a46128fd1be4958", - "reference": "daea9eca0b08d0ed1dc9ab702a46128fd1be4958", + "url": "https://api.github.com/repos/symfony/finder/zipball/1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7", + "reference": "1d0e8266248c5d9ab6a87e3789e6dc482af3c9c7", "shasum": "" }, "require": { @@ -4119,7 +4324,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.4.13" + "source": "https://github.com/symfony/finder/tree/v6.4.17" }, "funding": [ { @@ -4135,45 +4340,59 @@ "type": "tidelift" } ], - "time": "2024-10-01T08:30:56+00:00" + "time": "2024-12-29T13:51:37+00:00" }, { - "name": "symfony/http-foundation", - "version": "v6.4.13", + "name": "symfony/http-client", + "version": "v7.1.8", "source": { "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "4c0341b3e0a7291e752c69d2a1ed9a84b68d604c" + "url": "https://github.com/symfony/http-client.git", + "reference": "c30d91a1deac0dc3ed5e604683cf2e1dfc635b8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/4c0341b3e0a7291e752c69d2a1ed9a84b68d604c", - "reference": "4c0341b3e0a7291e752c69d2a1ed9a84b68d604c", + "url": "https://api.github.com/repos/symfony/http-client/zipball/c30d91a1deac0dc3ed5e604683cf2e1dfc635b8a", + "reference": "c30d91a1deac0dc3ed5e604683cf2e1dfc635b8a", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=8.2", + "psr/log": "^1|^2|^3", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php83": "^1.27" + "symfony/http-client-contracts": "^3.4.1", + "symfony/service-contracts": "^2.5|^3" }, "conflict": { - "symfony/cache": "<6.3" + "php-http/discovery": "<1.15", + "symfony/http-foundation": "<6.4" + }, + "provide": { + "php-http/async-client-implementation": "*", + "php-http/client-implementation": "*", + "psr/http-client-implementation": "1.0", + "symfony/http-client-implementation": "3.0" }, "require-dev": { - "doctrine/dbal": "^2.13.1|^3|^4", - "predis/predis": "^1.1|^2.0", - "symfony/cache": "^6.3|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/expression-language": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", - "symfony/mime": "^5.4|^6.0|^7.0", - "symfony/rate-limiter": "^5.4|^6.0|^7.0" + "amphp/amp": "^2.5", + "amphp/http-client": "^4.2.1", + "amphp/http-tunnel": "^1.0", + "amphp/socket": "^1.1", + "guzzlehttp/promises": "^1.4|^2.0", + "nyholm/psr7": "^1.0", + "php-http/httplug": "^1.0|^2.0", + "psr/http-client": "^1.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/messenger": "^6.4|^7.0", + "symfony/process": "^6.4|^7.0", + "symfony/rate-limiter": "^6.4|^7.0", + "symfony/stopwatch": "^6.4|^7.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" + "Symfony\\Component\\HttpClient\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -4185,18 +4404,21 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Defines an object-oriented layer for the HTTP specification", + "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", "homepage": "https://symfony.com", + "keywords": [ + "http" + ], "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.4.13" + "source": "https://github.com/symfony/http-client/tree/v7.1.8" }, "funding": [ { @@ -4212,56 +4434,211 @@ "type": "tidelift" } ], - "time": "2024-10-11T19:20:58+00:00" + "time": "2024-11-13T13:40:27+00:00" }, { - "name": "symfony/http-kernel", - "version": "v6.4.13", + "name": "symfony/http-client-contracts", + "version": "v3.5.2", "source": { "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "4474015c363ec0cd3bf47d55657e68630dbae66e" + "url": "https://github.com/symfony/http-client-contracts.git", + "reference": "ee8d807ab20fcb51267fdace50fbe3494c31e645" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/4474015c363ec0cd3bf47d55657e68630dbae66e", - "reference": "4474015c363ec0cd3bf47d55657e68630dbae66e", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ee8d807ab20fcb51267fdace50fbe3494c31e645", + "reference": "ee8d807ab20fcb51267fdace50fbe3494c31e645", "shasum": "" }, "require": { - "php": ">=8.1", - "psr/log": "^1|^2|^3", - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/error-handler": "^6.4|^7.0", - "symfony/event-dispatcher": "^5.4|^6.0|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/browser-kit": "<5.4", - "symfony/cache": "<5.4", - "symfony/config": "<6.1", - "symfony/console": "<5.4", - "symfony/dependency-injection": "<6.4", - "symfony/doctrine-bridge": "<5.4", - "symfony/form": "<5.4", - "symfony/http-client": "<5.4", - "symfony/http-client-contracts": "<2.5", - "symfony/mailer": "<5.4", - "symfony/messenger": "<5.4", - "symfony/translation": "<5.4", - "symfony/translation-contracts": "<2.5", - "symfony/twig-bridge": "<5.4", - "symfony/validator": "<6.4", - "symfony/var-dumper": "<6.3", - "twig/twig": "<2.13" + "php": ">=8.1" }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.5-dev" + } }, - "require-dev": { - "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^5.4|^6.0|^7.0", + "autoload": { + "psr-4": { + "Symfony\\Contracts\\HttpClient\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to HTTP clients", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/http-client-contracts/tree/v3.5.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-12-07T08:49:48+00:00" + }, + { + "name": "symfony/http-foundation", + "version": "v6.4.16", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-foundation.git", + "reference": "431771b7a6f662f1575b3cfc8fd7617aa9864d57" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/431771b7a6f662f1575b3cfc8fd7617aa9864d57", + "reference": "431771b7a6f662f1575b3cfc8fd7617aa9864d57", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php83": "^1.27" + }, + "conflict": { + "symfony/cache": "<6.4.12|>=7.0,<7.1.5" + }, + "require-dev": { + "doctrine/dbal": "^2.13.1|^3|^4", + "predis/predis": "^1.1|^2.0", + "symfony/cache": "^6.4.12|^7.1.5", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/rate-limiter": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Defines an object-oriented layer for the HTTP specification", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/http-foundation/tree/v6.4.16" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-11-13T18:58:10+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v6.4.17", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "c5647393c5ce11833d13e4b70fff4b571d4ac710" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/c5647393c5ce11833d13e4b70fff4b571d4ac710", + "reference": "c5647393c5ce11833d13e4b70fff4b571d4ac710", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/error-handler": "^6.4|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/browser-kit": "<5.4", + "symfony/cache": "<5.4", + "symfony/config": "<6.1", + "symfony/console": "<5.4", + "symfony/dependency-injection": "<6.4", + "symfony/doctrine-bridge": "<5.4", + "symfony/form": "<5.4", + "symfony/http-client": "<5.4", + "symfony/http-client-contracts": "<2.5", + "symfony/mailer": "<5.4", + "symfony/messenger": "<5.4", + "symfony/translation": "<5.4", + "symfony/translation-contracts": "<2.5", + "symfony/twig-bridge": "<5.4", + "symfony/validator": "<6.4", + "symfony/var-dumper": "<6.3", + "twig/twig": "<2.13" + }, + "provide": { + "psr/log-implementation": "1.0|2.0|3.0" + }, + "require-dev": { + "psr/cache": "^1.0|^2.0|^3.0", + "symfony/browser-kit": "^5.4|^6.0|^7.0", "symfony/clock": "^6.2|^7.0", "symfony/config": "^6.1|^7.0", "symfony/console": "^5.4|^6.0|^7.0", @@ -4310,7 +4687,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.4.13" + "source": "https://github.com/symfony/http-kernel/tree/v6.4.17" }, "funding": [ { @@ -4326,7 +4703,7 @@ "type": "tidelift" } ], - "time": "2024-10-27T13:00:29+00:00" + "time": "2024-12-31T14:49:31+00:00" }, { "name": "symfony/mailer", @@ -4410,16 +4787,16 @@ }, { "name": "symfony/mime", - "version": "v6.4.13", + "version": "v6.4.17", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "1de1cf14d99b12c7ebbb850491ec6ae3ed468855" + "reference": "ea87c8850a54ff039d3e0ab4ae5586dd4e6c0232" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/1de1cf14d99b12c7ebbb850491ec6ae3ed468855", - "reference": "1de1cf14d99b12c7ebbb850491ec6ae3ed468855", + "url": "https://api.github.com/repos/symfony/mime/zipball/ea87c8850a54ff039d3e0ab4ae5586dd4e6c0232", + "reference": "ea87c8850a54ff039d3e0ab4ae5586dd4e6c0232", "shasum": "" }, "require": { @@ -4475,7 +4852,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.4.13" + "source": "https://github.com/symfony/mime/tree/v6.4.17" }, "funding": [ { @@ -4491,7 +4868,7 @@ "type": "tidelift" } ], - "time": "2024-10-25T15:07:50+00:00" + "time": "2024-12-02T11:09:41+00:00" }, { "name": "symfony/polyfill-ctype", @@ -4519,8 +4896,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4595,8 +4972,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4674,8 +5051,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4756,8 +5133,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4840,8 +5217,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4914,8 +5291,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -4994,8 +5371,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -5076,8 +5453,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -5131,16 +5508,16 @@ }, { "name": "symfony/process", - "version": "v6.4.13", + "version": "v6.4.15", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "1f9f59b46880201629df3bd950fc5ae8c55b960f" + "reference": "3cb242f059c14ae08591c5c4087d1fe443564392" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/1f9f59b46880201629df3bd950fc5ae8c55b960f", - "reference": "1f9f59b46880201629df3bd950fc5ae8c55b960f", + "url": "https://api.github.com/repos/symfony/process/zipball/3cb242f059c14ae08591c5c4087d1fe443564392", + "reference": "3cb242f059c14ae08591c5c4087d1fe443564392", "shasum": "" }, "require": { @@ -5172,7 +5549,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.4.13" + "source": "https://github.com/symfony/process/tree/v6.4.15" }, "funding": [ { @@ -5188,20 +5565,20 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2024-11-06T14:19:14+00:00" }, { "name": "symfony/routing", - "version": "v6.4.13", + "version": "v6.4.16", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "640a74250d13f9c30d5ca045b6aaaabcc8215278" + "reference": "91e02e606b4b705c2f4fb42f7e7708b7923a3220" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/640a74250d13f9c30d5ca045b6aaaabcc8215278", - "reference": "640a74250d13f9c30d5ca045b6aaaabcc8215278", + "url": "https://api.github.com/repos/symfony/routing/zipball/91e02e606b4b705c2f4fb42f7e7708b7923a3220", + "reference": "91e02e606b4b705c2f4fb42f7e7708b7923a3220", "shasum": "" }, "require": { @@ -5255,7 +5632,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.4.13" + "source": "https://github.com/symfony/routing/tree/v6.4.16" }, "funding": [ { @@ -5271,20 +5648,20 @@ "type": "tidelift" } ], - "time": "2024-10-01T08:30:56+00:00" + "time": "2024-11-13T15:31:34+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", - "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/e53260aabf78fb3d63f8d79d69ece59f80d5eda0", + "reference": "e53260aabf78fb3d63f8d79d69ece59f80d5eda0", "shasum": "" }, "require": { @@ -5297,12 +5674,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -5338,7 +5715,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.5.1" }, "funding": [ { @@ -5354,20 +5731,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/string", - "version": "v7.1.6", + "version": "v7.2.0", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "61b72d66bf96c360a727ae6232df5ac83c71f626" + "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/61b72d66bf96c360a727ae6232df5ac83c71f626", - "reference": "61b72d66bf96c360a727ae6232df5ac83c71f626", + "url": "https://api.github.com/repos/symfony/string/zipball/446e0d146f991dde3e73f45f2c97a9faad773c82", + "reference": "446e0d146f991dde3e73f45f2c97a9faad773c82", "shasum": "" }, "require": { @@ -5425,7 +5802,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.1.6" + "source": "https://github.com/symfony/string/tree/v7.2.0" }, "funding": [ { @@ -5441,7 +5818,7 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-11-13T13:31:26+00:00" }, { "name": "symfony/translation", @@ -5540,16 +5917,16 @@ }, { "name": "symfony/translation-contracts", - "version": "v3.5.0", + "version": "v3.5.1", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a" + "reference": "4667ff3bd513750603a09c8dedbea942487fb07c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", - "reference": "b9d2189887bb6b2e0367a9fc7136c5239ab9b05a", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/4667ff3bd513750603a09c8dedbea942487fb07c", + "reference": "4667ff3bd513750603a09c8dedbea942487fb07c", "shasum": "" }, "require": { @@ -5557,12 +5934,12 @@ }, "type": "library", "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, "branch-alias": { "dev-main": "3.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" } }, "autoload": { @@ -5598,7 +5975,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.5.0" + "source": "https://github.com/symfony/translation-contracts/tree/v3.5.1" }, "funding": [ { @@ -5614,7 +5991,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:32:20+00:00" + "time": "2024-09-25T14:20:29+00:00" }, { "name": "symfony/uid", @@ -5692,16 +6069,16 @@ }, { "name": "symfony/var-dumper", - "version": "v6.4.13", + "version": "v6.4.15", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "2acb151474ed8cb43624e3f41a0bf7c4c8ce4f41" + "reference": "38254d5a5ac2e61f2b52f9caf54e7aa3c9d36b80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2acb151474ed8cb43624e3f41a0bf7c4c8ce4f41", - "reference": "2acb151474ed8cb43624e3f41a0bf7c4c8ce4f41", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/38254d5a5ac2e61f2b52f9caf54e7aa3c9d36b80", + "reference": "38254d5a5ac2e61f2b52f9caf54e7aa3c9d36b80", "shasum": "" }, "require": { @@ -5757,7 +6134,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.4.13" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.15" }, "funding": [ { @@ -5773,35 +6150,109 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:18:03+00:00" + "time": "2024-11-08T15:28:48+00:00" + }, + { + "name": "symfony/yaml", + "version": "v7.2.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "099581e99f557e9f16b43c5916c26380b54abb22" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/099581e99f557e9f16b43c5916c26380b54abb22", + "reference": "099581e99f557e9f16b43c5916c26380b54abb22", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/console": "<6.4" + }, + "require-dev": { + "symfony/console": "^6.4|^7.0" + }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v7.2.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-10-23T06:56:12+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", - "version": "v2.2.7", + "version": "v2.3.0", "source": { "type": "git", "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb" + "reference": "0d72ac1c00084279c1816675284073c5a337c20d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/83ee6f38df0a63106a9e4536e3060458b74ccedb", - "reference": "83ee6f38df0a63106a9e4536e3060458b74ccedb", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0d72ac1c00084279c1816675284073c5a337c20d", + "reference": "0d72ac1c00084279c1816675284073c5a337c20d", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", - "php": "^5.5 || ^7.0 || ^8.0", - "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0 || ^7.0" + "php": "^7.4 || ^8.0", + "symfony/css-selector": "^5.4 || ^6.0 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^7.5 || ^8.5.21 || ^9.5.10" + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^8.5.21 || ^9.5.10" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.2.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { @@ -5824,9 +6275,9 @@ "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", "support": { "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.2.7" + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/v2.3.0" }, - "time": "2023-12-08T13:03:43+00:00" + "time": "2024-12-21T16:25:41+00:00" }, { "name": "vlucas/phpdotenv", @@ -5914,16 +6365,16 @@ }, { "name": "voku/portable-ascii", - "version": "2.0.1", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/voku/portable-ascii.git", - "reference": "b56450eed252f6801410d810c8e1727224ae0743" + "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b56450eed252f6801410d810c8e1727224ae0743", - "reference": "b56450eed252f6801410d810c8e1727224ae0743", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/b1d923f88091c6bf09699efcd7c8a1b1bfd7351d", + "reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d", "shasum": "" }, "require": { @@ -5948,7 +6399,7 @@ "authors": [ { "name": "Lars Moelleken", - "homepage": "http://www.moelleken.org/" + "homepage": "https://www.moelleken.org/" } ], "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", @@ -5960,7 +6411,7 @@ ], "support": { "issues": "https://github.com/voku/portable-ascii/issues", - "source": "https://github.com/voku/portable-ascii/tree/2.0.1" + "source": "https://github.com/voku/portable-ascii/tree/2.0.3" }, "funding": [ { @@ -5984,7 +6435,7 @@ "type": "tidelift" } ], - "time": "2022-03-08T17:03:00+00:00" + "time": "2024-11-21T01:49:47+00:00" }, { "name": "webmozart/assert", @@ -6043,25 +6494,106 @@ "source": "https://github.com/webmozarts/assert/tree/1.11.0" }, "time": "2022-06-03T18:03:27+00:00" - } - ], - "packages-dev": [ + }, { - "name": "blumilksoftware/codestyle", - "version": "v4.0.0", + "name": "zircote/swagger-php", + "version": "4.11.1", "source": { "type": "git", - "url": "https://github.com/blumilksoftware/codestyle.git", - "reference": "7aecbafb443abdb2f9e0acc1e851236a4c7d00b1" + "url": "https://github.com/zircote/swagger-php.git", + "reference": "7df10e8ec47db07c031db317a25bef962b4e5de1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/blumilksoftware/codestyle/zipball/7aecbafb443abdb2f9e0acc1e851236a4c7d00b1", - "reference": "7aecbafb443abdb2f9e0acc1e851236a4c7d00b1", + "url": "https://api.github.com/repos/zircote/swagger-php/zipball/7df10e8ec47db07c031db317a25bef962b4e5de1", + "reference": "7df10e8ec47db07c031db317a25bef962b4e5de1", "shasum": "" }, "require": { - "friendsofphp/php-cs-fixer": "^3.59", + "ext-json": "*", + "php": ">=7.2", + "psr/log": "^1.1 || ^2.0 || ^3.0", + "symfony/deprecation-contracts": "^2 || ^3", + "symfony/finder": ">=2.2", + "symfony/yaml": ">=3.3" + }, + "require-dev": { + "composer/package-versions-deprecated": "^1.11", + "doctrine/annotations": "^1.7 || ^2.0", + "friendsofphp/php-cs-fixer": "^2.17 || 3.62.0", + "phpstan/phpstan": "^1.6", + "phpunit/phpunit": ">=8", + "vimeo/psalm": "^4.23" + }, + "suggest": { + "doctrine/annotations": "^1.7 || ^2.0" + }, + "bin": [ + "bin/openapi" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev" + } + }, + "autoload": { + "psr-4": { + "OpenApi\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Robert Allen", + "email": "zircote@gmail.com" + }, + { + "name": "Bob Fanger", + "email": "bfanger@gmail.com", + "homepage": "https://bfanger.nl" + }, + { + "name": "Martin Rademacher", + "email": "mano@radebatz.net", + "homepage": "https://radebatz.net" + } + ], + "description": "swagger-php - Generate interactive documentation for your RESTful API using phpdoc annotations", + "homepage": "https://github.com/zircote/swagger-php/", + "keywords": [ + "api", + "json", + "rest", + "service discovery" + ], + "support": { + "issues": "https://github.com/zircote/swagger-php/issues", + "source": "https://github.com/zircote/swagger-php/tree/4.11.1" + }, + "time": "2024-10-15T19:20:02+00:00" + } + ], + "packages-dev": [ + { + "name": "blumilksoftware/codestyle", + "version": "v4.0.0", + "source": { + "type": "git", + "url": "https://github.com/blumilksoftware/codestyle.git", + "reference": "7aecbafb443abdb2f9e0acc1e851236a4c7d00b1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/blumilksoftware/codestyle/zipball/7aecbafb443abdb2f9e0acc1e851236a4c7d00b1", + "reference": "7aecbafb443abdb2f9e0acc1e851236a4c7d00b1", + "shasum": "" + }, + "require": { + "friendsofphp/php-cs-fixer": "^3.59", "kubawerlos/php-cs-fixer-custom-fixers": "^3.21", "php": "^8.2" }, @@ -6096,6 +6628,99 @@ }, "time": "2024-10-08T07:54:50+00:00" }, + { + "name": "brianium/paratest", + "version": "v7.4.8", + "source": { + "type": "git", + "url": "https://github.com/paratestphp/paratest.git", + "reference": "cf16fcbb9b8107a7df6b97e497fc91e819774d8b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paratestphp/paratest/zipball/cf16fcbb9b8107a7df6b97e497fc91e819774d8b", + "reference": "cf16fcbb9b8107a7df6b97e497fc91e819774d8b", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-pcre": "*", + "ext-reflection": "*", + "ext-simplexml": "*", + "fidry/cpu-core-counter": "^1.2.0", + "jean85/pretty-package-versions": "^2.0.6", + "php": "~8.2.0 || ~8.3.0 || ~8.4.0", + "phpunit/php-code-coverage": "^10.1.16", + "phpunit/php-file-iterator": "^4.1.0", + "phpunit/php-timer": "^6.0.0", + "phpunit/phpunit": "^10.5.36", + "sebastian/environment": "^6.1.0", + "symfony/console": "^6.4.7 || ^7.1.5", + "symfony/process": "^6.4.7 || ^7.1.5" + }, + "require-dev": { + "doctrine/coding-standard": "^12.0.0", + "ext-pcov": "*", + "ext-posix": "*", + "phpstan/phpstan": "^1.12.6", + "phpstan/phpstan-deprecation-rules": "^1.2.1", + "phpstan/phpstan-phpunit": "^1.4.0", + "phpstan/phpstan-strict-rules": "^1.6.1", + "squizlabs/php_codesniffer": "^3.10.3", + "symfony/filesystem": "^6.4.3 || ^7.1.5" + }, + "bin": [ + "bin/paratest", + "bin/paratest_for_phpstorm" + ], + "type": "library", + "autoload": { + "psr-4": { + "ParaTest\\": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brian Scaturro", + "email": "scaturrob@gmail.com", + "role": "Developer" + }, + { + "name": "Filippo Tessarotto", + "email": "zoeslam@gmail.com", + "role": "Developer" + } + ], + "description": "Parallel testing for PHP", + "homepage": "https://github.com/paratestphp/paratest", + "keywords": [ + "concurrent", + "parallel", + "phpunit", + "testing" + ], + "support": { + "issues": "https://github.com/paratestphp/paratest/issues", + "source": "https://github.com/paratestphp/paratest/tree/v7.4.8" + }, + "funding": [ + { + "url": "https://github.com/sponsors/Slamdunk", + "type": "github" + }, + { + "url": "https://paypal.me/filippotessarotto", + "type": "paypal" + } + ], + "time": "2024-10-15T12:45:19+00:00" + }, { "name": "clue/ndjson-react", "version": "v1.3.0", @@ -6386,6 +7011,101 @@ ], "time": "2024-05-06T16:37:16+00:00" }, + { + "name": "doctrine/deprecations", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/doctrine/deprecations.git", + "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/31610dbb31faa98e6b5447b62340826f54fbc4e9", + "reference": "31610dbb31faa98e6b5447b62340826f54fbc4e9", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0" + }, + "require-dev": { + "doctrine/coding-standard": "^9 || ^12", + "phpstan/phpstan": "1.4.10 || 2.0.3", + "phpstan/phpstan-phpunit": "^1.0 || ^2", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psr/log": "^1 || ^2 || ^3" + }, + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/1.1.4" + }, + "time": "2024-12-07T21:18:45+00:00" + }, + { + "name": "erusev/parsedown", + "version": "1.7.4", + "source": { + "type": "git", + "url": "https://github.com/erusev/parsedown.git", + "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/erusev/parsedown/zipball/cb17b6477dfff935958ba01325f2e8a2bfa6dab3", + "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35" + }, + "type": "library", + "autoload": { + "psr-0": { + "Parsedown": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Emanuil Rusev", + "email": "hello@erusev.com", + "homepage": "http://erusev.com" + } + ], + "description": "Parser for Markdown.", + "homepage": "http://parsedown.org", + "keywords": [ + "markdown", + "parser" + ], + "support": { + "issues": "https://github.com/erusev/parsedown/issues", + "source": "https://github.com/erusev/parsedown/tree/1.7.x" + }, + "time": "2019-12-30T22:54:17+00:00" + }, { "name": "evenement/evenement", "version": "v3.0.2", @@ -6435,16 +7155,16 @@ }, { "name": "fakerphp/faker", - "version": "v1.23.1", + "version": "v1.24.1", "source": { "type": "git", "url": "https://github.com/FakerPHP/Faker.git", - "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b" + "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/bfb4fe148adbf78eff521199619b93a52ae3554b", - "reference": "bfb4fe148adbf78eff521199619b93a52ae3554b", + "url": "https://api.github.com/repos/FakerPHP/Faker/zipball/e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", + "reference": "e0ee18eb1e6dc3cda3ce9fd97e5a0689a88a64b5", "shasum": "" }, "require": { @@ -6492,9 +7212,9 @@ ], "support": { "issues": "https://github.com/FakerPHP/Faker/issues", - "source": "https://github.com/FakerPHP/Faker/tree/v1.23.1" + "source": "https://github.com/FakerPHP/Faker/tree/v1.24.1" }, - "time": "2024-01-02T13:46:09+00:00" + "time": "2024-11-21T13:46:39+00:00" }, { "name": "fidry/cpu-core-counter", @@ -6783,32 +7503,39 @@ "time": "2020-07-09T08:09:16+00:00" }, { - "name": "kubawerlos/php-cs-fixer-custom-fixers", - "version": "v3.22.0", + "name": "jean85/pretty-package-versions", + "version": "2.1.0", "source": { "type": "git", - "url": "https://github.com/kubawerlos/php-cs-fixer-custom-fixers.git", - "reference": "8701394f0c7cd450ac4fa577d24589122c1d5d5e" + "url": "https://github.com/Jean85/pretty-package-versions.git", + "reference": "3c4e5f62ba8d7de1734312e4fff32f67a8daaf10" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/kubawerlos/php-cs-fixer-custom-fixers/zipball/8701394f0c7cd450ac4fa577d24589122c1d5d5e", - "reference": "8701394f0c7cd450ac4fa577d24589122c1d5d5e", + "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/3c4e5f62ba8d7de1734312e4fff32f67a8daaf10", + "reference": "3c4e5f62ba8d7de1734312e4fff32f67a8daaf10", "shasum": "" }, "require": { - "ext-filter": "*", - "ext-tokenizer": "*", - "friendsofphp/php-cs-fixer": "^3.61.1", - "php": "^7.4 || ^8.0" + "composer-runtime-api": "^2.1.0", + "php": "^7.4|^8.0" }, "require-dev": { - "phpunit/phpunit": "^9.6.4 || ^10.5.29" + "friendsofphp/php-cs-fixer": "^3.2", + "jean85/composer-provided-replaced-stub-package": "^1.0", + "phpstan/phpstan": "^1.4", + "phpunit/phpunit": "^7.5|^8.5|^9.6", + "vimeo/psalm": "^4.3 || ^5.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, "autoload": { "psr-4": { - "PhpCsFixerCustomFixers\\": "src" + "Jean85\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6817,56 +7544,87 @@ ], "authors": [ { - "name": "Kuba Werłos", - "email": "werlos@gmail.com" + "name": "Alessandro Lai", + "email": "alessandro.lai85@gmail.com" } ], - "description": "A set of custom fixers for PHP CS Fixer", + "description": "A library to get pretty versions strings of installed dependencies", + "keywords": [ + "composer", + "package", + "release", + "versions" + ], "support": { - "issues": "https://github.com/kubawerlos/php-cs-fixer-custom-fixers/issues", - "source": "https://github.com/kubawerlos/php-cs-fixer-custom-fixers/tree/v3.22.0" + "issues": "https://github.com/Jean85/pretty-package-versions/issues", + "source": "https://github.com/Jean85/pretty-package-versions/tree/2.1.0" }, - "time": "2024-08-16T20:44:35+00:00" + "time": "2024-11-18T16:19:46+00:00" }, { - "name": "laravel/pint", - "version": "v1.18.1", + "name": "knuckleswtf/scribe", + "version": "4.39.0", "source": { "type": "git", - "url": "https://github.com/laravel/pint.git", - "reference": "35c00c05ec43e6b46d295efc0f4386ceb30d50d9" + "url": "https://github.com/knuckleswtf/scribe.git", + "reference": "cb4c2e552fdae4fd2306e12bba60d5de38a9e4ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/pint/zipball/35c00c05ec43e6b46d295efc0f4386ceb30d50d9", - "reference": "35c00c05ec43e6b46d295efc0f4386ceb30d50d9", + "url": "https://api.github.com/repos/knuckleswtf/scribe/zipball/cb4c2e552fdae4fd2306e12bba60d5de38a9e4ad", + "reference": "cb4c2e552fdae4fd2306e12bba60d5de38a9e4ad", "shasum": "" }, "require": { + "erusev/parsedown": "1.7.4", + "ext-fileinfo": "*", "ext-json": "*", - "ext-mbstring": "*", - "ext-tokenizer": "*", - "ext-xml": "*", - "php": "^8.1.0" + "ext-pdo": "*", + "fakerphp/faker": "^1.9.1", + "illuminate/console": "^8.0|^9.0|^10.0|^11.0", + "illuminate/routing": "^8.0|^9.0|^10.0|^11.0", + "illuminate/support": "^8.0|^9.0|^10.0|^11.0", + "league/flysystem": "^1.1.4|^2.1.1|^3.0", + "mpociot/reflection-docblock": "^1.0.1", + "nikic/php-parser": "^5.0", + "nunomaduro/collision": "^5.10|^6.0|^7.0|^8.0", + "php": ">=8.0", + "ramsey/uuid": "^4.2.2", + "shalvah/clara": "^3.1.0", + "shalvah/upgrader": ">=0.6.0", + "spatie/data-transfer-object": "^2.6|^3.0", + "symfony/var-exporter": "^5.4|^6.0|^7.0", + "symfony/yaml": "^5.4|^6.0|^7.0" + }, + "replace": { + "mpociot/laravel-apidoc-generator": "*" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^3.64.0", - "illuminate/view": "^10.48.20", - "larastan/larastan": "^2.9.8", - "laravel-zero/framework": "^10.4.0", - "mockery/mockery": "^1.6.12", - "nunomaduro/termwind": "^1.15.1", - "pestphp/pest": "^2.35.1" + "brianium/paratest": "^6.0", + "dms/phpunit-arraysubset-asserts": "^0.4", + "laravel/legacy-factories": "^1.3.0", + "laravel/lumen-framework": "^8.0|^9.0|^10.0", + "league/fractal": "^0.20", + "nikic/fast-route": "^1.3", + "orchestra/testbench": "^6.0|^7.0|^8.0", + "pestphp/pest": "^1.21", + "phpstan/phpstan": "^1.0", + "phpunit/phpunit": "^9.0|^10.0", + "symfony/css-selector": "^5.4|^6.0", + "symfony/dom-crawler": "^5.4|^6.0" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Knuckles\\Scribe\\ScribeServiceProvider" + ] + } }, - "bin": [ - "builds/pint" - ], - "type": "project", "autoload": { "psr-4": { - "App\\": "app/", - "Database\\Seeders\\": "database/seeders/", - "Database\\Factories\\": "database/factories/" + "Knuckles\\Camel\\": "camel/", + "Knuckles\\Scribe\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -6875,24 +7633,140 @@ ], "authors": [ { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" + "name": "Shalvah" } ], - "description": "An opinionated code formatter for PHP.", - "homepage": "https://laravel.com", + "description": "Generate API documentation for humans from your Laravel codebase.✍", + "homepage": "http://github.com/knuckleswtf/scribe", "keywords": [ - "format", - "formatter", - "lint", - "linter", - "php" + "api", + "dingo", + "documentation", + "laravel" ], "support": { - "issues": "https://github.com/laravel/pint/issues", - "source": "https://github.com/laravel/pint" + "issues": "https://github.com/knuckleswtf/scribe/issues", + "source": "https://github.com/knuckleswtf/scribe/tree/4.39.0" }, - "time": "2024-09-24T17:22:50+00:00" + "funding": [ + { + "url": "https://patreon.com/shalvah", + "type": "patreon" + } + ], + "time": "2024-12-31T14:13:50+00:00" + }, + { + "name": "kubawerlos/php-cs-fixer-custom-fixers", + "version": "v3.22.0", + "source": { + "type": "git", + "url": "https://github.com/kubawerlos/php-cs-fixer-custom-fixers.git", + "reference": "8701394f0c7cd450ac4fa577d24589122c1d5d5e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/kubawerlos/php-cs-fixer-custom-fixers/zipball/8701394f0c7cd450ac4fa577d24589122c1d5d5e", + "reference": "8701394f0c7cd450ac4fa577d24589122c1d5d5e", + "shasum": "" + }, + "require": { + "ext-filter": "*", + "ext-tokenizer": "*", + "friendsofphp/php-cs-fixer": "^3.61.1", + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.6.4 || ^10.5.29" + }, + "type": "library", + "autoload": { + "psr-4": { + "PhpCsFixerCustomFixers\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Kuba Werłos", + "email": "werlos@gmail.com" + } + ], + "description": "A set of custom fixers for PHP CS Fixer", + "support": { + "issues": "https://github.com/kubawerlos/php-cs-fixer-custom-fixers/issues", + "source": "https://github.com/kubawerlos/php-cs-fixer-custom-fixers/tree/v3.22.0" + }, + "time": "2024-08-16T20:44:35+00:00" + }, + { + "name": "laravel/pint", + "version": "v1.18.1", + "source": { + "type": "git", + "url": "https://github.com/laravel/pint.git", + "reference": "35c00c05ec43e6b46d295efc0f4386ceb30d50d9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/pint/zipball/35c00c05ec43e6b46d295efc0f4386ceb30d50d9", + "reference": "35c00c05ec43e6b46d295efc0f4386ceb30d50d9", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "ext-tokenizer": "*", + "ext-xml": "*", + "php": "^8.1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.64.0", + "illuminate/view": "^10.48.20", + "larastan/larastan": "^2.9.8", + "laravel-zero/framework": "^10.4.0", + "mockery/mockery": "^1.6.12", + "nunomaduro/termwind": "^1.15.1", + "pestphp/pest": "^2.35.1" + }, + "bin": [ + "builds/pint" + ], + "type": "project", + "autoload": { + "psr-4": { + "App\\": "app/", + "Database\\Seeders\\": "database/seeders/", + "Database\\Factories\\": "database/factories/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "An opinionated code formatter for PHP.", + "homepage": "https://laravel.com", + "keywords": [ + "format", + "formatter", + "lint", + "linter", + "php" + ], + "support": { + "issues": "https://github.com/laravel/pint/issues", + "source": "https://github.com/laravel/pint" + }, + "time": "2024-09-24T17:22:50+00:00" }, { "name": "laravel/sail", @@ -7040,18 +7914,71 @@ }, "time": "2024-05-16T03:13:13+00:00" }, + { + "name": "mpociot/reflection-docblock", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/mpociot/reflection-docblock.git", + "reference": "c8b2e2b1f5cebbb06e2b5ccbf2958f2198867587" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mpociot/reflection-docblock/zipball/c8b2e2b1f5cebbb06e2b5ccbf2958f2198867587", + "reference": "c8b2e2b1f5cebbb06e2b5ccbf2958f2198867587", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "suggest": { + "dflydev/markdown": "~1.0", + "erusev/parsedown": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-0": { + "Mpociot": [ + "src/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "mike.vanriel@naenius.com" + } + ], + "support": { + "issues": "https://github.com/mpociot/reflection-docblock/issues", + "source": "https://github.com/mpociot/reflection-docblock/tree/master" + }, + "time": "2016-06-20T20:53:12+00:00" + }, { "name": "myclabs/deep-copy", - "version": "1.12.0", + "version": "1.12.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c" + "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", - "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/123267b2c49fbf30d78a7b2d333f6be754b94845", + "reference": "123267b2c49fbf30d78a7b2d333f6be754b94845", "shasum": "" }, "require": { @@ -7090,7 +8017,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0" + "source": "https://github.com/myclabs/DeepCopy/tree/1.12.1" }, "funding": [ { @@ -7098,7 +8025,7 @@ "type": "tidelift" } ], - "time": "2024-06-12T14:39:25+00:00" + "time": "2024-11-08T17:47:46+00:00" }, { "name": "nunomaduro/collision", @@ -7196,6 +8123,256 @@ ], "time": "2024-10-15T15:12:40+00:00" }, + { + "name": "pestphp/pest", + "version": "v2.36.0", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest.git", + "reference": "f8c88bd14dc1772bfaf02169afb601ecdf2724cd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest/zipball/f8c88bd14dc1772bfaf02169afb601ecdf2724cd", + "reference": "f8c88bd14dc1772bfaf02169afb601ecdf2724cd", + "shasum": "" + }, + "require": { + "brianium/paratest": "^7.3.1", + "nunomaduro/collision": "^7.11.0|^8.4.0", + "nunomaduro/termwind": "^1.16.0|^2.1.0", + "pestphp/pest-plugin": "^2.1.1", + "pestphp/pest-plugin-arch": "^2.7.0", + "php": "^8.1.0", + "phpunit/phpunit": "^10.5.36" + }, + "conflict": { + "filp/whoops": "<2.16.0", + "phpunit/phpunit": ">10.5.36", + "sebastian/exporter": "<5.1.0", + "webmozart/assert": "<1.11.0" + }, + "require-dev": { + "pestphp/pest-dev-tools": "^2.17.0", + "pestphp/pest-plugin-type-coverage": "^2.8.7", + "symfony/process": "^6.4.0|^7.1.5" + }, + "bin": [ + "bin/pest" + ], + "type": "library", + "extra": { + "pest": { + "plugins": [ + "Pest\\Plugins\\Bail", + "Pest\\Plugins\\Cache", + "Pest\\Plugins\\Coverage", + "Pest\\Plugins\\Init", + "Pest\\Plugins\\Environment", + "Pest\\Plugins\\Help", + "Pest\\Plugins\\Memory", + "Pest\\Plugins\\Only", + "Pest\\Plugins\\Printer", + "Pest\\Plugins\\ProcessIsolation", + "Pest\\Plugins\\Profile", + "Pest\\Plugins\\Retry", + "Pest\\Plugins\\Snapshot", + "Pest\\Plugins\\Verbose", + "Pest\\Plugins\\Version", + "Pest\\Plugins\\Parallel" + ] + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "files": [ + "src/Functions.php", + "src/Pest.php" + ], + "psr-4": { + "Pest\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "The elegant PHP Testing Framework.", + "keywords": [ + "framework", + "pest", + "php", + "test", + "testing", + "unit" + ], + "support": { + "issues": "https://github.com/pestphp/pest/issues", + "source": "https://github.com/pestphp/pest/tree/v2.36.0" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2024-10-15T15:30:56+00:00" + }, + { + "name": "pestphp/pest-plugin", + "version": "v2.1.1", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin.git", + "reference": "e05d2859e08c2567ee38ce8b005d044e72648c0b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin/zipball/e05d2859e08c2567ee38ce8b005d044e72648c0b", + "reference": "e05d2859e08c2567ee38ce8b005d044e72648c0b", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^2.0.0", + "composer-runtime-api": "^2.2.2", + "php": "^8.1" + }, + "conflict": { + "pestphp/pest": "<2.2.3" + }, + "require-dev": { + "composer/composer": "^2.5.8", + "pestphp/pest": "^2.16.0", + "pestphp/pest-dev-tools": "^2.16.0" + }, + "type": "composer-plugin", + "extra": { + "class": "Pest\\Plugin\\Manager" + }, + "autoload": { + "psr-4": { + "Pest\\Plugin\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Pest plugin manager", + "keywords": [ + "framework", + "manager", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" + ], + "support": { + "source": "https://github.com/pestphp/pest-plugin/tree/v2.1.1" + }, + "funding": [ + { + "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2023-08-22T08:40:06+00:00" + }, + { + "name": "pestphp/pest-plugin-arch", + "version": "v2.7.0", + "source": { + "type": "git", + "url": "https://github.com/pestphp/pest-plugin-arch.git", + "reference": "d23b2d7498475354522c3818c42ef355dca3fcda" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/pestphp/pest-plugin-arch/zipball/d23b2d7498475354522c3818c42ef355dca3fcda", + "reference": "d23b2d7498475354522c3818c42ef355dca3fcda", + "shasum": "" + }, + "require": { + "nunomaduro/collision": "^7.10.0|^8.1.0", + "pestphp/pest-plugin": "^2.1.1", + "php": "^8.1", + "ta-tikoma/phpunit-architecture-test": "^0.8.4" + }, + "require-dev": { + "pestphp/pest": "^2.33.0", + "pestphp/pest-dev-tools": "^2.16.0" + }, + "type": "library", + "extra": { + "pest": { + "plugins": [ + "Pest\\Arch\\Plugin" + ] + } + }, + "autoload": { + "files": [ + "src/Autoload.php" + ], + "psr-4": { + "Pest\\Arch\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "The Arch plugin for Pest PHP.", + "keywords": [ + "arch", + "architecture", + "framework", + "pest", + "php", + "plugin", + "test", + "testing", + "unit" + ], + "support": { + "source": "https://github.com/pestphp/pest-plugin-arch/tree/v2.7.0" + }, + "funding": [ + { + "url": "https://www.paypal.com/paypalme/enunomaduro", + "type": "custom" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + } + ], + "time": "2024-01-26T09:46:42+00:00" + }, { "name": "phar-io/manifest", "version": "2.0.4", @@ -7221,98 +8398,320 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" + }, + { + "name": "phar-io/version", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" + }, + { + "name": "phpdocumentor/reflection-common", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-2.x": "2.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", + "keywords": [ + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", + "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" + }, + "time": "2020-06-27T09:03:43+00:00" + }, + { + "name": "phpdocumentor/reflection-docblock", + "version": "5.6.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8", + "reference": "e5e784149a09bd69d9a5e3b01c5cbd2e2bd653d8", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^1.1", + "ext-filter": "*", + "php": "^7.4 || ^8.0", + "phpdocumentor/reflection-common": "^2.2", + "phpdocumentor/type-resolver": "^1.7", + "phpstan/phpdoc-parser": "^1.7|^2.0", + "webmozart/assert": "^1.9.1" + }, + "require-dev": { + "mockery/mockery": "~1.3.5 || ~1.6.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-mockery": "^1.1", + "phpstan/phpstan-webmozart-assert": "^1.2", + "phpunit/phpunit": "^9.5", + "psalm/phar": "^5.26" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, + "autoload": { + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mike van Riel", + "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" + } + ], + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "support": { + "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.6.1" + }, + "time": "2024-12-07T09:39:29+00:00" + }, + { + "name": "phpdocumentor/type-resolver", + "version": "1.10.0", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/679e3ce485b99e84c775d28e2e96fade9a7fb50a", + "reference": "679e3ce485b99e84c775d28e2e96fade9a7fb50a", + "shasum": "" + }, + "require": { + "doctrine/deprecations": "^1.0", + "php": "^7.3 || ^8.0", + "phpdocumentor/reflection-common": "^2.0", + "phpstan/phpdoc-parser": "^1.18|^2.0" + }, + "require-dev": { + "ext-tokenizer": "*", + "phpbench/phpbench": "^1.2", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpunit/phpunit": "^9.5", + "rector/rector": "^0.13.9", + "vimeo/psalm": "^4.25" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-1.x": "1.x-dev" } }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "phpDocumentor\\Reflection\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" + "name": "Mike van Riel", + "email": "me@mikevanriel.com" } ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", "support": { - "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.4" + "issues": "https://github.com/phpDocumentor/TypeResolver/issues", + "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.10.0" }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2024-03-03T12:33:53+00:00" + "time": "2024-11-09T15:12:26+00:00" }, { - "name": "phar-io/version", - "version": "3.2.1", + "name": "phpstan/phpdoc-parser", + "version": "2.0.0", "source": { "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" + "url": "https://github.com/phpstan/phpdoc-parser.git", + "reference": "c00d78fb6b29658347f9d37ebe104bffadf36299" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/c00d78fb6b29658347f9d37ebe104bffadf36299", + "reference": "c00d78fb6b29658347f9d37ebe104bffadf36299", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": "^7.4 || ^8.0" + }, + "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^5.3.0", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^9.6", + "symfony/process": "^5.2" }, "type": "library", "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "PHPStan\\PhpDocParser\\": [ + "src/" + ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } + "MIT" ], - "description": "Library for handling version information and constraints", + "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.2.1" + "issues": "https://github.com/phpstan/phpdoc-parser/issues", + "source": "https://github.com/phpstan/phpdoc-parser/tree/2.0.0" }, - "time": "2022-02-21T01:04:05+00:00" + "time": "2024-10-13T11:29:49+00:00" }, { "name": "phpunit/php-code-coverage", @@ -7637,16 +9036,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.5.37", + "version": "10.5.36", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "c7cffa0efa2b70c22366523e6d804c9419eb2400" + "reference": "aa0a8ce701ea7ee314b0dfaa8970dc94f3f8c870" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c7cffa0efa2b70c22366523e6d804c9419eb2400", - "reference": "c7cffa0efa2b70c22366523e6d804c9419eb2400", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/aa0a8ce701ea7ee314b0dfaa8970dc94f3f8c870", + "reference": "aa0a8ce701ea7ee314b0dfaa8970dc94f3f8c870", "shasum": "" }, "require": { @@ -7667,7 +9066,7 @@ "phpunit/php-timer": "^6.0.0", "sebastian/cli-parser": "^2.0.1", "sebastian/code-unit": "^2.0.0", - "sebastian/comparator": "^5.0.3", + "sebastian/comparator": "^5.0.2", "sebastian/diff": "^5.1.1", "sebastian/environment": "^6.1.0", "sebastian/exporter": "^5.1.2", @@ -7718,7 +9117,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.37" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.36" }, "funding": [ { @@ -7734,7 +9133,7 @@ "type": "tidelift" } ], - "time": "2024-10-19T13:03:41+00:00" + "time": "2024-10-08T15:36:51+00:00" }, { "name": "react/cache", @@ -9182,6 +10581,111 @@ ], "time": "2023-02-07T11:34:05+00:00" }, + { + "name": "shalvah/clara", + "version": "3.2.0", + "source": { + "type": "git", + "url": "https://github.com/shalvah/clara.git", + "reference": "cdbb5737cbdd101756d97dd2279a979a1af7710b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/shalvah/clara/zipball/cdbb5737cbdd101756d97dd2279a979a1af7710b", + "reference": "cdbb5737cbdd101756d97dd2279a979a1af7710b", + "shasum": "" + }, + "require": { + "php": ">=7.4", + "symfony/console": "^4.0|^5.0|^6.0|^7.0" + }, + "require-dev": { + "eloquent/phony-phpunit": "^7.0", + "phpunit/phpunit": "^9.1" + }, + "type": "library", + "autoload": { + "files": [ + "helpers.php" + ], + "psr-4": { + "Shalvah\\Clara\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "🔊 Simple, pretty, testable console output for CLI apps.", + "keywords": [ + "cli", + "log", + "logging" + ], + "support": { + "issues": "https://github.com/shalvah/clara/issues", + "source": "https://github.com/shalvah/clara/tree/3.2.0" + }, + "time": "2024-02-27T20:30:59+00:00" + }, + { + "name": "shalvah/upgrader", + "version": "0.6.0", + "source": { + "type": "git", + "url": "https://github.com/shalvah/upgrader.git", + "reference": "d95ed17fe9f5e1ee7d47ad835595f1af080a867f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/shalvah/upgrader/zipball/d95ed17fe9f5e1ee7d47ad835595f1af080a867f", + "reference": "d95ed17fe9f5e1ee7d47ad835595f1af080a867f", + "shasum": "" + }, + "require": { + "illuminate/support": ">=8.0", + "nikic/php-parser": "^5.0", + "php": ">=8.0" + }, + "require-dev": { + "dms/phpunit-arraysubset-asserts": "^0.2.0", + "pestphp/pest": "^1.21", + "phpstan/phpstan": "^1.0", + "spatie/ray": "^1.33" + }, + "type": "library", + "autoload": { + "psr-4": { + "Shalvah\\Upgrader\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Shalvah", + "email": "hello@shalvah.me" + } + ], + "description": "Create automatic upgrades for your package.", + "homepage": "http://github.com/shalvah/upgrader", + "keywords": [ + "upgrade" + ], + "support": { + "issues": "https://github.com/shalvah/upgrader/issues", + "source": "https://github.com/shalvah/upgrader/tree/0.6.0" + }, + "funding": [ + { + "url": "https://patreon.com/shalvah", + "type": "patreon" + } + ], + "time": "2024-02-20T11:51:46+00:00" + }, { "name": "spatie/backtrace", "version": "1.6.2", @@ -9245,6 +10749,70 @@ ], "time": "2024-07-22T08:21:24+00:00" }, + { + "name": "spatie/data-transfer-object", + "version": "3.9.1", + "source": { + "type": "git", + "url": "https://github.com/spatie/data-transfer-object.git", + "reference": "1df0906c4e9e3aebd6c0506fd82c8b7d5548c1c8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/spatie/data-transfer-object/zipball/1df0906c4e9e3aebd6c0506fd82c8b7d5548c1c8", + "reference": "1df0906c4e9e3aebd6c0506fd82c8b7d5548c1c8", + "shasum": "" + }, + "require": { + "php": "^8.0" + }, + "require-dev": { + "illuminate/collections": "^8.36", + "jetbrains/phpstorm-attributes": "^1.0", + "larapack/dd": "^1.1", + "phpunit/phpunit": "^9.5.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Spatie\\DataTransferObject\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Brent Roose", + "email": "brent@spatie.be", + "homepage": "https://spatie.be", + "role": "Developer" + } + ], + "description": "Data transfer objects with batteries included", + "homepage": "https://github.com/spatie/data-transfer-object", + "keywords": [ + "data-transfer-object", + "spatie" + ], + "support": { + "issues": "https://github.com/spatie/data-transfer-object/issues", + "source": "https://github.com/spatie/data-transfer-object/tree/3.9.1" + }, + "funding": [ + { + "url": "https://spatie.be/open-source/support-us", + "type": "custom" + }, + { + "url": "https://github.com/spatie", + "type": "github" + } + ], + "abandoned": "spatie/laravel-data", + "time": "2022-09-16T13:34:38+00:00" + }, { "name": "spatie/error-solutions", "version": "1.1.1", @@ -9715,8 +11283,8 @@ "type": "library", "extra": { "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" } }, "autoload": { @@ -9834,36 +11402,31 @@ "time": "2024-09-25T14:20:29+00:00" }, { - "name": "symfony/yaml", - "version": "v7.1.6", + "name": "symfony/var-exporter", + "version": "v7.2.0", "source": { "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "3ced3f29e4f0d6bce2170ff26719f1fe9aacc671" + "url": "https://github.com/symfony/var-exporter.git", + "reference": "1a6a89f95a46af0f142874c9d650a6358d13070d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/3ced3f29e4f0d6bce2170ff26719f1fe9aacc671", - "reference": "3ced3f29e4f0d6bce2170ff26719f1fe9aacc671", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/1a6a89f95a46af0f142874c9d650a6358d13070d", + "reference": "1a6a89f95a46af0f142874c9d650a6358d13070d", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/console": "<6.4" + "php": ">=8.2" }, "require-dev": { - "symfony/console": "^6.4|^7.0" + "symfony/property-access": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0", + "symfony/var-dumper": "^6.4|^7.0" }, - "bin": [ - "Resources/bin/yaml-lint" - ], "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Yaml\\": "" + "Symfony\\Component\\VarExporter\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -9875,18 +11438,28 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Loads and dumps YAML files", + "description": "Allows exporting any serializable PHP data structure to plain PHP code", "homepage": "https://symfony.com", + "keywords": [ + "clone", + "construct", + "export", + "hydrate", + "instantiate", + "lazy-loading", + "proxy", + "serialize" + ], "support": { - "source": "https://github.com/symfony/yaml/tree/v7.1.6" + "source": "https://github.com/symfony/var-exporter/tree/v7.2.0" }, "funding": [ { @@ -9902,7 +11475,66 @@ "type": "tidelift" } ], - "time": "2024-09-25T14:20:29+00:00" + "time": "2024-10-18T07:58:17+00:00" + }, + { + "name": "ta-tikoma/phpunit-architecture-test", + "version": "0.8.4", + "source": { + "type": "git", + "url": "https://github.com/ta-tikoma/phpunit-architecture-test.git", + "reference": "89f0dea1cb0f0d5744d3ec1764a286af5e006636" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ta-tikoma/phpunit-architecture-test/zipball/89f0dea1cb0f0d5744d3ec1764a286af5e006636", + "reference": "89f0dea1cb0f0d5744d3ec1764a286af5e006636", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18.0 || ^5.0.0", + "php": "^8.1.0", + "phpdocumentor/reflection-docblock": "^5.3.0", + "phpunit/phpunit": "^10.5.5 || ^11.0.0", + "symfony/finder": "^6.4.0 || ^7.0.0" + }, + "require-dev": { + "laravel/pint": "^1.13.7", + "phpstan/phpstan": "^1.10.52" + }, + "type": "library", + "autoload": { + "psr-4": { + "PHPUnit\\Architecture\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ni Shi", + "email": "futik0ma011@gmail.com" + }, + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Methods for testing application architecture", + "keywords": [ + "architecture", + "phpunit", + "stucture", + "test", + "testing" + ], + "support": { + "issues": "https://github.com/ta-tikoma/phpunit-architecture-test/issues", + "source": "https://github.com/ta-tikoma/phpunit-architecture-test/tree/0.8.4" + }, + "time": "2024-01-05T14:10:56+00:00" }, { "name": "theseer/tokenizer", @@ -9957,12 +11589,12 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": {}, + "stability-flags": [], "prefer-stable": true, "prefer-lowest": false, "platform": { "php": "^8.1" }, - "platform-dev": {}, + "platform-dev": [], "plugin-api-version": "2.6.0" } diff --git a/Backend/config/cors.php b/Backend/config/cors.php index 603775e..239da4b 100644 --- a/Backend/config/cors.php +++ b/Backend/config/cors.php @@ -20,7 +20,7 @@ "allowed_methods" => ["*"], - "allowed_origins" => ["*"], + "allowed_origins" => ["http://localhost:3000", "*"], "allowed_origins_patterns" => [], diff --git a/Backend/config/database.php b/Backend/config/database.php index f99d036..65f8590 100644 --- a/Backend/config/database.php +++ b/Backend/config/database.php @@ -48,7 +48,7 @@ "url" => env("DATABASE_URL"), "host" => env("DB_HOST", "localhost"), "port" => env("DB_PORT", "3307"), - "database" => env("DB_DATABASE", "kibolAppDB"), + "database" => env("DB_DATABASE", "KebabDB"), "username" => env("DB_USERNAME", "root"), "password" => env("DB_PASSWORD", "root"), "unix_socket" => env("DB_SOCKET", ""), diff --git a/Backend/config/scribe.php b/Backend/config/scribe.php new file mode 100644 index 0000000..ecce95b --- /dev/null +++ b/Backend/config/scribe.php @@ -0,0 +1,265 @@ + for the generated documentation. If this is empty, Scribe will infer it from config('app.name'). + "title" => "Kebab Api", + + // A short description of your API. Will be included in the docs webpage, Postman collection and OpenAPI spec. + "description" => "", + + // The base URL displayed in the docs. If this is empty, Scribe will use the value of config('app.url') at generation time. + // If you're using `laravel` type, you can set this to a dynamic string, like '{{ config("app.tenant_url") }}' to get a dynamic base URL. + "base_url" => "https://sponge-climbing-adder.ngrok-free.app/api/documentation", + + "routes" => [ + [ + // Routes that match these conditions will be included in the docs + "match" => [ + // Match only routes whose paths match this pattern (use * as a wildcard to match any characters). Example: 'users/*'. + "prefixes" => ["api/*"], + + // Match only routes whose domains match this pattern (use * as a wildcard to match any characters). Example: 'api.*'. + "domains" => ["*"], + + // [Dingo router only] Match only routes registered under this version. Wildcards are NOT supported. + "versions" => ["v1"], + ], + + // Include these routes even if they did not match the rules above. + "include" => [], + + // Exclude these routes even if they matched the rules above. + "exclude" => [], + ], + ], + + // The type of documentation output to generate. + // - "static" will generate a static HTMl page in the /public/docs folder, + // - "laravel" will generate the documentation as a Blade view, so you can add routing and authentication. + // - "external_static" and "external_laravel" do the same as above, but generate a basic template, + // passing the OpenAPI spec as a URL, allowing you to easily use the docs with an external generator + "type" => "static", + + // See https://scribe.knuckles.wtf/laravel/reference/config#theme for supported options + "theme" => "default", + + "static" => [ + // HTML documentation, assets and Postman collection will be generated to this folder. + // Source Markdown will still be in resources/docs. + "output_path" => "public/docs", + ], + + "laravel" => [ + // Whether to automatically create a docs endpoint for you to view your generated docs. + // If this is false, you can still set up routing manually. + "add_routes" => false, + + // URL path to use for the docs endpoint (if `add_routes` is true). + // By default, `/docs` opens the HTML page, `/docs.postman` opens the Postman collection, and `/docs.openapi` the OpenAPI spec. + "docs_url" => "/documentation", + + // Directory within `public` in which to store CSS and JS assets. + // By default, assets are stored in `public/vendor/scribe`. + // If set, assets will be stored in `public/{{assets_directory}}` + "assets_directory" => null, + + // Middleware to attach to the docs endpoint (if `add_routes` is true). + "middleware" => [], + ], + + "external" => [ + "html_attributes" => [], + ], + + "try_it_out" => [ + // Add a Try It Out button to your endpoints so consumers can test endpoints right from their browser. + // Don't forget to enable CORS headers for your endpoints. + "enabled" => true, + + // The base URL for the API tester to use (for example, you can set this to your staging URL). + // Leave as null to use the current app URL when generating (config("app.url")). + "base_url" => "https://legible-freely-wren.ngrok-free.app/", + + // [Laravel Sanctum] Fetch a CSRF token before each request, and add it as an X-XSRF-TOKEN header. + "use_csrf" => false, + + // The URL to fetch the CSRF token from (if `use_csrf` is true). + "csrf_url" => "/sanctum/csrf-cookie", + ], + + // How is your API authenticated? This information will be used in the displayed docs, generated examples and response calls. + "auth" => [ + // Set this to true if ANY endpoints in your API use authentication. + "enabled" => true, + + // Set this to true if your API should be authenticated by default. If so, you must also set `enabled` (above) to true. + // You can then use @unauthenticated or @authenticated on individual endpoints to change their status from the default. + "default" => false, + + // Where is the auth value meant to be sent in a request? + // Options: query, body, basic, bearer, header (for custom header) + "in" => "bearer", + + // The name of the auth parameter (e.g. token, key, apiKey) or header (e.g. Authorization, Api-Key). + "name" => "Authorization", + + // The value of the parameter to be used by Scribe to authenticate response calls. + // This will NOT be included in the generated documentation. If empty, Scribe will use a random value. + "use_value" => env("SCRIBE_AUTH_KEY"), + + // Placeholder your users will see for the auth parameter in the example requests. + // Set this to null if you want Scribe to use a random value as placeholder instead. + "placeholder" => "{YOUR_AUTH_KEY}", + + // Any extra authentication-related info for your users. Markdown and HTML are supported. + "extra_info" => "You can retrieve your token by visiting your dashboard and clicking Generate API token.", + ], + + // Text to place in the "Introduction" section, right after the `description`. Markdown and HTML are supported. + "intro_text" => <<As you scroll, you'll see code examples for working with the API in different programming languages in the dark area to the right (or as part of the content on mobile). +You can switch the language used with the tabs at the top right (or from the nav menu at the top left on mobile). +INTRO + , + + // Example requests for each endpoint will be shown in each of these languages. + // Supported options are: bash, javascript, php, python + // To add a language of your own, see https://scribe.knuckles.wtf/laravel/advanced/example-requests + "example_languages" => [ + "bash", + "javascript", + "php", + ], + + // Generate a Postman collection (v2.1.0) in addition to HTML docs. + // For 'static' docs, the collection will be generated to public/docs/collection.json. + // For 'laravel' docs, it will be generated to storage/app/scribe/collection.json. + // Setting `laravel.add_routes` to true (above) will also add a route for the collection. + "postman" => [ + "enabled" => true, + + "overrides" => [], + ], + + // Generate an OpenAPI spec (v3.0.1) in addition to docs webpage. + // For 'static' docs, the collection will be generated to public/docs/openapi.yaml. + // For 'laravel' docs, it will be generated to storage/app/scribe/openapi.yaml. + // Setting `laravel.add_routes` to true (above) will also add a route for the spec. + "openapi" => [ + "enabled" => true, + + "overrides" => [], + ], + + "groups" => [ + // Endpoints which don't have a @group will be placed in this default group. + "default" => "Endpoints", + + // By default, Scribe will sort groups alphabetically, and endpoints in the order their routes are defined. + // You can override this by listing the groups, subgroups and endpoints here in the order you want them. + // See https://scribe.knuckles.wtf/blog/laravel-v4#easier-sorting and https://scribe.knuckles.wtf/laravel/reference/config#order for details + "order" => [], + ], + + // Custom logo path. This will be used as the value of the src attribute for the tag, + // so make sure it points to an accessible URL or path. Set to false to not use a logo. + // For example, if your logo is in public/img: + // - 'logo' => '../img/logo.png' // for `static` type (output folder is public/docs) + // - 'logo' => 'img/logo.png' // for `laravel` type + "logo" => false, + + // Customize the "Last updated" value displayed in the docs by specifying tokens and formats. + // - {date:F j Y} => March 28, 2022 + // - {git:short} => Short hash of the last Git commit + // Available tokens are `{date:}` and `{git:}`. + // The format you pass to `date` will be passed to PHP's `date()` function. + // The format you pass to `git` can be either "short" or "long". + "last_updated" => "Last updated: {date:F j, Y}", + + "examples" => [ + // Set this to any number (e.g. 1234) to generate the same example values for parameters on each run, + "faker_seed" => null, + + // With API resources and transformers, Scribe tries to generate example models to use in your API responses. + // By default, Scribe will try the model's factory, and if that fails, try fetching the first from the database. + // You can reorder or remove strategies here. + "models_source" => ["factoryCreate", "factoryMake", "databaseFirst"], + ], + + // The strategies Scribe will use to extract information about your routes at each stage. + // If you create or install a custom strategy, add it here. + "strategies" => [ + "metadata" => [ + Strategies\Metadata\GetFromDocBlocks::class, + Strategies\Metadata\GetFromMetadataAttributes::class, + ], + "urlParameters" => [ + Strategies\UrlParameters\GetFromLaravelAPI::class, + Strategies\UrlParameters\GetFromUrlParamAttribute::class, + Strategies\UrlParameters\GetFromUrlParamTag::class, + ], + "queryParameters" => [ + Strategies\QueryParameters\GetFromFormRequest::class, + Strategies\QueryParameters\GetFromInlineValidator::class, + Strategies\QueryParameters\GetFromQueryParamAttribute::class, + Strategies\QueryParameters\GetFromQueryParamTag::class, + ], + "headers" => [ + Strategies\Headers\GetFromHeaderAttribute::class, + Strategies\Headers\GetFromHeaderTag::class, + [ + "override", + [ + "Content-Type" => "application/json", + "Accept" => "application/json", + ], + ], + ], + "bodyParameters" => [ + Strategies\BodyParameters\GetFromFormRequest::class, + Strategies\BodyParameters\GetFromInlineValidator::class, + Strategies\BodyParameters\GetFromBodyParamAttribute::class, + Strategies\BodyParameters\GetFromBodyParamTag::class, + ], + "responses" => [ + Strategies\Responses\UseResponseAttributes::class, + Strategies\Responses\UseTransformerTags::class, + Strategies\Responses\UseApiResourceTags::class, + Strategies\Responses\UseResponseTag::class, + Strategies\Responses\UseResponseFileTag::class, + [ + Strategies\Responses\ResponseCalls::class, + [ + "only" => ["GET *"], + // Disable debug mode when generating response calls to avoid error stack traces in responses + "config" => [ + "app.debug" => false, + ], + ], + ], + ], + "responseFields" => [ + Strategies\ResponseFields\GetFromResponseFieldAttribute::class, + Strategies\ResponseFields\GetFromResponseFieldTag::class, + ], + ], + + // For response calls, API resource responses and transformer responses, + // Scribe will try to start database transactions, so no changes are persisted to your database. + // Tell Scribe which connections should be transacted here. If you only use one db connection, you can leave this as is. + "database_connections_to_transact" => [config("database.default")], + + "fractal" => [ + // If you are using a custom serializer with league/fractal, you can specify it here. + "serializer" => null, + ], + + "routeMatcher" => RouteMatcher::class, +]; diff --git a/Backend/database/migrations/2024_10_16_105416_create_kebabs_table.php b/Backend/database/migrations/2024_10_16_105416_create_kebabs_table.php index 9021e15..b87f30a 100644 --- a/Backend/database/migrations/2024_10_16_105416_create_kebabs_table.php +++ b/Backend/database/migrations/2024_10_16_105416_create_kebabs_table.php @@ -15,19 +15,18 @@ public function up(): void $table->string("name"); $table->string("address"); $table->json("coordinates"); - $table->json("sauces"); - $table->json("meats"); + $table->json("sauces")->nullable(); + $table->json("meats")->nullable(); $table->enum("status", ["exists", "closed", "planned"]); - $table->json("opening_hours"); + $table->json("opening_hours")->nullable(); $table->year("opening_year")->nullable(); $table->year("closing_year")->nullable(); $table->boolean("is_crafted"); $table->boolean("is_premises"); $table->boolean("is_chainstore"); - $table->json("ordering_options"); + $table->json("ordering_options")->nullable(); $table->json("comments")->nullable(); - $table->float("google_reviews", 2, 1)->nullable(); - $table->float("pysznepl_reviews", 2, 1)->nullable(); + $table->json("pages"); $table->timestamps(); }); } diff --git a/Backend/database/seeders/KebabSeeder.php b/Backend/database/seeders/KebabSeeder.php new file mode 100644 index 0000000..59c286d --- /dev/null +++ b/Backend/database/seeders/KebabSeeder.php @@ -0,0 +1,569 @@ +insert([ + [ + "logo" => file_get_contents(public_path("Logo/Stambuł.png")), + "name" => "Stambuł Kebab", + "address" => "Chojnowska 21A", + "coordinates" => json_encode(["lat" => 51.207187, "lng" => 16.156937]), + "sauces" => json_encode(["łagodny", "ostry", "mieszany", "czosnek", "ziołowy"]), + "meats" => json_encode(["kurczak", "wołowina", "mieszane", "falafel"]), + "status" => "exists", + "opening_hours" => json_encode([ + "monday" => "11:00-23:00", + "tuesday" => "11:00-23:00", + "wednesday" => "11:00-23:00", + "thursday" => "11:00-23:00", + "friday" => "11:00-01:00", + "saturday" => "11:00-01:00", + "sunday" => "12:00-23:00", + ]), + "opening_year" => null, + "closing_year" => null, + "is_crafted" => false, + "is_premises" => true, + "is_chainstore" => false, + "ordering_options" => json_encode(["na miejscu", "na wynos", "dostawa"]), + "comments" => json_encode([]), + "pages" => json_encode(["pyszne.pl" => "https://www.pyszne.pl/menu/kebab-stambul-legnica-gwarna"]), + "created_at" => now(), + "updated_at" => now(), + ], + [ + "logo" => file_get_contents(public_path("Logo/Rulo.png")), + "name" => "Rulo Kebab", + "address" => "Nowy Świat", + "coordinates" => json_encode(["lat" => 51.205062, "lng" => 16.154562]), + "sauces" => json_encode(["łagodny", "arabski", "ostry", "mieszany"]), + "meats" => json_encode(["kurczak", "wołowina", "mieszane"]), + "status" => "closed", + "opening_hours" => json_encode([]), + "opening_year" => null, + "closing_year" => null, + "is_crafted" => false, + "is_premises" => false, + "is_chainstore" => false, + "ordering_options" => json_encode(["na miejscu", "na wynos"]), + "comments" => json_encode([]), + "pages" => json_encode([]), + "created_at" => now(), + "updated_at" => now(), + ], + [ + "logo" => file_get_contents(public_path("Logo/Bafra.png")), + "name" => "Bafra Kebab Złotoryjska", + "address" => "Złotoryjska 170 ", + "coordinates" => json_encode(["lat" => 51.192937, "lng" => 16.128937]), + "sauces" => json_encode(["łagodny", "mieszany", "ostry"]), + "meats" => json_encode(["kurczak", "wołowina", "mieszane", "falafel"]), + "status" => "exists", + "opening_hours" => json_encode([ + "monday" => "11:00-23:00", + "tuesday" => "11:00-23:00", + "wednesday" => "11:00-23:00", + "thursday" => "11:00-23:00", + "friday" => "11:00-01:00", + "saturday" => "11:00-01:00", + "sunday" => "12:00-23:00", + ]), + "opening_year" => null, + "closing_year" => null, + "is_crafted" => true, + "is_premises" => false, + "is_chainstore" => true, + "ordering_options" => json_encode(["na miejscu", "na wynos", "dostawa"]), + "comments" => json_encode([]), + "pages" => json_encode(["glovo" => "https://glovoapp.com/pl/pl/legnica/bafra-kebab-zlotoryjska/", "pyszne.pl" => "https://www.pyszne.pl/menu/bafra-kebab-zlotoryjska"]), + "created_at" => now(), + "updated_at" => now(), + ], + [ + "logo" => file_get_contents(public_path("Logo/Cyrus.png")), + "name" => "Cyrus Kebab", + "address" => "Rynek 20 ", + "coordinates" => json_encode(["lat" => 51.207937, "lng" => 16.161062]), + "sauces" => json_encode(["łagodny", "mieszany", "ostry"]), + "meats" => json_encode(["kurczak", "wołowina", "mieszane", "falafel"]), + "status" => "exists", + "opening_hours" => json_encode([ + "monday" => "10:00-22:00", + "tuesday" => "10:00-22:00", + "wednesday" => "10:00-22:00", + "thursday" => "10:00-22:00", + "friday" => "10:00-00:00", + "saturday" => "10:00-00:00", + "sunday" => "10:00-22:00", + ]), + "opening_year" => null, + "closing_year" => null, + "is_crafted" => true, + "is_premises" => true, + "is_chainstore" => true, + "ordering_options" => json_encode(["na miejscu", "na wynos", "dostawa"]), + "comments" => json_encode([]), + "pages" => json_encode(["self" => "https://www.cyrus.pl"]), + "created_at" => now(), + "updated_at" => now(), + ], + [ + "logo" => file_get_contents(public_path("Logo/Leo.png")), + "name" => "Leo Kebab", + "address" => "Jaworzyńska 4", + "coordinates" => json_encode(["lat" => 51.204437, "lng" => 16.159937]), + "sauces" => json_encode(["łagodny", "mieszany", "ostry"]), + "meats" => json_encode(["kurczak", "wołowina", "mieszane", "falafel", "kapsalon"]), + "status" => "exists", + "opening_hours" => json_encode([ + "monday" => "10:00-00:00", + "tuesday" => "10:00-00:00", + "wednesday" => "10:00-00:00", + "thursday" => "10:00-00:00", + "friday" => "10:00-00:00", + "saturday" => "10:00-00:00", + "sunday" => "10:00-00:00", + ]), + "opening_year" => null, + "closing_year" => null, + "is_crafted" => false, + "is_premises" => true, + "is_chainstore" => true, + "ordering_options" => json_encode(["na miejscu", "na wynos", "dostawa"]), + "comments" => json_encode([]), + "pages" => json_encode(["glovo" => "https://glovoapp.com/pl/pl/legnica/leo-kebab-legnica-lga/", "pyszne.pl" => "https://www.pyszne.pl/menu/leo-kebab-and-grill"]), + "created_at" => now(), + "updated_at" => now(), + ], + [ + "logo" => file_get_contents(public_path("Logo/Zahir.png")), + "name" => "Zahir Kebab", + "address" => "Jaworzyńska 8", + "coordinates" => json_encode(["lat" => 51.204187, "lng" => 16.160187]), + "sauces" => json_encode(["łagodny", "ostry", "mieszany", "czosnkowy", "ketchup", "bbq", "koperkowy"]), + "meats" => json_encode(["kurczak", "wołowina", "mieszane", "falafel"]), + "status" => "exists", + "opening_hours" => json_encode([ + "monday" => "10:00-23:00", + "tuesday" => "10:00-23:00", + "wednesday" => "10:00-23:00", + "thursday" => "10:00-23:00", + "friday" => "10:00-23:00", + "saturday" => "10:00-23:00", + "sunday" => "10:00-23:00", + ]), + "opening_year" => null, + "closing_year" => null, + "is_crafted" => false, + "is_premises" => true, + "is_chainstore" => true, + "ordering_options" => json_encode(["na miejscu", "na wynos", "dostawa"]), + "comments" => json_encode([]), + "pages" => json_encode(["glovo" => "https://glovoapp.com/pl/pl/legnica/zahir-kebab-lga/", "pyszne.pl" => "https://www.pyszne.pl/menu/zahir-kebab-jaworzynska"]), + "created_at" => now(), + "updated_at" => now(), + ], + [ + "logo" => file_get_contents(public_path("Logo/Piri.png")), + "name" => "Piri Piri Kebab", + "address" => "Szkolna 1", + "coordinates" => json_encode(["lat" => 51.204187, "lng" => 16.160688]), + "sauces" => json_encode([ + "łagodny", + "ostry", + "mieszany", + "miodowo-musztardowy", + "sriracha mayo", + "czosnkowy", + "ziołowy", + "salsa verde", + ]), + "meats" => json_encode(["kurczak", "wołowina", "mieszane", "falafel", "kapsalon"]), + "status" => "exists", + "opening_hours" => json_encode([ + "monday" => "11:00-22:00", + "tuesday" => "11:00-22:00", + "wednesday" => "11:00-22:00", + "thursday" => "11:00-22:00", + "friday" => "11:00-23:00", + "saturday" => "11:00-23:00", + "sunday" => "12:00-22:00", + ]), + "opening_year" => null, + "closing_year" => null, + "is_crafted" => true, + "is_premises" => true, + "is_chainstore" => true, + "ordering_options" => json_encode(["na miejscu", "na wynos", "dostawa"]), + "comments" => json_encode([]), + "pages" => json_encode(["glovo" => "https://glovoapp.com/pl/pl/legnica/piri-piri-kebab-legnica-lga/", "pyszne.pl" => "https://www.pyszne.pl/menu/kebab-piri-piri-szkolna"]), + "created_at" => now(), + "updated_at" => now(), + ], + [ + "logo" => file_get_contents(public_path("Logo/Dino.png")), + "name" => "Dino Kebab", + "address" => "Jaworzyńska 41", + "coordinates" => json_encode(["lat" => 51.200688, "lng" => 16.159438]), + "sauces" => json_encode(["łagodny", "ostry", "mieszany"]), + "meats" => json_encode(["kurczak", "wołowina", "mieszane", "falafel", "kapsalon"]), + "status" => "exists", + "opening_hours" => json_encode([ + "tuesday" => "11:00-22:00", + "wednesday" => "11:00-22:00", + "thursday" => "11:00-22:00", + "friday" => "11:00-22:00", + "saturday" => "12:00-22:00", + "sunday" => "12:00-22:00", + ]), + "opening_year" => null, + "closing_year" => null, + "is_crafted" => false, + "is_premises" => true, + "is_chainstore" => false, + "ordering_options" => json_encode(["na miejscu", "na wynos", "dostawa"]), + "comments" => json_encode([]), + "pages" => json_encode(["glovo" => "https://glovoapp.com/pl/pl/legnica/dino-kebab1-lga/", "pyszne.pl" => "https://www.pyszne.pl/menu/kebab-dino"]), + "created_at" => now(), + "updated_at" => now(), + ], + [ + "logo" => file_get_contents(public_path("Logo/Zahir.png")), + "name" => "Zahir Kebab", + "address" => "Kolejowa 3 ", + "coordinates" => json_encode(["lat" => 51.212312, "lng" => 16.168687]), + "sauces" => json_encode(["łagodny", "ostry", "mieszany", "czosnkowy", "ketchup", "bbq", "koperkowy"]), + "meats" => json_encode(["kurczak", "wołowina", "mieszane", "falafel"]), + "status" => "exists", + "opening_hours" => json_encode([ + "monday" => "10:00-00:00", + "tuesday" => "10:00-00:00", + "wednesday" => "10:00-00:00", + "thursday" => "10:00-00:00", + "friday" => "10:00-02:00", + "saturday" => "10:00-02:00", + "sunday" => "11:00-00:00", + ]), + "opening_year" => null, + "closing_year" => null, + "is_crafted" => false, + "is_premises" => true, + "is_chainstore" => true, + "ordering_options" => json_encode(["na miejscu", "na wynos", "dostawa"]), + "comments" => json_encode([]), + "pages" => json_encode(["glovo" => "https://glovoapp.com/pl/pl/legnica/zahir-kebab-lga/", "pyszne.pl" => "https://www.pyszne.pl/menu/zahir-kebab-legnica-kolejowa"]), + "created_at" => now(), + "updated_at" => now(), + ], + [ + "logo" => file_get_contents(public_path("Logo/Lara.png")), + "name" => "Lara Doner Kebab", + "address" => "Wrocławska 13 ", + "coordinates" => json_encode(["lat" => 51.209563, "lng" => 16.167813]), + "sauces" => json_encode(["łagodny", "ostry", "mieszany", "czosnkowy", "ziołowy"]), + "meats" => json_encode(["kurczak", "wołowina", "mieszane", "falafel"]), + "status" => "exists", + "opening_hours" => json_encode([ + "monday" => "10:00-22:00", + "tuesday" => "10:00-22:00", + "wednesday" => "10:00-22:00", + "thursday" => "10:00-22:00", + "friday" => "10:00-22:00", + "saturday" => "10:00-22:00", + "sunday" => "10:00-22:00", + ]), + "opening_year" => null, + "closing_year" => null, + "is_crafted" => true, + "is_premises" => true, + "is_chainstore" => true, + "ordering_options" => json_encode(["na miejscu", "na wynos"]), + "comments" => json_encode([]), + "pages" => json_encode(["glovo" => "https://glovoapp.com/pl/pl/legnica/lara-doner-kebab-lga/"]), + "created_at" => now(), + "updated_at" => now(), + ], + [ + "logo" => file_get_contents(public_path("Logo/Karmnik.png")), + "name" => "Karmnik Kebab", + "address" => "Wrocławska 1", + "coordinates" => json_encode(["lat" => 51.209688, "lng" => 16.168563]), + "sauces" => json_encode(["łagodny", "ostry", "mieszany"]), + "meats" => json_encode(["kurczak", "wołowina", "mieszane"]), + "status" => "closed", + "opening_hours" => json_encode([]), + "opening_year" => null, + "closing_year" => null, + "is_crafted" => false, + "is_premises" => true, + "is_chainstore" => false, + "ordering_options" => json_encode(["na miejscu", "na wynos"]), + "comments" => json_encode([]), + "pages" => json_encode([]), + "created_at" => now(), + "updated_at" => now(), + ], + [ + "logo" => file_get_contents(public_path("Logo/Mix.png")), + "name" => "MIX Kebab", + "address" => "Wrocławska 23a", + "coordinates" => json_encode(["lat" => 51.209187, "lng" => 16.169313]), + "sauces" => json_encode(["łagodny", "mieszany", "ostry"]), + "meats" => json_encode(["kurczak", "wołowina", "mieszane", "falafel"]), + "status" => "exists", + "opening_hours" => json_encode([ + "monday" => "11:00-21:00", + "tuesday" => "11:00-21:00", + "wednesday" => "11:00-21:00", + "thursday" => "11:00-21:00", + "friday" => "11:00-21:00", + "saturday" => "12:00-21:00", + "sunday" => "12:00-21:00", + ]), + "opening_year" => null, + "closing_year" => null, + "is_crafted" => true, + "is_premises" => true, + "is_chainstore" => false, + "ordering_options" => json_encode(["na miejscu", "na wynos", "dostawa"]), + "comments" => json_encode([]), + "pages" => json_encode(["pyszne.pl" => "https://www.pyszne.pl/menu/mix-kebab-legnica"]), + "created_at" => now(), + "updated_at" => now(), + ], + [ + "logo" => file_get_contents(public_path("Logo/Hallo.png")), + "name" => "Hallo Kebap", + "address" => "Stefana Czarnieckiego 19c", + "coordinates" => json_encode(["lat" => 51.211687, "lng" => 16.175187]), + "sauces" => json_encode(["ostry", "czosnkowy", "jogurtowy", "ketchup"]), + "meats" => json_encode(["kurczak", "wołowina", "mieszane"]), + "status" => "exists", + "opening_hours" => json_encode([ + "wednesday" => "12:00-20:00", + "thursday" => "12:00-20:00", + "friday" => "12:00-21:00", + "saturday" => "12:00-21:00", + "sunday" => "12:00-21:00", + ]), + "opening_year" => null, + "closing_year" => null, + "is_crafted" => true, + "is_premises" => true, + "is_chainstore" => true, + "ordering_options" => json_encode(["na miejscu", "na wynos", "dostawa"]), + "comments" => json_encode([]), + "pages" => json_encode(["pyszne.pl" => "https://www.pyszne.pl/menu/hallo-kebap-legnica"]), + "created_at" => now(), + "updated_at" => now(), + ], + [ + "logo" => file_get_contents(public_path("Logo/HadFood.png")), + "name" => "Had Food", + "address" => "Fabryczna 13 ", + "coordinates" => json_encode(["lat" => 51.206812, "lng" => 16.178688]), + "sauces" => json_encode(["ketchup", "czosnkowy", "łagodny", "pikantny"]), + "meats" => json_encode(["kurczak", "wołowina", "mieszane"]), + "status" => "exists", + "opening_hours" => json_encode([ + "monday" => "12:00-22:00", + "tuesday" => "12:00-22:00", + "wednesday" => "12:00-22:00", + "thursday" => "12:00-22:00", + "friday" => "12:00-23:00", + "saturday" => "12:00-23:00", + "sunday" => "12:00-21:00", + ]), + "opening_year" => null, + "closing_year" => null, + "is_crafted" => true, + "is_premises" => true, + "is_chainstore" => false, + "ordering_options" => json_encode(["na miejscu"]), + "comments" => json_encode([]), + "pages" => json_encode(["pyszne.pl" => "https://www.pyszne.pl/menu/had-food"]), + "created_at" => now(), + "updated_at" => now(), + ], + [ + "logo" => file_get_contents(public_path("Logo/AmAm.png")), + "name" => "Am Am Kebab", + "address" => "Wrocławska 155", + "coordinates" => json_encode(["lat" => 51.209563, "lng" => 16.187063]), + "sauces" => json_encode(["łagodny", "mieszany", "ostry"]), + "meats" => json_encode(["kurczak", "wołowina", "mieszane", "falafel"]), + "status" => "exists", + "opening_hours" => json_encode([ + "monday" => "10:00-20:00", + "tuesday" => "10:00-20:00", + "wednesday" => "10:00-20:00", + "thursday" => "10:00-20:00", + "friday" => "10:00-20:00", + "saturday" => "10:00-20:00", + "sunday" => "11:00-20:00", + ]), + "opening_year" => null, + "closing_year" => null, + "is_crafted" => false, + "is_premises" => true, + "is_chainstore" => true, + "ordering_options" => json_encode(["na miejscu", "na wynos", "dostawa"]), + "comments" => json_encode([]), + "pages" => json_encode([ + "pyszne.pl" => "https://www.pyszne.pl/menu/am-am-kebab-legnica-wroclawska", + ]), + "created_at" => now(), + "updated_at" => now(), + ], + [ + "logo" => file_get_contents(public_path("Logo/Bejrut.png")), + "name" => "Bejrut Restauracja Libańska", + "address" => "aleja Piłsudskiego 18", + "coordinates" => json_encode(["lat" => 51.205188, "lng" => 16.185313]), + "sauces" => json_encode(["łagodny", "mieszany", "ostry", "czosnkowy"]), + "meats" => json_encode(["kurczak", "wołowina", "mieszane", "falafel"]), + "status" => "exists", + "opening_hours" => json_encode([ + "monday" => "10:00-00:00", + "tuesday" => "10:00-00:00", + "wednesday" => "10:00-00:00", + "thursday" => "10:00-00:00", + "friday" => "10:00-02:00", + "saturday" => "10:00-02:00", + "sunday" => "10:00-00:00", + ]), + "opening_year" => null, + "closing_year" => null, + "is_crafted" => true, + "is_premises" => true, + "is_chainstore" => true, + "ordering_options" => json_encode(["na miejscu", "na wynos", "dostawa"]), + "comments" => json_encode([]), + "pages" => json_encode(["glovo" => "https://www.pyszne.pl/menu/bejrut-restauracja-libanska-legnica", "pyszne.pl" => "https://glovoapp.com/pl/pl/legnica/bejrut-restauracja-libanska-lga/"]), + "created_at" => now(), + "updated_at" => now(), + ], + [ + "logo" => file_get_contents(public_path("Logo/King.png")), + "name" => "King House Kebab", + "address" => "aleja Piłsudskiego 38", + "coordinates" => json_encode(["lat" => 51.204563, "lng" => 16.188562]), + "sauces" => json_encode(["łagodny", "mieszany", "ostry", "czosnkowy", "ketchup", "bbq"]), + "meats" => json_encode(["kurczak", "wołowina", "mieszane", "falafel"]), + "status" => "exists", + "opening_hours" => json_encode([ + "tuesday" => "12:00-21:30", + "wednesday" => "12:00-21:30", + "thursday" => "12:00-21:30", + "friday" => "12:00-22:00", + "saturday" => "12:00-22:00", + "sunday" => "12:00-21:00", + ]), + "opening_year" => null, + "closing_year" => null, + "is_crafted" => true, + "is_premises" => true, + "is_chainstore" => false, + "ordering_options" => json_encode(["na miejscu", "na wynos", "dostawa"]), + "comments" => json_encode([]), + "pages" => json_encode([ + "pyszne.pl" => "https://www.pyszne.pl/menu/king-house-kebab-legnica", + "glovo" => "https://glovoapp.com/pl/pl/legnica/king-house-kebab-lga/", + ]), + "created_at" => now(), + "updated_at" => now(), + ], + [ + "logo" => null, + "name" => "Kavovarka Kebab Kraft", + "address" => "Górnicza 10B ", + "coordinates" => json_encode(["lat" => 51.205562, "lng" => 16.186563]), + "sauces" => json_encode(["łagodny", "ostry", "czosnkowy"]), + "meats" => json_encode(["kurczak", "wieprzowina", "kraftowy"]), + "status" => "exists", + "opening_hours" => json_encode([ + "monday" => "12:00-21:00", + "tuesday" => "12:00-21:00", + "wednesday" => "12:00-21:00", + "thursday" => "12:00-21:00", + "friday" => "12:00-21:00", + "saturday" => "12:00-21:00", + ]), + "opening_year" => null, + "closing_year" => null, + "is_crafted" => true, + "is_premises" => false, + "is_chainstore" => false, + "ordering_options" => json_encode(["na miejscu", "na wynos", "dostawa"]), + "comments" => json_encode([]), + "pages" => json_encode(["glovo" => "https://glovoapp.com/pl/en/legnica/kavovarka-lga/"]), + "created_at" => now(), + "updated_at" => now(), + ], + [ + "logo" => null, + "name" => "Kebab Truck", + "address" => "Iwaszkiewicza 1", + "coordinates" => json_encode(["lat" => 51.207937, "lng" => 16.213437]), + "sauces" => json_encode(["czosnkowy", "ziołowy", "ostry", "turecki"]), + "meats" => json_encode(["kurczak", "mieszane"]), + "status" => "exists", + "opening_hours" => json_encode([ + "monday" => "10:00-19:00", + "tuesday" => "10:00-19:00", + "wednesday" => "10:00-19:00", + "thursday" => "10:00-19:00", + "friday" => "10:00-19:00", + "saturday" => "10:00-19:00", + ]), + "opening_year" => null, + "closing_year" => null, + "is_crafted" => true, + "is_premises" => false, + "is_chainstore" => false, + "ordering_options" => json_encode(["na miejscu", "na wynos"]), + "comments" => json_encode([]), + "pages" => json_encode([]), + "created_at" => now(), + "updated_at" => now(), + ], + [ + "logo" => file_get_contents(public_path("Logo/Maxi.png")), + "name" => "Maxi Kebab", + "address" => "Carrefour, aleja Piłsudskiego 84", + "coordinates" => json_encode(["lat" => 51.201062, "lng" => 16.214813]), + "sauces" => json_encode(["łagodny", "czosnkowy", "miętowy", "ostry", "mieszany", "musztardowy"]), + "meats" => json_encode(["kurczak", "baran", "mieszane"]), + "status" => "exists", + "opening_hours" => json_encode([ + "monday" => "11:30-20:00", + "tuesday" => "11:30-20:00", + "wednesday" => "11:30-20:00", + "thursday" => "11:30-20:00", + "friday" => "11:30-20:00", + "saturday" => "11:30-20:00", + "sunday" => "zamknięte", + ]), + "opening_year" => null, + "closing_year" => null, + "is_crafted" => true, + "is_premises" => false, + "is_chainstore" => false, + "ordering_options" => json_encode(["na miejscu", "na wynos"]), + "comments" => json_encode([]), + "pages" => json_encode([]), + "created_at" => now(), + "updated_at" => now(), + ], + ]); + } +} diff --git a/Backend/phpunit.xml b/Backend/phpunit.xml index e82d960..a33e25d 100644 --- a/Backend/phpunit.xml +++ b/Backend/phpunit.xml @@ -11,6 +11,9 @@ tests/Feature + + tests/Arch + diff --git a/Backend/public/Logo/AmAm.png b/Backend/public/Logo/AmAm.png new file mode 100644 index 0000000..7c7c640 Binary files /dev/null and b/Backend/public/Logo/AmAm.png differ diff --git a/Backend/public/Logo/Bafra.png b/Backend/public/Logo/Bafra.png new file mode 100644 index 0000000..bbb2e1b Binary files /dev/null and b/Backend/public/Logo/Bafra.png differ diff --git a/Backend/public/Logo/Bejrut.png b/Backend/public/Logo/Bejrut.png new file mode 100644 index 0000000..02b5ff7 Binary files /dev/null and b/Backend/public/Logo/Bejrut.png differ diff --git a/Backend/public/Logo/Cyrus.png b/Backend/public/Logo/Cyrus.png new file mode 100644 index 0000000..57336d8 Binary files /dev/null and b/Backend/public/Logo/Cyrus.png differ diff --git a/Backend/public/Logo/Dino.png b/Backend/public/Logo/Dino.png new file mode 100644 index 0000000..1dd847a Binary files /dev/null and b/Backend/public/Logo/Dino.png differ diff --git a/Backend/public/Logo/HadFood.png b/Backend/public/Logo/HadFood.png new file mode 100644 index 0000000..6db7b3d Binary files /dev/null and b/Backend/public/Logo/HadFood.png differ diff --git a/Backend/public/Logo/Hallo.png b/Backend/public/Logo/Hallo.png new file mode 100644 index 0000000..0aa11d0 Binary files /dev/null and b/Backend/public/Logo/Hallo.png differ diff --git a/Backend/public/Logo/Karmnik.png b/Backend/public/Logo/Karmnik.png new file mode 100644 index 0000000..5f1bcc7 Binary files /dev/null and b/Backend/public/Logo/Karmnik.png differ diff --git a/Backend/public/Logo/King.png b/Backend/public/Logo/King.png new file mode 100644 index 0000000..ff3f071 Binary files /dev/null and b/Backend/public/Logo/King.png differ diff --git a/Backend/public/Logo/Lara.png b/Backend/public/Logo/Lara.png new file mode 100644 index 0000000..42e98b7 Binary files /dev/null and b/Backend/public/Logo/Lara.png differ diff --git a/Backend/public/Logo/Leo.png b/Backend/public/Logo/Leo.png new file mode 100644 index 0000000..7265581 Binary files /dev/null and b/Backend/public/Logo/Leo.png differ diff --git a/Backend/public/Logo/Maxi.png b/Backend/public/Logo/Maxi.png new file mode 100644 index 0000000..c79b90b Binary files /dev/null and b/Backend/public/Logo/Maxi.png differ diff --git a/Backend/public/Logo/Mix.png b/Backend/public/Logo/Mix.png new file mode 100644 index 0000000..0755a38 Binary files /dev/null and b/Backend/public/Logo/Mix.png differ diff --git a/Backend/public/Logo/Piri.png b/Backend/public/Logo/Piri.png new file mode 100644 index 0000000..f9ca21d Binary files /dev/null and b/Backend/public/Logo/Piri.png differ diff --git a/Backend/public/Logo/Rulo.png b/Backend/public/Logo/Rulo.png new file mode 100644 index 0000000..beb7b0b Binary files /dev/null and b/Backend/public/Logo/Rulo.png differ diff --git "a/Backend/public/Logo/Stambu\305\202.png" "b/Backend/public/Logo/Stambu\305\202.png" new file mode 100644 index 0000000..eb78dc8 Binary files /dev/null and "b/Backend/public/Logo/Stambu\305\202.png" differ diff --git a/Backend/public/Logo/Zahir.png b/Backend/public/Logo/Zahir.png new file mode 100644 index 0000000..0041db0 Binary files /dev/null and b/Backend/public/Logo/Zahir.png differ diff --git a/Backend/public/docs/collection.json b/Backend/public/docs/collection.json new file mode 100644 index 0000000..a8be117 --- /dev/null +++ b/Backend/public/docs/collection.json @@ -0,0 +1,1811 @@ +{ + "variable": [ + { + "id": "baseUrl", + "key": "baseUrl", + "type": "string", + "name": "string", + "value": "https:\/\/sponge-climbing-adder.ngrok-free.app\/api\/documentation" + } + ], + "info": { + "name": "Kebab Api", + "_postman_id": "4177ef49-775d-4e41-998b-cd8601493769", + "description": "", + "schema": "https:\/\/schema.getpostman.com\/json\/collection\/v2.1.0\/collection.json" + }, + "item": [ + { + "name": "Auth", + "description": "*", + "item": [ + { + "name": "POST api\/register", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/register", + "query": [], + "raw": "{{baseUrl}}\/api\/register" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"name\":\"aspernatur\",\"email\":\"jamison69@example.org\",\"password\":\"ut\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "POST api\/login", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/login", + "query": [], + "raw": "{{baseUrl}}\/api\/login" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"email\":\"kamryn22@example.com\",\"password\":\"at\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "POST api\/logout", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/logout", + "query": [], + "raw": "{{baseUrl}}\/api\/logout" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + } + ] + }, + { + "name": "Endpoints", + "description": "", + "item": [ + { + "name": "GET api\/documentation", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/documentation", + "query": [], + "raw": "{{baseUrl}}\/api\/documentation" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "no-cache, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + } + ], + "code": 404, + "body": "{\n \"message\": \"The route api\/documentation could not be found.\"\n}", + "name": "" + } + ] + } + ] + }, + { + "name": "Kebab", + "description": "*", + "item": [ + { + "name": "GET api\/kebabs", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "no-cache, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + } + ], + "code": 404, + "body": "{\n \"message\": \"The route api\/kebabs could not be found.\"\n}", + "name": "" + } + ] + }, + { + "name": "POST api\/kebabs\/{kebabId}\/comments", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/comments", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/comments", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "unde", + "description": "" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"id_user\":7,\"comment\":\"itaque\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "DELETE api\/kebabs\/{kebabId}\/comments", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/comments", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/comments", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "voluptatem", + "description": "" + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"id_user\":18,\"comment\":\"deserunt\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "POST api\/addKebab", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/addKebab", + "query": [], + "raw": "{{baseUrl}}\/api\/addKebab" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"logo\":\"ut\",\"name\":\"perferendis\",\"address\":\"vel\",\"coordinates\":\"nisi\",\"sauces\":\"at\",\"meats\":\"ullam\",\"status\":\"perferendis\",\"opening_hours\":\"perspiciatis\",\"opening_year\":\"deleniti\",\"closing_year\":\"accusantium\",\"is_crafted\":\"placeat\",\"is_premises\":\"minus\",\"is_chainstore\":\"aut\",\"ordering_options\":\"voluptas\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "DELETE api\/kebabs\/{id}", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "adipisci", + "description": "The ID of the kebab." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "PUT api\/kebabs\/{kebabId}\/logo", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/logo", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/logo", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "quia", + "description": "" + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "PUT api\/kebabs\/{kebabId}\/name", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/name", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/name", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "consequuntur", + "description": "" + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"name\":\"quidem\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "PUT api\/kebabs\/{kebabId}\/address", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/address", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/address", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "ab", + "description": "" + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"address\":\"huxswcermiukedcsywurinn\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "PUT api\/kebabs\/{kebabId}\/coordinates", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/coordinates", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/coordinates", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "eaque", + "description": "" + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"coordinates\":[]}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "POST api\/kebabs\/{kebabId}\/sauce", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/sauce", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/sauce", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "laboriosam", + "description": "" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"sauce\":\"nostrum\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "DELETE api\/kebabs\/{kebabId}\/sauce", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/sauce", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/sauce", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "necessitatibus", + "description": "" + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"sauce\":\"dolore\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "POST api\/kebabs\/{kebabId}\/meat", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/meat", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/meat", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "facere", + "description": "" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"meat\":\"voluptatibus\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "DELETE api\/kebabs\/{kebabId}\/meat", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/meat", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/meat", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "ratione", + "description": "" + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"meat\":\"eos\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "PUT api\/kebabs\/{kebabId}\/status", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/status", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/status", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "quas", + "description": "" + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"status\":\"exists\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "POST api\/kebabs\/{kebabId}\/opening-hours", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/opening-hours", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/opening-hours", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "est", + "description": "" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"day\":\"saturday\",\"hours\":\"quis\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "DELETE api\/kebabs\/{kebabId}\/opening-hours", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/opening-hours", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/opening-hours", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "omnis", + "description": "" + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"day\":\"monday\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "PUT api\/kebabs\/{kebabId}\/opening-hours", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/opening-hours", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/opening-hours", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "qui", + "description": "" + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"day\":\"sunday\",\"hours\":\"explicabo\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "PUT api\/kebabs\/{kebabId}\/opening-year", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/opening-year", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/opening-year", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "recusandae", + "description": "" + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"opening_year\":\"6167\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "PUT api\/kebabs\/{kebabId}\/closing-year", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/closing-year", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/closing-year", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "voluptatem", + "description": "" + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"closing_year\":\"2621\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "PUT api\/kebabs\/{kebabId}\/is-crafted", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/is-crafted", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/is-crafted", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "vel", + "description": "" + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"is_crafted\":true}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "PUT api\/kebabs\/{kebabId}\/is-premises", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/is-premises", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/is-premises", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "laudantium", + "description": "" + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"is_premises\":false}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "PUT api\/kebabs\/{kebabId}\/is-chainstore", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/is-chainstore", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/is-chainstore", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "ea", + "description": "" + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"is_chainstore\":false}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "POST api\/kebabs\/{kebabId}\/ordering-options", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/ordering-options", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/ordering-options", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "reprehenderit", + "description": "" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"new_option\":\"nesciunt\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "DELETE api\/kebabs\/{kebabId}\/ordering-options", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/ordering-options", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/ordering-options", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "assumenda", + "description": "" + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"option_to_remove\":\"est\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "POST api\/kebabs\/{kebabId}\/pages", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/pages", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/pages", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "consectetur", + "description": "" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"new_page\":\"explicabo\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "DELETE api\/kebabs\/{kebabId}\/pages", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/kebabs\/:kebabId\/pages", + "query": [], + "raw": "{{baseUrl}}\/api\/kebabs\/:kebabId\/pages", + "variable": [ + { + "id": "kebabId", + "key": "kebabId", + "value": "ad", + "description": "" + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"page_to_remove\":\"corporis\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + } + ] + }, + { + "name": "KebabScraper", + "description": "*", + "item": [ + { + "name": "GET api\/scrape-reviews", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/scrape-reviews", + "query": [], + "raw": "{{baseUrl}}\/api\/scrape-reviews" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "no-cache, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + } + ], + "code": 404, + "body": "{\n \"message\": \"The route api\/scrape-reviews could not be found.\"\n}", + "name": "" + } + ] + } + ] + }, + { + "name": "Suggestions", + "description": "*", + "item": [ + { + "name": "POST api\/suggestions", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/suggestions", + "query": [], + "raw": "{{baseUrl}}\/api\/suggestions" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"user\":\"yhyrnmamtgxprtslmownvg\",\"contents\":\"vmtnljhahaj\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "GET api\/suggestions", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/suggestions", + "query": [], + "raw": "{{baseUrl}}\/api\/suggestions" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "no-cache, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + } + ], + "code": 404, + "body": "{\n \"message\": \"The route api\/suggestions could not be found.\"\n}", + "name": "" + } + ] + }, + { + "name": "DELETE api\/suggestions\/{id}", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/suggestions\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/suggestions\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "magni", + "description": "The ID of the suggestion." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + } + ] + }, + { + "name": "Users", + "description": "*", + "item": [ + { + "name": "GET api\/getCurrentUser", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/getCurrentUser", + "query": [], + "raw": "{{baseUrl}}\/api\/getCurrentUser" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "no-cache, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + } + ], + "code": 404, + "body": "{\n \"message\": \"The route api\/getCurrentUser could not be found.\"\n}", + "name": "" + } + ] + }, + { + "name": "GET api\/fav\/{id}", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/fav\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/fav\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "veritatis", + "description": "The ID of the fav." + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "no-cache, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + } + ], + "code": 404, + "body": "{\n \"message\": \"The route api\/fav\/veritatis could not be found.\"\n}", + "name": "" + } + ] + }, + { + "name": "POST api\/addfav", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/addfav", + "query": [], + "raw": "{{baseUrl}}\/api\/addfav" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"user_id\":\"eum\",\"kebab_id\":\"quia\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "POST api\/remfav", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/remfav", + "query": [], + "raw": "{{baseUrl}}\/api\/remfav" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"user_id\":\"quas\",\"kebab_id\":\"quia\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "PUT api\/changeName\/{id}", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/changeName\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/changeName\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "facilis", + "description": "The ID of the changeName." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"newName\":\"nobis\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "PUT api\/changePassword\/{id}", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/changePassword\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/changePassword\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "laborum", + "description": "The ID of the changePassword." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"newPassword\":\"quas\",\"confirmPassword\":\"rerum\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "PUT api\/changeEmail\/{id}", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/changeEmail\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/changeEmail\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "commodi", + "description": "The ID of the changeEmail." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"newEmail\":\"shanie84@example.org\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "PUT api\/changeUserRole\/{id}", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/changeUserRole\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/changeUserRole\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "atque", + "description": "The ID of the changeUserRole." + } + ] + }, + "method": "PUT", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"isAdmin\":false}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "DELETE api\/deleteUser\/{id}", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/deleteUser\/:id", + "query": [], + "raw": "{{baseUrl}}\/api\/deleteUser\/:id", + "variable": [ + { + "id": "id", + "key": "id", + "value": "ut", + "description": "The ID of the deleteUser." + } + ] + }, + "method": "DELETE", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + }, + { + "name": "GET api\/getAllUsers", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/getAllUsers", + "query": [], + "raw": "{{baseUrl}}\/api\/getAllUsers" + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": null, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [ + { + "header": [ + { + "key": "cache-control", + "value": "no-cache, private" + }, + { + "key": "content-type", + "value": "application\/json" + }, + { + "key": "vary", + "value": "Origin" + } + ], + "code": 404, + "body": "{\n \"message\": \"The route api\/getAllUsers could not be found.\"\n}", + "name": "" + } + ] + }, + { + "name": "POST api\/addNewUser", + "request": { + "url": { + "host": "{{baseUrl}}", + "path": "api\/addNewUser", + "query": [], + "raw": "{{baseUrl}}\/api\/addNewUser" + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application\/json" + }, + { + "key": "Accept", + "value": "application\/json" + } + ], + "body": { + "mode": "raw", + "raw": "{\"name\":\"ut\",\"email\":\"moconnell@example.com\",\"password\":\"est\"}" + }, + "description": "", + "auth": { + "type": "noauth" + } + }, + "response": [] + } + ] + } + ], + "auth": { + "type": "bearer", + "bearer": [ + { + "key": "Authorization", + "type": "string" + } + ] + } +} \ No newline at end of file diff --git a/Backend/public/docs/css/theme-default.print.css b/Backend/public/docs/css/theme-default.print.css new file mode 100644 index 0000000..18ab760 --- /dev/null +++ b/Backend/public/docs/css/theme-default.print.css @@ -0,0 +1,393 @@ +/* Copied from https://github.com/slatedocs/slate/blob/c4b4c0b8f83e891ca9fab6bbe9a1a88d5fe41292/stylesheets/print.css and unminified */ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + +html { + font-family: sans-serif; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100% +} + +body { + margin: 0 +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section, +summary { + display: block +} + +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline +} + +audio:not([controls]) { + display: none; + height: 0 +} + +[hidden], +template { + display: none +} + +a { + background-color: transparent +} + +a:active, +a:hover { + outline: 0 +} + +abbr[title] { + border-bottom: 1px dotted +} + +b, +strong { + font-weight: bold +} + +dfn { + font-style: italic +} + +h1 { + font-size: 2em; + margin: 0.67em 0 +} + +mark { + background: #ff0; + color: #000 +} + +small { + font-size: 80% +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline +} + +sup { + top: -0.5em +} + +sub { + bottom: -0.25em +} + +img { + border: 0 +} + +svg:not(:root) { + overflow: hidden +} + +figure { + margin: 1em 40px +} + +hr { + box-sizing: content-box; + height: 0 +} + +pre { + overflow: auto +} + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em +} + +button, +input, +optgroup, +select, +textarea { + color: inherit; + font: inherit; + margin: 0 +} + +button { + overflow: visible +} + +button, +select { + text-transform: none +} + +button, +html input[type="button"], +input[type="reset"], +input[type="submit"] { + -webkit-appearance: button; + cursor: pointer +} + +button[disabled], +html input[disabled] { + cursor: default +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0 +} + +input { + line-height: normal +} + +input[type="checkbox"], +input[type="radio"] { + box-sizing: border-box; + padding: 0 +} + +input[type="number"]::-webkit-inner-spin-button, +input[type="number"]::-webkit-outer-spin-button { + height: auto +} + +input[type="search"] { + -webkit-appearance: textfield; + box-sizing: content-box +} + +input[type="search"]::-webkit-search-cancel-button, +input[type="search"]::-webkit-search-decoration { + -webkit-appearance: none +} + +fieldset { + border: 1px solid #c0c0c0; + margin: 0 2px; + padding: 0.35em 0.625em 0.75em +} + +legend { + border: 0; + padding: 0 +} + +textarea { + overflow: auto +} + +optgroup { + font-weight: bold +} + +table { + border-collapse: collapse; + border-spacing: 0 +} + +td, +th { + padding: 0 +} + +.content h1, +.content h2, +.content h3, +.content h4, +body { + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + font-size: 14px +} + +.content h1, +.content h2, +.content h3, +.content h4 { + font-weight: bold +} + +.content pre, +.content code { + font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, serif; + font-size: 12px; + line-height: 1.5 +} + +.content pre, +.content code { + word-break: break-all; + -webkit-hyphens: auto; + -ms-hyphens: auto; + hyphens: auto +} + +@font-face { + font-family: 'slate'; + src: url(../fonts/slate.eot?-syv14m); + src: url(../fonts/slate.eot?#iefix-syv14m) format("embedded-opentype"), url(../fonts/slate.woff2?-syv14m) format("woff2"), url(../fonts/slate.woff?-syv14m) format("woff"), url(../fonts/slate.ttf?-syv14m) format("truetype"), url(../fonts/slate.svg?-syv14m#slate) format("svg"); + font-weight: normal; + font-style: normal +} + +.content aside.warning:before, +.content aside.notice:before, +.content aside.success:before { + font-family: 'slate'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1 +} + +.content aside.warning:before { + content: "\e600" +} + +.content aside.notice:before { + content: "\e602" +} + +.content aside.success:before { + content: "\e606" +} + +.tocify, +.toc-footer, +.lang-selector, +.search, +#nav-button { + display: none +} + +.tocify-wrapper>img { + margin: 0 auto; + display: block +} + +.content { + font-size: 12px +} + +.content pre, +.content code { + border: 1px solid #999; + border-radius: 5px; + font-size: 0.8em +} + +.content pre code { + border: 0 +} + +.content pre { + padding: 1.3em +} + +.content code { + padding: 0.2em +} + +.content table { + border: 1px solid #999 +} + +.content table tr { + border-bottom: 1px solid #999 +} + +.content table td, +.content table th { + padding: 0.7em +} + +.content p { + line-height: 1.5 +} + +.content a { + text-decoration: none; + color: #000 +} + +.content h1 { + font-size: 2.5em; + padding-top: 0.5em; + padding-bottom: 0.5em; + margin-top: 1em; + margin-bottom: 21px; + border: 2px solid #ccc; + border-width: 2px 0; + text-align: center +} + +.content h2 { + font-size: 1.8em; + margin-top: 2em; + border-top: 2px solid #ccc; + padding-top: 0.8em +} + +.content h1+h2, +.content h1+div+h2 { + border-top: none; + padding-top: 0; + margin-top: 0 +} + +.content h3, +.content h4 { + font-size: 0.8em; + margin-top: 1.5em; + margin-bottom: 0.8em; + text-transform: uppercase +} + +.content h5, +.content h6 { + text-transform: uppercase +} + +.content aside { + padding: 1em; + border: 1px solid #ccc; + border-radius: 5px; + margin-top: 1.5em; + margin-bottom: 1.5em; + line-height: 1.6 +} + +.content aside:before { + vertical-align: middle; + padding-right: 0.5em; + font-size: 14px +} diff --git a/Backend/public/docs/css/theme-default.style.css b/Backend/public/docs/css/theme-default.style.css new file mode 100644 index 0000000..9a4741c --- /dev/null +++ b/Backend/public/docs/css/theme-default.style.css @@ -0,0 +1,1090 @@ +/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ + +html { + font-family: 'Open Sans', sans-serif; + font-size: 1.2em; + -ms-text-size-adjust: 100%; + -webkit-text-size-adjust: 100% +} + +body { + margin: 0 +} + +article, +aside, +details, +figcaption, +figure, +footer, +header, +hgroup, +main, +menu, +nav, +section { + display: block +} + +summary { + cursor: pointer; +} + +audio, +canvas, +progress, +video { + display: inline-block; + vertical-align: baseline +} + +audio:not([controls]) { + display: none; + height: 0 +} + +[hidden], +template { + display: none +} + +a { + background-color: transparent +} + +a:active, +a:hover { + outline: 0 +} + +abbr[title] { + border-bottom: 1px dotted +} + +b, +strong { + font-weight: 700 +} + +dfn { + font-style: italic +} + +h1 { + font-size: 2em; + margin: .67em 0 +} + +mark { + background: #ff0; + color: #000 +} + +small { + font-size: 80% +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline +} + +sup { + top: -.5em +} + +sub { + bottom: -.25em +} + +img { + border: 0 +} + +svg:not(:root) { + overflow: hidden +} + +figure { + margin: 1em 40px +} + +hr { + box-sizing: content-box; + height: 0 +} + +pre { + overflow: auto +} + +code, +kbd, +pre, +samp { + font-family: monospace, monospace; + font-size: 1em +} + +button, +input, +optgroup, +select, +textarea { + color: inherit; + font: inherit; + margin: 0 +} + +button { + overflow: visible +} + +button, +select { + text-transform: none +} + +button, +html input[type=button], +input[type=reset], +input[type=submit] { + -webkit-appearance: button; + cursor: pointer +} + +button[disabled], +html input[disabled] { + cursor: default +} + +button::-moz-focus-inner, +input::-moz-focus-inner { + border: 0; + padding: 0 +} + +input { + line-height: normal +} + +input[type=checkbox], +input[type=radio] { + box-sizing: border-box; + padding: 0 +} + +input[type=number]::-webkit-inner-spin-button, +input[type=number]::-webkit-outer-spin-button { + height: auto +} + +input[type=search] { + -webkit-appearance: textfield; + box-sizing: content-box +} + +input[type=search]::-webkit-search-cancel-button, +input[type=search]::-webkit-search-decoration { + -webkit-appearance: none +} + +fieldset { + border: 1px solid silver; + margin: 0 2px; + padding: .35em .625em .75em +} + +legend { + border: 0; + padding: 0 +} + +textarea { + overflow: auto +} + +optgroup { + font-weight: 700 +} + +table { + border-collapse: collapse; + border-spacing: 0 +} + +td, +th { + padding: 0 +} + +body, +html { + font-family: 'Open Sans', Helvetica Neue, Helvetica, Arial, Microsoft Yahei, 微软雅黑, STXihei, 华文细黑, sans-serif; + font-size: 16px; +} + +.content h1, +.content h2, +.content h3, +.content h4, +.content h5, +.content h6 { + font-family: 'Open Sans', Helvetica Neue, Helvetica, Arial, Microsoft Yahei, 微软雅黑, STXihei, 华文细黑, sans-serif; +} + +.content h1, +.content h2, +.content h3, +.content h4, +.content h5, +.content h6 { + font-weight: 700 +} + +.content code, +.content pre { + font-family: Consolas, Menlo, Monaco, Lucida Console, Liberation Mono, DejaVu Sans Mono, Bitstream Vera Sans Mono, Courier New, monospace, serif; + font-size: 14px; + line-height: 1.5 +} + +.content code { + word-break: break-all; + word-break: break-word; + -webkit-hyphens: auto; + -ms-hyphens: auto; + hyphens: auto +} + +.content aside.notice:before, +.content aside.success:before, +.content aside.warning:before, +.tocify-wrapper>.search:before { + font-family: 'Open Sans', sans-serif; + speak: none; + font-style: normal; + font-variant: normal; + text-transform: none; + line-height: 1 +} + +.content aside.warning:before { + content: "✋" +} + +.content aside.notice:before { + content: "ℹ" +} + +.content aside.success:before { + content: "✅" +} + +.tocify-wrapper>.search:before { + content: "🔎" +} + +.highlight .c, +.highlight .c1, +.highlight .cm, +.highlight .cs { + color: #909090 +} + +.highlight, +.highlight .w { + background-color: #292929 +} + +.hljs { + display: block; + overflow-x: auto; + padding: .5em; + background: #23241f +} + +.hljs, +.hljs-subst, +.hljs-tag { + color: #f8f8f2 +} + +.hljs-emphasis, +.hljs-strong { + color: #a8a8a2 +} + +.hljs-bullet, +.hljs-link, +.hljs-literal, +.hljs-number, +.hljs-quote, +.hljs-regexp { + color: #ae81ff +} + +.hljs-code, +.hljs-section, +.hljs-selector-class, +.hljs-title { + color: #a6e22e +} + +.hljs-strong { + font-weight: 700 +} + +.hljs-emphasis { + font-style: italic +} + +.hljs-attr, +.hljs-keyword, +.hljs-name, +.hljs-selector-tag { + color: #f92672 +} + +.hljs-attribute, +.hljs-symbol { + color: #66d9ef +} + +.hljs-class .hljs-title, +.hljs-params { + color: #f8f8f2 +} + +.hljs-addition, +.hljs-built_in, +.hljs-builtin-name, +.hljs-selector-attr, +.hljs-selector-id, +.hljs-selector-pseudo, +.hljs-string, +.hljs-template-variable, +.hljs-type, +.hljs-variable { + color: #e6db74 +} + +.hljs-comment, +.hljs-deletion, +.hljs-meta { + color: #75715e +} + +body, +html { + color: #333; + padding: 0; + margin: 0; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + background-color: whitesmoke; + height: 100%; + -webkit-text-size-adjust: none +} + +#toc>ul>li>a>span { + float: right; + background-color: #2484ff; + border-radius: 40px; + width: 20px +} + +.tocify-wrapper { + transition: left .3s ease-in-out; + overflow-y: auto; + overflow-x: hidden; + position: fixed; + z-index: 30; + top: 0; + left: 0; + bottom: 0; + width: 230px; + background-color: #393939; + font-size: 13px; + font-weight: 700 +} + +.tocify-wrapper .lang-selector { + display: none +} + +.tocify-wrapper .lang-selector a { + padding-top: .5em; + padding-bottom: .5em +} + +.tocify-wrapper>img { + display: block +} + +.tocify-wrapper>.search { + position: relative +} + +.tocify-wrapper>.search input { + background: #393939; + border-width: 0 0 1px; + border-color: #666; + padding: 6px 0 6px 20px; + box-sizing: border-box; + margin: 10px 15px; + width: 200px; + outline: none; + color: #fff; + border-radius: 0 +} + +.tocify-wrapper>.search:before { + position: absolute; + top: 17px; + left: 15px; + color: #fff +} + +.tocify-wrapper img+.tocify { + margin-top: 20px +} + +.tocify-wrapper .search-results { + margin-top: 0; + box-sizing: border-box; + height: 0; + overflow-y: auto; + overflow-x: hidden; + transition-property: height, margin; + transition-duration: .18s; + transition-timing-function: ease-in-out; + background: linear-gradient(180deg, rgba(0, 0, 0, .2), transparent 8px), linear-gradient(0deg, rgba(0, 0, 0, .2), transparent 8px), linear-gradient(180deg, #000, transparent 1.5px), linear-gradient(0deg, #939393, hsla(0, 0%, 58%, 0) 1.5px), #262626 +} + +.tocify-wrapper .search-results.visible { + height: 30%; + margin-bottom: 1em +} + +.tocify-wrapper .search-results li { + margin: 1em 15px; + line-height: 1 +} + +.tocify-wrapper a { + color: #fff; + text-decoration: none +} + +.tocify-wrapper .search-results a:hover { + text-decoration: underline +} + +.tocify-wrapper .toc-footer li, +.tocify-wrapper .tocify-item>a { + padding: 0 15px; + display: block; + overflow-x: hidden; + white-space: nowrap; + text-overflow: ellipsis +} +.tocify-wrapper .tocify-item.level-3>a { + padding: 0 25px; +} + +.tocify-wrapper li, +.tocify-wrapper ul { + list-style: none; + margin: 0; + padding: 0; + line-height: 28px +} + +.tocify-wrapper li { + color: #fff; + transition-property: background; + transition-timing-function: linear; + transition-duration: .23s +} + +.tocify-wrapper .tocify-focus { + box-shadow: 0 1px 0 #000; + background-color: #2467af; + color: #fff; + font-weight: bold; +} + +.tocify-wrapper .tocify-subheader { + display: none; + background-color: #262626; + font-weight: 500; + background: linear-gradient(180deg, rgba(0, 0, 0, .2), transparent 8px), linear-gradient(0deg, rgba(0, 0, 0, .2), transparent 8px), linear-gradient(180deg, #000, transparent 1.5px), linear-gradient(0deg, #939393, hsla(0, 0%, 58%, 0) 1.5px), #262626 +} + +.tocify-wrapper .jets-searching .tocify-subheader, +.tocify-wrapper .tocify-subheader.visible { + display: block; +} + +.tocify-wrapper .tocify-subheader .tocify-item>a { + padding-left: 25px; + font-size: 12px +} + +.tocify-wrapper .tocify-subheader .tocify-item.level-3>a { + padding-left: 35px; +} + +.tocify-wrapper .tocify-subheader>li:last-child { + box-shadow: none +} + +.tocify-wrapper .toc-footer { + padding: 1em 0; + margin-top: 1em; + border-top: 1px dashed #666 +} + +.tocify-wrapper .toc-footer a, +.tocify-wrapper .toc-footer li { + color: #fff; + text-decoration: none +} + +.tocify-wrapper .toc-footer a:hover { + text-decoration: underline +} + +.tocify-wrapper .toc-footer li { + font-size: .8em; + line-height: 1.7; + text-decoration: none +} + +#nav-button { + padding: 0 1.5em 5em 0; + display: none; + position: fixed; + top: 0; + left: 0; + z-index: 100; + color: #000; + text-decoration: none; + font-weight: 700; + opacity: .7; + line-height: 16px; + transition: left .3s ease-in-out +} + +#nav-button span { + display: block; + padding: 6px; + background-color: rgba(234, 242, 246, .7); + -webkit-transform-origin: 0 0; + transform-origin: 0 0; + -webkit-transform: rotate(-90deg) translate(-100%); + transform: rotate(-90deg) translate(-100%); + border-radius: 0 0 0 5px +} + +#nav-button img { + height: 16px; + vertical-align: bottom +} + +#nav-button:hover { + opacity: 1 +} + +#nav-button.open { + left: 230px +} + +.page-wrapper { + margin-left: 230px; + position: relative; + z-index: 10; + background-color: #eaf2f6; + min-height: 100%; + padding-bottom: 1px +} + +.page-wrapper .dark-box { + width: 50%; + background-color: #393939; + position: absolute; + right: 0; + top: 0; + bottom: 0 +} + +.page-wrapper .lang-selector { + position: fixed; + z-index: 50; + border-bottom: 5px solid #393939 +} + +.lang-selector { + background-color: #222; + width: 100%; + font-weight: 700 +} + +.lang-selector button { + display: block; + float: left; + color: #fff; + text-decoration: none; + padding: 0 10px; + line-height: 30px; + outline: 0; + background: transparent; + border: none; +} + +.lang-selector button:active, +.lang-selector button:hover, +.lang-selector button:focus { + background-color: #111; + color: #fff +} + +.lang-selector button.active { + background-color: #393939; + color: #fff +} + +.lang-selector:after { + content: ''; + clear: both; + display: block +} + +.content { + position: relative; + z-index: 30 +} + +.content:after { + content: ''; + display: block; + clear: both +} + +.content>aside, +.content>details, +.content>dl, +.content>h1, +.content>h2, +.content>h3, +.content>h4, +.content>h5, +.content>h6, +.content>ol, +.content>p, +.content>table, +.content>ul, +.content>div, +.content>form>aside, +.content>form>details, +.content>form>h1, +.content>form>h2, +.content>form>h3, +.content>form>h4, +.content>form>h5, +.content>form>h6, +.content>form>p, +.content>form>table, +.content>form>ul, +.content>form>div { + margin-right: 50%; + padding: 0 28px; + box-sizing: border-box; + display: block; + text-shadow: 0 1px 0 #fff +} + +.content>ol, +.content>ul { + padding-left: 43px +} + +.content>div, +.content>h1, +.content>h2 { + clear: both +} + +.content h1 { + font-size: 30px; + padding-top: .5em; + padding-bottom: .5em; + border-bottom: 1px solid #ccc; + margin-bottom: 21px; + margin-top: 2em; + border-top: 1px solid #ddd; + background-image: linear-gradient(180deg, #fff, #f9f9f9) +} + +.content div:first-child+h1, +.content h1:first-child { + border-top-width: 0; + margin-top: 0 +} + +.content h2 { + font-size: 20px; + margin-top: 4em; + margin-bottom: 0; + border-top: 1px solid #ccc; + padding-top: 1.2em; + padding-bottom: 1.2em; + background-image: linear-gradient(180deg, hsla(0, 0%, 100%, .4), hsla(0, 0%, 100%, 0)) +} + +.content h1+div+h2, +.content h1+h2 { + margin-top: -21px; + border-top: none +} + +.content h3, +.content h4, +.content h5, +.content h6 { + font-size: 15px; + margin-top: 2.5em; + margin-bottom: .8em +} + +.content h4, +.content h5, +.content h6 { + font-size: 10px +} + +.content hr { + margin: 2em 0; + border-top: 2px solid #393939; + border-bottom: 2px solid #eaf2f6 +} + +.content table { + margin-bottom: 1em; + overflow: auto +} + +.content table td, +.content table th { + text-align: left; + vertical-align: top; + line-height: 1.6 +} + +.content table th { + padding: 5px 10px; + border-bottom: 1px solid #ccc; + vertical-align: bottom +} + +.content table td { + padding: 10px +} + +.content table tr:last-child { + border-bottom: 1px solid #ccc +} + +.content table tr:nth-child(odd)>td { + background-color: #ebf3f6 +} + +.content table tr:nth-child(even)>td { + background-color: #ebf2f6 +} + +.content dt { + font-weight: 700 +} + +.content dd { + margin-left: 15px +} + +.content dd, +.content dt, +.content li, +.content p { + line-height: 1.6; + margin-top: 0 +} + +.content img { + max-width: 100% +} + +.content code { + padding: 3px; + border-radius: 3px +} + +.content pre>code { + background-color: transparent; + padding: 0 +} + +.content aside { + padding-top: 1em; + padding-bottom: 1em; + margin-top: 1.5em; + margin-bottom: 1.5em; + background: #292929; + line-height: 1.6; + color: #c8c8c8; + text-shadow: none; +} + +.content aside.info { + background: #8fbcd4; + text-shadow: 0 1px 0 #a0c6da; + color: initial; +} + +.content aside.warning { + background-color: #c97a7e; + text-shadow: 0 1px 0 #d18e91; + color: initial; +} + +.content aside.success { + background-color: #6ac174; + text-shadow: 0 1px 0 #80ca89; + color: initial; +} + +.content aside:before { + vertical-align: middle; + padding-right: .5em; + font-size: 14px +} + +.content .search-highlight { + padding: 2px; + margin: -2px; + border-radius: 4px; + border: 1px solid #f7e633; + text-shadow: 1px 1px 0 #666; + background: linear-gradient(to top left, #f7e633, #f1d32f) +} + +.content blockquote, +.content pre { + background-color: #292929; + color: #fff; + padding: 1.5em 28px; + margin: 0; + width: 50%; + float: right; + clear: right; + box-sizing: border-box; + text-shadow: 0 1px 2px rgba(0, 0, 0, .4) +} + +.content blockquote pre.sf-dump, +.content pre pre.sf-dump { + width: 100%; +} + +.content .annotation { + background-color: #292929; + color: #fff; + padding: 0 28px; + margin: 0; + width: 50%; + float: right; + clear: right; + box-sizing: border-box; + text-shadow: 0 1px 2px rgba(0, 0, 0, .4) +} + +.content .annotation pre { + padding: 0 0; + width: 100%; + float: none; +} + +.content blockquote>p, +.content pre>p { + margin: 0 +} + +.content blockquote a, +.content pre a { + color: #fff; + text-decoration: none; + border-bottom: 1px dashed #ccc +} + +.content blockquote>p { + background-color: #1c1c1c; + border-radius: 5px; + padding: 13px; + color: #ccc; + border-top: 1px solid #000; + border-bottom: 1px solid #404040 +} + +@media (max-width:930px) { + .tocify-wrapper { + left: -230px + } + .tocify-wrapper.open { + left: 0 + } + .page-wrapper { + margin-left: 0 + } + #nav-button { + display: block + } + .tocify-wrapper .tocify-item>a { + padding-top: .3em; + padding-bottom: .3em + } +} + +@media (max-width:700px) { + .dark-box { + display: none + } + .tocify-wrapper .lang-selector { + display: block + } + .page-wrapper .lang-selector { + display: none + } + .content>aside, + .content>details, + .content>dl, + .content>h1, + .content>h2, + .content>h3, + .content>h4, + .content>h5, + .content>h6, + .content>ol, + .content>p, + .content>table, + .content>ul, + .content>div, + .content>form>aside, + .content>form>details, + .content>form>h1, + .content>form>h2, + .content>form>h3, + .content>form>h4, + .content>form>h5, + .content>form>h6, + .content>form>p, + .content>form>table, + .content>form>ul, + .content>form>div { + margin-right: 0; + } + .content blockquote, + .content pre { + float: none; + width: auto + } + .content .annotation { + float: none; + width: auto + } +} + +.badge { + padding: 1px 9px 2px; + white-space: nowrap; + -webkit-border-radius: 9px; + -moz-border-radius: 9px; + border-radius: 9px; + color: #ffffff; + text-shadow: none !important; + font-weight: bold; +} + +.badge.badge-darkred { + background-color: darkred; +} + +.badge.badge-red { + background-color: red; +} + +.badge.badge-blue { + background-color: blue; +} + +.badge.badge-darkblue { + background-color: darkblue; +} + +.badge.badge-green { + background-color: green; +} + +.badge.badge-darkgreen { + background-color: darkgreen; +} + +.badge.badge-purple { + background-color: purple; +} + +.badge.badge-black { + background-color: black; +} + +.badge.badge-grey { + background-color: grey; +} + +.fancy-heading-panel { + background-color: lightgrey; + border-radius: 5px; + padding-left: 5px !important; + padding-top: 5px !important; + padding-bottom: 5px !important; + margin-left: 25px; + margin-right: 10px; + width: 47%; +} + +@media screen and (max-width: 700px) { + .fancy-heading-panel { + width: 95%; + } + +} + +button { + border: none; +} + +* { + /* Foreground, Background */ + scrollbar-color: #3c4c67 transparent; +} +*::-webkit-scrollbar { /* Background */ + width: 10px; + height: 10px; + background: transparent; +} + +*::-webkit-scrollbar-thumb { /* Foreground */ + background: #626161; +} diff --git a/Backend/public/docs/images/navbar.png b/Backend/public/docs/images/navbar.png new file mode 100644 index 0000000..df38e90 Binary files /dev/null and b/Backend/public/docs/images/navbar.png differ diff --git a/Backend/public/docs/index.html b/Backend/public/docs/index.html new file mode 100644 index 0000000..3a6f038 --- /dev/null +++ b/Backend/public/docs/index.html @@ -0,0 +1,7582 @@ + + + + + + + Kebab Api + + + + + + + + + + + + + + + + + + + + + + + + + + + MENU + navbar-image + + +
+ +
+ + + +
+ + + +
+ + + + + + + + +
+ + + + +
+ +
+
+
+

Introduction

+ +

This documentation aims to provide all the information you need to work with our API.

+ + +

Authenticating requests

+

To authenticate requests, include an Authorization header with the value "Bearer {YOUR_AUTH_KEY}".

+

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

+

You can retrieve your token by visiting your dashboard and clicking Generate API token.

+ +

Auth

+ +

*

+ +

POST api/register

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/register" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"name\": \"aspernatur\",
+    \"email\": \"jamison69@example.org\",
+    \"password\": \"ut\"
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/register"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "name": "aspernatur",
+    "email": "jamison69@example.org",
+    "password": "ut"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/register';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'name' => 'aspernatur',
+            'email' => 'jamison69@example.org',
+            'password' => 'ut',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/register +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Body Parameters

+
+ name   +string  +   + +
+

Example: aspernatur

+
+
+ email   +string  +   + +
+

Must be a valid email address. Example: jamison69@example.org

+
+
+ password   +string  +   + +
+

Example: ut

+
+
+ +

POST api/login

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/login" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"email\": \"kamryn22@example.com\",
+    \"password\": \"at\"
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/login"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "email": "kamryn22@example.com",
+    "password": "at"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/login';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'email' => 'kamryn22@example.com',
+            'password' => 'at',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/login +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Body Parameters

+
+ email   +string  +   + +
+

Must be a valid email address. The email of an existing record in the users table. Example: kamryn22@example.com

+
+
+ password   +string  +   + +
+

Example: at

+
+
+ +

POST api/logout

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/logout" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/logout"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/logout';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/logout +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Endpoints

+ + + +

GET api/documentation

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/documentation" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/documentation"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/documentation';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + +
+

Example response (404):

+
+
+ + Show headers + +
cache-control: no-cache, private
+content-type: application/json
+vary: Origin
+ 
+
+{
+    "message": "The route api/documentation could not be found."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/documentation +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Kebab

+ +

*

+ +

GET api/kebabs

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + +
+

Example response (404):

+
+
+ + Show headers + +
cache-control: no-cache, private
+content-type: application/json
+vary: Origin
+ 
+
+{
+    "message": "The route api/kebabs could not be found."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/kebabs +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

POST api/kebabs/{kebabId}/comments

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/unde/comments" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"id_user\": 7,
+    \"comment\": \"itaque\"
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/unde/comments"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "id_user": 7,
+    "comment": "itaque"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/unde/comments';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'id_user' => 7,
+            'comment' => 'itaque',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/kebabs/{kebabId}/comments +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: unde

+
+

Body Parameters

+
+ id_user   +integer  +   + +
+

Example: 7

+
+
+ comment   +string  +   + +
+

Example: itaque

+
+
+ +

DELETE api/kebabs/{kebabId}/comments

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/voluptatem/comments" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"id_user\": 18,
+    \"comment\": \"deserunt\"
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/voluptatem/comments"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "id_user": 18,
+    "comment": "deserunt"
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/voluptatem/comments';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'id_user' => 18,
+            'comment' => 'deserunt',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/kebabs/{kebabId}/comments +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: voluptatem

+
+

Body Parameters

+
+ id_user   +integer  +   + +
+

Example: 18

+
+
+ comment   +string  +   + +
+

Example: deserunt

+
+
+ +

POST api/addKebab

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/addKebab" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"logo\": \"ut\",
+    \"name\": \"perferendis\",
+    \"address\": \"vel\",
+    \"coordinates\": \"nisi\",
+    \"sauces\": \"at\",
+    \"meats\": \"ullam\",
+    \"status\": \"perferendis\",
+    \"opening_hours\": \"perspiciatis\",
+    \"opening_year\": \"deleniti\",
+    \"closing_year\": \"accusantium\",
+    \"is_crafted\": \"placeat\",
+    \"is_premises\": \"minus\",
+    \"is_chainstore\": \"aut\",
+    \"ordering_options\": \"voluptas\"
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/addKebab"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "logo": "ut",
+    "name": "perferendis",
+    "address": "vel",
+    "coordinates": "nisi",
+    "sauces": "at",
+    "meats": "ullam",
+    "status": "perferendis",
+    "opening_hours": "perspiciatis",
+    "opening_year": "deleniti",
+    "closing_year": "accusantium",
+    "is_crafted": "placeat",
+    "is_premises": "minus",
+    "is_chainstore": "aut",
+    "ordering_options": "voluptas"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/addKebab';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'logo' => 'ut',
+            'name' => 'perferendis',
+            'address' => 'vel',
+            'coordinates' => 'nisi',
+            'sauces' => 'at',
+            'meats' => 'ullam',
+            'status' => 'perferendis',
+            'opening_hours' => 'perspiciatis',
+            'opening_year' => 'deleniti',
+            'closing_year' => 'accusantium',
+            'is_crafted' => 'placeat',
+            'is_premises' => 'minus',
+            'is_chainstore' => 'aut',
+            'ordering_options' => 'voluptas',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/addKebab +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Body Parameters

+
+ logo   +string  +   + +
+

Example: ut

+
+
+ name   +string  +   + +
+

Example: perferendis

+
+
+ address   +string  +   + +
+

Example: vel

+
+
+ coordinates   +string  +   + +
+

Example: nisi

+
+
+ sauces   +string  +   + +
+

Example: at

+
+
+ meats   +string  +   + +
+

Example: ullam

+
+
+ status   +string  +   + +
+

Example: perferendis

+
+
+ opening_hours   +string  +   + +
+

Example: perspiciatis

+
+
+ opening_year   +string  +   + +
+

Example: deleniti

+
+
+ closing_year   +string  +   + +
+

Example: accusantium

+
+
+ is_crafted   +string  +   + +
+

Example: placeat

+
+
+ is_premises   +string  +   + +
+

Example: minus

+
+
+ is_chainstore   +string  +   + +
+

Example: aut

+
+
+ ordering_options   +string  +   + +
+

Example: voluptas

+
+
+ +

DELETE api/kebabs/{id}

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/adipisci" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/adipisci"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/adipisci';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/kebabs/{id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the kebab. Example: adipisci

+
+
+ + + +

+

+ + + + + + + + + + +

PUT api/kebabs/{kebabId}/name

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/consequuntur/name" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"name\": \"quidem\"
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/consequuntur/name"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "name": "quidem"
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/consequuntur/name';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'name' => 'quidem',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/kebabs/{kebabId}/name +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: consequuntur

+
+

Body Parameters

+
+ name   +string  +   + +
+

Example: quidem

+
+
+ +

PUT api/kebabs/{kebabId}/address

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/ab/address" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"address\": \"huxswcermiukedcsywurinn\"
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/ab/address"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "address": "huxswcermiukedcsywurinn"
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/ab/address';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'address' => 'huxswcermiukedcsywurinn',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/kebabs/{kebabId}/address +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: ab

+
+

Body Parameters

+
+ address   +string  +   + +
+

Must not be greater than 255 characters. Example: huxswcermiukedcsywurinn

+
+
+ +

PUT api/kebabs/{kebabId}/coordinates

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/eaque/coordinates" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"coordinates\": []
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/eaque/coordinates"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "coordinates": []
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/eaque/coordinates';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'coordinates' => [],
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/kebabs/{kebabId}/coordinates +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: eaque

+
+

Body Parameters

+
+ coordinates   +object  +   + +
+ +
+
+ +

POST api/kebabs/{kebabId}/sauce

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/laboriosam/sauce" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"sauce\": \"nostrum\"
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/laboriosam/sauce"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "sauce": "nostrum"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/laboriosam/sauce';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'sauce' => 'nostrum',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/kebabs/{kebabId}/sauce +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: laboriosam

+
+

Body Parameters

+
+ sauce   +string  +   + +
+

Example: nostrum

+
+
+ +

DELETE api/kebabs/{kebabId}/sauce

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/necessitatibus/sauce" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"sauce\": \"dolore\"
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/necessitatibus/sauce"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "sauce": "dolore"
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/necessitatibus/sauce';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'sauce' => 'dolore',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/kebabs/{kebabId}/sauce +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: necessitatibus

+
+

Body Parameters

+
+ sauce   +string  +   + +
+

Example: dolore

+
+
+ +

POST api/kebabs/{kebabId}/meat

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/facere/meat" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"meat\": \"voluptatibus\"
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/facere/meat"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "meat": "voluptatibus"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/facere/meat';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'meat' => 'voluptatibus',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/kebabs/{kebabId}/meat +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: facere

+
+

Body Parameters

+
+ meat   +string  +   + +
+

Example: voluptatibus

+
+
+ +

DELETE api/kebabs/{kebabId}/meat

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/ratione/meat" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"meat\": \"eos\"
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/ratione/meat"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "meat": "eos"
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/ratione/meat';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'meat' => 'eos',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/kebabs/{kebabId}/meat +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: ratione

+
+

Body Parameters

+
+ meat   +string  +   + +
+

Example: eos

+
+
+ +

PUT api/kebabs/{kebabId}/status

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/quas/status" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"status\": \"exists\"
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/quas/status"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "status": "exists"
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/quas/status';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'status' => 'exists',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/kebabs/{kebabId}/status +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: quas

+
+

Body Parameters

+
+ status   +string  +   + +
+

Example: exists

+Must be one of: +
  • exists
  • closed
  • planned
+
+
+ +

POST api/kebabs/{kebabId}/opening-hours

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/est/opening-hours" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"day\": \"saturday\",
+    \"hours\": \"quis\"
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/est/opening-hours"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "day": "saturday",
+    "hours": "quis"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/est/opening-hours';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'day' => 'saturday',
+            'hours' => 'quis',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/kebabs/{kebabId}/opening-hours +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: est

+
+

Body Parameters

+
+ day   +string  +   + +
+

Example: saturday

+Must be one of: +
  • monday
  • tuesday
  • wednesday
  • thursday
  • friday
  • saturday
  • sunday
+
+
+ hours   +string  +   + +
+

Example: quis

+
+
+ +

DELETE api/kebabs/{kebabId}/opening-hours

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/omnis/opening-hours" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"day\": \"monday\"
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/omnis/opening-hours"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "day": "monday"
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/omnis/opening-hours';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'day' => 'monday',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/kebabs/{kebabId}/opening-hours +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: omnis

+
+

Body Parameters

+
+ day   +string  +   + +
+

Example: monday

+Must be one of: +
  • monday
  • tuesday
  • wednesday
  • thursday
  • friday
  • saturday
  • sunday
+
+
+ +

PUT api/kebabs/{kebabId}/opening-hours

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/qui/opening-hours" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"day\": \"sunday\",
+    \"hours\": \"explicabo\"
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/qui/opening-hours"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "day": "sunday",
+    "hours": "explicabo"
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/qui/opening-hours';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'day' => 'sunday',
+            'hours' => 'explicabo',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/kebabs/{kebabId}/opening-hours +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: qui

+
+

Body Parameters

+
+ day   +string  +   + +
+

Example: sunday

+Must be one of: +
  • monday
  • tuesday
  • wednesday
  • thursday
  • friday
  • saturday
  • sunday
+
+
+ hours   +string  +   + +
+

Example: explicabo

+
+
+ +

PUT api/kebabs/{kebabId}/opening-year

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/recusandae/opening-year" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"opening_year\": \"6167\"
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/recusandae/opening-year"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "opening_year": "6167"
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/recusandae/opening-year';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'opening_year' => '6167',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/kebabs/{kebabId}/opening-year +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: recusandae

+
+

Body Parameters

+
+ opening_year   +string  +optional   + +
+

Must be 4 digits. Example: 6167

+
+
+ +

PUT api/kebabs/{kebabId}/closing-year

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/voluptatem/closing-year" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"closing_year\": \"2621\"
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/voluptatem/closing-year"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "closing_year": "2621"
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/voluptatem/closing-year';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'closing_year' => '2621',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/kebabs/{kebabId}/closing-year +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: voluptatem

+
+

Body Parameters

+
+ closing_year   +string  +optional   + +
+

Must be 4 digits. Example: 2621

+
+
+ +

PUT api/kebabs/{kebabId}/is-crafted

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/vel/is-crafted" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"is_crafted\": true
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/vel/is-crafted"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "is_crafted": true
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/vel/is-crafted';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'is_crafted' => true,
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/kebabs/{kebabId}/is-crafted +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: vel

+
+

Body Parameters

+
+ is_crafted   +boolean  +optional   + + +
+

Example: true

+
+
+ +

PUT api/kebabs/{kebabId}/is-premises

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/laudantium/is-premises" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"is_premises\": false
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/laudantium/is-premises"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "is_premises": false
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/laudantium/is-premises';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'is_premises' => false,
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/kebabs/{kebabId}/is-premises +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: laudantium

+
+

Body Parameters

+
+ is_premises   +boolean  +optional   + + +
+

Example: false

+
+
+ +

PUT api/kebabs/{kebabId}/is-chainstore

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/ea/is-chainstore" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"is_chainstore\": false
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/ea/is-chainstore"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "is_chainstore": false
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/ea/is-chainstore';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'is_chainstore' => false,
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/kebabs/{kebabId}/is-chainstore +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: ea

+
+

Body Parameters

+
+ is_chainstore   +boolean  +optional   + + +
+

Example: false

+
+
+ +

POST api/kebabs/{kebabId}/ordering-options

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/reprehenderit/ordering-options" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"new_option\": \"nesciunt\"
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/reprehenderit/ordering-options"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "new_option": "nesciunt"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/reprehenderit/ordering-options';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'new_option' => 'nesciunt',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/kebabs/{kebabId}/ordering-options +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: reprehenderit

+
+

Body Parameters

+
+ new_option   +string  +   + +
+

Example: nesciunt

+
+
+ +

DELETE api/kebabs/{kebabId}/ordering-options

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/assumenda/ordering-options" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"option_to_remove\": \"est\"
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/assumenda/ordering-options"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "option_to_remove": "est"
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/assumenda/ordering-options';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'option_to_remove' => 'est',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/kebabs/{kebabId}/ordering-options +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: assumenda

+
+

Body Parameters

+
+ option_to_remove   +string  +   + +
+

Example: est

+
+
+ +

POST api/kebabs/{kebabId}/pages

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/consectetur/pages" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"new_page\": \"explicabo\"
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/consectetur/pages"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "new_page": "explicabo"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/consectetur/pages';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'new_page' => 'explicabo',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/kebabs/{kebabId}/pages +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: consectetur

+
+

Body Parameters

+
+ new_page   +string  +   + +
+

Example: explicabo

+
+
+ +

DELETE api/kebabs/{kebabId}/pages

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/ad/pages" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"page_to_remove\": \"corporis\"
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/ad/pages"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "page_to_remove": "corporis"
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/kebabs/ad/pages';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'page_to_remove' => 'corporis',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/kebabs/{kebabId}/pages +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ kebabId   +string  +   + +
+

Example: ad

+
+

Body Parameters

+
+ page_to_remove   +string  +   + +
+

Example: corporis

+
+
+ +

KebabScraper

+ +

*

+ +

GET api/scrape-reviews

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/scrape-reviews" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/scrape-reviews"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/scrape-reviews';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + +
+

Example response (404):

+
+
+ + Show headers + +
cache-control: no-cache, private
+content-type: application/json
+vary: Origin
+ 
+
+{
+    "message": "The route api/scrape-reviews could not be found."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/scrape-reviews +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

Suggestions

+ +

*

+ +

POST api/suggestions

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/suggestions" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"user\": \"yhyrnmamtgxprtslmownvg\",
+    \"contents\": \"vmtnljhahaj\"
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/suggestions"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "user": "yhyrnmamtgxprtslmownvg",
+    "contents": "vmtnljhahaj"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/suggestions';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'user' => 'yhyrnmamtgxprtslmownvg',
+            'contents' => 'vmtnljhahaj',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/suggestions +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Body Parameters

+
+ user   +string  +   + +
+

Must not be greater than 255 characters. Example: yhyrnmamtgxprtslmownvg

+
+
+ contents   +string  +   + +
+

Must not be greater than 255 characters. Example: vmtnljhahaj

+
+
+ +

GET api/suggestions

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/suggestions" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/suggestions"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/suggestions';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + +
+

Example response (404):

+
+
+ + Show headers + +
cache-control: no-cache, private
+content-type: application/json
+vary: Origin
+ 
+
+{
+    "message": "The route api/suggestions could not be found."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/suggestions +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

DELETE api/suggestions/{id}

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/suggestions/magni" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/suggestions/magni"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/suggestions/magni';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/suggestions/{id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the suggestion. Example: magni

+
+
+ +

Users

+ +

*

+ +

GET api/getCurrentUser

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/getCurrentUser" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/getCurrentUser"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/getCurrentUser';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + +
+

Example response (404):

+
+
+ + Show headers + +
cache-control: no-cache, private
+content-type: application/json
+vary: Origin
+ 
+
+{
+    "message": "The route api/getCurrentUser could not be found."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/getCurrentUser +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

GET api/fav/{id}

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/fav/veritatis" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/fav/veritatis"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/fav/veritatis';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + +
+

Example response (404):

+
+
+ + Show headers + +
cache-control: no-cache, private
+content-type: application/json
+vary: Origin
+ 
+
+{
+    "message": "The route api/fav/veritatis could not be found."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/fav/{id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the fav. Example: veritatis

+
+
+ +

POST api/addfav

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/addfav" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"user_id\": \"eum\",
+    \"kebab_id\": \"quia\"
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/addfav"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "user_id": "eum",
+    "kebab_id": "quia"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/addfav';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'user_id' => 'eum',
+            'kebab_id' => 'quia',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/addfav +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Body Parameters

+
+ user_id   +string  +   + +
+

Example: eum

+
+
+ kebab_id   +string  +   + +
+

Example: quia

+
+
+ +

POST api/remfav

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/remfav" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"user_id\": \"quas\",
+    \"kebab_id\": \"quia\"
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/remfav"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "user_id": "quas",
+    "kebab_id": "quia"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/remfav';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'user_id' => 'quas',
+            'kebab_id' => 'quia',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/remfav +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Body Parameters

+
+ user_id   +string  +   + +
+

Example: quas

+
+
+ kebab_id   +string  +   + +
+

Example: quia

+
+
+ +

PUT api/changeName/{id}

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/changeName/facilis" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"newName\": \"nobis\"
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/changeName/facilis"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "newName": "nobis"
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/changeName/facilis';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'newName' => 'nobis',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/changeName/{id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the changeName. Example: facilis

+
+

Body Parameters

+
+ newName   +string  +   + +
+

Example: nobis

+
+
+ +

PUT api/changePassword/{id}

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/changePassword/laborum" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"newPassword\": \"quas\",
+    \"confirmPassword\": \"rerum\"
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/changePassword/laborum"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "newPassword": "quas",
+    "confirmPassword": "rerum"
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/changePassword/laborum';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'newPassword' => 'quas',
+            'confirmPassword' => 'rerum',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/changePassword/{id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the changePassword. Example: laborum

+
+

Body Parameters

+
+ newPassword   +string  +   + +
+

Example: quas

+
+
+ confirmPassword   +string  +   + +
+

Example: rerum

+
+
+ +

PUT api/changeEmail/{id}

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/changeEmail/commodi" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"newEmail\": \"shanie84@example.org\"
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/changeEmail/commodi"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "newEmail": "shanie84@example.org"
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/changeEmail/commodi';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'newEmail' => 'shanie84@example.org',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/changeEmail/{id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the changeEmail. Example: commodi

+
+

Body Parameters

+
+ newEmail   +string  +   + +
+

Must be a valid email address. Example: shanie84@example.org

+
+
+ +

PUT api/changeUserRole/{id}

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request PUT \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/changeUserRole/atque" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"isAdmin\": false
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/changeUserRole/atque"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "isAdmin": false
+};
+
+fetch(url, {
+    method: "PUT",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/changeUserRole/atque';
+$response = $client->put(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'isAdmin' => false,
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ PUT + api/changeUserRole/{id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the changeUserRole. Example: atque

+
+

Body Parameters

+
+ isAdmin   +boolean  +   + + +
+

Example: false

+
+
+ +

DELETE api/deleteUser/{id}

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request DELETE \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/deleteUser/ut" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/deleteUser/ut"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "DELETE",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/deleteUser/ut';
+$response = $client->delete(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ DELETE + api/deleteUser/{id} +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

URL Parameters

+
+ id   +string  +   + +
+

The ID of the deleteUser. Example: ut

+
+
+ +

GET api/getAllUsers

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request GET \
+    --get "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/getAllUsers" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json"
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/getAllUsers"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+fetch(url, {
+    method: "GET",
+    headers,
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/getAllUsers';
+$response = $client->get(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + +
+

Example response (404):

+
+
+ + Show headers + +
cache-control: no-cache, private
+content-type: application/json
+vary: Origin
+ 
+
+{
+    "message": "The route api/getAllUsers could not be found."
+}
+ 
+
+ + +
+

+ Request    + +    + +

+

+ GET + api/getAllUsers +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+
+ +

POST api/addNewUser

+ +

+

+ + + + +
Example request:
+ + +
+
curl --request POST \
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/addNewUser" \
+    --header "Content-Type: application/json" \
+    --header "Accept: application/json" \
+    --data "{
+    \"name\": \"ut\",
+    \"email\": \"moconnell@example.com\",
+    \"password\": \"est\"
+}"
+
+ + +
+
const url = new URL(
+    "https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/addNewUser"
+);
+
+const headers = {
+    "Content-Type": "application/json",
+    "Accept": "application/json",
+};
+
+let body = {
+    "name": "ut",
+    "email": "moconnell@example.com",
+    "password": "est"
+};
+
+fetch(url, {
+    method: "POST",
+    headers,
+    body: JSON.stringify(body),
+}).then(response => response.json());
+ + +
+
$client = new \GuzzleHttp\Client();
+$url = 'https://sponge-climbing-adder.ngrok-free.app/api/documentation/api/addNewUser';
+$response = $client->post(
+    $url,
+    [
+        'headers' => [
+            'Content-Type' => 'application/json',
+            'Accept' => 'application/json',
+        ],
+        'json' => [
+            'name' => 'ut',
+            'email' => 'moconnell@example.com',
+            'password' => 'est',
+        ],
+    ]
+);
+$body = $response->getBody();
+print_r(json_decode((string) $body));
+ +
+ + + + + +
+

+ Request    + +    + +

+

+ POST + api/addNewUser +

+

Headers

+
+ Content-Type   +  +   + +
+

Example: application/json

+
+
+ Accept   +  +   + +
+

Example: application/json

+
+

Body Parameters

+
+ name   +string  +   + +
+

Example: ut

+
+
+ email   +string  +   + +
+

Must be a valid email address. Example: moconnell@example.com

+
+
+ password   +string  +   + +
+

Example: est

+
+
+ + + + +
+
+
+ + + +
+
+
+ + diff --git a/Backend/public/docs/js/theme-default-4.39.0.js b/Backend/public/docs/js/theme-default-4.39.0.js new file mode 100644 index 0000000..31c8451 --- /dev/null +++ b/Backend/public/docs/js/theme-default-4.39.0.js @@ -0,0 +1,149 @@ +document.addEventListener('DOMContentLoaded', function() { + const updateHash = function (id) { + window.location.hash = `#${id}`; + }; + + const navButton = document.getElementById('nav-button'); + const menuWrapper = document.querySelector('.tocify-wrapper'); + function toggleSidebar(event) { + event.preventDefault(); + if (menuWrapper) { + menuWrapper.classList.toggle('open'); + navButton.classList.toggle('open'); + } + } + function closeSidebar() { + if (menuWrapper) { + menuWrapper.classList.remove('open'); + navButton.classList.remove('open'); + } + } + navButton.addEventListener('click', toggleSidebar); + + window.hljs.highlightAll(); + + const wrapper = document.getElementById('toc'); + // https://jets.js.org/ + window.jets = new window.Jets({ + // *OR - Selects elements whose values contains at least one part of search substring + searchSelector: '*OR', + searchTag: '#input-search', + contentTag: '#toc li', + didSearch: function(term) { + wrapper.classList.toggle('jets-searching', String(term).length > 0) + }, + // map these accent keys to plain values + diacriticsMap: { + a: 'ÀÁÂÃÄÅàáâãäåĀāąĄ', + c: 'ÇçćĆčČ', + d: 'đĐďĎ', + e: 'ÈÉÊËèéêëěĚĒēęĘ', + i: 'ÌÍÎÏìíîïĪī', + l: 'łŁ', + n: 'ÑñňŇńŃ', + o: 'ÒÓÔÕÕÖØòóôõöøŌō', + r: 'řŘ', + s: 'ŠšśŚ', + t: 'ťŤ', + u: 'ÙÚÛÜùúûüůŮŪū', + y: 'ŸÿýÝ', + z: 'ŽžżŻźŹ' + } + }); + + function hashChange() { + const currentItems = document.querySelectorAll('.tocify-subheader.visible, .tocify-item.tocify-focus'); + Array.from(currentItems).forEach((elem) => { + elem.classList.remove('visible', 'tocify-focus'); + }); + + const currentTag = document.querySelector(`a[href="${window.location.hash}"]`); + if (currentTag) { + const parent = currentTag.closest('.tocify-subheader'); + if (parent) { + parent.classList.add('visible'); + } + + const siblings = currentTag.closest('.tocify-header'); + if (siblings) { + Array.from(siblings.querySelectorAll('.tocify-subheader')).forEach((elem) => { + elem.classList.add('visible'); + }); + } + + currentTag.parentElement.classList.add('tocify-focus'); + + // wait for dom changes to be done + setTimeout(() => { + currentTag.scrollIntoView({ behavior: 'smooth', block: 'center', inline: 'center' }); + // only close the sidebar on level-2 events + if (currentTag.parentElement.classList.contains('level-2')) { + closeSidebar(); + } + }, 1500); + } + } + + let languages = JSON.parse(document.body.getAttribute('data-languages')); + // Support a key => value object where the key is the name, or an array of strings where the value is the name + if (!Array.isArray(languages)) { + languages = Object.values(languages); + } + // if there is no language use the first one + const currentLanguage = window.localStorage.getItem('language') || languages[0]; + const languageStyle = document.getElementById('language-style'); + const langSelector = document.querySelectorAll('.lang-selector button.lang-button'); + + function setActiveLanguage(newLanguage) { + window.localStorage.setItem('language', newLanguage); + if (!languageStyle) { + return; + } + + const newStyle = languages.map((language) => { + return language === newLanguage + // the current one should be visible + ? `body .content .${language}-example pre { display: block; }` + // the inactive one should be hidden + : `body .content .${language}-example pre { display: none; }`; + }).join(`\n`); + + Array.from(langSelector).forEach((elem) => { + elem.classList.toggle('active', elem.getAttribute('data-language-name') === newLanguage); + }); + + const activeHash = window.location.hash.slice(1); + + languageStyle.innerHTML = newStyle; + + setTimeout(() => { + updateHash(activeHash); + }, 200); + } + + setActiveLanguage(currentLanguage); + + Array.from(langSelector).forEach((elem) => { + elem.addEventListener('click', () => { + const newLanguage = elem.getAttribute('data-language-name'); + setActiveLanguage(newLanguage); + }); + }); + + window.addEventListener('hashchange', hashChange, false); + + const divs = document.querySelectorAll('.content h1[id], .content h2[id]'); + + document.addEventListener('scroll', () => { + divs.forEach(item => { + const rect = item.getBoundingClientRect(); + if (rect.top > 0 && rect.top < 150) { + const location = window.location.toString().split('#')[0]; + history.replaceState(null, null, location + '#' + item.id); + hashChange(); + } + }); + }); + + hashChange(); +}); diff --git a/Backend/public/docs/js/tryitout-4.39.0.js b/Backend/public/docs/js/tryitout-4.39.0.js new file mode 100644 index 0000000..2a1d2b8 --- /dev/null +++ b/Backend/public/docs/js/tryitout-4.39.0.js @@ -0,0 +1,289 @@ +window.abortControllers = {}; + +function cacheAuthValue() { + // Whenever the auth header is set for one endpoint, cache it for the others + window.lastAuthValue = ''; + let authInputs = document.querySelectorAll(`.auth-value`) + authInputs.forEach(el => { + el.addEventListener('input', (event) => { + window.lastAuthValue = event.target.value; + authInputs.forEach(otherInput => { + if (otherInput === el) return; + // Don't block the main thread + setTimeout(() => { + otherInput.value = window.lastAuthValue; + }, 0); + }); + }); + }); +} + +window.addEventListener('DOMContentLoaded', cacheAuthValue); + +function getCookie(name) { + if (!document.cookie) { + return null; + } + + const cookies = document.cookie.split(';') + .map(c => c.trim()) + .filter(c => c.startsWith(name + '=')); + + if (cookies.length === 0) { + return null; + } + + return decodeURIComponent(cookies[0].split('=')[1]); +} + +function tryItOut(endpointId) { + document.querySelector(`#btn-tryout-${endpointId}`).hidden = true; + document.querySelector(`#btn-canceltryout-${endpointId}`).hidden = false; + const executeBtn = document.querySelector(`#btn-executetryout-${endpointId}`).hidden = false; + executeBtn.disabled = false; + + // Show all input fields + document.querySelectorAll(`input[data-endpoint=${endpointId}],label[data-endpoint=${endpointId}]`) + .forEach(el => el.style.display = 'block'); + + if (document.querySelector(`#form-${endpointId}`).dataset.authed === "1") { + const authElement = document.querySelector(`#auth-${endpointId}`); + authElement && (authElement.hidden = false); + } + // Expand all nested fields + document.querySelectorAll(`#form-${endpointId} details`) + .forEach(el => el.open = true); +} + +function cancelTryOut(endpointId) { + if (window.abortControllers[endpointId]) { + window.abortControllers[endpointId].abort(); + delete window.abortControllers[endpointId]; + } + + document.querySelector(`#btn-tryout-${endpointId}`).hidden = false; + const executeBtn = document.querySelector(`#btn-executetryout-${endpointId}`); + executeBtn.hidden = true; + executeBtn.textContent = executeBtn.dataset.initialText; + document.querySelector(`#btn-canceltryout-${endpointId}`).hidden = true; + // Hide inputs + document.querySelectorAll(`input[data-endpoint=${endpointId}],label[data-endpoint=${endpointId}]`) + .forEach(el => el.style.display = 'none'); + document.querySelectorAll(`#form-${endpointId} details`) + .forEach(el => el.open = false); + const authElement = document.querySelector(`#auth-${endpointId}`); + authElement && (authElement.hidden = true); + + document.querySelector('#execution-results-' + endpointId).hidden = true; + document.querySelector('#execution-error-' + endpointId).hidden = true; + + // Revert to sample code blocks + document.querySelector('#example-requests-' + endpointId).hidden = false; + document.querySelector('#example-responses-' + endpointId).hidden = false; +} + +function makeAPICall(method, path, body = {}, query = {}, headers = {}, endpointId = null) { + console.log({endpointId, path, body, query, headers}); + + if (!(body instanceof FormData) && typeof body !== "string") { + body = JSON.stringify(body) + } + + const url = new URL(window.tryItOutBaseUrl + '/' + path.replace(/^\//, '')); + + // We need this function because if you try to set an array or object directly to a URLSearchParams object, + // you'll get [object Object] or the array.toString() + function addItemToSearchParamsObject(key, value, searchParams) { + if (Array.isArray(value)) { + value.forEach((v, i) => { + // Append {filters: [first, second]} as filters[0]=first&filters[1]second + addItemToSearchParamsObject(key + '[' + i + ']', v, searchParams); + }) + } else if (typeof value === 'object' && value !== null) { + Object.keys(value).forEach((i) => { + // Append {filters: {name: first}} as filters[name]=first + addItemToSearchParamsObject(key + '[' + i + ']', value[i], searchParams); + }); + } else { + searchParams.append(key, value); + } + } + + Object.keys(query) + .forEach(key => addItemToSearchParamsObject(key, query[key], url.searchParams)); + + window.abortControllers[endpointId] = new AbortController(); + + return fetch(url, { + method, + headers, + body: method === 'GET' ? undefined : body, + signal: window.abortControllers[endpointId].signal, + referrer: window.tryItOutBaseUrl, + mode: 'cors', + credentials: 'same-origin', + }) + .then(response => Promise.all([response.status, response.statusText, response.text(), response.headers])); +} + +function hideCodeSamples(endpointId) { + document.querySelector('#example-requests-' + endpointId).hidden = true; + document.querySelector('#example-responses-' + endpointId).hidden = true; +} + +function handleResponse(endpointId, response, status, headers) { + hideCodeSamples(endpointId); + + // Hide error views + document.querySelector('#execution-error-' + endpointId).hidden = true; + + const responseContentEl = document.querySelector('#execution-response-content-' + endpointId); + + // Check if the response contains Laravel's dd() default dump output + const isLaravelDump = response.includes('Sfdump'); + + // If it's a Laravel dd() dump, use innerHTML to render it safely + if (isLaravelDump) { + responseContentEl.innerHTML = response === '' ? responseContentEl.dataset.emptyResponseText : response; + } else { + // Otherwise, stick to textContent for regular responses + responseContentEl.textContent = response === '' ? responseContentEl.dataset.emptyResponseText : response; + } + + // Prettify it if it's JSON + let isJson = false; + try { + const jsonParsed = JSON.parse(response); + if (jsonParsed !== null) { + isJson = true; + response = JSON.stringify(jsonParsed, null, 4); + responseContentEl.textContent = response; + } + } catch (e) { + + } + + isJson && window.hljs.highlightElement(responseContentEl); + const statusEl = document.querySelector('#execution-response-status-' + endpointId); + statusEl.textContent = ` (${status})`; + document.querySelector('#execution-results-' + endpointId).hidden = false; + statusEl.scrollIntoView({behavior: "smooth", block: "center"}); +} + +function handleError(endpointId, err) { + hideCodeSamples(endpointId); + // Hide response views + document.querySelector('#execution-results-' + endpointId).hidden = true; + + // Show error views + let errorMessage = err.message || err; + const $errorMessageEl = document.querySelector('#execution-error-message-' + endpointId); + $errorMessageEl.textContent = errorMessage + $errorMessageEl.textContent; + const errorEl = document.querySelector('#execution-error-' + endpointId); + errorEl.hidden = false; + errorEl.scrollIntoView({behavior: "smooth", block: "center"}); + +} + +async function executeTryOut(endpointId, form) { + const executeBtn = document.querySelector(`#btn-executetryout-${endpointId}`); + executeBtn.textContent = executeBtn.dataset.loadingText; + executeBtn.disabled = true; + executeBtn.scrollIntoView({behavior: "smooth", block: "center"}); + + let body; + let setter; + if (form.dataset.hasfiles === "1") { + body = new FormData(); + setter = (name, value) => body.append(name, value); + } else if (form.dataset.isarraybody === "1") { + body = []; + setter = (name, value) => _.set(body, name, value); + } else { + body = {}; + setter = (name, value) => _.set(body, name, value); + } + const bodyParameters = form.querySelectorAll('input[data-component=body]'); + bodyParameters.forEach(el => { + let value = el.value; + + if (el.type === 'number' && typeof value === 'string') { + value = parseFloat(value); + } + + if (el.type === 'file' && el.files[0]) { + setter(el.name, el.files[0]); + return; + } + + if (el.type !== 'radio') { + if (value === "" && el.required === false) { + // Don't include empty optional values in the request + return; + } + setter(el.name, value); + return; + } + + if (el.checked) { + value = (value === 'false') ? false : true; + setter(el.name, value); + } + }); + + const query = {}; + const queryParameters = form.querySelectorAll('input[data-component=query]'); + queryParameters.forEach(el => { + if (el.type !== 'radio' || (el.type === 'radio' && el.checked)) { + if (el.value === '') { + // Don't include empty values in the request + return; + } + + _.set(query, el.name, el.value); + } + }); + + let path = form.dataset.path; + const urlParameters = form.querySelectorAll('input[data-component=url]'); + urlParameters.forEach(el => (path = path.replace(new RegExp(`\\{${el.name}\\??}`), el.value))); + + const headers = Object.fromEntries(Array.from(form.querySelectorAll('input[data-component=header]')) + .map(el => [el.name, el.value])); + + // When using FormData, the browser sets the correct content-type + boundary + let method = form.dataset.method; + if (body instanceof FormData) { + delete headers['Content-Type']; + + // When using FormData with PUT or PATCH, use method spoofing so PHP can access the post body + if (['PUT', 'PATCH'].includes(form.dataset.method)) { + method = 'POST'; + setter('_method', form.dataset.method); + } + } + + let preflightPromise = Promise.resolve(); + if (window.useCsrf && window.csrfUrl) { + preflightPromise = makeAPICall('GET', window.csrfUrl).then(() => { + headers['X-XSRF-TOKEN'] = getCookie('XSRF-TOKEN'); + }); + } + + return preflightPromise.then(() => makeAPICall(method, path, body, query, headers, endpointId)) + .then(([responseStatus, statusText, responseContent, responseHeaders]) => { + handleResponse(endpointId, responseContent, responseStatus, responseHeaders) + }) + .catch(err => { + if (err.name === "AbortError") { + console.log("Request cancelled"); + return; + } + console.log("Error while making request: ", err); + handleError(endpointId, err); + }) + .finally(() => { + executeBtn.disabled = false; + executeBtn.textContent = executeBtn.dataset.initialText; + }); +} diff --git a/Backend/public/docs/openapi.yaml b/Backend/public/docs/openapi.yaml new file mode 100644 index 0000000..d62ca3d --- /dev/null +++ b/Backend/public/docs/openapi.yaml @@ -0,0 +1,1416 @@ +openapi: 3.0.3 +info: + title: 'Kebab Api' + description: '' + version: 1.0.0 +servers: + - + url: 'https://sponge-climbing-adder.ngrok-free.app/api/documentation' +paths: + /api/register: + post: + summary: '' + operationId: postApiRegister + description: '' + parameters: [] + responses: { } + tags: + - Auth + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: '' + example: aspernatur + nullable: false + email: + type: string + description: 'Must be a valid email address.' + example: jamison69@example.org + nullable: false + password: + type: string + description: '' + example: ut + nullable: false + required: + - name + - email + - password + security: [] + /api/login: + post: + summary: '' + operationId: postApiLogin + description: '' + parameters: [] + responses: { } + tags: + - Auth + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + email: + type: string + description: 'Must be a valid email address. The email of an existing record in the users table.' + example: kamryn22@example.com + nullable: false + password: + type: string + description: '' + example: at + nullable: false + required: + - email + - password + security: [] + /api/logout: + post: + summary: '' + operationId: postApiLogout + description: '' + parameters: [] + responses: { } + tags: + - Auth + security: [] + /api/documentation: + get: + summary: '' + operationId: getApiDocumentation + description: '' + parameters: [] + responses: + 404: + description: '' + content: + application/json: + schema: + type: object + example: + message: 'The route api/documentation could not be found.' + properties: + message: + type: string + example: 'The route api/documentation could not be found.' + tags: + - Endpoints + security: [] + /api/kebabs: + get: + summary: '' + operationId: getApiKebabs + description: '' + parameters: [] + responses: + 404: + description: '' + content: + application/json: + schema: + type: object + example: + message: 'The route api/kebabs could not be found.' + properties: + message: + type: string + example: 'The route api/kebabs could not be found.' + tags: + - Kebab + security: [] + '/api/kebabs/{kebabId}/comments': + post: + summary: '' + operationId: postApiKebabsKebabIdComments + description: '' + parameters: [] + responses: { } + tags: + - Kebab + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + id_user: + type: integer + description: '' + example: 7 + nullable: false + comment: + type: string + description: '' + example: itaque + nullable: false + required: + - id_user + - comment + security: [] + delete: + summary: '' + operationId: deleteApiKebabsKebabIdComments + description: '' + parameters: [] + responses: { } + tags: + - Kebab + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + id_user: + type: integer + description: '' + example: 18 + nullable: false + comment: + type: string + description: '' + example: deserunt + nullable: false + required: + - id_user + - comment + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: unde + required: true + schema: + type: string + /api/addKebab: + post: + summary: '' + operationId: postApiAddKebab + description: '' + parameters: [] + responses: { } + tags: + - Kebab + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + logo: + type: string + description: '' + example: ut + nullable: false + name: + type: string + description: '' + example: perferendis + nullable: false + address: + type: string + description: '' + example: vel + nullable: false + coordinates: + type: string + description: '' + example: nisi + nullable: false + sauces: + type: string + description: '' + example: at + nullable: false + meats: + type: string + description: '' + example: ullam + nullable: false + status: + type: string + description: '' + example: perferendis + nullable: false + opening_hours: + type: string + description: '' + example: perspiciatis + nullable: false + opening_year: + type: string + description: '' + example: deleniti + nullable: false + closing_year: + type: string + description: '' + example: accusantium + nullable: false + is_crafted: + type: string + description: '' + example: placeat + nullable: false + is_premises: + type: string + description: '' + example: minus + nullable: false + is_chainstore: + type: string + description: '' + example: aut + nullable: false + ordering_options: + type: string + description: '' + example: voluptas + nullable: false + required: + - logo + - name + - address + - coordinates + - sauces + - meats + - status + - opening_hours + - opening_year + - closing_year + - is_crafted + - is_premises + - is_chainstore + - ordering_options + security: [] + '/api/kebabs/{id}': + delete: + summary: '' + operationId: deleteApiKebabsId + description: '' + parameters: [] + responses: { } + tags: + - Kebab + security: [] + parameters: + - + in: path + name: id + description: 'The ID of the kebab.' + example: adipisci + required: true + schema: + type: string + '/api/kebabs/{kebabId}/logo': + put: + summary: '' + operationId: putApiKebabsKebabIdLogo + description: '' + parameters: [] + responses: { } + tags: + - Kebab + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: quia + required: true + schema: + type: string + '/api/kebabs/{kebabId}/name': + put: + summary: '' + operationId: putApiKebabsKebabIdName + description: '' + parameters: [] + responses: { } + tags: + - Kebab + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: '' + example: quidem + nullable: false + required: + - name + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: consequuntur + required: true + schema: + type: string + '/api/kebabs/{kebabId}/address': + put: + summary: '' + operationId: putApiKebabsKebabIdAddress + description: '' + parameters: [] + responses: { } + tags: + - Kebab + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + address: + type: string + description: 'Must not be greater than 255 characters.' + example: huxswcermiukedcsywurinn + nullable: false + required: + - address + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: ab + required: true + schema: + type: string + '/api/kebabs/{kebabId}/coordinates': + put: + summary: '' + operationId: putApiKebabsKebabIdCoordinates + description: '' + parameters: [] + responses: { } + tags: + - Kebab + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + coordinates: + type: object + description: '' + example: [] + nullable: false + properties: { } + required: + - coordinates + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: eaque + required: true + schema: + type: string + '/api/kebabs/{kebabId}/sauce': + post: + summary: '' + operationId: postApiKebabsKebabIdSauce + description: '' + parameters: [] + responses: { } + tags: + - Kebab + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + sauce: + type: string + description: '' + example: nostrum + nullable: false + required: + - sauce + security: [] + delete: + summary: '' + operationId: deleteApiKebabsKebabIdSauce + description: '' + parameters: [] + responses: { } + tags: + - Kebab + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + sauce: + type: string + description: '' + example: dolore + nullable: false + required: + - sauce + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: laboriosam + required: true + schema: + type: string + '/api/kebabs/{kebabId}/meat': + post: + summary: '' + operationId: postApiKebabsKebabIdMeat + description: '' + parameters: [] + responses: { } + tags: + - Kebab + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + meat: + type: string + description: '' + example: voluptatibus + nullable: false + required: + - meat + security: [] + delete: + summary: '' + operationId: deleteApiKebabsKebabIdMeat + description: '' + parameters: [] + responses: { } + tags: + - Kebab + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + meat: + type: string + description: '' + example: eos + nullable: false + required: + - meat + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: facere + required: true + schema: + type: string + '/api/kebabs/{kebabId}/status': + put: + summary: '' + operationId: putApiKebabsKebabIdStatus + description: '' + parameters: [] + responses: { } + tags: + - Kebab + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + status: + type: string + description: '' + example: exists + nullable: false + enum: + - exists + - closed + - planned + required: + - status + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: quas + required: true + schema: + type: string + '/api/kebabs/{kebabId}/opening-hours': + post: + summary: '' + operationId: postApiKebabsKebabIdOpeningHours + description: '' + parameters: [] + responses: { } + tags: + - Kebab + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + day: + type: string + description: '' + example: saturday + nullable: false + enum: + - monday + - tuesday + - wednesday + - thursday + - friday + - saturday + - sunday + hours: + type: string + description: '' + example: quis + nullable: false + required: + - day + - hours + security: [] + delete: + summary: '' + operationId: deleteApiKebabsKebabIdOpeningHours + description: '' + parameters: [] + responses: { } + tags: + - Kebab + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + day: + type: string + description: '' + example: monday + nullable: false + enum: + - monday + - tuesday + - wednesday + - thursday + - friday + - saturday + - sunday + required: + - day + security: [] + put: + summary: '' + operationId: putApiKebabsKebabIdOpeningHours + description: '' + parameters: [] + responses: { } + tags: + - Kebab + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + day: + type: string + description: '' + example: sunday + nullable: false + enum: + - monday + - tuesday + - wednesday + - thursday + - friday + - saturday + - sunday + hours: + type: string + description: '' + example: explicabo + nullable: false + required: + - day + - hours + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: est + required: true + schema: + type: string + '/api/kebabs/{kebabId}/opening-year': + put: + summary: '' + operationId: putApiKebabsKebabIdOpeningYear + description: '' + parameters: [] + responses: { } + tags: + - Kebab + requestBody: + required: false + content: + application/json: + schema: + type: object + properties: + opening_year: + type: string + description: 'Must be 4 digits.' + example: '6167' + nullable: true + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: recusandae + required: true + schema: + type: string + '/api/kebabs/{kebabId}/closing-year': + put: + summary: '' + operationId: putApiKebabsKebabIdClosingYear + description: '' + parameters: [] + responses: { } + tags: + - Kebab + requestBody: + required: false + content: + application/json: + schema: + type: object + properties: + closing_year: + type: string + description: 'Must be 4 digits.' + example: '2621' + nullable: true + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: voluptatem + required: true + schema: + type: string + '/api/kebabs/{kebabId}/is-crafted': + put: + summary: '' + operationId: putApiKebabsKebabIdIsCrafted + description: '' + parameters: [] + responses: { } + tags: + - Kebab + requestBody: + required: false + content: + application/json: + schema: + type: object + properties: + is_crafted: + type: boolean + description: '' + example: true + nullable: true + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: vel + required: true + schema: + type: string + '/api/kebabs/{kebabId}/is-premises': + put: + summary: '' + operationId: putApiKebabsKebabIdIsPremises + description: '' + parameters: [] + responses: { } + tags: + - Kebab + requestBody: + required: false + content: + application/json: + schema: + type: object + properties: + is_premises: + type: boolean + description: '' + example: false + nullable: true + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: laudantium + required: true + schema: + type: string + '/api/kebabs/{kebabId}/is-chainstore': + put: + summary: '' + operationId: putApiKebabsKebabIdIsChainstore + description: '' + parameters: [] + responses: { } + tags: + - Kebab + requestBody: + required: false + content: + application/json: + schema: + type: object + properties: + is_chainstore: + type: boolean + description: '' + example: false + nullable: true + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: ea + required: true + schema: + type: string + '/api/kebabs/{kebabId}/ordering-options': + post: + summary: '' + operationId: postApiKebabsKebabIdOrderingOptions + description: '' + parameters: [] + responses: { } + tags: + - Kebab + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + new_option: + type: string + description: '' + example: nesciunt + nullable: false + required: + - new_option + security: [] + delete: + summary: '' + operationId: deleteApiKebabsKebabIdOrderingOptions + description: '' + parameters: [] + responses: { } + tags: + - Kebab + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + option_to_remove: + type: string + description: '' + example: est + nullable: false + required: + - option_to_remove + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: reprehenderit + required: true + schema: + type: string + '/api/kebabs/{kebabId}/pages': + post: + summary: '' + operationId: postApiKebabsKebabIdPages + description: '' + parameters: [] + responses: { } + tags: + - Kebab + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + new_page: + type: string + description: '' + example: explicabo + nullable: false + required: + - new_page + security: [] + delete: + summary: '' + operationId: deleteApiKebabsKebabIdPages + description: '' + parameters: [] + responses: { } + tags: + - Kebab + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + page_to_remove: + type: string + description: '' + example: corporis + nullable: false + required: + - page_to_remove + security: [] + parameters: + - + in: path + name: kebabId + description: '' + example: consectetur + required: true + schema: + type: string + /api/scrape-reviews: + get: + summary: '' + operationId: getApiScrapeReviews + description: '' + parameters: [] + responses: + 404: + description: '' + content: + application/json: + schema: + type: object + example: + message: 'The route api/scrape-reviews could not be found.' + properties: + message: + type: string + example: 'The route api/scrape-reviews could not be found.' + tags: + - KebabScraper + security: [] + /api/suggestions: + post: + summary: '' + operationId: postApiSuggestions + description: '' + parameters: [] + responses: { } + tags: + - Suggestions + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + user: + type: string + description: 'Must not be greater than 255 characters.' + example: yhyrnmamtgxprtslmownvg + nullable: false + contents: + type: string + description: 'Must not be greater than 255 characters.' + example: vmtnljhahaj + nullable: false + required: + - user + - contents + security: [] + get: + summary: '' + operationId: getApiSuggestions + description: '' + parameters: [] + responses: + 404: + description: '' + content: + application/json: + schema: + type: object + example: + message: 'The route api/suggestions could not be found.' + properties: + message: + type: string + example: 'The route api/suggestions could not be found.' + tags: + - Suggestions + security: [] + '/api/suggestions/{id}': + delete: + summary: '' + operationId: deleteApiSuggestionsId + description: '' + parameters: [] + responses: { } + tags: + - Suggestions + security: [] + parameters: + - + in: path + name: id + description: 'The ID of the suggestion.' + example: magni + required: true + schema: + type: string + /api/getCurrentUser: + get: + summary: '' + operationId: getApiGetCurrentUser + description: '' + parameters: [] + responses: + 404: + description: '' + content: + application/json: + schema: + type: object + example: + message: 'The route api/getCurrentUser could not be found.' + properties: + message: + type: string + example: 'The route api/getCurrentUser could not be found.' + tags: + - Users + security: [] + '/api/fav/{id}': + get: + summary: '' + operationId: getApiFavId + description: '' + parameters: [] + responses: + 404: + description: '' + content: + application/json: + schema: + type: object + example: + message: 'The route api/fav/veritatis could not be found.' + properties: + message: + type: string + example: 'The route api/fav/veritatis could not be found.' + tags: + - Users + security: [] + parameters: + - + in: path + name: id + description: 'The ID of the fav.' + example: veritatis + required: true + schema: + type: string + /api/addfav: + post: + summary: '' + operationId: postApiAddfav + description: '' + parameters: [] + responses: { } + tags: + - Users + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + user_id: + type: string + description: '' + example: eum + nullable: false + kebab_id: + type: string + description: '' + example: quia + nullable: false + required: + - user_id + - kebab_id + security: [] + /api/remfav: + post: + summary: '' + operationId: postApiRemfav + description: '' + parameters: [] + responses: { } + tags: + - Users + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + user_id: + type: string + description: '' + example: quas + nullable: false + kebab_id: + type: string + description: '' + example: quia + nullable: false + required: + - user_id + - kebab_id + security: [] + '/api/changeName/{id}': + put: + summary: '' + operationId: putApiChangeNameId + description: '' + parameters: [] + responses: { } + tags: + - Users + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + newName: + type: string + description: '' + example: nobis + nullable: false + required: + - newName + security: [] + parameters: + - + in: path + name: id + description: 'The ID of the changeName.' + example: facilis + required: true + schema: + type: string + '/api/changePassword/{id}': + put: + summary: '' + operationId: putApiChangePasswordId + description: '' + parameters: [] + responses: { } + tags: + - Users + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + newPassword: + type: string + description: '' + example: quas + nullable: false + confirmPassword: + type: string + description: '' + example: rerum + nullable: false + required: + - newPassword + - confirmPassword + security: [] + parameters: + - + in: path + name: id + description: 'The ID of the changePassword.' + example: laborum + required: true + schema: + type: string + '/api/changeEmail/{id}': + put: + summary: '' + operationId: putApiChangeEmailId + description: '' + parameters: [] + responses: { } + tags: + - Users + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + newEmail: + type: string + description: 'Must be a valid email address.' + example: shanie84@example.org + nullable: false + required: + - newEmail + security: [] + parameters: + - + in: path + name: id + description: 'The ID of the changeEmail.' + example: commodi + required: true + schema: + type: string + '/api/changeUserRole/{id}': + put: + summary: '' + operationId: putApiChangeUserRoleId + description: '' + parameters: [] + responses: { } + tags: + - Users + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + isAdmin: + type: boolean + description: '' + example: false + nullable: false + required: + - isAdmin + security: [] + parameters: + - + in: path + name: id + description: 'The ID of the changeUserRole.' + example: atque + required: true + schema: + type: string + '/api/deleteUser/{id}': + delete: + summary: '' + operationId: deleteApiDeleteUserId + description: '' + parameters: [] + responses: { } + tags: + - Users + security: [] + parameters: + - + in: path + name: id + description: 'The ID of the deleteUser.' + example: ut + required: true + schema: + type: string + /api/getAllUsers: + get: + summary: '' + operationId: getApiGetAllUsers + description: '' + parameters: [] + responses: + 404: + description: '' + content: + application/json: + schema: + type: object + example: + message: 'The route api/getAllUsers could not be found.' + properties: + message: + type: string + example: 'The route api/getAllUsers could not be found.' + tags: + - Users + security: [] + /api/addNewUser: + post: + summary: '' + operationId: postApiAddNewUser + description: '' + parameters: [] + responses: { } + tags: + - Users + requestBody: + required: true + content: + application/json: + schema: + type: object + properties: + name: + type: string + description: '' + example: ut + nullable: false + email: + type: string + description: 'Must be a valid email address.' + example: moconnell@example.com + nullable: false + password: + type: string + description: '' + example: est + nullable: false + required: + - name + - email + - password + security: [] +tags: + - + name: Auth + description: '*' + - + name: Endpoints + description: '' + - + name: Kebab + description: '*' + - + name: KebabScraper + description: '*' + - + name: Suggestions + description: '*' + - + name: Users + description: '*' +components: + securitySchemes: + default: + type: http + scheme: bearer + description: 'You can retrieve your token by visiting your dashboard and clicking Generate API token.' +security: + - + default: [] diff --git a/Backend/resources/views/vendor/l5-swagger/.gitkeep b/Backend/resources/views/vendor/l5-swagger/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/Backend/resources/views/vendor/l5-swagger/index.blade.php b/Backend/resources/views/vendor/l5-swagger/index.blade.php new file mode 100644 index 0000000..cc9cc7c --- /dev/null +++ b/Backend/resources/views/vendor/l5-swagger/index.blade.php @@ -0,0 +1,164 @@ + + + + + {{config('l5-swagger.documentations.'.$documentation.'.api.title')}} + + + + + @if(config('l5-swagger.defaults.ui.display.dark_mode')) + + @endif + + + +
+ + + + + + diff --git a/Backend/routes/api.php b/Backend/routes/api.php index 7931032..c3f7806 100644 --- a/Backend/routes/api.php +++ b/Backend/routes/api.php @@ -3,8 +3,10 @@ declare(strict_types=1); use App\Http\Controllers\AuthController; +use App\Http\Controllers\KebabController; +use App\Http\Controllers\KebabScraperController; +use App\Http\Controllers\SuggestionsController; use App\Http\Controllers\UserController; -use Illuminate\Http\Request; use Illuminate\Support\Facades\Route; /* @@ -18,12 +20,58 @@ | */ -Route::middleware("auth:sanctum")->get("/user", fn(Request $request) => $request->user()); - Route::post("/register", [AuthController::class, "register"]); Route::post("/login", [AuthController::class, "login"]); +Route::get("/kebabs", [KebabController::class, "getAllKebabs"]); +Route::get("/comments/{id}", [KebabController::class, "GetComments"]); +Route::get("/scrape-reviews", [KebabScraperController::class, "scrapeAllReviews"]); Route::middleware("auth:sanctum")->group(function (): void { Route::post("/logout", [AuthController::class, "logout"]); Route::get("/getCurrentUser", [UserController::class, "getCurrentUser"]); + Route::get("/fav/{id}", [UserController::class, "getUserFavorites"]); + Route::post("/addfav", [UserController::class, "addToFavorites"]); + Route::post("/remfav", [UserController::class, "removeFromFavorites"]); + Route::put("/changeName/{id}", [UserController::class, "changeName"]); + Route::put("/changePassword/{id}", [UserController::class, "changePassword"]); + Route::put("/changeEmail/{id}", [UserController::class, "changeEmail"]); + Route::post("/suggestions", [SuggestionsController::class, "createSuggestion"]); + Route::post("/kebabs/{kebabId}/comments", [KebabController::class, "addComment"]); + Route::delete("/kebabs/{kebabId}/comments", [KebabController::class, "removeComment"]); +}); + +Route::get("/documentation", fn() => view("vendor.scribe.index")); + +Route::middleware(["auth:sanctum", "admin"])->group(function (): void { + Route::put("/changeUserRole/{id}", [UserController::class, "changeUserRole"]); + Route::delete("/deleteUser/{id}", [UserController::class, "deleteUser"]); + Route::get("/getAllUsers", [UserController::class, "getAllUsers"]); + Route::post("/addNewUser", [UserController::class, "addNewUser"]); + Route::post("/addKebab", [KebabController::class, "addKebab"]); + Route::delete("/kebabs/{id}", [KebabController::class, "deleteKebab"]); + Route::put("/kebabs/{kebabId}/logo", [KebabController::class, "changeKebabLogo"]); + Route::put("/kebabs/{kebabId}/name", [KebabController::class, "changeKebabName"]); + Route::put("/kebabs/{kebabId}/address", [KebabController::class, "changeKebabAddress"]); + Route::put("/kebabs/{kebabId}/coordinates", [KebabController::class, "changeKebabCoordinates"]); + Route::post("/kebabs/{kebabId}/sauce", [KebabController::class, "addSauceToKebab"]); + Route::delete("/kebabs/{kebabId}/sauce", [KebabController::class, "removeSauceFromKebab"]); + Route::post("/kebabs/{kebabId}/meat", [KebabController::class, "addMeatToKebab"]); + Route::delete("/kebabs/{kebabId}/meat", [KebabController::class, "removeMeatFromKebab"]); + Route::put("/kebabs/{kebabId}/status", [KebabController::class, "changeKebabStatus"]); + Route::post("/kebabs/{kebabId}/opening-hours", [KebabController::class, "addOpeningHour"]); + Route::delete("/kebabs/{kebabId}/opening-hours", [KebabController::class, "removeOpeningHour"]); + Route::put("/kebabs/{kebabId}/opening-hours", [KebabController::class, "changeOpeningHour"]); + Route::put("/kebabs/{kebabId}/opening-year", [KebabController::class, "updateOpeningYear"]); + Route::put("/kebabs/{kebabId}/closing-year", [KebabController::class, "updateClosingYear"]); + Route::put("/kebabs/{kebabId}/is-crafted", [KebabController::class, "updateIsCrafted"]); + Route::put("/kebabs/{kebabId}/is-premises", [KebabController::class, "updateIsPremises"]); + Route::put("/kebabs/{kebabId}/is-chainstore", [KebabController::class, "updateIsChainstore"]); + Route::post("/kebabs/{kebabId}/ordering-options", [KebabController::class, "addOrderingOption"]); + Route::delete("/kebabs/{kebabId}/ordering-options", [KebabController::class, "removeOrderingOption"]); + Route::put("/kebabs/{kebabId}/google-reviews", [KebabController::class, "updateGoogleReviews"]); + Route::put("/kebabs/{kebabId}/pysznepl-reviews", [KebabController::class, "updatePyszneplReviews"]); + Route::post("/kebabs/{kebabId}/pages", [KebabController::class, "addPage"]); + Route::delete("/kebabs/{kebabId}/pages", [KebabController::class, "removePage"]); + Route::get("/suggestions", [SuggestionsController::class, "showAllSuggestions"]); + Route::delete("/suggestions/{id}", [SuggestionsController::class, "destroySuggestion"]); }); diff --git a/Backend/routes/web.php b/Backend/routes/web.php index 21a2f90..43500f1 100644 --- a/Backend/routes/web.php +++ b/Backend/routes/web.php @@ -14,5 +14,5 @@ | be assigned to the "web" middleware group. Make something great! | */ - Route::get("/", fn() => view("welcome")); +Route::get("/api/documentation", fn() => file_get_contents(public_path("docs/index.html"))); diff --git a/Backend/storage/api-docs/api-docs.json b/Backend/storage/api-docs/api-docs.json new file mode 100644 index 0000000..668dd93 --- /dev/null +++ b/Backend/storage/api-docs/api-docs.json @@ -0,0 +1,274 @@ +{ + "openapi": "3.0.0", + "info": { + "title": "KebabApp API", + "description": "API for managing kebab stores", + "termsOfService": "http://example.com/terms", + "contact": { + "email": "support@example.com" + }, + "license": { + "name": "MIT", + "url": "https://opensource.org/licenses/MIT" + }, + "version": "1.0.0" + }, + "servers": [ + { + "url": "http://localhost/api", + "description": "Local Development Server" + } + ], + "paths": { + "/api/register": { + "post": { + "tags": [ + "Auth" + ], + "summary": "Register a new user", + "operationId": "8a56853624e025573120a09a4c75d468", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "name", + "email", + "password" + ], + "properties": { + "name": { + "type": "string", + "example": "John Doe" + }, + "email": { + "type": "string", + "example": "johndoe@example.com" + }, + "password": { + "type": "string", + "format": "password", + "example": "password123" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "User registered successfully", + "content": { + "application/json": { + "schema": { + "properties": { + "user": { + "$ref": "#/components/schemas/User" + }, + "token": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "400": { + "description": "Invalid input" + } + } + } + }, + "/api/login": { + "post": { + "tags": [ + "Auth" + ], + "summary": "Login an existing user", + "operationId": "a3b306d14572d1f4bd6c064b3233e7b8", + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "required": [ + "email", + "password" + ], + "properties": { + "email": { + "type": "string", + "example": "johndoe@example.com" + }, + "password": { + "type": "string", + "format": "password", + "example": "password123" + } + }, + "type": "object" + } + } + } + }, + "responses": { + "200": { + "description": "User logged in successfully", + "content": { + "application/json": { + "schema": { + "properties": { + "user": { + "$ref": "#/components/schemas/User" + }, + "token": { + "type": "string" + } + }, + "type": "object" + } + } + } + }, + "400": { + "description": "Invalid credentials" + } + } + } + }, + "/api/logout": { + "post": { + "tags": [ + "Auth" + ], + "summary": "Logout the current user", + "operationId": "fe8f3429cd6979b3b4517e186505f9f9", + "responses": { + "204": { + "description": "Successfully logged out" + }, + "401": { + "description": "Unauthorized" + } + } + } + } + }, + "components": { + "schemas": { + "KebabRequest": { + "required": [ + "logo", + "name", + "address", + "coordinates", + "sauces", + "meats", + "status", + "opening_hours", + "opening_year", + "closing_year", + "is_crafted", + "is_premises", + "is_chainstore", + "ordering_options" + ], + "properties": { + "logo": { + "description": "Logo of the kebab store", + "type": "string" + }, + "name": { + "description": "Name of the kebab store", + "type": "string" + }, + "address": { + "description": "Address of the kebab store", + "type": "string" + }, + "coordinates": { + "description": "Coordinates of the kebab store", + "type": "string" + }, + "sauces": { + "description": "List of sauces available", + "type": "string" + }, + "meats": { + "description": "List of meats available", + "type": "string" + }, + "status": { + "description": "Status of the store", + "type": "string" + }, + "opening_hours": { + "description": "Opening hours of the store", + "type": "string" + }, + "opening_year": { + "description": "Year the store opened", + "type": "integer" + }, + "closing_year": { + "description": "Year the store closed", + "type": "integer" + }, + "is_crafted": { + "description": "Whether the store is crafted", + "type": "boolean" + }, + "is_premises": { + "description": "Whether the store is a premises", + "type": "boolean" + }, + "is_chainstore": { + "description": "Whether the store is part of a chain", + "type": "boolean" + }, + "ordering_options": { + "description": "Ordering options available", + "type": "string" + } + }, + "type": "object" + }, + "User": { + "required": [ + "id", + "name", + "email", + "isAdmin" + ], + "properties": { + "id": { + "description": "User ID", + "type": "integer" + }, + "name": { + "description": "User's name", + "type": "string" + }, + "email": { + "description": "User's email", + "type": "string" + }, + "isAdmin": { + "description": "User's admin status", + "type": "boolean" + } + }, + "type": "object" + } + } + }, + "tags": [ + { + "name": "Auth", + "description": "Authentication related endpoints" + } + ] +} \ No newline at end of file diff --git a/Backend/tests/Arch/ModelArchTest.php b/Backend/tests/Arch/ModelArchTest.php new file mode 100644 index 0000000..3607b5f --- /dev/null +++ b/Backend/tests/Arch/ModelArchTest.php @@ -0,0 +1,11 @@ +expect('App\Models') + ->toBeClasses() + ->toHaveSuffix('') + ->toExtend(\Illuminate\Database\Eloquent\Model::class); + +arch('Kebab model should follow conventions') + ->expect('App\Models\Kebab') + ->toBeClasses(); diff --git a/Backend/tests/Arch/RequestsArchTest.php b/Backend/tests/Arch/RequestsArchTest.php new file mode 100644 index 0000000..cd30911 --- /dev/null +++ b/Backend/tests/Arch/RequestsArchTest.php @@ -0,0 +1,17 @@ +expect('App\Http\Requests') + ->toBeClasses() + ->toHaveSuffix('Request'); + +arch('Kebab requests should be in thier folder') + ->expect('App\Http\Requests\KebabRequests') + ->toBeClasses() + ->toHaveSuffix('Request'); + +arch('UserRequests should have proper architecture') + ->expect('App\Http\Requests\UserRequests') + ->toBeClasses() + ->toHaveSuffix('Request') + ->toExtend(\Illuminate\Foundation\Http\FormRequest::class); \ No newline at end of file diff --git a/Backend/tests/Feature/AdminRoutesTest.php b/Backend/tests/Feature/AdminRoutesTest.php new file mode 100644 index 0000000..7577168 --- /dev/null +++ b/Backend/tests/Feature/AdminRoutesTest.php @@ -0,0 +1,101 @@ +create([ + "isAdmin" => 1, + "password" => Hash::make("password"), + ]); + + $this->actingAs($admin); + + $response = $this->getJson("/api/getAllUsers"); + + $response->assertStatus(200); + + $responseData = $response->json(); + $this->assertIsArray($responseData); + $this->assertNotEmpty($responseData); + } + + public function testNonAdminCannotAccessAdminRoutes(): void + { + $response = $this->postJson("/api/register", [ + "name" => "NonAdmin", + "email" => "nonadmin@example.com", + "password" => "password", + "password_confirmation" => "password", + ]); + + $response->assertStatus(200); + + $user = User::where("email", "nonadmin@example.com")->first(); + $this->actingAs($user); + + $response = $this->getJson("/api/getAllUsers"); + + $response->assertStatus(403); + } + + public function testGuestCannotAccessAdminRoutes(): void + { + $response = $this->getJson("/api/getAllUsers"); + + $response->assertStatus(401); + } + + public function testAdminCanDeleteUser(): void + { + $admin = User::factory()->create([ + "isAdmin" => 1, + "password" => Hash::make("password"), + ]); + + $userToDelete = User::factory()->create([ + "isAdmin" => 0, + "password" => Hash::make("password"), + ]); + + $this->actingAs($admin); + + $response = $this->deleteJson("/api/deleteUser/{$userToDelete->id}"); + + $response->assertStatus(200); + + $this->assertDatabaseMissing("users", ["id" => $userToDelete->id]); + } + + public function testNonAdminCannotDeleteUser(): void + { + $user = User::factory()->create([ + "isAdmin" => 0, + "password" => Hash::make("password"), + ]); + + $userToDelete = User::factory()->create([ + "isAdmin" => 0, + "password" => Hash::make("password"), + ]); + + $this->actingAs($user); + + $response = $this->deleteJson("/api/deleteUser/{$userToDelete->id}"); + + $response->assertStatus(403); + + $this->assertDatabaseHas("users", ["id" => $userToDelete->id]); + } +} diff --git a/Backend/tests/Feature/AuthControllerTest.php b/Backend/tests/Feature/AuthControllerTest.php new file mode 100644 index 0000000..9f7348d --- /dev/null +++ b/Backend/tests/Feature/AuthControllerTest.php @@ -0,0 +1,96 @@ +postJson("/api/register", [ + "name" => "Jasio", + "email" => "Jasio@example.com", + "password" => "password", + "password_confirmation" => "password", + ]); + + $response->assertStatus(200); + $this->assertDatabaseHas("users", ["email" => "Jasio@example.com"]); + } + + public function testUserCantRegisterWithMissingPasswordConfirmation(): void + { + $response = $this->postJson("/api/register", [ + "name" => "Jasio", + "email" => "Jasio@example.com", + "password" => "password", + "password_confirmation" => "", + ]); + + $response->assertStatus(422); + $response->assertJsonValidationErrors(["password"]); + $this->assertDatabaseMissing("users", ["email" => "Jasio@example.com"]); + } + + public function testUserCantRegisterWithMissingName(): void + { + $response = $this->postJson("/api/register", [ + "name" => "", + "email" => "Jasio@example.com", + "password" => "password", + "password_confirmation" => "password", + ]); + + $response->assertStatus(422); + $response->assertJsonValidationErrors(["name"]); + $this->assertDatabaseMissing("users", ["email" => "Jasio@example.com"]); + } + + public function testUserCannotLoginWithInvalidCredentials(): void + { + $response = $this->postJson("/api/login", [ + "email" => "wronguser@example.com", + "password" => "wrongpassword", + ]); + + $response->assertStatus(422); + $response->assertJson(["message" => "The selected email is invalid."]); + } + + public function testUserMaxNameTest(): void + { + $response = $this->post("/api/register", [ + "name" => Str::random(256), + "email" => "Jasio@example.com", + "password" => "password", + "password_confirmation" => "password", + ]); + + $response->assertStatus(200); + } + + public function testUserCanLogin(): void + { + User::factory()->create([ + "email" => "Jasio@example.com", + "password" => bcrypt("password"), + "isAdmin" => false, + ]); + + $response = $this->post("/api/login", [ + "email" => "Jasio@example.com", + "password" => "password", + ]); + + $response->assertStatus(200); + $response->assertJsonStructure(["user", "token"]); + } +} diff --git a/Backend/tests/Feature/StresTest.php b/Backend/tests/Feature/StresTest.php new file mode 100644 index 0000000..d79a110 --- /dev/null +++ b/Backend/tests/Feature/StresTest.php @@ -0,0 +1,35 @@ +getJson('/api/kebabs'); + + expect(in_array($response->status(), [200, 429])) + ->toBeTrue("Unexpected status: {$response->status()}"); + } +}); + test('API rate limits requests correctly', function () { + $iterations = 100; + $successfulResponses = 0; + $rateLimitResponses = 0; + + for ($i = 0; $i < $iterations; $i++) { + $response = $this->getJson('/api/kebabs'); + + if ($response->status() === 200) { + $successfulResponses++; + } elseif ($response->status() === 429) { + $rateLimitResponses++; + } + } + + expect($successfulResponses)->toBeGreaterThan(0); + expect($rateLimitResponses)->toBeGreaterThan(0); +}); diff --git a/Backend/tests/Feature/SuggestionsRoutesTest.php b/Backend/tests/Feature/SuggestionsRoutesTest.php new file mode 100644 index 0000000..588f6ac --- /dev/null +++ b/Backend/tests/Feature/SuggestionsRoutesTest.php @@ -0,0 +1,32 @@ +create([ + "isAdmin" => 1, + "password" => Hash::make("password"), + ]); + + $this->actingAs($admin); + + $response = $this->getJson("/api/suggestions"); + + $response->assertStatus(200); + + $responseData = $response->json(); + $this->assertIsArray($responseData); + } +} diff --git a/Backend/tests/Pest.php b/Backend/tests/Pest.php new file mode 100644 index 0000000..50ab1e4 --- /dev/null +++ b/Backend/tests/Pest.php @@ -0,0 +1,48 @@ +in('Feature'); + +/* +|-------------------------------------------------------------------------- +| Expectations +|-------------------------------------------------------------------------- +| +| When you're writing tests, you often need to check that values meet certain conditions. The +| "expect()" function gives you access to a set of "expectations" methods that you can use +| to assert different things. Of course, you may extend the Expectation API at any time. +| +*/ + +expect()->extend('toBeOne', function () { + return $this->toBe(1); +}); + +/* +|-------------------------------------------------------------------------- +| Functions +|-------------------------------------------------------------------------- +| +| While Pest is very powerful out-of-the-box, you may have some testing code specific to your +| project that you don't want to repeat in every file. Here you can also expose helpers as +| global functions to help you to reduce the number of lines of code in your test files. +| +*/ + +function something() +{ + // .. +} diff --git a/Backend/tests/Unit/KebabModelTest.php b/Backend/tests/Unit/KebabModelTest.php new file mode 100644 index 0000000..e8ca0b9 --- /dev/null +++ b/Backend/tests/Unit/KebabModelTest.php @@ -0,0 +1,33 @@ + 'Delicious Kebab', + 'address' => 'Main Street 42', + 'status' => 'open', + ]); + + expect($kebab->name)->toBe('Delicious Kebab'); + expect($kebab->address)->toBe('Main Street 42'); + expect($kebab->status)->toBe('open'); +}); + +test('casts work correctly', function () { + $kebab = new Kebab([ + 'coordinates' => ['lat' => 50.06, 'lng' => 19.94], + 'sauces' => ['mayo', 'ketchup'], + 'meats' => ['chicken', 'beef'], + ]); + + expect($kebab->coordinates)->toBe(['lat' => 50.06, 'lng' => 19.94]); + expect($kebab->sauces)->toBe(['mayo', 'ketchup']); + expect($kebab->meats)->toBe(['chicken', 'beef']); +}); + +test('guarded fields cannot be mass assigned', function () { + $kebab = new Kebab(['id' => 1]); + + expect($kebab->id)->not->toBe(1); +}); diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 55eb194..1b252d8 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -8,9 +8,14 @@ "name": "kebab_city_tour", "version": "0.1.0", "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.7.1", + "@fortawesome/free-regular-svg-icons": "^6.7.2", + "@fortawesome/free-solid-svg-icons": "^6.7.1", + "@fortawesome/react-fontawesome": "^0.2.2", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", + "axios": "^1.7.9", "leaflet": "^1.9.4", "prop-types": "^15.8.1", "react": "^18.3.1", @@ -22,7 +27,9 @@ }, "devDependencies": { "@eslint/js": "^9.14.0", - "eslint": "^9.14.0", + "cypress": "^13.8.0", + "eslint": "^9.18.0", + "eslint-plugin-cypress": "^4.1.0", "eslint-plugin-react": "^7.37.2", "eslint-plugin-react-hooks": "^5.0.0", "globals": "^15.12.0", @@ -33,9 +40,9 @@ } }, "node_modules/@adobe/css-tools": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.0.tgz", - "integrity": "sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==" + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.1.tgz", + "integrity": "sha512-12WGKBQzjUAI4ayyF4IAtfw2QR/IDoqk6jTddXDhtYTJF9ASmoE1zst7cVtP0aL/F1jUJL5r+JxKXKEgHNbEUQ==" }, "node_modules/@alloc/quick-lru": { "version": "5.2.0", @@ -61,11 +68,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz", - "integrity": "sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "dependencies": { - "@babel/highlight": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", "picocolors": "^1.0.0" }, "engines": { @@ -73,28 +81,28 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.8.tgz", - "integrity": "sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.5.tgz", + "integrity": "sha512-XvcZi1KWf88RVbF9wn8MN6tYFloU5qX8KjuF3E1PVBmJ9eypXfs4GRiJwLuTZL0iSnJUKn1BFPa5BPZZJyFzPg==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.8.tgz", - "integrity": "sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", + "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.25.7", - "@babel/generator": "^7.25.7", - "@babel/helper-compilation-targets": "^7.25.7", - "@babel/helper-module-transforms": "^7.25.7", - "@babel/helpers": "^7.25.7", - "@babel/parser": "^7.25.8", - "@babel/template": "^7.25.7", - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.8", + "@babel/code-frame": "^7.26.0", + "@babel/generator": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.0", + "@babel/parser": "^7.26.0", + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.26.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -118,9 +126,9 @@ } }, "node_modules/@babel/eslint-parser": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.25.8.tgz", - "integrity": "sha512-Po3VLMN7fJtv0nsOjBDSbO1J71UhzShE9MuOSkWEV9IZQXzhZklYtzKZ8ZD/Ij3a0JBv1AG3Ny2L3jvAHQVOGg==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.26.5.tgz", + "integrity": "sha512-Kkm8C8uxI842AwQADxl0GbcG1rupELYLShazYEZO/2DYjhyWXJIOUVOE3tBYm6JXzUCNJOZEzqc4rCW/jsEQYQ==", "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "eslint-visitor-keys": "^2.1.0", @@ -151,11 +159,12 @@ } }, "node_modules/@babel/generator": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.7.tgz", - "integrity": "sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.5.tgz", + "integrity": "sha512-2caSP6fN9I7HOe6nqhtft7V4g7/V/gfDsC3Ag4W7kEzzvRGKqiv0pu0HogPiZ3KaVSoNDhUws6IJjDjpfmYIXw==", "dependencies": { - "@babel/types": "^7.25.7", + "@babel/parser": "^7.26.5", + "@babel/types": "^7.26.5", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -165,35 +174,23 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.7.tgz", - "integrity": "sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==", - "dependencies": { - "@babel/types": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.25.7.tgz", - "integrity": "sha512-12xfNeKNH7jubQNm7PAkzlLwEmCs1tfuX3UjIw6vP6QXi+leKh6+LyC/+Ed4EIQermwd58wsyh070yjDHFlNGg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", "dependencies": { - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz", - "integrity": "sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.26.5.tgz", + "integrity": "sha512-IXuyn5EkouFJscIDuFF5EsiSolseme1s0CZB+QxVugqJLYmKdxI1VfIBOst0SUu4rnk2Z7kqTwmoO1lp3HIfnA==", "dependencies": { - "@babel/compat-data": "^7.25.7", - "@babel/helper-validator-option": "^7.25.7", + "@babel/compat-data": "^7.26.5", + "@babel/helper-validator-option": "^7.25.9", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -211,16 +208,16 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.7.tgz", - "integrity": "sha512-bD4WQhbkx80mAyj/WCm4ZHcF4rDxkoLFO6ph8/5/mQ3z4vAzltQXAmbc7GvVJx5H+lk5Mi5EmbTeox5nMGCsbw==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "@babel/helper-member-expression-to-functions": "^7.25.7", - "@babel/helper-optimise-call-expression": "^7.25.7", - "@babel/helper-replace-supers": "^7.25.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7", - "@babel/traverse": "^7.25.7", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.9.tgz", + "integrity": "sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.25.9", "semver": "^6.3.1" }, "engines": { @@ -239,12 +236,12 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.7.tgz", - "integrity": "sha512-byHhumTj/X47wJ6C6eLpK7wW/WBEcnUeb7D0FNc/jFQnQVw7DOso3Zz5u9x/zLrFVkHa89ZGDbkAa1D54NdrCQ==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.26.3.tgz", + "integrity": "sha512-G7ZRb40uUgdKOQqPLjfD12ZmGA54PzqDFUv2BKImnC9QIfGhIHKvVML0oN8IUiDq4iRqpq74ABpvOaerfWdong==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "regexpu-core": "^6.1.1", + "@babel/helper-annotate-as-pure": "^7.25.9", + "regexpu-core": "^6.2.0", "semver": "^6.3.1" }, "engines": { @@ -263,9 +260,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", - "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.3.tgz", + "integrity": "sha512-HK7Bi+Hj6H+VTHA3ZvBis7V/6hu9QuTrnMXNybfUf2iiuU/N97I8VjB+KbhFF8Rld/Lx5MzoCwPCpPjfK+n8Cg==", "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -277,39 +274,57 @@ "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.7.tgz", - "integrity": "sha512-O31Ssjd5K6lPbTX9AAYpSKrZmLeagt9uwschJd+Ixo6QiRyfpvgtVQp8qrDR9UNFjZ8+DO34ZkdrN+BnPXemeA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", + "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", "dependencies": { - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz", - "integrity": "sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", "dependencies": { - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz", - "integrity": "sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", "dependencies": { - "@babel/helper-module-imports": "^7.25.7", - "@babel/helper-simple-access": "^7.25.7", - "@babel/helper-validator-identifier": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -319,32 +334,32 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.7.tgz", - "integrity": "sha512-VAwcwuYhv/AT+Vfr28c9y6SHzTan1ryqrydSTFGjU0uDJHw3uZ+PduI8plCLkRsDnqK2DMEDmwrOQRsK/Ykjng==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", + "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", "dependencies": { - "@babel/types": "^7.25.7" + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz", - "integrity": "sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.7.tgz", - "integrity": "sha512-kRGE89hLnPfcz6fTrlNU+uhgcwv0mBE4Gv3P9Ke9kLVJYpi4AMVVEElXvB5CabrPZW4nCM8P8UyyjrzCM0O2sw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz", + "integrity": "sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "@babel/helper-wrap-function": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-wrap-function": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -354,13 +369,13 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.7.tgz", - "integrity": "sha512-iy8JhqlUW9PtZkd4pHM96v6BdJ66Ba9yWSE4z0W4TvSZwLBPkyDsiIU3ENe4SmrzRBs76F7rQXTy1lYC49n6Lw==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz", + "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==", "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.25.7", - "@babel/helper-optimise-call-expression": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -369,163 +384,73 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz", - "integrity": "sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==", - "dependencies": { - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.7.tgz", - "integrity": "sha512-pPbNbchZBkPMD50K0p3JGcFMNLVUCuU/ABybm/PGNj4JiHrpmNyqqCphBk4i19xXtNV0JhldQJJtbSW5aUvbyA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", + "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", "dependencies": { - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz", - "integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz", - "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz", - "integrity": "sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.7.tgz", - "integrity": "sha512-MA0roW3JF2bD1ptAaJnvcabsVlNQShUaThyJbCDD4bCp8NEgiFvpoqRI2YS22hHlc2thjO/fTg2ShLMC3jygAg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz", + "integrity": "sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==", "dependencies": { - "@babel/template": "^7.25.7", - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.7.tgz", - "integrity": "sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==", - "dependencies": { - "@babel/template": "^7.25.7", - "@babel/types": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz", - "integrity": "sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", + "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", "dependencies": { - "@babel/helper-validator-identifier": "^7.25.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/parser": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.8.tgz", - "integrity": "sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.5.tgz", + "integrity": "sha512-SRJ4jYmXRqV1/Xc+TIVG84WjHBXKlxO9sHQnA2Pf12QQEAp1LOh6kDzNHXcUnbH1QI0FDoPPVOt+vyUDucxpaw==", "dependencies": { - "@babel/types": "^7.25.8" + "@babel/types": "^7.26.5" }, "bin": { "parser": "bin/babel-parser.js" @@ -535,12 +460,12 @@ } }, "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.7.tgz", - "integrity": "sha512-UV9Lg53zyebzD1DwQoT9mzkEKa922LNUp5YkTJ6Uta0RbyXaQNUgcvSt7qIu1PpPzVb6rd10OVNTzkyBGeVmxQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz", + "integrity": "sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -550,11 +475,11 @@ } }, "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.7.tgz", - "integrity": "sha512-GDDWeVLNxRIkQTnJn2pDOM1pkCgYdSqPeT1a9vh9yIqu2uzzgw1zcqEb+IJOhy+dTBMlNdThrDIksr2o09qrrQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz", + "integrity": "sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -564,11 +489,11 @@ } }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.7.tgz", - "integrity": "sha512-wxyWg2RYaSUYgmd9MR0FyRGyeOMQE/Uzr1wzd/g5cf5bwi9A4v6HFdDm7y1MgDtod/fLOSTZY6jDgV0xU9d5bA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.9.tgz", + "integrity": "sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -578,13 +503,13 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.7.tgz", - "integrity": "sha512-Xwg6tZpLxc4iQjorYsyGMyfJE7nP5MV8t/Ka58BgiA7Jw0fRqQNcANlLfdJ/yvBt9z9LD2We+BEkT7vLqZRWng==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7", - "@babel/plugin-transform-optional-chaining": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -594,12 +519,12 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.7.tgz", - "integrity": "sha512-UVATLMidXrnH+GMUIuxq55nejlj02HP7F5ETyBONzP6G87fPBogG4CH6kxrSrdIuAjdwNO9VzyaYsrZPscWUrw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz", + "integrity": "sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -625,13 +550,13 @@ } }, "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.25.7.tgz", - "integrity": "sha512-q1mqqqH0e1lhmsEQHV5U8OmdueBC2y0RFr2oUzZoFRtN3MvPmt2fsFRcNQAoGLTSNdHBFUYGnlgcRFhkBbKjPw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.25.9.tgz", + "integrity": "sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/plugin-syntax-decorators": "^7.25.7" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-syntax-decorators": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -764,11 +689,11 @@ } }, "node_modules/@babel/plugin-syntax-decorators": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.25.7.tgz", - "integrity": "sha512-oXduHo642ZhstLVYTe2z2GSJIruU0c/W3/Ghr6A5yGMsVrvdnxO1z+3pbTcT7f3/Clnt+1z8D/w1r1f1SHaCHw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.25.9.tgz", + "integrity": "sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -778,11 +703,11 @@ } }, "node_modules/@babel/plugin-syntax-flow": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.25.7.tgz", - "integrity": "sha512-fyoj6/YdVtlv2ROig/J0fP7hh/wNO1MJGm1NR70Pg7jbkF+jOUL9joorqaCOQh06Y+LfgTagHzC8KqZ3MF782w==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.26.0.tgz", + "integrity": "sha512-B+O2DnPc0iG+YXFqOxv2WNuNU97ToWjOomUQ78DouOENWUaM5sVrmet9mcomUGQFwpJd//gvUagXBSdzO1fRKg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -792,11 +717,11 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.25.7.tgz", - "integrity": "sha512-ZvZQRmME0zfJnDQnVBKYzHxXT7lYBB3Revz1GuS7oLXWMgqUPX4G+DDbT30ICClht9WKV34QVrZhSw6WdklwZQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz", + "integrity": "sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -806,11 +731,11 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.7.tgz", - "integrity": "sha512-AqVo+dguCgmpi/3mYBdu9lkngOBlQ2w2vnNpa6gfiCxQZLzV4ZbhsXitJ2Yblkoe1VQwtHSaNmIaGll/26YWRw==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz", + "integrity": "sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -842,11 +767,11 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.7.tgz", - "integrity": "sha512-ruZOnKO+ajVL/MVx+PwNBPOkrnXTXoWMtte1MBpegfCArhqOe3Bj52avVj1huLLxNKYKXYaSxZ2F+woK1ekXfw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -950,11 +875,11 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.7.tgz", - "integrity": "sha512-rR+5FDjpCHqqZN2bzZm18bVYGaejGq5ZkpVCJLXor/+zlSrSoc4KWcHI0URVWjl/68Dyr1uwZUz/1njycEAv9g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", + "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -979,11 +904,11 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.7.tgz", - "integrity": "sha512-EJN2mKxDwfOUCPxMO6MUI58RN3ganiRAG/MS/S3HfB6QFNjroAMelQo/gybyYq97WerCBAZoyrAoW8Tzdq2jWg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz", + "integrity": "sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -993,13 +918,13 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.8.tgz", - "integrity": "sha512-9ypqkozyzpG+HxlH4o4gdctalFGIjjdufzo7I2XPda0iBnZ6a+FO0rIEQcdSPXp02CkvGsII1exJhmROPQd5oA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.9.tgz", + "integrity": "sha512-RXV6QAzTBbhDMO9fWwOmwwTuYaiPbggWQ9INdZqAYeSHyG7FzQ+nOZaUUjNwKv9pV3aE4WFqFm1Hnbci5tBCAw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-remap-async-to-generator": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1009,13 +934,13 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.7.tgz", - "integrity": "sha512-ZUCjAavsh5CESCmi/xCpX1qcCaAglzs/7tmuvoFnJgA1dM7gQplsguljoTg+Ru8WENpX89cQyAtWoaE0I3X3Pg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", + "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", "dependencies": { - "@babel/helper-module-imports": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-remap-async-to-generator": "^7.25.7" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1025,11 +950,11 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.25.7.tgz", - "integrity": "sha512-xHttvIM9fvqW+0a3tZlYcZYSBpSWzGBFIt/sYG3tcdSzBB8ZeVgz2gBP7Df+sM0N1850jrviYSSeUuc+135dmQ==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz", + "integrity": "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1039,11 +964,11 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.7.tgz", - "integrity": "sha512-ZEPJSkVZaeTFG/m2PARwLZQ+OG0vFIhPlKHK/JdIMy8DbRJ/htz6LRrTFtdzxi9EHmcwbNPAKDnadpNSIW+Aow==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.9.tgz", + "integrity": "sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1053,12 +978,12 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.7.tgz", - "integrity": "sha512-mhyfEW4gufjIqYFo9krXHJ3ElbFLIze5IDp+wQTxoPd+mwFb1NxatNAwmv8Q8Iuxv7Zc+q8EkiMQwc9IhyGf4g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz", + "integrity": "sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1068,12 +993,12 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.25.8.tgz", - "integrity": "sha512-e82gl3TCorath6YLf9xUwFehVvjvfqFhdOo4+0iVIVju+6XOi5XHkqB3P2AXnSwoeTX0HBoXq5gJFtvotJzFnQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz", + "integrity": "sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1083,15 +1008,15 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.7.tgz", - "integrity": "sha512-9j9rnl+YCQY0IGoeipXvnk3niWicIB6kCsWRGLwX241qSXpbA4MKxtp/EdvFxsc4zI5vqfLxzOd0twIJ7I99zg==", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "@babel/helper-compilation-targets": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-replace-supers": "^7.25.7", - "@babel/traverse": "^7.25.7", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz", + "integrity": "sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/traverse": "^7.25.9", "globals": "^11.1.0" }, "engines": { @@ -1110,12 +1035,12 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.7.tgz", - "integrity": "sha512-QIv+imtM+EtNxg/XBKL3hiWjgdLjMOmZ+XzQwSgmBfKbfxUjBzGgVPklUuE55eq5/uVoh8gg3dqlrwR/jw3ZeA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz", + "integrity": "sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/template": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/template": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1125,11 +1050,11 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.7.tgz", - "integrity": "sha512-xKcfLTlJYUczdaM1+epcdh1UGewJqr9zATgrNHcLBcV2QmfvPPEixo/sK/syql9cEmbr7ulu5HMFG5vbbt/sEA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz", + "integrity": "sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1139,12 +1064,12 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.7.tgz", - "integrity": "sha512-kXzXMMRzAtJdDEgQBLF4oaiT6ZCU3oWHgpARnTKDAqPkDJ+bs3NrZb310YYevR5QlRo3Kn7dzzIdHbZm1VzJdQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz", + "integrity": "sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1154,11 +1079,11 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.7.tgz", - "integrity": "sha512-by+v2CjoL3aMnWDOyCIg+yxU9KXSRa9tN6MbqggH5xvymmr9p4AMjYkNlQy4brMceBnUyHZ9G8RnpvT8wP7Cfg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz", + "integrity": "sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1168,12 +1093,12 @@ } }, "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.7.tgz", - "integrity": "sha512-HvS6JF66xSS5rNKXLqkk7L9c/jZ/cdIVIcoPVrnl8IsVpLggTjXs8OWekbLHs/VtYDDh5WXnQyeE3PPUGm22MA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1183,11 +1108,11 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.8.tgz", - "integrity": "sha512-gznWY+mr4ZQL/EWPcbBQUP3BXS5FwZp8RUOw06BaRn8tQLzN4XLIxXejpHN9Qo8x8jjBmAAKp6FoS51AgkSA/A==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz", + "integrity": "sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1197,12 +1122,11 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.25.7.tgz", - "integrity": "sha512-yjqtpstPfZ0h/y40fAXRv2snciYr0OAoMXY/0ClC7tm4C/nG5NJKmIItlaYlLbIVAWNfrYuy9dq1bE0SbX0PEg==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", + "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1212,11 +1136,11 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.8.tgz", - "integrity": "sha512-sPtYrduWINTQTW7FtOy99VCTWp4H23UX7vYcut7S4CIMEXU+54zKX9uCoGkLsWXteyaMXzVHgzWbLfQ1w4GZgw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz", + "integrity": "sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1226,12 +1150,12 @@ } }, "node_modules/@babel/plugin-transform-flow-strip-types": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.25.7.tgz", - "integrity": "sha512-q8Td2PPc6/6I73g96SreSUCKEcwMXCwcXSIAVTyTTN6CpJe0dMj8coxu1fg1T9vfBLi6Rsi6a4ECcFBbKabS5w==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.26.5.tgz", + "integrity": "sha512-eGK26RsbIkYUns3Y8qKl362juDDYK+wEdPGHGrhzUl6CewZFo55VZ7hg+CyMFU4dd5QQakBN86nBMpRsFpRvbQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/plugin-syntax-flow": "^7.25.7" + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/plugin-syntax-flow": "^7.26.0" }, "engines": { "node": ">=6.9.0" @@ -1241,12 +1165,12 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.7.tgz", - "integrity": "sha512-n/TaiBGJxYFWvpJDfsxSj9lEEE44BFM1EPGz4KEiTipTgkoFVVcCmzAL3qA7fdQU96dpo4gGf5HBx/KnDvqiHw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.25.9.tgz", + "integrity": "sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1256,13 +1180,13 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.7.tgz", - "integrity": "sha512-5MCTNcjCMxQ63Tdu9rxyN6cAWurqfrDZ76qvVPrGYdBxIj+EawuuxTu/+dgJlhK5eRz3v1gLwp6XwS8XaX2NiQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz", + "integrity": "sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==", "dependencies": { - "@babel/helper-compilation-targets": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1272,11 +1196,11 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.8.tgz", - "integrity": "sha512-4OMNv7eHTmJ2YXs3tvxAfa/I43di+VcF+M4Wt66c88EAED1RoGaf1D64cL5FkRpNL+Vx9Hds84lksWvd/wMIdA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz", + "integrity": "sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1286,11 +1210,11 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.7.tgz", - "integrity": "sha512-fwzkLrSu2fESR/cm4t6vqd7ebNIopz2QHGtjoU+dswQo/P6lwAG04Q98lliE3jkz/XqnbGFLnUcE0q0CVUf92w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz", + "integrity": "sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1300,11 +1224,11 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.8.tgz", - "integrity": "sha512-f5W0AhSbbI+yY6VakT04jmxdxz+WsID0neG7+kQZbCOjuyJNdL5Nn4WIBm4hRpKnUcO9lP0eipUhFN12JpoH8g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz", + "integrity": "sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1314,11 +1238,11 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.7.tgz", - "integrity": "sha512-Std3kXwpXfRV0QtQy5JJcRpkqP8/wG4XL7hSKZmGlxPlDqmpXtEPRmhF7ztnlTCtUN3eXRUJp+sBEZjaIBVYaw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz", + "integrity": "sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1328,12 +1252,12 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.7.tgz", - "integrity": "sha512-CgselSGCGzjQvKzghCvDTxKHP3iooenLpJDO842ehn5D2G5fJB222ptnDwQho0WjEvg7zyoxb9P+wiYxiJX5yA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz", + "integrity": "sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==", "dependencies": { - "@babel/helper-module-transforms": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1343,13 +1267,12 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.7.tgz", - "integrity": "sha512-L9Gcahi0kKFYXvweO6n0wc3ZG1ChpSFdgG+eV1WYZ3/dGbJK7vvk91FgGgak8YwRgrCuihF8tE/Xg07EkL5COg==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", + "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", "dependencies": { - "@babel/helper-module-transforms": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-simple-access": "^7.25.7" + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1359,14 +1282,14 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.7.tgz", - "integrity": "sha512-t9jZIvBmOXJsiuyOwhrIGs8dVcD6jDyg2icw1VL4A/g+FnWyJKwUfSSU2nwJuMV2Zqui856El9u+ElB+j9fV1g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz", + "integrity": "sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==", "dependencies": { - "@babel/helper-module-transforms": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-validator-identifier": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1376,12 +1299,12 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.7.tgz", - "integrity": "sha512-p88Jg6QqsaPh+EB7I9GJrIqi1Zt4ZBHUQtjw3z1bzEXcLh6GfPqzZJ6G+G1HBGKUNukT58MnKG7EN7zXQBCODw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz", + "integrity": "sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==", "dependencies": { - "@babel/helper-module-transforms": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1391,12 +1314,12 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.7.tgz", - "integrity": "sha512-BtAT9LzCISKG3Dsdw5uso4oV1+v2NlVXIIomKJgQybotJY3OwCwJmkongjHgwGKoZXd0qG5UZ12JUlDQ07W6Ow==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz", + "integrity": "sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1406,11 +1329,11 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.7.tgz", - "integrity": "sha512-CfCS2jDsbcZaVYxRFo2qtavW8SpdzmBXC2LOI4oO0rP+JSRDxxF3inF4GcPsLgfb5FjkhXG5/yR/lxuRs2pySA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz", + "integrity": "sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1420,11 +1343,11 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.25.8.tgz", - "integrity": "sha512-Z7WJJWdQc8yCWgAmjI3hyC+5PXIubH9yRKzkl9ZEG647O9szl9zvmKLzpbItlijBnVhTUf1cpyWBsZ3+2wjWPQ==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.5.tgz", + "integrity": "sha512-OHqczNm4NTQlW1ghrVY43FPoiRzbmzNVbcgVnMKZN/RQYezHUSdjACjaX50CD3B7UIAjv39+MlsrVDb3v741FA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -1434,11 +1357,11 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.8.tgz", - "integrity": "sha512-rm9a5iEFPS4iMIy+/A/PiS0QN0UyjPIeVvbU5EMZFKJZHt8vQnasbpo3T3EFcxzCeYO0BHfc4RqooCZc51J86Q==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz", + "integrity": "sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1448,13 +1371,13 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.8.tgz", - "integrity": "sha512-LkUu0O2hnUKHKE7/zYOIjByMa4VRaV2CD/cdGz0AxU9we+VA3kDDggKEzI0Oz1IroG+6gUP6UmWEHBMWZU316g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz", + "integrity": "sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==", "dependencies": { - "@babel/helper-compilation-targets": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/plugin-transform-parameters": "^7.25.7" + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1464,12 +1387,12 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.7.tgz", - "integrity": "sha512-pWT6UXCEW3u1t2tcAGtE15ornCBvopHj9Bps9D2DsH15APgNVOTwwczGckX+WkAvBmuoYKRCFa4DK+jM8vh5AA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz", + "integrity": "sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-replace-supers": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1479,11 +1402,11 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.8.tgz", - "integrity": "sha512-EbQYweoMAHOn7iJ9GgZo14ghhb9tTjgOc88xFgYngifx7Z9u580cENCV159M4xDh3q/irbhSjZVpuhpC2gKBbg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz", + "integrity": "sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1493,12 +1416,12 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.8.tgz", - "integrity": "sha512-q05Bk7gXOxpTHoQ8RSzGSh/LHVB9JEIkKnk3myAWwZHnYiTGYtbdrYkIsS8Xyh4ltKf7GNUSgzs/6P2bJtBAQg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz", + "integrity": "sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1508,11 +1431,11 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.7.tgz", - "integrity": "sha512-FYiTvku63me9+1Nz7TOx4YMtW3tWXzfANZtrzHhUZrz4d47EEtMQhzFoZWESfXuAMMT5mwzD4+y1N8ONAX6lMQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz", + "integrity": "sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1522,12 +1445,12 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.7.tgz", - "integrity": "sha512-KY0hh2FluNxMLwOCHbxVOKfdB5sjWG4M183885FmaqWWiGMhRZq4DQRKH6mHdEucbJnyDyYiZNwNG424RymJjA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", + "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1537,13 +1460,13 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.8.tgz", - "integrity": "sha512-8Uh966svuB4V8RHHg0QJOB32QK287NBksJOByoKmHMp1TAobNniNalIkI2i5IPj5+S9NYCG4VIjbEuiSN8r+ow==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz", + "integrity": "sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "@babel/helper-create-class-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1553,11 +1476,11 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.7.tgz", - "integrity": "sha512-lQEeetGKfFi0wHbt8ClQrUSUMfEeI3MMm74Z73T9/kuz990yYVtfofjf3NuA42Jy3auFOpbjDyCSiIkTs1VIYw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz", + "integrity": "sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1567,11 +1490,11 @@ } }, "node_modules/@babel/plugin-transform-react-constant-elements": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.25.7.tgz", - "integrity": "sha512-/qXt69Em8HgsjCLu7G3zdIQn7A2QwmYND7Wa0LTp09Na+Zn8L5d0A7wSXrKi18TJRc/Q5S1i1De/SU1LzVkSvA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.25.9.tgz", + "integrity": "sha512-Ncw2JFsJVuvfRsa2lSHiC55kETQVLSnsYGQ1JDDwkUeWGTL/8Tom8aLTnlqgoeuopWrbbGndrc9AlLYrIosrow==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1581,11 +1504,11 @@ } }, "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.7.tgz", - "integrity": "sha512-r0QY7NVU8OnrwE+w2IWiRom0wwsTbjx4+xH2RTd7AVdof3uurXOF+/mXHQDRk+2jIvWgSaCHKMgggfvM4dyUGA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz", + "integrity": "sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1595,15 +1518,15 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.7.tgz", - "integrity": "sha512-vILAg5nwGlR9EXE8JIOX4NHXd49lrYbN8hnjffDtoULwpL9hUx/N55nqh2qd0q6FyNDfjl9V79ecKGvFbcSA0Q==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz", + "integrity": "sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "@babel/helper-module-imports": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/plugin-syntax-jsx": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-syntax-jsx": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1613,11 +1536,11 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-development": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.7.tgz", - "integrity": "sha512-5yd3lH1PWxzW6IZj+p+Y4OLQzz0/LzlOG8vGqonHfVR3euf1vyzyMUJk9Ac+m97BH46mFc/98t9PmYLyvgL3qg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz", + "integrity": "sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==", "dependencies": { - "@babel/plugin-transform-react-jsx": "^7.25.7" + "@babel/plugin-transform-react-jsx": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1627,12 +1550,12 @@ } }, "node_modules/@babel/plugin-transform-react-pure-annotations": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.7.tgz", - "integrity": "sha512-6YTHJ7yjjgYqGc8S+CbEXhLICODk0Tn92j+vNJo07HFk9t3bjFgAKxPLFhHwF2NjmQVSI1zBRfBWUeVBa2osfA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz", + "integrity": "sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1642,11 +1565,11 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.7.tgz", - "integrity": "sha512-mgDoQCRjrY3XK95UuV60tZlFCQGXEtMg8H+IsW72ldw1ih1jZhzYXbJvghmAEpg5UVhhnCeia1CkGttUvCkiMQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.25.9.tgz", + "integrity": "sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.9", "regenerator-transform": "^0.15.2" }, "engines": { @@ -1656,12 +1579,27 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz", + "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.7.tgz", - "integrity": "sha512-3OfyfRRqiGeOvIWSagcwUTVk2hXBsr/ww7bLn6TRTuXnexA+Udov2icFOxFX9abaj4l96ooYkcNN1qi2Zvqwng==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz", + "integrity": "sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1671,12 +1609,12 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.7.tgz", - "integrity": "sha512-Y9p487tyTzB0yDYQOtWnC+9HGOuogtP3/wNpun1xJXEEvI6vip59BSBTsHnekZLqxmPcgsrAKt46HAAb//xGhg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.25.9.tgz", + "integrity": "sha512-nZp7GlEl+yULJrClz0SwHPqir3lc0zsPrDHQUcxGspSL7AKrexNSEfTbfqnDNJUO13bgKyfuOLMF8Xqtu8j3YQ==", "dependencies": { - "@babel/helper-module-imports": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", "babel-plugin-polyfill-corejs2": "^0.4.10", "babel-plugin-polyfill-corejs3": "^0.10.6", "babel-plugin-polyfill-regenerator": "^0.6.1", @@ -1698,11 +1636,11 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.7.tgz", - "integrity": "sha512-uBbxNwimHi5Bv3hUccmOFlUy3ATO6WagTApenHz9KzoIdn0XeACdB12ZJ4cjhuB2WSi80Ez2FWzJnarccriJeA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz", + "integrity": "sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1712,12 +1650,12 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.7.tgz", - "integrity": "sha512-Mm6aeymI0PBh44xNIv/qvo8nmbkpZze1KvR8MkEqbIREDxoiWTi18Zr2jryfRMwDfVZF9foKh060fWgni44luw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz", + "integrity": "sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1727,11 +1665,11 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.7.tgz", - "integrity": "sha512-ZFAeNkpGuLnAQ/NCsXJ6xik7Id+tHuS+NT+ue/2+rn/31zcdnupCdmunOizEaP0JsUmTFSTOPoQY7PkK2pttXw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz", + "integrity": "sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1741,11 +1679,11 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.7.tgz", - "integrity": "sha512-SI274k0nUsFFmyQupiO7+wKATAmMFf8iFgq2O+vVFXZ0SV9lNfT1NGzBEhjquFmD8I9sqHLguH+gZVN3vww2AA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.25.9.tgz", + "integrity": "sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1755,11 +1693,11 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.7.tgz", - "integrity": "sha512-OmWmQtTHnO8RSUbL0NTdtpbZHeNTnm68Gj5pA4Y2blFNh+V4iZR68V1qL9cI37J21ZN7AaCnkfdHtLExQPf2uA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.25.9.tgz", + "integrity": "sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1769,15 +1707,15 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.7.tgz", - "integrity": "sha512-VKlgy2vBzj8AmEzunocMun2fF06bsSWV+FvVXohtL6FGve/+L217qhHxRTVGHEDO/YR8IANcjzgJsd04J8ge5Q==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.5.tgz", + "integrity": "sha512-GJhPO0y8SD5EYVCy2Zr+9dSZcEgaSmq5BLR0Oc25TOEhC+ba49vUAGZFjy8v79z9E1mdldq4x9d1xgh4L1d5dQ==", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "@babel/helper-create-class-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7", - "@babel/plugin-syntax-typescript": "^7.25.7" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-syntax-typescript": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1787,11 +1725,11 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.7.tgz", - "integrity": "sha512-BN87D7KpbdiABA+t3HbVqHzKWUDN3dymLaTnPFAMyc8lV+KN3+YzNhVRNdinaCPA4AUqx7ubXbQ9shRjYBl3SQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz", + "integrity": "sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1801,12 +1739,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.7.tgz", - "integrity": "sha512-IWfR89zcEPQGB/iB408uGtSPlQd3Jpq11Im86vUgcmSTcoWAiQMCTOa2K2yNNqFJEBVICKhayctee65Ka8OB0w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz", + "integrity": "sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1816,12 +1754,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.7.tgz", - "integrity": "sha512-8JKfg/hiuA3qXnlLx8qtv5HWRbgyFx2hMMtpDDuU2rTckpKkGu4ycK5yYHwuEa16/quXfoxHBIApEsNyMWnt0g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz", + "integrity": "sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1831,12 +1769,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.7.tgz", - "integrity": "sha512-YRW8o9vzImwmh4Q3Rffd09bH5/hvY0pxg+1H1i0f7APoUeg12G7+HhLj9ZFNIrYkgBXhIijPJ+IXypN0hLTIbw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz", + "integrity": "sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7" + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1846,72 +1784,73 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.25.8.tgz", - "integrity": "sha512-58T2yulDHMN8YMUxiLq5YmWUnlDCyY1FsHM+v12VMx+1/FlrUj5tY50iDCpofFQEM8fMYOaY9YRvym2jcjn1Dg==", - "dependencies": { - "@babel/compat-data": "^7.25.8", - "@babel/helper-compilation-targets": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-validator-option": "^7.25.7", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.7", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.7", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.7", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.7", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.0.tgz", + "integrity": "sha512-H84Fxq0CQJNdPFT2DrfnylZ3cf5K43rGfWK4LJGPpjKHiZlk0/RzwEus3PDDZZg+/Er7lCA03MVacueUuXdzfw==", + "dependencies": { + "@babel/compat-data": "^7.26.0", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.25.7", - "@babel/plugin-syntax-import-attributes": "^7.25.7", + "@babel/plugin-syntax-import-assertions": "^7.26.0", + "@babel/plugin-syntax-import-attributes": "^7.26.0", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.25.7", - "@babel/plugin-transform-async-generator-functions": "^7.25.8", - "@babel/plugin-transform-async-to-generator": "^7.25.7", - "@babel/plugin-transform-block-scoped-functions": "^7.25.7", - "@babel/plugin-transform-block-scoping": "^7.25.7", - "@babel/plugin-transform-class-properties": "^7.25.7", - "@babel/plugin-transform-class-static-block": "^7.25.8", - "@babel/plugin-transform-classes": "^7.25.7", - "@babel/plugin-transform-computed-properties": "^7.25.7", - "@babel/plugin-transform-destructuring": "^7.25.7", - "@babel/plugin-transform-dotall-regex": "^7.25.7", - "@babel/plugin-transform-duplicate-keys": "^7.25.7", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.7", - "@babel/plugin-transform-dynamic-import": "^7.25.8", - "@babel/plugin-transform-exponentiation-operator": "^7.25.7", - "@babel/plugin-transform-export-namespace-from": "^7.25.8", - "@babel/plugin-transform-for-of": "^7.25.7", - "@babel/plugin-transform-function-name": "^7.25.7", - "@babel/plugin-transform-json-strings": "^7.25.8", - "@babel/plugin-transform-literals": "^7.25.7", - "@babel/plugin-transform-logical-assignment-operators": "^7.25.8", - "@babel/plugin-transform-member-expression-literals": "^7.25.7", - "@babel/plugin-transform-modules-amd": "^7.25.7", - "@babel/plugin-transform-modules-commonjs": "^7.25.7", - "@babel/plugin-transform-modules-systemjs": "^7.25.7", - "@babel/plugin-transform-modules-umd": "^7.25.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.7", - "@babel/plugin-transform-new-target": "^7.25.7", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.8", - "@babel/plugin-transform-numeric-separator": "^7.25.8", - "@babel/plugin-transform-object-rest-spread": "^7.25.8", - "@babel/plugin-transform-object-super": "^7.25.7", - "@babel/plugin-transform-optional-catch-binding": "^7.25.8", - "@babel/plugin-transform-optional-chaining": "^7.25.8", - "@babel/plugin-transform-parameters": "^7.25.7", - "@babel/plugin-transform-private-methods": "^7.25.7", - "@babel/plugin-transform-private-property-in-object": "^7.25.8", - "@babel/plugin-transform-property-literals": "^7.25.7", - "@babel/plugin-transform-regenerator": "^7.25.7", - "@babel/plugin-transform-reserved-words": "^7.25.7", - "@babel/plugin-transform-shorthand-properties": "^7.25.7", - "@babel/plugin-transform-spread": "^7.25.7", - "@babel/plugin-transform-sticky-regex": "^7.25.7", - "@babel/plugin-transform-template-literals": "^7.25.7", - "@babel/plugin-transform-typeof-symbol": "^7.25.7", - "@babel/plugin-transform-unicode-escapes": "^7.25.7", - "@babel/plugin-transform-unicode-property-regex": "^7.25.7", - "@babel/plugin-transform-unicode-regex": "^7.25.7", - "@babel/plugin-transform-unicode-sets-regex": "^7.25.7", + "@babel/plugin-transform-arrow-functions": "^7.25.9", + "@babel/plugin-transform-async-generator-functions": "^7.25.9", + "@babel/plugin-transform-async-to-generator": "^7.25.9", + "@babel/plugin-transform-block-scoped-functions": "^7.25.9", + "@babel/plugin-transform-block-scoping": "^7.25.9", + "@babel/plugin-transform-class-properties": "^7.25.9", + "@babel/plugin-transform-class-static-block": "^7.26.0", + "@babel/plugin-transform-classes": "^7.25.9", + "@babel/plugin-transform-computed-properties": "^7.25.9", + "@babel/plugin-transform-destructuring": "^7.25.9", + "@babel/plugin-transform-dotall-regex": "^7.25.9", + "@babel/plugin-transform-duplicate-keys": "^7.25.9", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-dynamic-import": "^7.25.9", + "@babel/plugin-transform-exponentiation-operator": "^7.25.9", + "@babel/plugin-transform-export-namespace-from": "^7.25.9", + "@babel/plugin-transform-for-of": "^7.25.9", + "@babel/plugin-transform-function-name": "^7.25.9", + "@babel/plugin-transform-json-strings": "^7.25.9", + "@babel/plugin-transform-literals": "^7.25.9", + "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", + "@babel/plugin-transform-member-expression-literals": "^7.25.9", + "@babel/plugin-transform-modules-amd": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.25.9", + "@babel/plugin-transform-modules-systemjs": "^7.25.9", + "@babel/plugin-transform-modules-umd": "^7.25.9", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-new-target": "^7.25.9", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.9", + "@babel/plugin-transform-numeric-separator": "^7.25.9", + "@babel/plugin-transform-object-rest-spread": "^7.25.9", + "@babel/plugin-transform-object-super": "^7.25.9", + "@babel/plugin-transform-optional-catch-binding": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9", + "@babel/plugin-transform-private-methods": "^7.25.9", + "@babel/plugin-transform-private-property-in-object": "^7.25.9", + "@babel/plugin-transform-property-literals": "^7.25.9", + "@babel/plugin-transform-regenerator": "^7.25.9", + "@babel/plugin-transform-regexp-modifiers": "^7.26.0", + "@babel/plugin-transform-reserved-words": "^7.25.9", + "@babel/plugin-transform-shorthand-properties": "^7.25.9", + "@babel/plugin-transform-spread": "^7.25.9", + "@babel/plugin-transform-sticky-regex": "^7.25.9", + "@babel/plugin-transform-template-literals": "^7.25.9", + "@babel/plugin-transform-typeof-symbol": "^7.25.9", + "@babel/plugin-transform-unicode-escapes": "^7.25.9", + "@babel/plugin-transform-unicode-property-regex": "^7.25.9", + "@babel/plugin-transform-unicode-regex": "^7.25.9", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", "@babel/preset-modules": "0.1.6-no-external-plugins", "babel-plugin-polyfill-corejs2": "^0.4.10", "babel-plugin-polyfill-corejs3": "^0.10.6", @@ -1948,16 +1887,16 @@ } }, "node_modules/@babel/preset-react": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.25.7.tgz", - "integrity": "sha512-GjV0/mUEEXpi1U5ZgDprMRRgajGMRW3G5FjMr5KLKD8nT2fTG8+h/klV3+6Dm5739QE+K5+2e91qFKAYI3pmRg==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.26.3.tgz", + "integrity": "sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-validator-option": "^7.25.7", - "@babel/plugin-transform-react-display-name": "^7.25.7", - "@babel/plugin-transform-react-jsx": "^7.25.7", - "@babel/plugin-transform-react-jsx-development": "^7.25.7", - "@babel/plugin-transform-react-pure-annotations": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-transform-react-display-name": "^7.25.9", + "@babel/plugin-transform-react-jsx": "^7.25.9", + "@babel/plugin-transform-react-jsx-development": "^7.25.9", + "@babel/plugin-transform-react-pure-annotations": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1967,15 +1906,15 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.25.7.tgz", - "integrity": "sha512-rkkpaXJZOFN45Fb+Gki0c+KMIglk4+zZXOoMJuyEK8y8Kkc8Jd3BDmP7qPsz0zQMJj+UD7EprF+AqAXcILnexw==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.26.0.tgz", + "integrity": "sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-validator-option": "^7.25.7", - "@babel/plugin-syntax-jsx": "^7.25.7", - "@babel/plugin-transform-modules-commonjs": "^7.25.7", - "@babel/plugin-transform-typescript": "^7.25.7" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-syntax-jsx": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.25.9", + "@babel/plugin-transform-typescript": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1985,9 +1924,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz", - "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", + "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -1996,28 +1935,28 @@ } }, "node_modules/@babel/template": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.7.tgz", - "integrity": "sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", "dependencies": { - "@babel/code-frame": "^7.25.7", - "@babel/parser": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz", - "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==", - "dependencies": { - "@babel/code-frame": "^7.25.7", - "@babel/generator": "^7.25.7", - "@babel/parser": "^7.25.7", - "@babel/template": "^7.25.7", - "@babel/types": "^7.25.7", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.5.tgz", + "integrity": "sha512-rkOSPOw+AXbgtwUga3U4u8RpoK9FEFWBNAlTpcnkLFjL5CT+oyHNuUUC/xx6XefEJ16r38r8Bc/lfp6rYuHeJQ==", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.5", + "@babel/parser": "^7.26.5", + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.5", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -2034,13 +1973,12 @@ } }, "node_modules/@babel/types": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.8.tgz", - "integrity": "sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.5.tgz", + "integrity": "sha512-L6mZmwFDK6Cjh1nRCLXpa6no13ZIioJDz7mdkzHv399pThrTa/k0nUlNaenOeh2kWu/iaOQYElEpKPUswUa9Vg==", "dependencies": { - "@babel/helper-string-parser": "^7.25.7", - "@babel/helper-validator-identifier": "^7.25.7", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2051,6 +1989,16 @@ "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==" }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, "node_modules/@csstools/normalize.css": { "version": "12.1.1", "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.1.1.tgz", @@ -2321,20 +2269,82 @@ "postcss-selector-parser": "^6.0.10" } }, + "node_modules/@cypress/request": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.7.tgz", + "integrity": "sha512-LzxlLEMbBOPYB85uXrDqvD4MgcenjRBLIns3zyhx7vTPj/0u2eQhzXvPiGcaJrV38Q9dbkExWp6cOHPJ+EtFYg==", + "dev": true, + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~4.0.0", + "http-signature": "~1.4.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "performance-now": "^2.1.0", + "qs": "6.13.1", + "safe-buffer": "^5.1.2", + "tough-cookie": "^5.0.0", + "tunnel-agent": "^0.6.0", + "uuid": "^8.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@cypress/xvfb": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", + "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", + "dev": true, + "dependencies": { + "debug": "^3.1.0", + "lodash.once": "^4.1.1" + } + }, + "node_modules/@cypress/xvfb/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", "dependencies": { - "eslint-visitor-keys": "^3.3.0" + "eslint-visitor-keys": "^3.4.3" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + }, "peerDependencies": { "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/@eslint-community/regexpp": { "version": "4.12.1", "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", @@ -2344,11 +2354,11 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", - "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.1.tgz", + "integrity": "sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==", "dependencies": { - "@eslint/object-schema": "^2.1.4", + "@eslint/object-schema": "^2.1.5", "debug": "^4.3.1", "minimatch": "^3.1.2" }, @@ -2357,17 +2367,20 @@ } }, "node_modules/@eslint/core": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.7.0.tgz", - "integrity": "sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==", + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz", + "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/eslintrc": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", - "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", + "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -2386,11 +2399,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "14.0.0", "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", @@ -2402,44 +2410,87 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/@eslint/js": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.14.0.tgz", - "integrity": "sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==", + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.18.0.tgz", + "integrity": "sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/object-schema": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", - "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.5.tgz", + "integrity": "sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.0.tgz", - "integrity": "sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz", + "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==", "dependencies": { + "@eslint/core": "^0.10.0", "levn": "^0.4.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.7.2.tgz", + "integrity": "sha512-Zs+YeHUC5fkt7Mg1l6XTniei3k4bwG/yo3iFUtZWd/pMx9g3fdvkSK9E0FOC+++phXOka78uJcYb8JaFkW52Xg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-svg-core": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.7.2.tgz", + "integrity": "sha512-yxtOBWDrdi5DD5o1pmVdq3WMCvnobT0LU6R8RyyVXPvFRd2o79/0NCuQoCjNTeZz9EzA9xS3JxNWfv54RIHFEA==", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.7.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-regular-svg-icons": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.7.2.tgz", + "integrity": "sha512-7Z/ur0gvCMW8G93dXIQOkQqHo2M5HLhYrRVC0//fakJXxcF1VmMPsxnG6Ee8qEylA8b8Q3peQXWMNZ62lYF28g==", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.7.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/free-solid-svg-icons": { + "version": "6.7.2", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.7.2.tgz", + "integrity": "sha512-GsBrnOzU8uj0LECDfD5zomZJIjrPhIlWU82AHwa2s40FKH+kcxQaBvBo3Z4TxyZHIyX8XTDxsyA33/Vx9eFuQA==", + "dependencies": { + "@fortawesome/fontawesome-common-types": "6.7.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/react-fontawesome": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.2.tgz", + "integrity": "sha512-EnkrprPNqI6SXJl//m29hpaNzOp1bruISWaOiRtkMi/xSvHJlzc2j2JAYS7egxt/EbjSNV/k6Xy0AQI6vB2+1g==", + "dependencies": { + "prop-types": "^15.8.1" + }, + "peerDependencies": { + "@fortawesome/fontawesome-svg-core": "~1 || ~6", + "react": ">=16.3" + } + }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -2554,6 +2605,11 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, "node_modules/@isaacs/cliui/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", @@ -2615,6 +2671,14 @@ "node": ">=8" } }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", @@ -2623,46 +2687,114 @@ "node": ">=6" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/@jest/console": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", - "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dependencies": { - "@jest/types": "^27.5.1", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^27.5.1", - "jest-util": "^27.5.1", - "slash": "^3.0.0" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@jest/console/node_modules/@jest/types": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", - "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" } }, - "node_modules/@jest/console/node_modules/@types/yargs": { + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.5.1.tgz", + "integrity": "sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==", + "dependencies": { + "@jest/types": "^27.5.1", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^27.5.1", + "jest-util": "^27.5.1", + "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/console/node_modules/@jest/types": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^16.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/@jest/console/node_modules/@types/yargs": { "version": "16.0.9", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", @@ -2670,6 +2802,20 @@ "@types/yargs-parser": "*" } }, + "node_modules/@jest/console/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/console/node_modules/jest-message-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", @@ -2774,6 +2920,20 @@ "@types/yargs-parser": "*" } }, + "node_modules/@jest/core/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/core/node_modules/jest-message-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", @@ -2896,6 +3056,20 @@ "@types/yargs-parser": "*" } }, + "node_modules/@jest/fake-timers/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/fake-timers/node_modules/jest-message-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", @@ -3110,6 +3284,20 @@ "@types/yargs-parser": "*" } }, + "node_modules/@jest/reporters/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/reporters/node_modules/jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", @@ -3265,6 +3453,20 @@ "@types/yargs-parser": "*" } }, + "node_modules/@jest/transform/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, "node_modules/@jest/transform/node_modules/convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", @@ -3311,9 +3513,9 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -3494,9 +3696,9 @@ } }, "node_modules/@remix-run/router": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.19.2.tgz", - "integrity": "sha512-baiMx18+IMuD1yyvOGaHM9QrVUPGGG0jC+z+IPHnRJWUAUvaKuWKyE8gjDj2rzv3sz9zOGoRSPgeBVHRhZnBlA==", + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.21.0.tgz", + "integrity": "sha512-xfSkCAchbdG5PnbrKqFWwia4Bi61nH+wm8wLEqfHDyp7Y3dZzgqS2itV8i4gAq9pC2HsTpwyBC6Ds8VHZ96JlA==", "dev": true, "engines": { "node": ">=14.0.0" @@ -3543,6 +3745,25 @@ "rollup": "^1.20.0||^2.0.0" } }, + "node_modules/@rollup/plugin-node-resolve/node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/@rollup/plugin-replace": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/@rollup/plugin-replace/-/plugin-replace-2.4.2.tgz", @@ -3582,9 +3803,9 @@ "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==" }, "node_modules/@rushstack/eslint-patch": { - "version": "1.10.4", - "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.4.tgz", - "integrity": "sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==" + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.10.5.tgz", + "integrity": "sha512-kkKUDVlII2DQiKy7UstOR1ErJP8kUKAQ4oa+SQtM0K+lPdmmjj0YnnxBgtTVYH7mUKtbsxeFC9y0AmK7Yb78/A==" }, "node_modules/@sinclair/typebox": { "version": "0.27.8", @@ -4028,14 +4249,23 @@ } }, "node_modules/@types/eslint": { - "version": "8.56.12", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.12.tgz", - "integrity": "sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==", + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" } }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", @@ -4053,9 +4283,9 @@ } }, "node_modules/@types/express-serve-static-core": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.0.tgz", - "integrity": "sha512-AbXMTZGt40T+KON9/Fdxx0B2WK5hsgxcfXJLr5bFpZ7b4JCex2WyQPTEKdXqfHiY5nKKBScZ7yCoO6Pvgxfvnw==", + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.4.tgz", + "integrity": "sha512-5kz9ScmzBdzTgB/3susoCgfqNDzBjvLL4taparufgSvlwjdLy6UyUy9T/tCpYd2GIdIilCatC4iSQS0QSYHt0w==", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -4122,9 +4352,9 @@ } }, "node_modules/@types/jest": { - "version": "29.5.13", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.13.tgz", - "integrity": "sha512-wd+MVEZCHt23V0/L642O5APvspWply/rGY5BcW4SUETo2UzPU3Z26qr8jC2qxpimI2jjx9h7+2cj2FwIr01bXg==", + "version": "29.5.14", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", + "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", "dependencies": { "expect": "^29.0.0", "pretty-format": "^29.0.0" @@ -4175,11 +4405,11 @@ "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==" }, "node_modules/@types/node": { - "version": "22.7.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", - "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", + "version": "22.10.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.5.tgz", + "integrity": "sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==", "dependencies": { - "undici-types": "~6.19.2" + "undici-types": "~6.20.0" } }, "node_modules/@types/node-forge": { @@ -4201,9 +4431,10 @@ "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==" }, "node_modules/@types/prop-types": { - "version": "15.7.13", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", - "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==" + "version": "15.7.14", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.14.tgz", + "integrity": "sha512-gNMvNH49DJ7OJYv+KAKn0Xp45p8PLl6zo2YnvDIbTd4J6MER2BmWN49TG7n9LvkyihINxeKW8+3bfS2yDC9dzQ==", + "peer": true }, "node_modules/@types/q": { "version": "1.5.8", @@ -4211,9 +4442,9 @@ "integrity": "sha512-hroOstUScF6zhIi+5+x0dzqrHA1EJi+Irri6b1fxolMTqqHIV/Cg77EtnQcZqZCu8hR3mX2BzIxN4/GzI68Kfw==" }, "node_modules/@types/qs": { - "version": "6.9.16", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.16.tgz", - "integrity": "sha512-7i+zxXdPD0T4cKDuxCUXJ4wHcsJLwENa6Z3dCu8cfCK743OGy5Nu1RmAGqDPsoTDINVEcdXKRvR/zre+P2Ku1A==" + "version": "6.9.17", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.17.tgz", + "integrity": "sha512-rX4/bPcfmvxHDv0XjfJELTTr+iB+tn032nPILqHm5wbthUUUuVtNGGqzhya9XUxjTP8Fpr0qYgSZZKxGY++svQ==" }, "node_modules/@types/range-parser": { "version": "1.2.7", @@ -4221,20 +4452,21 @@ "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==" }, "node_modules/@types/react": { - "version": "18.3.11", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.11.tgz", - "integrity": "sha512-r6QZ069rFTjrEYgFdOck1gK7FLVsgJE7tTz0pQBczlBNUhBNk0MQH4UbnFSwjpQLMkLzgqvBBa+qGpLje16eTQ==", + "version": "18.3.18", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.18.tgz", + "integrity": "sha512-t4yC+vtgnkYjNSKlFx1jkAhH8LgTo2N/7Qvi83kdEaUtMDiwpbLAktKDaAMlRcJ5eSxZkH74eEGt1ky31d7kfQ==", + "peer": true, "dependencies": { "@types/prop-types": "*", "csstype": "^3.0.2" } }, "node_modules/@types/react-dom": { - "version": "18.3.0", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.0.tgz", - "integrity": "sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==", - "dependencies": { - "@types/react": "*" + "version": "18.3.5", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.5.tgz", + "integrity": "sha512-P4t6saawp+b/dFrUr2cvkVsfvPguwsxtH6dNIYRllMsefqFzkZk5UIjzyDOv5g1dXIPdG4Sp1yCR4Z6RCUsG/Q==", + "peerDependencies": { + "@types/react": "^18.0.0" } }, "node_modules/@types/resolve": { @@ -4282,6 +4514,18 @@ "@types/send": "*" } }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", + "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", + "dev": true + }, + "node_modules/@types/sizzle": { + "version": "2.3.9", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.9.tgz", + "integrity": "sha512-xzLEyKB50yqCUPUJkIsrVvoWNfFUbIZI+RspLWt8u+tIW/BetMBZtgV2LY/2o+tYH8dRvQ+eoPf3NdhQCcLE2w==", + "dev": true + }, "node_modules/@types/sockjs": { "version": "0.3.36", "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", @@ -4309,9 +4553,9 @@ "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" }, "node_modules/@types/ws": { - "version": "8.5.12", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", - "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", + "version": "8.5.13", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.13.tgz", + "integrity": "sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==", "dependencies": { "@types/node": "*" } @@ -4329,21 +4573,31 @@ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "dev": true, + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.13.0.tgz", - "integrity": "sha512-nQtBLiZYMUPkclSeC3id+x4uVd1SGtHuElTxL++SfP47jR0zfkZBJHc+gL4qPsgTuypz0k8Y2GheaDYn6Gy3rg==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.19.1.tgz", + "integrity": "sha512-tJzcVyvvb9h/PB96g30MpxACd9IrunT7GF9wfA9/0TJ1LxGOJx1TdPzSbBBnNED7K9Ka8ybJsnEpiXPktolTLg==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.13.0", - "@typescript-eslint/type-utils": "8.13.0", - "@typescript-eslint/utils": "8.13.0", - "@typescript-eslint/visitor-keys": "8.13.0", + "@typescript-eslint/scope-manager": "8.19.1", + "@typescript-eslint/type-utils": "8.19.1", + "@typescript-eslint/utils": "8.19.1", + "@typescript-eslint/visitor-keys": "8.19.1", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "ts-api-utils": "^1.3.0" + "ts-api-utils": "^2.0.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4354,24 +4608,20 @@ }, "peerDependencies": { "@typescript-eslint/parser": "^8.0.0 || ^8.0.0-alpha.0", - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.13.0.tgz", - "integrity": "sha512-w0xp+xGg8u/nONcGw1UXAr6cjCPU1w0XVyBs6Zqaj5eLmxkKQAByTdV/uGgNN5tVvN/kKpoQlP2cL7R+ajZZIQ==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.19.1.tgz", + "integrity": "sha512-67gbfv8rAwawjYx3fYArwldTQKoYfezNUT4D5ioWetr/xCrxXxvleo3uuiFuKfejipvq+og7mjz3b0G2bVyUCw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "8.13.0", - "@typescript-eslint/types": "8.13.0", - "@typescript-eslint/typescript-estree": "8.13.0", - "@typescript-eslint/visitor-keys": "8.13.0", + "@typescript-eslint/scope-manager": "8.19.1", + "@typescript-eslint/types": "8.19.1", + "@typescript-eslint/typescript-estree": "8.19.1", + "@typescript-eslint/visitor-keys": "8.19.1", "debug": "^4.3.4" }, "engines": { @@ -4382,22 +4632,18 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.13.0.tgz", - "integrity": "sha512-XsGWww0odcUT0gJoBZ1DeulY1+jkaHUciUq4jKNv4cpInbvvrtDoyBH9rE/n2V29wQJPk8iCH1wipra9BhmiMA==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.19.1.tgz", + "integrity": "sha512-60L9KIuN/xgmsINzonOcMDSB8p82h95hoBfSBtXuO4jlR1R9L1xSkmVZKgCPVfavDlXihh4ARNjXhh1gGnLC7Q==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.13.0", - "@typescript-eslint/visitor-keys": "8.13.0" + "@typescript-eslint/types": "8.19.1", + "@typescript-eslint/visitor-keys": "8.19.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4408,15 +4654,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.13.0.tgz", - "integrity": "sha512-Rqnn6xXTR316fP4D2pohZenJnp+NwQ1mo7/JM+J1LWZENSLkJI8ID8QNtlvFeb0HnFSK94D6q0cnMX6SbE5/vA==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.19.1.tgz", + "integrity": "sha512-Rp7k9lhDKBMRJB/nM9Ksp1zs4796wVNyihG9/TU9R6KCJDNkQbc2EOKjrBtLYh3396ZdpXLtr/MkaSEmNMtykw==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "8.13.0", - "@typescript-eslint/utils": "8.13.0", + "@typescript-eslint/typescript-estree": "8.19.1", + "@typescript-eslint/utils": "8.19.1", "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" + "ts-api-utils": "^2.0.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4425,16 +4671,15 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/types": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.13.0.tgz", - "integrity": "sha512-4cyFErJetFLckcThRUFdReWJjVsPCqyBlJTi6IDEpc1GWCIIZRFxVppjWLIMcQhNGhdWJJRYFHpHoDWvMlDzng==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.19.1.tgz", + "integrity": "sha512-JBVHMLj7B1K1v1051ZaMMgLW4Q/jre5qGK0Ew6UgXz1Rqh+/xPzV1aW581OM00X6iOfyr1be+QyW8LOUf19BbA==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4445,19 +4690,19 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.13.0.tgz", - "integrity": "sha512-v7SCIGmVsRK2Cy/LTLGN22uea6SaUIlpBcO/gnMGT/7zPtxp90bphcGf4fyrCQl3ZtiBKqVTG32hb668oIYy1g==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.19.1.tgz", + "integrity": "sha512-jk/TZwSMJlxlNnqhy0Eod1PNEvCkpY6MXOXE/WLlblZ6ibb32i2We4uByoKPv1d0OD2xebDv4hbs3fm11SMw8Q==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.13.0", - "@typescript-eslint/visitor-keys": "8.13.0", + "@typescript-eslint/types": "8.19.1", + "@typescript-eslint/visitor-keys": "8.19.1", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" + "ts-api-utils": "^2.0.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4466,10 +4711,8 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { @@ -4497,15 +4740,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.13.0.tgz", - "integrity": "sha512-A1EeYOND6Uv250nybnLZapeXpYMl8tkzYUxqmoKAWnI4sei3ihf2XdZVd+vVOmHGcp3t+P7yRrNsyyiXTvShFQ==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.19.1.tgz", + "integrity": "sha512-IxG5gLO0Ne+KaUc8iW1A+XuKLd63o4wlbI1Zp692n1xojCl/THvgIKXJXBZixTh5dd5+yTJ/VXH7GJaaw21qXA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.13.0", - "@typescript-eslint/types": "8.13.0", - "@typescript-eslint/typescript-estree": "8.13.0" + "@typescript-eslint/scope-manager": "8.19.1", + "@typescript-eslint/types": "8.19.1", + "@typescript-eslint/typescript-estree": "8.19.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4515,17 +4758,18 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.13.0.tgz", - "integrity": "sha512-7N/+lztJqH4Mrf0lb10R/CbI1EaAMMGyF5y0oJvFoAhafwgiRA7TXyd8TFn8FC8k5y2dTsYogg238qavRGNnlw==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.19.1.tgz", + "integrity": "sha512-fzmjU8CHK853V/avYZAvuVut3ZTfwN5YtMaoi+X9Y9MA9keaWNHC3zEQ9zvyX/7Hj+5JkNyK1l7TOR2hevHB6Q==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.13.0", - "eslint-visitor-keys": "^3.4.3" + "@typescript-eslint/types": "8.19.1", + "eslint-visitor-keys": "^4.2.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -4536,138 +4780,138 @@ } }, "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.1.tgz", + "integrity": "sha512-fEzPV3hSkSMltkw152tJKNARhOupqbH96MZWyRjNaYZOMIzbrTeQDG+MTc6Mr2pgzFQzFxAfmhGDNP5QK++2ZA==" }, "node_modules/@webassemblyjs/ast": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", - "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" } }, "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==" }, "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==" }, "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", - "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==" + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==" }, "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==" }, "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", - "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" } }, "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==" }, "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", - "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-opt": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1", - "@webassemblyjs/wast-printer": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" } }, "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", - "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", - "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" } }, "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", - "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" } }, "node_modules/@webassemblyjs/wast-printer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", - "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", "dependencies": { - "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/ast": "1.14.1", "@xtuc/long": "4.2.2" } }, @@ -4699,6 +4943,14 @@ "node": ">= 0.6" } }, + "node_modules/accepts/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/acorn": { "version": "8.14.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", @@ -4730,14 +4982,6 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "peerDependencies": { - "acorn": "^8" - } - }, "node_modules/acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", @@ -4785,6 +5029,19 @@ "node": ">= 6.0.0" } }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -4844,6 +5101,15 @@ "ajv": "^6.9.1" } }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -4919,21 +5185,38 @@ "node": ">= 8" } }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" - }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/aria-query": { - "version": "5.3.0", + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/aria-query": { + "version": "5.3.0", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dependencies": { @@ -4941,12 +5224,12 @@ } }, "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" }, "engines": { "node": ">= 0.4" @@ -5026,14 +5309,14 @@ } }, "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -5043,14 +5326,14 @@ } }, "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -5095,18 +5378,17 @@ } }, "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", "dependencies": { "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" }, "engines": { "node": ">= 0.4" @@ -5120,11 +5402,38 @@ "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, "node_modules/ast-types-flow": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==" }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/async": { "version": "3.2.6", "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", @@ -5193,14 +5502,39 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", + "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", + "dev": true + }, "node_modules/axe-core": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.0.tgz", - "integrity": "sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==", + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.2.tgz", + "integrity": "sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==", "engines": { "node": ">=4" } }, + "node_modules/axios": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "node_modules/axobject-query": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", @@ -5331,6 +5665,25 @@ "npm": ">=6" } }, + "node_modules/babel-plugin-macros/node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/babel-plugin-named-asset-import": { "version": "0.3.8", "resolved": "https://registry.npmjs.org/babel-plugin-named-asset-import/-/babel-plugin-named-asset-import-0.3.8.tgz", @@ -5340,12 +5693,12 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", - "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.12.tgz", + "integrity": "sha512-CPWT6BwvhrTO2d8QVorhTCQw9Y43zOu7G9HigcfxvepOU6b8o3tcWad6oVgZIsZCTt42FFv97aA7ZJsbM4+8og==", "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.2", + "@babel/helper-define-polyfill-provider": "^0.6.3", "semver": "^6.3.1" }, "peerDependencies": { @@ -5373,11 +5726,11 @@ } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", - "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.3.tgz", + "integrity": "sha512-LiWSbl4CRSIa5x/JAU6jZiG9eit9w6mz+yVMFwDE83LAWvt0AfGBoZ7HS/mkhrKuh2ZlzfVZYKoLjXdqw6Yt7Q==", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.2" + "@babel/helper-define-polyfill-provider": "^0.6.3" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -5456,11 +5809,40 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/batch": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==" }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, "node_modules/bfj": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/bfj/-/bfj-7.1.0.tgz", @@ -5495,6 +5877,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/blob-util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", + "dev": true + }, "node_modules/bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -5523,14 +5911,6 @@ "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/body-parser/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/body-parser/node_modules/debug": { "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", @@ -5555,10 +5935,24 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/body-parser/node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/bonjour-service": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", - "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", + "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", "dependencies": { "fast-deep-equal": "^3.1.3", "multicast-dns": "^7.2.5" @@ -5595,9 +5989,9 @@ "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==" }, "node_modules/browserslist": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz", - "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "funding": [ { "type": "opencollective", @@ -5613,10 +6007,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001663", - "electron-to-chromium": "^1.5.28", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.0" + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" @@ -5633,6 +6027,39 @@ "node-int64": "^0.4.0" } }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -5650,23 +6077,58 @@ } }, "node_modules/bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "engines": { "node": ">= 0.8" } }, + "node_modules/cachedir": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz", + "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "dependencies": { + "call-bind-apply-helpers": "^1.0.0", "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", + "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", + "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -5723,9 +6185,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001668", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001668.tgz", - "integrity": "sha512-nWLrdxqCdblixUO+27JtGJJE/txpJlyUy5YN1u53wLZkP0emYCo5zgS6QYft7VUYR42LGgi/S5hdLZTrnyIddw==", + "version": "1.0.30001692", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001692.tgz", + "integrity": "sha512-A95VKan0kdtrsnMubMKxEKUKImOPSuCpYgxSQBo036P5YYgVIcOYJEgt/txJWqObiRQeISNCfef9nvlQ0vbV7A==", "funding": [ { "type": "opencollective", @@ -5749,6 +6211,12 @@ "node": ">=4" } }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true + }, "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -5772,6 +6240,15 @@ "node": ">=10" } }, + "node_modules/check-more-types": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/check-types": { "version": "11.2.3", "resolved": "https://registry.npmjs.org/check-types/-/check-types-11.2.3.tgz", @@ -5820,9 +6297,10 @@ } }, "node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.1.0.tgz", + "integrity": "sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==", + "dev": true, "funding": [ { "type": "github", @@ -5857,6 +6335,58 @@ "node": ">=0.10.0" } }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/cliui": { "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", @@ -6004,11 +6534,12 @@ } }, "node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "dev": true, "engines": { - "node": ">= 12" + "node": ">= 6" } }, "node_modules/common-tags": { @@ -6036,16 +6567,16 @@ } }, "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.5.tgz", + "integrity": "sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==", "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", + "bytes": "3.1.2", + "compressible": "~2.0.18", "debug": "2.6.9", + "negotiator": "~0.6.4", "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", + "safe-buffer": "5.2.1", "vary": "~1.1.2" }, "engines": { @@ -6065,11 +6596,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, - "node_modules/compression/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -6126,9 +6652,9 @@ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, "node_modules/core-js": { - "version": "3.38.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.1.tgz", - "integrity": "sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==", + "version": "3.40.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.40.0.tgz", + "integrity": "sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ==", "hasInstallScript": true, "funding": { "type": "opencollective", @@ -6136,11 +6662,11 @@ } }, "node_modules/core-js-compat": { - "version": "3.38.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", - "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==", + "version": "3.40.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.40.0.tgz", + "integrity": "sha512-0XEDpr5y5mijvw8Lbc6E5AkjrHfp7eEoPlu36SWeAbcL8fn1G1ANe8DBlo2XoNN89oVpxWwOjYIPVzR4ZvsKCQ==", "dependencies": { - "browserslist": "^4.23.3" + "browserslist": "^4.24.3" }, "funding": { "type": "opencollective", @@ -6148,9 +6674,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.38.1", - "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.38.1.tgz", - "integrity": "sha512-BY8Etc1FZqdw1glX0XNOq2FDwfrg/VGqoZOZCdaL+UmdaqDwQwYXkMJT4t6In+zfEfOJDcM9T0KdbBeJg8KKCQ==", + "version": "3.40.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.40.0.tgz", + "integrity": "sha512-AtDzVIgRrmRKQai62yuSIN5vNiQjcJakJb4fbhVw3ehxx7Lohphvw9SGNWKhLFqSxC4ilD0g/L1huAYFQU3Q6A==", "hasInstallScript": true, "funding": { "type": "opencollective", @@ -6158,9 +6684,9 @@ } }, "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" }, "node_modules/cosmiconfig": { "version": "7.1.0", @@ -6178,9 +6704,9 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -6551,13 +7077,105 @@ "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "peer": true }, - "node_modules/damerau-levenshtein": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "node_modules/cypress": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.17.0.tgz", + "integrity": "sha512-5xWkaPurwkIljojFidhw8lFScyxhtiFHl/i/3zov+1Z5CmY4t9tjIdvSXfu82Y3w7wt0uR9KkucbhkVvJZLQSA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@cypress/request": "^3.0.6", + "@cypress/xvfb": "^1.2.4", + "@types/sinonjs__fake-timers": "8.1.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.2.0", + "blob-util": "^2.0.2", + "bluebird": "^3.7.2", + "buffer": "^5.7.1", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "ci-info": "^4.0.0", + "cli-cursor": "^3.1.0", + "cli-table3": "~0.6.1", + "commander": "^6.2.1", + "common-tags": "^1.8.0", + "dayjs": "^1.10.4", + "debug": "^4.3.4", + "enquirer": "^2.3.6", + "eventemitter2": "6.4.7", + "execa": "4.1.0", + "executable": "^4.1.1", + "extract-zip": "2.0.1", + "figures": "^3.2.0", + "fs-extra": "^9.1.0", + "getos": "^3.2.1", + "is-installed-globally": "~0.4.0", + "lazy-ass": "^1.6.0", + "listr2": "^3.8.3", + "lodash": "^4.17.21", + "log-symbols": "^4.0.0", + "minimist": "^1.2.8", + "ospath": "^1.2.2", + "pretty-bytes": "^5.6.0", + "process": "^0.11.10", + "proxy-from-env": "1.0.0", + "request-progress": "^3.0.0", + "semver": "^7.5.3", + "supports-color": "^8.1.1", + "tmp": "~0.2.3", + "tree-kill": "1.2.2", + "untildify": "^4.0.0", + "yauzl": "^2.10.0" + }, + "bin": { + "cypress": "bin/cypress" + }, + "engines": { + "node": "^16.0.0 || ^18.0.0 || >=20.0.0" + } + }, + "node_modules/cypress/node_modules/proxy-from-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", + "dev": true + }, + "node_modules/cypress/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==" }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/data-urls": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", @@ -6572,13 +7190,13 @@ } }, "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "is-data-view": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -6588,27 +7206,27 @@ } }, "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", "dependencies": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "is-data-view": "^1.0.2" }, "engines": { "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/inspect-js" } }, "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", "is-data-view": "^1.0.1" }, @@ -6619,10 +7237,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/dayjs": { + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==", + "dev": true + }, "node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", "dependencies": { "ms": "^2.1.3" }, @@ -6700,6 +7324,47 @@ "node": ">= 10" } }, + "node_modules/default-gateway/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/default-gateway/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-gateway/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "engines": { + "node": ">=10.17.0" + } + }, "node_modules/define-data-property": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", @@ -6856,14 +7521,14 @@ } }, "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dependencies": { "esutils": "^2.0.2" }, "engines": { - "node": ">=6.0.0" + "node": ">=0.10.0" } }, "node_modules/dom-accessibility-api": { @@ -6972,6 +7637,19 @@ "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==" }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/duplexer": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", @@ -6982,6 +7660,16 @@ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", @@ -7002,9 +7690,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.36", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.36.tgz", - "integrity": "sha512-HYTX8tKge/VNp6FGO+f/uVDmUkq+cEfcxYhKf15Akc4M5yxt5YmorwlAitKWjWhWQnKcDRBAQKXkhqqXMqcrjw==" + "version": "1.5.80", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.80.tgz", + "integrity": "sha512-LTrKpW0AqIuHwmlVNV+cjFYTnXtM9K37OGhpe0ZI10ScPSxqVSryZHIY3WnCS5NSYbBODRTZyhRMS2h5FAEqAw==" }, "node_modules/emittery": { "version": "0.8.1", @@ -7018,9 +7706,9 @@ } }, "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/emojis-list": { "version": "3.0.0", @@ -7038,10 +7726,19 @@ "node": ">= 0.8" } }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, "node_modules/enhanced-resolve": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", - "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz", + "integrity": "sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -7050,6 +7747,19 @@ "node": ">=10.13.0" } }, + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/entities": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", @@ -7075,56 +7785,61 @@ } }, "node_modules/es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", + "is-data-view": "^1.0.2", + "is-regex": "^1.2.1", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.0", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.3", "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.3", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.18" }, "engines": { "node": ">= 0.4" @@ -7139,12 +7854,9 @@ "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==" }, "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "engines": { "node": ">= 0.4" } @@ -7177,33 +7889,35 @@ } }, "node_modules/es-iterator-helpers": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.1.0.tgz", - "integrity": "sha512-/SurEfycdyssORP/E+bj4sEu1CWw4EmLDsHynHwSXQ7utgbrMRWW195pTrCjFgFCddf/UkYm3oqKPRq5i8bJbw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.1.tgz", + "integrity": "sha512-uDn+FE1yrDzyC0pCo961B2IHbdM8y/ACZsKD4dG6WqrjV53BADjwa7D+1aom2rsNVfLyDgU/eigvlJGJ08OQ4w==", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", + "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-set-tostringtag": "^2.0.3", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", + "get-intrinsic": "^1.2.6", "globalthis": "^1.0.4", + "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "iterator.prototype": "^1.1.3", - "safe-array-concat": "^1.1.2" + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "iterator.prototype": "^1.1.4", + "safe-array-concat": "^1.1.3" }, "engines": { "node": ">= 0.4" } }, "node_modules/es-module-lexer": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz", + "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==" }, "node_modules/es-object-atoms": { "version": "1.0.0", @@ -7217,13 +7931,14 @@ } }, "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dependencies": { - "get-intrinsic": "^1.2.4", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -7238,13 +7953,13 @@ } }, "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" }, "engines": { "node": ">= 0.4" @@ -7307,25 +8022,25 @@ } }, "node_modules/eslint": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.14.0.tgz", - "integrity": "sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==", + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.18.0.tgz", + "integrity": "sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.18.0", - "@eslint/core": "^0.7.0", - "@eslint/eslintrc": "^3.1.0", - "@eslint/js": "9.14.0", - "@eslint/plugin-kit": "^0.2.0", + "@eslint/config-array": "^0.19.0", + "@eslint/core": "^0.10.0", + "@eslint/eslintrc": "^3.2.0", + "@eslint/js": "9.18.0", + "@eslint/plugin-kit": "^0.2.5", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.0", + "@humanwhocodes/retry": "^0.4.1", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", + "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.2.0", @@ -7344,8 +8059,7 @@ "lodash.merge": "^4.6.2", "minimatch": "^3.1.2", "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "text-table": "^0.2.0" + "optionator": "^0.9.3" }, "bin": { "eslint": "bin/eslint.js" @@ -7383,6 +8097,25 @@ "ms": "^2.1.1" } }, + "node_modules/eslint-import-resolver-node/node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/eslint-module-utils": { "version": "2.12.0", "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", @@ -7407,6 +8140,18 @@ "ms": "^2.1.1" } }, + "node_modules/eslint-plugin-cypress": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-cypress/-/eslint-plugin-cypress-4.1.0.tgz", + "integrity": "sha512-JhqkMY02mw74USwK9OFhectx3YSj6Co1NgWBxlGdKvlqiAp9vdEuQqt33DKGQFvvGS/NWtduuhWXWNnU29xDSg==", + "dev": true, + "dependencies": { + "globals": "^15.11.0" + }, + "peerDependencies": { + "eslint": ">=9" + } + }, "node_modules/eslint-plugin-import": { "version": "2.31.0", "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", @@ -7447,17 +8192,6 @@ "ms": "^2.1.1" } }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/eslint-plugin-import/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -7467,11 +8201,11 @@ } }, "node_modules/eslint-plugin-jsx-a11y": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.0.tgz", - "integrity": "sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==", + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", "dependencies": { - "aria-query": "~5.1.3", + "aria-query": "^5.3.2", "array-includes": "^3.1.8", "array.prototype.flatmap": "^1.3.2", "ast-types-flow": "^0.0.8", @@ -7479,14 +8213,13 @@ "axobject-query": "^4.1.0", "damerau-levenshtein": "^1.0.8", "emoji-regex": "^9.2.2", - "es-iterator-helpers": "^1.0.19", "hasown": "^2.0.2", "jsx-ast-utils": "^3.3.5", "language-tags": "^1.0.9", "minimatch": "^3.1.2", "object.fromentries": "^2.0.8", "safe-regex-test": "^1.0.3", - "string.prototype.includes": "^2.0.0" + "string.prototype.includes": "^2.0.1" }, "engines": { "node": ">=4.0" @@ -7496,35 +8229,40 @@ } }, "node_modules/eslint-plugin-jsx-a11y/node_modules/aria-query": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", - "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", - "dependencies": { - "deep-equal": "^2.0.5" + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", + "engines": { + "node": ">= 0.4" } }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, "node_modules/eslint-plugin-react": { - "version": "7.37.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.2.tgz", - "integrity": "sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w==", + "version": "7.37.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.3.tgz", + "integrity": "sha512-DomWuTQPFYZwF/7c9W2fkKkStqZmBd3uugfqBYLdkZ3Hii23WzZuOLUskGxB8qkSKqftxEeGL1TB2kMhrce0jA==", "dependencies": { "array-includes": "^3.1.8", "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.2", + "array.prototype.flatmap": "^1.3.3", "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.1.0", + "es-iterator-helpers": "^1.2.1", "estraverse": "^5.3.0", "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", "object.entries": "^1.1.8", "object.fromentries": "^2.0.8", - "object.values": "^1.2.0", + "object.values": "^1.2.1", "prop-types": "^15.8.1", "resolve": "^2.0.0-next.5", "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.11", + "string.prototype.matchall": "^4.0.12", "string.prototype.repeat": "^1.0.0" }, "engines": { @@ -7535,9 +8273,9 @@ } }, "node_modules/eslint-plugin-react-hooks": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.0.0.tgz", - "integrity": "sha512-hIOwI+5hYGpJEc4uPRmz2ulCjAGD/N13Lukkh8cLV0i2IRk/bdZDYjgLVHj+U9Z704kLIdIO6iueGvxNur0sgw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0.tgz", + "integrity": "sha512-mpJRtPgHN2tNAvZ35AMfqeB3Xqeo273QxrHJsbBEPWODRM4r0yB6jfoROqKEYrOn27UtRPpcpHc2UqyBSuUNTw==", "dev": true, "engines": { "node": ">=10" @@ -7546,33 +8284,6 @@ "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" } }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/eslint-plugin-react/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -7597,17 +8308,6 @@ } }, "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", @@ -7618,63 +8318,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/espree": { "version": "10.3.0", "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", @@ -7691,17 +8334,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/esprima": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", @@ -7765,6 +8397,12 @@ "node": ">= 0.6" } }, + "node_modules/eventemitter2": { + "version": "6.4.7", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", + "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", + "dev": true + }, "node_modules/eventemitter3": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", @@ -7779,18 +8417,19 @@ } }, "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", "strip-final-newline": "^2.0.0" }, "engines": { @@ -7800,6 +8439,18 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, + "node_modules/executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "dev": true, + "dependencies": { + "pify": "^2.2.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", @@ -7824,9 +8475,9 @@ } }, "node_modules/express": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", - "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -7847,7 +8498,7 @@ "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.10", + "path-to-regexp": "0.1.12", "proxy-addr": "~2.0.7", "qs": "6.13.0", "range-parser": "~1.2.1", @@ -7862,6 +8513,10 @@ }, "engines": { "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, "node_modules/express/node_modules/debug": { @@ -7877,21 +8532,70 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, + "node_modules/express/node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true, + "engines": [ + "node >=0.6.0" + ] + }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "micromatch": "^4.0.8" }, "engines": { "node": ">=8.6.0" @@ -7919,14 +8623,24 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, "node_modules/fast-uri": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.2.tgz", - "integrity": "sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row==" + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.5.tgz", + "integrity": "sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ] }, "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", + "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", "dependencies": { "reusify": "^1.0.4" } @@ -7950,6 +8664,39 @@ "bser": "2.1.1" } }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/file-entry-cache": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", @@ -8090,15 +8837,18 @@ } }, "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dependencies": { - "locate-path": "^5.0.0", + "locate-path": "^6.0.0", "path-exists": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/flat-cache": { @@ -8114,9 +8864,9 @@ } }, "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==" + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz", + "integrity": "sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==" }, "node_modules/follow-redirects": { "version": "1.15.9", @@ -8171,6 +8921,15 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true, + "engines": { + "node": "*" + } + }, "node_modules/fork-ts-checker-webpack-plugin": { "version": "6.5.3", "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-6.5.3.tgz", @@ -8224,20 +8983,6 @@ "node": ">=8" } }, - "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.0.tgz", @@ -8264,9 +9009,9 @@ } }, "node_modules/form-data": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.2.tgz", - "integrity": "sha512-sJe+TQb2vIaIyO783qN6BlMYWMw3WBOHA1Ay2qxsnjuafEOQFJ2JakedOQirT6D5XPRxDvS7AHYyem9fTpb4LQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -8305,16 +9050,17 @@ } }, "node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dependencies": { + "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", "universalify": "^2.0.0" }, "engines": { - "node": ">=12" + "node": ">=10" } }, "node_modules/fs-monkey": { @@ -8349,14 +9095,16 @@ } }, "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" }, "engines": { "node": ">= 0.4" @@ -8390,15 +9138,20 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", + "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "get-proto": "^1.0.0", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -8420,25 +9173,41 @@ "node": ">=8.0.0" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "dependencies": { - "call-bind": "^1.0.5", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -8447,6 +9216,24 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/getos": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", + "dev": true, + "dependencies": { + "async": "^3.2.0" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -8483,6 +9270,21 @@ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" }, + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dev": true, + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/global-modules": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", @@ -8507,6 +9309,11 @@ "node": ">=6" } }, + "node_modules/global-prefix/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, "node_modules/global-prefix/node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -8519,9 +9326,9 @@ } }, "node_modules/globals": { - "version": "15.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.12.0.tgz", - "integrity": "sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==", + "version": "15.14.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz", + "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==", "dev": true, "engines": { "node": ">=18" @@ -8565,11 +9372,11 @@ } }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8610,9 +9417,12 @@ "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==" }, "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -8637,9 +9447,12 @@ } }, "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dependencies": { + "dunder-proto": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -8648,9 +9461,9 @@ } }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "engines": { "node": ">= 0.4" }, @@ -8793,10 +9606,18 @@ "node": ">=12" } }, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "engines": { + "node": ">= 12" + } + }, "node_modules/html-webpack-plugin": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.0.tgz", - "integrity": "sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.6.3.tgz", + "integrity": "sha512-QSf1yjtSAsmf7rYBV7XX86uua4W/vkhIt0xNXKbsi2foEeW7vjJQz4bhnpL3xH+l1ryl1680uNv968Z+X6jSYg==", "dependencies": { "@types/html-minifier-terser": "^6.0.0", "html-minifier-terser": "^6.0.2", @@ -8863,9 +9684,9 @@ } }, "node_modules/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==" + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.9.tgz", + "integrity": "sha512-n1XsPy3rXVxlqxVioEWdC+0+M+SQw0DpJynwtOPo1X+ZlvdzTLtDBIJJlDQTnwZIFJrZSzSGmIOUdP8tu+SgLw==" }, "node_modules/http-proxy": { "version": "1.18.1", @@ -8916,6 +9737,20 @@ } } }, + "node_modules/http-signature": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.4.0.tgz", + "integrity": "sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^2.0.2", + "sshpk": "^1.18.0" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -8929,11 +9764,12 @@ } }, "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, "engines": { - "node": ">=10.17.0" + "node": ">=8.12.0" } }, "node_modules/iconv-lite": { @@ -8974,6 +9810,26 @@ "node": ">=4" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -9006,14 +9862,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "engines": { - "node": ">=4" - } - }, "node_modules/import-local": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", @@ -9064,18 +9912,22 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true, + "engines": { + "node": ">=10" + } }, "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "dependencies": { "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" + "hasown": "^2.0.2", + "side-channel": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -9090,12 +9942,12 @@ } }, "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.2.0.tgz", + "integrity": "sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -9105,12 +9957,13 @@ } }, "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -9125,11 +9978,14 @@ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" }, "node_modules/is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.0.tgz", + "integrity": "sha512-GExz9MtyhlZyXYLxzlJRj5WUCE661zhDa1Yna52CN57AJsymh+DvXXjyveSioqSRdxvUrdKdvqB1b5cVKsNpWQ==", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -9139,11 +9995,14 @@ } }, "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "dependencies": { - "has-bigints": "^1.0.1" + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9161,12 +10020,12 @@ } }, "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.1.tgz", + "integrity": "sha512-l9qO6eFlUETHtuihLcYOaLKByJ1f+N4kthcU9YjHy3N+B3hWv0y/2Nd0mu/7lTFnRQHTrSdXF50HQ3bl5fEnng==", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -9187,9 +10046,9 @@ } }, "node_modules/is-core-module": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", - "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "dependencies": { "hasown": "^2.0.2" }, @@ -9201,10 +10060,12 @@ } }, "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", "is-typed-array": "^1.1.13" }, "engines": { @@ -9215,11 +10076,12 @@ } }, "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -9251,11 +10113,14 @@ } }, "node_modules/is-finalizationregistry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", "dependencies": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -9278,11 +10143,14 @@ } }, "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -9302,6 +10170,22 @@ "node": ">=0.10.0" } }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-map": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", @@ -9318,17 +10202,6 @@ "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==" }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -9338,11 +10211,12 @@ } }, "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -9384,12 +10258,14 @@ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==" }, "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -9426,11 +10302,11 @@ } }, "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "dependencies": { - "call-bind": "^1.0.7" + "call-bound": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -9451,11 +10327,12 @@ } }, "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "dependencies": { - "has-tostringtag": "^1.0.0" + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -9465,11 +10342,13 @@ } }, "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "dependencies": { - "has-symbols": "^1.0.2" + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -9479,11 +10358,11 @@ } }, "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "dependencies": { - "which-typed-array": "^1.1.14" + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -9497,6 +10376,18 @@ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/is-weakmap": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", @@ -9509,23 +10400,26 @@ } }, "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.0.tgz", + "integrity": "sha512-SXM8Nwyys6nT5WP6pltOwKytLV7FqQ4UiibxVmW+EIosHcmCqkkjViTb5SNssDlkCiEYRP1/pdWUKVvZBmsR2Q==", "dependencies": { - "call-bind": "^1.0.2" + "call-bound": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-weakset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", - "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4" + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" }, "engines": { "node": ">= 0.4" @@ -9555,6 +10449,12 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true + }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", @@ -9647,15 +10547,16 @@ } }, "node_modules/iterator.prototype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.3.tgz", - "integrity": "sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", "dependencies": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" + "define-data-property": "^1.1.4", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.6", + "get-proto": "^1.0.0", + "has-symbols": "^1.1.0", + "set-function-name": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -9752,6 +10653,47 @@ "@types/yargs-parser": "*" } }, + "node_modules/jest-changed-files/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/jest-changed-files/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-changed-files/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "engines": { + "node": ">=10.17.0" + } + }, "node_modules/jest-circus": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.5.1.tgz", @@ -9804,6 +10746,20 @@ "@types/yargs-parser": "*" } }, + "node_modules/jest-circus/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, "node_modules/jest-circus/node_modules/diff-sequences": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", @@ -9953,6 +10909,20 @@ "@types/yargs-parser": "*" } }, + "node_modules/jest-cli/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, "node_modules/jest-cli/node_modules/jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", @@ -10034,6 +11004,20 @@ "@types/yargs-parser": "*" } }, + "node_modules/jest-config/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, "node_modules/jest-config/node_modules/jest-get-type": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", @@ -10150,6 +11134,20 @@ "@types/yargs-parser": "*" } }, + "node_modules/jest-each/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, "node_modules/jest-each/node_modules/jest-get-type": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", @@ -10214,6 +11212,20 @@ "@types/yargs-parser": "*" } }, + "node_modules/jest-environment-jsdom/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, "node_modules/jest-environment-jsdom/node_modules/jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", @@ -10269,6 +11281,20 @@ "@types/yargs-parser": "*" } }, + "node_modules/jest-environment-node/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, "node_modules/jest-environment-node/node_modules/jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", @@ -10341,6 +11367,20 @@ "@types/yargs-parser": "*" } }, + "node_modules/jest-haste-map/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, "node_modules/jest-haste-map/node_modules/jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", @@ -10407,6 +11447,20 @@ "@types/yargs-parser": "*" } }, + "node_modules/jest-jasmine2/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, "node_modules/jest-jasmine2/node_modules/diff-sequences": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", @@ -10749,6 +11803,20 @@ "@types/yargs-parser": "*" } }, + "node_modules/jest-resolve/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, "node_modules/jest-resolve/node_modules/jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", @@ -10762,7 +11830,26 @@ "picomatch": "^2.2.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-resolve/node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/jest-runner": { @@ -10819,6 +11906,20 @@ "@types/yargs-parser": "*" } }, + "node_modules/jest-runner/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, "node_modules/jest-runner/node_modules/jest-message-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", @@ -10909,6 +12010,61 @@ "@types/yargs-parser": "*" } }, + "node_modules/jest-runtime/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-runtime/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "engines": { + "node": ">=10.17.0" + } + }, "node_modules/jest-runtime/node_modules/jest-message-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.5.1.tgz", @@ -11011,6 +12167,20 @@ "@types/yargs-parser": "*" } }, + "node_modules/jest-snapshot/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, "node_modules/jest-snapshot/node_modules/diff-sequences": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", @@ -11120,6 +12290,20 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/jest-util/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, "node_modules/jest-validate": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.5.1.tgz", @@ -11268,6 +12452,20 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/jest-watch-typeahead/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, "node_modules/jest-watch-typeahead/node_modules/emittery": { "version": "0.10.2", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", @@ -11417,9 +12615,9 @@ } }, "node_modules/jest-watch-typeahead/node_modules/string-length/node_modules/char-regex": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.1.tgz", - "integrity": "sha512-oSvEeo6ZUD7NepqAat3RqoucZ5SeqLJgOvVIwkafu6IP3V0pO38s/ypdVUmDDK6qIIHNlYHJAKX9E7R7HoKElw==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.2.tgz", + "integrity": "sha512-cbGOjAptfM2LVmWhwRFHEKTPkLwNddVmuqYZQt895yXwAsWsXObCG+YN4DGQ/JBtT4GP1a1lPPdio2z413LmTg==", "engines": { "node": ">=12.20" } @@ -11489,6 +12687,20 @@ "@types/yargs-parser": "*" } }, + "node_modules/jest-watcher/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, "node_modules/jest-watcher/node_modules/jest-util": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", @@ -11533,9 +12745,9 @@ } }, "node_modules/jiti": { - "version": "1.21.6", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", - "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "version": "1.21.7", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz", + "integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==", "bin": { "jiti": "bin/jiti.js" } @@ -11546,17 +12758,22 @@ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "argparse": "^2.0.1" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true + }, "node_modules/jsdom": { "version": "16.7.0", "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", @@ -11602,10 +12819,45 @@ } } }, - "node_modules/jsesc": { + "node_modules/jsdom/node_modules/form-data": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.2.tgz", + "integrity": "sha512-sJe+TQb2vIaIyO783qN6BlMYWMw3WBOHA1Ay2qxsnjuafEOQFJ2JakedOQirT6D5XPRxDvS7AHYyem9fTpb4LQ==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jsdom/node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsdom/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/jsesc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "bin": { "jsesc": "bin/jsesc" }, @@ -11638,6 +12890,12 @@ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, "node_modules/json5": { "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", @@ -11690,6 +12948,21 @@ "node": ">=0.10.0" } }, + "node_modules/jsprim": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", + "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, "node_modules/jsx-ast-utils": { "version": "3.3.5", "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", @@ -11761,6 +13034,15 @@ "shell-quote": "^1.8.1" } }, + "node_modules/lazy-ass": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", + "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", + "dev": true, + "engines": { + "node": "> 0.8" + } + }, "node_modules/leaflet": { "version": "1.9.4", "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.9.4.tgz", @@ -11799,6 +13081,33 @@ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, + "node_modules/listr2": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", + "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", + "dev": true, + "dependencies": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.1", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } + } + }, "node_modules/loader-runner": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", @@ -11821,14 +13130,17 @@ } }, "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dependencies": { - "p-locate": "^4.1.0" + "p-locate": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/lodash": { @@ -11851,6 +13163,12 @@ "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true + }, "node_modules/lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", @@ -11861,6 +13179,71 @@ "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==" }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -11934,6 +13317,14 @@ "tmpl": "1.0.5" } }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/mdn-data": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", @@ -12046,9 +13437,9 @@ } }, "node_modules/mini-css-extract-plugin": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.1.tgz", - "integrity": "sha512-+Vyi+GCCOHnrJ2VPS+6aPoXN2k2jgUzDRhTFLjjTBn23qyXJXkjUWQgTL+mXpF5/A8ixLdCc6kWsoeOjKGejKQ==", + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.2.tgz", + "integrity": "sha512-GJuACcS//jtq4kCtd5ii/M0SZf7OZRH+BxdqXZHaJfb8TJiVl+NgQRPwiYt2EuqeSkNydn/7vP+bcE27C5mb9w==", "dependencies": { "schema-utils": "^4.0.0", "tapable": "^2.2.1" @@ -12135,9 +13526,9 @@ } }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", "funding": [ { "type": "github", @@ -12162,9 +13553,9 @@ "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==" }, "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", "engines": { "node": ">= 0.6" } @@ -12197,9 +13588,9 @@ "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" }, "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==" + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==" }, "node_modules/normalize-path": { "version": "3.0.0", @@ -12251,9 +13642,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.13", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.13.tgz", - "integrity": "sha512-cTGB9ptp9dY9A5VbMSe7fQBcl/tt22Vcqdq8+eN93rblOuE0aCFu4aZ2vMwct/2t+lFnosm8RkQW1I0Omb1UtQ==" + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.16.tgz", + "integrity": "sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==" }, "node_modules/object-assign": { "version": "4.1.1", @@ -12272,9 +13663,9 @@ } }, "node_modules/object-inspect": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", "engines": { "node": ">= 0.4" }, @@ -12306,13 +13697,15 @@ } }, "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "dependencies": { - "call-bind": "^1.0.5", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", "object-keys": "^1.1.1" }, "engines": { @@ -12386,11 +13779,12 @@ } }, "node_modules/object.values": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", - "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" }, @@ -12479,29 +13873,69 @@ "node": ">= 0.8.0" } }, + "node_modules/ospath": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", + "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", + "dev": true + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dependencies": { - "p-try": "^2.0.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dependencies": { - "p-limit": "^2.2.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-retry": { @@ -12638,9 +14072,9 @@ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" }, "node_modules/path-to-regexp": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", - "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==" + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==" }, "node_modules/path-type": { "version": "4.0.0", @@ -12650,15 +14084,21 @@ "node": ">=8" } }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, "node_modules/performance-now": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" }, "node_modules/picocolors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", - "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" }, "node_modules/picomatch": { "version": "2.3.1", @@ -12698,6 +14138,54 @@ "node": ">=8" } }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/pkg-up": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-3.1.0.tgz", @@ -12732,6 +14220,20 @@ "node": ">=6" } }, + "node_modules/pkg-up/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/pkg-up/node_modules/p-locate": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", @@ -12760,9 +14262,9 @@ } }, "node_modules/postcss": { - "version": "8.4.47", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", - "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", "funding": [ { "type": "opencollective", @@ -12779,7 +14281,7 @@ ], "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.1.0", + "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, "engines": { @@ -13170,6 +14672,25 @@ "postcss": "^8.0.0" } }, + "node_modules/postcss-import/node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/postcss-initial": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", @@ -13250,9 +14771,9 @@ } }, "node_modules/postcss-load-config/node_modules/lilconfig": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", - "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", "engines": { "node": ">=14" }, @@ -13261,9 +14782,9 @@ } }, "node_modules/postcss-load-config/node_modules/yaml": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", - "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", "bin": { "yaml": "bin.mjs" }, @@ -13418,12 +14939,12 @@ } }, "node_modules/postcss-modules-local-by-default": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", - "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz", + "integrity": "sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==", "dependencies": { "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", + "postcss-selector-parser": "^7.0.0", "postcss-value-parser": "^4.1.0" }, "engines": { @@ -13433,12 +14954,24 @@ "postcss": "^8.1.0" } }, + "node_modules/postcss-modules-local-by-default/node_modules/postcss-selector-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", + "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/postcss-modules-scope": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", - "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz", + "integrity": "sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==", "dependencies": { - "postcss-selector-parser": "^6.0.4" + "postcss-selector-parser": "^7.0.0" }, "engines": { "node": "^10 || ^12 || >= 14" @@ -13447,6 +14980,18 @@ "postcss": "^8.1.0" } }, + "node_modules/postcss-modules-scope/node_modules/postcss-selector-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.0.0.tgz", + "integrity": "sha512-9RbEr1Y7FFfptd/1eEdntyjMwLeghW1bHX9GWjXo19vx4ytPQhANltvVxDggzJl7mnWM+dX28kb6cyS/4iQjlQ==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/postcss-modules-values": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", @@ -14016,6 +15561,15 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -14076,10 +15630,31 @@ "node": ">= 0.10" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "dependencies": { + "punycode": "^2.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/lupomontero" + } + }, + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } }, "node_modules/punycode": { "version": "2.3.1", @@ -14100,9 +15675,10 @@ } }, "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "version": "6.13.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.1.tgz", + "integrity": "sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==", + "dev": true, "dependencies": { "side-channel": "^1.0.6" }, @@ -14175,14 +15751,6 @@ "node": ">= 0.8" } }, - "node_modules/raw-body/node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/raw-body/node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -14243,86 +15811,29 @@ "fork-ts-checker-webpack-plugin": "^6.5.0", "global-modules": "^2.0.0", "globby": "^11.0.4", - "gzip-size": "^6.0.0", - "immer": "^9.0.7", - "is-root": "^2.1.0", - "loader-utils": "^3.2.0", - "open": "^8.4.0", - "pkg-up": "^3.1.0", - "prompts": "^2.4.2", - "react-error-overlay": "^6.0.11", - "recursive-readdir": "^2.2.2", - "shell-quote": "^1.7.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/react-dev-utils/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/react-dev-utils/node_modules/loader-utils": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", - "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", - "engines": { - "node": ">= 12.13.0" - } - }, - "node_modules/react-dev-utils/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/react-dev-utils/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dependencies": { - "yocto-queue": "^0.1.0" + "gzip-size": "^6.0.0", + "immer": "^9.0.7", + "is-root": "^2.1.0", + "loader-utils": "^3.2.0", + "open": "^8.4.0", + "pkg-up": "^3.1.0", + "prompts": "^2.4.2", + "react-error-overlay": "^6.0.11", + "recursive-readdir": "^2.2.2", + "shell-quote": "^1.7.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=14" } }, - "node_modules/react-dev-utils/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dependencies": { - "p-limit": "^3.0.2" - }, + "node_modules/react-dev-utils/node_modules/loader-utils": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.3.1.tgz", + "integrity": "sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 12.13.0" } }, "node_modules/react-dom": { @@ -14369,12 +15880,12 @@ } }, "node_modules/react-router": { - "version": "6.26.2", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.26.2.tgz", - "integrity": "sha512-tvN1iuT03kHgOFnLPfLJ8V95eijteveqdOSk+srqfePtQvqCExB8eHOYnlilbOcyJyKnYkr1vJvf7YqotAJu1A==", + "version": "6.28.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.28.1.tgz", + "integrity": "sha512-2omQTA3rkMljmrvvo6WtewGdVh45SpL9hGiCI9uUrwGGfNFDIvGK4gYJsKlJoNVi6AQZcopSCballL+QGOm7fA==", "dev": true, "dependencies": { - "@remix-run/router": "1.19.2" + "@remix-run/router": "1.21.0" }, "engines": { "node": ">=14.0.0" @@ -14384,13 +15895,13 @@ } }, "node_modules/react-router-dom": { - "version": "6.26.2", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.26.2.tgz", - "integrity": "sha512-z7YkaEW0Dy35T3/QKPYB1LjMK2R1fxnHO8kWpUMTBdfVzZrWOiY9a7CtN8HqdWtDUWd5FY6Dl8HFsqVwH4uOtQ==", + "version": "6.28.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.28.1.tgz", + "integrity": "sha512-YraE27C/RdjcZwl5UCqF/ffXnZDxpJdk9Q6jw38SZHjXs7NNdpViq2l2c7fO7+4uWaEfcwfGCv3RSg4e1By/fQ==", "dev": true, "dependencies": { - "@remix-run/router": "1.19.2", - "react-router": "6.26.2" + "@remix-run/router": "1.21.0", + "react-router": "6.28.1" }, "engines": { "node": ">=14.0.0" @@ -14502,6 +16013,15 @@ "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, + "node_modules/react-scripts/node_modules/@types/eslint": { + "version": "8.56.12", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.12.tgz", + "integrity": "sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, "node_modules/react-scripts/node_modules/@typescript-eslint/eslint-plugin": { "version": "5.62.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", @@ -14720,10 +16240,16 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/react-scripts/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "node_modules/react-scripts/node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } }, "node_modules/react-scripts/node_modules/eslint": { "version": "8.57.1", @@ -14888,6 +16414,17 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/react-scripts/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, "node_modules/react-scripts/node_modules/eslint-webpack-plugin": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/eslint-webpack-plugin/-/eslint-webpack-plugin-3.2.0.tgz", @@ -14938,21 +16475,6 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/react-scripts/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/react-scripts/node_modules/flat-cache": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", @@ -14966,6 +16488,19 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/react-scripts/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/react-scripts/node_modules/globals": { "version": "13.24.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", @@ -14993,57 +16528,23 @@ "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" } }, - "node_modules/react-scripts/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/react-scripts/node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "dependencies": { - "argparse": "^2.0.1" + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/react-scripts/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/react-scripts/node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/react-scripts/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dependencies": { - "p-limit": "^3.0.2" + "resolve": "bin/resolve" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, "node_modules/react-scripts/node_modules/supports-color": { @@ -15139,17 +16640,18 @@ } }, "node_modules/reflect.getprototypeof": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", - "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", - "es-abstract": "^1.23.1", + "es-abstract": "^1.23.9", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -15193,13 +16695,15 @@ "integrity": "sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==" }, "node_modules/regexp.prototype.flags": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", - "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "define-properties": "^1.2.1", "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", "set-function-name": "^2.0.2" }, "engines": { @@ -15210,14 +16714,14 @@ } }, "node_modules/regexpu-core": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.1.1.tgz", - "integrity": "sha512-k67Nb9jvwJcJmVpw0jPttR1/zVfnKf8Km0IPatrU/zJ5XeG3+Slx0xLXs9HByJSzXzrlz5EDvN6yLNMDc2qdnw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", "dependencies": { "regenerate": "^1.4.2", "regenerate-unicode-properties": "^10.2.0", "regjsgen": "^0.8.0", - "regjsparser": "^0.11.0", + "regjsparser": "^0.12.0", "unicode-match-property-ecmascript": "^2.0.0", "unicode-match-property-value-ecmascript": "^2.1.0" }, @@ -15231,9 +16735,9 @@ "integrity": "sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==" }, "node_modules/regjsparser": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.11.1.tgz", - "integrity": "sha512-1DHODs4B8p/mQHU9kr+jv8+wIC9mtG4eBHxWxIq5mhjE3D5oORhCc6deRKzTjs9DcfRFmj9BHSDguZklqCGFWQ==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", "dependencies": { "jsesc": "~3.0.2" }, @@ -15241,6 +16745,17 @@ "regjsparser": "bin/parser" } }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/relateurl": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", @@ -15261,6 +16776,15 @@ "strip-ansi": "^6.0.1" } }, + "node_modules/request-progress": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", + "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", + "dev": true, + "dependencies": { + "throttleit": "^1.0.0" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -15283,9 +16807,9 @@ "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" }, "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -15309,7 +16833,7 @@ "node": ">=8" } }, - "node_modules/resolve-from": { + "node_modules/resolve-cwd/node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", @@ -15317,6 +16841,14 @@ "node": ">=8" } }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, "node_modules/resolve-url-loader": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", @@ -15386,6 +16918,19 @@ "node": ">=10" } }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/retry": { "version": "0.13.1", "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", @@ -15403,6 +16948,12 @@ "node": ">=0.10.0" } }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true + }, "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", @@ -15490,14 +17041,24 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, "node_modules/safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", "isarray": "^2.0.5" }, "engines": { @@ -15526,14 +17087,29 @@ } ] }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", - "is-regex": "^1.1.4" + "is-regex": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -15614,9 +17190,9 @@ } }, "node_modules/schema-utils": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", - "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.0.tgz", + "integrity": "sha512-Gf9qqc58SpCA/xdziiHz35F4GNIWYWZrEshUc/G/r5BnLph6xpKuLeoJoQuj5WfBIx/eQLf+hmVPYHaxJu7V2g==", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -15624,7 +17200,7 @@ "ajv-keywords": "^5.1.0" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 10.13.0" }, "funding": { "type": "opencollective", @@ -15856,6 +17432,19 @@ "node": ">= 0.4" } }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", @@ -15881,22 +17470,76 @@ } }, "node_modules/shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz", + "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==", + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", "dependencies": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -15923,6 +17566,20 @@ "node": ">=8" } }, + "node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/sockjs": { "version": "0.3.24", "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", @@ -16030,6 +17687,31 @@ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, + "node_modules/sshpk": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "dev": true, + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/stable": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", @@ -16162,11 +17844,12 @@ } }, "node_modules/stop-iteration-iterator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", - "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", "dependencies": { - "internal-slot": "^1.0.4" + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -16224,42 +17907,37 @@ "node": ">=8" } }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/string-width/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, "node_modules/string.prototype.includes": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz", - "integrity": "sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", + "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", "dependencies": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3" + }, + "engines": { + "node": ">= 0.4" } }, "node_modules/string.prototype.matchall": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", - "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", + "es-abstract": "^1.23.6", "es-errors": "^1.3.0", "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "regexp.prototype.flags": "^1.5.2", + "get-intrinsic": "^1.2.6", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "internal-slot": "^1.1.0", + "regexp.prototype.flags": "^1.5.3", "set-function-name": "^2.0.2", - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -16278,14 +17956,17 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", - "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0" + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -16295,14 +17976,18 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", - "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" }, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -16582,6 +18267,14 @@ "node": ">=4" } }, + "node_modules/svgo/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, "node_modules/svgo/node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -16669,6 +18362,18 @@ "node": ">=4" } }, + "node_modules/svgo/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/svgo/node_modules/nth-check": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", @@ -16694,32 +18399,32 @@ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==" }, "node_modules/tailwindcss": { - "version": "3.4.13", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.13.tgz", - "integrity": "sha512-KqjHOJKogOUt5Bs752ykCeiwvi0fKVkr5oqsFNt/8px/tA8scFPIlkygsf6jXrfCqGHz7VflA6+yytWuM+XhFw==", + "version": "3.4.17", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", + "integrity": "sha512-w33E2aCvSDP0tW9RZuNXadXlkHXqFzSkQew/aIa2i/Sj8fThxwovwlXHSPXTbAHwEIhBFXAedUhP2tueAKP8Og==", "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", - "chokidar": "^3.5.3", + "chokidar": "^3.6.0", "didyoumean": "^1.2.2", "dlv": "^1.1.3", - "fast-glob": "^3.3.0", + "fast-glob": "^3.3.2", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", - "jiti": "^1.21.0", - "lilconfig": "^2.1.0", - "micromatch": "^4.0.5", + "jiti": "^1.21.6", + "lilconfig": "^3.1.3", + "micromatch": "^4.0.8", "normalize-path": "^3.0.0", "object-hash": "^3.0.0", - "picocolors": "^1.0.0", - "postcss": "^8.4.23", + "picocolors": "^1.1.1", + "postcss": "^8.4.47", "postcss-import": "^15.1.0", "postcss-js": "^4.0.1", - "postcss-load-config": "^4.0.1", - "postcss-nested": "^6.0.1", - "postcss-selector-parser": "^6.0.11", - "resolve": "^1.22.2", - "sucrase": "^3.32.0" + "postcss-load-config": "^4.0.2", + "postcss-nested": "^6.2.0", + "postcss-selector-parser": "^6.1.2", + "resolve": "^1.22.8", + "sucrase": "^3.35.0" }, "bin": { "tailwind": "lib/cli.js", @@ -16729,6 +18434,36 @@ "node": ">=14.0.0" } }, + "node_modules/tailwindcss/node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/tailwindcss/node_modules/resolve": { + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "dependencies": { + "is-core-module": "^2.16.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", @@ -16789,9 +18524,9 @@ } }, "node_modules/terser": { - "version": "5.34.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.34.1.tgz", - "integrity": "sha512-FsJZ7iZLd/BXkz+4xrRTGJ26o/6VTjQytUk8b8OxkwcD2I+79VPJlz7qss1+zE7h8GNIScFqXcDyJ/KqBYZFVA==", + "version": "5.37.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.37.0.tgz", + "integrity": "sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA==", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -16806,15 +18541,15 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "version": "5.3.11", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.11.tgz", + "integrity": "sha512-RVCsMfuD0+cTt3EwX8hSl2Ks56EbFHWmhluwcqoPKtBnfjiT6olaq7PRIRfhyU8nnC2MrnDrBLfrD/RGE+cVXQ==", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.20", + "@jridgewell/trace-mapping": "^0.3.25", "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.26.0" + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" }, "engines": { "node": ">= 10.13.0" @@ -16838,23 +18573,6 @@ } } }, - "node_modules/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", @@ -16902,24 +18620,58 @@ "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.2.tgz", "integrity": "sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==" }, + "node_modules/throttleit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz", + "integrity": "sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, "node_modules/thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==" }, + "node_modules/tldts": { + "version": "6.1.71", + "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.71.tgz", + "integrity": "sha512-LQIHmHnuzfZgZWAf2HzL83TIIrD8NhhI0DVxqo9/FdOd4ilec+NTNZOlDZf7EwrTNoutccbsHjvWHYXLAtvxjw==", + "dev": true, + "dependencies": { + "tldts-core": "^6.1.71" + }, + "bin": { + "tldts": "bin/cli.js" + } + }, + "node_modules/tldts-core": { + "version": "6.1.71", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.71.tgz", + "integrity": "sha512-LRbChn2YRpic1KxY+ldL1pGXN/oVvKfCVufwfVzEQdFYNo39uF7AJa/WXdo+gYO7PTvdfkCPCed6Hkvz/kR7jg==", + "dev": true + }, + "node_modules/tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "dev": true, + "engines": { + "node": ">=14.14" + } + }, "node_modules/tmpl": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "engines": { - "node": ">=4" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -16940,25 +18692,15 @@ } }, "node_modules/tough-cookie": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", - "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.0.tgz", + "integrity": "sha512-rvZUv+7MoBYTiDmFPBrhL7Ujx9Sk+q9wwm22x8c8T5IJaR+Wsyc7TNxbVxo84kZoRJZZMazowFLqpankBEQrGg==", + "dev": true, "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" + "tldts": "^6.1.32" }, "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", - "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", - "engines": { - "node": ">= 4.0.0" + "node": ">=16" } }, "node_modules/tr46": { @@ -16972,21 +18714,30 @@ "node": ">=8" } }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, "node_modules/tryer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==" }, "node_modules/ts-api-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.0.tgz", - "integrity": "sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.0.tgz", + "integrity": "sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==", "dev": true, "engines": { - "node": ">=16" + "node": ">=18.12" }, "peerDependencies": { - "typescript": ">=4.2.0" + "typescript": ">=4.8.4" } }, "node_modules/ts-interface-checker": { @@ -17025,9 +18776,9 @@ } }, "node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" }, "node_modules/tsutils": { "version": "3.21.0", @@ -17048,6 +18799,24 @@ "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -17091,28 +18860,28 @@ } }, "node_modules/typed-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", - "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "dependencies": { - "call-bind": "^1.0.7", + "call-bound": "^1.0.3", "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" + "is-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" } }, "node_modules/typed-array-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", - "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" }, "engines": { "node": ">= 0.4" @@ -17122,16 +18891,17 @@ } }, "node_modules/typed-array-byte-offset": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", - "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", "dependencies": { "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-proto": "^1.0.3", - "is-typed-array": "^1.1.13" + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" }, "engines": { "node": ">= 0.4" @@ -17141,16 +18911,16 @@ } }, "node_modules/typed-array-length": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", - "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", "dependencies": { "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-proto": "^1.0.3", "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0" + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" }, "engines": { "node": ">= 0.4" @@ -17180,14 +18950,14 @@ } }, "node_modules/typescript-eslint": { - "version": "8.13.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.13.0.tgz", - "integrity": "sha512-vIMpDRJrQd70au2G8w34mPps0ezFSPMEX4pXkTzUkrNbRX+36ais2ksGWN0esZL+ZMaFJEneOBHzCgSqle7DHw==", + "version": "8.19.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.19.1.tgz", + "integrity": "sha512-LKPUQpdEMVOeKluHi8md7rwLcoXHhwvWp3x+sJkMuq3gGm9yaYJtPo8sRZSblMFJ5pcOGCAak/scKf1mvZDlQw==", "dev": true, "dependencies": { - "@typescript-eslint/eslint-plugin": "8.13.0", - "@typescript-eslint/parser": "8.13.0", - "@typescript-eslint/utils": "8.13.0" + "@typescript-eslint/eslint-plugin": "8.19.1", + "@typescript-eslint/parser": "8.19.1", + "@typescript-eslint/utils": "8.19.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -17196,21 +18966,23 @@ "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" } }, "node_modules/unbox-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", - "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "dependencies": { - "call-bind": "^1.0.2", + "call-bound": "^1.0.3", "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -17222,9 +18994,9 @@ "integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw==" }, "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==" }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.1", @@ -17294,6 +19066,15 @@ "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==" }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/upath": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", @@ -17304,9 +19085,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.2.tgz", + "integrity": "sha512-PPypAm5qvlD7XMZC3BujecnaOxwhrtoFR+Dqkk5Aa/6DssiH0ibKoketaj9w8LP7Bont1rYeoV5plxD7RTEPRg==", "funding": [ { "type": "opencollective", @@ -17323,7 +19104,7 @@ ], "dependencies": { "escalade": "^3.2.0", - "picocolors": "^1.1.0" + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -17415,6 +19196,20 @@ "node": ">= 0.8" } }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, "node_modules/w3c-hr-time": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", @@ -17477,17 +19272,17 @@ } }, "node_modules/webpack": { - "version": "5.95.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.95.0.tgz", - "integrity": "sha512-2t3XstrKULz41MNMBF+cJ97TyHdyQ8HCt//pqErqDvNjU9YQBnZxIHa11VXsi7F3mb5/aO2tuDxdeTPdU7xu9Q==", - "dependencies": { - "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.7.1", - "acorn-import-attributes": "^1.9.5", - "browserslist": "^4.21.10", + "version": "5.97.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.97.1.tgz", + "integrity": "sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg==", + "dependencies": { + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", "chrome-trace-event": "^1.0.2", "enhanced-resolve": "^5.17.1", "es-module-lexer": "^1.2.1", @@ -17779,37 +19574,41 @@ } }, "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", - "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/which-builtin-type": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", - "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", "dependencies": { + "call-bound": "^1.0.2", "function.prototype.name": "^1.1.6", "has-tostringtag": "^1.0.2", "is-async-function": "^2.0.0", - "is-date-object": "^1.0.5", - "is-finalizationregistry": "^1.0.2", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", "is-generator-function": "^1.0.10", - "is-regex": "^1.1.4", + "is-regex": "^1.2.1", "is-weakref": "^1.0.2", "isarray": "^2.0.5", - "which-boxed-primitive": "^1.0.2", + "which-boxed-primitive": "^1.1.0", "which-collection": "^1.0.2", - "which-typed-array": "^1.1.15" + "which-typed-array": "^1.1.16" }, "engines": { "node": ">= 0.4" @@ -17836,14 +19635,15 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", - "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.18.tgz", + "integrity": "sha512-qEcY+KJYlWyLH9vNbsr6/5j59AXk5ni5aakf8ldzBvGde6Iz4sxZGkJyWSAueTG7QhOvNRYb1lDdFmL5Td0QKA==", "dependencies": { "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", "for-each": "^0.3.3", - "gopd": "^1.0.1", + "gopd": "^1.2.0", "has-tostringtag": "^1.0.2" }, "engines": { @@ -17956,20 +19756,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/workbox-build/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/workbox-build/node_modules/json-schema-traverse": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", @@ -18282,6 +20068,16 @@ "node": ">=10" } }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/frontend/package.json b/frontend/package.json index 9e1db10..9da1c0e 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -4,9 +4,14 @@ "private": true, "type": "module", "dependencies": { + "@fortawesome/fontawesome-svg-core": "^6.7.1", + "@fortawesome/free-regular-svg-icons": "^6.7.2", + "@fortawesome/free-solid-svg-icons": "^6.7.1", + "@fortawesome/react-fontawesome": "^0.2.2", "@testing-library/jest-dom": "^5.17.0", "@testing-library/react": "^13.4.0", "@testing-library/user-event": "^13.5.0", + "axios": "^1.7.9", "leaflet": "^1.9.4", "prop-types": "^15.8.1", "react": "^18.3.1", @@ -41,7 +46,9 @@ }, "devDependencies": { "@eslint/js": "^9.14.0", - "eslint": "^9.14.0", + "cypress": "^13.8.0", + "eslint": "^9.18.0", + "eslint-plugin-cypress": "^4.1.0", "eslint-plugin-react": "^7.37.2", "eslint-plugin-react-hooks": "^5.0.0", "globals": "^15.12.0",