@jakuta-inc/worker-proxy 6.0.0 → 6.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -69,7 +69,7 @@ export interface Route {
|
|
|
69
69
|
readonly rewrite: PathRewrite;
|
|
70
70
|
}
|
|
71
71
|
/**
|
|
72
|
-
* Result of probing a backend's `/
|
|
72
|
+
* Result of probing a backend's Jakuta `/status` endpoint.
|
|
73
73
|
*
|
|
74
74
|
* @field status - `"ok"` if the backend responded with a 2xx, `"error"` on non-2xx or network failure
|
|
75
75
|
* @field probeUrl - The full URL that was probed, useful for error reporting
|
|
@@ -155,7 +155,7 @@ export interface ProxyHandler {
|
|
|
155
155
|
* Spread the result into your `routes` array; do not hand-maintain the
|
|
156
156
|
* rewrite.
|
|
157
157
|
*
|
|
158
|
-
* @why
|
|
158
|
+
* @why Prevents each Worker from hand-writing the admin login rewrite because admin-shell's browser paths and admin-api's server paths intentionally differ.
|
|
159
159
|
* @param adminBaseUrl - Origin of the jakuta-admin API (scheme + host, no path)
|
|
160
160
|
* @returns A Route that matches `/auth` / `/auth/*` and forwards to `adminBaseUrl/api/auth/*`
|
|
161
161
|
*/
|
|
@@ -177,7 +177,7 @@ export declare function createAdminAuthRoute(adminBaseUrl: string): Route;
|
|
|
177
177
|
* handoff). There is no per-route override. See the `Backend` doc comment for
|
|
178
178
|
* why this is unrepresentable state, not a missing feature.
|
|
179
179
|
*
|
|
180
|
-
* @why
|
|
180
|
+
* @why Centralizes host allowlisting, backend URL normalization, and cookie-transform routing because individual worker entries must not diverge on those security rules.
|
|
181
181
|
* @param config - Declarative host allowlist, route list, and health-check hook
|
|
182
182
|
* @returns A ProxyHandler whose `handleRequest` dispatches the inbound request
|
|
183
183
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"same-origin-proxy.d.ts","sourceRoot":"","sources":["../src/same-origin-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;AAE1D,UAAU,WAAW;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,OAAO,GACf,CAAC,WAAW,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,GAC1C,CAAC,WAAW,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC7B;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,CAAA;CAAE,CAAC;AAErF;;;;;;;;GAQG;AACH,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;CAC/B;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC7B;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,SAAS,OAAO,EAAE,CAAC;IAC1C,QAAQ,CAAC,mBAAmB,EAAE,CAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,KACvC,QAAQ,CAAC;CACf,CAAC;AAEN;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;CACxC;AAED;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GACpB;IAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAA;CAAE,GAC9D;IAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAA;CAAE,CAAC;AAEhC;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;CACvC;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,aAAa,CAAC,aAAa,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC9D;
|
|
1
|
+
{"version":3,"file":"same-origin-proxy.d.ts","sourceRoot":"","sources":["../src/same-origin-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,CAAC,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;AAE1D,UAAU,WAAW;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,MAAM,OAAO,GACf,CAAC,WAAW,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC,GAC1C,CAAC,WAAW,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC7B;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,MAAM,CAAA;CAAE,CAAC;AAErF;;;;;;;;GAQG;AACH,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;CAC/B;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,IAAI,GAAG,OAAO,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,gBAAgB,GACxB;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAA;CAAE,GAC7B;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,SAAS,OAAO,EAAE,CAAC;IAC1C,QAAQ,CAAC,mBAAmB,EAAE,CAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,KACvC,QAAQ,CAAC;CACf,CAAC;AAEN;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;CACxC;AAED;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GACpB;IAAE,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,eAAe,EAAE,QAAQ,CAAA;CAAE,GAC9D;IAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAA;CAAE,CAAC;AAEhC;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;CACvC;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,aAAa,CAAC,aAAa,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CAC9D;AAkPD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,KAAK,CAShE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,CA+D3E"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
const HEALTH_TIMEOUT_MS = 5000;
|
|
2
2
|
function stripTrailingSlash(originUrl) {
|
|
3
|
-
|
|
3
|
+
if (originUrl.endsWith("/")) {
|
|
4
|
+
return originUrl.slice(0, -1);
|
|
5
|
+
}
|
|
6
|
+
return originUrl;
|
|
4
7
|
}
|
|
5
8
|
function jsonErrorResponse(errorInput) {
|
|
6
9
|
return new Response(JSON.stringify(errorInput.errorBody), {
|
|
@@ -9,12 +12,15 @@ function jsonErrorResponse(errorInput) {
|
|
|
9
12
|
});
|
|
10
13
|
}
|
|
11
14
|
async function probeHealth(probedBaseUrl) {
|
|
12
|
-
const probeUrl = new URL("/
|
|
15
|
+
const probeUrl = new URL("/status", probedBaseUrl).toString();
|
|
13
16
|
try {
|
|
14
17
|
const healthResponse = await fetch(probeUrl, {
|
|
15
18
|
signal: AbortSignal.timeout(HEALTH_TIMEOUT_MS),
|
|
16
19
|
});
|
|
17
|
-
|
|
20
|
+
if (healthResponse.ok) {
|
|
21
|
+
return { status: "ok", probeUrl };
|
|
22
|
+
}
|
|
23
|
+
return { status: "error", probeUrl };
|
|
18
24
|
}
|
|
19
25
|
catch {
|
|
20
26
|
return { status: "error", probeUrl };
|
|
@@ -60,9 +66,18 @@ function stripInboundHandoffHeader(originalHeaders) {
|
|
|
60
66
|
async function forwardToBackend(forwardInput) {
|
|
61
67
|
const target = forwardInput.target;
|
|
62
68
|
const targetUrl = new URL(forwardInput.targetPath + forwardInput.originalUrl.search, target.baseUrl);
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
:
|
|
69
|
+
let forwardedHeaders;
|
|
70
|
+
switch (target.kind) {
|
|
71
|
+
case "venture":
|
|
72
|
+
forwardedHeaders = buildVentureForwardedHeaders(forwardInput.originalRequest.headers);
|
|
73
|
+
break;
|
|
74
|
+
case "admin":
|
|
75
|
+
forwardedHeaders = stripInboundHandoffHeader(forwardInput.originalRequest.headers);
|
|
76
|
+
break;
|
|
77
|
+
default:
|
|
78
|
+
forwardedHeaders = target;
|
|
79
|
+
break;
|
|
80
|
+
}
|
|
66
81
|
try {
|
|
67
82
|
return await fetch(new Request(targetUrl, {
|
|
68
83
|
method: forwardInput.originalRequest.method,
|
|
@@ -97,9 +112,6 @@ function matchPathPrefix(params) {
|
|
|
97
112
|
}
|
|
98
113
|
return { kind: "no_match" };
|
|
99
114
|
}
|
|
100
|
-
function assertNeverPathRewrite(rewrite) {
|
|
101
|
-
throw new Error(`unreachable PathRewrite variant: ${JSON.stringify(rewrite)}`);
|
|
102
|
-
}
|
|
103
115
|
function applyPathRewrite(params) {
|
|
104
116
|
switch (params.rewrite.kind) {
|
|
105
117
|
case "identity":
|
|
@@ -107,7 +119,7 @@ function applyPathRewrite(params) {
|
|
|
107
119
|
case "transform":
|
|
108
120
|
return params.rewrite.apply(params.incomingPath);
|
|
109
121
|
default:
|
|
110
|
-
return
|
|
122
|
+
return params.rewrite;
|
|
111
123
|
}
|
|
112
124
|
}
|
|
113
125
|
function matchAllowedHost(matchParams) {
|
|
@@ -141,9 +153,6 @@ function normalizeRoute(route) {
|
|
|
141
153
|
rewrite: route.rewrite,
|
|
142
154
|
};
|
|
143
155
|
}
|
|
144
|
-
function assertNeverHealthCheck(healthCheck) {
|
|
145
|
-
throw new Error(`unreachable ProxyHealthCheck variant: ${JSON.stringify(healthCheck)}`);
|
|
146
|
-
}
|
|
147
156
|
function normalizeHealthCheck(healthCheck) {
|
|
148
157
|
switch (healthCheck.kind) {
|
|
149
158
|
case "disabled":
|
|
@@ -156,7 +165,7 @@ function normalizeHealthCheck(healthCheck) {
|
|
|
156
165
|
buildHealthResponse: healthCheck.buildHealthResponse,
|
|
157
166
|
};
|
|
158
167
|
default:
|
|
159
|
-
return
|
|
168
|
+
return healthCheck;
|
|
160
169
|
}
|
|
161
170
|
}
|
|
162
171
|
/**
|
|
@@ -170,7 +179,7 @@ function normalizeHealthCheck(healthCheck) {
|
|
|
170
179
|
* Spread the result into your `routes` array; do not hand-maintain the
|
|
171
180
|
* rewrite.
|
|
172
181
|
*
|
|
173
|
-
* @why
|
|
182
|
+
* @why Prevents each Worker from hand-writing the admin login rewrite because admin-shell's browser paths and admin-api's server paths intentionally differ.
|
|
174
183
|
* @param adminBaseUrl - Origin of the jakuta-admin API (scheme + host, no path)
|
|
175
184
|
* @returns A Route that matches `/auth` / `/auth/*` and forwards to `adminBaseUrl/api/auth/*`
|
|
176
185
|
*/
|
|
@@ -201,7 +210,7 @@ export function createAdminAuthRoute(adminBaseUrl) {
|
|
|
201
210
|
* handoff). There is no per-route override. See the `Backend` doc comment for
|
|
202
211
|
* why this is unrepresentable state, not a missing feature.
|
|
203
212
|
*
|
|
204
|
-
* @why
|
|
213
|
+
* @why Centralizes host allowlisting, backend URL normalization, and cookie-transform routing because individual worker entries must not diverge on those security rules.
|
|
205
214
|
* @param config - Declarative host allowlist, route list, and health-check hook
|
|
206
215
|
* @returns A ProxyHandler whose `handleRequest` dispatches the inbound request
|
|
207
216
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"same-origin-proxy.js","sourceRoot":"","sources":["../src/same-origin-proxy.ts"],"names":[],"mappings":"AAuJA,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAE/B,SAAS,kBAAkB,CAAC,SAAiB;IAC3C,
|
|
1
|
+
{"version":3,"file":"same-origin-proxy.js","sourceRoot":"","sources":["../src/same-origin-proxy.ts"],"names":[],"mappings":"AAuJA,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAE/B,SAAS,kBAAkB,CAAC,SAAiB;IAC3C,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAOD,SAAS,iBAAiB,CAAC,UAAkC;IAC3D,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;QACxD,MAAM,EAAE,UAAU,CAAC,UAAU;QAC7B,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,aAAqB;IAC9C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC9D,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE;YAC3C,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,iBAAiB,CAAC;SAC/C,CAAC,CAAC;QACH,IAAI,cAAc,CAAC,EAAE,EAAE,CAAC;YACtB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACpC,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IACvC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IACvC,CAAC;AACH,CAAC;AAED,MAAM,yBAAyB,GAAG,eAAe,CAAC;AAClD,MAAM,4BAA4B,GAAG,iBAAiB,CAAC;AAMvD,SAAS,2BAA2B,CAAC,YAAoB;IACvD,MAAM,MAAM,GAAG,yBAAyB,GAAG,GAAG,CAAC;IAC/C,KAAK,MAAM,aAAa,IAAI,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACpD,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/B,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACvE,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC5B,CAAC;AAMD,SAAS,gBAAgB,CAAC,OAAgB;IACxC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACpC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC5B,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACpC,CAAC;AAED,SAAS,4BAA4B,CAAC,eAAwB;IAC5D,MAAM,SAAS,GAAG,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;IAC/C,SAAS,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACjD,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC3B,IAAI,YAAY,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACpC,MAAM,aAAa,GAAG,2BAA2B,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACtE,IAAI,aAAa,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACnC,SAAS,CAAC,GAAG,CAAC,4BAA4B,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,yBAAyB,CAAC,eAAwB;IACzD,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;IAC9C,QAAQ,CAAC,MAAM,CAAC,4BAA4B,CAAC,CAAC;IAC9C,OAAO,QAAQ,CAAC;AAClB,CAAC;AASD,KAAK,UAAU,gBAAgB,CAAC,YAA0B;IACxD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;IACnC,MAAM,SAAS,GAAG,IAAI,GAAG,CACvB,YAAY,CAAC,UAAU,GAAG,YAAY,CAAC,WAAW,CAAC,MAAM,EACzD,MAAM,CAAC,OAAO,CACf,CAAC;IAEF,IAAI,gBAAyB,CAAC;IAC9B,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,KAAK,SAAS;YACZ,gBAAgB,GAAG,4BAA4B,CAAC,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YACtF,MAAM;QACR,KAAK,OAAO;YACV,gBAAgB,GAAG,yBAAyB,CAAC,YAAY,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;YACnF,MAAM;QACR;YACE,gBAAgB,GAAG,MAAM,CAAC;YAC1B,MAAM;IACV,CAAC;IAED,IAAI,CAAC;QACH,OAAO,MAAM,KAAK,CAChB,IAAI,OAAO,CAAC,SAAS,EAAE;YACrB,MAAM,EAAE,YAAY,CAAC,eAAe,CAAC,MAAM;YAC3C,OAAO,EAAE,gBAAgB;YACzB,IAAI,EAAE,YAAY,CAAC,eAAe,CAAC,IAAI;YACvC,QAAQ,EAAE,QAAQ;SACnB,CAAC,CACH,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,UAAU,GAAe;YAC7B,IAAI,EAAE,qBAAqB;YAC3B,MAAM,EAAE,SAAS,CAAC,QAAQ,EAAE;YAC5B,WAAW,EAAE,MAAM,CAAC,IAAI;SACzB,CAAC;QACF,OAAO,iBAAiB,CAAC;YACvB,UAAU,EAAE,GAAG;YACf,SAAS,EAAE;gBACT,KAAK,EAAE,UAAU,CAAC,IAAI;gBACtB,MAAM,EAAE,UAAU,CAAC,MAAM;gBACzB,OAAO,EAAE,UAAU,CAAC,WAAW;gBAC/B,OAAO,EAAE,4BAA4B,UAAU,CAAC,WAAW,eAAe,UAAU,CAAC,MAAM,wEAAwE;aACpK;SACF,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAWD,SAAS,eAAe,CAAC,MAA6B;IACpD,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;QACtC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC;QACpD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IAC3B,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAC9B,CAAC;AAOD,SAAS,gBAAgB,CAAC,MAA8B;IACtD,QAAQ,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,KAAK,UAAU;YACb,OAAO,MAAM,CAAC,YAAY,CAAC;QAC7B,KAAK,WAAW;YACd,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACnD;YACE,OAAO,MAAM,CAAC,OAAO,CAAC;IAC1B,CAAC;AACH,CAAC;AAWD,SAAS,gBAAgB,CAAC,WAAmC;IAC3D,MAAM,qBAAqB,GAAG,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IAC5E,KAAK,MAAM,WAAW,IAAI,WAAW,CAAC,YAAY,EAAE,CAAC;QACnD,IAAI,qBAAqB,KAAK,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC;YACxD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC7B,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,gBAAgB,EAAE,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;AACjF,CAAC;AAOD,SAAS,0BAA0B,CAAC,cAAuC;IACzE,MAAM,cAAc,GAAG,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9D,OAAO,iBAAiB,CAAC;QACvB,UAAU,EAAE,GAAG;QACf,SAAS,EAAE;YACT,KAAK,EAAE,qBAAqB;YAC5B,IAAI,EAAE,cAAc,CAAC,gBAAgB;YACrC,UAAU,EAAE,cAAc;YAC1B,OAAO,EAAE,4CAA4C,cAAc,CAAC,gBAAgB,sCAAsC,cAAc,+GAA+G;SACxP;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAgB;IACxC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;AAC9E,CAAC;AAED,SAAS,cAAc,CAAC,KAAY;IAClC,OAAO;QACL,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC;QACtC,OAAO,EAAE,KAAK,CAAC,OAAO;KACvB,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,WAA6B;IACzD,QAAQ,WAAW,CAAC,IAAI,EAAE,CAAC;QACzB,KAAK,UAAU;YACb,OAAO,WAAW,CAAC;QACrB,KAAK,SAAS;YACZ,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,YAAY,EAAE,WAAW,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC;gBAC5D,mBAAmB,EAAE,WAAW,CAAC,mBAAmB;aACrD,CAAC;QACJ;YACE,OAAO,WAAW,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,oBAAoB,CAAC,YAAoB;IACvD,OAAO;QACL,UAAU,EAAE,OAAO;QACnB,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,CAAC,YAAY,CAAC,EAAE;QACpE,OAAO,EAAE;YACP,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,CAAC,YAAY,EAAE,EAAE,CAAC,MAAM,GAAG,YAAY;SAC/C;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAA0B;IAC3D,MAAM,sBAAsB,GAAG,MAAM,CAAC,YAAY,CAAC;IACnD,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC3D,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAEvE,OAAO;QACL,KAAK,CAAC,aAAa,CAAC,aAAsB;YACxC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;YAE9C,MAAM,SAAS,GAAG,gBAAgB,CAAC;gBACjC,UAAU;gBACV,YAAY,EAAE,sBAAsB;aACrC,CAAC,CAAC;YACH,IAAI,SAAS,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAClC,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,eAAe,EAAE,0BAA0B,CAAC;wBAC1C,gBAAgB,EAAE,SAAS,CAAC,gBAAgB;wBAC5C,YAAY,EAAE,sBAAsB;qBACrC,CAAC;iBACH,CAAC;YACJ,CAAC;YAED,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;YAErC,IACE,qBAAqB,CAAC,IAAI,KAAK,SAAS;gBACxC,QAAQ,KAAK,qBAAqB,CAAC,IAAI,EACvC,CAAC;gBACD,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,qBAAqB,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;oBACvD,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;oBACvD,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAU,CAAC;gBAC9C,CAAC,CAAC,CACH,CAAC;gBACF,MAAM,aAAa,GAAsC,EAAE,CAAC;gBAC5D,KAAK,MAAM,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,YAAY,EAAE,CAAC;oBAC/C,aAAa,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;gBACpC,CAAC;gBACD,MAAM,eAAe,GAAG,qBAAqB,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;gBACjF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;YAC5C,CAAC;YAED,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;gBACrC,MAAM,KAAK,GAAG,eAAe,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;gBACtE,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBAC3B,MAAM,aAAa,GAAG,gBAAgB,CAAC;wBACrC,OAAO,EAAE,KAAK,CAAC,OAAO;wBACtB,YAAY,EAAE,QAAQ;qBACvB,CAAC,CAAC;oBACH,MAAM,eAAe,GAAG,MAAM,gBAAgB,CAAC;wBAC7C,eAAe,EAAE,aAAa;wBAC9B,WAAW,EAAE,UAAU;wBACvB,MAAM,EAAE,KAAK,CAAC,MAAM;wBACpB,UAAU,EAAE,aAAa;qBAC1B,CAAC,CAAC;oBACH,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;gBAC5C,CAAC;YACH,CAAC;YAED,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QAC5B,CAAC;KACF,CAAC;AACJ,CAAC"}
|