xypriss 1.2.3 → 1.3.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 +138 -3
- package/dist/cjs/mods/security/src/components/cache/index.js +1 -1
- package/dist/cjs/shared/logger/Logger.js +1 -0
- package/dist/cjs/shared/logger/Logger.js.map +1 -1
- package/dist/cjs/src/cluster/bun-cluster-manager.js +1567 -0
- package/dist/cjs/src/cluster/bun-cluster-manager.js.map +1 -0
- package/dist/cjs/src/cluster/cluster-manager.js +1 -1
- package/dist/cjs/src/cluster/cluster-manager.js.map +1 -1
- package/dist/cjs/src/cluster/index.js +25 -6
- package/dist/cjs/src/cluster/index.js.map +1 -1
- package/dist/cjs/src/cluster/memory-manager.js +463 -0
- package/dist/cjs/src/cluster/memory-manager.js.map +1 -0
- package/dist/cjs/src/cluster/modules/BunIPCManager.js +603 -0
- package/dist/cjs/src/cluster/modules/BunIPCManager.js.map +1 -0
- package/dist/cjs/src/cluster/modules/ClusterFactory.js +22 -1
- package/dist/cjs/src/cluster/modules/ClusterFactory.js.map +1 -1
- package/dist/cjs/src/cluster/modules/CpuMonitor.js +658 -0
- package/dist/cjs/src/cluster/modules/CpuMonitor.js.map +1 -0
- package/dist/cjs/src/cluster/modules/ProcessMonitor.js +513 -0
- package/dist/cjs/src/cluster/modules/ProcessMonitor.js.map +1 -0
- package/dist/cjs/src/plugins/server-maintenance-plugin.js +1 -1
- package/dist/cjs/src/server/FastServer.js +64 -43
- package/dist/cjs/src/server/FastServer.js.map +1 -1
- package/dist/cjs/src/server/components/fastapi/ClusterManagerComponent.js +226 -10
- package/dist/cjs/src/server/components/fastapi/ClusterManagerComponent.js.map +1 -1
- package/dist/cjs/src/server/const/Cluster.config.js +174 -31
- package/dist/cjs/src/server/const/Cluster.config.js.map +1 -1
- package/dist/cjs/src/server/const/default.js +11 -2
- package/dist/cjs/src/server/const/default.js.map +1 -1
- package/dist/cjs/src/server/utils/PortManager.js +26 -15
- package/dist/cjs/src/server/utils/PortManager.js.map +1 -1
- package/dist/esm/mods/security/src/components/cache/index.js +1 -1
- package/dist/esm/shared/logger/Logger.js +1 -0
- package/dist/esm/shared/logger/Logger.js.map +1 -1
- package/dist/esm/src/cluster/bun-cluster-manager.js +1565 -0
- package/dist/esm/src/cluster/bun-cluster-manager.js.map +1 -0
- package/dist/esm/src/cluster/cluster-manager.js +1 -1
- package/dist/esm/src/cluster/cluster-manager.js.map +1 -1
- package/dist/esm/src/cluster/index.js +25 -6
- package/dist/esm/src/cluster/index.js.map +1 -1
- package/dist/esm/src/cluster/memory-manager.js +461 -0
- package/dist/esm/src/cluster/memory-manager.js.map +1 -0
- package/dist/esm/src/cluster/modules/BunIPCManager.js +601 -0
- package/dist/esm/src/cluster/modules/BunIPCManager.js.map +1 -0
- package/dist/esm/src/cluster/modules/ClusterFactory.js +22 -1
- package/dist/esm/src/cluster/modules/ClusterFactory.js.map +1 -1
- package/dist/esm/src/cluster/modules/CpuMonitor.js +656 -0
- package/dist/esm/src/cluster/modules/CpuMonitor.js.map +1 -0
- package/dist/esm/src/cluster/modules/ProcessMonitor.js +511 -0
- package/dist/esm/src/cluster/modules/ProcessMonitor.js.map +1 -0
- package/dist/esm/src/plugins/server-maintenance-plugin.js +1 -1
- package/dist/esm/src/server/FastServer.js +64 -43
- package/dist/esm/src/server/FastServer.js.map +1 -1
- package/dist/esm/src/server/components/fastapi/ClusterManagerComponent.js +226 -10
- package/dist/esm/src/server/components/fastapi/ClusterManagerComponent.js.map +1 -1
- package/dist/esm/src/server/const/Cluster.config.js +174 -31
- package/dist/esm/src/server/const/Cluster.config.js.map +1 -1
- package/dist/esm/src/server/const/default.js +11 -2
- package/dist/esm/src/server/const/default.js.map +1 -1
- package/dist/esm/src/server/utils/PortManager.js +26 -15
- package/dist/esm/src/server/utils/PortManager.js.map +1 -1
- package/dist/index.d.ts +78 -1
- package/package.json +3 -1
- package/dist/cjs/src/plugins/modules/network/index.js +0 -120
- package/dist/cjs/src/plugins/modules/network/index.js.map +0 -1
- package/dist/cjs/src/server/plugins/PluginEngine.js +0 -378
- package/dist/cjs/src/server/plugins/PluginEngine.js.map +0 -1
- package/dist/cjs/src/server/plugins/PluginRegistry.js +0 -339
- package/dist/cjs/src/server/plugins/PluginRegistry.js.map +0 -1
- package/dist/cjs/src/server/plugins/builtin/JWTAuthPlugin.js +0 -591
- package/dist/cjs/src/server/plugins/builtin/JWTAuthPlugin.js.map +0 -1
- package/dist/cjs/src/server/plugins/builtin/ResponseTimePlugin.js +0 -413
- package/dist/cjs/src/server/plugins/builtin/ResponseTimePlugin.js.map +0 -1
- package/dist/cjs/src/server/plugins/builtin/SmartCachePlugin.js +0 -843
- package/dist/cjs/src/server/plugins/builtin/SmartCachePlugin.js.map +0 -1
- package/dist/cjs/src/server/plugins/core/CachePlugin.js +0 -1975
- package/dist/cjs/src/server/plugins/core/CachePlugin.js.map +0 -1
- package/dist/cjs/src/server/plugins/core/PerformancePlugin.js +0 -894
- package/dist/cjs/src/server/plugins/core/PerformancePlugin.js.map +0 -1
- package/dist/cjs/src/server/plugins/core/SecurityPlugin.js +0 -799
- package/dist/cjs/src/server/plugins/core/SecurityPlugin.js.map +0 -1
- package/dist/cjs/src/server/plugins/types/PluginTypes.js +0 -47
- package/dist/cjs/src/server/plugins/types/PluginTypes.js.map +0 -1
- package/dist/esm/src/plugins/modules/network/index.js +0 -109
- package/dist/esm/src/plugins/modules/network/index.js.map +0 -1
- package/dist/esm/src/server/plugins/PluginEngine.js +0 -376
- package/dist/esm/src/server/plugins/PluginEngine.js.map +0 -1
- package/dist/esm/src/server/plugins/PluginRegistry.js +0 -337
- package/dist/esm/src/server/plugins/PluginRegistry.js.map +0 -1
- package/dist/esm/src/server/plugins/builtin/JWTAuthPlugin.js +0 -589
- package/dist/esm/src/server/plugins/builtin/JWTAuthPlugin.js.map +0 -1
- package/dist/esm/src/server/plugins/builtin/ResponseTimePlugin.js +0 -411
- package/dist/esm/src/server/plugins/builtin/ResponseTimePlugin.js.map +0 -1
- package/dist/esm/src/server/plugins/builtin/SmartCachePlugin.js +0 -841
- package/dist/esm/src/server/plugins/builtin/SmartCachePlugin.js.map +0 -1
- package/dist/esm/src/server/plugins/core/CachePlugin.js +0 -1973
- package/dist/esm/src/server/plugins/core/CachePlugin.js.map +0 -1
- package/dist/esm/src/server/plugins/core/PerformancePlugin.js +0 -872
- package/dist/esm/src/server/plugins/core/PerformancePlugin.js.map +0 -1
- package/dist/esm/src/server/plugins/core/SecurityPlugin.js +0 -797
- package/dist/esm/src/server/plugins/core/SecurityPlugin.js.map +0 -1
- package/dist/esm/src/server/plugins/types/PluginTypes.js +0 -47
- package/dist/esm/src/server/plugins/types/PluginTypes.js.map +0 -1
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
require('perf_hooks');
|
|
4
|
-
require('../types/PluginTypes.js');
|
|
5
|
-
var NetworkTypes = require('./types/NetworkTypes.js');
|
|
6
|
-
var ConnectionPlugin = require('./builtin/ConnectionPlugin.js');
|
|
7
|
-
var CompressionPlugin = require('./builtin/CompressionPlugin.js');
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* XyPriss Network Plugin System
|
|
11
|
-
*
|
|
12
|
-
* Comprehensive network plugin system for advanced networking capabilities
|
|
13
|
-
* including connection management, proxying, compression, rate limiting, and more
|
|
14
|
-
*/
|
|
15
|
-
// Core network plugin system
|
|
16
|
-
/**
|
|
17
|
-
* Network plugin system metadata
|
|
18
|
-
*/
|
|
19
|
-
const NETWORK_PLUGIN_SYSTEM_VERSION = "1.0.0";
|
|
20
|
-
const NETWORK_PLUGIN_SYSTEM_NAME = "XyPriss Network Plugin System";
|
|
21
|
-
/**
|
|
22
|
-
* Network plugin factory functions
|
|
23
|
-
*/
|
|
24
|
-
const NetworkPluginFactory = {
|
|
25
|
-
/**
|
|
26
|
-
* Create a connection management plugin
|
|
27
|
-
*/
|
|
28
|
-
createConnectionPlugin: (config) => new ConnectionPlugin.ConnectionPlugin(config),
|
|
29
|
-
/**
|
|
30
|
-
* Create a compression plugin
|
|
31
|
-
*/
|
|
32
|
-
createCompressionPlugin: (config) => new CompressionPlugin.CompressionPlugin(config),
|
|
33
|
-
/**
|
|
34
|
-
* Get all available network plugin types
|
|
35
|
-
*/
|
|
36
|
-
getAvailablePlugins: () => [
|
|
37
|
-
{
|
|
38
|
-
id: "xypriss.network.connection",
|
|
39
|
-
name: "Connection Management Plugin",
|
|
40
|
-
category: NetworkTypes.NetworkCategory.CONNECTION,
|
|
41
|
-
description: "HTTP/2, connection pooling, keep-alive management",
|
|
42
|
-
},
|
|
43
|
-
{
|
|
44
|
-
id: "xypriss.network.compression",
|
|
45
|
-
name: "Response Compression Plugin",
|
|
46
|
-
category: NetworkTypes.NetworkCategory.COMPRESSION,
|
|
47
|
-
description: "Gzip, Brotli, Deflate compression with smart optimization",
|
|
48
|
-
},
|
|
49
|
-
// More plugins will be added here as they're implemented
|
|
50
|
-
],
|
|
51
|
-
};
|
|
52
|
-
/**
|
|
53
|
-
* Network plugin utilities
|
|
54
|
-
*/
|
|
55
|
-
const NetworkPluginUtils = {
|
|
56
|
-
/**
|
|
57
|
-
* Validate network plugin configuration
|
|
58
|
-
*/
|
|
59
|
-
validateConfig: (pluginType, config) => {
|
|
60
|
-
switch (pluginType) {
|
|
61
|
-
case NetworkTypes.NetworkCategory.CONNECTION:
|
|
62
|
-
return (new ConnectionPlugin.ConnectionPlugin().validateNetworkConfig?.(config) ??
|
|
63
|
-
true);
|
|
64
|
-
case NetworkTypes.NetworkCategory.COMPRESSION:
|
|
65
|
-
return (new CompressionPlugin.CompressionPlugin().validateNetworkConfig?.(config) ??
|
|
66
|
-
true);
|
|
67
|
-
default:
|
|
68
|
-
return true;
|
|
69
|
-
}
|
|
70
|
-
},
|
|
71
|
-
/**
|
|
72
|
-
* Get default configuration for a plugin type
|
|
73
|
-
*/
|
|
74
|
-
getDefaultConfig: (pluginType) => {
|
|
75
|
-
switch (pluginType) {
|
|
76
|
-
case NetworkTypes.NetworkCategory.CONNECTION:
|
|
77
|
-
return {
|
|
78
|
-
http2: { enabled: false, maxConcurrentStreams: 100 },
|
|
79
|
-
keepAlive: {
|
|
80
|
-
enabled: true,
|
|
81
|
-
timeout: 30000,
|
|
82
|
-
maxRequests: 1000,
|
|
83
|
-
},
|
|
84
|
-
connectionPool: { maxConnections: 1000, timeout: 5000 },
|
|
85
|
-
timeouts: {
|
|
86
|
-
connection: 10000,
|
|
87
|
-
request: 30000,
|
|
88
|
-
response: 30000,
|
|
89
|
-
},
|
|
90
|
-
};
|
|
91
|
-
case NetworkTypes.NetworkCategory.COMPRESSION:
|
|
92
|
-
return {
|
|
93
|
-
enabled: true,
|
|
94
|
-
algorithms: ["gzip", "deflate"],
|
|
95
|
-
level: 6,
|
|
96
|
-
threshold: 1024,
|
|
97
|
-
contentTypes: [
|
|
98
|
-
"text/*",
|
|
99
|
-
"application/json",
|
|
100
|
-
"application/javascript",
|
|
101
|
-
"application/xml",
|
|
102
|
-
],
|
|
103
|
-
};
|
|
104
|
-
default:
|
|
105
|
-
return {};
|
|
106
|
-
}
|
|
107
|
-
},
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
Object.defineProperty(exports, 'NetworkCategory', {
|
|
111
|
-
enumerable: true,
|
|
112
|
-
get: function () { return NetworkTypes.NetworkCategory; }
|
|
113
|
-
});
|
|
114
|
-
exports.ConnectionPlugin = ConnectionPlugin.ConnectionPlugin;
|
|
115
|
-
exports.CompressionPlugin = CompressionPlugin.CompressionPlugin;
|
|
116
|
-
exports.NETWORK_PLUGIN_SYSTEM_NAME = NETWORK_PLUGIN_SYSTEM_NAME;
|
|
117
|
-
exports.NETWORK_PLUGIN_SYSTEM_VERSION = NETWORK_PLUGIN_SYSTEM_VERSION;
|
|
118
|
-
exports.NetworkPluginFactory = NetworkPluginFactory;
|
|
119
|
-
exports.NetworkPluginUtils = NetworkPluginUtils;
|
|
120
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../../../src/plugins/modules/network/index.ts"],"sourcesContent":[null],"names":["ConnectionPlugin","CompressionPlugin","NetworkCategory"],"mappings":";;;;;;;;AAAA;;;;;AAKG;AAEH;AAoBA;;AAEG;AACI,MAAM,6BAA6B,GAAG,QAAQ;AAC9C,MAAM,0BAA0B,GAAG,gCAAgC;AAE1E;;AAEG;AACU,MAAA,oBAAoB,GAAG;AAChC;;AAEG;IACH,sBAAsB,EAAE,CAAC,MAAyB,KAC9C,IAAIA,iCAAgB,CAAC,MAAM,CAAC;AAEhC;;AAEG;IACH,uBAAuB,EAAE,CAAC,MAA0B,KAChD,IAAIC,mCAAiB,CAAC,MAAM,CAAC;AAEjC;;AAEG;IACH,mBAAmB,EAAE,MAAM;AACvB,QAAA;AACI,YAAA,EAAE,EAAE,4BAA4B;AAChC,YAAA,IAAI,EAAE,8BAA8B;YACpC,QAAQ,EAAEC,4BAAe,CAAC,UAAU;AACpC,YAAA,WAAW,EAAE,mDAAmD;AACnE,SAAA;AACD,QAAA;AACI,YAAA,EAAE,EAAE,6BAA6B;AACjC,YAAA,IAAI,EAAE,6BAA6B;YACnC,QAAQ,EAAEA,4BAAe,CAAC,WAAW;AACrC,YAAA,WAAW,EACP,2DAA2D;AAClE,SAAA;;AAEJ,KAAA;EACH;AAEF;;AAEG;AACU,MAAA,kBAAkB,GAAG;AAC9B;;AAEG;AACH,IAAA,cAAc,EAAE,CAAC,UAA2B,EAAE,MAAW,KAAa;QAClE,QAAQ,UAAU;YACd,KAAKA,4BAAe,CAAC,UAAU;gBAC3B,QACI,IAAIF,iCAAgB,EAAE,CAAC,qBAAqB,GAAG,MAAM,CAAC;AACtD,oBAAA,IAAI,EACN;YACN,KAAKE,4BAAe,CAAC,WAAW;gBAC5B,QACI,IAAID,mCAAiB,EAAE,CAAC,qBAAqB,GAAG,MAAM,CAAC;AACvD,oBAAA,IAAI,EACN;AACN,YAAA;AACI,gBAAA,OAAO,IAAI,CAAC;SACnB;KACJ;AAED;;AAEG;AACH,IAAA,gBAAgB,EAAE,CAAC,UAA2B,KAAyB;QACnE,QAAQ,UAAU;YACd,KAAKC,4BAAe,CAAC,UAAU;gBAC3B,OAAO;oBACH,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,oBAAoB,EAAE,GAAG,EAAE;AACpD,oBAAA,SAAS,EAAE;AACP,wBAAA,OAAO,EAAE,IAAI;AACb,wBAAA,OAAO,EAAE,KAAK;AACd,wBAAA,WAAW,EAAE,IAAI;AACpB,qBAAA;oBACD,cAAc,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE;AACvD,oBAAA,QAAQ,EAAE;AACN,wBAAA,UAAU,EAAE,KAAK;AACjB,wBAAA,OAAO,EAAE,KAAK;AACd,wBAAA,QAAQ,EAAE,KAAK;AAClB,qBAAA;iBACgB,CAAC;YAC1B,KAAKA,4BAAe,CAAC,WAAW;gBAC5B,OAAO;AACH,oBAAA,OAAO,EAAE,IAAI;AACb,oBAAA,UAAU,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;AAC/B,oBAAA,KAAK,EAAE,CAAC;AACR,oBAAA,SAAS,EAAE,IAAI;AACf,oBAAA,YAAY,EAAE;wBACV,QAAQ;wBACR,kBAAkB;wBAClB,wBAAwB;wBACxB,iBAAiB;AACpB,qBAAA;iBACiB,CAAC;AAC3B,YAAA;AACI,gBAAA,OAAO,EAAyB,CAAC;SACxC;KACJ;;;;;;;;;;;;;;"}
|
|
@@ -1,378 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
var events = require('events');
|
|
4
|
-
var nehoid = require('nehoid');
|
|
5
|
-
var PluginTypes = require('./types/PluginTypes.js');
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Ultra-Fast Plugin Execution Engine
|
|
9
|
-
*
|
|
10
|
-
* High-performance plugin execution engine designed to achieve <1ms overhead
|
|
11
|
-
* while maintaining security and comprehensive error handling.
|
|
12
|
-
*/
|
|
13
|
-
/**
|
|
14
|
-
* Ultra-fast plugin execution engine with intelligent optimization
|
|
15
|
-
*/
|
|
16
|
-
class PluginEngine extends events.EventEmitter {
|
|
17
|
-
constructor(registry, cache, cluster) {
|
|
18
|
-
super();
|
|
19
|
-
this.executionPool = new Map();
|
|
20
|
-
this.warmupCache = new Map();
|
|
21
|
-
// Performance optimization: Object pooling for contexts
|
|
22
|
-
this.contextPool = [];
|
|
23
|
-
this.MAX_POOL_SIZE = 100;
|
|
24
|
-
// Circuit breaker for failing plugins
|
|
25
|
-
this.circuitBreakers = new Map();
|
|
26
|
-
this.registry = registry;
|
|
27
|
-
this.cache = cache;
|
|
28
|
-
this.cluster = cluster;
|
|
29
|
-
// Listen to registry events
|
|
30
|
-
this.setupRegistryEventHandlers();
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Execute plugins for a specific type with ultra-fast performance
|
|
34
|
-
*/
|
|
35
|
-
async executePlugins(type, req, res, next) {
|
|
36
|
-
const startTime = performance.now();
|
|
37
|
-
const executionId = nehoid.NehoID.generate({ prefix: "plug.exec", size: 8 });
|
|
38
|
-
try {
|
|
39
|
-
// Get plugins for this type (pre-sorted by priority)
|
|
40
|
-
const plugins = this.registry.getPluginsByType(type);
|
|
41
|
-
if (plugins.length === 0) {
|
|
42
|
-
return true; // Continue execution if no plugins
|
|
43
|
-
}
|
|
44
|
-
// Create or reuse execution context
|
|
45
|
-
const context = this.createExecutionContext(req, res, next, executionId, startTime);
|
|
46
|
-
// Execute plugins based on type strategy
|
|
47
|
-
const success = await this.executePluginChain(plugins, context);
|
|
48
|
-
// Update performance metrics
|
|
49
|
-
const totalExecutionTime = performance.now() - startTime;
|
|
50
|
-
this.updatePerformanceMetrics(type, totalExecutionTime, success);
|
|
51
|
-
// Return context to pool
|
|
52
|
-
this.returnContextToPool(context);
|
|
53
|
-
return success;
|
|
54
|
-
}
|
|
55
|
-
catch (error) {
|
|
56
|
-
const executionTime = performance.now() - startTime;
|
|
57
|
-
this.handleExecutionError(type, executionId, error, executionTime);
|
|
58
|
-
return false;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Execute a single plugin with comprehensive error handling
|
|
63
|
-
*/
|
|
64
|
-
async executePlugin(plugin, context) {
|
|
65
|
-
const startTime = performance.now();
|
|
66
|
-
try {
|
|
67
|
-
// Check circuit breaker
|
|
68
|
-
if (this.isCircuitBreakerOpen(plugin.id)) {
|
|
69
|
-
return {
|
|
70
|
-
success: false,
|
|
71
|
-
executionTime: 0,
|
|
72
|
-
error: new Error(`Circuit breaker open for plugin ${plugin.id}`),
|
|
73
|
-
shouldContinue: true,
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
// Warm up plugin if needed
|
|
77
|
-
await this.warmupPlugin(plugin, context);
|
|
78
|
-
// Execute plugin with timeout
|
|
79
|
-
const result = await this.executeWithTimeout(plugin, context);
|
|
80
|
-
const executionTime = performance.now() - startTime;
|
|
81
|
-
result.executionTime = executionTime;
|
|
82
|
-
// Update plugin statistics
|
|
83
|
-
this.registry.updateStats(plugin.id, executionTime, result.success);
|
|
84
|
-
// Reset circuit breaker on success
|
|
85
|
-
if (result.success) {
|
|
86
|
-
this.resetCircuitBreaker(plugin.id);
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
this.updateCircuitBreaker(plugin.id);
|
|
90
|
-
}
|
|
91
|
-
// Emit execution event
|
|
92
|
-
this.emitPluginEvent(PluginTypes.PluginEventType.PLUGIN_EXECUTED, plugin.id, {
|
|
93
|
-
executionTime,
|
|
94
|
-
success: result.success,
|
|
95
|
-
type: plugin.type,
|
|
96
|
-
});
|
|
97
|
-
return result;
|
|
98
|
-
}
|
|
99
|
-
catch (error) {
|
|
100
|
-
const executionTime = performance.now() - startTime;
|
|
101
|
-
// Update circuit breaker
|
|
102
|
-
this.updateCircuitBreaker(plugin.id);
|
|
103
|
-
// Update error statistics
|
|
104
|
-
this.registry.updateStats(plugin.id, executionTime, false);
|
|
105
|
-
// Emit error event
|
|
106
|
-
this.emitPluginEvent(PluginTypes.PluginEventType.PLUGIN_ERROR, plugin.id, {
|
|
107
|
-
error: error.message,
|
|
108
|
-
executionTime,
|
|
109
|
-
type: plugin.type,
|
|
110
|
-
});
|
|
111
|
-
return {
|
|
112
|
-
success: false,
|
|
113
|
-
executionTime,
|
|
114
|
-
error,
|
|
115
|
-
shouldContinue: true,
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
/**
|
|
120
|
-
* Execute plugin chain with intelligent optimization
|
|
121
|
-
*/
|
|
122
|
-
async executePluginChain(plugins, context) {
|
|
123
|
-
// For critical performance plugins, execute in parallel
|
|
124
|
-
if (plugins.length > 0 && plugins[0].type === PluginTypes.PluginType.PERFORMANCE) {
|
|
125
|
-
return await this.executePluginsParallel(plugins, context);
|
|
126
|
-
}
|
|
127
|
-
// For security and cache plugins, execute sequentially
|
|
128
|
-
return await this.executePluginsSequential(plugins, context);
|
|
129
|
-
}
|
|
130
|
-
/**
|
|
131
|
-
* Execute plugins sequentially (for security, cache operations)
|
|
132
|
-
*/
|
|
133
|
-
async executePluginsSequential(plugins, context) {
|
|
134
|
-
for (const plugin of plugins) {
|
|
135
|
-
const result = await this.executePlugin(plugin, context);
|
|
136
|
-
if (!result.success && plugin.type === PluginTypes.PluginType.SECURITY) {
|
|
137
|
-
// Security plugins must succeed
|
|
138
|
-
return false;
|
|
139
|
-
}
|
|
140
|
-
if (!result.shouldContinue) {
|
|
141
|
-
// Plugin requested to stop execution
|
|
142
|
-
return false;
|
|
143
|
-
}
|
|
144
|
-
// Store plugin result data
|
|
145
|
-
if (result.data) {
|
|
146
|
-
context.pluginData.set(plugin.id, result.data);
|
|
147
|
-
}
|
|
148
|
-
// Handle cache data
|
|
149
|
-
if (result.cacheData) {
|
|
150
|
-
await this.cache.set(result.cacheData.key, result.cacheData.value, { ttl: result.cacheData.ttl });
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
return true;
|
|
154
|
-
}
|
|
155
|
-
/**
|
|
156
|
-
* Execute plugins in parallel (for performance monitoring)
|
|
157
|
-
*/
|
|
158
|
-
async executePluginsParallel(plugins, context) {
|
|
159
|
-
const promises = plugins.map((plugin) => this.executePlugin(plugin, context));
|
|
160
|
-
const results = await Promise.allSettled(promises);
|
|
161
|
-
let allSuccessful = true;
|
|
162
|
-
results.forEach((result, index) => {
|
|
163
|
-
if (result.status === "fulfilled") {
|
|
164
|
-
const pluginResult = result.value;
|
|
165
|
-
if (!pluginResult.success) {
|
|
166
|
-
allSuccessful = false;
|
|
167
|
-
}
|
|
168
|
-
// Store plugin result data
|
|
169
|
-
if (pluginResult.data) {
|
|
170
|
-
context.pluginData.set(plugins[index].id, pluginResult.data);
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
else {
|
|
174
|
-
allSuccessful = false;
|
|
175
|
-
}
|
|
176
|
-
});
|
|
177
|
-
return allSuccessful;
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Execute plugin with timeout protection
|
|
181
|
-
*/
|
|
182
|
-
async executeWithTimeout(plugin, context) {
|
|
183
|
-
const timeoutMs = plugin.maxExecutionTime;
|
|
184
|
-
return new Promise((resolve, reject) => {
|
|
185
|
-
const timeout = setTimeout(() => {
|
|
186
|
-
this.emitPluginEvent(PluginTypes.PluginEventType.PLUGIN_TIMEOUT, plugin.id, {
|
|
187
|
-
timeout: timeoutMs,
|
|
188
|
-
type: plugin.type,
|
|
189
|
-
});
|
|
190
|
-
reject(new Error(`Plugin ${plugin.id} timed out after ${timeoutMs}ms`));
|
|
191
|
-
}, timeoutMs);
|
|
192
|
-
// Execute plugin
|
|
193
|
-
const execution = plugin.isAsync
|
|
194
|
-
? plugin.execute(context)
|
|
195
|
-
: Promise.resolve(plugin.execute(context));
|
|
196
|
-
execution
|
|
197
|
-
.then((result) => {
|
|
198
|
-
clearTimeout(timeout);
|
|
199
|
-
resolve(result);
|
|
200
|
-
})
|
|
201
|
-
.catch((error) => {
|
|
202
|
-
clearTimeout(timeout);
|
|
203
|
-
reject(error);
|
|
204
|
-
});
|
|
205
|
-
});
|
|
206
|
-
}
|
|
207
|
-
/**
|
|
208
|
-
* Create optimized execution context with object pooling
|
|
209
|
-
*/
|
|
210
|
-
createExecutionContext(req, res, next, executionId, startTime) {
|
|
211
|
-
// Try to reuse context from pool
|
|
212
|
-
let context = this.contextPool.pop();
|
|
213
|
-
if (!context) {
|
|
214
|
-
context = {
|
|
215
|
-
req,
|
|
216
|
-
res,
|
|
217
|
-
next,
|
|
218
|
-
startTime,
|
|
219
|
-
executionId,
|
|
220
|
-
cache: this.cache,
|
|
221
|
-
cluster: this.cluster,
|
|
222
|
-
pluginData: new Map(),
|
|
223
|
-
security: {
|
|
224
|
-
isAuthenticated: false,
|
|
225
|
-
roles: [],
|
|
226
|
-
permissions: [],
|
|
227
|
-
},
|
|
228
|
-
metrics: {
|
|
229
|
-
requestStartTime: startTime,
|
|
230
|
-
pluginExecutionTimes: new Map(),
|
|
231
|
-
cacheHits: 0,
|
|
232
|
-
cacheMisses: 0,
|
|
233
|
-
},
|
|
234
|
-
};
|
|
235
|
-
}
|
|
236
|
-
else {
|
|
237
|
-
// Reset reused context
|
|
238
|
-
context.req = req;
|
|
239
|
-
context.res = res;
|
|
240
|
-
context.next = next;
|
|
241
|
-
context.startTime = startTime;
|
|
242
|
-
context.executionId = executionId;
|
|
243
|
-
context.pluginData.clear();
|
|
244
|
-
context.metrics.pluginExecutionTimes.clear();
|
|
245
|
-
context.metrics.requestStartTime = startTime;
|
|
246
|
-
context.metrics.cacheHits = 0;
|
|
247
|
-
context.metrics.cacheMisses = 0;
|
|
248
|
-
}
|
|
249
|
-
return context;
|
|
250
|
-
}
|
|
251
|
-
/**
|
|
252
|
-
* Return context to pool for reuse
|
|
253
|
-
*/
|
|
254
|
-
returnContextToPool(context) {
|
|
255
|
-
if (this.contextPool.length < this.MAX_POOL_SIZE) {
|
|
256
|
-
// Clear sensitive data before returning to pool
|
|
257
|
-
context.pluginData.clear();
|
|
258
|
-
context.metrics.pluginExecutionTimes.clear();
|
|
259
|
-
this.contextPool.push(context);
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
/**
|
|
263
|
-
* Warm up plugin for optimal performance
|
|
264
|
-
*/
|
|
265
|
-
async warmupPlugin(plugin, context) {
|
|
266
|
-
if (this.warmupCache.has(plugin.id)) {
|
|
267
|
-
return; // Already warmed up
|
|
268
|
-
}
|
|
269
|
-
if (plugin.warmup) {
|
|
270
|
-
try {
|
|
271
|
-
await plugin.warmup(context);
|
|
272
|
-
this.warmupCache.set(plugin.id, true);
|
|
273
|
-
}
|
|
274
|
-
catch (error) {
|
|
275
|
-
// Warmup failure is not critical
|
|
276
|
-
console.warn(`Plugin ${plugin.id} warmup failed:`, error);
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
/**
|
|
281
|
-
* Circuit breaker management
|
|
282
|
-
*/
|
|
283
|
-
isCircuitBreakerOpen(pluginId) {
|
|
284
|
-
const breaker = this.circuitBreakers.get(pluginId);
|
|
285
|
-
if (!breaker)
|
|
286
|
-
return false;
|
|
287
|
-
// Reset circuit breaker after 60 seconds
|
|
288
|
-
if (breaker.isOpen && Date.now() - breaker.lastFailure > 60000) {
|
|
289
|
-
breaker.isOpen = false;
|
|
290
|
-
breaker.failures = 0;
|
|
291
|
-
}
|
|
292
|
-
return breaker.isOpen;
|
|
293
|
-
}
|
|
294
|
-
updateCircuitBreaker(pluginId) {
|
|
295
|
-
const breaker = this.circuitBreakers.get(pluginId) || {
|
|
296
|
-
failures: 0,
|
|
297
|
-
lastFailure: 0,
|
|
298
|
-
isOpen: false,
|
|
299
|
-
};
|
|
300
|
-
breaker.failures++;
|
|
301
|
-
breaker.lastFailure = Date.now();
|
|
302
|
-
// Open circuit breaker after 5 failures
|
|
303
|
-
if (breaker.failures >= 5) {
|
|
304
|
-
breaker.isOpen = true;
|
|
305
|
-
}
|
|
306
|
-
this.circuitBreakers.set(pluginId, breaker);
|
|
307
|
-
}
|
|
308
|
-
resetCircuitBreaker(pluginId) {
|
|
309
|
-
this.circuitBreakers.delete(pluginId);
|
|
310
|
-
}
|
|
311
|
-
/**
|
|
312
|
-
* Setup registry event handlers
|
|
313
|
-
*/
|
|
314
|
-
setupRegistryEventHandlers() {
|
|
315
|
-
this.registry.on(PluginTypes.PluginEventType.PLUGIN_UNREGISTERED, (event) => {
|
|
316
|
-
// Clean up plugin-specific data
|
|
317
|
-
this.circuitBreakers.delete(event.pluginId);
|
|
318
|
-
this.warmupCache.delete(event.pluginId);
|
|
319
|
-
});
|
|
320
|
-
}
|
|
321
|
-
/**
|
|
322
|
-
* Update performance metrics
|
|
323
|
-
*/
|
|
324
|
-
updatePerformanceMetrics(type, executionTime, success) {
|
|
325
|
-
// Emit performance metrics for monitoring
|
|
326
|
-
this.emit("performance", {
|
|
327
|
-
type,
|
|
328
|
-
executionTime,
|
|
329
|
-
success,
|
|
330
|
-
timestamp: Date.now(),
|
|
331
|
-
});
|
|
332
|
-
}
|
|
333
|
-
/**
|
|
334
|
-
* Handle execution errors
|
|
335
|
-
*/
|
|
336
|
-
handleExecutionError(type, executionId, error, executionTime) {
|
|
337
|
-
console.error(`Plugin execution error [${type}] [${executionId}]:`, error);
|
|
338
|
-
this.emit("error", {
|
|
339
|
-
type,
|
|
340
|
-
executionId,
|
|
341
|
-
error,
|
|
342
|
-
executionTime,
|
|
343
|
-
timestamp: Date.now(),
|
|
344
|
-
});
|
|
345
|
-
}
|
|
346
|
-
/**
|
|
347
|
-
* Emit plugin event
|
|
348
|
-
*/
|
|
349
|
-
emitPluginEvent(type, pluginId, data) {
|
|
350
|
-
const event = {
|
|
351
|
-
type,
|
|
352
|
-
pluginId,
|
|
353
|
-
timestamp: new Date(),
|
|
354
|
-
data,
|
|
355
|
-
};
|
|
356
|
-
this.emit(type, event);
|
|
357
|
-
}
|
|
358
|
-
/**
|
|
359
|
-
* Get engine statistics (ultra-fast optimized)
|
|
360
|
-
*/
|
|
361
|
-
getEngineStats() {
|
|
362
|
-
// Ultra-fast: Count open circuit breakers without creating arrays
|
|
363
|
-
let circuitBreakersOpen = 0;
|
|
364
|
-
this.circuitBreakers.forEach((breaker) => {
|
|
365
|
-
if (breaker.isOpen)
|
|
366
|
-
circuitBreakersOpen++;
|
|
367
|
-
});
|
|
368
|
-
return {
|
|
369
|
-
contextPoolSize: this.contextPool.length,
|
|
370
|
-
circuitBreakersOpen,
|
|
371
|
-
warmedUpPlugins: this.warmupCache.size,
|
|
372
|
-
activeExecutions: this.executionPool.size,
|
|
373
|
-
};
|
|
374
|
-
}
|
|
375
|
-
}
|
|
376
|
-
|
|
377
|
-
exports.PluginEngine = PluginEngine;
|
|
378
|
-
//# sourceMappingURL=PluginEngine.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PluginEngine.js","sources":["../../../../../src/server/plugins/PluginEngine.ts"],"sourcesContent":[null],"names":["EventEmitter","NehoID","PluginEventType","PluginType"],"mappings":"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"}
|