@logto/next 3.1.2 → 3.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/edge/index.d.ts +1 -1
- package/lib/src/index.cjs +30 -14
- package/lib/src/index.d.ts +4 -4
- package/lib/src/index.js +30 -14
- package/package.json +3 -3
package/lib/edge/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { type GetContextParameters, type InteractionMode } from '@logto/node';
|
|
|
2
2
|
import { type NextRequest } from 'next/server';
|
|
3
3
|
import BaseClient from '../src/client';
|
|
4
4
|
import type { LogtoNextConfig } from '../src/types.js';
|
|
5
|
-
export type { LogtoContext, InteractionMode } from '@logto/node';
|
|
5
|
+
export type { AccessTokenClaims, IdTokenClaims, LogtoContext, InteractionMode, LogtoErrorCode, } from '@logto/node';
|
|
6
6
|
export default class LogtoClient extends BaseClient {
|
|
7
7
|
constructor(config: LogtoNextConfig);
|
|
8
8
|
handleSignIn: (redirectUri?: string, interactionMode?: InteractionMode) => (request: Request) => Promise<Response>;
|
package/lib/src/index.cjs
CHANGED
|
@@ -61,21 +61,37 @@ class LogtoClient extends client.default {
|
|
|
61
61
|
}
|
|
62
62
|
response.status(404).end();
|
|
63
63
|
};
|
|
64
|
-
this.withLogtoApiRoute = (handler, config = {}) => async (request, response) => {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
64
|
+
this.withLogtoApiRoute = (handler, config = {}, onError) => async (request, response) => {
|
|
65
|
+
try {
|
|
66
|
+
const nodeClient = await this.createNodeClientFromNextApi(request, response);
|
|
67
|
+
const user = await nodeClient.getContext(config);
|
|
68
|
+
await this.storage?.save();
|
|
69
|
+
// eslint-disable-next-line @silverhand/fp/no-mutating-methods
|
|
70
|
+
Object.defineProperty(request, 'user', { enumerable: true, get: () => user });
|
|
71
|
+
return handler(request, response);
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
if (onError) {
|
|
75
|
+
return onError(request, response, error);
|
|
76
|
+
}
|
|
77
|
+
throw error;
|
|
78
|
+
}
|
|
71
79
|
};
|
|
72
|
-
this.withLogtoSsr = (handler, configs = {}) => async (context) => {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
80
|
+
this.withLogtoSsr = (handler, configs = {}, onError) => async (context) => {
|
|
81
|
+
try {
|
|
82
|
+
const nodeClient = await this.createNodeClientFromNextApi(context.req, context.res);
|
|
83
|
+
const user = await nodeClient.getContext(configs);
|
|
84
|
+
await this.storage?.save();
|
|
85
|
+
// eslint-disable-next-line @silverhand/fp/no-mutating-methods
|
|
86
|
+
Object.defineProperty(context.req, 'user', { enumerable: true, get: () => user });
|
|
87
|
+
return await handler(context);
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
if (onError) {
|
|
91
|
+
return onError(error);
|
|
92
|
+
}
|
|
93
|
+
throw error;
|
|
94
|
+
}
|
|
79
95
|
};
|
|
80
96
|
}
|
|
81
97
|
async createNodeClientFromNextApi(request, response) {
|
package/lib/src/index.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import { type IncomingMessage, type ServerResponse } from 'node:http';
|
|
3
3
|
import NodeClient, { type GetContextParameters, type InteractionMode } from '@logto/node';
|
|
4
|
-
import { type GetServerSidePropsResult, type GetServerSidePropsContext, type NextApiHandler } from 'next';
|
|
4
|
+
import { type GetServerSidePropsResult, type GetServerSidePropsContext, type NextApiHandler, type NextApiRequest, type NextApiResponse } from 'next';
|
|
5
5
|
import { type NextApiRequestCookies } from 'next/dist/server/api-utils/index.js';
|
|
6
6
|
import LogtoNextBaseClient from './client.js';
|
|
7
7
|
import type { LogtoNextConfig } from './types.js';
|
|
8
8
|
export { LogtoError, LogtoRequestError, LogtoClientError, OidcError, Prompt, ReservedScope, ReservedResource, UserScope, organizationUrnPrefix, buildOrganizationUrn, getOrganizationIdFromUrn, PersistKey, } from '@logto/node';
|
|
9
|
-
export type { IdTokenClaims, LogtoContext, InteractionMode, LogtoErrorCode } from '@logto/node';
|
|
9
|
+
export type { AccessTokenClaims, IdTokenClaims, LogtoContext, InteractionMode, LogtoErrorCode, } from '@logto/node';
|
|
10
10
|
export default class LogtoClient extends LogtoNextBaseClient {
|
|
11
11
|
constructor(config: LogtoNextConfig);
|
|
12
12
|
handleSignIn: (redirectUri?: string, interactionMode?: InteractionMode) => NextApiHandler;
|
|
@@ -14,8 +14,8 @@ export default class LogtoClient extends LogtoNextBaseClient {
|
|
|
14
14
|
handleSignOut: (redirectUri?: string) => NextApiHandler;
|
|
15
15
|
handleUser: (configs?: GetContextParameters) => NextApiHandler;
|
|
16
16
|
handleAuthRoutes: (configs?: GetContextParameters) => NextApiHandler;
|
|
17
|
-
withLogtoApiRoute: (handler: NextApiHandler, config?: GetContextParameters) => NextApiHandler;
|
|
18
|
-
withLogtoSsr: <P extends Record<string, unknown> = Record<string, unknown>>(handler: (context: GetServerSidePropsContext) => GetServerSidePropsResult<P> | Promise<GetServerSidePropsResult<P>>, configs?: GetContextParameters) => (context: GetServerSidePropsContext) => Promise<
|
|
17
|
+
withLogtoApiRoute: (handler: NextApiHandler, config?: GetContextParameters, onError?: ((request: NextApiRequest, response: NextApiResponse, error: unknown) => unknown) | undefined) => NextApiHandler;
|
|
18
|
+
withLogtoSsr: <P extends Record<string, unknown> = Record<string, unknown>>(handler: (context: GetServerSidePropsContext) => GetServerSidePropsResult<P> | Promise<GetServerSidePropsResult<P>>, configs?: GetContextParameters, onError?: ((error: unknown) => unknown) | undefined) => (context: GetServerSidePropsContext) => Promise<unknown>;
|
|
19
19
|
createNodeClientFromNextApi(request: IncomingMessage & {
|
|
20
20
|
cookies: NextApiRequestCookies;
|
|
21
21
|
}, response: ServerResponse): Promise<NodeClient>;
|
package/lib/src/index.js
CHANGED
|
@@ -54,21 +54,37 @@ class LogtoClient extends LogtoNextBaseClient {
|
|
|
54
54
|
}
|
|
55
55
|
response.status(404).end();
|
|
56
56
|
};
|
|
57
|
-
this.withLogtoApiRoute = (handler, config = {}) => async (request, response) => {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
57
|
+
this.withLogtoApiRoute = (handler, config = {}, onError) => async (request, response) => {
|
|
58
|
+
try {
|
|
59
|
+
const nodeClient = await this.createNodeClientFromNextApi(request, response);
|
|
60
|
+
const user = await nodeClient.getContext(config);
|
|
61
|
+
await this.storage?.save();
|
|
62
|
+
// eslint-disable-next-line @silverhand/fp/no-mutating-methods
|
|
63
|
+
Object.defineProperty(request, 'user', { enumerable: true, get: () => user });
|
|
64
|
+
return handler(request, response);
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
if (onError) {
|
|
68
|
+
return onError(request, response, error);
|
|
69
|
+
}
|
|
70
|
+
throw error;
|
|
71
|
+
}
|
|
64
72
|
};
|
|
65
|
-
this.withLogtoSsr = (handler, configs = {}) => async (context) => {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
73
|
+
this.withLogtoSsr = (handler, configs = {}, onError) => async (context) => {
|
|
74
|
+
try {
|
|
75
|
+
const nodeClient = await this.createNodeClientFromNextApi(context.req, context.res);
|
|
76
|
+
const user = await nodeClient.getContext(configs);
|
|
77
|
+
await this.storage?.save();
|
|
78
|
+
// eslint-disable-next-line @silverhand/fp/no-mutating-methods
|
|
79
|
+
Object.defineProperty(context.req, 'user', { enumerable: true, get: () => user });
|
|
80
|
+
return await handler(context);
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
if (onError) {
|
|
84
|
+
return onError(error);
|
|
85
|
+
}
|
|
86
|
+
throw error;
|
|
87
|
+
}
|
|
72
88
|
};
|
|
73
89
|
}
|
|
74
90
|
async createNodeClientFromNextApi(request, response) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@logto/next",
|
|
3
|
-
"version": "3.1
|
|
3
|
+
"version": "3.2.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./lib/src/index.cjs",
|
|
6
6
|
"module": "./lib/src/index.js",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
},
|
|
47
47
|
"dependencies": {
|
|
48
48
|
"@edge-runtime/cookies": "^4.0.0",
|
|
49
|
-
"@logto/node": "^2.4.
|
|
49
|
+
"@logto/node": "^2.4.3"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
52
|
"@silverhand/eslint-config": "^5.0.0",
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
"@swc/core": "^1.3.50",
|
|
56
56
|
"@swc/jest": "^0.2.24",
|
|
57
57
|
"@types/jest": "^29.5.0",
|
|
58
|
-
"eslint": "^8.
|
|
58
|
+
"eslint": "^8.57.0",
|
|
59
59
|
"jest": "^29.5.0",
|
|
60
60
|
"jest-location-mock": "^2.0.0",
|
|
61
61
|
"jest-matcher-specific-error": "^1.0.0",
|