Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

implement URLPattern #785

Merged
merged 164 commits into from
Jan 8, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
164 commits
Select commit Hold shift + click to select a range
80cb760
implement URLPattern skeleton
anonrig Nov 30, 2024
fc4b193
use correct value for clang-format
anonrig Nov 30, 2024
cd9df5e
fix build errors
anonrig Nov 30, 2024
09c3f42
create url_pattern-inl.h
anonrig Nov 30, 2024
6656757
add canonicalize methods
anonrig Dec 4, 2024
686af7d
add ada::parse_url_pattern function
anonrig Dec 4, 2024
3c08805
add more comments
anonrig Dec 4, 2024
66da95c
implement getters
anonrig Dec 4, 2024
8377009
add has_regexp_groups()
anonrig Dec 4, 2024
61f4b67
start implementing tokenizer & tokenize
anonrig Dec 4, 2024
fe3af13
add initial parser_url_pattern method
anonrig Dec 4, 2024
1262f8c
add todos and remove redundant qualifiers
anonrig Dec 4, 2024
20691e3
implement escape pattern
anonrig Dec 4, 2024
eed6d80
add CompileComponentOptions
anonrig Dec 7, 2024
f153e00
minor fixes for add-url-pattern (#800)
lemire Dec 8, 2024
7dbf175
rename commits
anonrig Dec 8, 2024
5f36b46
add more parse_url_pattern
anonrig Dec 9, 2024
4619c9d
rename url_pattern class
anonrig Dec 9, 2024
5cdb6db
complete parse_url_pattern implementation
anonrig Dec 9, 2024
5f28a37
add `_component` suffix to components
anonrig Dec 9, 2024
20d7529
remove unnecessary void
anonrig Dec 9, 2024
16aace3
implement generate regular expression methods
anonrig Dec 10, 2024
14d217c
continue working on parser
anonrig Dec 10, 2024
4a31b3f
fix build error
anonrig Dec 12, 2024
f10d3b2
implement constructor string parser
anonrig Dec 12, 2024
4c20080
implement all of tokenizer's functions
anonrig Dec 12, 2024
74f72fd
fix build errors
anonrig Dec 12, 2024
969c87a
fix warnings
anonrig Dec 12, 2024
6276ce8
complete tokenizer
anonrig Dec 12, 2024
5f02b24
implement escape_regexp_string
anonrig Dec 12, 2024
f55e3f5
implement generate_pattern_string
anonrig Dec 12, 2024
cc73e97
fix compiler warnings
anonrig Dec 12, 2024
ca60161
semi-implement match
anonrig Dec 13, 2024
1a47532
complete one more todo
anonrig Dec 13, 2024
a67fe01
simplify create_component_match_result
anonrig Dec 13, 2024
37dc747
simplify
anonrig Dec 13, 2024
d4d843d
use correct inputs for match/exec/test
anonrig Dec 13, 2024
5c212d7
rename wpt_tests to wpt_url_tests
anonrig Dec 13, 2024
d33f228
add wpt_urlpattern_tests skeleton
anonrig Dec 13, 2024
530deb4
add first test
anonrig Dec 14, 2024
f1e04ce
Build fixes (#801)
lemire Dec 14, 2024
a10ba16
fix 2 bugs
anonrig Dec 14, 2024
b67580d
fix linter issues
anonrig Dec 14, 2024
42d6c32
fix 2 more bugs
anonrig Dec 14, 2024
8d8acb2
more progress on missing features
anonrig Dec 16, 2024
ac0817e
move url_pattern_helpers to separate file
anonrig Dec 16, 2024
8523594
fix build errors
anonrig Dec 16, 2024
096e159
use url_pattern_encoding_callback
anonrig Dec 17, 2024
f711faf
fix url pattern constructor error
anonrig Dec 17, 2024
fc5b020
fix more issues
anonrig Dec 17, 2024
690a14a
add initial version of wpt test runner
anonrig Dec 17, 2024
4f1dc9b
simplify json logic (#802)
lemire Dec 17, 2024
21109d1
add fuzzer
anonrig Dec 17, 2024
8929462
removing the reset
lemire Dec 17, 2024
6759d37
update ada idna
anonrig Dec 18, 2024
e8897d9
use ada idna method for valid name code point
anonrig Dec 18, 2024
4e96bbe
fix add part implementation
anonrig Dec 18, 2024
43c806d
fix invalid access errors
anonrig Dec 18, 2024
029e17f
implement tests correctly
anonrig Dec 18, 2024
c4c373b
improve test runner
anonrig Dec 18, 2024
4b3f34d
add url_pattern_init to_string() method
anonrig Dec 19, 2024
8d4994c
update WPT tests
anonrig Dec 19, 2024
5e6f934
fix last remaining todo
anonrig Dec 19, 2024
71468e2
simplify test runner
anonrig Dec 19, 2024
6a4c9a5
minor fixes
lemire Dec 19, 2024
fd6d1d4
some reworking
lemire Dec 19, 2024
7dca1de
make sure to skip invalid tests
anonrig Dec 19, 2024
6d38085
remove std::ranges::iota due to clang
anonrig Dec 20, 2024
abb2af0
add more fuzzing coverage
anonrig Dec 20, 2024
a0df533
try to fix windows issues
anonrig Dec 20, 2024
aeb4699
remove unnecessary copy
anonrig Dec 20, 2024
1eeab05
start testing the validity of the correct responses
anonrig Dec 20, 2024
208c2ff
fix couple of bugs
anonrig Dec 20, 2024
664ed1c
fix invalid ascii checks
anonrig Dec 20, 2024
60c4015
make pattern generation more verbose
anonrig Dec 20, 2024
5e989f0
fix regex error
anonrig Dec 20, 2024
5539349
remove semicolon due to -Werror,-Wextra-semi
anonrig Dec 20, 2024
04252cd
guarding regex call (#805)
lemire Dec 20, 2024
3eac233
add more logging
anonrig Dec 23, 2024
3f7536c
change ada_idna to char32_t
anonrig Dec 23, 2024
602a565
remove try/catch
anonrig Dec 23, 2024
fc3e76e
make canonicalize_ methods more flexible
anonrig Dec 23, 2024
9407a49
fix change_state
anonrig Dec 23, 2024
6d8e960
fix invalid substr call
anonrig Dec 23, 2024
67fb323
fix generate_pattern_string impl
anonrig Dec 23, 2024
dbd003d
fix more small issues
anonrig Dec 23, 2024
8619179
improve url_pattern_init::process
anonrig Dec 23, 2024
a4f0c42
correctly computing the next code point (#808)
lemire Dec 23, 2024
099fb43
adding checks
lemire Dec 23, 2024
049dd11
use std string view to avoid copy
anonrig Dec 23, 2024
6b29fed
use next_index instead of index
anonrig Dec 23, 2024
61f45be
highlight the error message
anonrig Dec 23, 2024
d2bcf67
better decoding
lemire Dec 23, 2024
e997a28
I think that the test is in error (#810)
lemire Dec 23, 2024
6e96857
remove invalid WPT test data
anonrig Dec 24, 2024
188e171
remove invalid assertion
anonrig Dec 24, 2024
5682bf1
fix ipv6 address canonicalize
anonrig Dec 24, 2024
67f9708
fix canonicalize_ipv6_hostname
anonrig Dec 24, 2024
681bf67
simplify test runner
anonrig Dec 24, 2024
3304dd0
fix test runner
anonrig Dec 24, 2024
40f85e3
add a todo
anonrig Dec 24, 2024
fdb044e
remove invalid test case
anonrig Dec 24, 2024
8ee26f4
add tests for expected object
anonrig Dec 24, 2024
7f4acf2
fix hostname tests
anonrig Dec 25, 2024
505f526
complete match implementation
anonrig Dec 25, 2024
6f284c4
fix empty component tests
anonrig Dec 26, 2024
d928625
revert some wpt changes
anonrig Dec 26, 2024
64c6968
add some optional result logging (#812)
lemire Dec 26, 2024
8090940
lint
lemire Dec 26, 2024
f204a8c
fixing logging
lemire Dec 26, 2024
d7b92eb
removing diagram printout
Dec 27, 2024
fc884cb
fix asan build errors
anonrig Dec 28, 2024
77f44d3
simpler version of the yagiz/add-url-pattern branch (#815)
lemire Dec 28, 2024
ab71fa0
simplify implementation
anonrig Dec 29, 2024
ca66004
improve url_pattern_part emplace_back calls
anonrig Dec 29, 2024
b2d9e70
fix url_pattern_component constructor
anonrig Dec 31, 2024
baeafc6
remove the usage of ada.h inside src
anonrig Dec 31, 2024
487582d
move all helper methods to url_pattern.cpp
anonrig Dec 31, 2024
ffee76c
fix urlpatterntestdata.json
anonrig Dec 31, 2024
0100006
fix build errors
anonrig Dec 31, 2024
757683b
add missing check
anonrig Dec 31, 2024
8dc937e
more tests (#817)
lemire Dec 31, 2024
53ba80f
fix assertion error
anonrig Dec 31, 2024
edbf6c0
don't move function calls
anonrig Dec 31, 2024
5f74dd3
fix token reference asan error
anonrig Dec 31, 2024
a5580c7
another test (#818)
lemire Dec 31, 2024
db7acf9
simplify parser and tests
anonrig Jan 1, 2025
c60c2dc
remove unnecessary duplicate_name method
anonrig Jan 1, 2025
385f554
convert Token to class
anonrig Jan 1, 2025
dab41f6
minor cleanups
anonrig Jan 1, 2025
cf69585
remove invalid std::move
anonrig Jan 1, 2025
bd9655d
simplify parser
anonrig Jan 1, 2025
393f515
remove invalid pathname WPT
anonrig Jan 1, 2025
64f66c6
leave some todos for WPT
anonrig Jan 1, 2025
1f563d4
complete inputs parsing
anonrig Jan 1, 2025
52c33b5
removed duplicated code
anonrig Jan 3, 2025
6ae710b
merge error enums
anonrig Jan 3, 2025
1b59155
fix a boolean operation
anonrig Jan 3, 2025
dd20066
update urlpatterntestdata.json
anonrig Jan 3, 2025
528027c
remove unnecessary assertions
anonrig Jan 3, 2025
65fe0b6
removing GLIBCXX debug
Jan 3, 2025
613d60d
updating macos ci
Jan 3, 2025
943f0aa
indent
Jan 3, 2025
9bb11ad
keeping only static
Jan 3, 2025
5b1de58
improve wpt runner
anonrig Jan 3, 2025
1ec8ea0
fix match
anonrig Jan 3, 2025
c858831
add assertions for object return
anonrig Jan 4, 2025
36a7b72
check __cpp_lib_format
lemire Jan 4, 2025
ff2bf00
adding version header (#824)
lemire Jan 4, 2025
0feb9a6
fix match related bugs
anonrig Jan 5, 2025
57accd5
fix port canonicalize
anonrig Jan 5, 2025
67f9988
fix port setting caused by url parser bug
anonrig Jan 5, 2025
9deaa41
add temporary check for special schemes
anonrig Jan 5, 2025
d47ca13
revert opaque host change
anonrig Jan 6, 2025
14e6c53
fix match when input needs to be parsed
anonrig Jan 6, 2025
6f2838f
fix match hash and search prefix
anonrig Jan 6, 2025
89c8bea
fix internal assertion
anonrig Jan 6, 2025
e3f4fe2
improve wpt test runner
anonrig Jan 6, 2025
8b8d5e6
improve regexp matching
anonrig Jan 7, 2025
a47d8c5
fix wpt testrunner
anonrig Jan 7, 2025
b620b09
fix test implementation
anonrig Jan 7, 2025
36a9097
add half-working match_result
anonrig Jan 7, 2025
87def0a
improve regex matching
anonrig Jan 8, 2025
61728b2
remove invalid WPT test
anonrig Jan 8, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .clang-format
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
BasedOnStyle: Google
SortIncludes: false
SortIncludes: Never
2 changes: 2 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,5 @@ root = true
[*]
end_of_line = lf
insert_final_newline = true
indent_size = 2
indent_style = space
4 changes: 2 additions & 2 deletions .github/workflows/macos_install.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,12 @@ concurrency:
cancel-in-progress: true

jobs:
ubuntu-build:
macos-build:
runs-on: macos-latest
strategy:
matrix:
include:
shared: [ON, OFF]
- shared: OFF
steps:
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
- name: Prepare
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ benchmarks/competitors/servo-url/target

#ignore VScode
.vscode/
.idea

# bazel output
bazel-*
8 changes: 8 additions & 0 deletions fuzz/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,14 @@ $CXX $CFLAGS $CXXFLAGS \
$CXX $CFLAGS $CXXFLAGS $LIB_FUZZING_ENGINE url_search_params.o \
-o $OUT/url_search_params

$CXX $CFLAGS $CXXFLAGS \
-std=c++20 \
-I build/singleheader \
-c fuzz/url_pattern.cc -o url_pattern.o

$CXX $CFLAGS $CXXFLAGS $LIB_FUZZING_ENGINE url_pattern.o \
-o $OUT/url_pattern

$CXX $CFLAGS $CXXFLAGS \
-std=c++20 \
-I build/singleheader \
Expand Down
44 changes: 44 additions & 0 deletions fuzz/url_pattern.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#include <fuzzer/FuzzedDataProvider.h>

#include <memory>
#include <string>

#include "ada.cpp"
#include "ada.h"

extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
FuzzedDataProvider fdp(data, size);
std::string source = fdp.ConsumeRandomLengthString(256);
std::string base_source = fdp.ConsumeRandomLengthString(256);

// Without base or options
auto result = ada::parse_url_pattern(source, nullptr, nullptr);
(void)result;

// Testing with base_url
std::string_view base_source_view(base_source.data(), base_source.length());
auto result_with_base =
ada::parse_url_pattern(source, &base_source_view, nullptr);
(void)result_with_base;

// Testing with base_url and options
ada::url_pattern_options options{.ignore_case = true};
auto result_with_base_and_options =
ada::parse_url_pattern(source, &base_source_view, &options);
(void)result_with_base_and_options;

// Testing with url_pattern_init and base url.
ada::url_pattern_init init{.protocol = source,
.username = source,
.password = source,
.hostname = source,
.port = source,
.pathname = source,
.search = source,
.hash = source};
auto result_with_init =
ada::parse_url_pattern(init, &base_source_view, nullptr);
(void)result_with_init;

return 0;
}
4 changes: 4 additions & 0 deletions include/ada.h
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,10 @@
#include "ada/url_aggregator-inl.h"
#include "ada/url_search_params.h"
#include "ada/url_search_params-inl.h"
#include "ada/url_pattern.h"
#include "ada/url_pattern-inl.h"
#include "ada/url_pattern_helpers.h"
#include "ada/url_pattern_helpers-inl.h"

// Public API
#include "ada/ada_version.h"
Expand Down
25 changes: 24 additions & 1 deletion include/ada/ada_idna.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* auto-generated on 2024-12-05 20:44:13 -0500. Do not edit! */
/* auto-generated on 2024-12-18 09:44:34 -0500. Do not edit! */
/* begin file include/idna.h */
#ifndef ADA_IDNA_H
#define ADA_IDNA_H
Expand Down Expand Up @@ -141,6 +141,29 @@ std::string to_unicode(std::string_view input);

#endif // ADA_IDNA_TO_UNICODE_H
/* end file include/ada/idna/to_unicode.h */
/* begin file include/ada/idna/identifier.h */
#ifndef ADA_IDNA_IDENTIFIER_H
#define ADA_IDNA_IDENTIFIER_H

#include <string>
#include <string_view>

namespace ada::idna {

// Access the first code point of the input string.
// Verify if it is valid name code point given a Unicode code point and a
// boolean first: If first is true return the result of checking if code point
// is contained in the IdentifierStart set of code points. Otherwise return the
// result of checking if code point is contained in the IdentifierPart set of
// code points. Returns false if the input is empty or the code point is not
// valid. There is minimal Unicode error handling: the input should be valid
// UTF-8. https://urlpattern.spec.whatwg.org/#is-a-valid-name-code-point
bool valid_name_code_point(char32_t input, bool first);

} // namespace ada::idna

#endif
/* end file include/ada/idna/identifier.h */

#endif
/* end file include/idna.h */
2 changes: 1 addition & 1 deletion include/ada/checkers.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@

#include "ada/common_defs.h"

#include <string_view>
#include <cstring>
#include <string_view>

/**
* These functions are not part of our public API and may
Expand Down
11 changes: 11 additions & 0 deletions include/ada/common_defs.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@
#ifndef ADA_COMMON_DEFS_H
#define ADA_COMMON_DEFS_H

// https://en.cppreference.com/w/cpp/feature_test#Library_features
// detect C++20 features
#include <version>

#ifdef _MSC_VER
#define ADA_VISUAL_STUDIO 1
/**
Expand Down Expand Up @@ -250,4 +254,11 @@ namespace ada {
#define ada_lifetime_bound
#endif

#ifdef __cpp_lib_format
#if __cpp_lib_format >= 202110L
#include <format>
#define ADA_HAS_FORMAT 1
#endif
#endif

#endif // ADA_COMMON_DEFS_H
2 changes: 1 addition & 1 deletion include/ada/helpers.h
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ ada_really_inline std::pair<size_t, bool> get_host_delimiter_location(
* Removes leading and trailing C0 control and whitespace characters from
* string.
*/
ada_really_inline void trim_c0_whitespace(std::string_view& input) noexcept;
void trim_c0_whitespace(std::string_view& input) noexcept;

/**
* @private
Expand Down
16 changes: 15 additions & 1 deletion include/ada/implementation.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
#include "ada/url_aggregator.h"

namespace ada {
enum class errors { generic_error };
enum class errors : uint8_t { type_error };

template <class result_type = ada::url_aggregator>
using result = tl::expected<result_type, ada::errors>;
Expand Down Expand Up @@ -49,6 +49,20 @@ extern template ada::result<url_aggregator> parse<url_aggregator>(
bool can_parse(std::string_view input,
const std::string_view* base_input = nullptr);

/**
* Implementation of the URL pattern parsing algorithm.
* @see https://urlpattern.spec.whatwg.org
*
* @param input valid UTF-8 string or URLPatternInit struct
* @param base_url an optional valid UTF-8 string
* @param options an optional url_pattern_options struct
* @return url_pattern instance
*/
ada_warn_unused tl::expected<url_pattern, errors> parse_url_pattern(
std::variant<std::string_view, url_pattern_init> input,
const std::string_view* base_url = nullptr,
const url_pattern_options* options = nullptr);

/**
* Computes a href string from a file path. The function assumes
* that the input is a valid ASCII or UTF-8 string.
Expand Down
17 changes: 12 additions & 5 deletions include/ada/parser.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,21 @@
#ifndef ADA_PARSER_H
#define ADA_PARSER_H

#include <optional>
#include <string_view>
#include <variant>

#include "ada/encoding_type.h"
#include "ada/expected.h"
#include "ada/state.h"

/**
* @private
*/
namespace ada {
struct url_aggregator;
struct url;
class url_pattern;
struct url_pattern_options;
struct url_pattern_init;
enum class errors : uint8_t;
} // namespace ada

/**
Expand All @@ -31,7 +33,7 @@ namespace ada::parser {
* parameter that can be used to resolve relative URLs. If the base_url is
* provided, the user_input is resolved against the base_url.
*/
template <typename result_type = ada::url_aggregator>
template <typename result_type = url_aggregator>
result_type parse_url(std::string_view user_input,
const result_type* base_url = nullptr);

Expand All @@ -40,14 +42,19 @@ extern template url_aggregator parse_url<url_aggregator>(
extern template url parse_url<url>(std::string_view user_input,
const url* base_url);

template <typename result_type = ada::url_aggregator, bool store_values = true>
template <typename result_type = url_aggregator, bool store_values = true>
result_type parse_url_impl(std::string_view user_input,
const result_type* base_url = nullptr);

extern template url_aggregator parse_url_impl<url_aggregator>(
std::string_view user_input, const url_aggregator* base_url);
extern template url parse_url_impl<url>(std::string_view user_input,
const url* base_url);

tl::expected<url_pattern, errors> parse_url_pattern_impl(
std::variant<std::string_view, url_pattern_init> input,
const std::string_view* base_url, const url_pattern_options* options);

} // namespace ada::parser

#endif // ADA_PARSER_H
2 changes: 1 addition & 1 deletion include/ada/unicode-inl.h
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
*/
#ifndef ADA_UNICODE_INL_H
#define ADA_UNICODE_INL_H
#include <algorithm>
#include "ada/unicode.h"
#include "ada/character_sets-inl.h"

/**
* Unicode operations. These functions are not part of our public API and may
Expand Down
14 changes: 14 additions & 0 deletions include/ada/unicode.h
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,20 @@ ada_really_inline constexpr bool is_alnum_plus(char c) noexcept;
*/
ada_really_inline constexpr bool is_ascii_hex_digit(char c) noexcept;

/**
* @private
* An ASCII digit is a code point in the range U+0030 (0) to U+0039 (9),
* inclusive.
*/
ada_really_inline constexpr bool is_ascii_digit(char c) noexcept;

/**
* @private
* @details If a char is between U+0000 and U+007F inclusive, then it's an ASCII
* character.
*/
ada_really_inline constexpr bool is_ascii(char32_t c) noexcept;

/**
* @private
* Checks if the input is a C0 control or space character.
Expand Down
1 change: 1 addition & 0 deletions include/ada/url.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
#include "ada/unicode.h"
#include "ada/url_base.h"
#include "ada/url_components.h"
#include "ada/helpers.h"

namespace ada {

Expand Down
8 changes: 2 additions & 6 deletions include/ada/url_aggregator-inl.h
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,8 @@

#include "ada/character_sets.h"
#include "ada/character_sets-inl.h"
#include "ada/checkers-inl.h"
#include "ada/checkers.h"
#include "ada/helpers.h"
#include "ada/unicode.h"
#include "ada/unicode-inl.h"
#include "ada/url_aggregator.h"
#include "ada/url_components.h"
Expand Down Expand Up @@ -269,7 +268,6 @@ inline void url_aggregator::update_base_pathname(const std::string_view input) {

const bool begins_with_dashdash = input.starts_with("//");
if (!begins_with_dashdash && has_dash_dot()) {
ada_log("url_aggregator::update_base_pathname has /.: \n", to_diagram());
// We must delete the ./
delete_dash_dot();
}
Expand All @@ -292,8 +290,6 @@ inline void url_aggregator::update_base_pathname(const std::string_view input) {
if (components.hash_start != url_components::omitted) {
components.hash_start += difference;
}
ada_log("url_aggregator::update_base_pathname end '", input, "' [",
input.size(), " bytes] \n", to_diagram());
ADA_ASSERT_TRUE(validate());
}

Expand Down Expand Up @@ -413,7 +409,7 @@ inline void url_aggregator::append_base_username(const std::string_view input) {
}

constexpr void url_aggregator::clear_password() {
ada_log("url_aggregator::clear_password ", to_string(), "\n", to_diagram());
ada_log("url_aggregator::clear_password ", to_string());
ADA_ASSERT_TRUE(validate());
if (!has_password()) {
return;
Expand Down
Loading
Loading