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.
Files changed (103) hide show
  1. package/README.md +138 -3
  2. package/dist/cjs/mods/security/src/components/cache/index.js +1 -1
  3. package/dist/cjs/shared/logger/Logger.js +1 -0
  4. package/dist/cjs/shared/logger/Logger.js.map +1 -1
  5. package/dist/cjs/src/cluster/bun-cluster-manager.js +1567 -0
  6. package/dist/cjs/src/cluster/bun-cluster-manager.js.map +1 -0
  7. package/dist/cjs/src/cluster/cluster-manager.js +1 -1
  8. package/dist/cjs/src/cluster/cluster-manager.js.map +1 -1
  9. package/dist/cjs/src/cluster/index.js +25 -6
  10. package/dist/cjs/src/cluster/index.js.map +1 -1
  11. package/dist/cjs/src/cluster/memory-manager.js +463 -0
  12. package/dist/cjs/src/cluster/memory-manager.js.map +1 -0
  13. package/dist/cjs/src/cluster/modules/BunIPCManager.js +603 -0
  14. package/dist/cjs/src/cluster/modules/BunIPCManager.js.map +1 -0
  15. package/dist/cjs/src/cluster/modules/ClusterFactory.js +22 -1
  16. package/dist/cjs/src/cluster/modules/ClusterFactory.js.map +1 -1
  17. package/dist/cjs/src/cluster/modules/CpuMonitor.js +658 -0
  18. package/dist/cjs/src/cluster/modules/CpuMonitor.js.map +1 -0
  19. package/dist/cjs/src/cluster/modules/ProcessMonitor.js +513 -0
  20. package/dist/cjs/src/cluster/modules/ProcessMonitor.js.map +1 -0
  21. package/dist/cjs/src/plugins/server-maintenance-plugin.js +1 -1
  22. package/dist/cjs/src/server/FastServer.js +64 -43
  23. package/dist/cjs/src/server/FastServer.js.map +1 -1
  24. package/dist/cjs/src/server/components/fastapi/ClusterManagerComponent.js +226 -10
  25. package/dist/cjs/src/server/components/fastapi/ClusterManagerComponent.js.map +1 -1
  26. package/dist/cjs/src/server/const/Cluster.config.js +174 -31
  27. package/dist/cjs/src/server/const/Cluster.config.js.map +1 -1
  28. package/dist/cjs/src/server/const/default.js +11 -2
  29. package/dist/cjs/src/server/const/default.js.map +1 -1
  30. package/dist/cjs/src/server/utils/PortManager.js +26 -15
  31. package/dist/cjs/src/server/utils/PortManager.js.map +1 -1
  32. package/dist/esm/mods/security/src/components/cache/index.js +1 -1
  33. package/dist/esm/shared/logger/Logger.js +1 -0
  34. package/dist/esm/shared/logger/Logger.js.map +1 -1
  35. package/dist/esm/src/cluster/bun-cluster-manager.js +1565 -0
  36. package/dist/esm/src/cluster/bun-cluster-manager.js.map +1 -0
  37. package/dist/esm/src/cluster/cluster-manager.js +1 -1
  38. package/dist/esm/src/cluster/cluster-manager.js.map +1 -1
  39. package/dist/esm/src/cluster/index.js +25 -6
  40. package/dist/esm/src/cluster/index.js.map +1 -1
  41. package/dist/esm/src/cluster/memory-manager.js +461 -0
  42. package/dist/esm/src/cluster/memory-manager.js.map +1 -0
  43. package/dist/esm/src/cluster/modules/BunIPCManager.js +601 -0
  44. package/dist/esm/src/cluster/modules/BunIPCManager.js.map +1 -0
  45. package/dist/esm/src/cluster/modules/ClusterFactory.js +22 -1
  46. package/dist/esm/src/cluster/modules/ClusterFactory.js.map +1 -1
  47. package/dist/esm/src/cluster/modules/CpuMonitor.js +656 -0
  48. package/dist/esm/src/cluster/modules/CpuMonitor.js.map +1 -0
  49. package/dist/esm/src/cluster/modules/ProcessMonitor.js +511 -0
  50. package/dist/esm/src/cluster/modules/ProcessMonitor.js.map +1 -0
  51. package/dist/esm/src/plugins/server-maintenance-plugin.js +1 -1
  52. package/dist/esm/src/server/FastServer.js +64 -43
  53. package/dist/esm/src/server/FastServer.js.map +1 -1
  54. package/dist/esm/src/server/components/fastapi/ClusterManagerComponent.js +226 -10
  55. package/dist/esm/src/server/components/fastapi/ClusterManagerComponent.js.map +1 -1
  56. package/dist/esm/src/server/const/Cluster.config.js +174 -31
  57. package/dist/esm/src/server/const/Cluster.config.js.map +1 -1
  58. package/dist/esm/src/server/const/default.js +11 -2
  59. package/dist/esm/src/server/const/default.js.map +1 -1
  60. package/dist/esm/src/server/utils/PortManager.js +26 -15
  61. package/dist/esm/src/server/utils/PortManager.js.map +1 -1
  62. package/dist/index.d.ts +78 -1
  63. package/package.json +3 -1
  64. package/dist/cjs/src/plugins/modules/network/index.js +0 -120
  65. package/dist/cjs/src/plugins/modules/network/index.js.map +0 -1
  66. package/dist/cjs/src/server/plugins/PluginEngine.js +0 -378
  67. package/dist/cjs/src/server/plugins/PluginEngine.js.map +0 -1
  68. package/dist/cjs/src/server/plugins/PluginRegistry.js +0 -339
  69. package/dist/cjs/src/server/plugins/PluginRegistry.js.map +0 -1
  70. package/dist/cjs/src/server/plugins/builtin/JWTAuthPlugin.js +0 -591
  71. package/dist/cjs/src/server/plugins/builtin/JWTAuthPlugin.js.map +0 -1
  72. package/dist/cjs/src/server/plugins/builtin/ResponseTimePlugin.js +0 -413
  73. package/dist/cjs/src/server/plugins/builtin/ResponseTimePlugin.js.map +0 -1
  74. package/dist/cjs/src/server/plugins/builtin/SmartCachePlugin.js +0 -843
  75. package/dist/cjs/src/server/plugins/builtin/SmartCachePlugin.js.map +0 -1
  76. package/dist/cjs/src/server/plugins/core/CachePlugin.js +0 -1975
  77. package/dist/cjs/src/server/plugins/core/CachePlugin.js.map +0 -1
  78. package/dist/cjs/src/server/plugins/core/PerformancePlugin.js +0 -894
  79. package/dist/cjs/src/server/plugins/core/PerformancePlugin.js.map +0 -1
  80. package/dist/cjs/src/server/plugins/core/SecurityPlugin.js +0 -799
  81. package/dist/cjs/src/server/plugins/core/SecurityPlugin.js.map +0 -1
  82. package/dist/cjs/src/server/plugins/types/PluginTypes.js +0 -47
  83. package/dist/cjs/src/server/plugins/types/PluginTypes.js.map +0 -1
  84. package/dist/esm/src/plugins/modules/network/index.js +0 -109
  85. package/dist/esm/src/plugins/modules/network/index.js.map +0 -1
  86. package/dist/esm/src/server/plugins/PluginEngine.js +0 -376
  87. package/dist/esm/src/server/plugins/PluginEngine.js.map +0 -1
  88. package/dist/esm/src/server/plugins/PluginRegistry.js +0 -337
  89. package/dist/esm/src/server/plugins/PluginRegistry.js.map +0 -1
  90. package/dist/esm/src/server/plugins/builtin/JWTAuthPlugin.js +0 -589
  91. package/dist/esm/src/server/plugins/builtin/JWTAuthPlugin.js.map +0 -1
  92. package/dist/esm/src/server/plugins/builtin/ResponseTimePlugin.js +0 -411
  93. package/dist/esm/src/server/plugins/builtin/ResponseTimePlugin.js.map +0 -1
  94. package/dist/esm/src/server/plugins/builtin/SmartCachePlugin.js +0 -841
  95. package/dist/esm/src/server/plugins/builtin/SmartCachePlugin.js.map +0 -1
  96. package/dist/esm/src/server/plugins/core/CachePlugin.js +0 -1973
  97. package/dist/esm/src/server/plugins/core/CachePlugin.js.map +0 -1
  98. package/dist/esm/src/server/plugins/core/PerformancePlugin.js +0 -872
  99. package/dist/esm/src/server/plugins/core/PerformancePlugin.js.map +0 -1
  100. package/dist/esm/src/server/plugins/core/SecurityPlugin.js +0 -797
  101. package/dist/esm/src/server/plugins/core/SecurityPlugin.js.map +0 -1
  102. package/dist/esm/src/server/plugins/types/PluginTypes.js +0 -47
  103. 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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"}