next-ssr-middleware 0.9.0-rc.0 → 0.9.0
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/ReadMe.md +8 -4
- package/dist/middleware/remote.js +15 -22
- package/dist/middleware/remote.js.map +1 -1
- package/dist/shim.d.ts +2 -3
- package/dist/shim.js +8 -10
- package/dist/shim.js.map +1 -1
- package/package.json +1 -1
- package/source/middleware/remote.ts +12 -16
- package/source/shim.ts +6 -9
package/ReadMe.md
CHANGED
|
@@ -83,10 +83,14 @@ export default function UserDetailPage({
|
|
|
83
83
|
|
|
84
84
|
```ts
|
|
85
85
|
import { NextRequest, NextResponse } from 'next/server';
|
|
86
|
-
import {
|
|
87
|
-
|
|
88
|
-
export const config = {
|
|
89
|
-
|
|
86
|
+
import { parseHeaders } from 'next-ssr-middleware';
|
|
87
|
+
|
|
88
|
+
export const config = {
|
|
89
|
+
// Matcher ignoring `/_next/`, `/api/` & icons
|
|
90
|
+
matcher: [
|
|
91
|
+
'/((?!api|_next/static|_next/image|favicon.ico|apple-icon|icon).*)'
|
|
92
|
+
]
|
|
93
|
+
};
|
|
90
94
|
export const middleware = ({ headers }: NextRequest) =>
|
|
91
95
|
NextResponse.next({ headers: parseHeaders(headers) });
|
|
92
96
|
```
|
|
@@ -5,23 +5,23 @@ exports.githubOAuth2 = githubOAuth2;
|
|
|
5
5
|
var tslib_1 = require("tslib");
|
|
6
6
|
var web_utility_1 = require("web-utility");
|
|
7
7
|
var DOMAIN = process.env.VERCEL_PROJECT_PRODUCTION_URL;
|
|
8
|
-
var Host = DOMAIN ? "https://".concat(DOMAIN) : 'http://
|
|
8
|
+
var Host = DOMAIN ? "https://".concat(DOMAIN) : 'http://localhost:3000';
|
|
9
9
|
function oauth2Signer(_a) {
|
|
10
10
|
var _this = this;
|
|
11
11
|
var signInURL = _a.signInURL, accessToken = _a.accessToken, userProfile = _a.userProfile, _b = _a.tokenKey, tokenKey = _b === void 0 ? 'token' : _b;
|
|
12
12
|
return function (_a, next_1) { return tslib_1.__awaiter(_this, [_a, next_1], void 0, function (_b, next) {
|
|
13
|
-
var token, pageURL, token_1, searchParams, user, data, props
|
|
14
|
-
var
|
|
15
|
-
return tslib_1.__generator(this, function (
|
|
16
|
-
switch (
|
|
13
|
+
var token, pageURL, token_1, searchParams, user, data, props;
|
|
14
|
+
var _c = _b.req, url = _c.url, headers = _c.headers, query = _b.query;
|
|
15
|
+
return tslib_1.__generator(this, function (_d) {
|
|
16
|
+
switch (_d.label) {
|
|
17
17
|
case 0:
|
|
18
|
-
token =
|
|
18
|
+
token = query[tokenKey];
|
|
19
19
|
pageURL = new URL(url || '/', headers['origin'] || Host);
|
|
20
20
|
if (!query.code) return [3 /*break*/, 2];
|
|
21
21
|
return [4 /*yield*/, accessToken(query)];
|
|
22
22
|
case 1:
|
|
23
|
-
token_1 =
|
|
24
|
-
|
|
23
|
+
token_1 = _d.sent(), searchParams = pageURL.searchParams;
|
|
24
|
+
searchParams.set(tokenKey, token_1);
|
|
25
25
|
searchParams.delete('code');
|
|
26
26
|
if (searchParams.get('state') === '')
|
|
27
27
|
searchParams.delete('state');
|
|
@@ -30,23 +30,16 @@ function oauth2Signer(_a) {
|
|
|
30
30
|
props: {}
|
|
31
31
|
}];
|
|
32
32
|
case 2:
|
|
33
|
-
if (!token) return [3 /*break*/,
|
|
34
|
-
|
|
33
|
+
if (!token) return [3 /*break*/, 5];
|
|
34
|
+
return [4 /*yield*/, userProfile(token + '')];
|
|
35
35
|
case 3:
|
|
36
|
-
|
|
37
|
-
return [4 /*yield*/, userProfile(token)];
|
|
38
|
-
case 4:
|
|
39
|
-
user = _e.sent();
|
|
36
|
+
user = _d.sent();
|
|
40
37
|
return [4 /*yield*/, next()];
|
|
41
|
-
case
|
|
42
|
-
data =
|
|
43
|
-
props = 'props' in data
|
|
44
|
-
? tslib_1.__assign(tslib_1.__assign({}, data.props), { token: token, user: user }) : {};
|
|
38
|
+
case 4:
|
|
39
|
+
data = _d.sent();
|
|
40
|
+
props = 'props' in data ? tslib_1.__assign(tslib_1.__assign({}, data.props), { token: token, user: user }) : {};
|
|
45
41
|
return [2 /*return*/, tslib_1.__assign(tslib_1.__assign({}, data), { props: props })];
|
|
46
|
-
case
|
|
47
|
-
_c = _e.sent();
|
|
48
|
-
return [3 /*break*/, 7];
|
|
49
|
-
case 7: return [2 /*return*/, {
|
|
42
|
+
case 5: return [2 /*return*/, {
|
|
50
43
|
redirect: {
|
|
51
44
|
destination: signInURL(pageURL + ''),
|
|
52
45
|
permanent: false
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../../source/middleware/remote.ts"],"names":[],"mappings":";;AAyBA,
|
|
1
|
+
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../../source/middleware/remote.ts"],"names":[],"mappings":"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"}
|
package/dist/shim.d.ts
CHANGED
|
@@ -3,13 +3,12 @@ import { GetServerSideProps } from 'next/types';
|
|
|
3
3
|
import { ParsedUrlQuery } from 'querystring';
|
|
4
4
|
import type { ReactNode } from 'react';
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* @see {@link https://www.propelauth.com/post/getting-url-in-next-server-components}
|
|
7
7
|
*/
|
|
8
|
-
export declare const middlewareMatcher: string[];
|
|
9
8
|
export declare function patchHeaders(request: NextRequest): Headers;
|
|
10
9
|
export type ServerProps<I extends Record<string, string> = {}, O extends object = {}> = O & {
|
|
11
10
|
params: Promise<I>;
|
|
12
11
|
searchParams: Promise<ParsedUrlQuery>;
|
|
13
12
|
};
|
|
14
13
|
export type ServerComponent<I extends Record<string, string> = {}, O extends object = {}> = (props: ServerProps<I, O>) => Promise<ReactNode>;
|
|
15
|
-
export declare const withMiddleware: <I extends Record<string, string> = {}, O extends object = {}>(getServerSideProps: GetServerSideProps<O, I>,
|
|
14
|
+
export declare const withMiddleware: <I extends Record<string, string> = {}, O extends object = {}>(getServerSideProps: GetServerSideProps<O, I>, serverComponent: ServerComponent<I, O>) => ServerComponent<I>;
|
package/dist/shim.js
CHANGED
|
@@ -1,16 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.withMiddleware =
|
|
3
|
+
exports.withMiddleware = void 0;
|
|
4
4
|
exports.patchHeaders = patchHeaders;
|
|
5
5
|
var tslib_1 = require("tslib");
|
|
6
6
|
var headers_1 = require("next/headers");
|
|
7
7
|
var navigation_1 = require("next/navigation");
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
9
|
+
* @see {@link https://www.propelauth.com/post/getting-url-in-next-server-components}
|
|
10
10
|
*/
|
|
11
|
-
exports.middlewareMatcher = [
|
|
12
|
-
'/((?!api|_next/static|_next/image|favicon.ico|apple-icon|icon).*)'
|
|
13
|
-
];
|
|
14
11
|
function patchHeaders(request) {
|
|
15
12
|
var _a;
|
|
16
13
|
var resolvedUrl = request.nextUrl + '', _b = request.nextUrl, locale = _b.locale, _c = _b.defaultLocale, defaultLocale = _c === void 0 ? '' : _c, domainLocale = _b.domainLocale, headers = new Headers(request.headers);
|
|
@@ -21,9 +18,9 @@ function patchHeaders(request) {
|
|
|
21
18
|
headers.set('x-default-locale', defaultLocale);
|
|
22
19
|
return headers;
|
|
23
20
|
}
|
|
24
|
-
var withMiddleware = function (getServerSideProps,
|
|
21
|
+
var withMiddleware = function (getServerSideProps, serverComponent) {
|
|
25
22
|
return function (_a) { return tslib_1.__awaiter(void 0, [_a], void 0, function (_b) {
|
|
26
|
-
var resolvedParams, resolvedSearchParams, header, cookie, isEnabled,
|
|
23
|
+
var resolvedParams, resolvedSearchParams, header, cookie, isEnabled, url, locale, locales, defaultLocale, req, context, result, isPermanent, destination, props;
|
|
27
24
|
var _c;
|
|
28
25
|
var params = _b.params, searchParams = _b.searchParams;
|
|
29
26
|
return tslib_1.__generator(this, function (_d) {
|
|
@@ -43,8 +40,9 @@ var withMiddleware = function (getServerSideProps, ServerSideComponent) {
|
|
|
43
40
|
return [4 /*yield*/, (0, headers_1.draftMode)()];
|
|
44
41
|
case 5:
|
|
45
42
|
isEnabled = (_d.sent()).isEnabled;
|
|
46
|
-
|
|
43
|
+
url = header.get('x-resolved-url') || '', locale = header.get('x-locale') || '', locales = ((_c = header.get('x-locales')) === null || _c === void 0 ? void 0 : _c.split(',')) || [], defaultLocale = header.get('x-default-locale') || '';
|
|
47
44
|
req = {
|
|
45
|
+
url: url,
|
|
48
46
|
headers: Object.fromEntries(tslib_1.__spreadArray([], tslib_1.__read(header), false)),
|
|
49
47
|
cookies: Object.fromEntries(cookie.getAll().map(function (_a) {
|
|
50
48
|
var name = _a.name, value = _a.value;
|
|
@@ -59,7 +57,7 @@ var withMiddleware = function (getServerSideProps, ServerSideComponent) {
|
|
|
59
57
|
preview: false,
|
|
60
58
|
previewData: {},
|
|
61
59
|
draftMode: isEnabled,
|
|
62
|
-
resolvedUrl:
|
|
60
|
+
resolvedUrl: url,
|
|
63
61
|
locale: locale,
|
|
64
62
|
locales: locales,
|
|
65
63
|
defaultLocale: defaultLocale
|
|
@@ -82,7 +80,7 @@ var withMiddleware = function (getServerSideProps, ServerSideComponent) {
|
|
|
82
80
|
return [4 /*yield*/, result.props];
|
|
83
81
|
case 7:
|
|
84
82
|
props = _d.sent();
|
|
85
|
-
return [2 /*return*/,
|
|
83
|
+
return [2 /*return*/, serverComponent(tslib_1.__assign({ params: params, searchParams: searchParams }, props))];
|
|
86
84
|
case 8: return [2 /*return*/];
|
|
87
85
|
}
|
|
88
86
|
});
|
package/dist/shim.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shim.js","sourceRoot":"","sources":["../source/shim.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"shim.js","sourceRoot":"","sources":["../source/shim.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -21,7 +21,7 @@ export interface OAuth2Props<T extends DataObject> {
|
|
|
21
21
|
}
|
|
22
22
|
|
|
23
23
|
const DOMAIN = process.env.VERCEL_PROJECT_PRODUCTION_URL;
|
|
24
|
-
const Host = DOMAIN ? `https://${DOMAIN}` : 'http://
|
|
24
|
+
const Host = DOMAIN ? `https://${DOMAIN}` : 'http://localhost:3000';
|
|
25
25
|
|
|
26
26
|
export function oauth2Signer<I extends DataObject, O extends DataObject = {}>({
|
|
27
27
|
signInURL,
|
|
@@ -29,16 +29,15 @@ export function oauth2Signer<I extends DataObject, O extends DataObject = {}>({
|
|
|
29
29
|
userProfile,
|
|
30
30
|
tokenKey = 'token'
|
|
31
31
|
}: OAuth2Option): Middleware<I, O> {
|
|
32
|
-
return async ({ req: { url, headers
|
|
33
|
-
const token =
|
|
32
|
+
return async ({ req: { url, headers }, query }, next) => {
|
|
33
|
+
const token = query[tokenKey];
|
|
34
34
|
const pageURL = new URL(url || '/', headers['origin'] || Host);
|
|
35
35
|
|
|
36
36
|
if (query.code) {
|
|
37
37
|
const token = await accessToken(query as OAuth2Ticket),
|
|
38
38
|
{ searchParams } = pageURL;
|
|
39
39
|
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
searchParams.set(tokenKey, token);
|
|
42
41
|
searchParams.delete('code');
|
|
43
42
|
if (searchParams.get('state') === '') searchParams.delete('state');
|
|
44
43
|
|
|
@@ -47,17 +46,14 @@ export function oauth2Signer<I extends DataObject, O extends DataObject = {}>({
|
|
|
47
46
|
props: {} as O
|
|
48
47
|
};
|
|
49
48
|
}
|
|
50
|
-
if (token)
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
return { ...data, props };
|
|
60
|
-
} catch {}
|
|
49
|
+
if (token) {
|
|
50
|
+
const user = await userProfile(token + ''),
|
|
51
|
+
data = await next();
|
|
52
|
+
const props =
|
|
53
|
+
'props' in data ? { ...data.props, token, user } : ({} as O);
|
|
54
|
+
|
|
55
|
+
return { ...data, props };
|
|
56
|
+
}
|
|
61
57
|
|
|
62
58
|
return {
|
|
63
59
|
redirect: {
|
package/source/shim.ts
CHANGED
|
@@ -12,12 +12,8 @@ import { ParsedUrlQuery } from 'querystring';
|
|
|
12
12
|
import type { ReactNode } from 'react';
|
|
13
13
|
|
|
14
14
|
/**
|
|
15
|
-
*
|
|
15
|
+
* @see {@link https://www.propelauth.com/post/getting-url-in-next-server-components}
|
|
16
16
|
*/
|
|
17
|
-
export const middlewareMatcher = [
|
|
18
|
-
'/((?!api|_next/static|_next/image|favicon.ico|apple-icon|icon).*)'
|
|
19
|
-
];
|
|
20
|
-
|
|
21
17
|
export function patchHeaders(request: NextRequest) {
|
|
22
18
|
const resolvedUrl = request.nextUrl + '',
|
|
23
19
|
{ locale, defaultLocale = '', domainLocale } = request.nextUrl,
|
|
@@ -48,7 +44,7 @@ export type ServerComponent<
|
|
|
48
44
|
export const withMiddleware =
|
|
49
45
|
<I extends Record<string, string> = {}, O extends object = {}>(
|
|
50
46
|
getServerSideProps: GetServerSideProps<O, I>,
|
|
51
|
-
|
|
47
|
+
serverComponent: ServerComponent<I, O>
|
|
52
48
|
): ServerComponent<I> =>
|
|
53
49
|
async ({ params, searchParams }) => {
|
|
54
50
|
const resolvedParams = await params,
|
|
@@ -57,11 +53,12 @@ export const withMiddleware =
|
|
|
57
53
|
cookie = await cookies(),
|
|
58
54
|
{ isEnabled } = await draftMode();
|
|
59
55
|
|
|
60
|
-
const
|
|
56
|
+
const url = header.get('x-resolved-url') || '',
|
|
61
57
|
locale = header.get('x-locale') || '',
|
|
62
58
|
locales = header.get('x-locales')?.split(',') || [],
|
|
63
59
|
defaultLocale = header.get('x-default-locale') || '';
|
|
64
60
|
const req = {
|
|
61
|
+
url,
|
|
65
62
|
headers: Object.fromEntries([...header]),
|
|
66
63
|
cookies: Object.fromEntries(
|
|
67
64
|
cookie.getAll().map(({ name, value }) => [name, value])
|
|
@@ -76,7 +73,7 @@ export const withMiddleware =
|
|
|
76
73
|
preview: false,
|
|
77
74
|
previewData: {} as PreviewData,
|
|
78
75
|
draftMode: isEnabled,
|
|
79
|
-
resolvedUrl,
|
|
76
|
+
resolvedUrl: url,
|
|
80
77
|
locale,
|
|
81
78
|
locales,
|
|
82
79
|
defaultLocale
|
|
@@ -97,6 +94,6 @@ export const withMiddleware =
|
|
|
97
94
|
if ('props' in result) {
|
|
98
95
|
const props = await result.props;
|
|
99
96
|
|
|
100
|
-
return
|
|
97
|
+
return serverComponent({ params, searchParams, ...props });
|
|
101
98
|
}
|
|
102
99
|
};
|