Skip to content

Commit

Permalink
fix(misskey-js): type fixes related to signup and signin (#14679)
Browse files Browse the repository at this point in the history
  • Loading branch information
zyoshoka authored Oct 3, 2024
1 parent 2c1a747 commit 2a4ab0e
Show file tree
Hide file tree
Showing 7 changed files with 73 additions and 20 deletions.
12 changes: 7 additions & 5 deletions packages/backend/src/server/api/ApiServerService.ts
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ export class ApiServerService {
'hcaptcha-response'?: string;
'g-recaptcha-response'?: string;
'turnstile-response'?: string;
'm-captcha-response'?: string;
}
}>('/signup', (request, reply) => this.signupApiService.signup(request, reply));

Expand All @@ -126,17 +127,18 @@ export class ApiServerService {
username: string;
password: string;
token?: string;
signature?: string;
authenticatorData?: string;
clientDataJSON?: string;
credentialId?: string;
challengeId?: string;
credential?: AuthenticationResponseJSON;
'hcaptcha-response'?: string;
'g-recaptcha-response'?: string;
'turnstile-response'?: string;
'm-captcha-response'?: string;
};
}>('/signin', (request, reply) => this.signinApiService.signin(request, reply));

fastify.post<{
Body: {
credential?: AuthenticationResponseJSON;
context?: string;
};
}>('/signin-with-passkey', (request, reply) => this.signinWithPasskeyApiService.signin(request, reply));

