@zintrust/workers 0.1.27
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 +861 -0
- package/dist/AnomalyDetection.d.ts +102 -0
- package/dist/AnomalyDetection.js +321 -0
- package/dist/AutoScaler.d.ts +127 -0
- package/dist/AutoScaler.js +425 -0
- package/dist/BroadcastWorker.d.ts +21 -0
- package/dist/BroadcastWorker.js +24 -0
- package/dist/CanaryController.d.ts +103 -0
- package/dist/CanaryController.js +380 -0
- package/dist/ChaosEngineering.d.ts +79 -0
- package/dist/ChaosEngineering.js +216 -0
- package/dist/CircuitBreaker.d.ts +106 -0
- package/dist/CircuitBreaker.js +374 -0
- package/dist/ClusterLock.d.ts +90 -0
- package/dist/ClusterLock.js +385 -0
- package/dist/ComplianceManager.d.ts +177 -0
- package/dist/ComplianceManager.js +556 -0
- package/dist/DatacenterOrchestrator.d.ts +133 -0
- package/dist/DatacenterOrchestrator.js +404 -0
- package/dist/DeadLetterQueue.d.ts +122 -0
- package/dist/DeadLetterQueue.js +539 -0
- package/dist/HealthMonitor.d.ts +42 -0
- package/dist/HealthMonitor.js +301 -0
- package/dist/MultiQueueWorker.d.ts +89 -0
- package/dist/MultiQueueWorker.js +277 -0
- package/dist/NotificationWorker.d.ts +21 -0
- package/dist/NotificationWorker.js +23 -0
- package/dist/Observability.d.ts +153 -0
- package/dist/Observability.js +530 -0
- package/dist/PluginManager.d.ts +123 -0
- package/dist/PluginManager.js +392 -0
- package/dist/PriorityQueue.d.ts +117 -0
- package/dist/PriorityQueue.js +244 -0
- package/dist/ResourceMonitor.d.ts +164 -0
- package/dist/ResourceMonitor.js +605 -0
- package/dist/SLAMonitor.d.ts +110 -0
- package/dist/SLAMonitor.js +274 -0
- package/dist/WorkerFactory.d.ts +193 -0
- package/dist/WorkerFactory.js +1507 -0
- package/dist/WorkerInit.d.ts +85 -0
- package/dist/WorkerInit.js +223 -0
- package/dist/WorkerMetrics.d.ts +114 -0
- package/dist/WorkerMetrics.js +509 -0
- package/dist/WorkerRegistry.d.ts +145 -0
- package/dist/WorkerRegistry.js +319 -0
- package/dist/WorkerShutdown.d.ts +61 -0
- package/dist/WorkerShutdown.js +159 -0
- package/dist/WorkerVersioning.d.ts +107 -0
- package/dist/WorkerVersioning.js +300 -0
- package/dist/build-manifest.json +462 -0
- package/dist/config/workerConfig.d.ts +3 -0
- package/dist/config/workerConfig.js +19 -0
- package/dist/createQueueWorker.d.ts +23 -0
- package/dist/createQueueWorker.js +113 -0
- package/dist/dashboard/index.d.ts +1 -0
- package/dist/dashboard/index.js +1 -0
- package/dist/dashboard/types.d.ts +117 -0
- package/dist/dashboard/types.js +1 -0
- package/dist/dashboard/workers-api.d.ts +4 -0
- package/dist/dashboard/workers-api.js +638 -0
- package/dist/dashboard/workers-dashboard-ui.d.ts +3 -0
- package/dist/dashboard/workers-dashboard-ui.js +1026 -0
- package/dist/dashboard/workers-dashboard.d.ts +4 -0
- package/dist/dashboard/workers-dashboard.js +904 -0
- package/dist/helper/index.d.ts +5 -0
- package/dist/helper/index.js +10 -0
- package/dist/http/WorkerApiController.d.ts +38 -0
- package/dist/http/WorkerApiController.js +312 -0
- package/dist/http/WorkerController.d.ts +374 -0
- package/dist/http/WorkerController.js +1351 -0
- package/dist/http/middleware/CustomValidation.d.ts +92 -0
- package/dist/http/middleware/CustomValidation.js +270 -0
- package/dist/http/middleware/DatacenterValidator.d.ts +3 -0
- package/dist/http/middleware/DatacenterValidator.js +94 -0
- package/dist/http/middleware/EditWorkerValidation.d.ts +7 -0
- package/dist/http/middleware/EditWorkerValidation.js +55 -0
- package/dist/http/middleware/FeaturesValidator.d.ts +3 -0
- package/dist/http/middleware/FeaturesValidator.js +60 -0
- package/dist/http/middleware/InfrastructureValidator.d.ts +31 -0
- package/dist/http/middleware/InfrastructureValidator.js +226 -0
- package/dist/http/middleware/OptionsValidator.d.ts +3 -0
- package/dist/http/middleware/OptionsValidator.js +112 -0
- package/dist/http/middleware/PayloadSanitizer.d.ts +7 -0
- package/dist/http/middleware/PayloadSanitizer.js +42 -0
- package/dist/http/middleware/ProcessorPathSanitizer.d.ts +3 -0
- package/dist/http/middleware/ProcessorPathSanitizer.js +74 -0
- package/dist/http/middleware/QueueNameSanitizer.d.ts +3 -0
- package/dist/http/middleware/QueueNameSanitizer.js +45 -0
- package/dist/http/middleware/ValidateDriver.d.ts +7 -0
- package/dist/http/middleware/ValidateDriver.js +20 -0
- package/dist/http/middleware/VersionSanitizer.d.ts +3 -0
- package/dist/http/middleware/VersionSanitizer.js +25 -0
- package/dist/http/middleware/WorkerNameSanitizer.d.ts +3 -0
- package/dist/http/middleware/WorkerNameSanitizer.js +46 -0
- package/dist/http/middleware/WorkerValidationChain.d.ts +27 -0
- package/dist/http/middleware/WorkerValidationChain.js +185 -0
- package/dist/index.d.ts +46 -0
- package/dist/index.js +48 -0
- package/dist/routes/workers.d.ts +12 -0
- package/dist/routes/workers.js +81 -0
- package/dist/storage/WorkerStore.d.ts +45 -0
- package/dist/storage/WorkerStore.js +195 -0
- package/dist/type.d.ts +76 -0
- package/dist/type.js +1 -0
- package/dist/ui/router/ui.d.ts +3 -0
- package/dist/ui/router/ui.js +83 -0
- package/dist/ui/types/worker-ui.d.ts +229 -0
- package/dist/ui/types/worker-ui.js +5 -0
- package/package.json +53 -0
- package/src/AnomalyDetection.ts +434 -0
- package/src/AutoScaler.ts +654 -0
- package/src/BroadcastWorker.ts +34 -0
- package/src/CanaryController.ts +531 -0
- package/src/ChaosEngineering.ts +301 -0
- package/src/CircuitBreaker.ts +495 -0
- package/src/ClusterLock.ts +499 -0
- package/src/ComplianceManager.ts +815 -0
- package/src/DatacenterOrchestrator.ts +561 -0
- package/src/DeadLetterQueue.ts +733 -0
- package/src/HealthMonitor.ts +390 -0
- package/src/MultiQueueWorker.ts +431 -0
- package/src/NotificationWorker.ts +33 -0
- package/src/Observability.ts +696 -0
- package/src/PluginManager.ts +551 -0
- package/src/PriorityQueue.ts +351 -0
- package/src/ResourceMonitor.ts +769 -0
- package/src/SLAMonitor.ts +408 -0
- package/src/WorkerFactory.ts +2108 -0
- package/src/WorkerInit.ts +313 -0
- package/src/WorkerMetrics.ts +709 -0
- package/src/WorkerRegistry.ts +443 -0
- package/src/WorkerShutdown.ts +210 -0
- package/src/WorkerVersioning.ts +422 -0
- package/src/config/workerConfig.ts +25 -0
- package/src/createQueueWorker.ts +174 -0
- package/src/dashboard/index.ts +6 -0
- package/src/dashboard/types.ts +141 -0
- package/src/dashboard/workers-api.ts +785 -0
- package/src/dashboard/zintrust.svg +30 -0
- package/src/helper/index.ts +11 -0
- package/src/http/WorkerApiController.ts +369 -0
- package/src/http/WorkerController.ts +1512 -0
- package/src/http/middleware/CustomValidation.ts +360 -0
- package/src/http/middleware/DatacenterValidator.ts +124 -0
- package/src/http/middleware/EditWorkerValidation.ts +74 -0
- package/src/http/middleware/FeaturesValidator.ts +82 -0
- package/src/http/middleware/InfrastructureValidator.ts +295 -0
- package/src/http/middleware/OptionsValidator.ts +144 -0
- package/src/http/middleware/PayloadSanitizer.ts +52 -0
- package/src/http/middleware/ProcessorPathSanitizer.ts +86 -0
- package/src/http/middleware/QueueNameSanitizer.ts +55 -0
- package/src/http/middleware/ValidateDriver.ts +29 -0
- package/src/http/middleware/VersionSanitizer.ts +30 -0
- package/src/http/middleware/WorkerNameSanitizer.ts +56 -0
- package/src/http/middleware/WorkerValidationChain.ts +230 -0
- package/src/index.ts +98 -0
- package/src/routes/workers.ts +154 -0
- package/src/storage/WorkerStore.ts +240 -0
- package/src/type.ts +89 -0
- package/src/types/queue-monitor.d.ts +38 -0
- package/src/types/queue-redis.d.ts +38 -0
- package/src/ui/README.md +13 -0
- package/src/ui/components/JsonEditor.js +670 -0
- package/src/ui/components/JsonViewer.js +387 -0
- package/src/ui/components/WorkerCard.js +178 -0
- package/src/ui/components/WorkerExpandPanel.js +257 -0
- package/src/ui/components/fetcher.js +42 -0
- package/src/ui/components/sla-scorecard.js +32 -0
- package/src/ui/components/styles.css +30 -0
- package/src/ui/components/table-expander.js +34 -0
- package/src/ui/integration/worker-ui-integration.js +565 -0
- package/src/ui/router/ui.ts +99 -0
- package/src/ui/services/workerApi.js +240 -0
- package/src/ui/types/worker-ui.ts +283 -0
- package/src/ui/utils/jsonValidator.js +444 -0
- package/src/ui/workers/index.html +202 -0
- package/src/ui/workers/main.js +1781 -0
- package/src/ui/workers/styles.css +1350 -0
package/dist/type.d.ts
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
export interface WorkerType {
|
|
2
|
+
name: string;
|
|
3
|
+
queueName: string;
|
|
4
|
+
processor: string;
|
|
5
|
+
version: string;
|
|
6
|
+
options: Options;
|
|
7
|
+
infrastructure: Infrastructure;
|
|
8
|
+
features: Features;
|
|
9
|
+
datacenter: Datacenter;
|
|
10
|
+
}
|
|
11
|
+
export interface Options {
|
|
12
|
+
concurrency: number;
|
|
13
|
+
limiter: Limiter;
|
|
14
|
+
}
|
|
15
|
+
export interface Limiter {
|
|
16
|
+
max: number;
|
|
17
|
+
duration: number;
|
|
18
|
+
}
|
|
19
|
+
export interface Infrastructure {
|
|
20
|
+
persistence: Persistence;
|
|
21
|
+
redis: Redis;
|
|
22
|
+
deadLetterQueue: DeadLetterQueue;
|
|
23
|
+
compliance: Compliance;
|
|
24
|
+
observability: Observability;
|
|
25
|
+
autoScaler: AutoScaler;
|
|
26
|
+
}
|
|
27
|
+
export interface Persistence {
|
|
28
|
+
driver: string;
|
|
29
|
+
}
|
|
30
|
+
export interface Redis {
|
|
31
|
+
env: boolean;
|
|
32
|
+
host: string;
|
|
33
|
+
port: string;
|
|
34
|
+
db: string;
|
|
35
|
+
password: string;
|
|
36
|
+
}
|
|
37
|
+
export interface DeadLetterQueue {
|
|
38
|
+
policy: string;
|
|
39
|
+
}
|
|
40
|
+
export interface Compliance {
|
|
41
|
+
config: Config;
|
|
42
|
+
}
|
|
43
|
+
export interface Config {
|
|
44
|
+
retentionDays: number;
|
|
45
|
+
}
|
|
46
|
+
export interface Observability {
|
|
47
|
+
enabled: boolean;
|
|
48
|
+
}
|
|
49
|
+
export interface AutoScaler {
|
|
50
|
+
enabled: boolean;
|
|
51
|
+
minWorkers: number;
|
|
52
|
+
maxWorkers: number;
|
|
53
|
+
}
|
|
54
|
+
export interface Features {
|
|
55
|
+
clustering: boolean;
|
|
56
|
+
metrics: boolean;
|
|
57
|
+
autoScaling: boolean;
|
|
58
|
+
circuitBreaker: boolean;
|
|
59
|
+
deadLetterQueue: boolean;
|
|
60
|
+
resourceMonitoring: boolean;
|
|
61
|
+
compliance: boolean;
|
|
62
|
+
observability: boolean;
|
|
63
|
+
plugins: boolean;
|
|
64
|
+
versioning: boolean;
|
|
65
|
+
datacenterOrchestration: boolean;
|
|
66
|
+
}
|
|
67
|
+
export interface Datacenter {
|
|
68
|
+
primaryRegion: string;
|
|
69
|
+
secondaryRegions: string[];
|
|
70
|
+
affinityRules: AffinityRules;
|
|
71
|
+
}
|
|
72
|
+
export interface AffinityRules {
|
|
73
|
+
preferLocal: boolean;
|
|
74
|
+
maxLatency: number;
|
|
75
|
+
avoidRegions: string[];
|
|
76
|
+
}
|
package/dist/type.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { Logger, MIME_TYPES, NodeSingletons, Router } from '@zintrust/core';
|
|
2
|
+
export const uiResolver = async (uiBasePath) => {
|
|
3
|
+
// Resolve base path for UI assets
|
|
4
|
+
// const __filename = NodeSingletons.url.fileURLToPath(import.meta.url);
|
|
5
|
+
// const __dirname = NodeSingletons.path.dirname(__filename);
|
|
6
|
+
const uiPath = NodeSingletons.path.resolve(uiBasePath, 'workers/index.html');
|
|
7
|
+
const html = await NodeSingletons.fs.readFile(uiPath, 'utf8');
|
|
8
|
+
return html;
|
|
9
|
+
};
|
|
10
|
+
// MIME type mapping for static files
|
|
11
|
+
const getMimeType = (filePath) => {
|
|
12
|
+
const ext = NodeSingletons.path.extname(filePath).toLowerCase();
|
|
13
|
+
const mimeTypes = {
|
|
14
|
+
'.css': MIME_TYPES.CSS,
|
|
15
|
+
'.js': MIME_TYPES.JS,
|
|
16
|
+
'.html': MIME_TYPES.HTML,
|
|
17
|
+
'.json': MIME_TYPES.JSON,
|
|
18
|
+
'.png': MIME_TYPES.PNG,
|
|
19
|
+
'.jpg': MIME_TYPES.JPG,
|
|
20
|
+
'.jpeg': MIME_TYPES.JPG,
|
|
21
|
+
'.gif': MIME_TYPES.GIF,
|
|
22
|
+
'.svg': MIME_TYPES.SVG,
|
|
23
|
+
'.ico': MIME_TYPES.ICO,
|
|
24
|
+
'.ipa': MIME_TYPES.IPA,
|
|
25
|
+
};
|
|
26
|
+
return mimeTypes[ext] || MIME_TYPES.IPA;
|
|
27
|
+
};
|
|
28
|
+
let uiBasePath = '';
|
|
29
|
+
const getUiBase = () => {
|
|
30
|
+
// Resolve base path for UI assets
|
|
31
|
+
if (uiBasePath.length > 0)
|
|
32
|
+
return uiBasePath;
|
|
33
|
+
const __filename = NodeSingletons.url.fileURLToPath(import.meta.url);
|
|
34
|
+
const __dirname = NodeSingletons.path.dirname(__filename);
|
|
35
|
+
uiBasePath = NodeSingletons.path.resolve(__dirname, '../');
|
|
36
|
+
return uiBasePath;
|
|
37
|
+
};
|
|
38
|
+
const serveStaticFile = async (req, res) => {
|
|
39
|
+
try {
|
|
40
|
+
const filePath = req.getPath();
|
|
41
|
+
const fullPath = NodeSingletons.path.resolve(getUiBase(), filePath.replace(/^\//, ''));
|
|
42
|
+
// Security check - prevent directory traversal
|
|
43
|
+
if (!fullPath.startsWith(uiBasePath)) {
|
|
44
|
+
res.setStatus(403);
|
|
45
|
+
res.send(Buffer.from('Forbidden'));
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const content = await NodeSingletons.fs.readFile(fullPath);
|
|
49
|
+
const mimeType = getMimeType(filePath);
|
|
50
|
+
res.setHeader('Content-Type', mimeType);
|
|
51
|
+
res.setHeader('Cache-Control', 'public, max-age=3600'); // 1 hour cache
|
|
52
|
+
res.send(content);
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
Logger.warn(`Static file not found: ${req.getPath()}`, err);
|
|
56
|
+
res.setStatus(404);
|
|
57
|
+
res.send(Buffer.from('Not Found'));
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
// Static file serving for workers assets
|
|
61
|
+
export const registerStaticAssets = (router, middleware) => {
|
|
62
|
+
const handler = async (_req, res) => {
|
|
63
|
+
try {
|
|
64
|
+
const html = await uiResolver(getUiBase());
|
|
65
|
+
res.html(html);
|
|
66
|
+
}
|
|
67
|
+
catch (err) {
|
|
68
|
+
Logger.error('Failed to load static UI page', err);
|
|
69
|
+
// Fallback to generated dashboard if static file unavailable
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
Router.group(router, '/workers', (r) => {
|
|
73
|
+
Router.get(r, '/', handler, { middleware });
|
|
74
|
+
// Serve workers CSS and JS files
|
|
75
|
+
Router.get(r, '/styles.css', serveStaticFile);
|
|
76
|
+
Router.get(r, '/main.js', serveStaticFile);
|
|
77
|
+
Router.get(r, '/:filename', serveStaticFile);
|
|
78
|
+
Router.get(r, '/integration/:filename', serveStaticFile);
|
|
79
|
+
// Serve components CSS files
|
|
80
|
+
Router.get(r, '/components/styles.css', serveStaticFile);
|
|
81
|
+
Router.get(r, '/components/:filename', serveStaticFile);
|
|
82
|
+
});
|
|
83
|
+
};
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Worker UI Types
|
|
3
|
+
* Type definitions for worker management UI components
|
|
4
|
+
*/
|
|
5
|
+
declare global {
|
|
6
|
+
interface HTMLElement {
|
|
7
|
+
appendChild(node: Node): Node;
|
|
8
|
+
remove(): void;
|
|
9
|
+
classList: DOMTokenList;
|
|
10
|
+
style: CSSStyleDeclaration;
|
|
11
|
+
textContent: string;
|
|
12
|
+
innerHTML: string;
|
|
13
|
+
className: string;
|
|
14
|
+
id: string;
|
|
15
|
+
querySelector(selector: string): Element | null;
|
|
16
|
+
addEventListener(type: string, listener: UIEventListener): void;
|
|
17
|
+
dataset: DOMStringMap;
|
|
18
|
+
}
|
|
19
|
+
type UIEventListener = (evt: Event) => void;
|
|
20
|
+
interface Event {
|
|
21
|
+
target: EventTarget | null;
|
|
22
|
+
}
|
|
23
|
+
interface Element {
|
|
24
|
+
querySelector(selector: string): Element | null;
|
|
25
|
+
}
|
|
26
|
+
interface EventTarget {
|
|
27
|
+
addEventListener(type: string, listener: UIEventListener): void;
|
|
28
|
+
}
|
|
29
|
+
interface DOMTokenList {
|
|
30
|
+
add(token: string): void;
|
|
31
|
+
remove(token: string): void;
|
|
32
|
+
}
|
|
33
|
+
interface CSSStyleDeclaration {
|
|
34
|
+
display: 'block' | 'none' | 'inline' | 'inline-block' | 'flex' | 'grid' | 'hidden' | 'inherit' | 'initial' | 'revert' | 'unset' | number;
|
|
35
|
+
[property: string]: string | number;
|
|
36
|
+
}
|
|
37
|
+
interface DOMStringMap {
|
|
38
|
+
[key: string]: string;
|
|
39
|
+
}
|
|
40
|
+
interface Node {
|
|
41
|
+
remove(): void;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export interface Node {
|
|
45
|
+
remove(): void;
|
|
46
|
+
}
|
|
47
|
+
export interface DOMTokenList {
|
|
48
|
+
add(token: string): void;
|
|
49
|
+
remove(token: string): void;
|
|
50
|
+
}
|
|
51
|
+
export interface CSSStyleDeclaration {
|
|
52
|
+
display: string | number;
|
|
53
|
+
[property: string]: string | number;
|
|
54
|
+
}
|
|
55
|
+
export interface DOMStringMap {
|
|
56
|
+
[key: string]: string;
|
|
57
|
+
}
|
|
58
|
+
export interface Element {
|
|
59
|
+
querySelector(selector: string): Element | null;
|
|
60
|
+
}
|
|
61
|
+
export interface EventTarget {
|
|
62
|
+
addEventListener(type: string, listener: UIEventListener): void;
|
|
63
|
+
}
|
|
64
|
+
export interface Event {
|
|
65
|
+
target: EventTarget | null;
|
|
66
|
+
}
|
|
67
|
+
export type UIEventListener = (evt: Event) => void;
|
|
68
|
+
export interface HTMLElement {
|
|
69
|
+
appendChild(node: Node): Node;
|
|
70
|
+
remove(): void;
|
|
71
|
+
classList: DOMTokenList;
|
|
72
|
+
style: CSSStyleDeclaration;
|
|
73
|
+
textContent: string;
|
|
74
|
+
innerHTML: string;
|
|
75
|
+
className: string;
|
|
76
|
+
id: string;
|
|
77
|
+
querySelector(selector: string): Element | null;
|
|
78
|
+
addEventListener(type: string, listener: UIEventListener): void;
|
|
79
|
+
dataset: DOMStringMap;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Worker instance interface for UI components
|
|
83
|
+
*/
|
|
84
|
+
export interface WorkerInstance {
|
|
85
|
+
id: string;
|
|
86
|
+
name: string;
|
|
87
|
+
status: 'running' | 'stopped' | 'failed' | 'paused';
|
|
88
|
+
queueName: string;
|
|
89
|
+
driver: 'database' | 'redis' | 'memory';
|
|
90
|
+
concurrency: number;
|
|
91
|
+
autoStart: boolean;
|
|
92
|
+
createdAt: string;
|
|
93
|
+
updatedAt: string;
|
|
94
|
+
lastHealthCheck?: string;
|
|
95
|
+
lastError?: string;
|
|
96
|
+
connectionState?: 'connected' | 'disconnected' | 'connecting';
|
|
97
|
+
version?: string;
|
|
98
|
+
region?: string;
|
|
99
|
+
processor?: string;
|
|
100
|
+
features?: Record<string, boolean>;
|
|
101
|
+
infrastructure?: Record<string, unknown>;
|
|
102
|
+
datacenter?: Record<string, unknown>;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Worker card instance interface
|
|
106
|
+
*/
|
|
107
|
+
export interface WorkerCardInstance {
|
|
108
|
+
element: HTMLElement;
|
|
109
|
+
worker: WorkerInstance;
|
|
110
|
+
isExpanded: () => boolean;
|
|
111
|
+
toggleExpand: () => void;
|
|
112
|
+
updateWorker: (worker: WorkerInstance) => void;
|
|
113
|
+
destroy: () => void;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Worker expand panel instance interface
|
|
117
|
+
*/
|
|
118
|
+
export interface WorkerExpandPanelInstance {
|
|
119
|
+
element: HTMLElement;
|
|
120
|
+
worker: WorkerInstance;
|
|
121
|
+
render: () => void;
|
|
122
|
+
destroy: () => void;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* JSON viewer modal instance interface
|
|
126
|
+
*/
|
|
127
|
+
export interface JsonViewerInstance {
|
|
128
|
+
element: HTMLElement;
|
|
129
|
+
isOpen: () => boolean;
|
|
130
|
+
open: (data: unknown) => void;
|
|
131
|
+
close: () => void;
|
|
132
|
+
destroy: () => void;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* JSON editor modal instance interface
|
|
136
|
+
*/
|
|
137
|
+
export interface JsonEditorInstance {
|
|
138
|
+
element: HTMLElement;
|
|
139
|
+
isOpen: () => boolean;
|
|
140
|
+
open: (data: unknown) => void;
|
|
141
|
+
close: () => void;
|
|
142
|
+
getJsonData: () => unknown;
|
|
143
|
+
setJsonData: (data: unknown) => void;
|
|
144
|
+
validate: () => ValidationResult;
|
|
145
|
+
destroy: () => void;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Validation result interface
|
|
149
|
+
*/
|
|
150
|
+
export interface ValidationResult {
|
|
151
|
+
isValid: boolean;
|
|
152
|
+
errors: ValidationError[];
|
|
153
|
+
warnings: ValidationWarning[];
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Validation error interface
|
|
157
|
+
*/
|
|
158
|
+
export interface ValidationError {
|
|
159
|
+
path: string;
|
|
160
|
+
message: string;
|
|
161
|
+
code: string;
|
|
162
|
+
field?: string;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Validation warning interface
|
|
166
|
+
*/
|
|
167
|
+
export interface ValidationWarning {
|
|
168
|
+
path: string;
|
|
169
|
+
message: string;
|
|
170
|
+
code: string;
|
|
171
|
+
field?: string;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Modal options interface
|
|
175
|
+
*/
|
|
176
|
+
export interface ModalOptions {
|
|
177
|
+
title?: string;
|
|
178
|
+
width?: string;
|
|
179
|
+
height?: string;
|
|
180
|
+
closable?: boolean;
|
|
181
|
+
backdrop?: boolean;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* JSON viewer options interface
|
|
185
|
+
*/
|
|
186
|
+
export interface JsonViewerOptions extends ModalOptions {
|
|
187
|
+
expandAll?: boolean;
|
|
188
|
+
searchEnabled?: boolean;
|
|
189
|
+
copyEnabled?: boolean;
|
|
190
|
+
theme?: 'light' | 'dark';
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* JSON editor options interface
|
|
194
|
+
*/
|
|
195
|
+
export interface JsonEditorOptions extends ModalOptions {
|
|
196
|
+
validateOnChange?: boolean;
|
|
197
|
+
autoFormat?: boolean;
|
|
198
|
+
theme?: 'light' | 'dark';
|
|
199
|
+
fontSize?: number;
|
|
200
|
+
wordWrap?: boolean;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* API response interface
|
|
204
|
+
*/
|
|
205
|
+
export interface ApiResponse<T = unknown> {
|
|
206
|
+
success: boolean;
|
|
207
|
+
data?: T;
|
|
208
|
+
error?: string;
|
|
209
|
+
message?: string;
|
|
210
|
+
code?: string;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Worker API response interface
|
|
214
|
+
*/
|
|
215
|
+
export interface WorkerApiResponse extends ApiResponse<WorkerInstance> {
|
|
216
|
+
data?: WorkerInstance;
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Workers list API response interface
|
|
220
|
+
*/
|
|
221
|
+
export interface WorkersListApiResponse extends ApiResponse<WorkerInstance[]> {
|
|
222
|
+
data?: WorkerInstance[];
|
|
223
|
+
pagination?: {
|
|
224
|
+
page: number;
|
|
225
|
+
limit: number;
|
|
226
|
+
total: number;
|
|
227
|
+
totalPages: number;
|
|
228
|
+
};
|
|
229
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@zintrust/workers",
|
|
3
|
+
"version": "0.1.27",
|
|
4
|
+
"private": false,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"files": [
|
|
9
|
+
"dist",
|
|
10
|
+
"src"
|
|
11
|
+
],
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"types": "./dist/index.d.ts",
|
|
15
|
+
"default": "./dist/index.js"
|
|
16
|
+
},
|
|
17
|
+
"./HealthMonitor": {
|
|
18
|
+
"types": "./dist/HealthMonitor.d.ts",
|
|
19
|
+
"default": "./dist/HealthMonitor.js"
|
|
20
|
+
},
|
|
21
|
+
"./ResourceMonitor": {
|
|
22
|
+
"types": "./dist/ResourceMonitor.d.ts",
|
|
23
|
+
"default": "./dist/ResourceMonitor.js"
|
|
24
|
+
},
|
|
25
|
+
"./WorkerFactory": {
|
|
26
|
+
"types": "./dist/WorkerFactory.d.ts",
|
|
27
|
+
"default": "./dist/WorkerFactory.js"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"engines": {
|
|
31
|
+
"node": ">=20.0.0"
|
|
32
|
+
},
|
|
33
|
+
"peerDependencies": {
|
|
34
|
+
"@zintrust/core": "^0.1.27"
|
|
35
|
+
},
|
|
36
|
+
"publishConfig": {
|
|
37
|
+
"access": "public"
|
|
38
|
+
},
|
|
39
|
+
"scripts": {
|
|
40
|
+
"build": "npm --prefix ../queue-redis run -s build && npm --prefix ../queue-monitor run -s build && tsc -p tsconfig.json",
|
|
41
|
+
"prepublishOnly": "npm run build"
|
|
42
|
+
},
|
|
43
|
+
"dependencies": {
|
|
44
|
+
"@opentelemetry/api": "^1.9.0",
|
|
45
|
+
"@zintrust/queue-redis": "file:../queue-redis",
|
|
46
|
+
"@zintrust/queue-monitor": "file:../queue-monitor",
|
|
47
|
+
"hot-shots": "^10.2.1",
|
|
48
|
+
"ioredis": "^5.9.2",
|
|
49
|
+
"ml.js": "^0.0.1",
|
|
50
|
+
"prom-client": "^15.1.3",
|
|
51
|
+
"simple-statistics": "^7.8.8"
|
|
52
|
+
}
|
|
53
|
+
}
|