xypriss 2.3.3 → 2.3.5

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 (105) hide show
  1. package/README.md +28 -1
  2. package/dist/cjs/mods/security/src/algorithms/hash-algorithms.js +1 -1
  3. package/dist/cjs/mods/security/src/components/attestation.js +1 -1
  4. package/dist/cjs/mods/security/src/components/cache/UFSIMC.js +1 -1
  5. package/dist/cjs/mods/security/src/components/cache/cacheSys.utils.js +1 -1
  6. package/dist/cjs/mods/security/src/components/cache/index.js +1 -1
  7. package/dist/cjs/mods/security/src/components/canary-tokens.js +1 -1
  8. package/dist/cjs/mods/security/src/components/fortified-function/index.js +1 -1
  9. package/dist/cjs/mods/security/src/components/fortified-function/security/security-handler.js +1 -1
  10. package/dist/cjs/mods/security/src/components/memory-hard.js +1 -1
  11. package/dist/cjs/mods/security/src/components/post-quantum.js +1 -1
  12. package/dist/cjs/mods/security/src/components/secure-array/crypto/ArrayCryptoHandler.js +1 -1
  13. package/dist/cjs/mods/security/src/components/secure-array/index.js +1 -1
  14. package/dist/cjs/mods/security/src/components/secure-array/types/index.js +1 -1
  15. package/dist/cjs/mods/security/src/components/secure-object/encryption/crypto-handler.js +1 -1
  16. package/dist/cjs/mods/security/src/components/secure-object/index.js +1 -1
  17. package/dist/cjs/mods/security/src/components/secure-serialization.js +1 -1
  18. package/dist/cjs/mods/security/src/components/secure-string/advanced/quantum-safe.js +1 -1
  19. package/dist/cjs/mods/security/src/components/tamper-evident-logging.js +1 -1
  20. package/dist/cjs/mods/security/src/core/crypto.js +1 -1
  21. package/dist/cjs/mods/security/src/core/hash/hash-core.js +1 -1
  22. package/dist/cjs/mods/security/src/core/hash/hash-security.js +1 -1
  23. package/dist/cjs/mods/security/src/core/keys/keys-core.js +1 -1
  24. package/dist/cjs/mods/security/src/core/password/index.js +1 -1
  25. package/dist/cjs/mods/security/src/core/password/password-algorithms.js +1 -1
  26. package/dist/cjs/mods/security/src/core/password/password-core.js +1 -1
  27. package/dist/cjs/mods/security/src/core/password/password-generator.js +1 -1
  28. package/dist/cjs/mods/security/src/core/password/password-utils.js +1 -1
  29. package/dist/cjs/mods/security/src/helpers/Uint8Array.js +2 -2
  30. package/dist/cjs/mods/security/src/helpers/Uint8Array.js.map +1 -1
  31. package/dist/cjs/mods/security/src/index.js +1 -1
  32. package/dist/cjs/mods/security/src/utils/dataConverter.js +2 -2
  33. package/dist/cjs/mods/security/src/utils/dataConverter.js.map +1 -1
  34. package/dist/cjs/src/cluster/modules/CrossPlatformMemory.js +11 -9
  35. package/dist/cjs/src/cluster/modules/CrossPlatformMemory.js.map +1 -1
  36. package/dist/cjs/src/encryption/EncryptionService.js +1 -1
  37. package/dist/cjs/src/index.js +2 -0
  38. package/dist/cjs/src/index.js.map +1 -1
  39. package/dist/cjs/src/middleware/built-in/BuiltInMiddleware.js +16 -0
  40. package/dist/cjs/src/middleware/built-in/BuiltInMiddleware.js.map +1 -1
  41. package/dist/cjs/src/plugins/modules/index.js +1 -1
  42. package/dist/cjs/src/server/FastServer.js +18 -1
  43. package/dist/cjs/src/server/FastServer.js.map +1 -1
  44. package/dist/cjs/src/server/core/HttpServer.js +16 -8
  45. package/dist/cjs/src/server/core/HttpServer.js.map +1 -1
  46. package/dist/cjs/src/server/core/XyprissApp.js +8 -0
  47. package/dist/cjs/src/server/core/XyprissApp.js.map +1 -1
  48. package/dist/cjs/src/server/handlers/templates/notFoundTemp.js +1 -1
  49. package/dist/cjs/src/server/utils/trustProxy.js +446 -0
  50. package/dist/cjs/src/server/utils/trustProxy.js.map +1 -0
  51. package/dist/cjs/src/server/utils/wildcardMatcher.js +92 -0
  52. package/dist/cjs/src/server/utils/wildcardMatcher.js.map +1 -0
  53. package/dist/esm/mods/security/src/algorithms/hash-algorithms.js +1 -1
  54. package/dist/esm/mods/security/src/components/attestation.js +1 -1
  55. package/dist/esm/mods/security/src/components/cache/UFSIMC.js +1 -1
  56. package/dist/esm/mods/security/src/components/cache/cacheSys.utils.js +1 -1
  57. package/dist/esm/mods/security/src/components/cache/index.js +1 -1
  58. package/dist/esm/mods/security/src/components/canary-tokens.js +1 -1
  59. package/dist/esm/mods/security/src/components/fortified-function/index.js +1 -1
  60. package/dist/esm/mods/security/src/components/fortified-function/security/security-handler.js +1 -1
  61. package/dist/esm/mods/security/src/components/memory-hard.js +1 -1
  62. package/dist/esm/mods/security/src/components/post-quantum.js +1 -1
  63. package/dist/esm/mods/security/src/components/secure-array/crypto/ArrayCryptoHandler.js +1 -1
  64. package/dist/esm/mods/security/src/components/secure-array/index.js +1 -1
  65. package/dist/esm/mods/security/src/components/secure-array/types/index.js +1 -1
  66. package/dist/esm/mods/security/src/components/secure-object/encryption/crypto-handler.js +1 -1
  67. package/dist/esm/mods/security/src/components/secure-object/index.js +1 -1
  68. package/dist/esm/mods/security/src/components/secure-serialization.js +1 -1
  69. package/dist/esm/mods/security/src/components/secure-string/advanced/quantum-safe.js +1 -1
  70. package/dist/esm/mods/security/src/components/tamper-evident-logging.js +1 -1
  71. package/dist/esm/mods/security/src/core/crypto.js +1 -1
  72. package/dist/esm/mods/security/src/core/hash/hash-core.js +1 -1
  73. package/dist/esm/mods/security/src/core/hash/hash-security.js +1 -1
  74. package/dist/esm/mods/security/src/core/keys/keys-core.js +1 -1
  75. package/dist/esm/mods/security/src/core/password/index.js +1 -1
  76. package/dist/esm/mods/security/src/core/password/password-algorithms.js +1 -1
  77. package/dist/esm/mods/security/src/core/password/password-core.js +1 -1
  78. package/dist/esm/mods/security/src/core/password/password-generator.js +1 -1
  79. package/dist/esm/mods/security/src/core/password/password-utils.js +1 -1
  80. package/dist/esm/mods/security/src/helpers/Uint8Array.js +2 -2
  81. package/dist/esm/mods/security/src/helpers/Uint8Array.js.map +1 -1
  82. package/dist/esm/mods/security/src/index.js +1 -1
  83. package/dist/esm/mods/security/src/utils/dataConverter.js +2 -2
  84. package/dist/esm/mods/security/src/utils/dataConverter.js.map +1 -1
  85. package/dist/esm/src/cluster/modules/CrossPlatformMemory.js +11 -9
  86. package/dist/esm/src/cluster/modules/CrossPlatformMemory.js.map +1 -1
  87. package/dist/esm/src/encryption/EncryptionService.js +1 -1
  88. package/dist/esm/src/index.js +1 -0
  89. package/dist/esm/src/index.js.map +1 -1
  90. package/dist/esm/src/middleware/built-in/BuiltInMiddleware.js +16 -0
  91. package/dist/esm/src/middleware/built-in/BuiltInMiddleware.js.map +1 -1
  92. package/dist/esm/src/plugins/modules/index.js +1 -1
  93. package/dist/esm/src/server/FastServer.js +18 -1
  94. package/dist/esm/src/server/FastServer.js.map +1 -1
  95. package/dist/esm/src/server/core/HttpServer.js +16 -8
  96. package/dist/esm/src/server/core/HttpServer.js.map +1 -1
  97. package/dist/esm/src/server/core/XyprissApp.js +8 -0
  98. package/dist/esm/src/server/core/XyprissApp.js.map +1 -1
  99. package/dist/esm/src/server/handlers/templates/notFoundTemp.js +1 -1
  100. package/dist/esm/src/server/utils/trustProxy.js +444 -0
  101. package/dist/esm/src/server/utils/trustProxy.js.map +1 -0
  102. package/dist/esm/src/server/utils/wildcardMatcher.js +88 -0
  103. package/dist/esm/src/server/utils/wildcardMatcher.js.map +1 -0
  104. package/dist/index.d.ts +144 -4
  105. package/package.json +3 -3
