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 +2 -2
- package/dist/API.d.ts +2 -2
- package/dist/SSR/shim.js +39 -34
- package/dist/SSR/shim.js.map +1 -1
- package/package.json +15 -15
- package/source/SSR/shim.ts +5 -2
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` | ❌ | ❌ |
|
|
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://
|
|
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) =>
|
|
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
|
|
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 (
|
|
27
|
-
switch (
|
|
28
|
-
case 0: return [4 /*yield*/,
|
|
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
|
-
|
|
31
|
-
return [4 /*yield*/,
|
|
28
|
+
_c = _f.sent(), headers = _c.headers, cookies = _c.cookies, draftMode = _c.draftMode;
|
|
29
|
+
return [4 /*yield*/, params];
|
|
32
30
|
case 2:
|
|
33
|
-
|
|
34
|
-
return [4 /*yield*/,
|
|
31
|
+
resolvedParams = _f.sent();
|
|
32
|
+
return [4 /*yield*/, searchParams];
|
|
35
33
|
case 3:
|
|
36
|
-
|
|
37
|
-
return [4 /*yield*/, (
|
|
34
|
+
resolvedSearchParams = _f.sent();
|
|
35
|
+
return [4 /*yield*/, headers()];
|
|
38
36
|
case 4:
|
|
39
|
-
|
|
40
|
-
return [4 /*yield*/, (
|
|
37
|
+
header = _f.sent();
|
|
38
|
+
return [4 /*yield*/, cookies()];
|
|
41
39
|
case 5:
|
|
42
|
-
|
|
43
|
-
|
|
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
|
-
|
|
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
|
|
89
|
+
case 11: return [2 /*return*/];
|
|
85
90
|
}
|
|
86
91
|
});
|
|
87
92
|
}); };
|
package/dist/SSR/shim.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shim.js","sourceRoot":"","sources":["../../source/SSR/shim.ts"],"names":[],"mappings":";;;
|
|
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.
|
|
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": "
|
|
26
|
-
"@koa/router": "
|
|
25
|
+
"@koa/bodyparser": "^6.1.0",
|
|
26
|
+
"@koa/router": "^15.7.0",
|
|
27
27
|
"@types/jsonwebtoken": "^9.0.10",
|
|
28
|
-
"@types/koa": "
|
|
29
|
-
"@types/react": "^19.2.
|
|
28
|
+
"@types/koa": "^3.0.3",
|
|
29
|
+
"@types/react": "^19.2.17",
|
|
30
30
|
"jsonwebtoken": "^9.0.3",
|
|
31
|
-
"koa": "
|
|
31
|
+
"koa": "^3.2.1",
|
|
32
32
|
"tslib": "^2.8.1",
|
|
33
|
-
"web-utility": "^4.
|
|
33
|
+
"web-utility": "^4.7.2"
|
|
34
34
|
},
|
|
35
35
|
"peerDependencies": {
|
|
36
|
-
"next": ">=
|
|
36
|
+
"next": ">=15.5.18",
|
|
37
37
|
"react": ">=18"
|
|
38
38
|
},
|
|
39
39
|
"devDependencies": {
|
|
40
|
-
"@types/node": "^
|
|
40
|
+
"@types/node": "^24.13.3",
|
|
41
41
|
"husky": "^9.1.7",
|
|
42
|
-
"koajax": "^3.
|
|
43
|
-
"lint-staged": "^
|
|
44
|
-
"next": "^16.
|
|
45
|
-
"open-cli": "^
|
|
46
|
-
"prettier": "^3.
|
|
47
|
-
"typedoc": "^0.28.
|
|
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": {
|
package/source/SSR/shim.ts
CHANGED
|
@@ -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
|