@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) {
|
|
@@ -83,11 +79,6 @@ var init_operator_transport = __esm(() => {
|
|
|
83
79
|
});
|
|
84
80
|
|
|
85
81
|
// src/api-client.ts
|
|
86
|
-
var exports_api_client = {};
|
|
87
|
-
__export(exports_api_client, {
|
|
88
|
-
hooxFetch: () => hooxFetch,
|
|
89
|
-
WorkerAPIError: () => WorkerAPIError
|
|
90
|
-
});
|
|
91
82
|
function isRetryableStatus(status) {
|
|
92
83
|
if (status === 401 || status === 403 || status === 429)
|
|
93
84
|
return false;
|
|
@@ -189,12 +180,9 @@ var init_api_client = __esm(() => {
|
|
|
189
180
|
});
|
|
190
181
|
|
|
191
182
|
// src/sse.ts
|
|
192
|
-
var exports_sse = {};
|
|
193
|
-
__export(exports_sse, {
|
|
194
|
-
subscribeSSE: () => subscribeSSE
|
|
195
|
-
});
|
|
196
183
|
function subscribeSSE(path, callback, onStatus, options) {
|
|
197
184
|
let aborted = false;
|
|
185
|
+
const ac = new AbortController;
|
|
198
186
|
const profile = options?.transport ?? (options?.transportEnv ? resolveOperatorTransportProfile(options.transportEnv) : resolveOperatorTransportProfile());
|
|
199
187
|
const run = async () => {
|
|
200
188
|
let attempt = 0;
|
|
@@ -205,7 +193,8 @@ function subscribeSSE(path, callback, onStatus, options) {
|
|
|
205
193
|
headers: {
|
|
206
194
|
Accept: "text/event-stream",
|
|
207
195
|
...buildOperatorAuthHeaders(profile)
|
|
208
|
-
}
|
|
196
|
+
},
|
|
197
|
+
signal: ac.signal
|
|
209
198
|
});
|
|
210
199
|
if (!response.ok || !response.body) {
|
|
211
200
|
throw new Error(`SSE connection failed: HTTP ${response.status}`);
|
|
@@ -217,17 +206,21 @@ function subscribeSSE(path, callback, onStatus, options) {
|
|
|
217
206
|
let buffer = "";
|
|
218
207
|
while (!aborted) {
|
|
219
208
|
const { done, value } = await reader.read();
|
|
220
|
-
if (done)
|
|
221
|
-
|
|
209
|
+
if (done) {
|
|
210
|
+
throw new Error("SSE stream ended");
|
|
211
|
+
}
|
|
222
212
|
buffer += decoder.decode(value, { stream: true });
|
|
223
213
|
const lines = buffer.split(`
|
|
224
214
|
`);
|
|
225
215
|
buffer = lines.pop() || "";
|
|
226
216
|
for (const line of lines) {
|
|
227
217
|
const trimmed = line.trim();
|
|
228
|
-
if (trimmed.startsWith("data:
|
|
218
|
+
if (trimmed.startsWith("data:")) {
|
|
219
|
+
const jsonText = trimmed.slice(5).replace(/^\s/, "");
|
|
220
|
+
if (!jsonText)
|
|
221
|
+
continue;
|
|
229
222
|
try {
|
|
230
|
-
const parsed = JSON.parse(
|
|
223
|
+
const parsed = JSON.parse(jsonText);
|
|
231
224
|
callback(parsed);
|
|
232
225
|
} catch {}
|
|
233
226
|
}
|
|
@@ -239,7 +232,18 @@ function subscribeSSE(path, callback, onStatus, options) {
|
|
|
239
232
|
onStatus?.("reconnecting");
|
|
240
233
|
const delay = Math.min(RECONNECT_BASE_MS * Math.pow(2, attempt), RECONNECT_MAX_MS);
|
|
241
234
|
attempt++;
|
|
242
|
-
await new Promise((resolve) =>
|
|
235
|
+
await new Promise((resolve) => {
|
|
236
|
+
const timer = setTimeout(resolve, delay);
|
|
237
|
+
const onAbort = () => {
|
|
238
|
+
clearTimeout(timer);
|
|
239
|
+
resolve();
|
|
240
|
+
};
|
|
241
|
+
if (ac.signal.aborted) {
|
|
242
|
+
onAbort();
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
ac.signal.addEventListener("abort", onAbort, { once: true });
|
|
246
|
+
});
|
|
243
247
|
}
|
|
244
248
|
}
|
|
245
249
|
if (!aborted) {
|
|
@@ -250,6 +254,7 @@ function subscribeSSE(path, callback, onStatus, options) {
|
|
|
250
254
|
return {
|
|
251
255
|
abort: () => {
|
|
252
256
|
aborted = true;
|
|
257
|
+
ac.abort();
|
|
253
258
|
}
|
|
254
259
|
};
|
|
255
260
|
}
|
|
@@ -323,9 +328,9 @@ var useServiceStore = create()(immer((set, get) => ({
|
|
|
323
328
|
...initialState,
|
|
324
329
|
fetchWorkers: async () => {
|
|
325
330
|
const gen = ++fetchWorkersGeneration;
|
|
326
|
-
|
|
331
|
+
await Promise.resolve().then(() => init_api_client());
|
|
327
332
|
try {
|
|
328
|
-
const data = await
|
|
333
|
+
const data = await hooxFetch("/v1/workers");
|
|
329
334
|
if (gen !== fetchWorkersGeneration)
|
|
330
335
|
return;
|
|
331
336
|
clearReconnectTimer();
|
|
@@ -386,11 +391,11 @@ var useServiceStore = create()(immer((set, get) => ({
|
|
|
386
391
|
}
|
|
387
392
|
},
|
|
388
393
|
streamTrades: async () => {
|
|
389
|
-
|
|
394
|
+
await Promise.resolve().then(() => init_sse());
|
|
390
395
|
tradeStreamAbort?.();
|
|
391
396
|
tradeStreamAbort = null;
|
|
392
397
|
try {
|
|
393
|
-
const sub =
|
|
398
|
+
const sub = subscribeSSE("/v1/trades/stream", (trade) => {
|
|
394
399
|
get().pushTrade(trade);
|
|
395
400
|
});
|
|
396
401
|
const resolved = await Promise.resolve(sub);
|
|
@@ -409,11 +414,11 @@ var useServiceStore = create()(immer((set, get) => ({
|
|
|
409
414
|
}
|
|
410
415
|
},
|
|
411
416
|
streamLogs: async () => {
|
|
412
|
-
|
|
417
|
+
await Promise.resolve().then(() => init_sse());
|
|
413
418
|
logStreamAbort?.();
|
|
414
419
|
logStreamAbort = null;
|
|
415
420
|
try {
|
|
416
|
-
const sub =
|
|
421
|
+
const sub = subscribeSSE("/v1/logs/stream", (log) => {
|
|
417
422
|
get().pushLog(log);
|
|
418
423
|
});
|
|
419
424
|
const resolved = await Promise.resolve(sub);
|
|
@@ -28,54 +28,8 @@ interface UIActions {
|
|
|
28
28
|
setStatusErrorExpanded: (expanded: boolean) => void;
|
|
29
29
|
}
|
|
30
30
|
export declare const useUIStore: import("zustand").UseBoundStore<Omit<import("zustand").StoreApi<UIState & UIActions>, "setState"> & {
|
|
31
|
-
setState(nextStateOrUpdater: (UIState & UIActions) | Partial<UIState & UIActions> | ((state:
|
|
32
|
-
|
|
33
|
-
sidebarExpanded: boolean;
|
|
34
|
-
modal: {
|
|
35
|
-
type: "confirm" | "alert" | "prompt" | "custom";
|
|
36
|
-
title: string;
|
|
37
|
-
message?: string | undefined;
|
|
38
|
-
data?: unknown;
|
|
39
|
-
onConfirm?: (() => void) | undefined;
|
|
40
|
-
onCancel?: (() => void) | undefined;
|
|
41
|
-
} | null;
|
|
42
|
-
commandPaletteOpen: boolean;
|
|
43
|
-
previousView: ViewId | null;
|
|
44
|
-
statusErrorExpanded: boolean;
|
|
45
|
-
setView: (view: ViewId) => void;
|
|
46
|
-
toggleSidebar: () => void;
|
|
47
|
-
openPalette: () => void;
|
|
48
|
-
closePalette: () => void;
|
|
49
|
-
showModal: (modal: ModalState) => void;
|
|
50
|
-
dismissModal: () => void;
|
|
51
|
-
goBack: () => void;
|
|
52
|
-
toggleStatusErrorExpanded: () => void;
|
|
53
|
-
setStatusErrorExpanded: (expanded: boolean) => void;
|
|
54
|
-
}) => void), shouldReplace?: false): void;
|
|
55
|
-
setState(nextStateOrUpdater: (UIState & UIActions) | ((state: {
|
|
56
|
-
activeView: ViewId;
|
|
57
|
-
sidebarExpanded: boolean;
|
|
58
|
-
modal: {
|
|
59
|
-
type: "confirm" | "alert" | "prompt" | "custom";
|
|
60
|
-
title: string;
|
|
61
|
-
message?: string | undefined;
|
|
62
|
-
data?: unknown;
|
|
63
|
-
onConfirm?: (() => void) | undefined;
|
|
64
|
-
onCancel?: (() => void) | undefined;
|
|
65
|
-
} | null;
|
|
66
|
-
commandPaletteOpen: boolean;
|
|
67
|
-
previousView: ViewId | null;
|
|
68
|
-
statusErrorExpanded: boolean;
|
|
69
|
-
setView: (view: ViewId) => void;
|
|
70
|
-
toggleSidebar: () => void;
|
|
71
|
-
openPalette: () => void;
|
|
72
|
-
closePalette: () => void;
|
|
73
|
-
showModal: (modal: ModalState) => void;
|
|
74
|
-
dismissModal: () => void;
|
|
75
|
-
goBack: () => void;
|
|
76
|
-
toggleStatusErrorExpanded: () => void;
|
|
77
|
-
setStatusErrorExpanded: (expanded: boolean) => void;
|
|
78
|
-
}) => void), shouldReplace: true): void;
|
|
31
|
+
setState(nextStateOrUpdater: (UIState & UIActions) | Partial<UIState & UIActions> | ((state: import("immer").WritableNonArrayDraft<UIState & UIActions>) => void), shouldReplace?: false): void;
|
|
32
|
+
setState(nextStateOrUpdater: (UIState & UIActions) | ((state: import("immer").WritableNonArrayDraft<UIState & UIActions>) => void), shouldReplace: true): void;
|
|
79
33
|
}>;
|
|
80
34
|
export {};
|
|
81
35
|
//# sourceMappingURL=ui-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ui-store.d.ts","sourceRoot":"","sources":["../../src/stores/ui-store.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAInD,MAAM,WAAW,OAAO;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;OAGG;IACH,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAID,UAAU,SAAS;IACjB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,SAAS,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACvC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,iDAAiD;IACjD,yBAAyB,EAAE,MAAM,IAAI,CAAC;IACtC,sBAAsB,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;CACrD;AAiBD,eAAO,MAAM,UAAU
|
|
1
|
+
{"version":3,"file":"ui-store.d.ts","sourceRoot":"","sources":["../../src/stores/ui-store.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAInD,MAAM,WAAW,OAAO;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IACzB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B;;;OAGG;IACH,mBAAmB,EAAE,OAAO,CAAC;CAC9B;AAID,UAAU,SAAS;IACjB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,SAAS,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACvC,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,iDAAiD;IACjD,yBAAyB,EAAE,MAAM,IAAI,CAAC;IACtC,sBAAsB,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;CACrD;AAiBD,eAAO,MAAM,UAAU;;;EA0DtB,CAAC"}
|
package/dist/stores/ui-store.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/stores/ui-store.ts
|
|
19
3
|
import { create } from "zustand";
|
|
20
4
|
import { immer } from "zustand/middleware/immer";
|
package/dist/tenant.d.ts
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2026 HOOX · jango-blockchained (hoox-sh)
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Opt-in tenant isolation for worker state.
|
|
7
|
+
*
|
|
8
|
+
* Self-hosted single-tenant deployments are unaffected: every helper below
|
|
9
|
+
* is a no-op unless `TENANT_MODE` is explicitly enabled (`"true"` / `"1"`).
|
|
10
|
+
* Setting `TENANT_ID` alone does NOT enable scoping — the flag is the switch.
|
|
11
|
+
*
|
|
12
|
+
* When enabled, `TENANT_ID` (required, `[A-Za-z0-9_-]{1,64}`) namespaces:
|
|
13
|
+
* - KV keys and Durable Object names via {@link scopeKey}
|
|
14
|
+
* - R2 object keys via {@link scopeR2Key} (`t-<id>/…`, R2-safe charset)
|
|
15
|
+
* - queue / service payloads via {@link withTenantId}
|
|
16
|
+
*
|
|
17
|
+
* Misconfiguration fails loudly: resolving a scope with the flag on and an
|
|
18
|
+
* invalid id throws. Message-carried ids (shared queue consumer) are
|
|
19
|
+
* validated leniently instead — untrusted input must never throw.
|
|
20
|
+
*/
|
|
21
|
+
import type { TenantContext } from "./types";
|
|
22
|
+
export interface TenantEnv {
|
|
23
|
+
TENANT_ID?: string;
|
|
24
|
+
TENANT_MODE?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface TenantScope {
|
|
27
|
+
enabled: boolean;
|
|
28
|
+
tenantId: string | null;
|
|
29
|
+
}
|
|
30
|
+
/** True when `TENANT_MODE` is the token `true` or `1`. */
|
|
31
|
+
export declare function isTenantFlagOn(env: TenantEnv | undefined | null): boolean;
|
|
32
|
+
/**
|
|
33
|
+
* Resolve the tenant scope for an env. Throws when the flag is on but the
|
|
34
|
+
* id is missing/invalid (fail-closed platform deploys). Returns disabled
|
|
35
|
+
* without throwing when the flag is off (self-host default).
|
|
36
|
+
*/
|
|
37
|
+
export declare function tenantScope(env: TenantEnv | undefined | null): TenantScope;
|
|
38
|
+
/** True when tenant scoping is active (flag on + valid id). Never throws. */
|
|
39
|
+
export declare function isTenantMode(env: TenantEnv | undefined | null): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Effective tenant for a scope decision: the env tenant when the flag is on,
|
|
42
|
+
* otherwise a message-carried id (shared queue consumer path), else null.
|
|
43
|
+
* Lenient on message input — untrusted data never throws here.
|
|
44
|
+
*/
|
|
45
|
+
export declare function effectiveTenantId(env: TenantEnv | undefined | null, msg?: {
|
|
46
|
+
tenantId?: unknown;
|
|
47
|
+
}): string | null;
|
|
48
|
+
/** Namespace a KV key or DO name: `t/<id>/<key>` when scoped, else `key`. */
|
|
49
|
+
export declare function scopeKey(env: TenantEnv | undefined | null, key: string, msg?: {
|
|
50
|
+
tenantId?: unknown;
|
|
51
|
+
}): string;
|
|
52
|
+
/** Namespace an R2 object key: `t-<id>/<key>` (colon-free for key guards). */
|
|
53
|
+
export declare function scopeR2Key(env: TenantEnv | undefined | null, key: string, msg?: {
|
|
54
|
+
tenantId?: unknown;
|
|
55
|
+
}): string;
|
|
56
|
+
/** Attach `tenantId` to an outbound payload object when scoped. */
|
|
57
|
+
export declare function withTenantId<T extends object>(env: TenantEnv | undefined | null, obj: T): T & {
|
|
58
|
+
tenantId?: string;
|
|
59
|
+
};
|
|
60
|
+
/** Build the shared {@link TenantContext} when scoped, else null. */
|
|
61
|
+
export declare function tenantContextOf(env: TenantEnv | undefined | null): TenantContext | null;
|
|
62
|
+
//# sourceMappingURL=tenant.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant.d.ts","sourceRoot":"","sources":["../src/tenant.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,MAAM,WAAW,SAAS;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAID,0DAA0D;AAC1D,wBAAgB,cAAc,CAAC,GAAG,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAGzE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,GAAG,WAAW,CAS1E;AAED,6EAA6E;AAC7E,wBAAgB,YAAY,CAAC,GAAG,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAMvE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,EACjC,GAAG,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3B,MAAM,GAAG,IAAI,CAOf;AAED,6EAA6E;AAC7E,wBAAgB,QAAQ,CACtB,GAAG,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,EACjC,GAAG,EAAE,MAAM,EACX,GAAG,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3B,MAAM,CAGR;AAED,8EAA8E;AAC9E,wBAAgB,UAAU,CACxB,GAAG,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,EACjC,GAAG,EAAE,MAAM,EACX,GAAG,CAAC,EAAE;IAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3B,MAAM,CAGR;AAED,mEAAmE;AACnE,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EAC3C,GAAG,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,EACjC,GAAG,EAAE,CAAC,GACL,CAAC,GAAG;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAG3B;AAED,qEAAqE;AACrE,wBAAgB,eAAe,CAC7B,GAAG,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,GAChC,aAAa,GAAG,IAAI,CAGtB"}
|
package/dist/tenant.js
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// @bun
|
|
2
|
+
// src/tenant.ts
|
|
3
|
+
var TENANT_ID_RE = /^[A-Za-z0-9_-]{1,64}$/;
|
|
4
|
+
function isTenantFlagOn(env) {
|
|
5
|
+
const v = env?.TENANT_MODE;
|
|
6
|
+
return v === "true" || v === "1";
|
|
7
|
+
}
|
|
8
|
+
function tenantScope(env) {
|
|
9
|
+
if (!isTenantFlagOn(env))
|
|
10
|
+
return { enabled: false, tenantId: null };
|
|
11
|
+
const id = (env?.TENANT_ID ?? "").trim();
|
|
12
|
+
if (!id || !TENANT_ID_RE.test(id)) {
|
|
13
|
+
throw new Error("TENANT_MODE is enabled but TENANT_ID is missing or invalid (expected [A-Za-z0-9_-], 1-64 chars)");
|
|
14
|
+
}
|
|
15
|
+
return { enabled: true, tenantId: id };
|
|
16
|
+
}
|
|
17
|
+
function isTenantMode(env) {
|
|
18
|
+
try {
|
|
19
|
+
return tenantScope(env).enabled;
|
|
20
|
+
} catch {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function effectiveTenantId(env, msg) {
|
|
25
|
+
if (isTenantFlagOn(env)) {
|
|
26
|
+
return tenantScope(env).tenantId;
|
|
27
|
+
}
|
|
28
|
+
const m = typeof msg?.tenantId === "string" ? msg.tenantId.trim() : "";
|
|
29
|
+
return m && TENANT_ID_RE.test(m) ? m : null;
|
|
30
|
+
}
|
|
31
|
+
function scopeKey(env, key, msg) {
|
|
32
|
+
const id = effectiveTenantId(env, msg);
|
|
33
|
+
return id ? `t/${id}/${key}` : key;
|
|
34
|
+
}
|
|
35
|
+
function scopeR2Key(env, key, msg) {
|
|
36
|
+
const id = effectiveTenantId(env, msg);
|
|
37
|
+
return id ? `t-${id}/${key}` : key;
|
|
38
|
+
}
|
|
39
|
+
function withTenantId(env, obj) {
|
|
40
|
+
const ts = tenantScope(env);
|
|
41
|
+
return ts.enabled && ts.tenantId ? { ...obj, tenantId: ts.tenantId } : obj;
|
|
42
|
+
}
|
|
43
|
+
function tenantContextOf(env) {
|
|
44
|
+
const ts = tenantScope(env);
|
|
45
|
+
return ts.enabled && ts.tenantId ? { tenantId: ts.tenantId } : null;
|
|
46
|
+
}
|
|
47
|
+
export {
|
|
48
|
+
effectiveTenantId,
|
|
49
|
+
isTenantFlagOn,
|
|
50
|
+
isTenantMode,
|
|
51
|
+
scopeKey,
|
|
52
|
+
scopeR2Key,
|
|
53
|
+
tenantContextOf,
|
|
54
|
+
tenantScope,
|
|
55
|
+
withTenantId
|
|
56
|
+
};
|
package/dist/test-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/test-utils.ts
|
|
19
3
|
function createMockKV(overrides) {
|
|
20
4
|
return {
|
|
@@ -113,16 +97,16 @@ function createMockEnv(overrides) {
|
|
|
113
97
|
return overrides;
|
|
114
98
|
}
|
|
115
99
|
export {
|
|
116
|
-
|
|
117
|
-
createMockSecretsStore,
|
|
118
|
-
createMockR2,
|
|
119
|
-
createMockQueue,
|
|
120
|
-
createMockKV,
|
|
121
|
-
createMockFetcher,
|
|
122
|
-
createMockExecutionContext,
|
|
123
|
-
createMockEnv,
|
|
124
|
-
createMockD1,
|
|
125
|
-
createMockAnalyticsEngineDataset,
|
|
100
|
+
createMockAi,
|
|
126
101
|
createMockAnalyticsEngine,
|
|
127
|
-
|
|
102
|
+
createMockAnalyticsEngineDataset,
|
|
103
|
+
createMockD1,
|
|
104
|
+
createMockEnv,
|
|
105
|
+
createMockExecutionContext,
|
|
106
|
+
createMockFetcher,
|
|
107
|
+
createMockKV,
|
|
108
|
+
createMockQueue,
|
|
109
|
+
createMockR2,
|
|
110
|
+
createMockSecretsStore,
|
|
111
|
+
createMockVectorizeIndex
|
|
128
112
|
};
|
package/dist/types.d.ts
CHANGED
|
@@ -26,6 +26,7 @@ export declare const WebhookPayloadSchema: z.ZodObject<{
|
|
|
26
26
|
orderType: z.ZodOptional<z.ZodString>;
|
|
27
27
|
leverage: z.ZodOptional<z.ZodNumber>;
|
|
28
28
|
test: z.ZodOptional<z.ZodBoolean>;
|
|
29
|
+
tenantId: z.ZodOptional<z.ZodString>;
|
|
29
30
|
}, z.core.$strict>;
|
|
30
31
|
/** Validated trade queue payload (hoox producer → trade-worker consumer). */
|
|
31
32
|
export declare const TradeQueueMessageSchema: z.ZodObject<{
|
|
@@ -43,6 +44,7 @@ export declare const TradeQueueMessageSchema: z.ZodObject<{
|
|
|
43
44
|
leverage: z.ZodOptional<z.ZodNumber>;
|
|
44
45
|
test: z.ZodOptional<z.ZodBoolean>;
|
|
45
46
|
idempotencyKey: z.ZodOptional<z.ZodString>;
|
|
47
|
+
tenantId: z.ZodOptional<z.ZodString>;
|
|
46
48
|
queuedAt: z.ZodString;
|
|
47
49
|
}, z.core.$strict>;
|
|
48
50
|
export declare const TradeSignalSchema: z.ZodObject<{
|
|
@@ -59,10 +61,10 @@ export declare const TradeSignalSchema: z.ZodObject<{
|
|
|
59
61
|
quantity: z.ZodNumber;
|
|
60
62
|
leverage: z.ZodOptional<z.ZodNumber>;
|
|
61
63
|
status: z.ZodOptional<z.ZodEnum<{
|
|
62
|
-
skipped: "skipped";
|
|
63
|
-
failed: "failed";
|
|
64
64
|
pending: "pending";
|
|
65
65
|
executed: "executed";
|
|
66
|
+
failed: "failed";
|
|
67
|
+
skipped: "skipped";
|
|
66
68
|
}>>;
|
|
67
69
|
createdAt: z.ZodOptional<z.ZodString>;
|
|
68
70
|
executedAt: z.ZodOptional<z.ZodString>;
|
|
@@ -252,8 +254,13 @@ export interface ProcessRequestBody<T = unknown> {
|
|
|
252
254
|
internalAuthKey?: string;
|
|
253
255
|
payload: T;
|
|
254
256
|
}
|
|
257
|
+
/**
|
|
258
|
+
* Canonical TUI view identifiers in registry / sidebar order.
|
|
259
|
+
* Session restore, Settings, and the TUI registry all consume this list.
|
|
260
|
+
*/
|
|
261
|
+
export declare const VIEW_IDS: readonly ["dashboard", "workers", "worker-detail", "trade-monitor", "logs-viewer", "service-manager", "config-editor", "setup-wizard", "settings", "queue-depth", "kv-viewer", "secrets-viewer", "db-query", "ai-chat", "edge-topology", "worker-settings"];
|
|
255
262
|
/** View identifier for TUI navigation. */
|
|
256
|
-
export type ViewId =
|
|
263
|
+
export type ViewId = (typeof VIEW_IDS)[number];
|
|
257
264
|
/**
|
|
258
265
|
* Lightweight tenant identifier and basic context.
|
|
259
266
|
* This type lives in the open core.
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,iBAAiB;;;;;EAK5B,CAAC;AAEH,4EAA4E;AAC5E,eAAO,MAAM,oBAAoB,MAAM,CAAC;AACxC,eAAO,MAAM,oBAAoB,UAAY,CAAC;AAE9C,eAAO,MAAM,oBAAoB
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,iBAAiB;;;;;EAK5B,CAAC;AAEH,4EAA4E;AAC5E,eAAO,MAAM,oBAAoB,MAAM,CAAC;AACxC,eAAO,MAAM,oBAAoB,UAAY,CAAC;AAE9C,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;kBAqBtB,CAAC;AAEZ,6EAA6E;AAC7E,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;kBAwBzB,CAAC;AAEZ,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;kBAcnB,CAAC;AAEZ,eAAO,MAAM,cAAc;;;;;;;;;;;;;;kBAWhB,CAAC;AAEZ,eAAO,MAAM,aAAa;;;;;kBAOf,CAAC;AAIZ,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,OAAO,EAAE,IAAI,CAAC;IACd,IAAI,EAAE,CAAC,CAAC;CACT;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,kBAAkB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC;AAEtE,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACjD,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAClC,YAAY,CAAC,EAAE,eAAe,EAAE,CAAC;IACjC,aAAa,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,yBAAyB,EAAE,CAAA;KAAE,CAAC;IAC3D,qBAAqB,CAAC,EAAE,yBAAyB,EAAE,CAAC;IACpD,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,eAAe,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,CAAC;IACxE,UAAU,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,EAAE,CAAC;CAC/D;AAED,uEAAuE;AACvE,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,gFAAgF;AAChF,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACnC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,mBAAmB,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;CAClC;AAID;;;;;;;GAOG;AACH,MAAM,WAAW,GAAG;IAClB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,yDAAyD;IACzD,SAAS,CAAC,EAAE,WAAW,CAAC;IACxB,sDAAsD;IACtD,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,OAAO;IACtB,sDAAsD;IACtD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,8CAA8C;IAC9C,SAAS,CAAC,EAAE,WAAW,CAAC;CACzB;AAED,MAAM,MAAM,MAAM,CAAC,CAAC,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAI9E,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,YAAY,EAAE,CAAC;CAC5B;AAID;;;GAGG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,OAAO;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,CAAC,CAAC;CACZ;AAMD;;;GAGG;AACH,eAAO,MAAM,QAAQ,6PAiBX,CAAC;AAEX,0CAA0C;AAC1C,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAS/C;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;IAC3C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,OAAO;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,CAAC,CAAC;IACT,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,sCAAsC;AACtC,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB;AAID,MAAM,MAAM,YAAY,GAAG,aAAa,GAAG,UAAU,GAAG,MAAM,CAAC;AAE/D;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;IACrB,wBAAwB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAID,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,CAAC;AAEvC;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAID,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;AAEtE;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,gCAAgC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,0BAA0B;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE3D;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAID;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,yCAAyC;IACzC,YAAY,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,gBAAgB,EAAE,MAAM,CAAC;IACzB,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;CACrB;AAID,iEAAiE;AACjE,MAAM,MAAM,gBAAgB,GAC1B,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,cAAc,CAAC;AAIvD,iCAAiC;AACjC,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wCAAwC;AACxC,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB;AAID;;;;;;GAMG;AACH,MAAM,MAAM,YAAY;AACtB,uEAAuE;AACrE,kBAAkB;AACpB,mDAAmD;GACjD,SAAS;AACX,qEAAqE;GACnE,SAAS;AACX,oDAAoD;GAClD,eAAe;AACjB,iEAAiE;GAC/D,aAAa,CAAC;AAElB;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,iFAAiF;IACjF,OAAO,EAAE,MAAM,CAAC;IAChB,4EAA4E;IAC5E,QAAQ,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,MAAM,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,MAAM,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,SAAS,EAAE,YAAY,CAAC;IACxB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,QAAQ,EAAE,MAAM,CAAC;CAClB"}
|
package/dist/types.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/types.ts
|
|
19
3
|
import { z } from "zod";
|
|
20
4
|
var TradeActionSchema = z.enum([
|
|
@@ -33,7 +17,8 @@ var WebhookPayloadSchema = z.object({
|
|
|
33
17
|
price: z.number().positive().finite().optional(),
|
|
34
18
|
orderType: z.string().optional(),
|
|
35
19
|
leverage: z.number().int().positive().max(MAX_WEBHOOK_LEVERAGE).optional(),
|
|
36
|
-
test: z.boolean().optional()
|
|
20
|
+
test: z.boolean().optional(),
|
|
21
|
+
tenantId: z.string().min(1).max(64).optional()
|
|
37
22
|
}).strict();
|
|
38
23
|
var TradeQueueMessageSchema = z.object({
|
|
39
24
|
requestId: z.string().min(1).max(128),
|
|
@@ -45,6 +30,7 @@ var TradeQueueMessageSchema = z.object({
|
|
|
45
30
|
leverage: z.number().int().positive().max(MAX_WEBHOOK_LEVERAGE).optional(),
|
|
46
31
|
test: z.boolean().optional(),
|
|
47
32
|
idempotencyKey: z.string().min(1).max(512).optional(),
|
|
33
|
+
tenantId: z.string().min(1).max(64).optional(),
|
|
48
34
|
queuedAt: z.string().min(1).max(64)
|
|
49
35
|
}).strict();
|
|
50
36
|
var TradeSignalSchema = z.object({
|
|
@@ -76,13 +62,32 @@ var BalanceSchema = z.object({
|
|
|
76
62
|
locked: z.number().min(0),
|
|
77
63
|
timestamp: z.number().int().positive()
|
|
78
64
|
}).strict();
|
|
65
|
+
var VIEW_IDS = [
|
|
66
|
+
"dashboard",
|
|
67
|
+
"workers",
|
|
68
|
+
"worker-detail",
|
|
69
|
+
"trade-monitor",
|
|
70
|
+
"logs-viewer",
|
|
71
|
+
"service-manager",
|
|
72
|
+
"config-editor",
|
|
73
|
+
"setup-wizard",
|
|
74
|
+
"settings",
|
|
75
|
+
"queue-depth",
|
|
76
|
+
"kv-viewer",
|
|
77
|
+
"secrets-viewer",
|
|
78
|
+
"db-query",
|
|
79
|
+
"ai-chat",
|
|
80
|
+
"edge-topology",
|
|
81
|
+
"worker-settings"
|
|
82
|
+
];
|
|
79
83
|
export {
|
|
80
|
-
|
|
81
|
-
TradeSignalSchema,
|
|
82
|
-
TradeQueueMessageSchema,
|
|
83
|
-
TradeActionSchema,
|
|
84
|
-
PositionSchema,
|
|
85
|
-
MAX_WEBHOOK_QUANTITY,
|
|
84
|
+
BalanceSchema,
|
|
86
85
|
MAX_WEBHOOK_LEVERAGE,
|
|
87
|
-
|
|
86
|
+
MAX_WEBHOOK_QUANTITY,
|
|
87
|
+
PositionSchema,
|
|
88
|
+
TradeActionSchema,
|
|
89
|
+
TradeQueueMessageSchema,
|
|
90
|
+
TradeSignalSchema,
|
|
91
|
+
VIEW_IDS,
|
|
92
|
+
WebhookPayloadSchema
|
|
88
93
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/wizard/engine.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AACH,OAAO,KAAK,EACV,MAAM,EACN,cAAc,EACd,WAAW,EACX,iBAAiB,EAEjB,gBAAgB,EAGjB,MAAM,SAAS,CAAC;AAiKjB,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAc;gBAEf,YAAY,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;IAI/C,uCAAuC;IACvC,QAAQ,IAAI,WAAW;IAIvB,uCAAuC;IACvC,cAAc,IAAI,cAAc;IAQhC,sCAAsC;IACtC,iBAAiB,IAAI,MAAM,EAAE;IAI7B,iFAAiF;IACjF,UAAU,IAAI,OAAO;IAKrB,gEAAgE;IAChE,SAAS,IAAI,OAAO;IAIpB;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE;IA6BjD,0CAA0C;IAC1C,MAAM,IAAI,IAAI;IAiBd,qCAAqC;IACrC,KAAK,IAAI,IAAI;IAIb;;;OAGG;IACH,WAAW,IAAI,iBAAiB;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/wizard/engine.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;;GAKG;AACH,OAAO,KAAK,EACV,MAAM,EACN,cAAc,EACd,WAAW,EACX,iBAAiB,EAEjB,gBAAgB,EAGjB,MAAM,SAAS,CAAC;AAiKjB,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAc;gBAEf,YAAY,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;IAI/C,uCAAuC;IACvC,QAAQ,IAAI,WAAW;IAIvB,uCAAuC;IACvC,cAAc,IAAI,cAAc;IAQhC,sCAAsC;IACtC,iBAAiB,IAAI,MAAM,EAAE;IAI7B,iFAAiF;IACjF,UAAU,IAAI,OAAO;IAKrB,gEAAgE;IAChE,SAAS,IAAI,OAAO;IAIpB;;;OAGG;IACH,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,EAAE;IA6BjD,0CAA0C;IAC1C,MAAM,IAAI,IAAI;IAiBd,qCAAqC;IACrC,KAAK,IAAI,IAAI;IAIb;;;OAGG;IACH,WAAW,IAAI,iBAAiB;IA0EhC;;;OAGG;IACH,mBAAmB,IAAI,gBAAgB;IA6CvC,OAAO,CAAC,UAAU;CA4DnB"}
|