next-ssr-middleware 0.6.2 → 0.8.5
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 +21 -0
- package/dist/compose.js +1 -2
- package/dist/compose.js.map +1 -1
- package/dist/middleware/index.d.ts +2 -0
- package/dist/middleware/index.js +6 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/{middleware.d.ts → middleware/local.d.ts} +1 -2
- package/dist/{middleware.js → middleware/local.js} +40 -39
- package/dist/middleware/local.js.map +1 -0
- package/dist/middleware/remote.d.ts +27 -0
- package/dist/middleware/remote.js +116 -0
- package/dist/middleware/remote.js.map +1 -0
- package/package.json +14 -14
- package/source/middleware/index.ts +2 -0
- package/source/{middleware.ts → middleware/local.ts} +9 -9
- package/source/middleware/remote.ts +144 -0
- package/.vscode/extensions.json +0 -14
- package/dist/middleware.js.map +0 -1
package/ReadMe.md
CHANGED
|
@@ -7,6 +7,23 @@
|
|
|
7
7
|
|
|
8
8
|
[][5]
|
|
9
9
|
|
|
10
|
+
## Versions
|
|
11
|
+
|
|
12
|
+
| SemVer | status | MobX | [MobX i18n][6] |
|
|
13
|
+
| :-----: | :----------: | :---------: | :------------: |
|
|
14
|
+
| `>=0.7` | ✅developing | `>=6.11` | `>=0.5` |
|
|
15
|
+
| `<0.7` | ❌deprecated | `>=4 <6.11` | `<0.5` |
|
|
16
|
+
|
|
17
|
+
## Middlewares
|
|
18
|
+
|
|
19
|
+
1. Router
|
|
20
|
+
2. Error logger
|
|
21
|
+
3. JWT verifier
|
|
22
|
+
4. Props cache
|
|
23
|
+
5. i18n loader
|
|
24
|
+
6. OAuth 2 signer (with common providers)
|
|
25
|
+
1. GitHub
|
|
26
|
+
|
|
10
27
|
## Usage
|
|
11
28
|
|
|
12
29
|
### `pages/user/[id].tsx`
|
|
@@ -60,9 +77,13 @@ export default function UserDetailPage({
|
|
|
60
77
|
## Cases
|
|
61
78
|
|
|
62
79
|
1. https://github.com/idea2app/Next-Bootstrap-ts
|
|
80
|
+
2. https://github.com/kaiyuanshe/kaiyuanshe.github.io
|
|
81
|
+
3. https://github.com/kaiyuanshe/OpenHackathon-Web
|
|
82
|
+
4. https://github.com/kaiyuanshe/OSS-toolbox
|
|
63
83
|
|
|
64
84
|
[1]: https://koajs.com/
|
|
65
85
|
[2]: https://nextjs.org/
|
|
66
86
|
[3]: https://libraries.io/npm/next-ssr-middleware
|
|
67
87
|
[4]: https://github.com/idea2app/Next-SSR-middleware/actions/workflows/main.yml
|
|
68
88
|
[5]: https://nodei.co/npm/next-ssr-middleware/
|
|
89
|
+
[6]: https://github.com/idea2app/MobX-i18n
|
package/dist/compose.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.compose =
|
|
3
|
+
exports.compose = compose;
|
|
4
4
|
var tslib_1 = require("tslib");
|
|
5
5
|
function compose() {
|
|
6
6
|
var _this = this;
|
|
@@ -23,5 +23,4 @@ function compose() {
|
|
|
23
23
|
return first(context, next);
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
|
-
exports.compose = compose;
|
|
27
26
|
//# sourceMappingURL=compose.js.map
|
package/dist/compose.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compose.js","sourceRoot":"","sources":["../source/compose.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compose.js","sourceRoot":"","sources":["../source/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;QACJ,IAAA,KAAK,GAAa,WAAW,GAAxB,EAAK,IAAI,GAAI,WAAW,SAAf,CAAgB;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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../source/middleware/index.ts"],"names":[],"mappings":";;;AAAA,kDAAwB;AACxB,mDAAyB"}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import { JwtPayload, VerifyOptions } from 'jsonwebtoken';
|
|
3
2
|
import { TranslationModel } from 'mobx-i18n';
|
|
4
3
|
import { GetServerSidePropsContext, GetServerSidePropsResult } from 'next';
|
|
5
4
|
import { ParsedUrlQuery } from 'querystring';
|
|
6
|
-
import { DataObject, Middleware } from '
|
|
5
|
+
import { DataObject, Middleware } from '../compose';
|
|
7
6
|
export declare function errorLogger<I extends DataObject, O extends DataObject = {}>(context: GetServerSidePropsContext<I>, next: () => Promise<GetServerSidePropsResult<O>>): Promise<GetServerSidePropsResult<O>>;
|
|
8
7
|
export interface RouteProps<T extends ParsedUrlQuery = {}> {
|
|
9
8
|
route: Pick<GetServerSidePropsContext<T>, 'resolvedUrl' | 'params' | 'query' | 'locales'>;
|
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.errorLogger = errorLogger;
|
|
4
|
+
exports.router = router;
|
|
5
|
+
exports.jwtVerifier = jwtVerifier;
|
|
6
|
+
exports.cache = cache;
|
|
7
|
+
exports.translator = translator;
|
|
4
8
|
var tslib_1 = require("tslib");
|
|
5
9
|
var jsonwebtoken_1 = require("jsonwebtoken");
|
|
10
|
+
var koajax_1 = require("koajax");
|
|
6
11
|
var mobx_i18n_1 = require("mobx-i18n");
|
|
7
12
|
var web_utility_1 = require("web-utility");
|
|
8
13
|
function errorLogger(context, next) {
|
|
@@ -17,16 +22,17 @@ function errorLogger(context, next) {
|
|
|
17
22
|
case 2:
|
|
18
23
|
error_1 = _a.sent();
|
|
19
24
|
console.error(error_1);
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
25
|
+
if (error_1 instanceof koajax_1.HTTPError) {
|
|
26
|
+
status_1 = error_1.response.status;
|
|
27
|
+
if (status_1 === 404)
|
|
28
|
+
return [2 /*return*/, { notFound: true, props: {} }];
|
|
29
|
+
}
|
|
23
30
|
throw error_1;
|
|
24
31
|
case 3: return [2 /*return*/];
|
|
25
32
|
}
|
|
26
33
|
});
|
|
27
34
|
});
|
|
28
35
|
}
|
|
29
|
-
exports.errorLogger = errorLogger;
|
|
30
36
|
function router(context, next) {
|
|
31
37
|
return tslib_1.__awaiter(this, void 0, void 0, function () {
|
|
32
38
|
var options, resolvedUrl, params, query, locales;
|
|
@@ -40,38 +46,34 @@ function router(context, next) {
|
|
|
40
46
|
});
|
|
41
47
|
});
|
|
42
48
|
}
|
|
43
|
-
exports.router = router;
|
|
44
49
|
function jwtVerifier(tokenKey, secretKey, options) {
|
|
45
50
|
var _this = this;
|
|
46
51
|
if (tokenKey === void 0) { tokenKey = 'token'; }
|
|
47
52
|
if (secretKey === void 0) { secretKey = 'JWT_SECRET'; }
|
|
48
53
|
if (options === void 0) { options = {}; }
|
|
49
|
-
return function (_a, next) {
|
|
50
|
-
var
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
});
|
|
54
|
+
return function (_a, next_1) { return tslib_1.__awaiter(_this, [_a, next_1], void 0, function (_b, next) {
|
|
55
|
+
var token, jwtPayload, data;
|
|
56
|
+
var _c = _b.req, url = _c.url, cookies = _c.cookies;
|
|
57
|
+
return tslib_1.__generator(this, function (_d) {
|
|
58
|
+
switch (_d.label) {
|
|
59
|
+
case 0:
|
|
60
|
+
token = cookies[tokenKey];
|
|
61
|
+
try {
|
|
62
|
+
jwtPayload = (0, jsonwebtoken_1.verify)(token, process.env[secretKey], options);
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
console.error(url, error);
|
|
66
|
+
}
|
|
67
|
+
return [4 /*yield*/, next()];
|
|
68
|
+
case 1:
|
|
69
|
+
data = _d.sent();
|
|
70
|
+
if ('props' in data && jwtPayload)
|
|
71
|
+
data.props['jwtPayload'] = jwtPayload;
|
|
72
|
+
return [2 /*return*/, data];
|
|
73
|
+
}
|
|
71
74
|
});
|
|
72
|
-
};
|
|
75
|
+
}); };
|
|
73
76
|
}
|
|
74
|
-
exports.jwtVerifier = jwtVerifier;
|
|
75
77
|
var serverRenderCache = {};
|
|
76
78
|
function cache(oneInterval, allInterval) {
|
|
77
79
|
var _this = this;
|
|
@@ -109,22 +111,21 @@ function cache(oneInterval, allInterval) {
|
|
|
109
111
|
});
|
|
110
112
|
}); });
|
|
111
113
|
}
|
|
112
|
-
exports.cache = cache;
|
|
113
114
|
function translator(i18n) {
|
|
114
115
|
var _this = this;
|
|
115
|
-
return function (
|
|
116
|
-
var
|
|
117
|
-
|
|
118
|
-
|
|
116
|
+
return function (_a, next_1) { return tslib_1.__awaiter(_this, [_a, next_1], void 0, function (_b, next) {
|
|
117
|
+
var _c, language, languages;
|
|
118
|
+
var _d = _b.req, headers = _d.headers, cookies = _d.cookies;
|
|
119
|
+
return tslib_1.__generator(this, function (_e) {
|
|
120
|
+
switch (_e.label) {
|
|
119
121
|
case 0:
|
|
120
|
-
|
|
122
|
+
_c = cookies.language, language = _c === void 0 ? '' : _c, languages = (0, mobx_i18n_1.parseLanguageHeader)(headers['accept-language'] || '');
|
|
121
123
|
return [4 /*yield*/, i18n.loadLanguages(tslib_1.__spreadArray([language], languages, true).filter(Boolean))];
|
|
122
124
|
case 1:
|
|
123
|
-
|
|
125
|
+
_e.sent();
|
|
124
126
|
return [2 /*return*/, next()];
|
|
125
127
|
}
|
|
126
128
|
});
|
|
127
129
|
}); };
|
|
128
130
|
}
|
|
129
|
-
|
|
130
|
-
//# sourceMappingURL=middleware.js.map
|
|
131
|
+
//# sourceMappingURL=local.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"local.js","sourceRoot":"","sources":["../../source/middleware/local.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { DataObject, Middleware } from '../compose';
|
|
2
|
+
export type OAuth2Ticket = {
|
|
3
|
+
code: string;
|
|
4
|
+
state?: string;
|
|
5
|
+
[key: string]: string;
|
|
6
|
+
};
|
|
7
|
+
export interface OAuth2Option {
|
|
8
|
+
signInURL: (pageURL: string) => string;
|
|
9
|
+
accessToken: (ticket: OAuth2Ticket) => Promise<string>;
|
|
10
|
+
userProfile: (token: string) => Promise<DataObject>;
|
|
11
|
+
tokenKey?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface OAuth2Props<T extends DataObject> {
|
|
14
|
+
token: string;
|
|
15
|
+
user: T;
|
|
16
|
+
}
|
|
17
|
+
export declare function oauth2Signer<I extends DataObject, O extends DataObject = {}>({ signInURL, accessToken, userProfile, tokenKey }: OAuth2Option): Middleware<I, O>;
|
|
18
|
+
export type GitHubAPIOperation = 'admin' | 'write' | 'read' | 'delete';
|
|
19
|
+
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';
|
|
20
|
+
/**
|
|
21
|
+
* @see {@link https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps#web-application-flow}
|
|
22
|
+
*/
|
|
23
|
+
export interface GitHubOAuthOption extends Partial<Record<'rootBaseURL' | 'apiBaseURL' | 'login', string>>, Record<'client_id' | 'client_secret', string> {
|
|
24
|
+
scopes?: GitHubOAuthScope[];
|
|
25
|
+
allow_signup?: boolean;
|
|
26
|
+
}
|
|
27
|
+
export declare function githubOAuth2<I extends DataObject, O extends DataObject = {}>({ rootBaseURL, apiBaseURL, client_id, client_secret, scopes, allow_signup }: GitHubOAuthOption): Middleware<I, O>;
|
|
@@ -0,0 +1,116 @@
|
|
|
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 VERCEL_URL = process.env.VERCEL_URL;
|
|
8
|
+
var Host = VERCEL_URL ? "https://".concat(VERCEL_URL) : 'http://127.0.0.1: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, 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) {
|
|
17
|
+
case 0:
|
|
18
|
+
token = cookies[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 = _e.sent();
|
|
24
|
+
res.setHeader('Set-Cookie', "token=".concat(token_1, "; Path=/"));
|
|
25
|
+
return [2 /*return*/, {
|
|
26
|
+
redirect: {
|
|
27
|
+
destination: pageURL.split('?')[0],
|
|
28
|
+
permanent: false
|
|
29
|
+
},
|
|
30
|
+
props: {}
|
|
31
|
+
}];
|
|
32
|
+
case 2:
|
|
33
|
+
if (!token) return [3 /*break*/, 7];
|
|
34
|
+
_e.label = 3;
|
|
35
|
+
case 3:
|
|
36
|
+
_e.trys.push([3, 6, , 7]);
|
|
37
|
+
return [4 /*yield*/, userProfile(token)];
|
|
38
|
+
case 4:
|
|
39
|
+
user = _e.sent();
|
|
40
|
+
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 }) : {};
|
|
45
|
+
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*/, {
|
|
50
|
+
redirect: {
|
|
51
|
+
destination: signInURL(pageURL + ''),
|
|
52
|
+
permanent: false
|
|
53
|
+
},
|
|
54
|
+
props: {}
|
|
55
|
+
}];
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}); };
|
|
59
|
+
}
|
|
60
|
+
function githubOAuth2(_a) {
|
|
61
|
+
var _this = this;
|
|
62
|
+
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;
|
|
63
|
+
return oauth2Signer({
|
|
64
|
+
signInURL: function (redirect_uri) {
|
|
65
|
+
return "https://github.com/login/oauth/authorize?".concat((0, web_utility_1.buildURLData)({
|
|
66
|
+
client_id: client_id,
|
|
67
|
+
scope: scopes === null || scopes === void 0 ? void 0 : scopes.join(' '),
|
|
68
|
+
allow_signup: allow_signup,
|
|
69
|
+
redirect_uri: redirect_uri
|
|
70
|
+
}));
|
|
71
|
+
},
|
|
72
|
+
accessToken: function (_a) { return tslib_1.__awaiter(_this, [_a], void 0, function (_b) {
|
|
73
|
+
var response, _c, error, access_token;
|
|
74
|
+
var code = _b.code;
|
|
75
|
+
return tslib_1.__generator(this, function (_d) {
|
|
76
|
+
switch (_d.label) {
|
|
77
|
+
case 0: return [4 /*yield*/, fetch(new URL('login/oauth/access_token', rootBaseURL), {
|
|
78
|
+
method: 'POST',
|
|
79
|
+
headers: {
|
|
80
|
+
Accept: 'application/json',
|
|
81
|
+
'Content-Type': 'application/json'
|
|
82
|
+
},
|
|
83
|
+
body: JSON.stringify({ client_id: client_id, client_secret: client_secret, code: code })
|
|
84
|
+
})];
|
|
85
|
+
case 1:
|
|
86
|
+
response = _d.sent();
|
|
87
|
+
return [4 /*yield*/, response.json()];
|
|
88
|
+
case 2:
|
|
89
|
+
_c = _d.sent(), error = _c.error, access_token = _c.access_token;
|
|
90
|
+
if (error)
|
|
91
|
+
throw new URIError(error);
|
|
92
|
+
return [2 /*return*/, access_token];
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}); },
|
|
96
|
+
userProfile: function (token) { return tslib_1.__awaiter(_this, void 0, void 0, function () {
|
|
97
|
+
var response;
|
|
98
|
+
return tslib_1.__generator(this, function (_a) {
|
|
99
|
+
switch (_a.label) {
|
|
100
|
+
case 0: return [4 /*yield*/, fetch(new URL('user', apiBaseURL), {
|
|
101
|
+
headers: {
|
|
102
|
+
Authorization: "Bearer ".concat(token),
|
|
103
|
+
Accept: 'application/json'
|
|
104
|
+
}
|
|
105
|
+
})];
|
|
106
|
+
case 1:
|
|
107
|
+
response = _a.sent();
|
|
108
|
+
if (response.status < 300)
|
|
109
|
+
return [2 /*return*/, response.json()];
|
|
110
|
+
throw new URIError('Invalid GitHub access token');
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
}); }
|
|
114
|
+
});
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=remote.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remote.js","sourceRoot":"","sources":["../../source/middleware/remote.ts"],"names":[],"mappings":";;AAyBA,oCA2CC;AA6BD,oCA8CC;;AA/ID,2CAA2C;AAsBnC,IAAA,UAAU,GAAK,OAAO,CAAC,GAAG,WAAhB,CAAiB;AACnC,IAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,kBAAW,UAAU,CAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC;AAE5E,SAAgB,YAAY,CAAkD,EAK/D;IALf,iBA2CC;QA1CG,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,GAAG,EAAE,CAAC;yBAEhE,KAAK,CAAC,IAAI,EAAV,wBAAU;oBACI,qBAAM,WAAW,CAAC,KAAqB,CAAC,EAAA;;oBAAhD,UAAQ,SAAwC;oBAEtD,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,gBAAS,OAAK,aAAU,CAAC,CAAC;oBAEtD,sBAAO;4BACH,QAAQ,EAAE;gCACN,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gCAClC,SAAS,EAAE,KAAK;6BACnB;4BACD,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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "next-ssr-middleware",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.5",
|
|
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",
|
|
@@ -23,24 +23,24 @@
|
|
|
23
23
|
"main": "dist/index.js",
|
|
24
24
|
"dependencies": {
|
|
25
25
|
"jsonwebtoken": "^9.0.2",
|
|
26
|
-
"mobx-i18n": "^0.
|
|
27
|
-
"tslib": "^2.6.
|
|
28
|
-
"web-utility": "^4.
|
|
26
|
+
"mobx-i18n": "^0.5.0",
|
|
27
|
+
"tslib": "^2.6.3",
|
|
28
|
+
"web-utility": "^4.4.0"
|
|
29
29
|
},
|
|
30
30
|
"peerDependencies": {
|
|
31
31
|
"next": ">=9.3"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@types/jsonwebtoken": "^9.0.
|
|
35
|
-
"@types/node": "^18.19.
|
|
36
|
-
"husky": "^
|
|
37
|
-
"koajax": "^0.
|
|
38
|
-
"lint-staged": "^15.2.
|
|
39
|
-
"next": "^14.
|
|
34
|
+
"@types/jsonwebtoken": "^9.0.6",
|
|
35
|
+
"@types/node": "^18.19.45",
|
|
36
|
+
"husky": "^9.1.5",
|
|
37
|
+
"koajax": "^2.0.0",
|
|
38
|
+
"lint-staged": "^15.2.9",
|
|
39
|
+
"next": "^14.2.5",
|
|
40
40
|
"open-cli": "^8.0.0",
|
|
41
|
-
"prettier": "^3.
|
|
42
|
-
"typedoc": "^0.
|
|
43
|
-
"typescript": "~5.
|
|
41
|
+
"prettier": "^3.3.3",
|
|
42
|
+
"typedoc": "^0.26.6",
|
|
43
|
+
"typescript": "~5.5.4"
|
|
44
44
|
},
|
|
45
45
|
"prettier": {
|
|
46
46
|
"singleQuote": true,
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"*.{md,json,yml,ts}": "prettier --write"
|
|
53
53
|
},
|
|
54
54
|
"scripts": {
|
|
55
|
-
"prepare": "husky
|
|
55
|
+
"prepare": "husky",
|
|
56
56
|
"test": "lint-staged",
|
|
57
57
|
"build": "rm -rf dist/ docs/ && typedoc source/ && tsc",
|
|
58
58
|
"start": "typedoc && open-cli docs/index.html",
|
|
@@ -5,7 +5,7 @@ import { GetServerSidePropsContext, GetServerSidePropsResult } from 'next';
|
|
|
5
5
|
import { ParsedUrlQuery } from 'querystring';
|
|
6
6
|
import { Day, Second } from 'web-utility';
|
|
7
7
|
|
|
8
|
-
import { DataObject, Middleware } from '
|
|
8
|
+
import { DataObject, Middleware } from '../compose';
|
|
9
9
|
|
|
10
10
|
export async function errorLogger<
|
|
11
11
|
I extends DataObject,
|
|
@@ -19,10 +19,11 @@ export async function errorLogger<
|
|
|
19
19
|
} catch (error) {
|
|
20
20
|
console.error(error);
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
if (status === 404) return { notFound: true, props: {} as O };
|
|
22
|
+
if (error instanceof HTTPError) {
|
|
23
|
+
const { status } = error.response;
|
|
25
24
|
|
|
25
|
+
if (status === 404) return { notFound: true, props: {} as O };
|
|
26
|
+
}
|
|
26
27
|
throw error;
|
|
27
28
|
}
|
|
28
29
|
}
|
|
@@ -129,13 +130,12 @@ export function translator<I extends DataObject, O extends DataObject = {}>(
|
|
|
129
130
|
i18n: TranslationModel<string, string>
|
|
130
131
|
): Middleware<I, O> {
|
|
131
132
|
return async (
|
|
132
|
-
|
|
133
|
+
{ req: { headers, cookies } }: GetServerSidePropsContext<I>,
|
|
133
134
|
next: () => Promise<GetServerSidePropsResult<O>>
|
|
134
135
|
) => {
|
|
135
|
-
const { language = '' } =
|
|
136
|
-
languages = parseLanguageHeader(
|
|
137
|
-
|
|
138
|
-
);
|
|
136
|
+
const { language = '' } = cookies,
|
|
137
|
+
languages = parseLanguageHeader(headers['accept-language'] || '');
|
|
138
|
+
|
|
139
139
|
await i18n.loadLanguages([language, ...languages].filter(Boolean));
|
|
140
140
|
|
|
141
141
|
return next();
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { buildURLData } from 'web-utility';
|
|
2
|
+
|
|
3
|
+
import { DataObject, Middleware } from '../compose';
|
|
4
|
+
|
|
5
|
+
export type OAuth2Ticket = {
|
|
6
|
+
code: string;
|
|
7
|
+
state?: string;
|
|
8
|
+
[key: string]: string;
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
export interface OAuth2Option {
|
|
12
|
+
signInURL: (pageURL: string) => string;
|
|
13
|
+
accessToken: (ticket: OAuth2Ticket) => Promise<string>;
|
|
14
|
+
userProfile: (token: string) => Promise<DataObject>;
|
|
15
|
+
tokenKey?: string;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface OAuth2Props<T extends DataObject> {
|
|
19
|
+
token: string;
|
|
20
|
+
user: T;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const { VERCEL_URL } = process.env;
|
|
24
|
+
const Host = VERCEL_URL ? `https://${VERCEL_URL}` : 'http://127.0.0.1:3000';
|
|
25
|
+
|
|
26
|
+
export function oauth2Signer<I extends DataObject, O extends DataObject = {}>({
|
|
27
|
+
signInURL,
|
|
28
|
+
accessToken,
|
|
29
|
+
userProfile,
|
|
30
|
+
tokenKey = 'token'
|
|
31
|
+
}: OAuth2Option): Middleware<I, O> {
|
|
32
|
+
return async ({ req: { url, headers, cookies }, query, res }, next) => {
|
|
33
|
+
const token = cookies[tokenKey];
|
|
34
|
+
const pageURL = new URL(url || '/', headers['origin'] || Host) + '';
|
|
35
|
+
|
|
36
|
+
if (query.code) {
|
|
37
|
+
const token = await accessToken(query as OAuth2Ticket);
|
|
38
|
+
|
|
39
|
+
res.setHeader('Set-Cookie', `token=${token}; Path=/`);
|
|
40
|
+
|
|
41
|
+
return {
|
|
42
|
+
redirect: {
|
|
43
|
+
destination: pageURL.split('?')[0],
|
|
44
|
+
permanent: false
|
|
45
|
+
},
|
|
46
|
+
props: {} as O
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
if (token)
|
|
50
|
+
try {
|
|
51
|
+
const user = await userProfile(token),
|
|
52
|
+
data = await next();
|
|
53
|
+
const props =
|
|
54
|
+
'props' in data
|
|
55
|
+
? { ...data.props, token, user }
|
|
56
|
+
: ({} as O);
|
|
57
|
+
|
|
58
|
+
return { ...data, props };
|
|
59
|
+
} catch {}
|
|
60
|
+
|
|
61
|
+
return {
|
|
62
|
+
redirect: {
|
|
63
|
+
destination: signInURL(pageURL + ''),
|
|
64
|
+
permanent: false
|
|
65
|
+
},
|
|
66
|
+
props: {} as O
|
|
67
|
+
};
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export type GitHubAPIOperation = 'admin' | 'write' | 'read' | 'delete';
|
|
72
|
+
|
|
73
|
+
export type GitHubOAuthScope =
|
|
74
|
+
| `repo${'' | ':status' | '_deployment' | ':invite'}`
|
|
75
|
+
| 'public_repo'
|
|
76
|
+
| 'security_events'
|
|
77
|
+
| `${Exclude<GitHubAPIOperation, 'delete'>}:${'repo_hook' | 'org' | 'public_key' | 'gpg_key'}`
|
|
78
|
+
| 'admin:org_hook'
|
|
79
|
+
| 'gist'
|
|
80
|
+
| 'notifications'
|
|
81
|
+
| `user${'' | ':email' | ':follow'}`
|
|
82
|
+
| `read:${'user' | 'project'}`
|
|
83
|
+
| 'project'
|
|
84
|
+
| 'delete_repo'
|
|
85
|
+
| `${Exclude<GitHubAPIOperation, 'admin'>}:packages`
|
|
86
|
+
| 'codespace'
|
|
87
|
+
| 'workflow';
|
|
88
|
+
/**
|
|
89
|
+
* @see {@link https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps#web-application-flow}
|
|
90
|
+
*/
|
|
91
|
+
export interface GitHubOAuthOption
|
|
92
|
+
extends Partial<Record<'rootBaseURL' | 'apiBaseURL' | 'login', string>>,
|
|
93
|
+
Record<'client_id' | 'client_secret', string> {
|
|
94
|
+
scopes?: GitHubOAuthScope[];
|
|
95
|
+
allow_signup?: boolean;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export function githubOAuth2<I extends DataObject, O extends DataObject = {}>({
|
|
99
|
+
rootBaseURL = 'https://github.com',
|
|
100
|
+
apiBaseURL = 'https://api.github.com',
|
|
101
|
+
client_id,
|
|
102
|
+
client_secret,
|
|
103
|
+
scopes,
|
|
104
|
+
allow_signup = true
|
|
105
|
+
}: GitHubOAuthOption) {
|
|
106
|
+
return oauth2Signer<I, O>({
|
|
107
|
+
signInURL: redirect_uri =>
|
|
108
|
+
`https://github.com/login/oauth/authorize?${buildURLData({
|
|
109
|
+
client_id,
|
|
110
|
+
scope: scopes?.join(' '),
|
|
111
|
+
allow_signup,
|
|
112
|
+
redirect_uri
|
|
113
|
+
})}`,
|
|
114
|
+
accessToken: async ({ code }) => {
|
|
115
|
+
const response = await fetch(
|
|
116
|
+
new URL('login/oauth/access_token', rootBaseURL),
|
|
117
|
+
{
|
|
118
|
+
method: 'POST',
|
|
119
|
+
headers: {
|
|
120
|
+
Accept: 'application/json',
|
|
121
|
+
'Content-Type': 'application/json'
|
|
122
|
+
},
|
|
123
|
+
body: JSON.stringify({ client_id, client_secret, code })
|
|
124
|
+
}
|
|
125
|
+
);
|
|
126
|
+
const { error, access_token } = await response.json();
|
|
127
|
+
|
|
128
|
+
if (error) throw new URIError(error);
|
|
129
|
+
|
|
130
|
+
return access_token;
|
|
131
|
+
},
|
|
132
|
+
userProfile: async token => {
|
|
133
|
+
const response = await fetch(new URL('user', apiBaseURL), {
|
|
134
|
+
headers: {
|
|
135
|
+
Authorization: `Bearer ${token}`,
|
|
136
|
+
Accept: 'application/json'
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
if (response.status < 300) return response.json();
|
|
140
|
+
|
|
141
|
+
throw new URIError('Invalid GitHub access token');
|
|
142
|
+
}
|
|
143
|
+
});
|
|
144
|
+
}
|
package/.vscode/extensions.json
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"recommendations": [
|
|
3
|
-
"yzhang.markdown-all-in-one",
|
|
4
|
-
"redhat.vscode-yaml",
|
|
5
|
-
"akamud.vscode-caniuse",
|
|
6
|
-
"visualstudioexptteam.intellicode-api-usage-examples",
|
|
7
|
-
"pflannery.vscode-versionlens",
|
|
8
|
-
"christian-kohler.npm-intellisense",
|
|
9
|
-
"esbenp.prettier-vscode",
|
|
10
|
-
"eamodio.gitlens",
|
|
11
|
-
"github.vscode-pull-request-github",
|
|
12
|
-
"github.vscode-github-actions"
|
|
13
|
-
]
|
|
14
|
-
}
|
package/dist/middleware.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"middleware.js","sourceRoot":"","sources":["../source/middleware.ts"],"names":[],"mappings":";;;;AAAA,6CAAiE;AAEjE,uCAAkE;AAGlE,2CAA0C;AAI1C,SAAsB,WAAW,CAI7B,OAAqC,EACrC,IAAgD;;;;;;;oBAGrC,qBAAM,IAAI,EAAE,EAAA;wBAAnB,sBAAO,SAAY,EAAC;;;oBAEpB,OAAO,CAAC,KAAK,CAAC,OAAK,CAAC,CAAC;oBAEb,WAAW,OAAkB,OAAvB,CAAwB;oBAEtC,IAAI,QAAM,KAAK,GAAG;wBAAE,sBAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAO,EAAE,EAAC;oBAE9D,MAAM,OAAK,CAAC;;;;;CAEnB;AAlBD,kCAkBC;AASD,SAAsB,MAAM,CACxB,OAAqC,EACrC,IAAgD;;;;;wBAE/B,qBAAM,IAAI,EAAE,EAAA;;oBAAvB,OAAO,GAAG,CAAC,SAAY,CAAC,IAAK,EAAmC,EAChE,WAAW,GAA6B,OAAO,YAApC,EAAE,MAAM,GAAqB,OAAO,OAA5B,EAAE,KAAK,GAAc,OAAO,MAArB,EAAE,OAAO,GAAK,OAAO,QAAZ;oBAEzC,sBAAO,sCACA,OAAO,KACV,KAAK,wCACE,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,KAC5C,KAAK,EAAE,IAAI,CAAC,KAAK,CACb,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,aAAA,EAAE,MAAM,QAAA,EAAE,KAAK,OAAA,EAAE,OAAO,SAAA,EAAE,CAAC,CAC1D,MAEuC,EAAC;;;;CACpD;AAhBD,wBAgBC;AAMD,SAAgB,WAAW,CACvB,QAAkB,EAClB,SAAwB,EACxB,OAA2B;IAH/B,iBAoBC;IAnBG,yBAAA,EAAA,kBAAkB;IAClB,0BAAA,EAAA,wBAAwB;IACxB,wBAAA,EAAA,YAA2B;IAE3B,OAAO,UAAO,EAAyB,EAAE,IAAI;YAA7B,WAAqB,EAAd,GAAG,SAAA,EAAE,OAAO,aAAA;;;;;;wBACzB,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;wBAEhC,IAAI,CAAC;4BACG,UAAU,GAAG,IAAA,qBAAM,EAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;wBACpE,CAAC;wBAAC,OAAO,KAAK,EAAE,CAAC;4BACb,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;wBAC9B,CAAC;wBACY,qBAAM,IAAI,EAAE,EAAA;;wBAAnB,IAAI,GAAG,SAAY;wBAEzB,IAAI,OAAO,IAAI,IAAI,IAAI,UAAU;4BAC7B,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC;wBAE1C,sBAAO,IAAI,EAAC;;;;KACf,CAAC;AACN,CAAC;AApBD,kCAoBC;AAQD,IAAM,iBAAiB,GAA+B,EAAE,CAAC;AAEzD,SAAgB,KAAK,CACjB,WAAyB,EACzB,WAAiB;IAFrB,iBAqCC;IApCG,4BAAA,EAAA,cAAc,EAAE,GAAG,oBAAM;IACzB,4BAAA,EAAA,cAAc,iBAAG;IAEjB,SAAS,UAAU;QACf,KAAmC,UAAiC,EAAjC,KAAA,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAjC,cAAiC,EAAjC,IAAiC;YAAzD,IAAA,WAAoB,EAAnB,GAAG,QAAA,EAAI,SAAS,kBAAA;YACxB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,WAAW;gBACpC,OAAO,iBAAiB,CAAC,GAAG,CAAC,CAAC;SAAA;IAC1C,CAAC;IAED,OAAO,CAAC,UAAO,OAAO,EAAE,IAAI;;;YAChB,WAAW,GAAK,OAAO,YAAZ,CAAa;YAC1B,KAAK,GAAG,CAAC,iBAAiB,CAAC,WAAW,MAA7B,iBAAiB,CAAC,WAAW,IAAM,EAAE,EAAC,EACjD,KAAK,GAAG,sBAAe,WAAW,CAAE,CAAC;YACjC,IAAI,GAAoB,KAAK,KAAzB,EAAE,KAAkB,KAAK,UAAV,EAAb,SAAS,mBAAG,CAAC,KAAA,CAAW;YAEtC,IAAI,CAAC,CAAC,IAAI,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gBACrD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAEpB,KAAK,CAAC,MAAM,GAAG,IAAI,EAAE;qBAChB,IAAI,CAAC,UAAA,IAAI;oBACN,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;oBAClB,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC;oBAE3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBAEnB,OAAO,IAAI,CAAC;gBAChB,CAAC,CAAC;qBACD,OAAO,CAAC;oBACL,OAAO,KAAK,CAAC,MAAM,CAAC;oBACpB,UAAU,EAAE,CAAC;oBAEb,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC3B,CAAC,CAAC,CAAC;YACX,CAAC;YACD,sBAAO,IAAI,IAAI,KAAK,CAAC,MAAM,EAAC;;SAC/B,CAAqB,CAAC;AAC3B,CAAC;AArCD,sBAqCC;AAED,SAAgB,UAAU,CACtB,IAAsC;IAD1C,iBAeC;IAZG,OAAO,UACH,OAAqC,EACrC,IAAgD;;;;;oBAExC,KAAkB,OAAO,CAAC,GAAG,CAAC,OAAO,SAAxB,EAAb,QAAQ,mBAAG,EAAE,KAAA,EACjB,SAAS,GAAG,IAAA,+BAAmB,EAC3B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAC/C,CAAC;oBACN,qBAAM,IAAI,CAAC,aAAa,CAAC,uBAAC,QAAQ,GAAK,SAAS,QAAE,MAAM,CAAC,OAAO,CAAC,CAAC,EAAA;;oBAAlE,SAAkE,CAAC;oBAEnE,sBAAO,IAAI,EAAE,EAAC;;;SACjB,CAAC;AACN,CAAC;AAfD,gCAeC"}
|