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 CHANGED
@@ -83,10 +83,14 @@ export default function UserDetailPage({
83
83
 
84
84
  ```ts
85
85
  import { NextRequest, NextResponse } from 'next/server';
86
- import { middlewareMatcher, parseHeaders } from 'next-ssr-middleware';
87
-
88
- export const config = { matcher: middlewareMatcher };
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://127.0.0.1:3000';
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, _c;
14
- var _d = _b.req, url = _d.url, headers = _d.headers, cookies = _d.cookies, query = _b.query, res = _b.res;
15
- return tslib_1.__generator(this, function (_e) {
16
- switch (_e.label) {
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 = cookies[tokenKey];
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 = _e.sent(), searchParams = pageURL.searchParams;
24
- res.setHeader('Set-Cookie', "token=".concat(token_1, "; Path=/"));
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*/, 7];
34
- _e.label = 3;
33
+ if (!token) return [3 /*break*/, 5];
34
+ return [4 /*yield*/, userProfile(token + '')];
35
35
  case 3:
36
- _e.trys.push([3, 6, , 7]);
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 5:
42
- data = _e.sent();
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 6:
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,oCA4CC;AA6BD,oCA8CC;;AAhJD,2CAA2C;AAsB3C,IAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC;AACzD,IAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,kBAAW,MAAM,CAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC;AAEpE,SAAgB,YAAY,CAAkD,EAK/D;IALf,iBA4CC;QA3CG,SAAS,eAAA,EACT,WAAW,iBAAA,EACX,WAAW,iBAAA,EACX,gBAAkB,EAAlB,QAAQ,mBAAG,OAAO,KAAA;IAElB,OAAO,wFAAO,EAA8C,EAAE,IAAI;;YAAlD,WAA8B,EAAvB,GAAG,SAAA,EAAE,OAAO,aAAA,EAAE,OAAO,aAAA,EAAI,KAAK,WAAA,EAAE,GAAG,SAAA;;;;oBAChD,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;oBAC1B,OAAO,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC;yBAE3D,KAAK,CAAC,IAAI,EAAV,wBAAU;oBACI,qBAAM,WAAW,CAAC,KAAqB,CAAC,EAAA;;oBAAhD,UAAQ,SAAwC,EAChD,YAAY,GAAK,OAAO,aAAZ;oBAElB,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,gBAAS,OAAK,aAAU,CAAC,CAAC;oBAEtD,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC5B,IAAI,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE;wBAAE,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBAEnE,sBAAO;4BACH,QAAQ,EAAE,EAAE,WAAW,EAAE,OAAO,GAAG,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;4BACzD,KAAK,EAAE,EAAO;yBACjB,EAAC;;yBAEF,KAAK,EAAL,wBAAK;;;;oBAEY,qBAAM,WAAW,CAAC,KAAK,CAAC,EAAA;;oBAA/B,IAAI,GAAG,SAAwB;oBAC1B,qBAAM,IAAI,EAAE,EAAA;;oBAAnB,IAAI,GAAG,SAAY;oBACjB,KAAK,GACP,OAAO,IAAI,IAAI;wBACX,CAAC,uCAAM,IAAI,CAAC,KAAK,KAAE,KAAK,OAAA,EAAE,IAAI,MAAA,IAC9B,CAAC,CAAE,EAAQ,CAAC;oBAEpB,4DAAY,IAAI,KAAE,KAAK,OAAA,KAAG;;;;wBAGlC,sBAAO;wBACH,QAAQ,EAAE;4BACN,WAAW,EAAE,SAAS,CAAC,OAAO,GAAG,EAAE,CAAC;4BACpC,SAAS,EAAE,KAAK;yBACnB;wBACD,KAAK,EAAE,EAAO;qBACjB,EAAC;;;SACL,CAAC;AACN,CAAC;AA6BD,SAAgB,YAAY,CAAkD,EAO1D;IAPpB,iBA8CC;QA7CG,mBAAkC,EAAlC,WAAW,mBAAG,oBAAoB,KAAA,EAClC,kBAAqC,EAArC,UAAU,mBAAG,wBAAwB,KAAA,EACrC,SAAS,eAAA,EACT,aAAa,mBAAA,EACb,MAAM,YAAA,EACN,oBAAmB,EAAnB,YAAY,mBAAG,IAAI,KAAA;IAEnB,OAAO,YAAY,CAAO;QACtB,SAAS,EAAE,UAAA,YAAY;YACnB,OAAA,mDAA4C,IAAA,0BAAY,EAAC;gBACrD,SAAS,WAAA;gBACT,KAAK,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,CAAC,GAAG,CAAC;gBACxB,YAAY,cAAA;gBACZ,YAAY,cAAA;aACf,CAAC,CAAE;QALJ,CAKI;QACR,WAAW,EAAE,wEAAO,EAAQ;;gBAAN,IAAI,UAAA;;;4BACL,qBAAM,KAAK,CACxB,IAAI,GAAG,CAAC,0BAA0B,EAAE,WAAW,CAAC,EAChD;4BACI,MAAM,EAAE,MAAM;4BACd,OAAO,EAAE;gCACL,MAAM,EAAE,kBAAkB;gCAC1B,cAAc,EAAE,kBAAkB;6BACrC;4BACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,WAAA,EAAE,aAAa,eAAA,EAAE,IAAI,MAAA,EAAE,CAAC;yBAC3D,CACJ,EAAA;;wBAVK,QAAQ,GAAG,SAUhB;wBAC+B,qBAAM,QAAQ,CAAC,IAAI,EAAE,EAAA;;wBAA/C,KAA0B,SAAqB,EAA7C,KAAK,WAAA,EAAE,YAAY,kBAAA;wBAE3B,IAAI,KAAK;4BAAE,MAAM,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;wBAErC,sBAAO,YAAY,EAAC;;;aACvB;QACD,WAAW,EAAE,UAAM,KAAK;;;;4BACH,qBAAM,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE;4BACtD,OAAO,EAAE;gCACL,aAAa,EAAE,iBAAU,KAAK,CAAE;gCAChC,MAAM,EAAE,kBAAkB;6BAC7B;yBACJ,CAAC,EAAA;;wBALI,QAAQ,GAAG,SAKf;wBACF,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG;4BAAE,sBAAO,QAAQ,CAAC,IAAI,EAAE,EAAC;wBAElD,MAAM,IAAI,QAAQ,CAAC,6BAA6B,CAAC,CAAC;;;aACrD;KACJ,CAAC,CAAC;AACP,CAAC"}
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
- * Matcher ignoring `/_next/`, `/api/` & icons
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>, ServerSideComponent: ServerComponent<I, O>) => ServerComponent<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 = exports.middlewareMatcher = void 0;
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
- * Matcher ignoring `/_next/`, `/api/` & icons
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, ServerSideComponent) {
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, resolvedUrl, locale, locales, defaultLocale, req, context, result, isPermanent, destination, props;
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
- resolvedUrl = 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') || '';
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: 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*/, ServerSideComponent(tslib_1.__assign({ params: params, searchParams: searchParams }, props))];
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":"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"}
1
+ {"version":3,"file":"shim.js","sourceRoot":"","sources":["../source/shim.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "next-ssr-middleware",
3
- "version": "0.9.0-rc.0",
3
+ "version": "0.9.0",
4
4
  "license": "LGPL-3.0-or-later",
5
5
  "author": "shiy2008@gmail.com",
6
6
  "description": "Koa-like middlewares for Next.js Server Side Rendering",
@@ -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://127.0.0.1:3000';
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, cookies }, query, res }, next) => {
33
- const token = cookies[tokenKey];
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
- res.setHeader('Set-Cookie', `token=${token}; Path=/`);
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
- try {
52
- const user = await userProfile(token),
53
- data = await next();
54
- const props =
55
- 'props' in data
56
- ? { ...data.props, token, user }
57
- : ({} as O);
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
- * Matcher ignoring `/_next/`, `/api/` & icons
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
- ServerSideComponent: ServerComponent<I, O>
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 resolvedUrl = header.get('x-resolved-url') || '',
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 ServerSideComponent({ params, searchParams, ...props });
97
+ return serverComponent({ params, searchParams, ...props });
101
98
  }
102
99
  };