Release v2.22.1 - #1183
Conversation
📝 WalkthroughWalkthroughThe release updates the package version to 2.22.1 and regenerates the TypeDoc site. Documentation assets, styles, navigation/search payloads, public API pages, examples, source links, and generated HTML formatting are updated. ChangesRelease and documentation regeneration
Estimated code review effort: 3 (Moderate) | ~20 minutes Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches 💡 1🛠️ Fix failing CI checks 💡
📝 Generate docstrings
🧪 Generate unit tests (beta)
Warning There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure. 🔧 ESLint
docs/assets/highlight.cssParsing error: Declaration or statement expected. docs/assets/style.cssParsing error: Declaration expected. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/classes/PopupCancelledError.html`:
- Around line 13-15: Correct the source declaration or documentation metadata
for the exported PopupCancelledError and PopupOpenError classes, or disable
inclusion of the external declarations, then regenerate the docs. Update
docs/classes/PopupCancelledError.html to describe popup cancellation and
docs/classes/PopupOpenError.html to describe popup-opening failures; both sites
require corrected generated output.
In `@docs/interfaces/Auth0ContextInterface.html`:
- Around line 234-246: Update the example under getAccessTokenWithPopup to call
the exposed getAccessTokenWithPopup member instead of the undefined
getTokenWithPopup function, while preserving the existing options and config
arguments.
In `@docs/interfaces/PasskeyApiClient.html`:
- Around line 15-19: Update the PasskeyApiClient TypeDoc introductory summary to
state that the interface exposes five public methods and list getLoginChallenge,
getSignupChallenge, and getTokenWithPasskey alongside signup and login.
Regenerate the affected documentation pages so the generated HTML reflects the
updated summary.
In `@docs/interfaces/RedirectConnectAccountOptions.html`:
- Line 26: Regenerate the TypeDoc output to remove duplicated sections and
repeated examples or members, leaving one canonical section per documented item.
Apply this to docs/interfaces/RedirectConnectAccountOptions.html (26-26),
docs/interfaces/RedirectLoginOptions.html (32-32),
docs/interfaces/RevokeRefreshTokenOptions.html (25-25),
docs/interfaces/UpdateAuthenticationMethodRequest.html (22-22),
docs/interfaces/VerifyParams.html (31-31), docs/interfaces/WithAuth0Props.html
(25-25), docs/interfaces/WithAuthenticationRequiredOptions.html (25-25), and
docs/types/FetcherConfig.html (26-26); no manual documentation content changes
are needed beyond producing the clean generated files.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 937a5d52-6c2e-41b8-b055-5602685b15b1
⛔ Files ignored due to path filters (2)
CHANGELOG.mdis excluded by!CHANGELOG.mdpackage-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (100)
.versiondocs/assets/hierarchy.jsdocs/assets/highlight.cssdocs/assets/main.jsdocs/assets/navigation.jsdocs/assets/search.jsdocs/assets/style.cssdocs/classes/AuthenticationError.htmldocs/classes/ConnectError.htmldocs/classes/GenericError.htmldocs/classes/InMemoryCache.htmldocs/classes/InvalidConfigurationError.htmldocs/classes/LocalStorageCache.htmldocs/classes/MfaChallengeError.htmldocs/classes/MfaEnrollmentError.htmldocs/classes/MfaEnrollmentFactorsError.htmldocs/classes/MfaError.htmldocs/classes/MfaListAuthenticatorsError.htmldocs/classes/MfaRequiredError.htmldocs/classes/MfaVerifyError.htmldocs/classes/MissingRefreshTokenError.htmldocs/classes/MissingScopesError.htmldocs/classes/MyAccountApiError.htmldocs/classes/OAuthError.htmldocs/classes/PasskeyChallengeError.htmldocs/classes/PasskeyError.htmldocs/classes/PasskeyGetTokenError.htmldocs/classes/PasskeyRegisterError.htmldocs/classes/PopupCancelledError.htmldocs/classes/PopupOpenError.htmldocs/classes/PopupTimeoutError.htmldocs/classes/TimeoutError.htmldocs/classes/UseDpopNonceError.htmldocs/classes/User.htmldocs/enums/ResponseType.htmldocs/functions/Auth0Provider.htmldocs/functions/useAuth0.htmldocs/functions/withAuth0.htmldocs/functions/withAuthenticationRequired.htmldocs/hierarchy.htmldocs/index.htmldocs/interfaces/ActClaim.htmldocs/interfaces/Auth0ContextInterface.htmldocs/interfaces/Authenticator.htmldocs/interfaces/AuthorizationParams.htmldocs/interfaces/ChallengeAuthenticatorParams.htmldocs/interfaces/ChallengeResponse.htmldocs/interfaces/ClientConfiguration.htmldocs/interfaces/EnrollEmailParams.htmldocs/interfaces/EnrollOtpParams.htmldocs/interfaces/EnrollPushParams.htmldocs/interfaces/EnrollSmsParams.htmldocs/interfaces/EnrollVoiceParams.htmldocs/interfaces/EnrollmentFactor.htmldocs/interfaces/Factor.htmldocs/interfaces/GetTokenSilentlyOptions.htmldocs/interfaces/GetTokenWithPopupOptions.htmldocs/interfaces/ICache.htmldocs/interfaces/IdToken.htmldocs/interfaces/LogoutOptions.htmldocs/interfaces/LogoutUrlOptions.htmldocs/interfaces/MfaApiClient.htmldocs/interfaces/MyAccountApiClient.htmldocs/interfaces/PasskeyApiClient.htmldocs/interfaces/PopupConfigOptions.htmldocs/interfaces/PopupLoginOptions.htmldocs/interfaces/RedirectConnectAccountOptions.htmldocs/interfaces/RedirectLoginOptions.htmldocs/interfaces/RevokeRefreshTokenOptions.htmldocs/interfaces/UpdateAuthenticationMethodRequest.htmldocs/interfaces/VerifyParams.htmldocs/interfaces/WithAuth0Props.htmldocs/interfaces/WithAuthenticationRequiredOptions.htmldocs/modules.htmldocs/types/AppState.htmldocs/types/Auth0ProviderOptions.htmldocs/types/Auth0ProviderWithClientOptions.htmldocs/types/Auth0ProviderWithConfigOptions.htmldocs/types/AuthenticationMethod.htmldocs/types/AuthenticationMethodType.htmldocs/types/CacheLocation.htmldocs/types/Cacheable.htmldocs/types/ConnectAccountRedirectResult.htmldocs/types/ConnectedAccount.htmldocs/types/CustomTokenExchangeOptions.htmldocs/types/EnrollParams.htmldocs/types/EnrollmentChallengeOptions.htmldocs/types/EnrollmentChallengeResponse.htmldocs/types/EnrollmentResponse.htmldocs/types/EnrollmentVerifyOptions.htmldocs/types/FetcherConfig.htmldocs/types/InteractiveErrorHandler.htmldocs/types/MfaFactorType.htmldocs/types/PasskeyLoginOptions.htmldocs/types/PasskeySignupOptions.htmldocs/types/RefreshTokenMode.htmldocs/types/TokenEndpointResponse.htmldocs/variables/Auth0Context.htmldocs/variables/RefreshTokenMode.htmlpackage.json
| <section class="tsd-panel tsd-comment"> | ||
| <div class="tsd-comment tsd-typography"><p>Thrown when network requests to the Auth server fail.</p> | ||
| </div></section> |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== repo files matching PopupCancelledError/PopupOpenError/TypeDoc =="
git ls-files | grep -E '(^docs/classes/(PopupCancelledError|PopupOpenError)\.html$|package\.json|tsconfig.*\.json$|Typedoc|typedoc|README)' | sed -n '1,120p'
echo
echo "== local docs snippets =="
for f in docs/classes/PopupCancelledError.html docs/classes/PopupOpenError.html; do
if [ -f "$f" ]; then
echo "--- $f ---"
sed -n '1,60p' "$f"
fi
done
echo
echo "== search for popup error classes in tracked src code =="
rg -n "class .*Popup.*(Cancelled|Open)Error|PopupCancelledError|PopupOpenError|`@throws`|Thrown when network|to open the popup|network requests" -S --glob '!docs/**' . | sed -n '1,220p'Repository: auth0/auth0-react
Length of output: 18853
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== package/type definitions for generated docs =="
sed -n '1,120p' package.json
echo
sed -n '1,120p' typedoc.js
echo
echo "== import path/type metadata for popup errors in tracked code =="
rg -n "PopupCancelledError|PopupOpenError|GenericError|`@auth0/auth0-spa-js`" -S --glob '!docs/**' src .github package.json typedoc.js | sed -n '1,220p'
echo
echo "== generated docs constructor comments relevant snippets =="
python3 - <<'PY'
from pathlib import Path
import re
for path in ["docs/classes/PopupCancelledError.html", "docs/classes/PopupOpenError.html"]:
html = Path(path).read_text(encoding="utf-8")
m = re.search(r'class="tsd-comment tsd-typography">(?P<comment>.*?)</div>.*<div class="tsd-constructor-signature">(?P<sig>.*?)<', html, flags=re.S)
if not m:
print(path, "NO_MATCH")
continue
print(f"--- {path} ---")
print("class comment:", re.sub(r'<[^>]+>', ' ', m.group('comment')).strip()[:200])
print("defined in:", re.search(r'Defined in [^<]+</li>', html).group(0) if re.search(r'Defined in [^<]+</li>', html) else "N/A")
PYRepository: auth0/auth0-react
Length of output: 5203
Correct the exported popup-error documentation.
Both docs/classes/PopupCancelledError.html and docs/classes/PopupOpenError.html are generated from @auth0/auth0-spa-js declarations and currently label both classes as “Thrown when network requests to the Auth server fail.” Update the originating declarations/metadata or disable external doc inclusion, then regenerate so consumers can distinguish popup cancellation from popup-open failures.
📍 Affects 2 files
docs/classes/PopupCancelledError.html#L13-L15(this comment)docs/classes/PopupOpenError.html#L13-L15
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/classes/PopupCancelledError.html` around lines 13 - 15, Correct the
source declaration or documentation metadata for the exported
PopupCancelledError and PopupOpenError classes, or disable inclusion of the
external declarations, then regenerate the docs. Update
docs/classes/PopupCancelledError.html to describe popup cancellation and
docs/classes/PopupOpenError.html to describe popup-opening failures; both sites
require corrected generated output.
| <h3 class="tsd-anchor-link" id="getaccesstokenwithpopup"><span>get<wbr/>Access<wbr/>Token<wbr/>With<wbr/>Popup</span><a href="#getaccesstokenwithpopup" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3> | ||
| <div class="tsd-signature"><span class="tsd-kind-property">getAccessTokenWithPopup</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span><br/> <span class="tsd-kind-parameter">options</span><span class="tsd-signature-symbol">?:</span> <a href="GetTokenWithPopupOptions.html" class="tsd-signature-type tsd-kind-interface">GetTokenWithPopupOptions</a><span class="tsd-signature-symbol">,</span><br/> <span class="tsd-kind-parameter">config</span><span class="tsd-signature-symbol">?:</span> <a href="PopupConfigOptions.html" class="tsd-signature-type tsd-kind-interface">PopupConfigOptions</a><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=></span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">undefined</span><span class="tsd-signature-symbol">></span></div> | ||
| <div class="tsd-comment tsd-typography"><pre><code class="js"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">token</span><span class="hl-1"> = </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-0">getTokenWithPopup</span><span class="hl-1">(</span><span class="hl-5">options</span><span class="hl-1">, </span><span class="hl-5">config</span><span class="hl-1">);</span> | ||
| </code><button type="button">Copy</button></pre> | ||
|
|
||
| <p>Get an access token interactively.</p> | ||
| <p>Opens a popup with the <code>/authorize</code> URL using the parameters | ||
| provided as arguments. Random and secure <code>state</code> and <code>nonce</code> | ||
| parameters will be auto-generated. If the response is successful, | ||
| results will be valid according to their expiration times.</p> | ||
| </div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/auth0/auth0-react/blob/4dc455b2a7caf587c8c6629d34bd2dc97974a56e/src/auth0-context.tsx#L85">src/auth0-context.tsx:85</a></li></ul></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="getconfiguration"><span>get<wbr/>Configuration</span><a href="#getconfiguration" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">getConfiguration</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">()</span> <span class="tsd-signature-symbol">=></span> <span class="tsd-signature-type">Readonly</span><span class="tsd-signature-symbol"><</span><a href="ClientConfiguration.html" class="tsd-signature-type tsd-kind-interface">ClientConfiguration</a><span class="tsd-signature-symbol">></span></div><div class="tsd-comment tsd-typography"><pre><code class="js"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">config</span><span class="hl-1"> = </span><span class="hl-0">getConfiguration</span><span class="hl-1">();</span><br/><span class="hl-3">// { domain: 'tenant.auth0.com', clientId: 'abc123' }</span> | ||
| </div><aside class="tsd-sources"> | ||
| <ul> | ||
| <li>Defined in <a href="https://github.com/auth0/auth0-react/blob/d790cb18bb55952b5227851a96ecdb8c41770249/src/auth0-context.tsx#L85">src/auth0-context.tsx:85</a></li></ul></aside></section> |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Fix the popup-token example.
Line 236 calls getTokenWithPopup, but the exposed member is getAccessTokenWithPopup; copied code will reference an undefined function.
Proposed fix
-const token = await getTokenWithPopup(options, config);
+const token = await getAccessTokenWithPopup(options, config);📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| <h3 class="tsd-anchor-link" id="getaccesstokenwithpopup"><span>get<wbr/>Access<wbr/>Token<wbr/>With<wbr/>Popup</span><a href="#getaccesstokenwithpopup" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3> | |
| <div class="tsd-signature"><span class="tsd-kind-property">getAccessTokenWithPopup</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span><br/> <span class="tsd-kind-parameter">options</span><span class="tsd-signature-symbol">?:</span> <a href="GetTokenWithPopupOptions.html" class="tsd-signature-type tsd-kind-interface">GetTokenWithPopupOptions</a><span class="tsd-signature-symbol">,</span><br/> <span class="tsd-kind-parameter">config</span><span class="tsd-signature-symbol">?:</span> <a href="PopupConfigOptions.html" class="tsd-signature-type tsd-kind-interface">PopupConfigOptions</a><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=></span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">undefined</span><span class="tsd-signature-symbol">></span></div> | |
| <div class="tsd-comment tsd-typography"><pre><code class="js"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">token</span><span class="hl-1"> = </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-0">getTokenWithPopup</span><span class="hl-1">(</span><span class="hl-5">options</span><span class="hl-1">, </span><span class="hl-5">config</span><span class="hl-1">);</span> | |
| </code><button type="button">Copy</button></pre> | |
| <p>Get an access token interactively.</p> | |
| <p>Opens a popup with the <code>/authorize</code> URL using the parameters | |
| provided as arguments. Random and secure <code>state</code> and <code>nonce</code> | |
| parameters will be auto-generated. If the response is successful, | |
| results will be valid according to their expiration times.</p> | |
| </div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/auth0/auth0-react/blob/4dc455b2a7caf587c8c6629d34bd2dc97974a56e/src/auth0-context.tsx#L85">src/auth0-context.tsx:85</a></li></ul></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="getconfiguration"><span>get<wbr/>Configuration</span><a href="#getconfiguration" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">getConfiguration</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">()</span> <span class="tsd-signature-symbol">=></span> <span class="tsd-signature-type">Readonly</span><span class="tsd-signature-symbol"><</span><a href="ClientConfiguration.html" class="tsd-signature-type tsd-kind-interface">ClientConfiguration</a><span class="tsd-signature-symbol">></span></div><div class="tsd-comment tsd-typography"><pre><code class="js"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">config</span><span class="hl-1"> = </span><span class="hl-0">getConfiguration</span><span class="hl-1">();</span><br/><span class="hl-3">// { domain: 'tenant.auth0.com', clientId: 'abc123' }</span> | |
| </div><aside class="tsd-sources"> | |
| <ul> | |
| <li>Defined in <a href="https://github.com/auth0/auth0-react/blob/d790cb18bb55952b5227851a96ecdb8c41770249/src/auth0-context.tsx#L85">src/auth0-context.tsx:85</a></li></ul></aside></section> | |
| <h3 class="tsd-anchor-link" id="getaccesstokenwithpopup"><span>get<wbr/>Access<wbr/>Token<wbr/>With<wbr/>Popup</span><a href="`#getaccesstokenwithpopup`" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3> | |
| <div class="tsd-signature"><span class="tsd-kind-property">getAccessTokenWithPopup</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span><br/> <span class="tsd-kind-parameter">options</span><span class="tsd-signature-symbol">?:</span> <a href="GetTokenWithPopupOptions.html" class="tsd-signature-type tsd-kind-interface">GetTokenWithPopupOptions</a><span class="tsd-signature-symbol">,</span><br/> <span class="tsd-kind-parameter">config</span><span class="tsd-signature-symbol">?:</span> <a href="PopupConfigOptions.html" class="tsd-signature-type tsd-kind-interface">PopupConfigOptions</a><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=></span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">undefined</span><span class="tsd-signature-symbol">></span></div> | |
| <div class="tsd-comment tsd-typography"><pre><code class="js"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">token</span><span class="hl-1"> = </span><span class="hl-4">await</span><span class="hl-1"> </span><span class="hl-0">getAccessTokenWithPopup</span><span class="hl-1">(</span><span class="hl-5">options</span><span class="hl-1">, </span><span class="hl-5">config</span><span class="hl-1">);</span> | |
| </code><button type="button">Copy</button></pre> | |
| <p>Get an access token interactively.</p> | |
| <p>Opens a popup with the <code>/authorize</code> URL using the parameters | |
| provided as arguments. Random and secure <code>state</code> and <code>nonce</code> | |
| parameters will be auto-generated. If the response is successful, | |
| results will be valid according to their expiration times.</p> | |
| </div><aside class="tsd-sources"> | |
| <ul> | |
| <li>Defined in <a href="https://github.com/auth0/auth0-react/blob/d790cb18bb55952b5227851a96ecdb8c41770249/src/auth0-context.tsx#L85">src/auth0-context.tsx:85</a></li></ul></aside></section> |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/interfaces/Auth0ContextInterface.html` around lines 234 - 246, Update
the example under getAccessTokenWithPopup to call the exposed
getAccessTokenWithPopup member instead of the undefined getTokenWithPopup
function, while preserving the existing options and config arguments.
| <p>Provides 2 public methods:</p> | ||
| <ul> | ||
| <li><code>signup</code> — Register a new user with a passkey (full flow: challenge → WebAuthn → token exchange)</li> | ||
| <li><code>login</code> — Sign in with a passkey (full flow: challenge → WebAuthn → token exchange)</li> | ||
| </ul> |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Update the stale public-method summary.
This says there are two public methods, but the interface now exposes five, including getLoginChallenge, getSignupChallenge, and getTokenWithPasskey. Update the introductory list in the TypeDoc source and regenerate these pages.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/interfaces/PasskeyApiClient.html` around lines 15 - 19, Update the
PasskeyApiClient TypeDoc introductory summary to state that the interface
exposes five public methods and list getLoginChallenge, getSignupChallenge, and
getTokenWithPasskey alongside signup and login. Regenerate the affected
documentation pages so the generated HTML reflects the updated summary.
| <h5 class="tsd-index-heading uppercase">Index</h5></summary> | ||
| <div class="tsd-accordion-details"> | ||
| <section class="tsd-index-section"> | ||
| <h3 class="tsd-index-heading tsd-anchor-link" id="properties">Properties<a href="#properties" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../assets/icons.svg#icon-anchor"></use></svg></a></h3> |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | 🏗️ Heavy lift
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Inspect the repository docs files around the reported sections and search for duplicate IDs/nodes.
files=(
docs/interfaces/RedirectConnectAccountOptions.html
docs/interfaces/RedirectLoginOptions.html
docs/interfaces/RevokeRefreshTokenOptions.html
docs/interfaces/UpdateAuthenticationMethodRequest.html
docs/interfaces/VerifyParams.html
docs/interfaces/WithAuth0Props.html
docs/interfaces/WithAuthenticationRequiredOptions.html
docs/types/FetcherConfig.html
)
printf 'Files exist:\n'
for f in "${files[@]}"; do
if [ -f "$f" ]; then
echo "OK $f"
else
echo "MISSING $f"
fi
done
printf '\nReported headings around reported lines:\n'
for f in "${files[@]}"; do
if [ -f "$f" ]; then
echo "--- $f"
nl -ba "$f" | sed -n '18,37p'
fi
done
printf '\nUnique anchor IDs in each file (first 80 IDs):\n'
python3 - <<'PY'
import re, pathlib
files = [
"docs/interfaces/RedirectConnectAccountOptions.html",
"docs/interfaces/RedirectLoginOptions.html",
"docs/interfaces/RevokeRefreshTokenOptions.html",
"docs/interfaces/UpdateAuthenticationMethodRequest.html",
"docs/interfaces/VerifyParams.html",
"docs/interfaces/WithAuth0Props.html",
"docs/interfaces/WithAuthenticationRequiredOptions.html",
"docs/types/FetcherConfig.html",
]
for path in files:
text = pathlib.Path(path).read_text(encoding="utf-8", errors="ignore")
ids = re.findall(r'\bid=([\"\'])([^"\']+)\1(?:\s+|\s*\/?:)', text)
print(path, len(ids), "duplicates:", [x for x in ids if ids.count(x) > 1][:5])
print(" ", ids[:80])
PY
printf '\nRepeated heading/marker occurrences for selected labels:\n'
python3 - <<'PY'
import re, pathlib
patterns = [
r'<h3[^>]*id=.*?properties',
r'<h4[^>]*auth0',
r'<h4[^>]*audience',
r'<h4[^>]*mfa',
r'<h4[^>]*expiresInAs',
r'<h4[^>]*clientAppType',
r'<h4[^>]*refreshToken',
r'<h4[^>]*challenge',
r'<h4[^>]*member',
]
files = [
"docs/interfaces/RedirectConnectAccountOptions.html",
"docs/interfaces/RedirectLoginOptions.html",
"docs/interfaces/RevokeRefreshTokenOptions.html",
"docs/interfaces/UpdateAuthenticationMethodRequest.html",
"docs/interfaces/VerifyParams.html",
"docs/interfaces/WithAuth0Props.html",
"docs/interfaces/WithAuthenticationRequiredOptions.html",
"docs/types/FetcherConfig.html",
]
for path in files:
text = pathlib.Path(path).read_text(encoding="utf-8", errors="ignore")
print(f"--- {path}")
for pat in patterns:
matches = re.findall(pat, text, flags=re.I)
if len(matches) > 1:
print(f" {pat}: {len(matches)}")
mtext = '\n'.join(matches[:5])
print(mtext)
PYRepository: auth0/auth0-react
Length of output: 680
🏁 Script executed:
#!/bin/bash
set -euo pipefail
files=(
docs/interfaces/RedirectConnectAccountOptions.html
docs/interfaces/RedirectLoginOptions.html
docs/interfaces/RevokeRefreshTokenOptions.html
docs/interfaces/UpdateAuthenticationMethodRequest.html
docs/interfaces/VerifyParams.html
docs/interfaces/WithAuth0Props.html
docs/interfaces/WithAuthenticationRequiredOptions.html
docs/types/FetcherConfig.html
)
printf 'Reported headings around reported lines:\n'
for f in "${files[@]}"; do
echo "--- $f"
sed -n '18,37p' "$f" | cat -n
done
printf '\nAnchor IDs and duplicates per file:\n'
python3 - <<'PY'
import re, pathlib
files = [
"docs/interfaces/RedirectConnectAccountOptions.html",
"docs/interfaces/RedirectLoginOptions.html",
"docs/interfaces/RevokeRefreshTokenOptions.html",
"docs/interfaces/UpdateAuthenticationMethodRequest.html",
"docs/interfaces/VerifyParams.html",
"docs/interfaces/WithAuth0Props.html",
"docs/interfaces/WithAuthenticationRequiredOptions.html",
"docs/types/FetcherConfig.html",
]
for path in files:
text = pathlib.Path(path).read_text(encoding="utf-8", errors="ignore")
ids = re.findall(r'\bid=(["\'])([^"\']+)\1(?:\s+|\s*\/?:)', text)
counts = {}
for _, x in ids:
counts[x] = counts.get(x, 0) + 1
dups = sorted([(x, n) for x, n in counts.items() if n > 1], key=lambda x: (-x[1], x[0]))[:20]
print(path, "ids:", len(ids), "duplicates:", dups[:10])
print(" ", ids[:80])
PY
printf '\nRepeated h3/h4 headings for selected labels:\n'
python3 - <<'PY'
import re, pathlib
files = [
"docs/interfaces/RedirectConnectAccountOptions.html",
"docs/interfaces/RedirectLoginOptions.html",
"docs/interfaces/RevokeRefreshTokenOptions.html",
"docs/interfaces/UpdateAuthenticationMethodRequest.html",
"docs/interfaces/VerifyParams.html",
"docs/interfaces/WithAuth0Props.html",
"docs/interfaces/WithAuthenticationRequiredOptions.html",
"docs/types/FetcherConfig.html",
]
patterns = [
r'<h3[^>]*id=.*?properties[^>]*>',
r'<h4[^>]*id=.*?auth0',
r'<h4[^>]*id=.*?audience',
r'<h4[^>]*id=.*?mfa',
r'<h4[^>]*id=.*?clientAppType',
r'<h4[^>]*id=.*?refreshToken',
r'<h4[^>]*id=.*?challenge',
r'<h4[^>]*id=.*?expiresInAs',
]
for path in files:
text = pathlib.Path(path).read_text(encoding="utf-8", errors="ignore")
print(f"--- {path}")
for pat in patterns:
matches = re.findall(pat, text, flags=re.I)
if len(matches) > 1:
print(f" {pat}: {len(matches)}")
for m in matches[:3]:
sub = re.search(r'<h[34][^>]*>([^<]*(?:</h[34]>))?', m, flags=re.I | re.DOTALL)
print(" ", sub.group(0)[:300].replace("\n"," "))
PY
printf '\nSearch for repeated member/example property blocks by common marker strings:\n'
python3 - <<'PY'
import re, pathlib
files = [
"docs/interfaces/RedirectConnectAccountOptions.html",
"docs/interfaces/RedirectLoginOptions.html",
"docs/interfaces/RevokeRefreshTokenOptions.html",
"docs/interfaces/UpdateAuthenticationMethodRequest.html",
"docs/interfaces/VerifyParams.html",
"docs/interfaces/WithAuth0Props.html",
"docs/interfaces/WithAuthenticationRequiredOptions.html",
"docs/types/FetcherConfig.html",
]
for path in files:
text = pathlib.Path(path).read_text(encoding="utf-8", errors="ignore")
hits = [x for x in [
'<h4 id="mfa">',
'<h4 id="auth0">',
'<h4 id="audience">',
'<h4 id="clientAppType">',
'<h4 id="refreshToken">',
'<h4 id="challenge">',
'<h4 id="expiresInAs">',
'<a href="`#properties`"',
] if text.count(x) > 1]
if hits:
print(f"--- {path}")
for h in hits:
print(f"{h}: {text.count(h)}")
start = text.find(h)
start = text.rfind('<', 0, start)
snippet = text[start:start+400].replace("\n", "\\n")
print(" ", snippet)
PYRepository: auth0/auth0-react
Length of output: 28324
Regenerate a proper TypeDoc build to remove duplicated documentation sections. The listed pages contain duplicated sections with IDs like properties, example, example-1, and example-2, plus repeated examples/members in several pages. A clean TypeDoc generation should emit one canonical section per documented item.
📍 Affects 8 files
docs/interfaces/RedirectConnectAccountOptions.html#L26-L26(this comment)docs/interfaces/RedirectLoginOptions.html#L32-L32docs/interfaces/RevokeRefreshTokenOptions.html#L25-L25docs/interfaces/UpdateAuthenticationMethodRequest.html#L22-L22docs/interfaces/VerifyParams.html#L31-L31docs/interfaces/WithAuth0Props.html#L25-L25docs/interfaces/WithAuthenticationRequiredOptions.html#L25-L25docs/types/FetcherConfig.html#L26-L26
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/interfaces/RedirectConnectAccountOptions.html` at line 26, Regenerate
the TypeDoc output to remove duplicated sections and repeated examples or
members, leaving one canonical section per documented item. Apply this to
docs/interfaces/RedirectConnectAccountOptions.html (26-26),
docs/interfaces/RedirectLoginOptions.html (32-32),
docs/interfaces/RevokeRefreshTokenOptions.html (25-25),
docs/interfaces/UpdateAuthenticationMethodRequest.html (22-22),
docs/interfaces/VerifyParams.html (31-31), docs/interfaces/WithAuth0Props.html
(25-25), docs/interfaces/WithAuthenticationRequiredOptions.html (25-25), and
docs/types/FetcherConfig.html (26-26); no manual documentation content changes
are needed beyond producing the clean generated files.
Changed
Summary by CodeRabbit
New Features
Documentation
Chores