@zlooks.cn/gateway-server 1.0.6 → 1.0.7
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/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +3 -4
- package/.next/build-manifest.json +6 -6
- package/.next/next-minimal-server.js.nft.json +1 -1
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.json +3 -35
- package/.next/routes-manifest.json +0 -6
- package/.next/server/app/[pluginId]/[[...path]]/page.js +1 -1
- package/.next/server/app/[pluginId]/[[...path]]/page.js.nft.json +1 -1
- package/.next/server/app/[pluginId]/[[...path]]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error/page.js +2 -2
- package/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +7 -7
- package/.next/server/app/_global-error.segments/_full.segment.rsc +7 -7
- package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +6 -6
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js +1 -1
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/favicon.ico/route.js +1 -1
- package/.next/server/app/favicon.ico/route.js.nft.json +1 -1
- package/.next/server/app/page.js +139 -139
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/robots.txt/route.js +2 -2
- package/.next/server/app/robots.txt/route.js.nft.json +1 -1
- package/.next/server/app-paths-manifest.json +3 -4
- package/.next/server/chunks/276.js +1 -0
- package/.next/server/chunks/357.js +48 -0
- package/.next/server/chunks/369.js +193 -0
- package/.next/server/chunks/379.js +1 -0
- package/.next/server/chunks/546.js +165 -0
- package/.next/server/chunks/724.js +2 -0
- package/.next/server/chunks/748.js +107 -0
- package/.next/server/chunks/952.js +1 -0
- package/.next/server/middleware-build-manifest.js +1 -1
- package/.next/server/pages/500.html +1 -1
- package/.next/server/server-reference-manifest.json +1 -1
- package/.next/server/webpack-runtime.js +1 -1
- package/.next/static/OCFIC7ZMtwfwR4zcBmvjf/_buildManifest.js +1 -0
- package/.next/static/chunks/319-5b1f2e1ec1373bd3.js +1 -0
- package/.next/static/chunks/387b3e19-762a698cb31f79da.js +1 -0
- package/.next/static/chunks/469-04a1d77222f210e8.js +2 -0
- package/.next/static/chunks/550-e8abc67c7a1edf41.js +52 -0
- package/.next/static/chunks/604-fdb1ff68d897d5a1.js +1 -0
- package/.next/static/chunks/{996-077fc2adb823b371.js → 608-65a4cc255f2a7adb.js} +127 -127
- package/.next/static/chunks/app/[pluginId]/[[...path]]/page-de70338ed93ae515.js +1 -0
- package/.next/static/chunks/app/_global-error/page-03b2fd80c99da229.js +1 -0
- package/.next/static/chunks/app/_not-found/page-f5adedd76e894f13.js +1 -0
- package/.next/static/chunks/app/favicon.ico/route-03b2fd80c99da229.js +1 -0
- package/.next/static/chunks/app/layout-b45fbd5ce2b54d96.js +1 -0
- package/.next/static/chunks/app/page-fa81d6b33c269d0c.js +1 -0
- package/.next/static/chunks/app/robots.txt/route-03b2fd80c99da229.js +1 -0
- package/.next/static/chunks/main-app-98c326aff6aa17c8.js +1 -0
- package/.next/static/chunks/main-babcc17d8873b132.js +5 -0
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-03b2fd80c99da229.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-03b2fd80c99da229.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/global-error-d58b04831400099b.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-03b2fd80c99da229.js +1 -0
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-03b2fd80c99da229.js +1 -0
- package/.next/static/chunks/{webpack-28b302404fb8c1d3.js → webpack-4b774bd4ebe1a8a1.js} +1 -1
- package/.next/trace +22 -22
- package/.next/trace-build +1 -1
- package/.next/types/routes.d.ts +1 -2
- package/.next/types/validator.ts +0 -9
- package/dist/browser-api.d.ts +1 -0
- package/dist/browser-api.d.ts.map +1 -1
- package/dist/browser-api.js +1 -0
- package/dist/browser-api.js.map +1 -1
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +36 -12
- package/dist/config/schema.js.map +1 -1
- package/dist/controllers/api/shell/navigation.controller.d.ts +3 -0
- package/dist/controllers/api/shell/navigation.controller.d.ts.map +1 -0
- package/dist/controllers/api/shell/navigation.controller.js +19 -0
- package/dist/controllers/api/shell/navigation.controller.js.map +1 -0
- package/dist/runtime/gateway-runtime.d.ts +0 -4
- package/dist/runtime/gateway-runtime.d.ts.map +1 -1
- package/dist/runtime/gateway-runtime.js +3 -22
- package/dist/runtime/gateway-runtime.js.map +1 -1
- package/dist/runtime/http-over-micro-controller.d.ts +45 -0
- package/dist/runtime/http-over-micro-controller.d.ts.map +1 -0
- package/dist/runtime/http-over-micro-controller.js +305 -0
- package/dist/runtime/http-over-micro-controller.js.map +1 -0
- package/dist/runtime/public-asset-discovery.d.ts.map +1 -1
- package/dist/runtime/public-asset-discovery.js +13 -5
- package/dist/runtime/public-asset-discovery.js.map +1 -1
- package/dist/runtime/public-asset-proxy.d.ts.map +1 -1
- package/dist/runtime/public-asset-proxy.js +22 -7
- package/dist/runtime/public-asset-proxy.js.map +1 -1
- package/dist/runtime/rsc-initial-context.d.ts.map +1 -1
- package/dist/runtime/rsc-initial-context.js +6 -22
- package/dist/runtime/rsc-initial-context.js.map +1 -1
- package/dist/runtime/sitemap-http.d.ts +12 -0
- package/dist/runtime/sitemap-http.d.ts.map +1 -0
- package/dist/runtime/sitemap-http.js +91 -0
- package/dist/runtime/sitemap-http.js.map +1 -0
- package/package.json +24 -22
- package/.next/server/app/api/shell/navigation/route.js +0 -1
- package/.next/server/app/api/shell/navigation/route.js.nft.json +0 -1
- package/.next/server/app/api/shell/navigation/route_client-reference-manifest.js +0 -1
- package/.next/server/app/robots.txt.body +0 -5
- package/.next/server/app/robots.txt.meta +0 -1
- package/.next/server/chunks/377.js +0 -1
- package/.next/server/chunks/512.js +0 -2
- package/.next/server/chunks/621.js +0 -193
- package/.next/server/chunks/694.js +0 -165
- package/.next/server/chunks/761.js +0 -48
- package/.next/server/chunks/919.js +0 -107
- package/.next/server/chunks/941.js +0 -1
- package/.next/server/chunks/991.js +0 -1
- package/.next/static/W7JvaJOxXMTBDe7uMIlWm/_buildManifest.js +0 -1
- package/.next/static/chunks/128-88463f5aa049370d.js +0 -52
- package/.next/static/chunks/130-85ed753dd2afbb75.js +0 -1
- package/.next/static/chunks/507-30d5ae064837325c.js +0 -2
- package/.next/static/chunks/906-02ebd3fcb9fc3f0c.js +0 -1
- package/.next/static/chunks/app/[pluginId]/[[...path]]/page-4dd303371bb755c7.js +0 -1
- package/.next/static/chunks/app/_global-error/page-a519e69f1dbe97c4.js +0 -1
- package/.next/static/chunks/app/_not-found/page-64cb1a71ce368904.js +0 -1
- package/.next/static/chunks/app/api/shell/navigation/route-a519e69f1dbe97c4.js +0 -1
- package/.next/static/chunks/app/favicon.ico/route-a519e69f1dbe97c4.js +0 -1
- package/.next/static/chunks/app/layout-8208d5ac4dfff885.js +0 -1
- package/.next/static/chunks/app/page-8ee7b33b33cd79ee.js +0 -1
- package/.next/static/chunks/app/robots.txt/route-a519e69f1dbe97c4.js +0 -1
- package/.next/static/chunks/d3784132-6a36432fedf3ff6f.js +0 -1
- package/.next/static/chunks/main-0e4f61a9c633109e.js +0 -5
- package/.next/static/chunks/main-app-200aa40fca166de6.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/app-error-a519e69f1dbe97c4.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/forbidden-a519e69f1dbe97c4.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/global-error-4329fe5c7ae59296.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/not-found-a519e69f1dbe97c4.js +0 -1
- package/.next/static/chunks/next/dist/client/components/builtin/unauthorized-a519e69f1dbe97c4.js +0 -1
- package/.next/types/app/api/shell/navigation/route.ts +0 -353
- package/dist/runtime/browser-api-discovery-runtime.d.ts +0 -24
- package/dist/runtime/browser-api-discovery-runtime.d.ts.map +0 -1
- package/dist/runtime/browser-api-discovery-runtime.js +0 -158
- package/dist/runtime/browser-api-discovery-runtime.js.map +0 -1
- package/dist/runtime/browser-api-provider-catalog.d.ts +0 -34
- package/dist/runtime/browser-api-provider-catalog.d.ts.map +0 -1
- package/dist/runtime/browser-api-provider-catalog.js +0 -133
- package/dist/runtime/browser-api-provider-catalog.js.map +0 -1
- package/dist/runtime/micro-browser-api-proxy.d.ts +0 -22
- package/dist/runtime/micro-browser-api-proxy.d.ts.map +0 -1
- package/dist/runtime/micro-browser-api-proxy.js +0 -206
- package/dist/runtime/micro-browser-api-proxy.js.map +0 -1
- /package/.next/static/{W7JvaJOxXMTBDe7uMIlWm → OCFIC7ZMtwfwR4zcBmvjf}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
import { Transform } from 'node:stream';
|
|
2
|
+
import { createExecutionContext } from '@hile/context';
|
|
3
|
+
import { callHttpOverMicro, } from '@hile/http-over-micro';
|
|
4
|
+
import { bodyParser } from '@koa/bodyparser';
|
|
5
|
+
import { BROWSER_API_CLIENT_CONTEXT_KEY, BROWSER_API_COOKIES_CONTEXT_KEY, browserApiClientSchema, browserApiFailure, extractBrowserApiCookieEffects, parseBrowserApiCookies, parseBrowserApiResponse, } from '@zlooks.cn/browser-api';
|
|
6
|
+
import { USER_SESSION_COOKIE } from '@zlooks.cn/utils';
|
|
7
|
+
import { GATEWAY_BROWSER_API_ERROR_CODES } from '../browser-api.js';
|
|
8
|
+
const REQUEST_TIMEOUT_MS = 5_000;
|
|
9
|
+
const REQUEST_STREAM_LIMIT_BYTES = 64 * 1024 * 1024;
|
|
10
|
+
const RESPONSE_WINDOW = 16;
|
|
11
|
+
const FORWARDED_REQUEST_HEADERS = Object.freeze([
|
|
12
|
+
'accept',
|
|
13
|
+
'accept-language',
|
|
14
|
+
'content-type',
|
|
15
|
+
'if-modified-since',
|
|
16
|
+
'if-none-match',
|
|
17
|
+
'origin',
|
|
18
|
+
'range',
|
|
19
|
+
'referer',
|
|
20
|
+
]);
|
|
21
|
+
const FORBIDDEN_RESPONSE_HEADERS = new Set([
|
|
22
|
+
'connection',
|
|
23
|
+
'content-length',
|
|
24
|
+
'keep-alive',
|
|
25
|
+
'proxy-authenticate',
|
|
26
|
+
'proxy-authorization',
|
|
27
|
+
'set-cookie',
|
|
28
|
+
'te',
|
|
29
|
+
'trailer',
|
|
30
|
+
'transfer-encoding',
|
|
31
|
+
'upgrade',
|
|
32
|
+
]);
|
|
33
|
+
const parseJson = bodyParser({
|
|
34
|
+
enableTypes: ['json'],
|
|
35
|
+
jsonLimit: '32kb',
|
|
36
|
+
onError: (error) => {
|
|
37
|
+
if (hasHttpStatus(error, 413))
|
|
38
|
+
throw new RequestBodyTooLargeError();
|
|
39
|
+
throw new InvalidJsonRequestError();
|
|
40
|
+
},
|
|
41
|
+
});
|
|
42
|
+
export async function proxyHttpOverMicro(context, namespace, url, dependencies) {
|
|
43
|
+
const binding = bindPublicAbort(context);
|
|
44
|
+
try {
|
|
45
|
+
const requestBody = await readRequestBody(context);
|
|
46
|
+
if (binding.controller.signal.aborted)
|
|
47
|
+
throw binding.controller.signal.reason;
|
|
48
|
+
const response = await (dependencies.call ?? callHttpOverMicro)(dependencies.application, namespace, url, {
|
|
49
|
+
method: context.method,
|
|
50
|
+
headers: readForwardedHeaders(context),
|
|
51
|
+
query: [...new URLSearchParams(context.querystring).entries()],
|
|
52
|
+
...(requestBody === undefined ? {} : { body: requestBody }),
|
|
53
|
+
}, {
|
|
54
|
+
context: createBrowserExecutionContext(context),
|
|
55
|
+
timeout: REQUEST_TIMEOUT_MS,
|
|
56
|
+
idleTimeout: REQUEST_TIMEOUT_MS,
|
|
57
|
+
retries: 0,
|
|
58
|
+
window: RESPONSE_WINDOW,
|
|
59
|
+
signal: binding.controller.signal,
|
|
60
|
+
});
|
|
61
|
+
if (binding.controller.signal.aborted)
|
|
62
|
+
throw binding.controller.signal.reason;
|
|
63
|
+
const result = applyResponse(context, response, dependencies.readPublicOrigin());
|
|
64
|
+
if (response.bodyKind === 'stream') {
|
|
65
|
+
bindStreamCleanup(response.body, binding.unbind);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
binding.unbind();
|
|
69
|
+
}
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
binding.unbind();
|
|
74
|
+
if (isPublicRequestDisconnected(context, error))
|
|
75
|
+
return undefined;
|
|
76
|
+
if (error instanceof InvalidJsonRequestError) {
|
|
77
|
+
context.status = 400;
|
|
78
|
+
return browserApiFailure(GATEWAY_BROWSER_API_ERROR_CODES.invalidJson, '请求内容不是有效的 JSON');
|
|
79
|
+
}
|
|
80
|
+
if (error instanceof RequestBodyTooLargeError) {
|
|
81
|
+
context.status = 413;
|
|
82
|
+
return browserApiFailure(GATEWAY_BROWSER_API_ERROR_CODES.invalidRequest, '请求内容过大');
|
|
83
|
+
}
|
|
84
|
+
if (hasHttpStatus(error, 400)) {
|
|
85
|
+
context.status = 400;
|
|
86
|
+
return browserApiFailure(GATEWAY_BROWSER_API_ERROR_CODES.invalidRequest, '请求格式无效,请检查后重试');
|
|
87
|
+
}
|
|
88
|
+
dependencies.logger.error({
|
|
89
|
+
err: error,
|
|
90
|
+
event: 'browser-api.http-over-micro.failed',
|
|
91
|
+
method: context.method,
|
|
92
|
+
namespace,
|
|
93
|
+
url,
|
|
94
|
+
}, 'Browser API HTTP-over-Micro request failed');
|
|
95
|
+
context.status = 502;
|
|
96
|
+
return browserApiFailure(GATEWAY_BROWSER_API_ERROR_CODES.gatewayUnavailable, '服务暂时不可用');
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
async function readRequestBody(context) {
|
|
100
|
+
if (context.method === 'GET' || context.method === 'HEAD' || !requestHasBody(context)) {
|
|
101
|
+
return undefined;
|
|
102
|
+
}
|
|
103
|
+
if (context.request.is('application/json', 'application/*+json')) {
|
|
104
|
+
if (context.request.body === undefined) {
|
|
105
|
+
try {
|
|
106
|
+
await parseJson(context, async () => undefined);
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
if (error instanceof RequestBodyTooLargeError
|
|
110
|
+
|| error instanceof InvalidJsonRequestError)
|
|
111
|
+
throw error;
|
|
112
|
+
throw new InvalidJsonRequestError();
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return context.request.body;
|
|
116
|
+
}
|
|
117
|
+
const declaredLength = readDeclaredContentLength(context);
|
|
118
|
+
if (declaredLength !== undefined && declaredLength > REQUEST_STREAM_LIMIT_BYTES) {
|
|
119
|
+
throw new RequestBodyTooLargeError();
|
|
120
|
+
}
|
|
121
|
+
return boundedRequestStream(context.req, REQUEST_STREAM_LIMIT_BYTES);
|
|
122
|
+
}
|
|
123
|
+
function requestHasBody(context) {
|
|
124
|
+
if (context.request.body !== undefined)
|
|
125
|
+
return true;
|
|
126
|
+
const transferEncoding = context.req.headers['transfer-encoding'];
|
|
127
|
+
if (transferEncoding !== undefined)
|
|
128
|
+
return true;
|
|
129
|
+
return (readDeclaredContentLength(context) ?? 0) > 0;
|
|
130
|
+
}
|
|
131
|
+
function readDeclaredContentLength(context) {
|
|
132
|
+
const rawLength = context.req.headers['content-length'];
|
|
133
|
+
const value = Array.isArray(rawLength) ? rawLength[0] : rawLength;
|
|
134
|
+
if (value === undefined)
|
|
135
|
+
return undefined;
|
|
136
|
+
const length = Number(value);
|
|
137
|
+
return Number.isSafeInteger(length) && length >= 0 ? length : undefined;
|
|
138
|
+
}
|
|
139
|
+
function boundedRequestStream(source, maxBytes) {
|
|
140
|
+
let received = 0;
|
|
141
|
+
return source.pipe(new Transform({
|
|
142
|
+
transform(chunk, encoding, callback) {
|
|
143
|
+
const bytes = Buffer.isBuffer(chunk)
|
|
144
|
+
? chunk.length
|
|
145
|
+
: Buffer.byteLength(typeof chunk === 'string' ? chunk : String(chunk), encoding);
|
|
146
|
+
received += bytes;
|
|
147
|
+
if (received > maxBytes) {
|
|
148
|
+
callback(new Error('HTTP request body exceeds the streaming limit'));
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
callback(null, chunk);
|
|
152
|
+
},
|
|
153
|
+
}));
|
|
154
|
+
}
|
|
155
|
+
function readForwardedHeaders(context) {
|
|
156
|
+
return FORWARDED_REQUEST_HEADERS.flatMap((name) => {
|
|
157
|
+
const value = context.get(name).trim();
|
|
158
|
+
return value ? [[name, value]] : [];
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
function createBrowserExecutionContext(context) {
|
|
162
|
+
const cookie = context.cookies.get(USER_SESSION_COOKIE);
|
|
163
|
+
const cookies = parseBrowserApiCookies(cookie ? { [USER_SESSION_COOKIE]: cookie } : {});
|
|
164
|
+
const userAgent = context.get('user-agent').trim().slice(0, 1_024);
|
|
165
|
+
const client = browserApiClientSchema.parse({
|
|
166
|
+
ipAddress: context.ip,
|
|
167
|
+
userAgent: userAgent || null,
|
|
168
|
+
});
|
|
169
|
+
const values = {
|
|
170
|
+
...(Object.keys(cookies).length > 0
|
|
171
|
+
? { [BROWSER_API_COOKIES_CONTEXT_KEY]: cookies }
|
|
172
|
+
: {}),
|
|
173
|
+
[BROWSER_API_CLIENT_CONTEXT_KEY]: client,
|
|
174
|
+
};
|
|
175
|
+
return createExecutionContext(values);
|
|
176
|
+
}
|
|
177
|
+
function applyResponse(context, response, publicOrigin) {
|
|
178
|
+
const extracted = extractBrowserApiCookieEffects(response.headers);
|
|
179
|
+
assertWritableCookieEffects(extracted.cookieEffects);
|
|
180
|
+
validateResponseHeaders(extracted.headers);
|
|
181
|
+
const body = validateResponseBody(response, extracted.headers);
|
|
182
|
+
applyCookieEffects(context, extracted.cookieEffects, publicOrigin);
|
|
183
|
+
for (const [name, value] of extracted.headers) {
|
|
184
|
+
if (FORBIDDEN_RESPONSE_HEADERS.has(name.toLowerCase()))
|
|
185
|
+
continue;
|
|
186
|
+
context.append(name, value);
|
|
187
|
+
}
|
|
188
|
+
context.status = response.status;
|
|
189
|
+
return body;
|
|
190
|
+
}
|
|
191
|
+
function validateResponseHeaders(headers) {
|
|
192
|
+
for (const [name, value] of headers) {
|
|
193
|
+
if (name.toLowerCase() === 'location')
|
|
194
|
+
validateLocation(value);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
function validateResponseBody(response, headers) {
|
|
198
|
+
if (response.bodyKind === 'empty')
|
|
199
|
+
return undefined;
|
|
200
|
+
if (!isJsonResponse(headers))
|
|
201
|
+
return response.body;
|
|
202
|
+
if (response.bodyKind === 'stream') {
|
|
203
|
+
throw new Error('Browser API JSON responses must use an inline body');
|
|
204
|
+
}
|
|
205
|
+
const body = parseBrowserApiResponse(response.body);
|
|
206
|
+
const succeeded = response.status >= 200 && response.status < 300;
|
|
207
|
+
if (succeeded !== (body.code === 0)) {
|
|
208
|
+
throw new Error('HTTP status and Browser API response code disagree');
|
|
209
|
+
}
|
|
210
|
+
return body;
|
|
211
|
+
}
|
|
212
|
+
function isJsonResponse(headers) {
|
|
213
|
+
return headers.some(([name, value]) => name.toLowerCase() === 'content-type'
|
|
214
|
+
&& /^(?:application\/json|[^;,]+\+json)(?:[;,]|$)/i.test(value.trim()));
|
|
215
|
+
}
|
|
216
|
+
function assertWritableCookieEffects(effects) {
|
|
217
|
+
for (const effect of effects) {
|
|
218
|
+
if (effect.name !== USER_SESSION_COOKIE) {
|
|
219
|
+
throw new Error('HTTP-over-Micro service attempted an unsupported cookie effect');
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
function applyCookieEffects(context, effects, publicOrigin) {
|
|
224
|
+
const secure = new URL(publicOrigin).protocol === 'https:';
|
|
225
|
+
context.cookies.secure = secure;
|
|
226
|
+
for (const effect of effects) {
|
|
227
|
+
context.cookies.set(effect.name, effect.action === 'set' ? effect.value : '', {
|
|
228
|
+
httpOnly: true,
|
|
229
|
+
sameSite: 'lax',
|
|
230
|
+
secure,
|
|
231
|
+
path: '/',
|
|
232
|
+
overwrite: true,
|
|
233
|
+
expires: effect.action === 'set' ? new Date(effect.expiresAt) : new Date(0),
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
function validateLocation(value) {
|
|
238
|
+
if (value.startsWith('/') && !value.startsWith('//'))
|
|
239
|
+
return;
|
|
240
|
+
const parsed = new URL(value);
|
|
241
|
+
if (!/^https?:$/.test(parsed.protocol) || parsed.username || parsed.password) {
|
|
242
|
+
throw new Error('HTTP-over-Micro Location header is unsafe');
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
function bindStreamCleanup(stream, cleanup) {
|
|
246
|
+
let cleaned = false;
|
|
247
|
+
const once = () => {
|
|
248
|
+
if (cleaned)
|
|
249
|
+
return;
|
|
250
|
+
cleaned = true;
|
|
251
|
+
cleanup();
|
|
252
|
+
};
|
|
253
|
+
stream.once('end', once);
|
|
254
|
+
stream.once('error', once);
|
|
255
|
+
stream.once('close', once);
|
|
256
|
+
}
|
|
257
|
+
function bindPublicAbort(context) {
|
|
258
|
+
const controller = new AbortController();
|
|
259
|
+
const abort = () => {
|
|
260
|
+
if (!controller.signal.aborted)
|
|
261
|
+
controller.abort(new PublicRequestAbortedError());
|
|
262
|
+
};
|
|
263
|
+
context.req.once('aborted', abort);
|
|
264
|
+
context.res.once('close', abort);
|
|
265
|
+
if (isPublicConnectionClosed(context))
|
|
266
|
+
abort();
|
|
267
|
+
return {
|
|
268
|
+
controller,
|
|
269
|
+
unbind: () => {
|
|
270
|
+
context.req.off('aborted', abort);
|
|
271
|
+
context.res.off('close', abort);
|
|
272
|
+
},
|
|
273
|
+
};
|
|
274
|
+
}
|
|
275
|
+
function isPublicRequestDisconnected(context, error) {
|
|
276
|
+
return error instanceof PublicRequestAbortedError || isPublicConnectionClosed(context);
|
|
277
|
+
}
|
|
278
|
+
function isPublicConnectionClosed(context) {
|
|
279
|
+
return Boolean(context.req.aborted || context.res.destroyed || context.res.writableEnded);
|
|
280
|
+
}
|
|
281
|
+
function hasHttpStatus(error, status) {
|
|
282
|
+
return typeof error === 'object'
|
|
283
|
+
&& error !== null
|
|
284
|
+
&& 'status' in error
|
|
285
|
+
&& error.status === status;
|
|
286
|
+
}
|
|
287
|
+
class InvalidJsonRequestError extends Error {
|
|
288
|
+
constructor() {
|
|
289
|
+
super('Browser API request body is not valid JSON');
|
|
290
|
+
this.name = 'InvalidJsonRequestError';
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
class RequestBodyTooLargeError extends Error {
|
|
294
|
+
constructor() {
|
|
295
|
+
super('Browser API request body exceeds the inline JSON limit');
|
|
296
|
+
this.name = 'RequestBodyTooLargeError';
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
class PublicRequestAbortedError extends Error {
|
|
300
|
+
constructor() {
|
|
301
|
+
super('Public Browser API request was aborted');
|
|
302
|
+
this.name = 'PublicRequestAbortedError';
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
//# sourceMappingURL=http-over-micro-controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-over-micro-controller.js","sourceRoot":"","sources":["../../src/runtime/http-over-micro-controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-asset-discovery.d.ts","sourceRoot":"","sources":["../../src/runtime/public-asset-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGlF,UAAU,gBAAgB;IACxB,KAAK,CAAC,EAAE,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"public-asset-discovery.d.ts","sourceRoot":"","sources":["../../src/runtime/public-asset-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,EAAsB,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAGlF,UAAU,gBAAgB;IACxB,KAAK,CAAC,EAAE,MAAM,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAClC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;CACrD;AAED,qBAAa,oBAAoB;;IAS7B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,OAAO;IAF1B,YACmB,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,4BAA4B,CAAC,EAC5D,OAAO,GAAE,gBAAqB,EAGhD;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAS3B;IAED,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAUvB;IAED,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,SAAQ,GAAG,eAAe,CAKrD;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAK3B;YAEa,IAAI;CAmCnB"}
|
|
@@ -31,7 +31,11 @@ export class PublicAssetDiscovery {
|
|
|
31
31
|
return this.#active;
|
|
32
32
|
const active = this.poll();
|
|
33
33
|
this.#active = active;
|
|
34
|
-
void active
|
|
34
|
+
void active
|
|
35
|
+
.finally(() => {
|
|
36
|
+
this.#active = undefined;
|
|
37
|
+
})
|
|
38
|
+
.catch(() => undefined);
|
|
35
39
|
return active;
|
|
36
40
|
}
|
|
37
41
|
resolve(path, method = 'GET') {
|
|
@@ -63,10 +67,14 @@ export class PublicAssetDiscovery {
|
|
|
63
67
|
for (const snapshot of snapshots) {
|
|
64
68
|
try {
|
|
65
69
|
const announcement = assetAnnouncementSchema.parse(snapshot.payload);
|
|
66
|
-
if (!snapshot.hasData ||
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
+
if (!snapshot.hasData ||
|
|
71
|
+
snapshot.retained ||
|
|
72
|
+
snapshot.publisherCount !== 1 ||
|
|
73
|
+
snapshot.publishers.length !== 1 ||
|
|
74
|
+
snapshot.topic !== assetTopic(announcement) ||
|
|
75
|
+
announcement.issuedAt > now + 1_000 ||
|
|
76
|
+
announcement.expiresAt <= announcement.issuedAt ||
|
|
77
|
+
announcement.expiresAt - announcement.issuedAt > 30_000) {
|
|
70
78
|
throw new Error('Invalid live public asset announcement');
|
|
71
79
|
}
|
|
72
80
|
peers.push({ announcement, address: addressSchema.parse(snapshot.publishers[0]) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-asset-discovery.js","sourceRoot":"","sources":["../../src/runtime/public-asset-discovery.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,UAAU,EAAkB,MAAM,yBAAyB,CAAC;AAClH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAwB,MAAM,wBAAwB,CAAC;AAElF,MAAM,aAAa,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAOrH,MAAM,OAAO,oBAAoB;IASZ,WAAW;IACX,OAAO;IATjB,QAAQ,GAAG,IAAI,kBAAkB,EAAE,CAAC;IACpC,MAAM,CAAe;IACrB,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACxC,YAAY,GAAG,CAAC,QAAQ,CAAC;IACzB,MAAM,CAA6B;IACnC,OAAO,CAA4B;IAEnC,YACmB,WAA4D,EAC5D,OAAO,GAAqB,EAAE;2BAD9B,WAAW;uBACX,OAAO;QAExB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC;IAC1C,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,GAAG,EAAE;gBAC7B,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/E,CAAC,EAAE,KAAK,CAAC,CAAC;YACV,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO,IAAI,CAAC,OAAO,CAAC;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,KAAK,MAAM,
|
|
1
|
+
{"version":3,"file":"public-asset-discovery.js","sourceRoot":"","sources":["../../src/runtime/public-asset-discovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-asset-proxy.d.ts","sourceRoot":"","sources":["../../src/runtime/public-asset-proxy.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"public-asset-proxy.d.ts","sourceRoot":"","sources":["../../src/runtime/public-asset-proxy.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAU3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,KAAK,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AAChD,KAAK,IAAI,GAAG;IAAE,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAA;CAAE,CAAA;AAOpD,wEAAwE;AACxE,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,IAAI,EACV,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,EAC5C,MAAM,EAAE;IAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAAA;CAAE,EAClE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B;IAAE,KAAK,IAAI,IAAI,CAAA;CAAE,CAgGnB"}
|
|
@@ -22,7 +22,9 @@ export function mountPublicAssetProxy(host, application, routes, logger) {
|
|
|
22
22
|
return emptyResponse(context, 405);
|
|
23
23
|
}
|
|
24
24
|
const parsed = assetRequestSchema.safeParse({
|
|
25
|
-
method: context.method,
|
|
25
|
+
method: context.method,
|
|
26
|
+
path: context.path,
|
|
27
|
+
query: context.querystring,
|
|
26
28
|
headers: Object.fromEntries(ASSET_REQUEST_HEADERS.flatMap((name) => {
|
|
27
29
|
const value = context.get(name);
|
|
28
30
|
return value ? [[name, value]] : [];
|
|
@@ -42,8 +44,11 @@ export function mountPublicAssetProxy(host, application, routes, logger) {
|
|
|
42
44
|
let source;
|
|
43
45
|
try {
|
|
44
46
|
source = await application.streamPeer(resolution.peer.address, resolution.peer.announcement.operation, parsed.data, {
|
|
45
|
-
context: createExecutionContext({}),
|
|
46
|
-
|
|
47
|
+
context: createExecutionContext({}),
|
|
48
|
+
signal: abort.signal,
|
|
49
|
+
timeout: TRANSFER_TIMEOUT_MS,
|
|
50
|
+
idleTimeout: IDLE_TIMEOUT_MS,
|
|
51
|
+
window: 1,
|
|
47
52
|
});
|
|
48
53
|
// Keep errors observed while validating the head, before pipeline owns the body.
|
|
49
54
|
source.on('error', ignoreStreamError);
|
|
@@ -68,7 +73,10 @@ export function mountPublicAssetProxy(host, application, routes, logger) {
|
|
|
68
73
|
abort.signal.throwIfAborted();
|
|
69
74
|
context.respond = false;
|
|
70
75
|
context.res.writeHead(head.status, head.headers);
|
|
71
|
-
const body = Readable.from(validatedBody(iterator, length), {
|
|
76
|
+
const body = Readable.from(validatedBody(iterator, length), {
|
|
77
|
+
objectMode: false,
|
|
78
|
+
highWaterMark: ASSET_CHUNK_BYTES,
|
|
79
|
+
});
|
|
72
80
|
await pipeline(body, context.res, { signal: abort.signal });
|
|
73
81
|
}
|
|
74
82
|
catch (error) {
|
|
@@ -89,8 +97,13 @@ export function mountPublicAssetProxy(host, application, routes, logger) {
|
|
|
89
97
|
active.delete(abort);
|
|
90
98
|
}
|
|
91
99
|
});
|
|
92
|
-
return {
|
|
93
|
-
|
|
100
|
+
return {
|
|
101
|
+
close() {
|
|
102
|
+
closed = true;
|
|
103
|
+
for (const abort of active)
|
|
104
|
+
abort.abort(new Error('Public transfer shutdown'));
|
|
105
|
+
},
|
|
106
|
+
};
|
|
94
107
|
}
|
|
95
108
|
async function* validatedBody(iterator, expectedLength) {
|
|
96
109
|
let bytes = 0;
|
|
@@ -123,5 +136,7 @@ function emptyResponse(context, status) {
|
|
|
123
136
|
context.res.writeHead(status, { 'content-length': '0', 'cache-control': 'no-store' });
|
|
124
137
|
context.res.end();
|
|
125
138
|
}
|
|
126
|
-
function ignoreStreamError() {
|
|
139
|
+
function ignoreStreamError() {
|
|
140
|
+
/* Handled by iterator or pipeline. */
|
|
141
|
+
}
|
|
127
142
|
//# sourceMappingURL=public-asset-proxy.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public-asset-proxy.js","sourceRoot":"","sources":["../../src/runtime/public-asset-proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAIvD,OAAO,EACL,iBAAiB,
|
|
1
|
+
{"version":3,"file":"public-asset-proxy.js","sourceRoot":"","sources":["../../src/runtime/public-asset-proxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rsc-initial-context.d.ts","sourceRoot":"","sources":["../../src/runtime/rsc-initial-context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rsc-initial-context.d.ts","sourceRoot":"","sources":["../../src/runtime/rsc-initial-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAK1D,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,iCAAiC,CAAC;AAMzC,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAElE,UAAU,oBAAoB;IAC5B,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC7E,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;CAClF;AAED,UAAU,oBAAoB;IAC5B,IAAI,CACF,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;AAED,wBAAsB,qBAAqB,CAAC,OAAO,EAAE;IACnD,QAAQ,CAAC,WAAW,EAAE,oBAAoB,CAAC;IAC3C,QAAQ,CAAC,YAAY,EAAE,wBAAwB,CAAC;IAChD,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,sBAAsB,EAAE,aAAa,CAAC,CAAC;IAC7D,QAAQ,CAAC,GAAG,EAAE,oBAAoB,CAAC;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B,GAAG,OAAO,CAAC;IACV,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxC,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC;CACvC,CAAC,CAgBD"}
|
|
@@ -1,16 +1,12 @@
|
|
|
1
|
-
import { createHash } from 'node:crypto';
|
|
2
1
|
import { createExecutionContext } from '@hile/context';
|
|
3
|
-
import { BROWSER_API_COOKIES_CONTEXT_KEY,
|
|
2
|
+
import { BROWSER_API_COOKIES_CONTEXT_KEY, } from '@zlooks.cn/browser-api';
|
|
4
3
|
import { GLOBAL_CONFIG_RSC_PARAM, serializeGlobalConfigRscSnapshot, } from '@zlooks.cn/global-config-shared';
|
|
5
|
-
import {
|
|
4
|
+
import { readUserShell as callUserShell, USER_RSC_SESSION_PARAM, } from '@zlooks.cn/user-shared';
|
|
6
5
|
import { USER_SESSION_COOKIE } from '@zlooks.cn/utils';
|
|
7
6
|
import { serializeZlooksRscShellContext, ZLOOKS_RSC_SHELL_CONTEXT_PARAM, } from '@zlooks.cn/ui/shell-context';
|
|
8
7
|
import { listGatewayNavigation } from './rsc-navigation.js';
|
|
9
|
-
const RSC_SHELL_CLIENT_KEY = createHash('sha256')
|
|
10
|
-
.update('zlooks:gateway:rsc-shell:v1')
|
|
11
|
-
.digest('hex');
|
|
12
8
|
export async function readRscInitialContext(options) {
|
|
13
|
-
const user = await
|
|
9
|
+
const user = await readGatewayUserShell(options);
|
|
14
10
|
const shell = {
|
|
15
11
|
navigation: listGatewayNavigation(options.rsc, options.policy),
|
|
16
12
|
origin: options.origin,
|
|
@@ -26,14 +22,9 @@ export async function readRscInitialContext(options) {
|
|
|
26
22
|
}
|
|
27
23
|
return { params, shell };
|
|
28
24
|
}
|
|
29
|
-
async function
|
|
25
|
+
async function readGatewayUserShell(options) {
|
|
30
26
|
try {
|
|
31
|
-
|
|
32
|
-
method: 'GET',
|
|
33
|
-
path: '/api/user/shell',
|
|
34
|
-
clientKey: RSC_SHELL_CLIENT_KEY,
|
|
35
|
-
});
|
|
36
|
-
const response = parseUserBrowserApiProviderResponse(await options.application.call(USER_SERVICE_NAMESPACE, USER_BROWSER_API_OPERATION, request, {
|
|
27
|
+
return await callUserShell(options.application, {
|
|
37
28
|
context: createExecutionContext(options.sessionToken
|
|
38
29
|
? {
|
|
39
30
|
[BROWSER_API_COOKIES_CONTEXT_KEY]: {
|
|
@@ -44,14 +35,7 @@ async function readUserShell(options) {
|
|
|
44
35
|
timeout: 1_500,
|
|
45
36
|
retries: 0,
|
|
46
37
|
...(options.signal ? { signal: options.signal } : {}),
|
|
47
|
-
})
|
|
48
|
-
if (response.status !== 200) {
|
|
49
|
-
throw new Error(`User shell projection failed with status ${response.status}`);
|
|
50
|
-
}
|
|
51
|
-
if (isBrowserApiFailure(response.body)) {
|
|
52
|
-
throw new Error(`User shell projection failed with code ${response.body.code}`);
|
|
53
|
-
}
|
|
54
|
-
return parseUserShellView(response.body.data);
|
|
38
|
+
});
|
|
55
39
|
}
|
|
56
40
|
catch (error) {
|
|
57
41
|
if (options.signal?.aborted) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rsc-initial-context.js","sourceRoot":"","sources":["../../src/runtime/rsc-initial-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"rsc-initial-context.js","sourceRoot":"","sources":["../../src/runtime/rsc-initial-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAGvD,OAAO,EACL,+BAA+B,GAEhC,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,uBAAuB,EACvB,gCAAgC,GAEjC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,aAAa,IAAI,aAAa,EAC9B,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EACL,8BAA8B,EAC9B,8BAA8B,GAE/B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAiBzD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,OAU3C;IAIC,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACjD,MAAM,KAAK,GAA0B;QACnC,UAAU,EAAE,qBAAqB,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC;QAC9D,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,IAAI;KACL,CAAC;IACF,MAAM,MAAM,GAA2B;QACrC,CAAC,uBAAuB,CAAC,EAAE,gCAAgC,CAAC,OAAO,CAAC,YAAY,CAAC;QACjF,CAAC,8BAA8B,CAAC,EAAE,8BAA8B,CAAC,KAAK,CAAC;KACxE,CAAC;IACF,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;QACzB,MAAM,CAAC,sBAAsB,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IACxD,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAC3B,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,OAKnC;IACC,IAAI,CAAC;QACH,OAAO,MAAM,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE;YAC9C,OAAO,EAAE,sBAAsB,CAAoB,OAAO,CAAC,YAAY;gBACrE,CAAC,CAAC;oBACE,CAAC,+BAA+B,CAAC,EAAE;wBACjC,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC,YAAY;qBAC5C;iBACF;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,CAAC;YACV,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtD,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;YAC5B,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;QAC5E,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;YAClB,GAAG,EAAE,KAAK;YACV,KAAK,EAAE,+BAA+B;SACvC,EAAE,sCAAsC,CAAC,CAAC;QAC3C,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IACnC,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type HttpNext from '@hile/http-next';
|
|
2
|
+
import type { Logger } from '@hile/logger';
|
|
3
|
+
import type { Application } from '@hile/micro';
|
|
4
|
+
type SitemapMiddleware = Parameters<HttpNext['use']>[0];
|
|
5
|
+
type GatewayHost = {
|
|
6
|
+
use(middleware: SitemapMiddleware): unknown;
|
|
7
|
+
};
|
|
8
|
+
type SitemapApplication = Pick<Application, 'call'>;
|
|
9
|
+
/** Projects the internal Sitemap service onto the Gateway's canonical public path. */
|
|
10
|
+
export declare function mountSitemapHttp(host: GatewayHost, application: SitemapApplication, logger: Pick<Logger, 'error'>): void;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=sitemap-http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sitemap-http.d.ts","sourceRoot":"","sources":["../../src/runtime/sitemap-http.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,QAAQ,MAAM,iBAAiB,CAAC;AAC5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAQ/C,KAAK,iBAAiB,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,KAAK,WAAW,GAAG;IAAE,GAAG,CAAC,UAAU,EAAE,iBAAiB,GAAG,OAAO,CAAA;CAAE,CAAC;AACnE,KAAK,kBAAkB,GAAG,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAOpD,sFAAsF;AACtF,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,WAAW,EACjB,WAAW,EAAE,kBAAkB,EAC/B,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,IAAI,CAwCN"}
|