next-ssr-middleware 1.1.0 → 1.1.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/ReadMe.md CHANGED
@@ -11,7 +11,7 @@
11
11
 
12
12
  | SemVer | status | Next.js | MobX | [MobX i18n][6] | Koa |
13
13
  | :-----------: | :----------: | :-------: | :---------: | :------------: | :---: |
14
- | `>=1` | ✅developing | `>=15` | ❌ | ❌ | `>=2` |
14
+ | `>=1` | ✅developing | `>=15` | ❌ | ❌ | `3.x` |
15
15
  | `>=0.10 <1` | ❌deprecated | `>=15` | `>=6.11` | `>=0.5` | `2.x` |
16
16
  | `>=0.9 <0.10` | ✅developing | `>=15` | `>=6.11` | `>=0.5` | ❌ |
17
17
  | `>=0.7 <0.9` | ❌deprecated | `>=9 <15` | `>=6.11` | `>=0.5` | ❌ |
@@ -159,7 +159,7 @@ export default withKoaRouter(router);
159
159
  [2]: https://nextjs.org/
160
160
  [3]: https://libraries.io/npm/next-ssr-middleware
161
161
  [4]: https://github.com/idea2app/Next-SSR-middleware/actions/workflows/main.yml
162
- [5]: https://nodei.co/npm/next-ssr-middleware/
162
+ [5]: https://npm.im/next-ssr-middleware/
163
163
  [6]: https://github.com/idea2app/MobX-i18n
164
164
  [7]: https://github.com/idea2app/MobX-i18n#server-side-rendering-nextjs-example
165
165
  [8]: https://github.com/idea2app/Lark-Next-Bootstrap-ts/tree/main/pages/api
package/dist/API.d.ts CHANGED
@@ -1,10 +1,10 @@
1
- import { RouterOptions, RouterContext, RouterInstance } from '@koa/router';
1
+ import { Router, RouterOptions, RouterContext, RouterInstance } from '@koa/router';
2
2
  import Koa, { Middleware } from 'koa';
3
3
  export type KoaOption = ConstructorParameters<typeof Koa>[0];
4
4
  export type KoaCallback = ReturnType<(typeof Koa)['prototype']['callback']>;
5
5
  export declare function withKoa<S, C>(...middlewares: Middleware<S, C>[]): KoaCallback;
6
6
  export declare function withKoa<S, C>(option: KoaOption, ...middlewares: Middleware<S, C>[]): KoaCallback;
7
7
  export declare const pageApiRouteOf: (path: string) => string;
8
- export declare const createKoaRouter: <S, C extends RouterContext<S>>(moduleURI: string, option?: RouterOptions) => RouterInstance<S, C>;
8
+ export declare const createKoaRouter: <S, C extends RouterContext<S>>(moduleURI: string, option?: RouterOptions) => Router<S, C>;
9
9
  export declare function withKoaRouter<S, C extends RouterContext<S>>(router: RouterInstance<S, C>, ...middlewares: Middleware<S, C>[]): KoaCallback;
10
10
  export declare function withKoaRouter<S, C extends RouterContext<S>>(option: KoaOption, router: RouterInstance<S, C>, ...middlewares: Middleware<S, C>[]): KoaCallback;
package/dist/SSR/shim.js CHANGED
@@ -3,8 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.withMiddleware = void 0;
4
4
  exports.patchHeaders = patchHeaders;
5
5
  var tslib_1 = require("tslib");
6
- var headers_1 = require("next/headers");
7
- var navigation_1 = require("next/navigation");
8
6
  /**
9
7
  * @see {@link https://www.propelauth.com/post/getting-url-in-next-server-components}
10
8
  */
@@ -20,27 +18,30 @@ function patchHeaders(request) {
20
18
  }
