Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
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
6 changes: 6 additions & 0 deletions .changeset/purple-toys-refuse.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'@clerk/clerk-js': minor
'@clerk/types': minor
---

[Experimental] Fix issue where calling `this.create()` would not correctly propogate errors.
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Outdated
14 changes: 9 additions & 5 deletions packages/clerk-js/src/core/resources/SignIn.ts
Original file line number Diff line number Diff line change
Expand Up @@ -703,12 +703,16 @@ class SignInFuture implements SignInFutureResource {
});
}

private async _create(params: SignInFutureCreateParams): Promise<void> {
await this.resource.__internal_basePost({
path: this.resource.pathRoot,
body: params,
});
}

async create(params: SignInFutureCreateParams): Promise<{ error: unknown }> {
return runAsyncResourceTask(this.resource, async () => {
await this.resource.__internal_basePost({
path: this.resource.pathRoot,
body: params,
});
await this._create(params);
});
}

Expand Down Expand Up @@ -744,7 +748,7 @@ class SignInFuture implements SignInFutureResource {

return runAsyncResourceTask(this.resource, async () => {
if (emailAddress) {
await this.create({ identifier: emailAddress });
await this._create({ identifier: emailAddress });
}

const emailCodeFactor = this.selectFirstFactor({ strategy: 'email_code', emailAddressId });
Expand Down
30 changes: 17 additions & 13 deletions packages/clerk-js/src/core/resources/SignUp.ts
Original file line number Diff line number Diff line change
Expand Up @@ -660,20 +660,24 @@ class SignUpFuture implements SignUpFutureResource {
return { captchaToken, captchaWidgetType, captchaError };
}

async create(params: SignUpFutureCreateParams): Promise<{ error: unknown }> {
return runAsyncResourceTask(this.resource, async () => {
const { captchaToken, captchaWidgetType, captchaError } = await this.getCaptchaToken();
private async _create(params: SignUpFutureCreateParams): Promise<void> {
const { captchaToken, captchaWidgetType, captchaError } = await this.getCaptchaToken();

const body: Record<string, unknown> = {
transfer: params.transfer,
captchaToken,
captchaWidgetType,
captchaError,
...params,
unsafeMetadata: params.unsafeMetadata ? normalizeUnsafeMetadata(params.unsafeMetadata) : undefined,
};

const body: Record<string, unknown> = {
transfer: params.transfer,
captchaToken,
captchaWidgetType,
captchaError,
...params,
unsafeMetadata: params.unsafeMetadata ? normalizeUnsafeMetadata(params.unsafeMetadata) : undefined,
};
await this.resource.__internal_basePost({ path: this.resource.pathRoot, body });
}

await this.resource.__internal_basePost({ path: this.resource.pathRoot, body });
async create(params: SignUpFutureCreateParams): Promise<{ error: unknown }> {
return runAsyncResourceTask(this.resource, async () => {
await this._create(params);
});
}

Expand Down Expand Up @@ -808,7 +812,7 @@ class SignUpFuture implements SignUpFutureResource {

// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
const web3Wallet = identifier || this.resource.web3wallet!;
await this.create({ web3Wallet, unsafeMetadata, legalAccepted });
await this._create({ web3Wallet, unsafeMetadata, legalAccepted });
await this.resource.__internal_basePost({
body: { strategy },
action: 'prepare_verification',
Expand Down
3 changes: 3 additions & 0 deletions packages/types/src/signUpFuture.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ interface SignUpFutureAdditionalParams {
}

export interface SignUpFutureCreateParams extends SignUpFutureAdditionalParams {
emailAddress?: string;
phoneNumber?: string;
username?: string;
transfer?: boolean;
ticket?: string;
web3Wallet?: string;
Expand Down
Loading