xypriss 2.1.1 → 2.2.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 (47) hide show
  1. package/README.md +140 -1
  2. package/dist/cjs/src/index.js +1 -1
  3. package/dist/cjs/src/index.js.map +1 -1
  4. package/dist/cjs/src/server/FastServer.js +70 -1
  5. package/dist/cjs/src/server/FastServer.js.map +1 -1
  6. package/dist/cjs/src/server/ServerFactory.js +218 -1
  7. package/dist/cjs/src/server/ServerFactory.js.map +1 -1
  8. package/dist/cjs/src/server/components/fastapi/FileUploadManager.js +175 -0
  9. package/dist/cjs/src/server/components/fastapi/FileUploadManager.js.map +1 -0
  10. package/dist/cjs/src/server/components/fastapi/FileWatcherManager.js +183 -135
  11. package/dist/cjs/src/server/components/fastapi/FileWatcherManager.js.map +1 -1
  12. package/dist/cjs/src/server/components/lifecycle/ServerLifecycleManager.js +4 -3
  13. package/dist/cjs/src/server/components/lifecycle/ServerLifecycleManager.js.map +1 -1
  14. package/dist/cjs/src/server/components/multi-server/MultiServerManager.js +200 -0
  15. package/dist/cjs/src/server/components/multi-server/MultiServerManager.js.map +1 -0
  16. package/dist/cjs/src/server/const/default.js +41 -1
  17. package/dist/cjs/src/server/const/default.js.map +1 -1
  18. package/dist/cjs/src/server/core/HttpServer.js +6 -1
  19. package/dist/cjs/src/server/core/HttpServer.js.map +1 -1
  20. package/dist/cjs/src/server/core/XyprissApp.js +72 -10
  21. package/dist/cjs/src/server/core/XyprissApp.js.map +1 -1
  22. package/dist/esm/src/index.js +1 -1
  23. package/dist/esm/src/index.js.map +1 -1
  24. package/dist/esm/src/server/FastServer.js +71 -2
  25. package/dist/esm/src/server/FastServer.js.map +1 -1
  26. package/dist/esm/src/server/ServerFactory.js +218 -1
  27. package/dist/esm/src/server/ServerFactory.js.map +1 -1
  28. package/dist/esm/src/server/components/fastapi/FileUploadManager.js +154 -0
  29. package/dist/esm/src/server/components/fastapi/FileUploadManager.js.map +1 -0
  30. package/dist/esm/src/server/components/fastapi/FileWatcherManager.js +183 -135
  31. package/dist/esm/src/server/components/fastapi/FileWatcherManager.js.map +1 -1
  32. package/dist/esm/src/server/components/lifecycle/ServerLifecycleManager.js +4 -3
  33. package/dist/esm/src/server/components/lifecycle/ServerLifecycleManager.js.map +1 -1
  34. package/dist/esm/src/server/components/multi-server/MultiServerManager.js +198 -0
  35. package/dist/esm/src/server/components/multi-server/MultiServerManager.js.map +1 -0
  36. package/dist/esm/src/server/const/default.js +40 -2
  37. package/dist/esm/src/server/const/default.js.map +1 -1
  38. package/dist/esm/src/server/core/HttpServer.js +6 -1
  39. package/dist/esm/src/server/core/HttpServer.js.map +1 -1
  40. package/dist/esm/src/server/core/XyprissApp.js +72 -10
  41. package/dist/esm/src/server/core/XyprissApp.js.map +1 -1
  42. package/dist/index.d.ts +814 -492
  43. package/package.json +4 -4
  44. package/dist/cjs/src/server/components/fastapi/typescript/TypeScriptChecker.js +0 -373
  45. package/dist/cjs/src/server/components/fastapi/typescript/TypeScriptChecker.js.map +0 -1
  46. package/dist/esm/src/server/components/fastapi/typescript/TypeScriptChecker.js +0 -351
  47. package/dist/esm/src/server/components/fastapi/typescript/TypeScriptChecker.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xypriss",