Expand Down
5 changes: 2 additions & 3 deletions packages/frontend/src/components/MkSignin.vue
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,6 @@ import { computed, defineAsyncComponent, ref } from 'vue';
import { toUnicode } from 'punycode/';
import * as Misskey from 'misskey-js';
import { supported as webAuthnSupported, get as webAuthnRequest, parseRequestOptionsFromJSON } from '@github/webauthn-json/browser-ponyfill';
import { SigninWithPasskeyResponse } from 'misskey-js/entities.js';
import { query, extractDomain } from '@@/js/url.js';
import { host as configHost } from '@@/js/config.js';
import MkDivider from './MkDivider.vue';
Expand Down Expand Up @@ -188,7 +187,7 @@ function onPasskeyLogin(): void {
signing.value = true;
if (webAuthnSupported()) {
misskeyApi('signin-with-passkey', {})
.then((res: SigninWithPasskeyResponse) => {
.then(res => {
totpLogin.value = false;
signing.value = false;
queryingKey.value = true;
Expand Down Expand Up @@ -219,7 +218,7 @@ async function queryPasskey(): Promise<void> {
credential: credential.toJSON(),
context: passkey_context.value,
});
}).then((res: SigninWithPasskeyResponse) => {
}).then(res => {
emit('login', res.signinResponse);
return onLogin(res.signinResponse);
});
Expand Down
37 changes: 31 additions & 6 deletions packages/misskey-js/etc/misskey-js.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
```ts

import type { AuthenticationResponseJSON } from '@simplewebauthn/types';
import { EventEmitter } from 'eventemitter3';
import type { PublicKeyCredentialRequestOptionsJSON } from '@simplewebauthn/types';

// Warning: (ae-forgotten-export) The symbol "components" needs to be exported by the entry point index.d.ts
//
Expand Down Expand Up @@ -1162,7 +1164,19 @@ export type Endpoints = Overwrite<Endpoints_2, {
};
'signin-with-passkey': {
req: SigninWithPasskeyRequest;
res: SigninWithPasskeyResponse;
res: {
$switch: {
$cases: [
[
{
context: string;
},
SigninWithPasskeyResponse
]
];
$default: SigninWithPasskeyInitResponse;
};
};
};
'admin/roles/create': {
req: Overwrite<AdminRolesCreateRequest, {
Expand Down Expand Up @@ -1196,6 +1210,7 @@ declare namespace entities {
SignupPendingResponse,
SigninRequest,
SigninWithPasskeyRequest,
SigninWithPasskeyInitResponse,
SigninWithPasskeyResponse,
SigninResponse,
PartialRolePolicyOverride,
Expand Down Expand Up @@ -3027,6 +3042,11 @@ type SigninRequest = {
username: string;
password: string;
token?: string;
credential?: AuthenticationResponseJSON;
'hcaptcha-response'?: string | null;
'g-recaptcha-response'?: string | null;
'turnstile-response'?: string | null;
'm-captcha-response'?: string | null;
};

// @public (undocumented)
Expand All @@ -3035,17 +3055,21 @@ type SigninResponse = {
i: string;
};

// @public (undocumented)
type SigninWithPasskeyInitResponse = {
option: PublicKeyCredentialRequestOptionsJSON;
context: string;
};

// @public (undocumented)
type SigninWithPasskeyRequest = {
credential?: object;
credential?: AuthenticationResponseJSON;
context?: string;
};

// @public (undocumented)
type SigninWithPasskeyResponse = {
option?: object;
context?: string;
signinResponse?: SigninResponse;
signinResponse: SigninResponse;
};

// @public (undocumented)
Expand All @@ -3069,6 +3093,7 @@ type SignupRequest = {
'hcaptcha-response'?: string | null;
'g-recaptcha-response'?: string | null;
'turnstile-response'?: string | null;
'm-captcha-response'?: string | null;
};

// @public (undocumented)
Expand Down Expand Up @@ -3346,7 +3371,7 @@ type UsersUpdateMemoRequest = operations['users___update-memo']['requestBody']['

// Warnings were encountered during analysis:
//
// src/entities.ts:49:2 - (ae-forgotten-export) The symbol "ModerationLogPayloads" needs to be exported by the entry point index.d.ts
// src/entities.ts:50:2 - (ae-forgotten-export) The symbol "ModerationLogPayloads" needs to be exported by the entry point index.d.ts
// src/streaming.types.ts:220:4 - (ae-forgotten-export) The symbol "ReversiUpdateKey" needs to be exported by the entry point index.d.ts
// src/streaming.types.ts:230:4 - (ae-forgotten-export) The symbol "ReversiUpdateSettings" needs to be exported by the entry point index.d.ts

Expand Down
1 change: 1 addition & 0 deletions packages/misskey-js/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@
"built"
],
"dependencies": {
"@simplewebauthn/types": "10.0.0",
"eventemitter3": "5.0.1",
"reconnecting-websocket": "4.4.0"
}
Expand Down
17 changes: 15 additions & 2 deletions packages/misskey-js/src/api.types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import {
PartialRolePolicyOverride,
SigninRequest,
SigninResponse,
SigninWithPasskeyInitResponse,
SigninWithPasskeyRequest,
SigninWithPasskeyResponse,
SignupPendingRequest,
Expand Down Expand Up @@ -86,8 +87,20 @@ export type Endpoints = Overwrite<
},
'signin-with-passkey': {
req: SigninWithPasskeyRequest;
res: SigninWithPasskeyResponse;
}
res: {
$switch: {
$cases: [
[
{
context: string;
},
SigninWithPasskeyResponse,
],
];
$default: SigninWithPasskeyInitResponse;
},
},
},
'admin/roles/create': {
req: Overwrite<AdminRolesCreateRequest, { policies: PartialRolePolicyOverride }>;
res: AdminRolesCreateResponse;
Expand Down
18 changes: 14 additions & 4 deletions packages/misskey-js/src/entities.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import {
User,
UserDetailedNotMe,
} from './autogen/models.js';
import type { AuthenticationResponseJSON, PublicKeyCredentialRequestOptionsJSON } from '@simplewebauthn/types';

export * from './autogen/entities.js';
export * from './autogen/models.js';
Expand Down Expand Up @@ -250,6 +251,7 @@ export type SignupRequest = {
'hcaptcha-response'?: string | null;
'g-recaptcha-response'?: string | null;
'turnstile-response'?: string | null;
'm-captcha-response'?: string | null;
}

export type SignupResponse = MeDetailed & {
Expand All @@ -269,17 +271,25 @@ export type SigninRequest = {
username: string;
password: string;
token?: string;
credential?: AuthenticationResponseJSON;
'hcaptcha-response'?: string | null;
'g-recaptcha-response'?: string | null;
'turnstile-response'?: string | null;
'm-captcha-response'?: string | null;
};

export type SigninWithPasskeyRequest = {
credential?: object;
credential?: AuthenticationResponseJSON;
context?: string;
};

export type SigninWithPasskeyInitResponse = {
option: PublicKeyCredentialRequestOptionsJSON;
context: string;
};

export type SigninWithPasskeyResponse = {
option?: object;
context?: string;
signinResponse?: SigninResponse;
signinResponse: SigninResponse;
};

export type SigninResponse = {
Expand Down
3 changes: 3 additions & 0 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 2a4ab0e

Please sign in to comment.