next-ssr-middleware 0.10.0 → 1.0.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 +12 -12
- package/dist/API.js +1 -1
- package/dist/API.js.map +1 -1
- package/dist/SSR/middleware/local.d.ts +0 -2
- package/dist/SSR/middleware/local.js +0 -19
- package/dist/SSR/middleware/local.js.map +1 -1
- package/package.json +15 -17
- package/source/API.ts +1 -1
- package/source/SSR/middleware/local.ts +0 -17
package/ReadMe.md
CHANGED
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
|
|
12
12
|
| SemVer | status | Next.js | MobX | [MobX i18n][6] |
|
|
13
13
|
| :----------: | :----------: | :-------: | :---------: | :------------: |
|
|
14
|
+
| `>=1.0` | ✅developing | `>=15` | `>=6.11` | ❌ |
|
|
14
15
|
| `>=0.9` | ✅developing | `>=15` | `>=6.11` | `>=0.5` |
|
|
15
16
|
| `>=0.7 <0.9` | ❌deprecated | `>=9 <15` | `>=6.11` | `>=0.5` |
|
|
16
17
|
| `<0.7` | ❌deprecated | `>=9 <15` | `>=4 <6.11` | `<0.5` |
|
|
@@ -21,7 +22,7 @@
|
|
|
21
22
|
2. Error logger
|
|
22
23
|
3. JWT verifier
|
|
23
24
|
4. Props cache
|
|
24
|
-
5. i18n loader
|
|
25
|
+
5. ~~i18n loader~~ (use [MobX-i18n utility][7] directly)
|
|
25
26
|
6. OAuth 2 signer (with common providers)
|
|
26
27
|
1. GitHub
|
|
27
28
|
|
|
@@ -38,11 +39,9 @@ import {
|
|
|
38
39
|
jwtVerifier,
|
|
39
40
|
cache,
|
|
40
41
|
errorLogger,
|
|
41
|
-
router
|
|
42
|
-
translator
|
|
42
|
+
router
|
|
43
43
|
} from 'next-ssr-middleware';
|
|
44
44
|
|
|
45
|
-
import i18n from '../../model/Translation';
|
|
46
45
|
import { User, UserModel } from '../../model/User';
|
|
47
46
|
|
|
48
47
|
type UserDetailPageProps = User & JWTProps & RouterProps;
|
|
@@ -52,7 +51,6 @@ export const getServerSideProps = compose<{ id: string }, UserDetailPageProps>(
|
|
|
52
51
|
cache(),
|
|
53
52
|
errorLogger,
|
|
54
53
|
router,
|
|
55
|
-
translator(i18n),
|
|
56
54
|
async ({ params }) => {
|
|
57
55
|
const props = await new UserModel().getOne(params!.id);
|
|
58
56
|
|
|
@@ -124,7 +122,7 @@ async function Home({ params, searchParams, ...props }: ServerProps) {
|
|
|
124
122
|
|
|
125
123
|
### API router
|
|
126
124
|
|
|
127
|
-
Located in [`pages/api/` of a Next.js project][
|
|
125
|
+
Located in [`pages/api/` of a Next.js project][8] or [`api/` of a Vercel serverless project][9].
|
|
128
126
|
|
|
129
127
|
#### `pages/api/echo.ts`
|
|
130
128
|
|
|
@@ -150,10 +148,11 @@ export default withKoaRouter(router);
|
|
|
150
148
|
## Cases
|
|
151
149
|
|
|
152
150
|
1. https://github.com/idea2app/Next-Bootstrap-ts
|
|
153
|
-
2. https://github.com/
|
|
154
|
-
3. https://github.com/
|
|
155
|
-
4. https://github.com/kaiyuanshe/
|
|
156
|
-
5. https://github.com/kaiyuanshe/
|
|
151
|
+
2. https://github.com/idea2app/Lark-Next-Bootstrap-ts
|
|
152
|
+
3. https://github.com/FreeCodeCamp-Chengdu/FreeCodeCamp-Chengdu.github.io
|
|
153
|
+
4. https://github.com/kaiyuanshe/kaiyuanshe.github.io
|
|
154
|
+
5. https://github.com/kaiyuanshe/OpenHackathon-Web
|
|
155
|
+
6. https://github.com/kaiyuanshe/OSS-toolbox
|
|
157
156
|
|
|
158
157
|
[1]: https://koajs.com/
|
|
159
158
|
[2]: https://nextjs.org/
|
|
@@ -161,5 +160,6 @@ export default withKoaRouter(router);
|
|
|
161
160
|
[4]: https://github.com/idea2app/Next-SSR-middleware/actions/workflows/main.yml
|
|
162
161
|
[5]: https://nodei.co/npm/next-ssr-middleware/
|
|
163
162
|
[6]: https://github.com/idea2app/MobX-i18n
|
|
164
|
-
[7]: https://github.com/idea2app/
|
|
165
|
-
[8]: https://github.com/idea2app/
|
|
163
|
+
[7]: https://github.com/idea2app/MobX-i18n#server-side-rendering-nextjs-example
|
|
164
|
+
[8]: https://github.com/idea2app/Lark-Next-Bootstrap-ts/tree/main/pages/api
|
|
165
|
+
[9]: https://github.com/idea2app/Vercel-Node-serverless/tree/master/api
|
package/dist/API.js
CHANGED
|
@@ -54,7 +54,7 @@ function withKoaRouter() {
|
|
|
54
54
|
var option;
|
|
55
55
|
var router;
|
|
56
56
|
var middlewares = [];
|
|
57
|
-
if (typeof parameters[1] === 'function')
|
|
57
|
+
if (!parameters[1] || typeof parameters[1] === 'function')
|
|
58
58
|
_a = tslib_1.__read(parameters), router = _a[0], middlewares = _a.slice(1);
|
|
59
59
|
else
|
|
60
60
|
_b = tslib_1.__read(parameters), option = _b[0], router = _b[1], middlewares = _b.slice(2);
|
package/dist/API.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"API.js","sourceRoot":"","sources":["../source/API.ts"],"names":[],"mappings":";;;AAaA,0BAcC;AAsBD,sCAiBC;;AAlED,uEAAyC;AACzC,+DAAwE;AACxE,oDAAsC;AAWtC,SAAgB,OAAO;;IAAO,oBAAoB;SAApB,UAAoB,EAApB,qBAAoB,EAApB,IAAoB;QAApB,+BAAoB;;IAC9C,IAAI,MAA6B,CAAC;IAClC,IAAI,WAAW,GAAuB,EAAE,CAAC;IAEzC,IAAI,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;QACtC,MAAM,GAAG,SAAS,CAAC;QACnB,WAAW,GAAG,UAAU,CAAC;IAC7B,CAAC;;QAAM,KAAA,eAA2B,UAAU,CAAA,EAApC,MAAM,QAAA,EAAK,WAAW,cAAA,CAAe;IAE7C,IAAM,GAAG,GAAG,IAAI,aAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAA,oBAAU,GAAE,CAAC,CAAC;;QAE9C,KAAyB,IAAA,gBAAA,iBAAA,WAAW,CAAA,wCAAA;YAA/B,IAAM,UAAU,wBAAA;YAAiB,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;SAAA;;;;;;;;;IAE1D,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AAC1B,CAAC;AAEM,IAAM,cAAc,GAAG,UAAC,IAAY;;IACvC,OAAA,MAAA,MAAA,MAAA,SAAS,CAAC,IAAI,CAAC;SACV,KAAK,CAAC,0BAA0B,CAAC,0CAAG,CAAC,CAAC,0CACrC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,0CACd,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;CAAA,CAAC;AAJrB,QAAA,cAAc,kBAIO;AAE3B,IAAM,eAAe,GAAG,UAC3B,SAAiB,EACjB,MAAsB,IACrB,OAAA,IAAI,gBAAM,uCAAY,MAAM,KAAE,MAAM,EAAE,IAAA,sBAAc,EAAC,SAAS,CAAC,IAAG,EAAlE,CAAkE,CAAC;AAH3D,QAAA,eAAe,mBAG4C;AAWxE,SAAgB,aAAa;;IACzB,oBAAoB;SAApB,UAAoB,EAApB,qBAAoB,EAApB,IAAoB;QAApB,+BAAoB;;IAEpB,IAAI,MAA6B,CAAC;IAClC,IAAI,MAAoB,CAAC;IACzB,IAAI,WAAW,GAAuB,EAAE,CAAC;IAEzC,IAAI,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU;
|
|
1
|
+
{"version":3,"file":"API.js","sourceRoot":"","sources":["../source/API.ts"],"names":[],"mappings":";;;AAaA,0BAcC;AAsBD,sCAiBC;;AAlED,uEAAyC;AACzC,+DAAwE;AACxE,oDAAsC;AAWtC,SAAgB,OAAO;;IAAO,oBAAoB;SAApB,UAAoB,EAApB,qBAAoB,EAApB,IAAoB;QAApB,+BAAoB;;IAC9C,IAAI,MAA6B,CAAC;IAClC,IAAI,WAAW,GAAuB,EAAE,CAAC;IAEzC,IAAI,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC;QACtC,MAAM,GAAG,SAAS,CAAC;QACnB,WAAW,GAAG,UAAU,CAAC;IAC7B,CAAC;;QAAM,KAAA,eAA2B,UAAU,CAAA,EAApC,MAAM,QAAA,EAAK,WAAW,cAAA,CAAe;IAE7C,IAAM,GAAG,GAAG,IAAI,aAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,IAAA,oBAAU,GAAE,CAAC,CAAC;;QAE9C,KAAyB,IAAA,gBAAA,iBAAA,WAAW,CAAA,wCAAA;YAA/B,IAAM,UAAU,wBAAA;YAAiB,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;SAAA;;;;;;;;;IAE1D,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AAC1B,CAAC;AAEM,IAAM,cAAc,GAAG,UAAC,IAAY;;IACvC,OAAA,MAAA,MAAA,MAAA,SAAS,CAAC,IAAI,CAAC;SACV,KAAK,CAAC,0BAA0B,CAAC,0CAAG,CAAC,CAAC,0CACrC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,0CACd,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;CAAA,CAAC;AAJrB,QAAA,cAAc,kBAIO;AAE3B,IAAM,eAAe,GAAG,UAC3B,SAAiB,EACjB,MAAsB,IACrB,OAAA,IAAI,gBAAM,uCAAY,MAAM,KAAE,MAAM,EAAE,IAAA,sBAAc,EAAC,SAAS,CAAC,IAAG,EAAlE,CAAkE,CAAC;AAH3D,QAAA,eAAe,mBAG4C;AAWxE,SAAgB,aAAa;;IACzB,oBAAoB;SAApB,UAAoB,EAApB,qBAAoB,EAApB,IAAoB;QAApB,+BAAoB;;IAEpB,IAAI,MAA6B,CAAC;IAClC,IAAI,MAAoB,CAAC;IACzB,IAAI,WAAW,GAAuB,EAAE,CAAC;IAEzC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU;QACrD,KAAA,eAA2B,UAAU,CAAA,EAApC,MAAM,QAAA,EAAK,WAAW,cAAA,CAAe;;QACrC,KAAA,eAAmC,UAAU,CAAA,EAA5C,MAAM,QAAA,EAAE,MAAM,QAAA,EAAK,WAAW,cAAA,CAAe;IAEnD,OAAO,OAAO,sCACV,MAAM;QACN,MAAM,CAAC,MAAM,EAAE;QACf,MAAM,CAAC,cAAc,EAAE,kBACpB,WAAW,WAChB;AACN,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { JwtPayload, VerifyOptions } from 'jsonwebtoken';
|
|
2
|
-
import { TranslationModel } from 'mobx-i18n';
|
|
3
2
|
import { GetServerSidePropsContext, GetServerSidePropsResult } from 'next';
|
|
4
3
|
import { ParsedUrlQuery } from 'querystring';
|
|
5
4
|
import { DataObject, Middleware } from '../compose';
|
|
@@ -13,4 +12,3 @@ export interface JWTProps<T extends DataObject = {}> {
|
|
|
13
12
|
}
|
|
14
13
|
export declare function jwtVerifier<I extends DataObject, O extends DataObject = {}>(tokenKey?: string, secretKey?: string, options?: VerifyOptions): Middleware<I, O & JWTProps>;
|
|
15
14
|
export declare function cache<I extends DataObject, O extends DataObject = {}>(oneInterval?: number, allInterval?: number): Middleware<I, O>;
|
|
16
|
-
export declare function translator<I extends DataObject, O extends DataObject = {}>(i18n: TranslationModel<string, string>): Middleware<I, O>;
|
|
@@ -4,11 +4,9 @@ exports.errorLogger = errorLogger;
|
|
|
4
4
|
exports.router = router;
|
|
5
5
|
exports.jwtVerifier = jwtVerifier;
|
|
6
6
|
exports.cache = cache;
|
|
7
|
-
exports.translator = translator;
|
|
8
7
|
var tslib_1 = require("tslib");
|
|
9
8
|
var jsonwebtoken_1 = require("jsonwebtoken");
|
|
10
9
|
var koajax_1 = require("koajax");
|
|
11
|
-
var mobx_i18n_1 = require("mobx-i18n");
|
|
12
10
|
var web_utility_1 = require("web-utility");
|
|
13
11
|
function errorLogger(context, next) {
|
|
14
12
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
@@ -121,21 +119,4 @@ function cache(oneInterval, allInterval) {
|
|
|
121
119
|
});
|
|
122
120
|
}); });
|
|
123
121
|
}
|
|
124
|
-
function translator(i18n) {
|
|
125
|
-
var _this = this;
|
|
126
|
-
return function (_a, next_1) { return tslib_1.__awaiter(_this, [_a, next_1], void 0, function (_b, next) {
|
|
127
|
-
var _c, language, languages;
|
|
128
|
-
var _d = _b.req, headers = _d.headers, cookies = _d.cookies;
|
|
129
|
-
return tslib_1.__generator(this, function (_e) {
|
|
130
|
-
switch (_e.label) {
|
|
131
|
-
case 0:
|
|
132
|
-
_c = cookies.language, language = _c === void 0 ? '' : _c, languages = (0, mobx_i18n_1.parseLanguageHeader)(headers['accept-language'] || '');
|
|
133
|
-
return [4 /*yield*/, i18n.loadLanguages(tslib_1.__spreadArray([language], tslib_1.__read(languages), false).filter(Boolean))];
|
|
134
|
-
case 1:
|
|
135
|
-
_e.sent();
|
|
136
|
-
return [2 /*return*/, next()];
|
|
137
|
-
}
|
|
138
|
-
});
|
|
139
|
-
}); };
|
|
140
|
-
}
|
|
141
122
|
//# sourceMappingURL=local.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../../source/SSR/middleware/local.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../../source/SSR/middleware/local.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.
|
|
3
|
+
"version": "1.0.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,39 +22,37 @@
|
|
|
22
22
|
"types": "dist/index.d.ts",
|
|
23
23
|
"main": "dist/index.js",
|
|
24
24
|
"dependencies": {
|
|
25
|
+
"@koa/bodyparser": "^5.1.2",
|
|
26
|
+
"@koa/router": "^13.1.0",
|
|
25
27
|
"@types/jsonwebtoken": "^9.0.9",
|
|
26
28
|
"@types/koa": "^2.15.0",
|
|
27
29
|
"@types/koa__router": "^12.0.4",
|
|
28
|
-
"@types/react": "
|
|
30
|
+
"@types/react": "^19.1.6",
|
|
31
|
+
"jsonwebtoken": "^9.0.2",
|
|
32
|
+
"koa": ">=2",
|
|
29
33
|
"tslib": "^2.8.1",
|
|
30
34
|
"web-utility": "^4.4.3"
|
|
31
35
|
},
|
|
32
36
|
"peerDependencies": {
|
|
33
|
-
"@koa/bodyparser": ">=5",
|
|
34
|
-
"@koa/router": ">=13",
|
|
35
|
-
"jsonwebtoken": ">=9",
|
|
36
|
-
"koa": ">=2",
|
|
37
|
-
"mobx-i18n": ">=0.5 <1",
|
|
38
37
|
"next": ">=9.3",
|
|
39
38
|
"react": ">=18"
|
|
40
39
|
},
|
|
41
40
|
"devDependencies": {
|
|
42
|
-
"@
|
|
43
|
-
"@koa/router": "^13.1.0",
|
|
44
|
-
"@types/node": "^22.15.2",
|
|
45
|
-
"@types/react": "^19.1.2",
|
|
41
|
+
"@types/node": "^22.15.29",
|
|
46
42
|
"husky": "^9.1.7",
|
|
47
|
-
"jsonwebtoken": "^9.0.2",
|
|
48
|
-
"koa": "^2.16.1",
|
|
49
43
|
"koajax": "^3.1.2",
|
|
50
|
-
"lint-staged": "^15.5.
|
|
51
|
-
"
|
|
52
|
-
"next": "^15.3.1",
|
|
44
|
+
"lint-staged": "^15.5.2",
|
|
45
|
+
"next": "^15.3.3",
|
|
53
46
|
"open-cli": "^8.0.0",
|
|
54
47
|
"prettier": "^3.5.3",
|
|
55
|
-
"typedoc": "^0.28.
|
|
48
|
+
"typedoc": "^0.28.5",
|
|
56
49
|
"typescript": "~5.8.3"
|
|
57
50
|
},
|
|
51
|
+
"pnpm": {
|
|
52
|
+
"onlyBuiltDependencies": [
|
|
53
|
+
"sharp"
|
|
54
|
+
]
|
|
55
|
+
},
|
|
58
56
|
"prettier": {
|
|
59
57
|
"singleQuote": true,
|
|
60
58
|
"trailingComma": "none",
|
package/source/API.ts
CHANGED
|
@@ -54,7 +54,7 @@ export function withKoaRouter<S, C extends RouterParamContext<S>>(
|
|
|
54
54
|
let router: Router<S, C>;
|
|
55
55
|
let middlewares: Middleware<S, C>[] = [];
|
|
56
56
|
|
|
57
|
-
if (typeof parameters[1] === 'function')
|
|
57
|
+
if (!parameters[1] || typeof parameters[1] === 'function')
|
|
58
58
|
[router, ...middlewares] = parameters;
|
|
59
59
|
else [option, router, ...middlewares] = parameters;
|
|
60
60
|
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { JwtPayload, VerifyOptions, verify } from 'jsonwebtoken';
|
|
2
2
|
import { HTTPError } from 'koajax';
|
|
3
|
-
import { TranslationModel, parseLanguageHeader } from 'mobx-i18n';
|
|
4
3
|
import { GetServerSidePropsContext, GetServerSidePropsResult } from 'next';
|
|
5
4
|
import { ParsedUrlQuery } from 'querystring';
|
|
6
5
|
import { Day, Second } from 'web-utility';
|
|
@@ -126,19 +125,3 @@ export function cache<I extends DataObject, O extends DataObject = {}>(
|
|
|
126
125
|
return data || cache.buffer;
|
|
127
126
|
}) as Middleware<I, O>;
|
|
128
127
|
}
|
|
129
|
-
|
|
130
|
-
export function translator<I extends DataObject, O extends DataObject = {}>(
|
|
131
|
-
i18n: TranslationModel<string, string>
|
|
132
|
-
): Middleware<I, O> {
|
|
133
|
-
return async (
|
|
134
|
-
{ req: { headers, cookies } }: GetServerSidePropsContext<I>,
|
|
135
|
-
next: () => Promise<GetServerSidePropsResult<O>>
|
|
136
|
-
) => {
|
|
137
|
-
const { language = '' } = cookies,
|
|
138
|
-
languages = parseLanguageHeader(headers['accept-language'] || '');
|
|
139
|
-
|
|
140
|
-
await i18n.loadLanguages([language, ...languages].filter(Boolean));
|
|
141
|
-
|
|
142
|
-
return next();
|
|
143
|
-
};
|
|
144
|
-
}
|