3
- "version": "2.1.1",
3
+ "version": "2.2.0",
4
4
  "description": "XyPriss is a lightweight, TypeScript-first, open-source Node.js web framework crafted for developers seeking a familiar Express-like API without Express dependencies. It features built-in security middleware, a robust routing system, and performance optimizations to build scalable, secure web applications effortlessly. Join our community and contribute on GitHub!",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/esm/index.js",
@@ -19,7 +19,7 @@
19
19
  "scripts": {
20
20
  "postinstall": "node scripts/postinstall.js",
21
21
  "install-memory-cli": "node scripts/install-memory-cli.js",
22
- "build": "npx rollup -c rollup.config.js",
22
+ "build": "NODE_OPTIONS='--max-old-space-size=4096' npx rollup -c rollup.config.js",
23
23
  "build:memory": "NODE_OPTIONS='--max-old-space-size=6144' npx rollup -c rollup.config.js",
24
24
  "test": "jest",
25
25
  "test:watch": "jest --watch",
@@ -166,7 +166,7 @@
166
166
  "@types/morgan": "^1.9.10",
167
167
  "@types/multer": "^2.0.0",
168
168
  "@types/noble": "^0.0.44",
169
- "@types/node": "^18.19.110",
169
+ "@types/node": "^18.19.129",
170
170
  "@types/react": "^18.0.0",
171
171
  "@types/ws": "^8.18.1",
172
172
  "@typescript-eslint/eslint-plugin": "^5.57.0",
@@ -240,6 +240,7 @@
240
240
  "express-validator": "^7.2.1",
241
241
  "fast-json-stable-stringify": "^2.1.0",
242
242
  "fast-json-stringify": "^6.0.1",
243
+ "fortify-schema": "^2.1.2",
243
244
  "helmet": "^8.1.0",
244
245
  "hpp": "^0.2.3",
245
246
  "http-proxy-middleware": "^3.0.5",
@@ -265,7 +266,6 @@
265
266
  "secure-random": "^1.1.2",
266
267
  "systeminformation": "^5.27.1",
267
268
  "tweetnacl": "^1.0.3",
268
- "typescript": "^5.8.3",
269
269
  "ws": "^8.18.2",
270
270
  "xss": "^1.0.15",
271
271
  "xypriss-security": "^1.1.3"
@@ -1,373 +0,0 @@
1
- 'use strict';
2
-
3
- var ts = require('typescript');
4
- var fs = require('fs');
5
- var path = require('path');
6
- var Logger = require('../../../../../shared/logger/Logger.js');
7
-
8
- function _interopNamespaceDefault(e) {
9
- var n = Object.create(null);
10
- if (e) {
11
- Object.keys(e).forEach(function (k) {
12
- if (k !== 'default') {
13
- var d = Object.getOwnPropertyDescriptor(e, k);
14
- Object.defineProperty(n, k, d.get ? d : {
15
- enumerable: true,
16
- get: function () { return e[k]; }
17
- });
18
- }
19
- });
20
- }
21
- n.default = e;
22
- return Object.freeze(n);
23
- }
24
-
25
- var fs__namespace = /*#__PURE__*/_interopNamespaceDefault(fs);
26
- var path__namespace = /*#__PURE__*/_interopNamespaceDefault(path);
27
-
28
- /**
29
- * TypeScript Type Checker
30
- * Provides real-time TypeScript error detection and reporting
31
- */
32
- class TypeScriptChecker {
33
- constructor(config) {
34
- this.program = null;
35
- this.compilerOptions = {};
36
- this.lastCheckTime = new Date();
37
- this.isChecking = false;
38
- this.config = {
39
- ...config,
40
- enabled: config.enabled ?? true,
41
- watchMode: config.watchMode ?? false,
42
- checkOnSave: config.checkOnSave ?? true,
43
- showWarnings: config.showWarnings ?? true,
44
- showInfos: config.showInfos ?? false,
45
- maxErrors: config.maxErrors ?? 50,
46
- excludePatterns: config.excludePatterns ?? [
47
- "node_modules",
48
- "dist",
49
- "build",
50
- ".git",
51
- ],
52
- includePatterns: config.includePatterns ?? ["**/*.ts", "**/*.tsx"],
53
- verbose: config.verbose ?? false,
54
- };
55
- this.configPath = this.findTsConfig();
56
- this.loadCompilerOptions();
57
- }
58
- /**
59
- * Find tsconfig.json file
60
- */
61
- findTsConfig() {
62
- if (this.config.configFile && fs__namespace.existsSync(this.config.configFile)) {
63
- return this.config.configFile;
64
- }
65
- // Search for tsconfig.json in current directory and parent directories
66
- let currentDir = process.cwd();
67
- while (currentDir !== path__namespace.dirname(currentDir)) {
68
- const configPath = path__namespace.join(currentDir, "tsconfig.json");
69
- if (fs__namespace.existsSync(configPath)) {
70
- return configPath;
71
- }
72
- currentDir = path__namespace.dirname(currentDir);
73
- }
74
- // Default fallback
75
- return path__namespace.join(process.cwd(), "tsconfig.json");
76
- }
77
- /**
78
- * Load TypeScript compiler options
79
- */
80
- loadCompilerOptions() {
81
- try {
82
- if (fs__namespace.existsSync(this.configPath)) {
83
- const configFile = ts.readConfigFile(this.configPath, ts.sys.readFile);
84
- if (configFile.error) {
85
- Logger.logger.warn("typescript", `Error reading tsconfig.json: ${configFile.error.messageText}`);
86
- this.compilerOptions = this.getDefaultCompilerOptions();
87
- return;
88
- }
89
- const parsedConfig = ts.parseJsonConfigFileContent(configFile.config, ts.sys, path__namespace.dirname(this.configPath));
90
- if (parsedConfig.errors.length > 0) {
91
- Logger.logger.warn("typescript", "TypeScript config errors found");
92
- parsedConfig.errors.forEach((error) => {
93
- Logger.logger.warn("typescript", `Config error: ${error.messageText}`);
94
- });
95
- }
96
- this.compilerOptions = parsedConfig.options;
97
- if (this.config.verbose) {
98
- Logger.logger.debug("typescript", `Loaded TypeScript config from: ${this.configPath}`);
99
- }
100
- }
101
- else {
102
- Logger.logger.warn("typescript", `tsconfig.json not found at: ${this.configPath}`);
103
- this.compilerOptions = this.getDefaultCompilerOptions();
104
- }
105
- }
106
- catch (error) {
107
- Logger.logger.error("typescript", `Failed to load TypeScript config: ${error.message}`);
108
- this.compilerOptions = this.getDefaultCompilerOptions();
109
- }
110
- }
111
- /**
112
- * Get default compiler options
113
- */
114
- getDefaultCompilerOptions() {
115
- return {
116
- target: ts.ScriptTarget.ES2020,
117
- module: ts.ModuleKind.CommonJS,
118
- lib: ["ES2020", "DOM"],
119
- strict: true,
120
- esModuleInterop: true,
121
- skipLibCheck: true,
122
- forceConsistentCasingInFileNames: true,
123
- moduleResolution: ts.ModuleResolutionKind.Node10,
124
- allowSyntheticDefaultImports: true,
125
- noEmit: true, // We only want type checking, not compilation
126
- };
127
- }
128
- /**
129
- * Get TypeScript files to check
130
- */
131
- getFilesToCheck(specificFiles) {
132
- if (specificFiles && specificFiles.length > 0) {
133
- return specificFiles.filter((file) => file.endsWith(".ts") || file.endsWith(".tsx"));
134
- }
135
- // Get all TypeScript files in the project
136
- const files = [];
137
- const searchPaths = ["src", "lib", "app", "."];
138
- for (const searchPath of searchPaths) {
139
- if (fs__namespace.existsSync(searchPath)) {
140
- this.findTypeScriptFiles(searchPath, files);
141
- }
142
- }
143
- return files;
144
- }
145
- /**
146
- * Recursively find TypeScript files
147
- */
148
- findTypeScriptFiles(dir, files) {
149
- try {
150
- const entries = fs__namespace.readdirSync(dir, { withFileTypes: true });
151
- for (const entry of entries) {
152
- const fullPath = path__namespace.join(dir, entry.name);
153
- // Skip excluded patterns
154
- if (this.config.excludePatterns.some((pattern) => fullPath.includes(pattern))) {
155
- continue;
156
- }
157
- if (entry.isDirectory()) {
158
- this.findTypeScriptFiles(fullPath, files);
159
- }
160
- else if (entry.isFile() &&
161
- (entry.name.endsWith(".ts") || entry.name.endsWith(".tsx"))) {
162
- files.push(fullPath);
163
- }
164
- }
165
- }
166
- catch (error) {
167
- if (this.config.verbose) {
168
- Logger.logger.debug("typescript", `Error reading directory ${dir}: ${error.message}`);
169
- }
170
- }
171
- }
172
- /**
173
- * Check TypeScript files for errors
174
- */
175
- async checkFiles(specificFiles) {
176
- if (!this.config.enabled) {
177
- return {
178
- success: true,
179
- errors: [],
180
- warnings: [],
181
- totalFiles: 0,
182
- checkedFiles: [],
183
- duration: 0,
184
- timestamp: new Date(),
185
- };
186
- }
187
- if (this.isChecking) {
188
- Logger.logger.debug("typescript", "Type check already in progress, skipping");
189
- return {
190
- success: false,
191
- errors: [],
192
- warnings: [],
193
- totalFiles: 0,
194
- checkedFiles: [],
195
- duration: 0,
196
- timestamp: new Date(),
197
- };
198
- }
199
- this.isChecking = true;
200
- const startTime = Date.now();
201
- try {
202
- const filesToCheck = this.getFilesToCheck(specificFiles);
203
- if (filesToCheck.length === 0) {
204
- Logger.logger.debug("typescript", "No TypeScript files found to check");
205
- return {
206
- success: true,
207
- errors: [],
208
- warnings: [],
209
- totalFiles: 0,
210
- checkedFiles: [],
211
- duration: Date.now() - startTime,
212
- timestamp: new Date(),
213
- };
214
- }
215
- if (this.config.verbose) {
216
- Logger.logger.debug("typescript", `Checking ${filesToCheck.length} TypeScript files`);
217
- }
218
- // Create TypeScript program
219
- this.program = ts.createProgram(filesToCheck, this.compilerOptions);
220
- // Get diagnostics
221
- const allDiagnostics = ts.getPreEmitDiagnostics(this.program);
222
- // Process diagnostics
223
- const errors = [];
224
- const warnings = [];
225
- for (const diagnostic of allDiagnostics) {
226
- const tsError = this.processDiagnostic(diagnostic);
227
- if (tsError) {
228
- if (tsError.severity === "error") {
229
- errors.push(tsError);
230
- }
231
- else if (tsError.severity === "warning" &&
232
- this.config.showWarnings) {
233
- warnings.push(tsError);
234
- }
235
- }
236
- // Limit errors to prevent overwhelming output
237
- if (errors.length >= this.config.maxErrors) {
238
- Logger.logger.warn("typescript", `Reached maximum error limit (${this.config.maxErrors}), stopping check`);
239
- break;
240
- }
241
- }
242
- const duration = Date.now() - startTime;
243
- const success = errors.length === 0;
244
- // Log results
245
- if (errors.length > 0) {
246
- Logger.logger.error("typescript", `❌ TypeScript check failed: ${errors.length} errors found`);
247
- errors.slice(0, 5).forEach((error) => {
248
- Logger.logger.error("typescript", ` ${error.file}:${error.line}:${error.column} - ${error.message}`);
249
- });
250
- if (errors.length > 5) {
251
- Logger.logger.error("typescript", ` ... and ${errors.length - 5} more errors`);
252
- }
253
- }
254
- else {
255
- Logger.logger.info("typescript", `✅ TypeScript check passed (${filesToCheck.length} files, ${duration}ms)`);
256
- }
257
- if (warnings.length > 0 && this.config.showWarnings) {
258
- Logger.logger.warn("typescript", `⚠️ ${warnings.length} TypeScript warnings found`);
259
- }
260
- this.lastCheckTime = new Date();
261
- return {
262
- success,
263
- errors,
264
- warnings,
265
- totalFiles: filesToCheck.length,
266
- checkedFiles: filesToCheck,
267
- duration,
268
- timestamp: this.lastCheckTime,
269
- };
270
- }
271
- catch (error) {
272
- Logger.logger.error("typescript", `TypeScript check failed: ${error.message}`);
273
- return {
274
- success: false,
275
- errors: [
276
- {
277
- file: "system",
278
- line: 0,
279
- column: 0,
280
- message: `TypeScript checker error: ${error.message}`,
281
- code: 0,
282
- severity: "error",
283
- category: "system",
284
- source: error.stack || "",
285
- },
286
- ],
287
- warnings: [],
288
- totalFiles: 0,
289
- checkedFiles: [],
290
- duration: Date.now() - startTime,
291
- timestamp: new Date(),
292
- };
293
- }
294
- finally {
295
- this.isChecking = false;
296
- }
297
- }
298
- /**
299
- * Process TypeScript diagnostic
300
- */
301
- processDiagnostic(diagnostic) {
302
- const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n");
303
- let file = "unknown";
304
- let line = 0;
305
- let column = 0;
306
- if (diagnostic.file && diagnostic.start !== undefined) {
307
- file = diagnostic.file.fileName;
308
- const position = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start);
309
- line = position.line + 1; // Convert to 1-based
310
- column = position.character + 1; // Convert to 1-based
311
- }
312
- const severity = this.getDiagnosticSeverity(diagnostic.category);
313
- const category = ts.DiagnosticCategory[diagnostic.category].toLowerCase();
314
- return {
315
- file: path__namespace.relative(process.cwd(), file),
316
- line,
317
- column,
318
- message,
319
- code: diagnostic.code,
320
- severity,
321
- category,
322
- source: diagnostic.source || "typescript",
323
- };
324
- }
325
- /**
326
- * Get diagnostic severity
327
- */
328
- getDiagnosticSeverity(category) {
329
- switch (category) {
330
- case ts.DiagnosticCategory.Error:
331
- return "error";
332
- case ts.DiagnosticCategory.Warning:
333
- return "warning";
334
- case ts.DiagnosticCategory.Suggestion:
335
- case ts.DiagnosticCategory.Message:
336
- return "info";
337
- default:
338
- return "error";
339
- }
340
- }
341
- /**
342
- * Get checker status
343
- */
344
- getStatus() {
345
- return {
346
- enabled: this.config.enabled,
347
- isChecking: this.isChecking,
348
- lastCheckTime: this.lastCheckTime,
349
- configPath: this.configPath,
350
- compilerOptions: this.compilerOptions,
351
- };
352
- }
353
- /**
354
- * Update configuration
355
- */
356
- updateConfig(newConfig) {
357
- this.config = { ...this.config, ...newConfig };
358
- if (newConfig.configFile) {
359
- this.configPath = newConfig.configFile;
360
- this.loadCompilerOptions();
361
- }
362
- }
363
- /**
364
- * Enable/disable type checking
365
- */
366
- setEnabled(enabled) {
367
- this.config.enabled = enabled;
368
- Logger.logger.info("typescript", `TypeScript checking ${enabled ? "enabled" : "disabled"}`);
369
- }
370
- }
371
-
372
- exports.TypeScriptChecker = TypeScriptChecker;
373
- //# sourceMappingURL=TypeScriptChecker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TypeScriptChecker.js","sources":["../../../../../../../src/server/components/fastapi/typescript/TypeScriptChecker.ts"],"sourcesContent":[null],"names":["fs","path","logger"],"mappings":"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"}