@hoox-sh/hoox-shared 1.4.0 → 1.6.0
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 +6 -0
- package/dist/agent-config-fields.d.ts +5 -0
- package/dist/agent-config-fields.d.ts.map +1 -1
- package/dist/agent-config-fields.js +21 -29
- package/dist/analytics.d.ts +3 -4
- package/dist/analytics.d.ts.map +1 -1
- package/dist/analytics.js +64 -19
- package/dist/api-client.js +12 -21
- package/dist/colors.js +5 -21
- package/dist/config.d.ts +10 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +267 -51
- package/dist/cron-handler.js +0 -16
- package/dist/d1/index.js +8 -25
- package/dist/d1/repository.js +3 -19
- package/dist/d1/schemas.js +4 -20
- package/dist/dashboard-manifest.d.ts +2 -1
- package/dist/dashboard-manifest.d.ts.map +1 -1
- package/dist/dashboard-manifest.js +37 -33
- package/dist/entitlements.d.ts +46 -0
- package/dist/entitlements.d.ts.map +1 -0
- package/dist/entitlements.js +15 -0
- package/dist/errors.d.ts +1 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +7 -23
- package/dist/exchange-client.d.ts +0 -19
- package/dist/exchange-client.d.ts.map +1 -1
- package/dist/exchange-client.js +1 -83
- package/dist/exchanges/base-exchange-client.d.ts.map +1 -1
- package/dist/exchanges/base-exchange-client.js +4 -19
- package/dist/exchanges/index.js +4 -19
- package/dist/format-time.js +2 -18
- package/dist/formatters.js +12 -28
- package/dist/health.js +3 -19
- package/dist/index.d.ts +7 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3568 -3766
- package/dist/kill-switch.js +12 -20
- package/dist/kvKeys.d.ts +8 -0
- package/dist/kvKeys.d.ts.map +1 -1
- package/dist/kvKeys.js +42 -46
- package/dist/kvUtils.js +8 -24
- package/dist/legal.js +5 -21
- package/dist/middleware/auth.d.ts +9 -0
- package/dist/middleware/auth.d.ts.map +1 -1
- package/dist/middleware/auth.js +9 -25
- package/dist/middleware/cors.js +4 -20
- package/dist/middleware/index.js +144 -165
- package/dist/middleware/logger.d.ts +2 -0
- package/dist/middleware/logger.d.ts.map +1 -1
- package/dist/middleware/logger.js +9 -25
- package/dist/middleware/rate-limit.d.ts +7 -0
- package/dist/middleware/rate-limit.d.ts.map +1 -1
- package/dist/middleware/rate-limit.js +5 -20
- package/dist/middleware/security-headers.js +2 -18
- package/dist/middleware/validate.d.ts +2 -0
- package/dist/middleware/validate.d.ts.map +1 -1
- package/dist/middleware/validate.js +5 -21
- package/dist/middleware/wait-until.js +2 -18
- package/dist/operator-transport.js +13 -17
- package/dist/path-utils.d.ts.map +1 -1
- package/dist/path-utils.js +28 -34
- package/dist/queue-handler.d.ts.map +1 -1
- package/dist/queue-handler.js +19 -24
- package/dist/router.d.ts +5 -0
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +0 -16
- package/dist/schemas/index.js +75 -50
- package/dist/schemas/registry.d.ts.map +1 -1
- package/dist/schemas/registry.js +33 -21
- package/dist/schemas/validators.d.ts.map +1 -1
- package/dist/schemas/validators.js +41 -43
- package/dist/service-bindings.d.ts +4 -0
- package/dist/service-bindings.d.ts.map +1 -1
- package/dist/service-bindings.js +13 -29
- package/dist/session.d.ts +10 -3
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +111 -51
- package/dist/sse.d.ts.map +1 -1
- package/dist/sse.js +34 -24
- package/dist/stores/config-store.d.ts +2 -50
- package/dist/stores/config-store.d.ts.map +1 -1
- package/dist/stores/config-store.js +153 -156
- package/dist/stores/service-store.d.ts +2 -192
- package/dist/stores/service-store.d.ts.map +1 -1
- package/dist/stores/service-store.js +40 -35
- package/dist/stores/ui-store.d.ts +2 -48
- package/dist/stores/ui-store.d.ts.map +1 -1
- package/dist/stores/ui-store.js +0 -16
- package/dist/tenant.d.ts +62 -0
- package/dist/tenant.d.ts.map +1 -0
- package/dist/tenant.js +56 -0
- package/dist/test-utils.js +11 -27
- package/dist/types.d.ts +10 -3
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +29 -24
- package/dist/wizard/engine.d.ts.map +1 -1
- package/dist/wizard/engine.js +33 -27
- package/dist/wizard/index.d.ts +1 -0
- package/dist/wizard/index.d.ts.map +1 -1
- package/dist/wizard/index.js +48 -39
- package/dist/wizard/persistence.d.ts +4 -0
- package/dist/wizard/persistence.d.ts.map +1 -1
- package/dist/wizard/persistence.js +7 -19
- package/dist/wizard/presets.d.ts.map +1 -1
- package/dist/wizard/presets.js +13 -25
- package/dist/wizard/types.d.ts +6 -0
- package/dist/wizard/types.d.ts.map +1 -1
- package/dist/wizard/types.js +5 -0
- package/package.json +7 -2
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
configurable: true,
|
|
13
|
-
set: __exportSetter.bind(all, name)
|
|
14
|
-
});
|
|
2
|
+
var __esm = (fn, res, err) => () => {
|
|
3
|
+
if (fn)
|
|
4
|
+
try {
|
|
5
|
+
res = fn(fn = 0);
|
|
6
|
+
} catch (e) {
|
|
7
|
+
err = [e];
|
|
8
|
+
}
|
|
9
|
+
if (err)
|
|
10
|
+
throw err[0];
|
|
11
|
+
return res;
|
|
15
12
|
};
|
|
16
|
-
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
17
13
|
|
|
18
14
|
// src/operator-transport.ts
|
|
19
15
|
function stripTrailingSlashes(url) {
|
|
@@ -84,8 +80,8 @@ var init_operator_transport = __esm(() => {
|
|
|
84
80
|
init_operator_transport();
|
|
85
81
|
|
|
86
82
|
export {
|
|
87
|
-
|
|
88
|
-
operatorUrl,
|
|
83
|
+
buildOperatorAuthHeaders,
|
|
89
84
|
hasOperatorClientCredentials,
|
|
90
|
-
|
|
85
|
+
operatorUrl,
|
|
86
|
+
resolveOperatorTransportProfile
|
|
91
87
|
};
|
package/dist/path-utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path-utils.d.ts","sourceRoot":"","sources":["../src/path-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkCH;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAA;CAAE,CAAC;AAEjE,+EAA+E;AAC/E,MAAM,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"path-utils.d.ts","sourceRoot":"","sources":["../src/path-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAkCH;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAA;CAAE,CAAC;AAEjE,+EAA+E;AAC/E,MAAM,MAAM,iBAAiB,GAC3B,KAAK,GAAG,KAAK,GAAG,YAAY,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEnD,0CAA0C;AAC1C,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,iDAAiD;IACjD,MAAM,EAAE,iBAAiB,CAAC;IAC1B,qDAAqD;IACrD,OAAO,EAAE;QACP,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;QACnB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC3B,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,4EAA4E;AAC5E,MAAM,WAAW,kBAAkB;IACjC,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;CACnB;AA4BD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,WAAW,IAAI,QAAQ,CAgBtC;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAgBpD;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,QAAQ,CAEpD;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,GAAG,IAAI,CAYzD;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CA4B1D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,GAAE,MAAsB,GAC/B,MAAM,GAAG,IAAI,CAQf;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,CAAC,EAAE;IAC/C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,2DAA2D;IAC3D,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,iBAAiB,CAiEpB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAOnE;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,QAAQ,CAiC9D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAStD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkBvE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,eAAe,IAAI,QAAQ,CAE1C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,IAAI,QAAQ,CAE3C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,IAAI,QAAQ,CAEzC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,IAAI,QAAQ,CAE9C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,IAAI,QAAQ,CAE3C"}
|
package/dist/path-utils.js
CHANGED
|
@@ -1,20 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __returnValue = (v) => v;
|
|
4
|
-
function __exportSetter(name, newValue) {
|
|
5
|
-
this[name] = __returnValue.bind(null, newValue);
|
|
6
|
-
}
|
|
7
|
-
var __export = (target, all) => {
|
|
8
|
-
for (var name in all)
|
|
9
|
-
__defProp(target, name, {
|
|
10
|
-
get: all[name],
|
|
11
|
-
enumerable: true,
|
|
12
|
-
configurable: true,
|
|
13
|
-
set: __exportSetter.bind(all, name)
|
|
14
|
-
});
|
|
15
|
-
};
|
|
16
|
-
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
17
|
-
|
|
18
2
|
// src/path-utils.ts
|
|
19
3
|
import {
|
|
20
4
|
existsSync,
|
|
@@ -24,10 +8,20 @@ import {
|
|
|
24
8
|
chmodSync
|
|
25
9
|
} from "fs";
|
|
26
10
|
import { homedir } from "os";
|
|
27
|
-
import { dirname, join, resolve } from "path";
|
|
11
|
+
import { dirname, join, resolve, sep } from "path";
|
|
28
12
|
function createHooxPath(path) {
|
|
29
13
|
return path;
|
|
30
14
|
}
|
|
15
|
+
function isInsideDir(child, parent) {
|
|
16
|
+
const resolvedChild = resolve(child);
|
|
17
|
+
const resolvedParent = resolve(parent);
|
|
18
|
+
const cmpChild = process.platform === "win32" ? resolvedChild.toLowerCase() : resolvedChild;
|
|
19
|
+
const cmpParent = process.platform === "win32" ? resolvedParent.toLowerCase() : resolvedParent;
|
|
20
|
+
if (cmpChild === cmpParent)
|
|
21
|
+
return true;
|
|
22
|
+
const prefix = cmpParent.endsWith(sep) ? cmpParent : cmpParent + sep;
|
|
23
|
+
return cmpChild.startsWith(prefix);
|
|
24
|
+
}
|
|
31
25
|
function getHooxHome() {
|
|
32
26
|
try {
|
|
33
27
|
const override = process.env.HOOX_HOME?.trim();
|
|
@@ -191,7 +185,7 @@ function resolveHooxPath(relativePath) {
|
|
|
191
185
|
const fullPath = join(hooxHome, normalizedPath);
|
|
192
186
|
const resolvedPath = resolve(fullPath);
|
|
193
187
|
const resolvedHome = resolve(hooxHome);
|
|
194
|
-
if (!resolvedPath
|
|
188
|
+
if (!isInsideDir(resolvedPath, resolvedHome)) {
|
|
195
189
|
throw new Error(`Resolved path "${resolvedPath}" is outside Hoox home directory`);
|
|
196
190
|
}
|
|
197
191
|
return createHooxPath(resolvedPath);
|
|
@@ -201,7 +195,7 @@ function isWithinHooxHome(path) {
|
|
|
201
195
|
const hooxHome = getHooxHome();
|
|
202
196
|
const resolvedPath = resolve(path);
|
|
203
197
|
const resolvedHome = resolve(hooxHome);
|
|
204
|
-
return resolvedPath
|
|
198
|
+
return isInsideDir(resolvedPath, resolvedHome);
|
|
205
199
|
} catch {
|
|
206
200
|
return false;
|
|
207
201
|
}
|
|
@@ -236,20 +230,20 @@ function getHooxStatePath() {
|
|
|
236
230
|
return resolveHooxPath("data/state.json");
|
|
237
231
|
}
|
|
238
232
|
export {
|
|
239
|
-
|
|
240
|
-
resolveHooxPath,
|
|
241
|
-
rememberMonorepoRoot,
|
|
242
|
-
isWithinHooxHome,
|
|
243
|
-
isHooxSetupRoot,
|
|
244
|
-
getTuiEntryCandidates,
|
|
245
|
-
getRememberedMonorepoRoot,
|
|
246
|
-
getRememberedMonorepoPath,
|
|
247
|
-
getRelativeHooxPath,
|
|
248
|
-
getHooxWranglerPath,
|
|
249
|
-
getHooxStatePath,
|
|
250
|
-
getHooxRepoPath,
|
|
251
|
-
getHooxHome,
|
|
252
|
-
getHooxDataDir,
|
|
233
|
+
findHooxSetupRoot,
|
|
253
234
|
getHooxConfigDir,
|
|
254
|
-
|
|
235
|
+
getHooxDataDir,
|
|
236
|
+
getHooxHome,
|
|
237
|
+
getHooxRepoPath,
|
|
238
|
+
getHooxStatePath,
|
|
239
|
+
getHooxWranglerPath,
|
|
240
|
+
getRelativeHooxPath,
|
|
241
|
+
getRememberedMonorepoPath,
|
|
242
|
+
getRememberedMonorepoRoot,
|
|
243
|
+
getTuiEntryCandidates,
|
|
244
|
+
isHooxSetupRoot,
|
|
245
|
+
isWithinHooxHome,
|
|
246
|
+
rememberMonorepoRoot,
|
|
247
|
+
resolveHooxPath,
|
|
248
|
+
resolveHooxRuntimeRoot
|
|
255
249
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue-handler.d.ts","sourceRoot":"","sources":["../src/queue-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAW,MAAM,2BAA2B,CAAC;AAEvE,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,+CAA+C;IAC/C,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAC7E,sDAAsD;IACtD,OAAO,CAAC,EAAE,CACR,OAAO,EAAE,CAAC,EACV,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,KACjB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,iEAAiE;IACjE,KAAK,CAAC,EAAE,CACN,OAAO,EAAE,CAAC,EACV,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,KACV,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,oCAAoC;IACpC,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;QACxC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;KAC1C,CAAC;IACF;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAkCD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"queue-handler.d.ts","sourceRoot":"","sources":["../src/queue-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAW,MAAM,2BAA2B,CAAC;AAEvE,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,uCAAuC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,+CAA+C;IAC/C,SAAS,EAAE,CAAC,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;IAC7E,sDAAsD;IACtD,OAAO,CAAC,EAAE,CACR,OAAO,EAAE,CAAC,EACV,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,KACjB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,iEAAiE;IACjE,KAAK,CAAC,EAAE,CACN,OAAO,EAAE,CAAC,EACV,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,KACV,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,oCAAoC;IACpC,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;QACxC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;KAC1C,CAAC;IACF;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAkCD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,IA2ErD,OAAO,YAAY,CAAC,CAAC,CAAC,KAAG,OAAO,CAAC,IAAI,CAAC,CAGrD"}
|
package/dist/queue-handler.js
CHANGED
|
@@ -1,20 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __returnValue = (v) => v;
|
|
4
|
-
function __exportSetter(name, newValue) {
|
|
5
|
-
this[name] = __returnValue.bind(null, newValue);
|
|
6
|
-
}
|
|
7
|
-
var __export = (target, all) => {
|
|
8
|
-
for (var name in all)
|
|
9
|
-
__defProp(target, name, {
|
|
10
|
-
get: all[name],
|
|
11
|
-
enumerable: true,
|
|
12
|
-
configurable: true,
|
|
13
|
-
set: __exportSetter.bind(all, name)
|
|
14
|
-
});
|
|
15
|
-
};
|
|
16
|
-
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
17
|
-
|
|
18
2
|
// src/queue-handler.ts
|
|
19
3
|
async function mapPool(items, concurrency, fn) {
|
|
20
4
|
if (items.length === 0)
|
|
@@ -49,22 +33,33 @@ function createQueueHandler(options) {
|
|
|
49
33
|
} = options;
|
|
50
34
|
const concurrency = typeof concurrencyOpt === "number" && Number.isFinite(concurrencyOpt) && concurrencyOpt >= 1 ? Math.floor(concurrencyOpt) : 1;
|
|
51
35
|
async function processMessage(msg) {
|
|
52
|
-
const
|
|
36
|
+
const delivery = Math.max(1, typeof msg.attempts === "number" && Number.isFinite(msg.attempts) ? msg.attempts : 1);
|
|
37
|
+
const retryIndex = delivery - 1;
|
|
53
38
|
const logId = `[${msg.id}]`;
|
|
54
39
|
try {
|
|
55
|
-
logger?.info(`${logId} Processing message (attempt ${
|
|
56
|
-
await onMessage(msg.body,
|
|
40
|
+
logger?.info(`${logId} Processing message (attempt ${delivery})`);
|
|
41
|
+
await onMessage(msg.body, retryIndex);
|
|
57
42
|
logger?.info(`${logId} Message processed successfully`);
|
|
43
|
+
msg.ack();
|
|
58
44
|
} catch (error) {
|
|
59
45
|
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
60
|
-
if (
|
|
61
|
-
const delaySeconds = backoffDelays[
|
|
62
|
-
logger?.info(`${logId} Retrying in ${delaySeconds}s (attempt ${
|
|
63
|
-
|
|
46
|
+
if (retryIndex < maxRetries) {
|
|
47
|
+
const delaySeconds = backoffDelays[retryIndex] ?? backoffDelays[backoffDelays.length - 1] ?? 0;
|
|
48
|
+
logger?.info(`${logId} Retrying in ${delaySeconds}s (attempt ${delivery + 1}/${maxRetries + 1})`);
|
|
49
|
+
try {
|
|
50
|
+
await onRetry?.(msg.body, retryIndex, errorMsg, delaySeconds);
|
|
51
|
+
} catch (hookError) {
|
|
52
|
+
logger?.error(`${logId} onRetry failed: ${hookError instanceof Error ? hookError.message : String(hookError)}`);
|
|
53
|
+
}
|
|
64
54
|
msg.retry({ delaySeconds });
|
|
65
55
|
} else {
|
|
66
56
|
logger?.error(`${logId} Max retries exceeded (${maxRetries + 1} attempts), moving to DLQ`);
|
|
67
|
-
|
|
57
|
+
try {
|
|
58
|
+
await onDLQ?.(msg.body, retryIndex, errorMsg);
|
|
59
|
+
} catch (hookError) {
|
|
60
|
+
logger?.error(`${logId} onDLQ failed: ${hookError instanceof Error ? hookError.message : String(hookError)}`);
|
|
61
|
+
}
|
|
62
|
+
msg.ack();
|
|
68
63
|
}
|
|
69
64
|
}
|
|
70
65
|
}
|
package/dist/router.d.ts
CHANGED
|
@@ -11,5 +11,10 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import type { Router } from "./types/router";
|
|
13
13
|
export type { Handler, MiddlewareHandler, RouteParams } from "./types/router";
|
|
14
|
+
/**
|
|
15
|
+
* Create a Worker router with exact-path and `:param` matching.
|
|
16
|
+
* Last registered route for a method+path wins. Unmatched methods on a
|
|
17
|
+
* known path return 405; unknown paths return 404.
|
|
18
|
+
*/
|
|
14
19
|
export declare function createRouter<TEnv = unknown>(): Router<TEnv>;
|
|
15
20
|
//# sourceMappingURL=router.d.ts.map
|
package/dist/router.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AAEH,OAAO,KAAK,EAKV,MAAM,EACP,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE9E,wBAAgB,YAAY,CAAC,IAAI,GAAG,OAAO,KAAK,MAAM,CAAC,IAAI,CAAC,CA6M3D"}
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;GAMG;AAEH,OAAO,KAAK,EAKV,MAAM,EACP,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE9E;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,IAAI,GAAG,OAAO,KAAK,MAAM,CAAC,IAAI,CAAC,CA6M3D"}
|
package/dist/router.js
CHANGED
|
@@ -1,20 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __returnValue = (v) => v;
|
|
4
|
-
function __exportSetter(name, newValue) {
|
|
5
|
-
this[name] = __returnValue.bind(null, newValue);
|
|
6
|
-
}
|
|
7
|
-
var __export = (target, all) => {
|
|
8
|
-
for (var name in all)
|
|
9
|
-
__defProp(target, name, {
|
|
10
|
-
get: all[name],
|
|
11
|
-
enumerable: true,
|
|
12
|
-
configurable: true,
|
|
13
|
-
set: __exportSetter.bind(all, name)
|
|
14
|
-
});
|
|
15
|
-
};
|
|
16
|
-
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
17
|
-
|
|
18
2
|
// src/router.ts
|
|
19
3
|
function createRouter() {
|
|
20
4
|
const routes = [];
|
package/dist/schemas/index.js
CHANGED
|
@@ -1,20 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __returnValue = (v) => v;
|
|
4
|
-
function __exportSetter(name, newValue) {
|
|
5
|
-
this[name] = __returnValue.bind(null, newValue);
|
|
6
|
-
}
|
|
7
|
-
var __export = (target, all) => {
|
|
8
|
-
for (var name in all)
|
|
9
|
-
__defProp(target, name, {
|
|
10
|
-
get: all[name],
|
|
11
|
-
enumerable: true,
|
|
12
|
-
configurable: true,
|
|
13
|
-
set: __exportSetter.bind(all, name)
|
|
14
|
-
});
|
|
15
|
-
};
|
|
16
|
-
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
17
|
-
|
|
18
2
|
// src/schemas/registry.ts
|
|
19
3
|
function deriveCalledBy(manifests) {
|
|
20
4
|
const calledBy = {};
|
|
@@ -121,6 +105,10 @@ var manifests = {
|
|
|
121
105
|
EXCHANGE_TESTNET_SECRET_BINDING: {
|
|
122
106
|
type: "secret",
|
|
123
107
|
description: "Optional unified testnet API secret"
|
|
108
|
+
},
|
|
109
|
+
WALLET_EXECUTE_KEY_BINDING: {
|
|
110
|
+
type: "secret",
|
|
111
|
+
description: "Mesh key for DEX swaps via web3-wallet-worker"
|
|
124
112
|
}
|
|
125
113
|
},
|
|
126
114
|
services: [
|
|
@@ -133,6 +121,11 @@ var manifests = {
|
|
|
133
121
|
binding: "TELEGRAM_SERVICE",
|
|
134
122
|
service: "telegram-worker",
|
|
135
123
|
description: "Notifications"
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
binding: "WEB3_WALLET_SERVICE",
|
|
127
|
+
service: "web3-wallet-worker",
|
|
128
|
+
description: "DEX spot swaps (Uniswap / Jupiter)"
|
|
136
129
|
}
|
|
137
130
|
],
|
|
138
131
|
infrastructure: {
|
|
@@ -230,6 +223,22 @@ var manifests = {
|
|
|
230
223
|
WALLET_MNEMONIC_SECRET: {
|
|
231
224
|
type: "secret",
|
|
232
225
|
description: "Wallet mnemonic phrase"
|
|
226
|
+
},
|
|
227
|
+
WALLET_EXECUTE_KEY_BINDING: {
|
|
228
|
+
type: "secret",
|
|
229
|
+
description: "Mesh key for privileged wallet routes"
|
|
230
|
+
},
|
|
231
|
+
SOLANA_PRIVATE_KEY: {
|
|
232
|
+
type: "secret",
|
|
233
|
+
description: "Solana signing key (base58 seed or Phantom export)"
|
|
234
|
+
},
|
|
235
|
+
JUPITER_API_KEY: {
|
|
236
|
+
type: "secret",
|
|
237
|
+
description: "Jupiter Swap V2 API key"
|
|
238
|
+
},
|
|
239
|
+
RPC_URL_SOLANA: {
|
|
240
|
+
type: "plaintext",
|
|
241
|
+
description: "Solana JSON-RPC URL"
|
|
233
242
|
}
|
|
234
243
|
},
|
|
235
244
|
services: [
|
|
@@ -251,7 +260,10 @@ var manifests = {
|
|
|
251
260
|
INTERNAL_KEY_BINDING: {
|
|
252
261
|
type: "secret",
|
|
253
262
|
description: "Inter-worker auth key"
|
|
254
|
-
}
|
|
263
|
+
},
|
|
264
|
+
OPENAI_API_KEY: { type: "secret", description: "OpenAI API key" },
|
|
265
|
+
ANTHROPIC_API_KEY: { type: "secret", description: "Anthropic API key" },
|
|
266
|
+
GOOGLE_API_KEY: { type: "secret", description: "Google AI API key" }
|
|
255
267
|
},
|
|
256
268
|
services: [
|
|
257
269
|
{
|
|
@@ -467,15 +479,17 @@ var WORKER_CATALOG = WORKER_NAMES.map((name) => {
|
|
|
467
479
|
function getWorkerDefaultEnabled(name) {
|
|
468
480
|
return manifests[name]?.defaultEnabled;
|
|
469
481
|
}
|
|
470
|
-
|
|
471
482
|
// src/schemas/validators.ts
|
|
472
483
|
import { parse } from "jsonc-parser";
|
|
484
|
+
function parseJsoncDocument(content) {
|
|
485
|
+
const errors = [];
|
|
486
|
+
const value = parse(content, errors, { allowTrailingComma: true });
|
|
487
|
+
return { value, errors };
|
|
488
|
+
}
|
|
473
489
|
function validateWranglerJsonc(workerName, manifest, jsoncContent) {
|
|
474
490
|
const errors = [];
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
parsed = parse(jsoncContent);
|
|
478
|
-
} catch {
|
|
491
|
+
const { value: parsed, errors: parseErrors } = parseJsoncDocument(jsoncContent);
|
|
492
|
+
if (parseErrors.length > 0) {
|
|
479
493
|
errors.push({
|
|
480
494
|
worker: workerName,
|
|
481
495
|
severity: "error",
|
|
@@ -506,7 +520,7 @@ function validateWranglerJsonc(workerName, manifest, jsoncContent) {
|
|
|
506
520
|
}
|
|
507
521
|
}
|
|
508
522
|
for (const [name, def] of Object.entries(manifest.vars)) {
|
|
509
|
-
if (def.type === "secret" && !name.endsWith("_BINDING") && !name.endsWith("_SECRET") && !name.startsWith("CLOUDFLARE_") && name !== "TELEGRAM_SECRET_TOKEN" && name !== "TELEGRAM_ALLOWED_CHAT_IDS" && name !== "AUTHORIZED_CHAT_IDS" && name !== "MAILGUN_API_KEY" && name !== "EMAIL_SCAN_SUBJECT" && name !== "DASHBOARD_USER" && name !== "DASHBOARD_PASS" && name !== "SESSION_SECRET" && name !== "AGENT_INTERNAL_KEY") {
|
|
523
|
+
if (def.type === "secret" && !name.endsWith("_BINDING") && !name.endsWith("_SECRET") && !name.startsWith("CLOUDFLARE_") && name !== "TELEGRAM_SECRET_TOKEN" && name !== "TELEGRAM_ALLOWED_CHAT_IDS" && name !== "AUTHORIZED_CHAT_IDS" && name !== "MAILGUN_API_KEY" && name !== "EMAIL_SCAN_SUBJECT" && name !== "DASHBOARD_USER" && name !== "DASHBOARD_PASS" && name !== "SESSION_SECRET" && name !== "AGENT_INTERNAL_KEY" && name !== "OPENAI_API_KEY" && name !== "ANTHROPIC_API_KEY" && name !== "GOOGLE_API_KEY") {
|
|
510
524
|
errors.push({
|
|
511
525
|
worker: workerName,
|
|
512
526
|
severity: "warning",
|
|
@@ -552,10 +566,8 @@ function validateWranglerJsonc(workerName, manifest, jsoncContent) {
|
|
|
552
566
|
}
|
|
553
567
|
function validateRootSecrets(workerName, manifest, rootJsoncContent) {
|
|
554
568
|
const errors = [];
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
parsed = parse(rootJsoncContent);
|
|
558
|
-
} catch {
|
|
569
|
+
const { value: parsed, errors: parseErrors } = parseJsoncDocument(rootJsoncContent);
|
|
570
|
+
if (parseErrors.length > 0) {
|
|
559
571
|
errors.push({
|
|
560
572
|
worker: workerName,
|
|
561
573
|
severity: "error",
|
|
@@ -613,6 +625,11 @@ function validateDevVars(workerName, manifest, devVarsContent) {
|
|
|
613
625
|
}
|
|
614
626
|
return errors;
|
|
615
627
|
}
|
|
628
|
+
function queueProducerBinding(queue) {
|
|
629
|
+
if (queue === "trade-execution")
|
|
630
|
+
return "TRADE_QUEUE";
|
|
631
|
+
return queue.replace(/[^A-Za-z0-9]+/g, "_").toUpperCase();
|
|
632
|
+
}
|
|
616
633
|
function generateWranglerJsonc(manifest) {
|
|
617
634
|
const parts = [];
|
|
618
635
|
parts.push(`{`);
|
|
@@ -679,21 +696,29 @@ function generateWranglerJsonc(manifest) {
|
|
|
679
696
|
parts.push(` ],`);
|
|
680
697
|
}
|
|
681
698
|
if (infra.queues) {
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
699
|
+
const producers = infra.queues.producer ?? [];
|
|
700
|
+
const consumers = infra.queues.consumer ?? [];
|
|
701
|
+
if (producers.length > 0 || consumers.length > 0) {
|
|
702
|
+
const queueParts = [];
|
|
703
|
+
if (producers.length > 0) {
|
|
704
|
+
queueParts.push(` "producers": [`);
|
|
705
|
+
for (const [i, q] of producers.entries()) {
|
|
706
|
+
const comma = i < producers.length - 1 ? "," : "";
|
|
707
|
+
queueParts.push(` { "queue": "${q}", "binding": "${queueProducerBinding(q)}" }${comma}`);
|
|
708
|
+
}
|
|
709
|
+
queueParts.push(consumers.length > 0 ? ` ],` : ` ]`);
|
|
687
710
|
}
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
711
|
+
if (consumers.length > 0) {
|
|
712
|
+
queueParts.push(` "consumers": [`);
|
|
713
|
+
for (const [i, q] of consumers.entries()) {
|
|
714
|
+
const comma = i < consumers.length - 1 ? "," : "";
|
|
715
|
+
queueParts.push(` { "queue": "${q}" }${comma}`);
|
|
716
|
+
}
|
|
717
|
+
queueParts.push(` ]`);
|
|
695
718
|
}
|
|
696
|
-
parts.push(`
|
|
719
|
+
parts.push(` "queues": {`);
|
|
720
|
+
parts.push(...queueParts);
|
|
721
|
+
parts.push(` },`);
|
|
697
722
|
}
|
|
698
723
|
}
|
|
699
724
|
if (infra.durableObjects && infra.durableObjects.length > 0) {
|
|
@@ -736,15 +761,15 @@ function validateAll(workerName, manifest, files) {
|
|
|
736
761
|
};
|
|
737
762
|
}
|
|
738
763
|
export {
|
|
739
|
-
|
|
740
|
-
validateRootSecrets,
|
|
741
|
-
validateDevVars,
|
|
742
|
-
validateAll,
|
|
743
|
-
getWorkerDefaultEnabled,
|
|
744
|
-
generateWranglerJsonc,
|
|
745
|
-
generateDevVars,
|
|
746
|
-
WORKER_NAMES,
|
|
747
|
-
WORKER_MANIFESTS,
|
|
764
|
+
CALLED_BY,
|
|
748
765
|
WORKER_CATALOG,
|
|
749
|
-
|
|
766
|
+
WORKER_MANIFESTS,
|
|
767
|
+
WORKER_NAMES,
|
|
768
|
+
generateDevVars,
|
|
769
|
+
generateWranglerJsonc,
|
|
770
|
+
getWorkerDefaultEnabled,
|
|
771
|
+
validateAll,
|
|
772
|
+
validateDevVars,
|
|
773
|
+
validateRootSecrets,
|
|
774
|
+
validateWranglerJsonc
|
|
750
775
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/schemas/registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/schemas/registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAwejD,qEAAqE;AACrE,eAAO,MAAM,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAA6B,CAAC;AAE7E,sDAAsD;AACtD,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAa,CAAC;AAE1E,gDAAgD;AAChD,eAAO,MAAM,YAAY,EAAE,MAAM,EAAkC,CAAC;AAEpE;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,gFAAgF;AAChF,eAAO,MAAM,cAAc,EAAE,kBAAkB,EAO7C,CAAC;AAEH,6EAA6E;AAC7E,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAEzE"}
|
package/dist/schemas/registry.js
CHANGED
|
@@ -1,20 +1,4 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __returnValue = (v) => v;
|
|
4
|
-
function __exportSetter(name, newValue) {
|
|
5
|
-
this[name] = __returnValue.bind(null, newValue);
|
|
6
|
-
}
|
|
7
|
-
var __export = (target, all) => {
|
|
8
|
-
for (var name in all)
|
|
9
|
-
__defProp(target, name, {
|
|
10
|
-
get: all[name],
|
|
11
|
-
enumerable: true,
|
|
12
|
-
configurable: true,
|
|
13
|
-
set: __exportSetter.bind(all, name)
|
|
14
|
-
});
|
|
15
|
-
};
|
|
16
|
-
var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
|
|
17
|
-
|
|
18
2
|
// src/schemas/registry.ts
|
|
19
3
|
function deriveCalledBy(manifests) {
|
|
20
4
|
const calledBy = {};
|
|
@@ -121,6 +105,10 @@ var manifests = {
|
|
|
121
105
|
EXCHANGE_TESTNET_SECRET_BINDING: {
|
|
122
106
|
type: "secret",
|
|
123
107
|
description: "Optional unified testnet API secret"
|
|
108
|
+
},
|
|
109
|
+
WALLET_EXECUTE_KEY_BINDING: {
|
|
110
|
+
type: "secret",
|
|
111
|
+
description: "Mesh key for DEX swaps via web3-wallet-worker"
|
|
124
112
|
}
|
|
125
113
|
},
|
|
126
114
|
services: [
|
|
@@ -133,6 +121,11 @@ var manifests = {
|
|
|
133
121
|
binding: "TELEGRAM_SERVICE",
|
|
134
122
|
service: "telegram-worker",
|
|
135
123
|
description: "Notifications"
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
binding: "WEB3_WALLET_SERVICE",
|
|
127
|
+
service: "web3-wallet-worker",
|
|
128
|
+
description: "DEX spot swaps (Uniswap / Jupiter)"
|
|
136
129
|
}
|
|
137
130
|
],
|
|
138
131
|
infrastructure: {
|
|
@@ -230,6 +223,22 @@ var manifests = {
|
|
|
230
223
|
WALLET_MNEMONIC_SECRET: {
|
|
231
224
|
type: "secret",
|
|
232
225
|
description: "Wallet mnemonic phrase"
|
|
226
|
+
},
|
|
227
|
+
WALLET_EXECUTE_KEY_BINDING: {
|
|
228
|
+
type: "secret",
|
|
229
|
+
description: "Mesh key for privileged wallet routes"
|
|
230
|
+
},
|
|
231
|
+
SOLANA_PRIVATE_KEY: {
|
|
232
|
+
type: "secret",
|
|
233
|
+
description: "Solana signing key (base58 seed or Phantom export)"
|
|
234
|
+
},
|
|
235
|
+
JUPITER_API_KEY: {
|
|
236
|
+
type: "secret",
|
|
237
|
+
description: "Jupiter Swap V2 API key"
|
|
238
|
+
},
|
|
239
|
+
RPC_URL_SOLANA: {
|
|
240
|
+
type: "plaintext",
|
|
241
|
+
description: "Solana JSON-RPC URL"
|
|
233
242
|
}
|
|
234
243
|
},
|
|
235
244
|
services: [
|
|
@@ -251,7 +260,10 @@ var manifests = {
|
|
|
251
260
|
INTERNAL_KEY_BINDING: {
|
|
252
261
|
type: "secret",
|
|
253
262
|
description: "Inter-worker auth key"
|
|
254
|
-
}
|
|
263
|
+
},
|
|
264
|
+
OPENAI_API_KEY: { type: "secret", description: "OpenAI API key" },
|
|
265
|
+
ANTHROPIC_API_KEY: { type: "secret", description: "Anthropic API key" },
|
|
266
|
+
GOOGLE_API_KEY: { type: "secret", description: "Google AI API key" }
|
|
255
267
|
},
|
|
256
268
|
services: [
|
|
257
269
|
{
|
|
@@ -468,9 +480,9 @@ function getWorkerDefaultEnabled(name) {
|
|
|
468
480
|
return manifests[name]?.defaultEnabled;
|
|
469
481
|
}
|
|
470
482
|
export {
|
|
471
|
-
|
|
472
|
-
WORKER_NAMES,
|
|
473
|
-
WORKER_MANIFESTS,
|
|
483
|
+
CALLED_BY,
|
|
474
484
|
WORKER_CATALOG,
|
|
475
|
-
|
|
485
|
+
WORKER_MANIFESTS,
|
|
486
|
+
WORKER_NAMES,
|
|
487
|
+
getWorkerDefaultEnabled
|
|
476
488
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/schemas/validators.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../../src/schemas/validators.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAsBlE;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,EACxB,YAAY,EAAE,MAAM,GACnB,eAAe,EAAE,CAgHnB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,EACxB,gBAAgB,EAAE,MAAM,GACvB,eAAe,EAAE,CA0CnB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,EACxB,cAAc,EAAE,MAAM,GACrB,eAAe,EAAE,CA6BnB;AAUD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CA8ItE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,cAAc,GAAG,MAAM,CAYhE;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE;IACL,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB,GACA;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,eAAe,EAAE,CAAA;CAAE,CAWhE"}
|