next-ssr-middleware 1.1.1 → 1.1.3

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
@@ -13,7 +13,7 @@
13
13
  | :-----------: | :----------: | :-------: | :---------: | :------------: | :---: |
14
14
  | `>=1` | ✅developing | `>=15` | ❌ | ❌ | `3.x` |
15
15
  | `>=0.10 <1` | ❌deprecated | `>=15` | `>=6.11` | `>=0.5` | `2.x` |
16
- | `>=0.9 <0.10` | ✅developing | `>=15` | `>=6.11` | `>=0.5` | ❌ |
16
+ | `>=0.9 <0.10` | ❌deprecated | `>=15` | `>=6.11` | `>=0.5` | ❌ |
17
17
  | `>=0.7 <0.9` | ❌deprecated | `>=9 <15` | `>=6.11` | `>=0.5` | ❌ |
18
18
  | `<0.7` | ❌deprecated | `>=9 <15` | `>=4 <6.11` | `<0.5` | ❌ |
19
19
 
package/dist/API.d.ts CHANGED
@@ -4,7 +4,7 @@ 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
- export declare const pageApiRouteOf: (path: string) => string;
7
+ export declare const pageApiRouteOf: (path: string) => string | undefined;
8
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/API.js CHANGED
@@ -1,65 +1,33 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.createKoaRouter = exports.pageApiRouteOf = void 0;
4
- exports.withKoa = withKoa;
5
- exports.withKoaRouter = withKoaRouter;
6
- var tslib_1 = require("tslib");
7
- var bodyparser_1 = tslib_1.__importDefault(require("@koa/bodyparser"));
8
- var router_1 = require("@koa/router");
9
- var koa_1 = tslib_1.__importDefault(require("koa"));
10
- function withKoa() {
11
- var _a, e_1, _b;
12
- var parameters = [];
13
- for (var _i = 0; _i < arguments.length; _i++) {
14
- parameters[_i] = arguments[_i];
15
- }
16
- var option;
17
- var middlewares = [];
1
+ import BodyParser from '@koa/bodyparser';
2
+ import { Router } from '@koa/router';
3
+ import Koa from 'koa';
4
+ export function withKoa(...parameters) {
5
+ let option;
6
+ let middlewares = [];
18
7
  if (typeof parameters[0] === 'function') {
19
8
  option = undefined;
20
9
  middlewares = parameters;
21
10
  }
22
11
  else
23
- _a = tslib_1.__read(parameters), option = _a[0], middlewares = _a.slice(1);
24
- var app = new koa_1.default(option).use((0, bodyparser_1.default)());
25
- try {
26
- for (var middlewares_1 = tslib_1.__values(middlewares), middlewares_1_1 = middlewares_1.next(); !middlewares_1_1.done; middlewares_1_1 = middlewares_1.next()) {
27
- var middleware = middlewares_1_1.value;
28
- app.use(middleware);
29
- }
30
- }
31
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
32
- finally {
33
- try {
34
- if (middlewares_1_1 && !middlewares_1_1.done && (_b = middlewares_1.return)) _b.call(middlewares_1);
35
- }
36
- finally { if (e_1) throw e_1.error; }
37
- }
12
+ [option, ...middlewares] = parameters;
13
+ const app = new Koa(option).use(BodyParser());
14
+ for (const middleware of middlewares)
15
+ app.use(middleware);
38
16
  return app.callback();
39
17
  }
40
- var pageApiRouteOf = function (path) {
41
- var _a, _b, _c;
42
- return (_c = (_b = (_a = decodeURI(path)
43
- .match(/pages(\/api\/.+)\.(j|t)s/)) === null || _a === void 0 ? void 0 : _a[1]) === null || _b === void 0 ? void 0 : _b.split('/[')[0]) === null || _c === void 0 ? void 0 : _c.replace(/\/index$/, '');
44
- };
45
- exports.pageApiRouteOf = pageApiRouteOf;
46
- var createKoaRouter = function (moduleURI, option) { return new router_1.Router(tslib_1.__assign(tslib_1.__assign({}, option), { prefix: (0, exports.pageApiRouteOf)(moduleURI) })); };
47
- exports.createKoaRouter = createKoaRouter;
48
- function withKoaRouter() {
49
- var _a, _b;
50
- var parameters = [];
51
- for (var _i = 0; _i < arguments.length; _i++) {
52
- parameters[_i] = arguments[_i];
53
- }
54
- var option;
55
- var router;
56
- var middlewares = [];
18
+ export const pageApiRouteOf = (path) => decodeURI(path)
19
+ .match(/pages(\/api\/.+)\.(j|t)s/)?.[1]
20
+ ?.split('/[')[0]
21
+ ?.replace(/\/index$/, '');
22
+ export const createKoaRouter = (moduleURI, option) => new Router({ ...option, prefix: pageApiRouteOf(moduleURI) });
23
+ export function withKoaRouter(...parameters) {
24
+ let option;
25
+ let router;
26
+ let middlewares = [];
57
27
  if (!parameters[1] || typeof parameters[1] === 'function')
58
- _a = tslib_1.__read(parameters), router = _a[0], middlewares = _a.slice(1);
28
+ [router, ...middlewares] = parameters;
59
29
  else
60
- _b = tslib_1.__read(parameters), option = _b[0], router = _b[1], middlewares = _b.slice(2);
61
- return withKoa.apply(void 0, tslib_1.__spreadArray([option,
62
- router.routes(),
63
- router.allowedMethods()], tslib_1.__read(middlewares), false));
30
+ [option, router, ...middlewares] = parameters;
31
+ return withKoa(option, router.routes(), router.allowedMethods(), ...middlewares);
64
32
  }
65
33
  //# sourceMappingURL=API.js.map
package/dist/API.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"API.js","sourceRoot":"","sources":["../source/API.ts"],"names":[],"mappings":";;;AAkBA,0BAcC;AAsBD,sCAiBC;;AAvED,uEAAyC;AACzC,sCAKqB;AACrB,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,eAAM,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,MAA4B,CAAC;IACjC,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
+ {"version":3,"file":"API.js","sourceRoot":"","sources":["../source/API.ts"],"names":[],"mappings":"AAAA,OAAO,UAAU,MAAM,iBAAiB,CAAC;AACzC,OAAO,EACH,MAAM,EAIT,MAAM,aAAa,CAAC;AACrB,OAAO,GAAmB,MAAM,KAAK,CAAC;AAWtC,MAAM,UAAU,OAAO,CAAO,GAAG,UAAiB;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,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,UAAU,CAAC;IAE7C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IAE9C,KAAK,MAAM,UAAU,IAAI,WAAW;QAAE,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAE1D,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,EAAE,CAC3C,SAAS,CAAC,IAAI,CAAC;KACV,KAAK,CAAC,0BAA0B,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChB,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAElC,MAAM,CAAC,MAAM,eAAe,GAAG,CAC3B,SAAiB,EACjB,MAAsB,EACxB,EAAE,CAAC,IAAI,MAAM,CAAO,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;AAWxE,MAAM,UAAU,aAAa,CACzB,GAAG,UAAiB;IAEpB,IAAI,MAA6B,CAAC;IAClC,IAAI,MAA4B,CAAC;IACjC,IAAI,WAAW,GAAuB,EAAE,CAAC;IAEzC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,OAAO,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU;QACrD,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,UAAU,CAAC;;QACrC,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,GAAG,UAAU,CAAC;IAEnD,OAAO,OAAO,CACV,MAAM,EACN,MAAM,CAAC,MAAM,EAAE,EACf,MAAM,CAAC,cAAc,EAAE,EACvB,GAAG,WAAW,CACjB,CAAC;AACN,CAAC"}
@@ -1,25 +1,8 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.compose = compose;
4
- var tslib_1 = require("tslib");
5
- function compose() {
6
- var _this = this;
7
- var middlewares = [];
8
- for (var _i = 0; _i < arguments.length; _i++) {
9
- middlewares[_i] = arguments[_i];
10
- }
11
- return (function (context) {
12
- var _a = tslib_1.__read(middlewares), first = _a[0], rest = _a.slice(1);
13
- var next = function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
14
- var _a;
15
- return tslib_1.__generator(this, function (_b) {
16
- switch (_b.label) {
17
- case 0: return [4 /*yield*/, ((_a = rest.shift()) === null || _a === void 0 ? void 0 : _a(context, next))];
18
- case 1: return [2 /*return*/, (_b.sent()) ||
19
- { props: {} }];
20
- }
21
- });
22
- }); };
1
+ export function compose(...middlewares) {
2
+ return (context => {
3
+ const [first, ...rest] = middlewares;
4
+ const next = async () => (await rest.shift()?.(context, next)) ||
5
+ { props: {} };
23
6
  return first(context, next);
24
7
  });
25
8
  }
@@ -1 +1 @@
1
- {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../source/SSR/compose.ts"],"names":[],"mappings":";;AAaA,0BAcC;;AAdD,SAAgB,OAAO;IAAvB,iBAcC;IAVC,qBAAkC;SAAlC,UAAkC,EAAlC,qBAAkC,EAAlC,IAAkC;QAAlC,gCAAkC;;IAChC,OAAO,CAAC,UAAA,OAAO;QACL,IAAA,KAAA,eAAmB,WAAW,CAAA,EAA7B,KAAK,QAAA,EAAK,IAAI,cAAe,CAAC;QAErC,IAAM,IAAI,GAAG;;;;4BACR,qBAAM,CAAA,MAAA,IAAI,CAAC,KAAK,EAAE,0CAAG,OAAO,EAAE,IAAI,CAAC,CAAA,EAAA;4BAApC,sBAAA,CAAC,SAAmC,CAAC;4BACpC,EAAE,KAAK,EAAE,EAAE,EAAkC,EAAA;;;aAAA,CAAC;QAEnD,OAAO,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC,CAAM,CAAC;AACZ,CAAC"}
1
+ {"version":3,"file":"compose.js","sourceRoot":"","sources":["../../source/SSR/compose.ts"],"names":[],"mappings":"AAaA,MAAM,UAAU,OAAO,CAIrB,GAAG,WAA+B;IAChC,OAAO,CAAC,OAAO,CAAC,EAAE;QACd,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,WAAW,CAAC;QAErC,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE,CACpB,CAAC,MAAM,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACpC,EAAE,KAAK,EAAE,EAAE,EAAkC,CAAC;QAEnD,OAAO,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC,CAAM,CAAC;AACZ,CAAC"}
package/dist/SSR/index.js CHANGED
@@ -1,7 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./compose"), exports);
5
- tslib_1.__exportStar(require("./middleware"), exports);
6
- tslib_1.__exportStar(require("./shim"), exports);
1
+ export * from './compose';
2
+ export * from './middleware';
3
+ export * from './shim';
7
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/SSR/index.ts"],"names":[],"mappings":";;;AAAA,oDAA0B;AAC1B,uDAA6B;AAC7B,iDAAuB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/SSR/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,QAAQ,CAAC"}
@@ -1,6 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./local"), exports);
5
- tslib_1.__exportStar(require("./remote"), exports);
1
+ export * from './local';
2
+ export * from './remote';
6
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/SSR/middleware/index.ts"],"names":[],"mappings":";;;AAAA,kDAAwB;AACxB,mDAAyB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/SSR/middleware/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC"}
@@ -1,122 +1,73 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.errorLogger = errorLogger;
4
- exports.router = router;
5
- exports.jwtVerifier = jwtVerifier;
6
- exports.cache = cache;
7
- var tslib_1 = require("tslib");
8
- var jsonwebtoken_1 = require("jsonwebtoken");
9
- var koajax_1 = require("koajax");
10
- var web_utility_1 = require("web-utility");
11
- function errorLogger(context, next) {
12
- return tslib_1.__awaiter(this, void 0, void 0, function () {
13
- var error_1, status_1;
14
- return tslib_1.__generator(this, function (_a) {
15
- switch (_a.label) {
16
- case 0:
17
- _a.trys.push([0, 2, , 3]);
18
- return [4 /*yield*/, next()];
19
- case 1: return [2 /*return*/, _a.sent()];
20
- case 2:
21
- error_1 = _a.sent();
22
- console.error(error_1);
23
- if (error_1 instanceof koajax_1.HTTPError) {
24
- status_1 = error_1.response.status;
25
- if (status_1 === 404)
26
- return [2 /*return*/, { notFound: true, props: {} }];
27
- }
28
- throw error_1;
29
- case 3: return [2 /*return*/];
30
- }
31
- });
32
- });
33
- }
34
- function router(context, next) {
35
- return tslib_1.__awaiter(this, void 0, void 0, function () {
36
- var options, resolvedUrl, params, query, locales;
37
- return tslib_1.__generator(this, function (_a) {
38
- switch (_a.label) {
39
- case 0: return [4 /*yield*/, next()];
40
- case 1:
41
- options = (_a.sent()) || {}, resolvedUrl = context.resolvedUrl, params = context.params, query = context.query, locales = context.locales;
42
- return [2 /*return*/, tslib_1.__assign(tslib_1.__assign({}, options), { props: tslib_1.__assign(tslib_1.__assign({}, ('props' in options ? options.props : {})), { route: JSON.parse(JSON.stringify({ resolvedUrl: resolvedUrl, params: params, query: query, locales: locales })) }) })];
43
- }
44
- });
45
- });
1
+ import { verify } from 'jsonwebtoken';
2
+ import { HTTPError } from 'koajax';
3
+ import { Day, Second } from 'web-utility';
4
+ export async function errorLogger(context, next) {
5
+ try {
6
+ return await next();
7
+ }
8
+ catch (error) {
9
+ console.error(error);
10
+ if (error instanceof HTTPError) {
11
+ const { status } = error.response;
12
+ if (status === 404)
13
+ return { notFound: true, props: {} };
14
+ }
15
+ throw error;
16
+ }
46
17
  }
47
- function jwtVerifier(tokenKey, secretKey, options) {
48
- var _this = this;
49
- if (tokenKey === void 0) { tokenKey = 'token'; }
50
- if (secretKey === void 0) { secretKey = 'JWT_SECRET'; }
51
- if (options === void 0) { options = {}; }
52
- return function (_a, next_1) { return tslib_1.__awaiter(_this, [_a, next_1], void 0, function (_b, next) {
53
- var token, jwtPayload, data;
54
- var _c = _b.req, url = _c.url, cookies = _c.cookies;
55
- return tslib_1.__generator(this, function (_d) {
56
- switch (_d.label) {
57
- case 0:
58
- token = cookies[tokenKey];
59
- try {
60
- jwtPayload = (0, jsonwebtoken_1.verify)(token, process.env[secretKey], options);
61
- }
62
- catch (error) {
63
- console.error(url, error);
64
- }
65
- return [4 /*yield*/, next()];
66
- case 1:
67
- data = _d.sent();
68
- if ('props' in data && jwtPayload)
69
- data.props['jwtPayload'] = jwtPayload;
70
- return [2 /*return*/, data];
71
- }
72
- });
73
- }); };
18
+ export async function router(context, next) {
19
+ const options = (await next()) || {}, { resolvedUrl, params, query, locales } = context;
20
+ return {
21
+ ...options,
22
+ props: {
23
+ ...('props' in options ? options.props : {}),
24
+ route: JSON.parse(JSON.stringify({ resolvedUrl, params, query, locales }))
25
+ }
26
+ };
74
27
  }
75
- var serverRenderCache = {};
76
- function cache(oneInterval, allInterval) {
77
- var _this = this;
78
- if (oneInterval === void 0) { oneInterval = 30 * web_utility_1.Second; }
79
- if (allInterval === void 0) { allInterval = web_utility_1.Day; }
80
- function cleanCache() {
81
- var e_1, _a;
28
+ export function jwtVerifier(tokenKey = 'token', secretKey = 'JWT_SECRET', options = {}) {
29
+ return async ({ req: { url, cookies } }, next) => {
30
+ const token = cookies[tokenKey] || '', secret = process.env[secretKey] || '';
31
+ let jwtPayload;
82
32
  try {
83
- for (var _b = tslib_1.__values(Object.entries(serverRenderCache)), _c = _b.next(); !_c.done; _c = _b.next()) {
84
- var _d = tslib_1.__read(_c.value, 2), URI = _d[0], expiredAt = _d[1].expiredAt;
85
- if (Date.now() - expiredAt > allInterval)
86
- delete serverRenderCache[URI];
87
- }
33
+ jwtPayload = verify(token, secret, options);
88
34
  }
89
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
90
- finally {
91
- try {
92
- if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
93
- }
94
- finally { if (e_1) throw e_1.error; }
35
+ catch (error) {
36
+ console.error(url, error);
95
37
  }
38
+ const data = await next();
39
+ if ('props' in data && jwtPayload)
40
+ data.props['jwtPayload'] = jwtPayload;
41
+ return data;
42
+ };
43
+ }
44
+ const serverRenderCache = {};
45
+ export function cache(oneInterval = 30 * Second, allInterval = Day) {
46
+ function cleanCache() {
47
+ for (const [URI, { expiredAt = 0 }] of Object.entries(serverRenderCache))
48
+ if (Date.now() - expiredAt > allInterval)
49
+ delete serverRenderCache[URI];
96
50
  }
97
- return (function (context, next) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
98
- var resolvedUrl, req, cache, noCache, title, data, _a, expiredAt;
99
- return tslib_1.__generator(this, function (_b) {
100
- resolvedUrl = context.resolvedUrl, req = context.req;
101
- cache = (serverRenderCache[resolvedUrl] || (serverRenderCache[resolvedUrl] = {})), noCache = req.headers['cache-control'] === 'no-cache', title = "[SSR cache] ".concat(resolvedUrl);
102
- data = cache.data, _a = cache.expiredAt, expiredAt = _a === void 0 ? 0 : _a;
103
- if ((!data || expiredAt < Date.now() || noCache) && !cache.buffer) {
104
- console.time(title);
105
- cache.buffer = next()
106
- .then(function (data) {
107
- cache.data = data;
108
- cache.expiredAt = Date.now() + oneInterval;
109
- console.log(cache);
110
- return data;
111
- })
112
- .finally(function () {
113
- delete cache.buffer;
114
- cleanCache();
115
- console.timeEnd(title);
116
- });
117
- }
118
- return [2 /*return*/, data || cache.buffer];
119
- });
120
- }); });
51
+ return (async (context, next) => {
52
+ const { resolvedUrl, req } = context;
53
+ const cache = (serverRenderCache[resolvedUrl] ||= {}), noCache = req.headers['cache-control'] === 'no-cache', title = `[SSR cache] ${resolvedUrl}`;
54
+ const { data, expiredAt = 0 } = cache;
55
+ if ((!data || expiredAt < Date.now() || noCache) && !cache.buffer) {
56
+ console.time(title);
57
+ cache.buffer = next()
58
+ .then(data => {
59
+ cache.data = data;
60
+ cache.expiredAt = Date.now() + oneInterval;
61
+ console.log(cache);
62
+ return data;
63
+ })
64
+ .finally(() => {
65
+ delete cache.buffer;
66
+ cleanCache();
67
+ console.timeEnd(title);
68
+ });
69
+ }
70
+ return data || cache.buffer;
71
+ });
121
72
  }
122
73
  //# sourceMappingURL=local.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"local.js","sourceRoot":"","sources":["../../../source/SSR/middleware/local.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"local.js","sourceRoot":"","sources":["../../../source/SSR/middleware/local.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,MAAM,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAGnC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAI1C,MAAM,CAAC,KAAK,UAAU,WAAW,CAI7B,OAAqC,EACrC,IAAgD;IAEhD,IAAI,CAAC;QACD,OAAO,MAAM,IAAI,EAAE,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAErB,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;YAC7B,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC;YAElC,IAAI,MAAM,KAAK,GAAG;gBAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAO,EAAE,CAAC;QAClE,CAAC;QACD,MAAM,KAAK,CAAC;IAChB,CAAC;AACL,CAAC;AASD,MAAM,CAAC,KAAK,UAAU,MAAM,CACxB,OAAqC,EACrC,IAAgD;IAEhD,MAAM,OAAO,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,IAAK,EAAmC,EAClE,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAEtD,OAAO;QACH,GAAG,OAAO;QACV,KAAK,EAAE;YACH,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,KAAK,EAAE,IAAI,CAAC,KAAK,CACb,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAC1D;SACJ;KAC2C,CAAC;AACrD,CAAC;AAMD,MAAM,UAAU,WAAW,CACvB,QAAQ,GAAG,OAAO,EAClB,SAAS,GAAG,YAAY,EACxB,UAAyB,EAAE;IAE3B,OAAO,KAAK,EAAE,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;QAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,EACjC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAC1C,IAAI,UAAwC,CAAC;QAC7C,IAAI,CAAC;YACD,UAAU,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAmB,CAAC;QAClE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9B,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,IAAI,EAAE,CAAC;QAE1B,IAAI,OAAO,IAAI,IAAI,IAAI,UAAU;YAC5B,IAAI,CAAC,KAAyB,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC;QAE/D,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC;AACN,CAAC;AAQD,MAAM,iBAAiB,GAA+B,EAAE,CAAC;AAEzD,MAAM,UAAU,KAAK,CACjB,WAAW,GAAG,EAAE,GAAG,MAAM,EACzB,WAAW,GAAG,GAAG;IAEjB,SAAS,UAAU;QACf,KAAK,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,GAAG,CAAC,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CACjD,iBAAiB,CACpB;YACG,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,WAAW;gBACpC,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;IAC1C,CAAC;IAED,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;QAC5B,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;QACrC,MAAM,KAAK,GAAG,CAAC,iBAAiB,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,EACjD,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,KAAK,UAAU,EACrD,KAAK,GAAG,eAAe,WAAW,EAAE,CAAC;QACzC,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC;QAEtC,IAAI,CAAC,CAAC,IAAI,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAChE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEpB,KAAK,CAAC,MAAM,GAAG,IAAI,EAAE;iBAChB,IAAI,CAAC,IAAI,CAAC,EAAE;gBACT,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;gBAClB,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC;gBAE3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAEnB,OAAO,IAAI,CAAC;YAChB,CAAC,CAAC;iBACD,OAAO,CAAC,GAAG,EAAE;gBACV,OAAO,KAAK,CAAC,MAAM,CAAC;gBACpB,UAAU,EAAE,CAAC;gBAEb,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;QACX,CAAC;QACD,OAAO,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC;IAChC,CAAC,CAAqB,CAAC;AAC3B,CAAC"}
@@ -14,6 +14,8 @@ export interface OAuth2Props<T extends DataObject> {
14
14
  token: string;
15
15
  user: T;
16
16
  }
17
+ export declare const RemoteDomain: string | undefined;
18
+ export declare const CurrentHost: string;
17
19
  export declare function oauth2Signer<I extends DataObject, O extends DataObject = {}>({ signInURL, accessToken, userProfile, tokenKey }: OAuth2Option): Middleware<I, O>;
18
20
  export type GitHubAPIOperation = 'admin' | 'write' | 'read' | 'delete';
19
21
  export type GitHubOAuthScope = `repo${'' | ':status' | '_deployment' | ':invite'}` | 'public_repo' | 'security_events' | `${Exclude<GitHubAPIOperation, 'delete'>}:${'repo_hook' | 'org' | 'public_key' | 'gpg_key'}` | 'admin:org_hook' | 'gist' | 'notifications' | `user${'' | ':email' | ':follow'}` | `read:${'user' | 'project'}` | 'project' | 'delete_repo' | `${Exclude<GitHubAPIOperation, 'admin'>}:packages` | 'codespace' | 'workflow';
@@ -1,114 +1,76 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.oauth2Signer = oauth2Signer;
4
- exports.githubOAuth2 = githubOAuth2;
5
- var tslib_1 = require("tslib");
6
- var web_utility_1 = require("web-utility");
7
- var DOMAIN = process.env.VERCEL_PROJECT_PRODUCTION_URL;
8
- var Host = DOMAIN ? "https://".concat(DOMAIN) : 'http://localhost:3000';
9
- function oauth2Signer(_a) {
10
- var _this = this;
11
- var signInURL = _a.signInURL, accessToken = _a.accessToken, userProfile = _a.userProfile, _b = _a.tokenKey, tokenKey = _b === void 0 ? 'token' : _b;
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 _c = _b.req, url = _c.url, headers = _c.headers, cookies = _c.cookies, query = _b.query, res = _b.res;
15
- return tslib_1.__generator(this, function (_d) {
16
- switch (_d.label) {
17
- case 0:
18
- token = cookies[tokenKey] || query[tokenKey];
19
- pageURL = new URL(url || '/', headers['origin'] || Host);
20
- if (!query.code) return [3 /*break*/, 2];
21
- return [4 /*yield*/, accessToken(query)];
22
- case 1:
23
- token_1 = _d.sent(), searchParams = pageURL.searchParams;
24
- try {
25
- res.setHeader('Set-Cookie', "".concat(tokenKey, "=").concat(token_1, "; Path=/"));
26
- }
27
- catch (_e) {
28
- searchParams.set(tokenKey, token_1);
29
- }
30
- searchParams.delete('code');
31
- if (searchParams.get('state') === '')
32
- searchParams.delete('state');
33
- return [2 /*return*/, {
34
- redirect: { destination: pageURL + '', permanent: false },
35
- props: {}
36
- }];
37
- case 2:
38
- if (!token) return [3 /*break*/, 5];
39
- return [4 /*yield*/, (userProfile === null || userProfile === void 0 ? void 0 : userProfile(token + ''))];
40
- case 3:
41
- user = _d.sent();
42
- return [4 /*yield*/, next()];
43
- case 4:
44
- data = _d.sent();
45
- props = 'props' in data ? tslib_1.__assign(tslib_1.__assign({}, data.props), { token: token, user: user }) : {};
46
- return [2 /*return*/, tslib_1.__assign(tslib_1.__assign({}, data), { props: props })];
47
- case 5: return [2 /*return*/, {
48
- redirect: {
49
- destination: signInURL(pageURL + ''),
50
- permanent: false
51
- },
52
- props: {}
53
- }];
1
+ import { buildURLData } from 'web-utility';
2
+ const { NODE_ENV, VERCEL_ENV = NODE_ENV, VERCEL_URL, VERCEL_PROJECT_PRODUCTION_URL } = process.env;
3
+ export const RemoteDomain = VERCEL_ENV === 'production' ? VERCEL_PROJECT_PRODUCTION_URL : VERCEL_URL;
4
+ export const CurrentHost = RemoteDomain
5
+ ? `https://${RemoteDomain}`
6
+ : 'http://localhost:3000';
7
+ export function oauth2Signer({ signInURL, accessToken, userProfile, tokenKey = 'token' }) {
8
+ return async ({ req: { url, headers, cookies }, query, res }, next) => {
9
+ const token = cookies[tokenKey] || query[tokenKey];
10
+ const pageURL = new URL(url || '/', headers['origin'] || CurrentHost);
11
+ if (query.code) {
12
+ const token = await accessToken(query), { searchParams } = pageURL;
13
+ try {
14
+ res.setHeader('Set-Cookie', `${tokenKey}=${token}; Path=/`);
54
15
  }
55
- });
56
- }); };
16
+ catch {
17
+ searchParams.set(tokenKey, token);
18
+ }
19
+ searchParams.delete('code');
20
+ if (searchParams.get('state') === '')
21
+ searchParams.delete('state');
22
+ return {
23
+ redirect: { destination: pageURL + '', permanent: false },
24
+ props: {}
25
+ };
26
+ }
27
+ if (token) {
28
+ const user = await userProfile?.(token + ''), data = await next();
29
+ const props = 'props' in data ? { ...data.props, token, user } : {};
30
+ return { ...data, props };
31
+ }
32
+ return {
33
+ redirect: {
34
+ destination: signInURL(pageURL + ''),
35
+ permanent: false
36
+ },
37
+ props: {}
38
+ };
39
+ };
57
40
  }
58
- function githubOAuth2(_a) {
59
- var _this = this;
60
- var _b = _a.rootBaseURL, rootBaseURL = _b === void 0 ? 'https://github.com' : _b, _c = _a.apiBaseURL, apiBaseURL = _c === void 0 ? 'https://api.github.com' : _c, client_id = _a.client_id, client_secret = _a.client_secret, scopes = _a.scopes, _d = _a.allow_signup, allow_signup = _d === void 0 ? true : _d;
41
+ export function githubOAuth2({ rootBaseURL = 'https://github.com', apiBaseURL = 'https://api.github.com', client_id, client_secret, scopes, allow_signup = true }) {
61
42
  return oauth2Signer({
62
- signInURL: function (redirect_uri) {
63
- return "https://github.com/login/oauth/authorize?".concat((0, web_utility_1.buildURLData)({
64
- client_id: client_id,
65
- scope: scopes === null || scopes === void 0 ? void 0 : scopes.join(' '),
66
- allow_signup: allow_signup,
67
- redirect_uri: redirect_uri
68
- }));
69
- },
70
- accessToken: function (_a) { return tslib_1.__awaiter(_this, [_a], void 0, function (_b) {
71
- var response, _c, error, access_token;
72
- var code = _b.code;
73
- return tslib_1.__generator(this, function (_d) {
74
- switch (_d.label) {
75
- case 0: return [4 /*yield*/, fetch(new URL('login/oauth/access_token', rootBaseURL), {
76
- method: 'POST',
77
- headers: {
78
- Accept: 'application/json',
79
- 'Content-Type': 'application/json'
80
- },
81
- body: JSON.stringify({ client_id: client_id, client_secret: client_secret, code: code })
82
- })];
83
- case 1:
84
- response = _d.sent();
85
- return [4 /*yield*/, response.json()];
86
- case 2:
87
- _c = _d.sent(), error = _c.error, access_token = _c.access_token;
88
- if (error)
89
- throw new URIError(error);
90
- return [2 /*return*/, access_token];
91
- }
43
+ signInURL: redirect_uri => `https://github.com/login/oauth/authorize?${buildURLData({
44
+ client_id,
45
+ scope: scopes?.join(' '),
46
+ allow_signup,
47
+ redirect_uri
48
+ })}`,
49
+ accessToken: async ({ code }) => {
50
+ const response = await fetch(new URL('login/oauth/access_token', rootBaseURL), {
51
+ method: 'POST',
52
+ headers: {
53
+ Accept: 'application/json',
54
+ 'Content-Type': 'application/json'
55
+ },
56
+ body: JSON.stringify({ client_id, client_secret, code })
92
57
  });
93
- }); },
94
- userProfile: function (token) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
95
- var response;
96
- return tslib_1.__generator(this, function (_a) {
97
- switch (_a.label) {
98
- case 0: return [4 /*yield*/, fetch(new URL('user', apiBaseURL), {
99
- headers: {
100
- Authorization: "Bearer ".concat(token),
101
- Accept: 'application/json'
102
- }
103
- })];
104
- case 1:
105
- response = _a.sent();
106
- if (response.status < 300)
107
- return [2 /*return*/, response.json()];
108
- throw new URIError('Invalid GitHub access token');
58
+ const { error, access_token } = await response.json();
59
+ if (error)
60
+ throw new URIError(error);
61
+ return access_token;
62
+ },
63
+ userProfile: async (token) => {
64
+ const response = await fetch(new URL('user', apiBaseURL), {
65
+ headers: {
66
+ Authorization: `Bearer ${token}`,
67
+ Accept: 'application/json'
109
68
  }
110
69
  });
111
- }); }
70
+ if (response.status < 300)
71
+ return response.json();
72
+ throw new URIError('Invalid GitHub access token');
73
+ }
112
74
  });
113
75
  }
114
76
  //# sourceMappingURL=remote.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"remote.js","sourceRoot":"","sources":["../../../source/SSR/middleware/remote.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remote.js","sourceRoot":"","sources":["../../../source/SSR/middleware/remote.ts"],"names":[],"mappings":"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"}
package/dist/SSR/shim.js CHANGED
@@ -1,95 +1,53 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.withMiddleware = void 0;
4
- exports.patchHeaders = patchHeaders;
5
- var tslib_1 = require("tslib");
6
1
  /**
7
2
  * @see {@link https://www.propelauth.com/post/getting-url-in-next-server-components}
8
3
  */
9
- function patchHeaders(request) {
10
- var _a;
11
- 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);
12
- var locales = ((_a = domainLocale === null || domainLocale === void 0 ? void 0 : domainLocale.locales) === null || _a === void 0 ? void 0 : _a.join(',')) || locale;
4
+ export function patchHeaders(request) {
5
+ const resolvedUrl = request.nextUrl + '', { locale, defaultLocale = '', domainLocale } = request.nextUrl, headers = new Headers(request.headers);
6
+ const locales = domainLocale?.locales?.join(',') || locale;
13
7
  headers.set('x-resolved-url', resolvedUrl);
14
8
  headers.set('x-locale', locale);
15
9
  headers.set('x-locales', locales);
16
10
  headers.set('x-default-locale', defaultLocale);
17
11
  return headers;
18
12
  }
19
- var withMiddleware = function (getServerSideProps, serverComponent) {
20
- return function (_a) { return tslib_1.__awaiter(void 0, [_a], void 0, function (_b) {
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;
23
- var params = _b.params, searchParams = _b.searchParams;
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')); })];
27
- case 1:
28
- _c = _f.sent(), headers = _c.headers, cookies = _c.cookies, draftMode = _c.draftMode;
29
- return [4 /*yield*/, params];
30
- case 2:
31
- resolvedParams = _f.sent();
32
- return [4 /*yield*/, searchParams];
33
- case 3:
34
- resolvedSearchParams = _f.sent();
35
- return [4 /*yield*/, headers()];
36
- case 4:
37
- header = _f.sent();
38
- return [4 /*yield*/, cookies()];
39
- case 5:
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') || '';
45
- req = {
46
- url: url,
47
- headers: Object.fromEntries(tslib_1.__spreadArray([], tslib_1.__read(header), false)),
48
- cookies: Object.fromEntries(cookie.getAll().map(function (_a) {
49
- var name = _a.name, value = _a.value;
50
- return [name, value];
51
- }))
52
- };
53
- context = {
54
- req: req,
55
- res: {},
56
- params: resolvedParams,
57
- query: resolvedSearchParams,
58
- preview: false,
59
- previewData: {},
60
- draftMode: isEnabled,
61
- resolvedUrl: url,
62
- locale: locale,
63
- locales: locales,
64
- defaultLocale: defaultLocale
65
- };
66
- return [4 /*yield*/, getServerSideProps(context)];
67
- case 7:
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();
88
- return [2 /*return*/, serverComponent(tslib_1.__assign({ params: params, searchParams: searchParams }, props))];
89
- case 11: return [2 /*return*/];
90
- }
91
- });
92
- }); };
13
+ export const withMiddleware = (getServerSideProps, serverComponent) => async ({ params, searchParams }) => {
14
+ const { headers, cookies, draftMode } = await import('next/headers');
15
+ const resolvedParams = await params, resolvedSearchParams = await searchParams, header = await headers(), cookie = await cookies(), { isEnabled } = await draftMode();
16
+ const url = header.get('x-resolved-url') || '', locale = header.get('x-locale') || '', locales = header.get('x-locales')?.split(',') || [], defaultLocale = header.get('x-default-locale') || '';
17
+ const req = {
18
+ url,
19
+ headers: Object.fromEntries([...header]),
20
+ cookies: Object.fromEntries(cookie.getAll().map(({ name, value }) => [name, value]))
21
+ };
22
+ const context = {
23
+ req,
24
+ res: {},
25
+ params: resolvedParams,
26
+ query: resolvedSearchParams,
27
+ preview: false,
28
+ previewData: {},
29
+ draftMode: isEnabled,
30
+ resolvedUrl: url,
31
+ locale,
32
+ locales,
33
+ defaultLocale
34
+ };
35
+ const result = await getServerSideProps(context);
36
+ if ('redirect' in result) {
37
+ const { redirect, permanentRedirect } = await import('next/navigation');
38
+ const isPermanent = 'statusCode' in result.redirect
39
+ ? result.redirect.statusCode === 308
40
+ : 'permanent' in result.redirect &&
41
+ result.redirect.permanent;
42
+ const { destination } = result.redirect;
43
+ if (isPermanent)
44
+ permanentRedirect(destination);
45
+ else
46
+ redirect(destination);
47
+ }
48
+ if ('props' in result) {
49
+ const props = await result.props;
50
+ return serverComponent({ params, searchParams, ...props });
51
+ }
93
52
  };
94
- exports.withMiddleware = withMiddleware;
95
53
  //# sourceMappingURL=shim.js.map
@@ -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/dist/index.js CHANGED
@@ -1,6 +1,3 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- var tslib_1 = require("tslib");
4
- tslib_1.__exportStar(require("./API"), exports);
5
- tslib_1.__exportStar(require("./SSR"), exports);
1
+ export * from './API';
2
+ export * from './SSR';
6
3
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":";;;AAAA,gDAAsB;AACtB,gDAAsB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../source/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,OAAO,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "next-ssr-middleware",
3
- "version": "1.1.1",
3
+ "version": "1.1.3",
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",
@@ -26,31 +26,26 @@
26
26
  "@koa/router": "^15.7.0",
27
27
  "@types/jsonwebtoken": "^9.0.10",
28
28
  "@types/koa": "^3.0.3",
29
- "@types/react": "^19.2.17",
29
+ "@types/react": "^19.3.0",
30
30
  "jsonwebtoken": "^9.0.3",
31
31
  "koa": "^3.2.1",
32
32
  "tslib": "^2.8.1",
33
33
  "web-utility": "^4.7.2"
34
34
  },
35
35
  "peerDependencies": {
36
- "next": ">=15.5.18",
36
+ "next": ">=15.5.24",
37
37
  "react": ">=18"
38
38
  },
39
39
  "devDependencies": {
40
- "@types/node": "^24.13.3",
40
+ "@types/node": "^24.13.5",
41
41
  "husky": "^9.1.7",
42
- "koajax": "^3.3.0",
43
- "lint-staged": "^17.0.8",
44
- "next": "^16.2.10",
42
+ "koajax": "^3.3.1",
43
+ "lint-staged": "^17.5.1",
44
+ "next": "^16.3.5",
45
45
  "open-cli": "^9.0.0",
46
- "prettier": "^3.9.5",
46
+ "prettier": "^3.9.7",
47
47
  "typedoc": "^0.28.20",
48
- "typescript": "~5.9.3"
49
- },
50
- "pnpm": {
51
- "onlyBuiltDependencies": [
52
- "sharp"
53
- ]
48
+ "typescript": "~6.0.3"
54
49
  },
55
50
  "prettier": {
56
51
  "singleQuote": true,
@@ -62,17 +62,18 @@ export function jwtVerifier<I extends DataObject, O extends DataObject = {}>(
62
62
  options: VerifyOptions = {}
63
63
  ): Middleware<I, O & JWTProps> {
64
64
  return async ({ req: { url, cookies } }, next) => {
65
- const token = cookies[tokenKey];
66
-
65
+ const token = cookies[tokenKey] || '',
66
+ secret = process.env[secretKey] || '';
67
+ let jwtPayload: (JwtPayload & I) | undefined;
67
68
  try {
68
- var jwtPayload = verify(token, process.env[secretKey], options);
69
+ jwtPayload = verify(token, secret, options) as JwtPayload & I;
69
70
  } catch (error) {
70
71
  console.error(url, error);
71
72
  }
72
73
  const data = await next();
73
74
 
74
75
  if ('props' in data && jwtPayload)
75
- data.props['jwtPayload'] = jwtPayload;
76
+ (data.props as O & JWTProps<I>)['jwtPayload'] = jwtPayload;
76
77
 
77
78
  return data;
78
79
  };
@@ -91,7 +92,9 @@ export function cache<I extends DataObject, O extends DataObject = {}>(
91
92
  allInterval = Day
92
93
  ) {
93
94
  function cleanCache() {
94
- for (const [URI, { expiredAt }] of Object.entries(serverRenderCache))
95
+ for (const [URI, { expiredAt = 0 }] of Object.entries(
96
+ serverRenderCache
97
+ ))
95
98
  if (Date.now() - expiredAt > allInterval)
96
99
  delete serverRenderCache[URI];
97
100
  }
@@ -20,8 +20,19 @@ export interface OAuth2Props<T extends DataObject> {
20
20
  user: T;
21
21
  }
22
22
 
23
- const DOMAIN = process.env.VERCEL_PROJECT_PRODUCTION_URL;
24
- const Host = DOMAIN ? `https://${DOMAIN}` : 'http://localhost:3000';
23
+ const {
24
+ NODE_ENV,
25
+ VERCEL_ENV = NODE_ENV,
26
+ VERCEL_URL,
27
+ VERCEL_PROJECT_PRODUCTION_URL
28
+ } = process.env;
29
+
30
+ export const RemoteDomain =
31
+ VERCEL_ENV === 'production' ? VERCEL_PROJECT_PRODUCTION_URL : VERCEL_URL;
32
+
33
+ export const CurrentHost = RemoteDomain
34
+ ? `https://${RemoteDomain}`
35
+ : 'http://localhost:3000';
25
36
 
26
37
  export function oauth2Signer<I extends DataObject, O extends DataObject = {}>({
27
38
  signInURL,
@@ -31,7 +42,7 @@ export function oauth2Signer<I extends DataObject, O extends DataObject = {}>({
31
42
  }: OAuth2Option): Middleware<I, O> {
32
43
  return async ({ req: { url, headers, cookies }, query, res }, next) => {
33
44
  const token = cookies[tokenKey] || query[tokenKey];
34
- const pageURL = new URL(url || '/', headers['origin'] || Host);
45
+ const pageURL = new URL(url || '/', headers['origin'] || CurrentHost);
35
46
 
36
47
  if (query.code) {
37
48
  const token = await accessToken(query as OAuth2Ticket),
@@ -89,7 +100,8 @@ export type GitHubOAuthScope =
89
100
  * @see {@link https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps#web-application-flow}
90
101
  */
91
102
  export interface GitHubOAuthOption
92
- extends Partial<Record<'rootBaseURL' | 'apiBaseURL' | 'login', string>>,
103
+ extends
104
+ Partial<Record<'rootBaseURL' | 'apiBaseURL' | 'login', string>>,
93
105
  Record<'client_id' | 'client_secret', string> {
94
106
  scopes?: GitHubOAuthScope[];
95
107
  allow_signup?: boolean;
package/tsconfig.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "compilerOptions": {
3
3
  "esModuleInterop": true,
4
- "downlevelIteration": true,
5
4
  "importHelpers": true,
6
5
  "lib": ["ESNext", "DOM", "DOM.Iterable"],
7
6
  "skipLibCheck": true,
8
7
  "declaration": true,
9
8
  "sourceMap": true,
9
+ "rootDir": "source",
10
10
  "outDir": "dist"
11
11
  },
12
12
  "include": ["source/*.ts"],