xypriss 4.0.1 → 4.1.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/dist/cjs/src/config.js +57 -31
- package/dist/cjs/src/config.js.map +1 -1
- package/dist/cjs/src/file-upload.js +5 -4
- package/dist/cjs/src/file-upload.js.map +1 -1
- package/dist/cjs/src/index.js +1 -1
- package/dist/cjs/src/plugins/api/PluginAPI.js +135 -0
- package/dist/cjs/src/plugins/api/PluginAPI.js.map +1 -0
- package/dist/cjs/src/plugins/core/PluginManager.js +46 -0
- package/dist/cjs/src/plugins/core/PluginManager.js.map +1 -1
- package/dist/cjs/src/server/FastServer.js +28 -15
- package/dist/cjs/src/server/FastServer.js.map +1 -1
- package/dist/cjs/src/server/ServerFactory.js +27 -22
- package/dist/cjs/src/server/ServerFactory.js.map +1 -1
- package/dist/cjs/src/server/components/fastapi/FileUploadManager.js +3 -2
- package/dist/cjs/src/server/components/fastapi/FileUploadManager.js.map +1 -1
- package/dist/cjs/src/server/components/fastapi/console/ConsoleInterceptor.js +74 -22
- package/dist/cjs/src/server/components/fastapi/console/ConsoleInterceptor.js.map +1 -1
- package/dist/cjs/src/server/components/fastapi/console/types.js +0 -1
- package/dist/cjs/src/server/components/fastapi/console/types.js.map +1 -1
- package/dist/cjs/src/server/const/default.js +75 -0
- package/dist/cjs/src/server/const/default.js.map +1 -1
- package/dist/cjs/src/server/handlers/NotFoundHandler.js +1 -1
- package/dist/esm/src/config.js +57 -31
- package/dist/esm/src/config.js.map +1 -1
- package/dist/esm/src/file-upload.js +3 -2
- package/dist/esm/src/file-upload.js.map +1 -1
- package/dist/esm/src/index.js +1 -1
- package/dist/esm/src/plugins/api/PluginAPI.js +131 -0
- package/dist/esm/src/plugins/api/PluginAPI.js.map +1 -0
- package/dist/esm/src/plugins/core/PluginManager.js +46 -0
- package/dist/esm/src/plugins/core/PluginManager.js.map +1 -1
- package/dist/esm/src/server/FastServer.js +28 -15
- package/dist/esm/src/server/FastServer.js.map +1 -1
- package/dist/esm/src/server/ServerFactory.js +27 -22
- package/dist/esm/src/server/ServerFactory.js.map +1 -1
- package/dist/esm/src/server/components/fastapi/FileUploadManager.js +3 -2
- package/dist/esm/src/server/components/fastapi/FileUploadManager.js.map +1 -1
- package/dist/esm/src/server/components/fastapi/console/ConsoleInterceptor.js +74 -22
- package/dist/esm/src/server/components/fastapi/console/ConsoleInterceptor.js.map +1 -1
- package/dist/esm/src/server/components/fastapi/console/types.js +0 -1
- package/dist/esm/src/server/components/fastapi/console/types.js.map +1 -1
- package/dist/esm/src/server/const/default.js +75 -0
- package/dist/esm/src/server/const/default.js.map +1 -1
- package/dist/esm/src/server/handlers/NotFoundHandler.js +1 -1
- package/dist/index.d.ts +112 -109
- package/package.json +2 -1
- package/dist/cjs/src/plugins/core/PluginAPI.js +0 -80
- package/dist/cjs/src/plugins/core/PluginAPI.js.map +0 -1
- package/dist/cjs/src/server/utils/ConfigLoader.js +0 -306
- package/dist/cjs/src/server/utils/ConfigLoader.js.map +0 -1
- package/dist/esm/src/plugins/core/PluginAPI.js +0 -78
- package/dist/esm/src/plugins/core/PluginAPI.js.map +0 -1
- package/dist/esm/src/server/utils/ConfigLoader.js +0 -283
- package/dist/esm/src/server/utils/ConfigLoader.js.map +0 -1
|
@@ -231,6 +231,81 @@ const DEFAULT_OPTIONS = {
|
|
|
231
231
|
headerPairs: 50,
|
|
232
232
|
},
|
|
233
233
|
},
|
|
234
|
+
network: {
|
|
235
|
+
// Connection management - optimized for modern web applications
|
|
236
|
+
connection: {
|
|
237
|
+
enabled: true,
|
|
238
|
+
http2: {
|
|
239
|
+
enabled: false, // Disabled by default for compatibility
|
|
240
|
+
maxConcurrentStreams: 100,
|
|
241
|
+
initialWindowSize: 65535,
|
|
242
|
+
serverPush: false,
|
|
243
|
+
},
|
|
244
|
+
keepAlive: {
|
|
245
|
+
enabled: true,
|
|
246
|
+
timeout: 65000, // 65 seconds (slightly longer than default 60s)
|
|
247
|
+
maxRequests: 100, // Reuse connections for up to 100 requests
|
|
248
|
+
},
|
|
249
|
+
connectionPool: {
|
|
250
|
+
maxConnections: 1000,
|
|
251
|
+
timeout: 30000, // 30 seconds
|
|
252
|
+
idleTimeout: 60000, // 60 seconds
|
|
253
|
+
},
|
|
254
|
+
},
|
|
255
|
+
// Compression - balanced between speed and compression ratio
|
|
256
|
+
compression: {
|
|
257
|
+
enabled: true,
|
|
258
|
+
algorithms: ["gzip", "deflate", "br"], // Support all major algorithms
|
|
259
|
+
level: 6, // Balanced compression level (1-9)
|
|
260
|
+
threshold: 1024, // Only compress responses > 1KB
|
|
261
|
+
contentTypes: [
|
|
262
|
+
"text/html",
|
|
263
|
+
"text/css",
|
|
264
|
+
"text/javascript",
|
|
265
|
+
"application/javascript",
|
|
266
|
+
"application/json",
|
|
267
|
+
"application/xml",
|
|
268
|
+
"text/xml",
|
|
269
|
+
"text/plain",
|
|
270
|
+
"image/svg+xml",
|
|
271
|
+
],
|
|
272
|
+
memLevel: 8, // Default memory level
|
|
273
|
+
windowBits: 15, // Default window size
|
|
274
|
+
},
|
|
275
|
+
// Rate limiting - reasonable defaults to prevent abuse
|
|
276
|
+
rateLimit: {
|
|
277
|
+
enabled: false, // Disabled by default (user can enable)
|
|
278
|
+
strategy: "sliding-window", // Most accurate strategy
|
|
279
|
+
global: {
|
|
280
|
+
requests: 10000, // 10k requests globally
|
|
281
|
+
window: "1h", // Per hour
|
|
282
|
+
},
|
|
283
|
+
perIP: {
|
|
284
|
+
requests: 100, // 100 requests per IP
|
|
285
|
+
window: "1m", // Per minute
|
|
286
|
+
},
|
|
287
|
+
headers: {
|
|
288
|
+
enabled: true, // Include rate limit headers
|
|
289
|
+
prefix: "X-RateLimit", // Standard prefix
|
|
290
|
+
},
|
|
291
|
+
},
|
|
292
|
+
// Proxy - disabled by default, ready for configuration
|
|
293
|
+
proxy: {
|
|
294
|
+
enabled: false,
|
|
295
|
+
upstreams: [],
|
|
296
|
+
loadBalancing: "round-robin",
|
|
297
|
+
healthCheck: {
|
|
298
|
+
enabled: true,
|
|
299
|
+
interval: 30000, // Check every 30 seconds
|
|
300
|
+
timeout: 5000, // 5 second timeout
|
|
301
|
+
path: "/health",
|
|
302
|
+
unhealthyThreshold: 3, // Mark unhealthy after 3 failures
|
|
303
|
+
healthyThreshold: 2, // Mark healthy after 2 successes
|
|
304
|
+
},
|
|
305
|
+
timeout: 30000, // 30 second proxy timeout
|
|
306
|
+
logging: false, // Disable proxy logging by default
|
|
307
|
+
},
|
|
308
|
+
},
|
|
234
309
|
};
|
|
235
310
|
|
|
236
311
|
exports.DEFAULT_HOST = DEFAULT_HOST;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default.js","sources":["../../../../../src/server/const/default.ts"],"sourcesContent":[null],"names":["DEFAULT_FW_CONFIG","DEFAULT_CONSOLE_CONFIG","DEFAULT_CLUSTER_CONFIGS"],"mappings":";;;;;;AAAA;;;;AAIG;AAOU,MAAA,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,YAAY;AACrD,MAAM,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,EAAY;AAEjE;AACa,MAAA,eAAe,GAAkB;AAC1C,IAAA,WAAW,EAAE;AACT,QAAA,WAAW,EAAE,IAAI;AACjB,QAAA,SAAS,EAAE,GAAG;AACd,QAAA,iBAAiB,EAAE,IAAI;AACvB,QAAA,UAAU,EAAE,IAAI;AAChB,QAAA,QAAQ,EAAE,IAAI;;AAEd,QAAA,mBAAmB,EAAE,IAAI;AACzB,QAAA,qBAAqB,EAAE,IAAI;AAC3B,QAAA,oBAAoB,EAAE,IAAI;AAC1B,QAAA,iBAAiB,EAAE,IAAI;AACvB,QAAA,kBAAkB,EAAE,IAAI;;AAExB,QAAA,kBAAkB,EAAE,IAAI;QACxB,cAAc,EAAE,KAAK;QACrB,qBAAqB,EAAE,CAAC;QACxB,sBAAsB,EAAE,IAAI;AAC5B,QAAA,iBAAiB,EAAE,IAAI;;AAEvB,QAAA,qBAAqB,EAAE,IAAI;AAC3B,QAAA,uBAAuB,EAAE,IAAI;AAC7B,QAAA,yBAAyB,EAAE,IAAI;;AAE/B,QAAA,kBAAkB,EAAE,IAAI;AACxB,QAAA,eAAe,EAAE,IAAI;AACrB,QAAA,yBAAyB,EAAE,IAAI;AAClC,KAAA;AACD,IAAA,UAAU,EAAE;AACR,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,YAAY,EAAE,IAAI;AAClB,QAAA,OAAO,EAAE,IAAI;AACb,QAAA,QAAQ,EAAE,KAAK;AACf,QAAA,eAAe,EAAE;AACb,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,OAAO,EAAE,GAAG;AACZ,YAAA,SAAS,EAAE,IAAI;AACf,YAAA,OAAO,EAAE,EAAE;AACd,SAAA;AACJ,KAAA;AACD,IAAA,MAAM,EAAE;AACJ,QAAA,gBAAgB,EAAE,IAAI;QACtB,IAAI,EAAE,YAAY;AAClB,QAAA,UAAU,EAAE,KAAK;AACjB,QAAA,SAAS,EAAE,MAAM;AACjB,QAAA,eAAe,EAAE,MAAM;AACvB,QAAA,aAAa,EAAE,KAAK;AACpB,QAAA,IAAI,EAAE,YAAY;AAClB,QAAA,cAAc,EAAE;AACZ,YAAA,OAAO,EAAE,IAAI;AACb,YAAA,WAAW,EAAE,EAAE;AACf,YAAA,QAAQ,EAAE,QAAQ;AACrB,SAAA;AACJ,KAAA;
|
|
1
|
+
{"version":3,"file":"default.js","sources":["../../../../../src/server/const/default.ts"],"sourcesContent":[null],"names":["DEFAULT_FW_CONFIG","DEFAULT_CONSOLE_CONFIG","DEFAULT_CLUSTER_CONFIGS"],"mappings":"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"}
|
|
@@ -34,7 +34,7 @@ var path__namespace = /*#__PURE__*/_interopNamespaceDefault(path);
|
|
|
34
34
|
class NotFoundHandler {
|
|
35
35
|
constructor(config = {}) {
|
|
36
36
|
/**
|
|
37
|
-
*
|
|
37
|
+
* XyPriss middleware handler for 404 errors
|
|
38
38
|
*/
|
|
39
39
|
this.handler = (req, res) => {
|
|
40
40
|
if (!this.config.enabled) {
|
package/dist/esm/src/config.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { DEFAULT_OPTIONS } from './server/const/default.js';
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* XyPriss Configuration Manager
|
|
3
5
|
*
|
|
@@ -8,6 +10,10 @@
|
|
|
8
10
|
* in modular structures where accessing `app.configs` directly might
|
|
9
11
|
* cause initialization timing issues.
|
|
10
12
|
*
|
|
13
|
+
* **IMPORTANT**: This is the SINGLE SOURCE OF TRUTH for all XyPriss configurations.
|
|
14
|
+
* All components should use `Configs.get()` to access configuration values
|
|
15
|
+
* instead of copying values during initialization.
|
|
16
|
+
*
|
|
11
17
|
* @example
|
|
12
18
|
* ```typescript
|
|
13
19
|
* import { Configs } from 'xypriss';
|
|
@@ -26,7 +32,7 @@
|
|
|
26
32
|
* // Get entire config
|
|
27
33
|
* const allConfigs = Configs.getAll();
|
|
28
34
|
*
|
|
29
|
-
* // Update specific config
|
|
35
|
+
* // Update specific config (updates the source of truth)
|
|
30
36
|
* Configs.update('fileUpload', { maxFileSize: 10 * 1024 * 1024 });
|
|
31
37
|
* ```
|
|
32
38
|
*/
|
|
@@ -37,10 +43,12 @@
|
|
|
37
43
|
class ConfigurationManager {
|
|
38
44
|
/**
|
|
39
45
|
* Private constructor to enforce singleton pattern
|
|
46
|
+
* Initializes with default configuration
|
|
40
47
|
*/
|
|
41
48
|
constructor() {
|
|
42
|
-
this.config = {};
|
|
43
49
|
this.initialized = false;
|
|
50
|
+
// Initialize with default configuration
|
|
51
|
+
this.config = { ...DEFAULT_OPTIONS };
|
|
44
52
|
}
|
|
45
53
|
/**
|
|
46
54
|
* Get the singleton instance
|
|
@@ -53,7 +61,7 @@ class ConfigurationManager {
|
|
|
53
61
|
}
|
|
54
62
|
/**
|
|
55
63
|
* Set the entire configuration
|
|
56
|
-
* @param config - Server configuration options
|
|
64
|
+
* @param config - XP Server configuration options
|
|
57
65
|
*/
|
|
58
66
|
static set(config) {
|
|
59
67
|
const instance = ConfigurationManager.getInstance();
|
|
@@ -71,50 +79,68 @@ class ConfigurationManager {
|
|
|
71
79
|
}
|
|
72
80
|
/**
|
|
73
81
|
* Get the entire configuration object
|
|
74
|
-
* @returns Complete
|
|
82
|
+
* @returns Complete XyPriss Server Configuration (XPSC)
|
|
75
83
|
*/
|
|
76
84
|
static getAll() {
|
|
77
85
|
const instance = ConfigurationManager.getInstance();
|
|
78
86
|
return { ...instance.config };
|
|
79
87
|
}
|
|
80
88
|
/**
|
|
81
|
-
* Update a specific configuration section
|
|
89
|
+
* Update a specific XyPriss configuration section (deep merge)
|
|
82
90
|
* @param key - Configuration key to update
|
|
83
|
-
* @param value -
|
|
91
|
+
* @param value - Partial value to merge with existing configuration
|
|
84
92
|
*/
|
|
85
93
|
static update(key, value) {
|
|
86
94
|
const instance = ConfigurationManager.getInstance();
|
|
87
|
-
instance.config[key]
|
|
95
|
+
const currentValue = instance.config[key];
|
|
96
|
+
// Deep merge the new value with the existing value
|
|
97
|
+
if (typeof currentValue === "object" &&
|
|
98
|
+
currentValue !== null &&
|
|
99
|
+
!Array.isArray(currentValue)) {
|
|
100
|
+
instance.config[key] = {
|
|
101
|
+
...currentValue,
|
|
102
|
+
...value,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
// For non-object values, just replace
|
|
107
|
+
instance.config[key] = value;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Deep merge helper function
|
|
112
|
+
* @param target - Target object
|
|
113
|
+
* @param source - Source object to merge
|
|
114
|
+
* @returns Merged object
|
|
115
|
+
*/
|
|
116
|
+
static deepMerge(target, source) {
|
|
117
|
+
const result = { ...target };
|
|
118
|
+
for (const key in source) {
|
|
119
|
+
const sourceValue = source[key];
|
|
120
|
+
const targetValue = result[key];
|
|
121
|
+
if (sourceValue &&
|
|
122
|
+
typeof sourceValue === "object" &&
|
|
123
|
+
!Array.isArray(sourceValue) &&
|
|
124
|
+
targetValue &&
|
|
125
|
+
typeof targetValue === "object" &&
|
|
126
|
+
!Array.isArray(targetValue)) {
|
|
127
|
+
// Recursively merge nested objects
|
|
128
|
+
result[key] = ConfigurationManager.deepMerge(targetValue, sourceValue);
|
|
129
|
+
}
|
|
130
|
+
else if (sourceValue !== undefined) {
|
|
131
|
+
// Replace value (including arrays and primitives)
|
|
132
|
+
result[key] = sourceValue;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
return result;
|
|
88
136
|
}
|
|
89
137
|
/**
|
|
90
|
-
* Merge configuration with existing config
|
|
138
|
+
* Merge configuration with existing config (deep merge)
|
|
91
139
|
* @param config - Partial configuration to merge
|
|
92
140
|
*/
|
|
93
141
|
static merge(config) {
|
|
94
142
|
const instance = ConfigurationManager.getInstance();
|
|
95
|
-
instance.config =
|
|
96
|
-
...instance.config,
|
|
97
|
-
...config,
|
|
98
|
-
// Deep merge for nested objects
|
|
99
|
-
server: { ...instance.config.server, ...config.server },
|
|
100
|
-
cache: { ...instance.config.cache, ...config.cache },
|
|
101
|
-
security: { ...instance.config.security, ...config.security },
|
|
102
|
-
performance: {
|
|
103
|
-
...instance.config.performance,
|
|
104
|
-
...config.performance,
|
|
105
|
-
},
|
|
106
|
-
fileUpload: { ...instance.config.fileUpload, ...config.fileUpload },
|
|
107
|
-
monitoring: { ...instance.config.monitoring, ...config.monitoring },
|
|
108
|
-
cluster: { ...instance.config.cluster, ...config.cluster },
|
|
109
|
-
multiServer: {
|
|
110
|
-
...instance.config.multiServer,
|
|
111
|
-
...config.multiServer,
|
|
112
|
-
},
|
|
113
|
-
requestManagement: {
|
|
114
|
-
...instance.config.requestManagement,
|
|
115
|
-
...config.requestManagement,
|
|
116
|
-
},
|
|
117
|
-
};
|
|
143
|
+
instance.config = ConfigurationManager.deepMerge(instance.config, config);
|
|
118
144
|
instance.initialized = true;
|
|
119
145
|
}
|
|
120
146
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sources":["../../../src/config.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"config.js","sources":["../../../src/config.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { FileUploadManager } from './server/components/fastapi/FileUploadManager.js';
|
|
2
2
|
import { Logger } from '../shared/logger/Logger.js';
|
|
3
|
+
import { Configs as ConfigurationManager } from './config.js';
|
|
3
4
|
export { initializeFileUpload, uploadAny, uploadArray, uploadFields, uploadSingle } from './FiUp.js';
|
|
4
5
|
|
|
5
6
|
/**
|
|
@@ -54,7 +55,7 @@ class FileUploadAPI {
|
|
|
54
55
|
* ```
|
|
55
56
|
*/
|
|
56
57
|
async initialize(configManager) {
|
|
57
|
-
if (this.initialized) {
|
|
58
|
+
if (this.initialized || ConfigurationManager.get("fileUpload")?.enabled === false) {
|
|
58
59
|
return; // Already initialized
|
|
59
60
|
}
|
|
60
61
|
// Access config internally from the Configs singleton
|
|
@@ -64,7 +65,7 @@ class FileUploadAPI {
|
|
|
64
65
|
}
|
|
65
66
|
try {
|
|
66
67
|
this.logger.debug("server", "Initializing FileUploadAPI...");
|
|
67
|
-
this.manager = new FileUploadManager(
|
|
68
|
+
this.manager = new FileUploadManager(this.logger);
|
|
68
69
|
await this.manager.initialize();
|
|
69
70
|
this.initialized = true;
|
|
70
71
|
this.logger.debug("server", `FileUploadAPI initialized, enabled: ${this.manager.isEnabled()}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-upload.js","sources":["../../../src/file-upload.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"file-upload.js","sources":["../../../src/file-upload.ts"],"sourcesContent":[null],"names":["Configs"],"mappings":"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"}
|
package/dist/esm/src/index.js
CHANGED
|
@@ -7,7 +7,7 @@ export { SecurityMiddleware } from './middleware/security-middleware.js';
|
|
|
7
7
|
export { PerformanceMonitor } from './server/optimization/performance-monitor.js';
|
|
8
8
|
export { Configs } from './config.js';
|
|
9
9
|
export { DEFAULT_PLUGIN_CONFIG, PERFORMANCE_TARGETS, PLUGIN_SYSTEM_NAME, PLUGIN_SYSTEM_VERSION, PluginDevelopmentHelpers, PluginSystemFactory, PluginSystemUtils } from './plugins/modules/index.js';
|
|
10
|
-
export { Plugin } from './plugins/
|
|
10
|
+
export { Plugin } from './plugins/api/PluginAPI.js';
|
|
11
11
|
export { quickServer } from './quick-start.js';
|
|
12
12
|
export { TrustProxy } from './server/utils/trustProxy.js';
|
|
13
13
|
export { createCircularRefDebugger, createSafeJsonMiddleware, safeJsonStringify, sendSafeJson, setupSafeJson } from './middleware/safe-json-middleware.js';
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin API
|
|
3
|
+
* Public API for plugin management as documented in PLUGIN_SYSTEM_GUIDE.md
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Global plugin manager instance
|
|
7
|
+
* This will be set by the server when it's created
|
|
8
|
+
*/
|
|
9
|
+
let globalPluginManager = null;
|
|
10
|
+
/**
|
|
11
|
+
* Pending plugins registered before server creation
|
|
12
|
+
*/
|
|
13
|
+
const pendingPlugins = [];
|
|
14
|
+
/**
|
|
15
|
+
* Set the global plugin manager
|
|
16
|
+
* @internal - Used by the server factory
|
|
17
|
+
*/
|
|
18
|
+
function setGlobalPluginManager(manager) {
|
|
19
|
+
globalPluginManager = manager;
|
|
20
|
+
// Register all pending plugins
|
|
21
|
+
for (const { plugin, config } of pendingPlugins) {
|
|
22
|
+
manager.register(plugin, config);
|
|
23
|
+
}
|
|
24
|
+
// Clear pending queue
|
|
25
|
+
pendingPlugins.length = 0;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get the global plugin manager
|
|
29
|
+
* @internal
|
|
30
|
+
*/
|
|
31
|
+
function getGlobalPluginManager() {
|
|
32
|
+
return globalPluginManager;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Plugin API
|
|
36
|
+
* Provides imperative methods for plugin management
|
|
37
|
+
*/
|
|
38
|
+
const Plugin = {
|
|
39
|
+
/**
|
|
40
|
+
* Register a plugin imperatively
|
|
41
|
+
* @param plugin - Plugin instance or creator function
|
|
42
|
+
* @param config - Optional configuration
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* ```typescript
|
|
46
|
+
* Plugin.register({
|
|
47
|
+
* name: "my-plugin",
|
|
48
|
+
* version: "1.0.0",
|
|
49
|
+
* onServerStart: () => console.log("Started!")
|
|
50
|
+
* });
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
register(plugin, config) {
|
|
54
|
+
const manager = getGlobalPluginManager();
|
|
55
|
+
if (manager) {
|
|
56
|
+
// Server is already created, register immediately
|
|
57
|
+
manager.register(plugin, config);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
// Server not created yet, add to pending queue
|
|
61
|
+
pendingPlugins.push({ plugin, config });
|
|
62
|
+
}
|
|
63
|
+
},
|
|
64
|
+
/**
|
|
65
|
+
* Get a registered plugin by name
|
|
66
|
+
* @param name - Plugin name
|
|
67
|
+
* @returns Plugin instance or undefined if not found
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* ```typescript
|
|
71
|
+
* const plugin = Plugin.get("my-plugin");
|
|
72
|
+
* if (plugin) {
|
|
73
|
+
* console.log(`Found plugin: ${plugin.name}@${plugin.version}`);
|
|
74
|
+
* }
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
get(name) {
|
|
78
|
+
const manager = getGlobalPluginManager();
|
|
79
|
+
if (!manager) {
|
|
80
|
+
throw new Error("Plugin system not initialized. Create a server instance first.");
|
|
81
|
+
}
|
|
82
|
+
return manager.getPlugin(name);
|
|
83
|
+
},
|
|
84
|
+
/**
|
|
85
|
+
* Create a plugin (helper method)
|
|
86
|
+
* This is just a type-safe identity function that helps with TypeScript inference
|
|
87
|
+
* @param plugin - Plugin definition
|
|
88
|
+
* @returns The same plugin instance
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* ```typescript
|
|
92
|
+
* const myPlugin = Plugin.create({
|
|
93
|
+
* name: "my-plugin",
|
|
94
|
+
* version: "1.0.0",
|
|
95
|
+
* onServerStart: (server) => {
|
|
96
|
+
* console.log("Plugin started!");
|
|
97
|
+
* }
|
|
98
|
+
* });
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
create(plugin) {
|
|
102
|
+
return plugin;
|
|
103
|
+
},
|
|
104
|
+
/**
|
|
105
|
+
* Create a plugin factory function
|
|
106
|
+
* Useful for creating reusable plugins with configuration
|
|
107
|
+
* @param creator - Function that creates a plugin from config
|
|
108
|
+
* @returns Plugin creator function
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```typescript
|
|
112
|
+
* const createMyPlugin = Plugin.factory((config: { apiKey: string }) => ({
|
|
113
|
+
* name: "my-plugin",
|
|
114
|
+
* version: "1.0.0",
|
|
115
|
+
* onServerStart: (server) => {
|
|
116
|
+
* server.apiKey = config.apiKey;
|
|
117
|
+
* }
|
|
118
|
+
* }));
|
|
119
|
+
*
|
|
120
|
+
* // Use it
|
|
121
|
+
* const plugin = createMyPlugin({ apiKey: "secret" });
|
|
122
|
+
* Plugin.register(plugin);
|
|
123
|
+
* ```
|
|
124
|
+
*/
|
|
125
|
+
factory(creator) {
|
|
126
|
+
return creator;
|
|
127
|
+
},
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
export { Plugin, getGlobalPluginManager, setGlobalPluginManager };
|
|
131
|
+
//# sourceMappingURL=PluginAPI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PluginAPI.js","sources":["../../../../../src/plugins/api/PluginAPI.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;AAGG;AAKH;;;AAGG;AACH,IAAI,mBAAmB,GAAyB,IAAI,CAAC;AAErD;;AAEG;AACH,MAAM,cAAc,GAGf,EAAE,CAAC;AAER;;;AAGG;AACG,SAAU,sBAAsB,CAAC,OAAsB,EAAA;IACzD,mBAAmB,GAAG,OAAO,CAAC;;IAG9B,KAAK,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,cAAc,EAAE;AAC7C,QAAA,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACpC;;AAGD,IAAA,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED;;;AAGG;SACa,sBAAsB,GAAA;AAClC,IAAA,OAAO,mBAAmB,CAAC;AAC/B,CAAC;AAED;;;AAGG;AACU,MAAA,MAAM,GAAG;AAClB;;;;;;;;;;;;;AAaG;IACH,QAAQ,CAAC,MAAqC,EAAE,MAAY,EAAA;AACxD,QAAA,MAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;QAEzC,IAAI,OAAO,EAAE;;AAET,YAAA,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SACpC;aAAM;;YAEH,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;SAC3C;KACJ;AAED;;;;;;;;;;;;AAYG;AACH,IAAA,GAAG,CAAC,IAAY,EAAA;AACZ,QAAA,MAAM,OAAO,GAAG,sBAAsB,EAAE,CAAC;QAEzC,IAAI,CAAC,OAAO,EAAE;AACV,YAAA,MAAM,IAAI,KAAK,CACX,gEAAgE,CACnE,CAAC;SACL;AAED,QAAA,OAAO,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;KAClC;AAED;;;;;;;;;;;;;;;;AAgBG;AACH,IAAA,MAAM,CAAC,MAAqB,EAAA;AACxB,QAAA,OAAO,MAAM,CAAC;KACjB;AAED;;;;;;;;;;;;;;;;;;;;AAoBG;AACH,IAAA,OAAO,CACH,OAA2C,EAAA;AAE3C,QAAA,OAAO,OAAwB,CAAC;KACnC;;;;;"}
|
|
@@ -8,6 +8,7 @@ class PluginManager {
|
|
|
8
8
|
constructor(server) {
|
|
9
9
|
this.plugins = new Map();
|
|
10
10
|
this.pluginOrder = [];
|
|
11
|
+
this.initialized = false;
|
|
11
12
|
this.server = server;
|
|
12
13
|
this.logger = new Logger();
|
|
13
14
|
}
|
|
@@ -33,12 +34,57 @@ class PluginManager {
|
|
|
33
34
|
pluginInstance.onRegister(this.server, config);
|
|
34
35
|
}
|
|
35
36
|
this.logger.info("plugins", `Registered plugin: xypriss::ext/${pluginInstance.name}@${pluginInstance.version}`);
|
|
37
|
+
// If already initialized, fully initialize this plugin immediately
|
|
38
|
+
if (this.initialized) {
|
|
39
|
+
// Resolve dependencies for this plugin
|
|
40
|
+
this.resolveDependencies();
|
|
41
|
+
// Register routes for this plugin
|
|
42
|
+
if (pluginInstance.registerRoutes) {
|
|
43
|
+
try {
|
|
44
|
+
pluginInstance.registerRoutes(this.server.app);
|
|
45
|
+
this.logger.debug("plugins", `Registered routes for late plugin: ${pluginInstance.name}`);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
this.logger.error("plugins", `Error registering routes for ${pluginInstance.name}:`, error);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// Apply middleware for this plugin
|
|
52
|
+
if (pluginInstance.middleware || pluginInstance.onRequest) {
|
|
53
|
+
pluginInstance.middlewarePriority || "normal";
|
|
54
|
+
const middleware = [];
|
|
55
|
+
if (pluginInstance.middleware) {
|
|
56
|
+
const mw = Array.isArray(pluginInstance.middleware)
|
|
57
|
+
? pluginInstance.middleware
|
|
58
|
+
: [pluginInstance.middleware];
|
|
59
|
+
middleware.push(...mw);
|
|
60
|
+
}
|
|
61
|
+
if (pluginInstance.onRequest) {
|
|
62
|
+
middleware.push(pluginInstance.onRequest.bind(pluginInstance));
|
|
63
|
+
}
|
|
64
|
+
// Apply middleware based on priority
|
|
65
|
+
middleware.forEach((mw) => this.server.app.use(mw));
|
|
66
|
+
this.logger.debug("plugins", `Applied middleware for late plugin: ${pluginInstance.name}`);
|
|
67
|
+
}
|
|
68
|
+
// Call onServerStart hook
|
|
69
|
+
if (pluginInstance.onServerStart) {
|
|
70
|
+
Promise.resolve(pluginInstance.onServerStart(this.server)).catch((error) => {
|
|
71
|
+
this.logger.error("plugins", `Error in ${pluginInstance.name}.onServerStart:`, error);
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
// Call onServerReady hook if server is ready
|
|
75
|
+
if (pluginInstance.onServerReady) {
|
|
76
|
+
Promise.resolve(pluginInstance.onServerReady(this.server)).catch((error) => {
|
|
77
|
+
this.logger.error("plugins", `Error in ${pluginInstance.name}.onServerReady:`, error);
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
36
81
|
}
|
|
37
82
|
/**
|
|
38
83
|
* Initialize all plugins (resolve dependencies and set execution order)
|
|
39
84
|
*/
|
|
40
85
|
async initialize() {
|
|
41
86
|
this.resolveDependencies();
|
|
87
|
+
this.initialized = true; // Set before calling hooks so late-registered plugins are detected
|
|
42
88
|
await this.executeHook("onServerStart");
|
|
43
89
|
}
|
|
44
90
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginManager.js","sources":["../../../../../src/plugins/core/PluginManager.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;AAGG;MAUU,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"PluginManager.js","sources":["../../../../../src/plugins/core/PluginManager.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|