xypriss 3.2.2 → 3.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 +98 -447
- package/dist/cjs/src/FiUp.js +88 -0
- package/dist/cjs/src/FiUp.js.map +1 -0
- package/dist/cjs/src/config.js +169 -0
- package/dist/cjs/src/config.js.map +1 -0
- package/dist/cjs/src/file-upload.js +37 -90
- package/dist/cjs/src/file-upload.js.map +1 -1
- package/dist/cjs/src/index.js +9 -5
- package/dist/cjs/src/index.js.map +1 -1
- package/dist/cjs/src/server/FastServer.js +11 -6
- package/dist/cjs/src/server/FastServer.js.map +1 -1
- package/dist/cjs/src/server/ServerFactory.js +67 -32
- package/dist/cjs/src/server/ServerFactory.js.map +1 -1
- package/dist/cjs/src/server/components/fastapi/FileUploadManager.js +31 -19
- package/dist/cjs/src/server/components/fastapi/FileUploadManager.js.map +1 -1
- package/dist/cjs/src/server/components/fastapi/console/ConsoleInterceptor.js +9 -0
- package/dist/cjs/src/server/components/fastapi/console/ConsoleInterceptor.js.map +1 -1
- package/dist/cjs/src/server/const/default.js +10 -6
- package/dist/cjs/src/server/const/default.js.map +1 -1
- package/dist/cjs/src/server/core/HttpServer.js +16 -7
- package/dist/cjs/src/server/core/HttpServer.js.map +1 -1
- package/dist/cjs/src/server/core/XyprissApp.js +2 -1
- package/dist/cjs/src/server/core/XyprissApp.js.map +1 -1
- package/dist/esm/src/FiUp.js +82 -0
- package/dist/esm/src/FiUp.js.map +1 -0
- package/dist/esm/src/config.js +167 -0
- package/dist/esm/src/config.js.map +1 -0
- package/dist/esm/src/file-upload.js +32 -86
- package/dist/esm/src/file-upload.js.map +1 -1
- package/dist/esm/src/index.js +3 -1
- package/dist/esm/src/index.js.map +1 -1
- package/dist/esm/src/server/FastServer.js +11 -6
- package/dist/esm/src/server/FastServer.js.map +1 -1
- package/dist/esm/src/server/ServerFactory.js +67 -32
- package/dist/esm/src/server/ServerFactory.js.map +1 -1
- package/dist/esm/src/server/components/fastapi/FileUploadManager.js +31 -19
- package/dist/esm/src/server/components/fastapi/FileUploadManager.js.map +1 -1
- package/dist/esm/src/server/components/fastapi/console/ConsoleInterceptor.js +9 -0
- package/dist/esm/src/server/components/fastapi/console/ConsoleInterceptor.js.map +1 -1
- package/dist/esm/src/server/const/default.js +10 -6
- package/dist/esm/src/server/const/default.js.map +1 -1
- package/dist/esm/src/server/core/HttpServer.js +16 -7
- package/dist/esm/src/server/core/HttpServer.js.map +1 -1
- package/dist/esm/src/server/core/XyprissApp.js +2 -1
- package/dist/esm/src/server/core/XyprissApp.js.map +1 -1
- package/dist/index.d.ts +228 -102
- package/package.json +3 -2
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var fileUpload = require('./file-upload.js');
|
|
4
|
+
|
|
5
|
+
// Legacy function exports for backward compatibility
|
|
6
|
+
// These will be deprecated in favor of the class-based API
|
|
7
|
+
// Global instance for backward compatibility
|
|
8
|
+
let globalFileUploadAPI = null;
|
|
9
|
+
/**
|
|
10
|
+
* Initialize the global file upload manager (legacy)
|
|
11
|
+
* This is called automatically when the server starts with file upload enabled
|
|
12
|
+
*
|
|
13
|
+
* @param configManager - The Configs class for accessing configuration
|
|
14
|
+
* @param logger - Logger instance
|
|
15
|
+
*/
|
|
16
|
+
function initializeFileUpload(configManager, logger) {
|
|
17
|
+
if (!globalFileUploadAPI) {
|
|
18
|
+
globalFileUploadAPI = new fileUpload.FileUploadAPI(logger);
|
|
19
|
+
}
|
|
20
|
+
globalFileUploadAPI.initialize(configManager);
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Create a middleware for uploading a single file (legacy)
|
|
24
|
+
*/
|
|
25
|
+
function uploadSingle(fieldname) {
|
|
26
|
+
return (req, res, next) => {
|
|
27
|
+
if (!globalFileUploadAPI) {
|
|
28
|
+
return res.status(500).json({
|
|
29
|
+
success: false,
|
|
30
|
+
error: "Configuration Error",
|
|
31
|
+
message: "File upload not initialized. Make sure fileUpload.enabled is true in server options.",
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
return globalFileUploadAPI.single(fieldname)(req, res, next);
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Create a middleware for uploading multiple files with the same field name (legacy)
|
|
39
|
+
*/
|
|
40
|
+
function uploadArray(fieldname, maxCount) {
|
|
41
|
+
return (req, res, next) => {
|
|
42
|
+
if (!globalFileUploadAPI) {
|
|
43
|
+
return res.status(500).json({
|
|
44
|
+
success: false,
|
|
45
|
+
error: "Configuration Error",
|
|
46
|
+
message: "File upload not initialized. Make sure fileUpload.enabled is true in server options.",
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
return globalFileUploadAPI.array(fieldname, maxCount)(req, res, next);
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Create a middleware for uploading multiple files with different field names (legacy)
|
|
54
|
+
*/
|
|
55
|
+
function uploadFields(fields) {
|
|
56
|
+
return (req, res, next) => {
|
|
57
|
+
if (!globalFileUploadAPI) {
|
|
58
|
+
return res.status(500).json({
|
|
59
|
+
success: false,
|
|
60
|
+
error: "Configuration Error",
|
|
61
|
+
message: "File upload not initialized. Make sure fileUpload.enabled is true in server options.",
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
return globalFileUploadAPI.fields(fields)(req, res, next);
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Create a middleware for uploading any files (legacy)
|
|
69
|
+
*/
|
|
70
|
+
function uploadAny() {
|
|
71
|
+
return (req, res, next) => {
|
|
72
|
+
if (!globalFileUploadAPI) {
|
|
73
|
+
return res.status(500).json({
|
|
74
|
+
success: false,
|
|
75
|
+
error: "Configuration Error",
|
|
76
|
+
message: "File upload not initialized. Make sure fileUpload.enabled is true in server options.",
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
return globalFileUploadAPI.any()(req, res, next);
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
exports.initializeFileUpload = initializeFileUpload;
|
|
84
|
+
exports.uploadAny = uploadAny;
|
|
85
|
+
exports.uploadArray = uploadArray;
|
|
86
|
+
exports.uploadFields = uploadFields;
|
|
87
|
+
exports.uploadSingle = uploadSingle;
|
|
88
|
+
//# sourceMappingURL=FiUp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FiUp.js","sources":["../../../src/FiUp.ts"],"sourcesContent":[null],"names":["FileUploadAPI"],"mappings":";;;;AAAA;AACA;AAMA;AACA,IAAI,mBAAmB,GAAyB,IAAI,CAAC;AAErD;;;;;;AAMG;AACa,SAAA,oBAAoB,CAChC,aAA6B,EAC7B,MAAc,EAAA;IAEd,IAAI,CAAC,mBAAmB,EAAE;AACtB,QAAA,mBAAmB,GAAG,IAAIA,wBAAa,CAAC,MAAM,CAAC,CAAC;KACnD;AACD,IAAA,mBAAmB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;AAClD,CAAC;AAED;;AAEG;AACG,SAAU,YAAY,CAAC,SAAiB,EAAA;AAC1C,IAAA,OAAO,CAAC,GAAQ,EAAE,GAAQ,EAAE,IAAS,KAAI;QACrC,IAAI,CAAC,mBAAmB,EAAE;YACtB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACxB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,KAAK,EAAE,qBAAqB;AAC5B,gBAAA,OAAO,EACH,sFAAsF;AAC7F,aAAA,CAAC,CAAC;SACN;AACD,QAAA,OAAO,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACjE,KAAC,CAAC;AACN,CAAC;AAED;;AAEG;AACa,SAAA,WAAW,CAAC,SAAiB,EAAE,QAAiB,EAAA;AAC5D,IAAA,OAAO,CAAC,GAAQ,EAAE,GAAQ,EAAE,IAAS,KAAI;QACrC,IAAI,CAAC,mBAAmB,EAAE;YACtB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACxB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,KAAK,EAAE,qBAAqB;AAC5B,gBAAA,OAAO,EACH,sFAAsF;AAC7F,aAAA,CAAC,CAAC;SACN;AACD,QAAA,OAAO,mBAAmB,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC1E,KAAC,CAAC;AACN,CAAC;AAED;;AAEG;AACG,SAAU,YAAY,CACxB,MAAkD,EAAA;AAElD,IAAA,OAAO,CAAC,GAAQ,EAAE,GAAQ,EAAE,IAAS,KAAI;QACrC,IAAI,CAAC,mBAAmB,EAAE;YACtB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACxB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,KAAK,EAAE,qBAAqB;AAC5B,gBAAA,OAAO,EACH,sFAAsF;AAC7F,aAAA,CAAC,CAAC;SACN;AACD,QAAA,OAAO,mBAAmB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC9D,KAAC,CAAC;AACN,CAAC;AAED;;AAEG;SACa,SAAS,GAAA;AACrB,IAAA,OAAO,CAAC,GAAQ,EAAE,GAAQ,EAAE,IAAS,KAAI;QACrC,IAAI,CAAC,mBAAmB,EAAE;YACtB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AACxB,gBAAA,OAAO,EAAE,KAAK;AACd,gBAAA,KAAK,EAAE,qBAAqB;AAC5B,gBAAA,OAAO,EACH,sFAAsF;AAC7F,aAAA,CAAC,CAAC;SACN;QACD,OAAO,mBAAmB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AACrD,KAAC,CAAC;AACN;;;;;;;;"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* XyPriss Configuration Manager
|
|
5
|
+
*
|
|
6
|
+
* Provides a safe way to access and update XyPriss configurations
|
|
7
|
+
* without encountering "cannot access before initialization" errors.
|
|
8
|
+
*
|
|
9
|
+
* This class acts as a singleton configuration store that can be used
|
|
10
|
+
* in modular structures where accessing `app.configs` directly might
|
|
11
|
+
* cause initialization timing issues.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* import { Configs } from 'xypriss';
|
|
16
|
+
*
|
|
17
|
+
* // Set configuration
|
|
18
|
+
* Configs.set({
|
|
19
|
+
* fileUpload: {
|
|
20
|
+
* enabled: true,
|
|
21
|
+
* maxFileSize: 5 * 1024 * 1024
|
|
22
|
+
* }
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* // Get configuration
|
|
26
|
+
* const fileUploadConfig = Configs.get('fileUpload');
|
|
27
|
+
*
|
|
28
|
+
* // Get entire config
|
|
29
|
+
* const allConfigs = Configs.getAll();
|
|
30
|
+
*
|
|
31
|
+
* // Update specific config
|
|
32
|
+
* Configs.update('fileUpload', { maxFileSize: 10 * 1024 * 1024 });
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
/**
|
|
36
|
+
* Configuration Manager Class
|
|
37
|
+
* Singleton pattern for managing XyPriss configurations
|
|
38
|
+
*/
|
|
39
|
+
class ConfigurationManager {
|
|
40
|
+
/**
|
|
41
|
+
* Private constructor to enforce singleton pattern
|
|
42
|
+
*/
|
|
43
|
+
constructor() {
|
|
44
|
+
this.config = {};
|
|
45
|
+
this.initialized = false;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get the singleton instance
|
|
49
|
+
*/
|
|
50
|
+
static getInstance() {
|
|
51
|
+
if (!ConfigurationManager.instance) {
|
|
52
|
+
ConfigurationManager.instance = new ConfigurationManager();
|
|
53
|
+
}
|
|
54
|
+
return ConfigurationManager.instance;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Set the entire configuration
|
|
58
|
+
* @param config - Server configuration options
|
|
59
|
+
*/
|
|
60
|
+
static set(config) {
|
|
61
|
+
const instance = ConfigurationManager.getInstance();
|
|
62
|
+
instance.config = { ...instance.config, ...config };
|
|
63
|
+
instance.initialized = true;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Get a specific configuration section
|
|
67
|
+
* @param key - Configuration key (e.g., 'fileUpload', 'security', 'cache')
|
|
68
|
+
* @returns The configuration value for the specified key
|
|
69
|
+
*/
|
|
70
|
+
static get(key) {
|
|
71
|
+
const instance = ConfigurationManager.getInstance();
|
|
72
|
+
return instance.config[key];
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get the entire configuration object
|
|
76
|
+
* @returns Complete server configuration
|
|
77
|
+
*/
|
|
78
|
+
static getAll() {
|
|
79
|
+
const instance = ConfigurationManager.getInstance();
|
|
80
|
+
return { ...instance.config };
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Update a specific configuration section
|
|
84
|
+
* @param key - Configuration key to update
|
|
85
|
+
* @param value - New value for the configuration section
|
|
86
|
+
*/
|
|
87
|
+
static update(key, value) {
|
|
88
|
+
const instance = ConfigurationManager.getInstance();
|
|
89
|
+
instance.config[key] = value;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Merge configuration with existing config
|
|
93
|
+
* @param config - Partial configuration to merge
|
|
94
|
+
*/
|
|
95
|
+
static merge(config) {
|
|
96
|
+
const instance = ConfigurationManager.getInstance();
|
|
97
|
+
instance.config = {
|
|
98
|
+
...instance.config,
|
|
99
|
+
...config,
|
|
100
|
+
// Deep merge for nested objects
|
|
101
|
+
server: { ...instance.config.server, ...config.server },
|
|
102
|
+
cache: { ...instance.config.cache, ...config.cache },
|
|
103
|
+
security: { ...instance.config.security, ...config.security },
|
|
104
|
+
performance: {
|
|
105
|
+
...instance.config.performance,
|
|
106
|
+
...config.performance,
|
|
107
|
+
},
|
|
108
|
+
fileUpload: { ...instance.config.fileUpload, ...config.fileUpload },
|
|
109
|
+
monitoring: { ...instance.config.monitoring, ...config.monitoring },
|
|
110
|
+
cluster: { ...instance.config.cluster, ...config.cluster },
|
|
111
|
+
multiServer: {
|
|
112
|
+
...instance.config.multiServer,
|
|
113
|
+
...config.multiServer,
|
|
114
|
+
},
|
|
115
|
+
requestManagement: {
|
|
116
|
+
...instance.config.requestManagement,
|
|
117
|
+
...config.requestManagement,
|
|
118
|
+
},
|
|
119
|
+
};
|
|
120
|
+
instance.initialized = true;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Check if configuration has been initialized
|
|
124
|
+
* @returns true if configuration has been set, false otherwise
|
|
125
|
+
*/
|
|
126
|
+
static isInitialized() {
|
|
127
|
+
const instance = ConfigurationManager.getInstance();
|
|
128
|
+
return instance.initialized;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Reset configuration to empty state
|
|
132
|
+
* Useful for testing or reinitializing
|
|
133
|
+
*/
|
|
134
|
+
static reset() {
|
|
135
|
+
const instance = ConfigurationManager.getInstance();
|
|
136
|
+
instance.config = {};
|
|
137
|
+
instance.initialized = false;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Check if a specific configuration section exists
|
|
141
|
+
* @param key - Configuration key to check
|
|
142
|
+
* @returns true if the configuration section exists
|
|
143
|
+
*/
|
|
144
|
+
static has(key) {
|
|
145
|
+
const instance = ConfigurationManager.getInstance();
|
|
146
|
+
return key in instance.config && instance.config[key] !== undefined;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Get configuration with a default value if not set
|
|
150
|
+
* @param key - Configuration key
|
|
151
|
+
* @param defaultValue - Default value to return if key doesn't exist
|
|
152
|
+
* @returns Configuration value or default value
|
|
153
|
+
*/
|
|
154
|
+
static getOrDefault(key, defaultValue) {
|
|
155
|
+
const instance = ConfigurationManager.getInstance();
|
|
156
|
+
return instance.config[key] ?? defaultValue;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Delete a specific configuration section
|
|
160
|
+
* @param key - Configuration key to delete
|
|
161
|
+
*/
|
|
162
|
+
static delete(key) {
|
|
163
|
+
const instance = ConfigurationManager.getInstance();
|
|
164
|
+
delete instance.config[key];
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
exports.Configs = ConfigurationManager;
|
|
169
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sources":["../../../src/config.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var FileUploadManager = require('./server/components/fastapi/FileUploadManager.js');
|
|
4
|
+
var Logger = require('../shared/logger/Logger.js');
|
|
5
|
+
var FiUp = require('./FiUp.js');
|
|
4
6
|
|
|
5
7
|
/**
|
|
6
8
|
* XyPriss File Upload API
|
|
@@ -30,23 +32,41 @@ class FileUploadAPI {
|
|
|
30
32
|
// Use a default logger if none provided
|
|
31
33
|
this.logger =
|
|
32
34
|
logger ||
|
|
33
|
-
{
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
};
|
|
35
|
+
new Logger.Logger({
|
|
36
|
+
enabled: true,
|
|
37
|
+
level: "info",
|
|
38
|
+
components: { security: true },
|
|
39
|
+
types: { debug: true },
|
|
40
|
+
});
|
|
39
41
|
}
|
|
40
42
|
/**
|
|
41
|
-
* Initialize the file upload API with configuration
|
|
43
|
+
* Initialize the file upload API with configuration from Configs
|
|
44
|
+
*
|
|
45
|
+
* This method requires the Configs class to enforce a single source of truth.
|
|
46
|
+
* Configuration is accessed internally from Configs.get('fileUpload').
|
|
47
|
+
*
|
|
48
|
+
* @param configManager - The Configs class (not an instance, the class itself)
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* import { Configs } from 'xypriss';
|
|
53
|
+
*
|
|
54
|
+
* const upload = new FileUploadAPI();
|
|
55
|
+
* await upload.initialize(Configs);
|
|
56
|
+
* ```
|
|
42
57
|
*/
|
|
43
|
-
async initialize(
|
|
58
|
+
async initialize(configManager) {
|
|
44
59
|
if (this.initialized) {
|
|
45
60
|
return; // Already initialized
|
|
46
61
|
}
|
|
62
|
+
// Access config internally from the Configs singleton
|
|
63
|
+
const config = configManager.get("fileUpload");
|
|
64
|
+
if (!config) {
|
|
65
|
+
throw new Error("FileUpload configuration not found. Please set fileUpload config in createServer() options or use Configs.set()");
|
|
66
|
+
}
|
|
47
67
|
try {
|
|
48
68
|
this.logger.debug("server", "Initializing FileUploadAPI...");
|
|
49
|
-
this.manager = new FileUploadManager.FileUploadManager(
|
|
69
|
+
this.manager = new FileUploadManager.FileUploadManager(config, this.logger);
|
|
50
70
|
await this.manager.initialize();
|
|
51
71
|
this.initialized = true;
|
|
52
72
|
this.logger.debug("server", `FileUploadAPI initialized, enabled: ${this.manager.isEnabled()}`);
|
|
@@ -225,87 +245,14 @@ class FileUploadAPI {
|
|
|
225
245
|
};
|
|
226
246
|
}
|
|
227
247
|
}
|
|
228
|
-
//
|
|
229
|
-
|
|
230
|
-
// Global instance for backward compatibility
|
|
231
|
-
let globalFileUploadAPI = null;
|
|
232
|
-
/**
|
|
233
|
-
* Initialize the global file upload manager (legacy)
|
|
234
|
-
* This is called automatically when the server starts with file upload enabled
|
|
235
|
-
*/
|
|
236
|
-
function initializeFileUpload(options, logger) {
|
|
237
|
-
if (!globalFileUploadAPI) {
|
|
238
|
-
globalFileUploadAPI = new FileUploadAPI(logger);
|
|
239
|
-
}
|
|
240
|
-
globalFileUploadAPI.initialize(options);
|
|
241
|
-
}
|
|
242
|
-
/**
|
|
243
|
-
* Create a middleware for uploading a single file (legacy)
|
|
244
|
-
*/
|
|
245
|
-
function uploadSingle(fieldname) {
|
|
246
|
-
return (req, res, next) => {
|
|
247
|
-
if (!globalFileUploadAPI) {
|
|
248
|
-
return res.status(500).json({
|
|
249
|
-
success: false,
|
|
250
|
-
error: "Configuration Error",
|
|
251
|
-
message: "File upload not initialized. Make sure fileUpload.enabled is true in server options.",
|
|
252
|
-
});
|
|
253
|
-
}
|
|
254
|
-
return globalFileUploadAPI.single(fieldname)(req, res, next);
|
|
255
|
-
};
|
|
256
|
-
}
|
|
257
|
-
/**
|
|
258
|
-
* Create a middleware for uploading multiple files with the same field name (legacy)
|
|
259
|
-
*/
|
|
260
|
-
function uploadArray(fieldname, maxCount) {
|
|
261
|
-
return (req, res, next) => {
|
|
262
|
-
if (!globalFileUploadAPI) {
|
|
263
|
-
return res.status(500).json({
|
|
264
|
-
success: false,
|
|
265
|
-
error: "Configuration Error",
|
|
266
|
-
message: "File upload not initialized. Make sure fileUpload.enabled is true in server options.",
|
|
267
|
-
});
|
|
268
|
-
}
|
|
269
|
-
return globalFileUploadAPI.array(fieldname, maxCount)(req, res, next);
|
|
270
|
-
};
|
|
271
|
-
}
|
|
272
|
-
/**
|
|
273
|
-
* Create a middleware for uploading multiple files with different field names (legacy)
|
|
274
|
-
*/
|
|
275
|
-
function uploadFields(fields) {
|
|
276
|
-
return (req, res, next) => {
|
|
277
|
-
if (!globalFileUploadAPI) {
|
|
278
|
-
return res.status(500).json({
|
|
279
|
-
success: false,
|
|
280
|
-
error: "Configuration Error",
|
|
281
|
-
message: "File upload not initialized. Make sure fileUpload.enabled is true in server options.",
|
|
282
|
-
});
|
|
283
|
-
}
|
|
284
|
-
return globalFileUploadAPI.fields(fields)(req, res, next);
|
|
285
|
-
};
|
|
286
|
-
}
|
|
287
|
-
/**
|
|
288
|
-
* Create a middleware for uploading any files (legacy)
|
|
289
|
-
*/
|
|
290
|
-
function uploadAny() {
|
|
291
|
-
return (req, res, next) => {
|
|
292
|
-
if (!globalFileUploadAPI) {
|
|
293
|
-
return res.status(500).json({
|
|
294
|
-
success: false,
|
|
295
|
-
error: "Configuration Error",
|
|
296
|
-
message: "File upload not initialized. Make sure fileUpload.enabled is true in server options.",
|
|
297
|
-
});
|
|
298
|
-
}
|
|
299
|
-
return globalFileUploadAPI.any()(req, res, next);
|
|
300
|
-
};
|
|
301
|
-
}
|
|
302
|
-
// Export types for TypeScript users
|
|
303
|
-
// Types are available through the main types export
|
|
248
|
+
// alias
|
|
249
|
+
const Uploader = new FileUploadAPI();
|
|
304
250
|
|
|
251
|
+
exports.initializeFileUpload = FiUp.initializeFileUpload;
|
|
252
|
+
exports.uploadAny = FiUp.uploadAny;
|
|
253
|
+
exports.uploadArray = FiUp.uploadArray;
|
|
254
|
+
exports.uploadFields = FiUp.uploadFields;
|
|
255
|
+
exports.uploadSingle = FiUp.uploadSingle;
|
|
305
256
|
exports.FileUploadAPI = FileUploadAPI;
|
|
306
|
-
exports.
|
|
307
|
-
exports.uploadAny = uploadAny;
|
|
308
|
-
exports.uploadArray = uploadArray;
|
|
309
|
-
exports.uploadFields = uploadFields;
|
|
310
|
-
exports.uploadSingle = uploadSingle;
|
|
257
|
+
exports.Uploader = Uploader;
|
|
311
258
|
//# sourceMappingURL=file-upload.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-upload.js","sources":["../../../src/file-upload.ts"],"sourcesContent":[null],"names":["FileUploadManager"],"mappings":"
|
|
1
|
+
{"version":3,"file":"file-upload.js","sources":["../../../src/file-upload.ts"],"sourcesContent":[null],"names":["Logger","FileUploadManager"],"mappings":"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"}
|
package/dist/cjs/src/index.js
CHANGED
|
@@ -7,11 +7,13 @@ var smartRoutes = require('./server/components/fastapi/smart-routes.js');
|
|
|
7
7
|
var CacheFactory = require('./cache/CacheFactory.js');
|
|
8
8
|
var securityMiddleware = require('./middleware/security-middleware.js');
|
|
9
9
|
var performanceMonitor = require('./server/optimization/performance-monitor.js');
|
|
10
|
+
var config = require('./config.js');
|
|
10
11
|
var index = require('./plugins/modules/index.js');
|
|
11
12
|
var quickStart = require('./quick-start.js');
|
|
12
13
|
var trustProxy = require('./server/utils/trustProxy.js');
|
|
13
14
|
var safeJsonMiddleware = require('./middleware/safe-json-middleware.js');
|
|
14
15
|
var safeSerializer = require('../mods/security/src/components/fortified-function/serializer/safe-serializer.js');
|
|
16
|
+
var FiUp = require('./FiUp.js');
|
|
15
17
|
var PluginRegistry = require('./plugins/modules/PluginRegistry.js');
|
|
16
18
|
var PluginEngine = require('./plugins/modules/PluginEngine.js');
|
|
17
19
|
var PluginTypes = require('./plugins/modules/types/PluginTypes.js');
|
|
@@ -69,11 +71,7 @@ function Router() {
|
|
|
69
71
|
|
|
70
72
|
exports.FLA = fileUpload.FileUploadAPI;
|
|
71
73
|
exports.FileUploadAPI = fileUpload.FileUploadAPI;
|
|
72
|
-
exports.
|
|
73
|
-
exports.uploadAny = fileUpload.uploadAny;
|
|
74
|
-
exports.uploadArray = fileUpload.uploadArray;
|
|
75
|
-
exports.uploadFields = fileUpload.uploadFields;
|
|
76
|
-
exports.uploadSingle = fileUpload.uploadSingle;
|
|
74
|
+
exports.Uploader = fileUpload.Uploader;
|
|
77
75
|
exports.XyPrissRouter = Router$1.XyPrissRouter;
|
|
78
76
|
exports.createCacheMiddleware = ServerFactory.createCacheMiddleware;
|
|
79
77
|
exports.createServer = ServerFactory.createServer;
|
|
@@ -82,6 +80,7 @@ exports.Route = smartRoutes.Route;
|
|
|
82
80
|
exports.createOptimalCache = CacheFactory.createOptimalCache;
|
|
83
81
|
exports.SecurityMiddleware = securityMiddleware.SecurityMiddleware;
|
|
84
82
|
exports.PerformanceMonitor = performanceMonitor.PerformanceMonitor;
|
|
83
|
+
exports.Configs = config.Configs;
|
|
85
84
|
exports.DEFAULT_PLUGIN_CONFIG = index.DEFAULT_PLUGIN_CONFIG;
|
|
86
85
|
exports.PERFORMANCE_TARGETS = index.PERFORMANCE_TARGETS;
|
|
87
86
|
exports.PLUGIN_SYSTEM_NAME = index.PLUGIN_SYSTEM_NAME;
|
|
@@ -99,6 +98,11 @@ exports.setupSafeJson = safeJsonMiddleware.setupSafeJson;
|
|
|
99
98
|
exports.expressStringify = safeSerializer.expressStringify;
|
|
100
99
|
exports.fastStringify = safeSerializer.fastStringify;
|
|
101
100
|
exports.safeStringify = safeSerializer.safeStringify;
|
|
101
|
+
exports.initializeFileUpload = FiUp.initializeFileUpload;
|
|
102
|
+
exports.uploadAny = FiUp.uploadAny;
|
|
103
|
+
exports.uploadArray = FiUp.uploadArray;
|
|
104
|
+
exports.uploadFields = FiUp.uploadFields;
|
|
105
|
+
exports.uploadSingle = FiUp.uploadSingle;
|
|
102
106
|
exports.PluginRegistry = PluginRegistry.PluginRegistry;
|
|
103
107
|
exports.PluginEngine = PluginEngine.PluginEngine;
|
|
104
108
|
Object.defineProperty(exports, 'PluginEventType', {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/index.ts"],"sourcesContent":[null],"names":["XyPrissRouter"],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/index.ts"],"sourcesContent":[null],"names":["XyPrissRouter"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBiF;AAuCjF;;AAEG;SACa,MAAM,GAAA;IAClB,OAAO,IAAIA,sBAAa,CAAC;AACrB,QAAA,aAAa,EAAE,KAAK;AACpB,QAAA,WAAW,EAAE,KAAK;AAClB,QAAA,MAAM,EAAE,KAAK;AAChB,KAAA,CAAC,CAAC;AACP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -93,7 +93,7 @@ class XyPrissServer {
|
|
|
93
93
|
this.logger = Logger.initializeLogger(this.options.logging);
|
|
94
94
|
this.logger.startup("server", "Creating server...");
|
|
95
95
|
// Create custom HTTP server app (Express-free)
|
|
96
|
-
this.app = new XyprissApp.XyprissApp(this.logger);
|
|
96
|
+
this.app = new XyprissApp.XyprissApp(this.logger, this.options);
|
|
97
97
|
// Expose logger on app object for debugging
|
|
98
98
|
this.app.logger = this.logger;
|
|
99
99
|
// Initialize file upload methods synchronously (before async initialization)
|
|
@@ -319,7 +319,8 @@ class XyPrissServer {
|
|
|
319
319
|
// Initialize the global file upload API
|
|
320
320
|
if (this.fileUploadManager.isEnabled()) {
|
|
321
321
|
const { initializeFileUpload } = await Promise.resolve().then(function () { return require('../file-upload.js'); });
|
|
322
|
-
|
|
322
|
+
const { Configs } = await Promise.resolve().then(function () { return require('../config.js'); });
|
|
323
|
+
initializeFileUpload(Configs, this.logger);
|
|
323
324
|
this.logger.debug("server", "✅ Global file upload API initialized");
|
|
324
325
|
}
|
|
325
326
|
else {
|
|
@@ -439,13 +440,15 @@ class XyPrissServer {
|
|
|
439
440
|
const deepMerge = (target, source) => {
|
|
440
441
|
if (source === null || source === undefined)
|
|
441
442
|
return target;
|
|
442
|
-
if (typeof source !==
|
|
443
|
+
if (typeof source !== "object" || typeof target !== "object")
|
|
443
444
|
return source;
|
|
444
445
|
const result = { ...target };
|
|
445
446
|
for (const key in source) {
|
|
446
447
|
if (source.hasOwnProperty(key)) {
|
|
447
|
-
if (typeof source[key] ===
|
|
448
|
-
|
|
448
|
+
if (typeof source[key] === "object" &&
|
|
449
|
+
source[key] !== null &&
|
|
450
|
+
typeof target[key] === "object" &&
|
|
451
|
+
target[key] !== null) {
|
|
449
452
|
result[key] = deepMerge(target[key], source[key]);
|
|
450
453
|
}
|
|
451
454
|
else {
|
|
@@ -583,7 +586,9 @@ class XyPrissServer {
|
|
|
583
586
|
const trustProxyConfig = this.options.server?.trustProxy;
|
|
584
587
|
if (trustProxyConfig !== undefined) {
|
|
585
588
|
this.app.setTrustProxy(trustProxyConfig);
|
|
586
|
-
this.logger.debug("server", `Trust proxy configured: ${typeof trustProxyConfig ===
|
|
589
|
+
this.logger.debug("server", `Trust proxy configured: ${typeof trustProxyConfig === "function"
|
|
590
|
+
? "custom function"
|
|
591
|
+
: JSON.stringify(trustProxyConfig)}`);
|
|
587
592
|
}
|
|
588
593
|
else {
|
|
589
594
|
// Use default from configuration
|