21
19
  var withMiddleware = function (getServerSideProps, serverComponent) {
22
20
  return function (_a) { return tslib_1.__awaiter(void 0, [_a], void 0, function (_b) {
23
- var resolvedParams, resolvedSearchParams, header, cookie, isEnabled, url, locale, locales, defaultLocale, req, context, result, isPermanent, destination, props;
24
- var _c;
21
+ var _c, headers, cookies, draftMode, resolvedParams, resolvedSearchParams, header, cookie, isEnabled, url, locale, locales, defaultLocale, req, context, result, _d, redirect, permanentRedirect, isPermanent, destination, props;
22
+ var _e;
25
23
  var params = _b.params, searchParams = _b.searchParams;
26
- return tslib_1.__generator(this, function (_d) {
27
- switch (_d.label) {
28
- case 0: return [4 /*yield*/, params];
24
+ return tslib_1.__generator(this, function (_f) {
25
+ switch (_f.label) {
26
+ case 0: return [4 /*yield*/, Promise.resolve().then(function () { return tslib_1.__importStar(require('next/headers')); })];
29
27
  case 1:
30
- resolvedParams = _d.sent();
31
- return [4 /*yield*/, searchParams];
28
+ _c = _f.sent(), headers = _c.headers, cookies = _c.cookies, draftMode = _c.draftMode;
29
+ return [4 /*yield*/, params];
32
30
  case 2:
33
- resolvedSearchParams = _d.sent();
34
- return [4 /*yield*/, (0, headers_1.headers)()];
31
+ resolvedParams = _f.sent();
32
+ return [4 /*yield*/, searchParams];
35
33
  case 3:
36
- header = _d.sent();
37
- return [4 /*yield*/, (0, headers_1.cookies)()];
34
+ resolvedSearchParams = _f.sent();
35
+ return [4 /*yield*/, headers()];
38
36
  case 4:
39
- cookie = _d.sent();
40
- return [4 /*yield*/, (0, headers_1.draftMode)()];
37
+ header = _f.sent();
38
+ return [4 /*yield*/, cookies()];
41
39
  case 5:
42
- isEnabled = (_d.sent()).isEnabled;
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') || '';
40
+ cookie = _f.sent();
41
+ return [4 /*yield*/, draftMode()];
42
+ case 6:
43
+ isEnabled = (_f.sent()).isEnabled;
44
+ url = header.get('x-resolved-url') || '', locale = header.get('x-locale') || '', locales = ((_e = header.get('x-locales')) === null || _e === void 0 ? void 0 : _e.split(',')) || [], defaultLocale = header.get('x-default-locale') || '';
44
45
  req = {
45
46
  url: url,
46
47
  headers: Object.fromEntries(tslib_1.__spreadArray([], tslib_1.__read(header), false)),
@@ -63,25 +64,29 @@ var withMiddleware = function (getServerSideProps, serverComponent) {
63
64
  defaultLocale: defaultLocale
64
65
  };
65
66
  return [4 /*yield*/, getServerSideProps(context)];
66
- case 6:
67
- result = _d.sent();
68
- if ('redirect' in result) {
69
- isPermanent = 'statusCode' in result.redirect
70
- ? result.redirect.statusCode === 308
71
- : 'permanent' in result.redirect &&
72
- result.redirect.permanent;
73
- destination = result.redirect.destination;
74
- if (isPermanent)
75
- (0, navigation_1.permanentRedirect)(destination);
76
- else
77
- (0, navigation_1.redirect)(destination);
78
- }
79
- if (!('props' in result)) return [3 /*break*/, 8];
80
- return [4 /*yield*/, result.props];
81
67
  case 7:
82
- props = _d.sent();
68
+ result = _f.sent();
69
+ if (!('redirect' in result)) return [3 /*break*/, 9];
70
+ return [4 /*yield*/, Promise.resolve().then(function () { return tslib_1.__importStar(require('next/navigation')); })];
71
+ case 8:
72
+ _d = _f.sent(), redirect = _d.redirect, permanentRedirect = _d.permanentRedirect;
73
+ isPermanent = 'statusCode' in result.redirect
74
+ ? result.redirect.statusCode === 308
75
+ : 'permanent' in result.redirect &&
76
+ result.redirect.permanent;
77
+ destination = result.redirect.destination;
78
+ if (isPermanent)
79
+ permanentRedirect(destination);
80
+ else
81
+ redirect(destination);
82
+ _f.label = 9;
83
+ case 9:
84
+ if (!('props' in result)) return [3 /*break*/, 11];
85
+ return [4 /*yield*/, result.props];
86
+ case 10:
87
+ props = _f.sent();
83
88
  return [2 /*return*/, serverComponent(tslib_1.__assign({ params: params, searchParams: searchParams }, props))];
84
- case 8: return [2 /*return*/];
89
+ case 11: return [2 /*return*/];
85
90
  }
86
91
  });
87
92
  }); };
@@ -1 +1 @@
1
- {"version":3,"file":"shim.js","sourceRoot":"","sources":["../../source/SSR/shim.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shim.js","sourceRoot":"","sources":["../../source/SSR/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": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "license": "LGPL-3.0-or-later",
5
5
  "author": "shiy2008@gmail.com",
6
6
  "description": "Koa-like middlewares for Next.js Back-end API & Server Side Rendering",
@@ -22,29 +22,29 @@
22
22
  "types": "dist/index.d.ts",
23
23
  "main": "dist/index.js",
24
24
  "dependencies": {
25
- "@koa/bodyparser": ">=5",
26
- "@koa/router": ">=13",
25
+ "@koa/bodyparser": "^6.1.0",
26
+ "@koa/router": "^15.7.0",
27
27
  "@types/jsonwebtoken": "^9.0.10",
28
- "@types/koa": ">=2",
29
- "@types/react": "^19.2.7",
28
+ "@types/koa": "^3.0.3",
29
+ "@types/react": "^19.2.17",
30
30
  "jsonwebtoken": "^9.0.3",
31
- "koa": ">=2",
31
+ "koa": "^3.2.1",
32
32
  "tslib": "^2.8.1",
33
- "web-utility": "^4.6.4"
33
+ "web-utility": "^4.7.2"
34
34
  },
35
35
  "peerDependencies": {
36
- "next": ">=9.3",
36
+ "next": ">=15.5.18",
37
37
  "react": ">=18"
38
38
  },
39
39
  "devDependencies": {
40
- "@types/node": "^22.19.3",
40
+ "@types/node": "^24.13.3",
41
41
  "husky": "^9.1.7",
42
- "koajax": "^3.1.2",
43
- "lint-staged": "^16.2.7",
44
- "next": "^16.0.10",
45
- "open-cli": "^8.0.0",
46
- "prettier": "^3.7.4",
47
- "typedoc": "^0.28.15",
42
+ "koajax": "^3.3.0",
43
+ "lint-staged": "^17.0.8",
44
+ "next": "^16.2.10",
45
+ "open-cli": "^9.0.0",
46
+ "prettier": "^3.9.5",
47
+ "typedoc": "^0.28.20",
48
48
  "typescript": "~5.9.3"
49
49
  },
50
50
  "pnpm": {
@@ -1,7 +1,5 @@
1
1
  import { IncomingMessage, ServerResponse } from 'http';
2
2
  import { NextApiRequestCookies } from 'next/dist/server/api-utils';
3
- import { cookies, draftMode, headers } from 'next/headers';
4
- import { permanentRedirect, redirect } from 'next/navigation';
5
3
  import { NextRequest } from 'next/server';
6
4
  import {
7
5
  GetServerSideProps,
@@ -47,6 +45,8 @@ export const withMiddleware =
47
45
  serverComponent: ServerComponent<I, O>
48
46
  ): ServerComponent<I> =>
49
47
  async ({ params, searchParams }) => {
48
+ const { headers, cookies, draftMode } = await import('next/headers');
49
+
50
50
  const resolvedParams = await params,
51
51
  resolvedSearchParams = await searchParams,
52
52
  header = await headers(),
@@ -81,6 +81,9 @@ export const withMiddleware =
81
81
  const result = await getServerSideProps(context);
82
82
 
83
83
  if ('redirect' in result) {
84
+ const { redirect, permanentRedirect } =
85
+ await import('next/navigation');
86
+
84
87
  const isPermanent =
85
88
  'statusCode' in result.redirect
86
89
  ? result.redirect.statusCode === 308