package/dist/index.d.ts CHANGED
@@ -94,6 +94,56 @@ type NextFunction = (error?: any) => void;
94
94
  */
95
95
  type RouteHandler$1 = (req: XyPrisRequest, res: XyPrisResponse, next?: NextFunction) => void | Promise<void>;
96
96
 
97
+ /**
98
+ * Trust Proxy Type Definitions for XyPriss
99
+ *
100
+ * Comprehensive type definitions for the advanced trust proxy functionality
101
+ */
102
+ /**
103
+ * Predefined network range identifiers
104
+ */
105
+ type PredefinedRange = 'loopback' | 'linklocal' | 'uniquelocal';
106
+ /**
107
+ * Trust proxy configuration value
108
+ *
109
+ * Supports all Express.js trust proxy configurations plus XyPriss enhancements:
110
+ *
111
+ * @example
112
+ * ```typescript
113
+ * // Boolean - trust all proxies or none
114
+ * trustProxy: true
115
+ * trustProxy: false
116
+ *
117
+ * // Predefined ranges
118
+ * trustProxy: 'loopback' // Trust localhost/127.0.0.1 and ::1
119
+ * trustProxy: 'linklocal' // Trust link-local addresses (169.254.0.0/16, fe80::/10)
120
+ * trustProxy: 'uniquelocal' // Trust private networks (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, fc00::/7)
121
+ *
122
+ * // CIDR notation
123
+ * trustProxy: '192.168.0.0/16'
124
+ * trustProxy: '10.0.0.0/8'
125
+ * trustProxy: 'fc00::/7' // IPv6 CIDR
126
+ *
127
+ * // Exact IP addresses
128
+ * trustProxy: '127.0.0.1'
129
+ * trustProxy: '::1'
130
+ *
131
+ * // Array of rules (mixed types supported)
132
+ * trustProxy: ['loopback', 'linklocal', '10.0.0.0/8']
133
+ * trustProxy: ['127.0.0.1', '192.168.1.100', 'uniquelocal']
134
+ *
135
+ * // Number - trust first N hops
136
+ * trustProxy: 1 // Trust first proxy
137
+ * trustProxy: 2 // Trust first 2 proxies in chain
138
+ *
139
+ * // Custom function
140
+ * trustProxy: (ip, hopIndex) => {
141
+ * return ip.startsWith('192.168.') || ip === '127.0.0.1';
142
+ * }
143
+ * ```
144
+ */
145
+ type TrustProxyValue$1 = boolean | PredefinedRange | string | (PredefinedRange | string)[] | number | ((ip: string, hopIndex: number) => boolean);
146
+
97
147
  interface CacheStats {
98
148
  hits: number;
99
149
  misses: number;
@@ -4489,6 +4539,10 @@ declare class XyPrissServer {
4489
4539
  * Add safe JSON middleware to handle circular references
4490
4540
  */
4491
4541
  private addSafeJsonMiddleware;
4542
+ /**
4543
+ * Configure trust proxy settings based on server options
4544
+ */
4545
+ private configureTrustProxy;
4492
4546
  /**
4493
4547
  * Initialize request management middleware for timeouts, network quality, and concurrency control
4494
4548
  */
@@ -5218,7 +5272,7 @@ interface MultiServerConfig {
5218
5272
  /** Server-specific overrides */
5219
5273
  server?: {
5220
5274
  host?: string;
5221
- trustProxy?: boolean;
5275
+ trustProxy?: TrustProxyValue$1;
5222
5276
  jsonLimit?: string;
5223
5277
  urlEncodedLimit?: string;
5224
5278
  enableMiddleware?: boolean;
@@ -5458,7 +5512,7 @@ interface ServerOptions {
5458
5512
  server?: {
5459
5513
  port?: number;
5460
5514
  host?: string;
5461
- trustProxy?: boolean;
5515
+ trustProxy?: TrustProxyValue$1;
5462
5516
  jsonLimit?: string;
5463
5517
  urlEncodedLimit?: string;
5464
5518
  enableMiddleware?: boolean;
@@ -11831,6 +11885,92 @@ declare class PluginDevelopmentHelpers {
11831
11885
  */
11832
11886
  declare function quickServer(port?: number): UltraFastApp;
11833
11887
 
11888
+ /**
11889
+ * Advanced Trust Proxy Implementation for XyPriss
11890
+ *
11891
+ * Supports Express-like trust proxy configurations including:
11892
+ * - Boolean values (true/false)
11893
+ * - String values ('loopback', 'linklocal', 'uniquelocal')
11894
+ * - CIDR notation ('192.168.0.0/16')
11895
+ * - IP addresses ('127.0.0.1')
11896
+ * - Arrays of the above
11897
+ * - Custom functions
11898
+ */
11899
+
11900
+ type TrustProxyValue = boolean | string | string[] | number | ((ip: string, hopIndex: number) => boolean);
11901
+ declare class TrustProxy {
11902
+ private trustProxyFn;
11903
+ constructor(config: TrustProxyValue);
11904
+ /**
11905
+ * Validate and normalize IP address string
11906
+ */
11907
+ private normalizeIP;
11908
+ /**
11909
+ * Convert IPv4 address to number for comparison
11910
+ */
11911
+ private ipv4ToNumber;
11912
+ /**
11913
+ * Check if IPv4 address is in CIDR range
11914
+ */
11915
+ private isIPv4InCIDR;
11916
+ /**
11917
+ * Expand IPv6 address to full form
11918
+ */
11919
+ private expandIPv6;
11920
+ /**
11921
+ * Convert IPv6 address to BigInt for comparison
11922
+ */
11923
+ private ipv6ToBigInt;
11924
+ /**
11925
+ * Check if IPv6 address is in CIDR range
11926
+ */
11927
+ private isIPv6InCIDR;
11928
+ /**
11929
+ * Check if IP address is in CIDR range
11930
+ */
11931
+ private isIPInCIDR;
11932
+ /**
11933
+ * Check if IP matches a single trust proxy rule
11934
+ */
11935
+ private matchesTrustRule;
11936
+ /**
11937
+ * Create a trust proxy function from configuration
11938
+ */
11939
+ private createTrustProxyFunction;
11940
+ /**
11941
+ * Safely parse X-Forwarded-For header
11942
+ */
11943
+ private parseForwardedFor;
11944
+ /**
11945
+ * Get remote address with fallback
11946
+ */
11947
+ private getRemoteAddress;
11948
+ /**
11949
+ * Extract client IP considering trust proxy configuration
11950
+ */
11951
+ extractClientIP(req: IncomingMessage): string;
11952
+ /**
11953
+ * Extract all IPs in the proxy chain
11954
+ */
11955
+ extractProxyChain(req: IncomingMessage): string[];
11956
+ /**
11957
+ * Determine if connection is secure based on trust proxy
11958
+ */
11959
+ isSecureConnection(req: IncomingMessage): boolean;
11960
+ /**
11961
+ * Get protocol considering trust proxy
11962
+ */
11963
+ getProtocol(req: IncomingMessage): string;
11964
+ /**
11965
+ * Get hostname considering trust proxy
11966
+ */
11967
+ getHostname(req: IncomingMessage): string;
11968
+ /**
11969
+ * Validate trust proxy configuration
11970
+ */
11971
+ static validate(config: TrustProxyValue): boolean;
11972
+ }
11973
+
11834
11974
  /***************************************************************************
11835
11975
  * XyPrissJS - Advanced JavaScript Security Library
11836
11976
  *
@@ -11863,5 +12003,5 @@ declare function quickServer(port?: number): UltraFastApp;
11863
12003
  */
11864
12004
  declare function Router(): XyPrissRouter;
11865
12005
 
11866
- export { CachePlugin as CachePluginBase, CompressionPlugin, ConnectionPlugin, DEFAULT_PLUGIN_CONFIG, FileUploadAPI as FLA, FileUploadAPI, JWTAuthPlugin, NetworkCategory, NetworkPlugin, NetworkPluginFactory, NetworkPluginUtils, PERFORMANCE_TARGETS, PLUGIN_SYSTEM_NAME, PLUGIN_SYSTEM_VERSION, PerformanceMonitor, PerformancePlugin as PerformancePluginBase, PluginDevelopmentHelpers, PluginEngine, PluginEventType, PluginPriority, PluginRegistry, PluginSystemFactory, PluginSystemUtils, PluginType, ProxyPlugin, RateLimitPlugin, ResponseTimePlugin, Route, Router, SecurityMiddleware, SecurityPlugin as SecurityPluginBase, SmartCachePlugin, XyPrissRouter, createCacheMiddleware, createCircularRefDebugger, createOptimalCache, createSafeJsonMiddleware, createServer, createServerInstance, expressStringify, fastStringify, initializeFileUpload, quickServer, safeJsonStringify, safeStringify, sendSafeJson, setupSafeJson, uploadAny, uploadArray, uploadFields, uploadSingle };
11867
- export type { BasePlugin, CacheConfig, CachePlugin$1 as CachePlugin, CompressionAlgorithm, CompressionConfig, ConnectionConfig, FailoverConfig, HTTPCacheConfig, HealthCheckConfig, CachePlugin$1 as ICachePlugin, PerformancePlugin$1 as IPerformancePlugin, SecurityPlugin$1 as ISecurityPlugin, LoadBalancingStrategy, MultiServerApp, MultiServerConfig, NativePlugin, NetworkExecutionContext, NetworkExecutionResult, NetworkHealthStatus, NetworkPluginConfig, NetworkSecurityConfig, NextFunction, PerformanceConfig, PerformanceMetrics, PerformancePlugin$1 as PerformancePlugin, PluginConfiguration, PluginEvent, PluginExecutionContext, PluginExecutionResult, PluginExecutionStats, PluginInitializationContext, PluginRegistryConfig, ProxyConfig, RateLimitConfig, RateLimitRule, RateLimitStrategy, RedisConfig, XyPrisRequest as Request, RequestHandler, XyPrisResponse as Response, RouteConfig, RouteOptions, SecurityConfig, SecurityPlugin$1 as SecurityPlugin, ServerOptions, SmartRouteConfig, UltraFastApp, UpstreamServer, WebSocketConfig, MultiServerApp as XyPMS, XyPrisRequest as XyPrissRequest, XyPrisResponse as XyPrissResponse };
12006
+ export { CachePlugin as CachePluginBase, CompressionPlugin, ConnectionPlugin, DEFAULT_PLUGIN_CONFIG, FileUploadAPI as FLA, FileUploadAPI, JWTAuthPlugin, NetworkCategory, NetworkPlugin, NetworkPluginFactory, NetworkPluginUtils, PERFORMANCE_TARGETS, PLUGIN_SYSTEM_NAME, PLUGIN_SYSTEM_VERSION, PerformanceMonitor, PerformancePlugin as PerformancePluginBase, PluginDevelopmentHelpers, PluginEngine, PluginEventType, PluginPriority, PluginRegistry, PluginSystemFactory, PluginSystemUtils, PluginType, ProxyPlugin, RateLimitPlugin, ResponseTimePlugin, Route, Router, SecurityMiddleware, SecurityPlugin as SecurityPluginBase, SmartCachePlugin, TrustProxy, XyPrissRouter, createCacheMiddleware, createCircularRefDebugger, createOptimalCache, createSafeJsonMiddleware, createServer, createServerInstance, expressStringify, fastStringify, initializeFileUpload, quickServer, safeJsonStringify, safeStringify, sendSafeJson, setupSafeJson, uploadAny, uploadArray, uploadFields, uploadSingle };
12007
+ export type { BasePlugin, CacheConfig, CachePlugin$1 as CachePlugin, CompressionAlgorithm, CompressionConfig, ConnectionConfig, FailoverConfig, HTTPCacheConfig, HealthCheckConfig, CachePlugin$1 as ICachePlugin, PerformancePlugin$1 as IPerformancePlugin, SecurityPlugin$1 as ISecurityPlugin, LoadBalancingStrategy, MultiServerApp, MultiServerConfig, NativePlugin, NetworkExecutionContext, NetworkExecutionResult, NetworkHealthStatus, NetworkPluginConfig, NetworkSecurityConfig, NextFunction, PerformanceConfig, PerformanceMetrics, PerformancePlugin$1 as PerformancePlugin, PluginConfiguration, PluginEvent, PluginExecutionContext, PluginExecutionResult, PluginExecutionStats, PluginInitializationContext, PluginRegistryConfig, ProxyConfig, RateLimitConfig, RateLimitRule, RateLimitStrategy, RedisConfig, XyPrisRequest as Request, RequestHandler, XyPrisResponse as Response, RouteConfig, RouteOptions, SecurityConfig, SecurityPlugin$1 as SecurityPlugin, ServerOptions, SmartRouteConfig, TrustProxyValue$1 as TrustProxyValue, UltraFastApp, UpstreamServer, WebSocketConfig, MultiServerApp as XyPMS, XyPrisRequest as XyPrissRequest, XyPrisResponse as XyPrissResponse };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xypriss",
3
- "version": "2.3.3",
3
+ "version": "2.3.5",
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",
@@ -174,7 +174,6 @@
174
174
  "axios": "^1.13.1",
175
175
  "eslint": "^8.37.0",
176
176
  "jest": "^29.5.0",
177
- "nehonix-uri-processor": "^2.3.19",
178
177
  "rimraf": "^4.4.0",
179
178
  "rollup": "^3.29.4",
180
179
  "rollup-plugin-dts": "^6.2.1",
@@ -267,6 +266,7 @@
267
266
  "tweetnacl": "^1.0.3",
268
267
  "ws": "^8.18.2",
269
268
  "xss": "^1.0.15",
270
- "xypriss-security": "^1.1.3"
269
+ "xypriss": "^2.3.3",
270
+ "xypriss-security": "^1.1.10"
271
271
  }
272
272
  }