-
Notifications
You must be signed in to change notification settings - Fork 454
docs(repo): Add typedoc comments; generate typedoc output for /objects docs #8276
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
Open
alexisintech
wants to merge
94
commits into
main
Choose a base branch
from
aa/generate-object-docs
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from all commits
Commits
Show all changes
94 commits
Select commit
Hold shift + click to select a range
4a447b8
Drop functions from property tables; add JSDoc comments
alexisintech 9100976
undo changes about removing functions from property tables
alexisintech ea3d2eb
Revert "undo changes about removing functions from property tables"
alexisintech 0292f5f
only remove functions from property tables if output page listed in a…
alexisintech 8b9b1d4
begin building extract-methods.mjs
alexisintech ac8f133
use custom-plugin in extract-methods for link replacements
alexisintech 9139e27
catchall link replacements should never replace text in headings
alexisintech 2978152
protectPipeDelimitedInlineCodeSpans; handle if members live on alias …
alexisintech adb43df
add client resource to link replacements
alexisintech a0a9731
refactor extract-methods to use existing plugins to create tables,etc
alexisintech c9129a4
type intersections should merge all type information into the generat…
alexisintech 2d1ceec
objects get their own folders with <object>-properties file and <obje…
alexisintech 6eedb5b
include typealias functions in the methods generation
alexisintech ac0f71d
add helpers for documenting union types in property tables
alexisintech acfba24
cleaning up comments
alexisintech 67bfa0b
fix links
alexisintech 064abe1
fix: handle union objects only for type declaration tables
alexisintech a6f2857
remove slugs from properties file/methods folder; do not flatten inli…
alexisintech 6fef09a
docs review
SarahSoutoul c99e565
fix clerkui descriptions; fix handlegoogleonetapcallback link; add ap…
alexisintech 1250e86
inline handleemaillinkverificationparams
alexisintech a70521c
refactor to combine all reference_object info into one object
alexisintech 9680e81
fix session object addition; add generation logic for union literals
alexisintech 3a7b36b
add back children in property tables if they're documented; handle Ch…
alexisintech 4fdd354
do not flatten parent props if they link to a dedicated page
alexisintech 6e3e360
remove jsdoc comment from constructor
alexisintech 3657c38
remove update to current-user
alexisintech 94d5eb1
Merge branch 'main' into aa/generate-object-docs
alexisintech 63e195c
remove use of 'optional' in jscomments
alexisintech a49d4b4
fix tsconfig error
alexisintech ee8d16a
remove inline tag from getting generated in output
alexisintech 3327641
add user object and comments; support generic instantiation + interse…
alexisintech d6fa55f
remove backticks from link replacements; add more link replacements
alexisintech b1a0766
omit experimental tag + text from output; add more jsdoc comments for…
alexisintech 0e3cbd6
finish documenting user object
alexisintech 196fba4
generate signinfutureresource; fix file-structure test
alexisintech a432b35
support new @propertyTableDoc tag; handle object properties that incl…
alexisintech 5f6a6b7
fix mixed namespaces (all callable members plus @propertyTableDoc tag)
alexisintech 809241d
refactor how we handle objects with only callable members; introduce …
alexisintech 4347350
remove TODO from generated content
alexisintech 86b3e8f
fix TODO handling; add some links to custom-plugin
alexisintech f0d62d0
Merge branch 'main' into aa/generate-object-docs
alexisintech 833ccf9
Apply suggestion from @alexisintech
alexisintech b2350a6
comment clean up
alexisintech 5cded2a
generate signupfutureresource
alexisintech adb9396
fix signupfields
alexisintech 83de588
signupfutureresource updates
alexisintech a473d6c
param headings need to get wrapped in backticks
alexisintech 4e51dce
generate organization docs
alexisintech 5c23021
remove properties headings from generated files
alexisintech 28ebf79
generate api-keys
alexisintech 537a7f7
generate billing docs; fix file-structure-test
alexisintech f0826e1
retrieve --> get
alexisintech 91715b2
replace @document tag with empty comments for generation
alexisintech 9338cfd
Merge branch 'main' into aa/generate-object-docs
SarahSoutoul 74d59d7
fix links
alexisintech d5c6cd0
handle union types in custom-theme
alexisintech 4c39d12
add link to paymentelement
alexisintech 365ca33
apikeys: update descriptions for create and getall
alexisintech 847d2a6
fix(repo): Add standalonePage tag for JSDoc comments (#8524)
alexisintech e6bb8f8
Merge branch 'main' into aa/generate-object-docs
alexisintech 2e98fbf
docs review - billing
SarahSoutoul 98fd223
Fix duplicate returns APIKeys
SarahSoutoul d7c4821
apikeys: remove duplication for create method
alexisintech e08731f
add backticks to appearance prop in jsdoc comments
alexisintech 3fc8009
docs review - session
SarahSoutoul c9e3a19
session object updates
alexisintech 914e689
docs review - user
SarahSoutoul ab06e81
fix status in GetUserOrganizationSuggestionsParams
alexisintech d58f52f
docs review - signInFuture & signUpFuture
SarahSoutoul ee0ceaf
signinfuture/signupfuture updates
alexisintech 481b67d
docs review - org
SarahSoutoul 87215e7
docs review - clerk
SarahSoutoul fe17dca
make frontend api url open in new tab
alexisintech 16d4d98
Fix external link
SarahSoutoul 39b8139
fix billing config
alexisintech 95660d9
remove @property from clerkstatus jsdoc comment
alexisintech c901331
Merge branch 'main' into aa/generate-object-docs
alexisintech f863ef1
chore(repo): add changeset
alexisintech d43af9a
chore(nextjs): fix prettier formatting in keyless-provider
alexisintech 0a9f42b
Merge branch 'main' into aa/generate-object-docs
alexisintech 9be16f7
chore(repo): broaden typedoc cache inputs and prune comment-utils exp…
manovotny 0cdd2a7
chore(repo): restore stripTextAfterTodo (removed in PR #8637)
manovotny 8ae53b8
refactor(repo): Inline extract-methods + tighten parameter rendering …
alexisintech b5ced6d
Merge branch 'main' into aa/generate-object-docs
alexisintech f2d6bd7
docs review - misc cleanup
alexisintech d91c4a8
small comment update
alexisintech e42b500
feat(repo): add @generateWithEmptyComment tag for empty doc placeholders
alexisintech 877fdf2
final @generateWithEmptyComment replacements
alexisintech 1c40ce8
fix breaking change of SignUpFutureSSOParams
alexisintech 8c9be50
apply coderabbit suggestions
alexisintech 35f8ac0
test(repo): update typedoc snapshots for jsdoc rewordings
alexisintech 8172b62
chore(repo): narrow typedoc:generate turbo outputs to docs/
alexisintech d555bdc
docs(shared): use @hidden over @internal for internal Clerk/Client me…
jacekradko File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,13 @@ | ||
| --- | ||
| '@clerk/backend': patch | ||
| '@clerk/clerk-js': patch | ||
| '@clerk/expo': patch | ||
| '@clerk/express': patch | ||
| '@clerk/nextjs': patch | ||
| '@clerk/react': patch | ||
| '@clerk/shared': patch | ||
| '@clerk/ui': patch | ||
| '@clerk/vue': patch | ||
| --- | ||
|
|
||
| Add and improve JSDoc comments across public types and methods to support generated reference documentation for the `/objects` docs section. Exports a few previously-internal types (`OnEventListener`, `OffEventListener`, `ClerkOptionsNavigation`) so they can be referenced from the generated docs. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
21 changes: 21 additions & 0 deletions
21
.typedoc/__tests__/__snapshots__/api-key-resource-methods-create.mdx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,21 @@ | ||
| ### `create()` | ||
|
|
||
| Creates a new API key. | ||
|
|
||
| Returns an [`APIKeyResource`](/docs/reference/types/api-key-resource) object that includes the `secret` property. | ||
| > [!WARNING] | ||
| > Make sure to store the API key secret immediately after creation, as it will not be available again. | ||
|
|
||
| ```typescript | ||
| function create(params: CreateAPIKeyParams): Promise<APIKeyResource> | ||
| ``` | ||
|
|
||
| #### `CreateAPIKeyParams` | ||
|
|
||
|
|
||
| | Property | Type | Description | | ||
| | ------ | ------ | ------ | | ||
| | <a id="description"></a> `description?` | `string` | The description of the API key. | | ||
| | <a id="name"></a> `name` | `string` | The name of the API key. | | ||
| | <a id="secondsuntilexpiration"></a> `secondsUntilExpiration?` | `number` | The number of seconds until the API key expires. Set to `null` or omit to create a key that never expires. | | ||
| | <a id="subject"></a> `subject?` | `string` | The user or organization ID to associate the API key with. If not provided, defaults to the [Active Organization](!active-organization), then the current User. | |
18 changes: 18 additions & 0 deletions
18
.typedoc/__tests__/__snapshots__/clerk-methods-handle-email-link-verification.mdx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,18 @@ | ||
| ### `handleEmailLinkVerification()` | ||
|
|
||
| Completes an email link verification flow started by `Clerk.client.signIn.createEmailLinkFlow` or `Clerk.client.signUp.createEmailLinkFlow`, by processing the verification results from the redirect URL query parameters. This method should be called after the user is redirected back from visiting the verification link in their email. | ||
|
|
||
| ```typescript | ||
| function handleEmailLinkVerification(params: { onVerifiedOnOtherDevice?: () => void; redirectUrl?: string; redirectUrlComplete?: string }, customNavigate?: (to: string) => Promise<unknown>): Promise<unknown> | ||
| ``` | ||
|
|
||
| #### Parameters | ||
|
|
||
|
|
||
| | Parameter | Type | Description | | ||
| | ------ | ------ | ------ | | ||
| | `params` | <code>\{ onVerifiedOnOtherDevice?: () => void; redirectUrl?: string; redirectUrlComplete?: string; \}</code> | Allows you to define the URLs where the user should be redirected to on successful verification or pending/completed sign-up or sign-in attempts. If the email link is successfully verified on another device, there's a callback function parameter that allows custom code execution. | | ||
| | `params.onVerifiedOnOtherDevice?` | <code>() => void</code> | Callback function to be executed after successful email link verification on another device. | | ||
| | `params.redirectUrl?` | `string` | The full URL to navigate to after successful email link verification on the same device, but without completing sign-in or sign-up. | | ||
| | `params.redirectUrlComplete?` | `string` | The full URL to navigate to after successful email link verification on completed sign-up or sign-in on the same device. | | ||
| | `customNavigate?` | <code>(to: string) => Promise\<unknown\></code> | A function that overrides Clerk's default navigation behavior, allowing custom handling of navigation during sign-up and sign-in flows. | |
15 changes: 15 additions & 0 deletions
15
.typedoc/__tests__/__snapshots__/clerk-methods-handle-redirect-callback.mdx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| ### `handleRedirectCallback()` | ||
|
|
||
| Completes a custom OAuth or SAML redirect flow that was started by calling [`SignIn.authenticateWithRedirect(params)`](/docs/reference/objects/sign-in) or [`SignUp.authenticateWithRedirect(params)`](/docs/reference/objects/sign-up). | ||
|
|
||
| ```typescript | ||
| function handleRedirectCallback(params: HandleOAuthCallbackParams, customNavigate?: (to: string) => Promise<unknown>): Promise<unknown> | ||
| ``` | ||
|
|
||
| #### Parameters | ||
|
|
||
|
|
||
| | Parameter | Type | Description | | ||
| | ------ | ------ | ------ | | ||
| | `params` | [`HandleOAuthCallbackParams`](/docs/reference/types/handle-o-auth-callback-params) | Additional props that define where the user will be redirected to at the end of a successful OAuth or SAML flow. | | ||
| | `customNavigate?` | <code>(to: string) => Promise\<unknown\></code> | A function that overrides Clerk's default navigation behavior, allowing custom handling of navigation during sign-up and sign-in flows. | |
14 changes: 14 additions & 0 deletions
14
.typedoc/__tests__/__snapshots__/clerk-methods-join-waitlist.mdx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| ### `joinWaitlist()` | ||
|
|
||
| Create a new waitlist entry programmatically. Requires that you set your app's sign-up mode to [**Waitlist**](/docs/guides/secure/restricting-access#waitlist) in the Clerk Dashboard. | ||
|
|
||
| ```typescript | ||
| function joinWaitlist(params: JoinWaitlistParams): Promise<WaitlistResource> | ||
| ``` | ||
|
|
||
| #### `JoinWaitlistParams` | ||
|
|
||
|
|
||
| | Property | Type | Description | | ||
| | ------ | ------ | ------ | | ||
| | <a id="emailaddress"></a> `emailAddress` | `string` | The email address of the user to add to the waitlist. | |
15 changes: 15 additions & 0 deletions
15
.typedoc/__tests__/__snapshots__/clerk-methods-sign-out.mdx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| ### `signOut()` | ||
|
|
||
| Signs out the current user on single-session instances, or all users on multi-session instances. | ||
|
|
||
| ```typescript | ||
| function signOut(options?: SignOutOptions): Promise<void> | ||
| ``` | ||
|
|
||
| #### `SignOutOptions` | ||
|
|
||
|
|
||
| | Property | Type | Description | | ||
| | ------ | ------ | ------ | | ||
| | <a id="redirecturl"></a> `redirectUrl?` | `string` | Specify a redirect URL to navigate to after sign-out is complete. | | ||
| | <a id="sessionid"></a> `sessionId?` | `string` | Specify a specific session to sign out. Useful for multi-session applications. | |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,21 @@ | ||
| | Property | Type | Description | | ||
| | -------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | ||
| | <a id="apikeys"></a> `apiKeys` | [`APIKeysNamespace`](/docs/reference/objects/api-keys) | The `APIKeys` object used for managing API keys. | | ||
| | <a id="billing"></a> `billing` | [`BillingNamespace`](/docs/reference/objects/billing) | The `Billing` object used for managing billing. | | ||
| | <a id="client"></a> `client` | <code>undefined \| [ClientResource](/docs/reference/objects/client)</code> | The `Client` object for the current window. | | ||
| | <a id="domain"></a> `domain` | `string` | The current Clerk app's domain. Prefixed with `clerk.` on production if not already prefixed. Returns `""` when ran on the server. | | ||
| | <a id="instancetype"></a> `instanceType` | <code>undefined \| "production" \| "development"</code> | Indicates whether the Clerk instance is running in a production or development environment. | | ||
| | <a id="issatellite"></a> `isSatellite` | `boolean` | Indicates whether the instance is a satellite app. | | ||
| | <a id="issignedin"></a> `isSignedIn` | `boolean` | Indicates whether the current user has a valid signed-in client session. | | ||
| | <a id="isstandardbrowser"></a> `isStandardBrowser` | <code>undefined \| boolean</code> | Indicates whether the instance is being loaded in a standard browser environment. Set to `false` on native platforms where cookies cannot be set. When `undefined`, Clerk assumes a standard browser. | | ||
| | <a id="loaded"></a> `loaded` | `boolean` | Indicates whether the `Clerk` object is ready for use. Set to `false` when the `status` is `"loading"`. Set to `true` when the `status` is `"ready"` or `"degraded"`. | | ||
| | <a id="oauthapplication"></a> `oauthApplication` | [`OAuthApplicationNamespace`](../o-auth-application-namespace.mdx) | OAuth application helpers (e.g. consent metadata for custom consent UIs). | | ||
| | <a id="organization"></a> `organization` | <code>undefined \| null \| [OrganizationResource](/docs/reference/objects/organization)</code> | A shortcut to the last active `Session.user.organizationMemberships` which holds an instance of a `Organization` object. If the session is `null` or `undefined`, the user field will match. | | ||
| | <a id="proxyurl"></a> `proxyUrl` | <code>undefined \| string</code> | **Required for applications that run behind a reverse proxy**. Your Clerk app's proxy URL. Can be either a relative path (`/__clerk`) or a full URL (`https://<your-domain>/__clerk`). | | ||
| | <a id="publishablekey"></a> `publishableKey` | `string` | Your Clerk [Publishable Key](!publishable-key). | | ||
| | <a id="sdkmetadata"></a> `sdkMetadata` | <code>undefined \| \{ environment?: string; name: string; version: string; \}</code> | If present, contains information about the SDK that the host application is using. For example, if Clerk is loaded through `@clerk/nextjs`, this would be `{ name: '@clerk/nextjs', version: '1.0.0' }`. You don't need to set this value yourself unless you're [developing an SDK](/docs/guides/development/sdk-development/overview). | | ||
| | <a id="session"></a> `session` | <code>undefined \| null \| [SignedInSessionResource](/docs/reference/objects/session)</code> | The currently active `Session`, which is guaranteed to be one of the sessions in `Client.sessions`. If there is no active session, this field will be `null`. If the session is loading, this field will be `undefined`. | | ||
| | <a id="status"></a> `status` | <code>"error" \| "degraded" \| "loading" \| "ready"</code> | The status of the `Clerk` instance. Possible values are: <ul> <li>`"error"`: Set when hotloading `clerk-js` or `Clerk.load()` failed.</li> <li>`"loading"`: Set during initialization.</li> <li>`"ready"`: Set when Clerk is fully operational.</li> <li>`"degraded"`: Set when Clerk is partially operational.</li> </ul> | | ||
| | <a id="telemetry"></a> `telemetry` | <code>undefined \| \{ isDebug: boolean; isEnabled: boolean; record: void; recordLog: void; \}</code> | [Telemetry](/docs/guides/how-clerk-works/security/clerk-telemetry) configuration. | | ||
| | <a id="user"></a> `user` | <code>undefined \| null \| [UserResource](/docs/reference/objects/user)</code> | A shortcut to `Session.user` which holds the currently active `User` object. If the session is `null` or `undefined`, the user field will match. | | ||
| | <a id="version"></a> `version` | <code>undefined \| string</code> | The Clerk SDK version number. | | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| The `Clerk` class serves as the central interface for working with Clerk's authentication and user management functionality in your application. As a top-level class in the Clerk SDK, it provides access to key methods and properties for managing users, sessions, API keys, billing, organizations, and more. |
7 changes: 7 additions & 0 deletions
7
.typedoc/__tests__/__snapshots__/session-resource-methods-check-authorization.mdx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| ### `checkAuthorization()` | ||
|
|
||
| Checks if the user is [authorized for the specified Role, Permission, Feature, or Plan](/docs/guides/secure/authorization-checks) or requires the user to [reverify their credentials](/docs/guides/secure/reverification) if their last verification is older than allowed. | ||
|
|
||
| ```typescript | ||
| function checkAuthorization(isAuthorizedParams: CheckAuthorizationParams): boolean | ||
| ``` |
15 changes: 15 additions & 0 deletions
15
..._tests__/__snapshots__/sign-in-future-resource-methods-email-code-send-code.mdx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,15 @@ | ||
| ### `emailCode.sendCode()` | ||
|
|
||
| Sends an email code to sign-in. | ||
|
|
||
| ```typescript | ||
| function sendCode(params?: SignInFutureEmailCodeSendParams): Promise<{ error: null | ClerkError }> | ||
| ``` | ||
|
|
||
| #### `SignInFutureEmailCodeSendParams` | ||
|
|
||
|
|
||
| | Property | Type | Description | | ||
| | ------ | ------ | ------ | | ||
| | `emailAddress?` | `string` | The user's email address. Only supported if [Email address](/docs/guides/configure/auth-strategies/sign-up-sign-in-options#email) is enabled. Provide either `emailAddress` or `emailAddressId`, not both. Omit both when a sign-in already exists. | | ||
| | `emailAddressId?` | `string` | The ID for the user's email address that will receive an email with the one-time authentication code. Provide either `emailAddress` or `emailAddressId`, not both. Omit both when a sign-in already exists. | |
6 changes: 6 additions & 0 deletions
6
.typedoc/__tests__/__snapshots__/sign-in-future-resource-methods-email-link.mdx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| ### `emailLink` | ||
|
|
||
|
|
||
| | Property | Type | Description | | ||
| | ------ | ------ | ------ | | ||
| | `verification` | <code>null \| \{ createdSessionId: string; status: "expired" \| "failed" \| "verified" \| "client_mismatch"; verifiedFromTheSameClient: boolean; \}</code> | The verification status of the email link. This property is populated by reading query parameters from the URL after the user visits the email link. Returns `null` if no verification status is available. | |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.