{"_id":"novaxjs2","_rev":"38-7b74ea72432d12e80c03715cdd3a123a","name":"novaxjs2","dist-tags":{"latest":"9.4.4"},"versions":{"1.0.0":{"name":"novaxjs2","version":"1.0.0","author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@1.0.0","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"b8042600efe46a0207f38c2d74a15f077998efc8","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-1.0.0.tgz","fileCount":2,"integrity":"sha512-zBfXZThX6zu+Fv8DzDSRQuI5yIbG84S7z4pot++OELd6YrzJf1o1nBZYQnIkVyyAMa6DSN200NKEDPTynT7l4Q==","signatures":[{"sig":"MEYCIQDvx9P8wUHiSGPU3hERst58AstE34EmgY9L620YArtL4wIhAIN3lpBxS1FiVdNhCEKoozARdI1cfx0YCNS+VuvHlIaH","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":2915},"main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"10.9.0","directories":{},"_nodeVersion":"23.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_1.0.0_1734899519539_0.8987572354195725","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"novaxjs2","version":"2.0.0","author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@2.0.0","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"7f0d3bebc0d7fbae78ee81996f0ed9987862dfca","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-2.0.0.tgz","fileCount":2,"integrity":"sha512-U8Wu+H44RZyHTl59q09Eh74sx46wPb/ZOvvaPxwCDfXOEiJARZ5nNUHIONF7XCj1P5wW99cZLeHSSjGmplj3pg==","signatures":[{"sig":"MEYCIQDJPOhQJVlbXwbgjW8CEqpjfJYVfj+ZZEM4osQFJ5NLigIhAJdx9OGQVp3RziLj1X2osBdjUGov7T/SliWMe5XcCAIt","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":5212},"main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"10.9.0","directories":{},"_nodeVersion":"23.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_2.0.0_1735046289605_0.4677849518116002","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"novaxjs2","version":"3.0.0","author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@3.0.0","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"c2cfccd54de4e23076956f8e101216a3413252a9","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-3.0.0.tgz","fileCount":2,"integrity":"sha512-o5NjnqpKEmQf6dADdcLx79rvi2cl/hbuj9jQJdN+K0hrxs+MQoO1kM+rkc0tM3yc6LxiuKE489DPkKgPiSA3SA==","signatures":[{"sig":"MEYCIQCrT6uOF6CAxO4+y0lTQf0J0HrhWR6phvXeJhAAua2KrQIhAPAh3mygtI5vuA3XAvtvxkgsqQLZ/v4tpPJ1ey6UVbeW","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6596},"main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"10.9.0","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"23.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_3.0.0_1735478177702_0.8333315601385751","host":"s3://npm-registry-packages-npm-production"}},"3.2.0":{"name":"novaxjs2","version":"3.2.0","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@3.2.0","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"495b4b6750f9cc13d440f5b716c9f684b313c252","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-3.2.0.tgz","fileCount":2,"integrity":"sha512-WxVe0lRkkcRH+Nk5nwHHNf2q6cj/sgNYGMqQfmqaf63H/rHtRZyn9qut4raHMKu59RYDp8S6fgI62vyXm+IlDA==","signatures":[{"sig":"MEUCIQDxPMsTTPLojWfqspzQFvUDk9x2+gBvRKpdhG7MhkQVFAIgZK5FoGsLv5/Iz3NWynMRFf7f13k/Rja4RtcpVMf96g0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6841},"main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"10.9.0","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"23.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_3.2.0_1735479528382_0.9140704508097095","host":"s3://npm-registry-packages-npm-production"}},"4.5.2":{"name":"novaxjs2","version":"4.5.2","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@4.5.2","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"14f09853c7812568d921ec7eca54b0d66de7428e","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-4.5.2.tgz","fileCount":2,"integrity":"sha512-MmMby0ufTnh9X8l5tUQyrPSce/FpGuUH+7MkJpeUpunvB3vuEMi8+qqkskKE/5QIXJFD8zYvRRpq13X+F4185g==","signatures":[{"sig":"MEUCIQD6nXeKEHOEcfZahi3UY66apkLuVnJR/jTA8RPQlAZISgIgK6Wraj15MOki6pwv6s7t+7D7J3zYglaQVatBKEX7xW8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6100},"main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"10.9.0","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"23.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_4.5.2_1735578272620_0.13651176026650225","host":"s3://npm-registry-packages-npm-production"}},"4.5.4":{"name":"novaxjs2","version":"4.5.4","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@4.5.4","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"a133893e9032761e7d2502ea93986b03d171fa4e","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-4.5.4.tgz","fileCount":2,"integrity":"sha512-f2D9v4Oz839OlxMTRBxbXdVMrS8bu2GuuEL4rkIRJdeLkKNW7ok3H1OsrXWZ20USV4iFl0ven/KxJFdwz4kg4A==","signatures":[{"sig":"MEUCICxVjUOsCclaVfICFGjifDOFl7xQ2y6Ok/WBOJbM7yL+AiEA5L4/iE+Bk8RLRTRKJlOYqEAsNry8TyXUKv21EMLRaxQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":6703},"main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"10.9.0","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"23.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_4.5.4_1735680854099_0.505744565714376","host":"s3://npm-registry-packages-npm-production"}},"4.5.7":{"name":"novaxjs2","version":"4.5.7","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@4.5.7","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"d4a2d5ee90ceb126d3e26063135b112867bdfdb3","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-4.5.7.tgz","fileCount":2,"integrity":"sha512-r5x3U+H7ciUsKoB+6BGkcdkRIljsP6KZshusVJLqjTaJPJJtdDS+Rf/U4Ztn56R2JcqNRDTPmKysF6f+yfEyGg==","signatures":[{"sig":"MEUCIQCCmRygsDoQprXnunhun4jAoZvchV+Ww4bdVlrnl3h/8gIgVSzGUqW9iLPyAStFWHTzgUI1BlUMBHbIs+MNdZtAyGM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8232},"main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"10.9.0","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"23.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_4.5.7_1736784825109_0.3443045763870385","host":"s3://npm-registry-packages-npm-production"}},"4.5.8":{"name":"novaxjs2","version":"4.5.8","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@4.5.8","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"c7c1536c05ee2731d7c475db3080ce53c127e772","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-4.5.8.tgz","fileCount":2,"integrity":"sha512-4vRlaQD7PHt1cMkbe0mpYR/gQEqksnRorc0RQP7eXRBecaqDjxWTbknr2Rm6hfc/5nrllMC46G/MHS/MoRIq7A==","signatures":[{"sig":"MEQCIGSrsZG8h0O9qvCHm7jVk/Q22fRZRC/zXT/Lw0JyJk2gAiAv79UtM1kZyJPzRjXQrA3G1QPvSXR584v41704KaKViQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":10035},"main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"10.9.0","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"23.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_4.5.8_1737109670255_0.9133696181325324","host":"s3://npm-registry-packages-npm-production"}},"4.5.9":{"name":"novaxjs2","version":"4.5.9","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@4.5.9","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"b375ff38aeaac9598ac8cb3c12db0d8129db1ab0","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-4.5.9.tgz","fileCount":2,"integrity":"sha512-l/HbssIwI9JvIxp+l+ERJOYdp7Te1rfFBYxBQWM0MgjkKLoLWD5nb3v4an8DRc4yDHLUXkxf8c8XmQ2wEsHa1w==","signatures":[{"sig":"MEYCIQC8EXWgQGv8d8KaIFMDYl1ngJZiWbRLdHDQXZXkwNvi5AIhAMJmDmY9oXtDxebdM3b2CuIInkjKRKPIP3XD4eayCDvX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11221},"main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"10.9.0","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"23.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_4.5.9_1737899464414_0.6458132049490588","host":"s3://npm-registry-packages-npm-production"}},"4.6.0":{"name":"novaxjs2","version":"4.6.0","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@4.6.0","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"6262611d1c20041cae9b86db02492ef86d75d20b","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-4.6.0.tgz","fileCount":2,"integrity":"sha512-rBnu2W8nagCn89GuTBWVZCCK8MV61DWkO3qvxEflz/BwA9aTyE9Hxke3cltayUG+llHqwVt5iEgHe5PpvhFujQ==","signatures":[{"sig":"MEYCIQCMMMviRGOSvKsRux3YZ3kSMRg1Y5zck7smI+lsHAsCqgIhALL871oKvGMvQUkO0D8JY+/0fbV8VoO6Z7al0RmAwCHF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11434},"main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"10.9.0","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"23.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_4.6.0_1739875555107_0.5039546241203603","host":"s3://npm-registry-packages-npm-production"}},"4.6.1":{"name":"novaxjs2","version":"4.6.1","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@4.6.1","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"fc77dc5f36d98ffa5e6fd1aae06111faf21fd68f","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-4.6.1.tgz","fileCount":2,"integrity":"sha512-j06MZ3OrfptLUWCaFWs3orL31AhHQ3z2gARrwpnQ1HOFCMlXBWz8qz2gcSb4jLSkNXRtH/VLP41wTTqYSCe7TQ==","signatures":[{"sig":"MEUCIB5QSB6kyD6ruorFOqi6hTIN+0xb5GPN1TxwXJBfIYs4AiEAxV95MpC41z8e3mDktel0eQy5ThIW/gep8nN+Z8GpnLc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9745},"main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"10.9.0","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"23.0.0","dependencies":{"formidable":"^3.5.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_4.6.1_1742011896702_0.9159101704426853","host":"s3://npm-registry-packages-npm-production"}},"4.6.2":{"name":"novaxjs2","version":"4.6.2","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@4.6.2","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"38ece0540a3de9aa4a21594b5347999efa6c9f62","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-4.6.2.tgz","fileCount":2,"integrity":"sha512-b+sixNXftBMuAJ5pN/BXDNLekf9A61sxsHhdEpZFA32h9yrgwMr6oz4KA+Eu6rnMAJ/xQR+AkevXQitJJ3mvkg==","signatures":[{"sig":"MEUCIQDs9xVkN5ydqwG6JPSlHDA3sAgxrfJiUAuCy8j4b48SJAIgQChd6Cd3tlsYUljv6OSgawHn81qXw/h1MwVJt+njYKk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10295},"main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"10.9.0","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"23.0.0","dependencies":{"formidable":"^3.5.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_4.6.2_1743243678846_0.357815980767223","host":"s3://npm-registry-packages-npm-production"}},"4.6.3":{"name":"novaxjs2","version":"4.6.3","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@4.6.3","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"8355623b2db049c3c3f67eeb84a4cbb269a7d69c","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-4.6.3.tgz","fileCount":2,"integrity":"sha512-6cv6zLOWqp6GTGY8tVofWJZmdUkLPdqHGGFqbDOgGwO/VplmE6GFFbPLLmARQJsHvjJuzL9nI2LZu6/de6e//A==","signatures":[{"sig":"MEUCID3pQbUXTh24uX/i3Aj01X/9Wcuyq5WWtEpOegWWDvSVAiEA72H+FsRkKn/SKhQUC1Iq1RdF6BcRoAE+G8+/vmeNBN4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10301},"main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"10.9.0","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"23.0.0","dependencies":{"formidable":"^3.5.2"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_4.6.3_1743587342417_0.18212696187308186","host":"s3://npm-registry-packages-npm-production"}},"4.6.4":{"name":"novaxjs2","version":"4.6.4","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@4.6.4","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"9ceecfa0f35b137287d2dafbf6e5b1642b519015","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-4.6.4.tgz","fileCount":2,"integrity":"sha512-vf0g45n4JtlK5EKSFAlzdPeKrdsfKvN2A+TiNVRhVL2AYf2whRiH6IWpvjJhFSI6u0rZnwVav9kIdKvBuZ++gw==","signatures":[{"sig":"MEQCIGBhtE3hQz/RfgnyJJII6oMzSpPqDSP1IFyxlHgNoEoOAiAMQZQIxocTNSA7HP0SIun2QV3GPiZ5N/NQLtgmBO4ajA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14216},"main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"10.9.0","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"23.0.0","dependencies":{"formidable":"^3.5.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_4.6.4_1745309127500_0.4963863693850459","host":"s3://npm-registry-packages-npm-production"}},"4.6.5":{"name":"novaxjs2","version":"4.6.5","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@4.6.5","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"655c1d1528b87aa5e039814baf017ab5b6bfc419","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-4.6.5.tgz","fileCount":2,"integrity":"sha512-3tqbxzHlZo38bga0WcolrFAiltttovowAY+DSxMQltG2hQ9x0DGwEKguFFZgnKE7r//HhFeHj3TNIdlj1XbAlA==","signatures":[{"sig":"MEUCIEL338rAwSzmKZix0B0HFyIXyx+U2bbdPdb4jwbHUuG+AiEArmDwRuBXPr6S5qAypzavi3CJWDqQJoJp3DdvIs4FbWk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16415},"main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"10.9.0","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"23.0.0","dependencies":{"formidable":"^3.5.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_4.6.5_1746438661960_0.30344538335025617","host":"s3://npm-registry-packages-npm-production"}},"4.6.6":{"name":"novaxjs2","version":"4.6.6","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@4.6.6","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"b6bedecec2d2ac86fc594ad7ec46602ebfce26b8","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-4.6.6.tgz","fileCount":2,"integrity":"sha512-23bq1+YHAjDW3CAz12eLRO0dsRbaunYXlGjJ9EX7+CV6K0exjhw+IIlrpimj+UzjOofYYoCjMQKwlBiBcL7RcA==","signatures":[{"sig":"MEUCIH4yDwHDQn8t5GZ1JMP9JLr6gqkTv082SCs/7n1FCRnHAiEAvBuzs5idok0Q2SX7wJR+BZGRg2ngAAI/A99mk5OLTi8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":16700},"main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"10.9.0","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"23.0.0","dependencies":{"formidable":"^3.5.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_4.6.6_1747645190532_0.19879526527694757","host":"s3://npm-registry-packages-npm-production"}},"4.6.7":{"name":"novaxjs2","version":"4.6.7","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@4.6.7","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"c83d025545032e24f9a38dff842213d908abc7a1","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-4.6.7.tgz","fileCount":2,"integrity":"sha512-lC/gMW4CK2cGOUNond1PGYh2Y/rFn3mkEanBEpk7DgaCWY8c7janeE0er+KzL9kqFa4htjJlF7b5CNVIaeSLmw==","signatures":[{"sig":"MEQCIB6hrUiLUNYfh9WIQbQcVMyTuv0Va2ymmAAVZGKQGpJBAiBgHUCFG2jZiO/6/3P2iHDIM5kcw30/OF83gJMPUxMbjQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":17674},"main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"11.4.1","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"23.0.0","dependencies":{"formidable":"^3.5.3"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_4.6.7_1749286516753_0.8681468387471478","host":"s3://npm-registry-packages-npm-production"}},"5.0.0":{"name":"novaxjs2","version":"5.0.0","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@5.0.0","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"f817090ebc702055189b035ba3ee5616f190b464","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-5.0.0.tgz","fileCount":3,"integrity":"sha512-/UZgzYA84p3Lcize19gB+ep7tDW12nYgxN6UYYvt6pOtO8CUZsQukDKK4Ph4/kkBfKnKgmM60t515lYB5q+Vsw==","signatures":[{"sig":"MEUCIQDEiU+uzTmfz4wN2GHVotI5s00ZRSMnc59ZFEYX0oWuGgIgRQmU8XfYizfvfiPqaV4tKnltl6Xb5NhSMTjTF+PCgSE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":28096},"main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","actor":{"name":"cabdi_waaxid","type":"user","email":"cabdiwaaxidsiciid100@gmail.com"},"email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"11.4.1","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"23.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_5.0.0_1751799773873_0.32064028072852757","host":"s3://npm-registry-packages-npm-production"}},"5.1.0":{"name":"novaxjs2","version":"5.1.0","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@5.1.0","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"9000d67816b87921307646efb0ef979a37099887","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-5.1.0.tgz","fileCount":4,"integrity":"sha512-S3r50Xu4XxmklSB4cF0bqa8OAnZoUC4k2JTwEsStXvrSqXVqRxSs3EXUBJ9h6BT07Mu/AbKemJUNT1McOaM3yQ==","signatures":[{"sig":"MEYCIQCLgtpTLzxUpXS7wSddrwQ9XJaDgVLaGe0Hk/t7MsY06gIhAIrvz+FZkt/9CCA12rQbVQ0nv7BAewKVMbj8i8E0x6AJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32142},"main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1","start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","actor":{"name":"cabdi_waaxid","type":"user","email":"cabdiwaaxidsiciid100@gmail.com"},"email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"11.4.1","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"23.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_5.1.0_1751800266702_0.3825510623561428","host":"s3://npm-registry-packages-npm-production"}},"6.0.0":{"name":"novaxjs2","version":"6.0.0","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight","flexible","extensible","http server","routing","middleware","static files","dynamic web applications","node framework","node web framework","nodejs","nodejs framework","nodejs web framework","nodejs api","nodejs server","nodejs routing","nodejs middleware","nodejs static files"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@6.0.0","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"2110d910dfda42f79094a68da334c8907726ea82","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-6.0.0.tgz","fileCount":5,"integrity":"sha512-HiugO2o5fGP+DUV0KZW1m80Z4SZZQbppW6aYWf/xybkLXsLhnj9ph2aA/zINSwWZJjoeQkitGCtaU9v4nNqryw==","signatures":[{"sig":"MEUCIQDvLjgtV1jC00GQckYzxKtYB39GlmBfcX6j+3LfBQWDwwIgItRS+T5V60J0gjzeY9hm7lvhV0JdVBlWB1bOmX47EB0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":40421},"main":"index.js","scripts":{"start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","actor":{"name":"cabdi_waaxid","type":"user","email":"cabdiwaaxidsiciid100@gmail.com"},"email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"11.4.1","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"23.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_6.0.0_1752124666324_0.9545749692347407","host":"s3://npm-registry-packages-npm-production"}},"7.0.0":{"name":"novaxjs2","version":"7.0.0","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight","flexible","extensible","http server","routing","middleware","static files","dynamic web applications","node framework","node web framework","nodejs","nodejs framework","nodejs web framework","nodejs api","nodejs server","nodejs routing","nodejs middleware","nodejs static files"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@7.0.0","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"fab6970120457b0418d45c304749aaf0f97c4a28","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-7.0.0.tgz","fileCount":5,"integrity":"sha512-P2Y+T3IHserN5SXe2SbZvBTjvoqj2fQq2Ib07PiWrThlL2a/eN+JcBESNxVTBIIuLFoD+tlBePluhIxNjwZ1zQ==","signatures":[{"sig":"MEQCICZ825S1/+n2q3TY7S3rT0zPrwKfItpQxjzB4ECoQ+5BAiBsSKjkRv52Z7QYPsMJTsT6FYSZwauHA/sHZ0H2Te0YHQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":46441},"main":"index.js","scripts":{"start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","actor":{"name":"cabdi_waaxid","type":"user","email":"cabdiwaaxidsiciid100@gmail.com"},"email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"11.4.1","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"23.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_7.0.0_1752172984246_0.4128992960861897","host":"s3://npm-registry-packages-npm-production"}},"7.1.0":{"name":"novaxjs2","version":"7.1.0","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight","flexible","extensible","http server","routing","middleware","static files","dynamic web applications","node framework","node web framework","nodejs","nodejs framework","nodejs web framework","nodejs api","nodejs server","nodejs routing","nodejs middleware","framework","nodejs static files"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@7.1.0","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"213ccd776196e1ceb83b477bc8222340cb31696c","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-7.1.0.tgz","fileCount":5,"integrity":"sha512-ixKIiCcDvDE6vX1wV0gS9+pOPfHuaX0hjmOlsl2yo9YVbWAlHxz50eXX4B3xe6hqvzy4kwvJsisg/ZpRuHYlww==","signatures":[{"sig":"MEYCIQC/dVihMfcJj90OorEMy0KjVfOCG2DeUY0geUmLk3JnVAIhAPzTdckdJKRwJFZ97+fsNMMteiKZWGLKAOZtJZgyl6ew","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":52679},"main":"index.js","scripts":{"start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"11.4.1","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"23.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_7.1.0_1752916047709_0.1767519812307079","host":"s3://npm-registry-packages-npm-production"}},"8.0.0":{"name":"novaxjs2","version":"8.0.0","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight","flexible","extensible","http server","routing","middleware","static files","dynamic web applications","node framework","node web framework","nodejs","nodejs framework","nodejs web framework","nodejs api","nodejs server","nodejs routing","nodejs middleware","framework","nodejs static files"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@8.0.0","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"fcaf7ce8fa67740c54f132727155fa246a125370","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-8.0.0.tgz","fileCount":5,"integrity":"sha512-F6McaGEGt62ZRdAHKr2JEYAK3uKeabHEXwmRzV2HsjcyN9n9Y2NxeQ0McAvx6MWaFYWTBGGnDg9SpcrIzan+5Q==","signatures":[{"sig":"MEQCIBNzXEvACa1IEAZ1Ji9IzdgNxTNCAI4NfRuSf1yUpsKcAiBifCL2iN/FkYP7+wMr+Gq1X8I1eoOwCGpfFe1VS7Ps0w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":68402},"main":"index.js","scripts":{"start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"11.4.1","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"23.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_8.0.0_1754225777055_0.2793299185575029","host":"s3://npm-registry-packages-npm-production"}},"8.1.0":{"name":"novaxjs2","version":"8.1.0","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight","flexible","extensible","http server","routing","middleware","static files","dynamic web applications","node framework","node web framework","nodejs","nodejs framework","nodejs web framework","nodejs api","nodejs server","nodejs routing","nodejs middleware","framework","nodejs static files"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@8.1.0","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"2bd28aa114075a02c644711f4319b8c79b2d2a85","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-8.1.0.tgz","fileCount":5,"integrity":"sha512-d1/orKcZ6IYWkkSNr1nBwpNKLTZNhMlKmDRxQO7qMz61aG3T+rh35rXcFMWBOAFYBOEAFnbjBwxtUvIwQqW96w==","signatures":[{"sig":"MEUCIHWFiA0qO2EowG9Tb60wS0iGnenpx4tjhAAq2nilWmHXAiEAyeCbEKfXIo4QotLxd3sYLVKFpw6ig9tWs3tEqU9shtM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":78377},"main":"index.js","scripts":{"start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"11.4.1","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"23.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_8.1.0_1754900249865_0.8412909795520755","host":"s3://npm-registry-packages-npm-production"}},"8.1.2":{"name":"novaxjs2","version":"8.1.2","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight","flexible","extensible","http server","routing","middleware","static files","dynamic web applications","node framework","node web framework","nodejs","nodejs framework","nodejs web framework","nodejs api","nodejs server","nodejs routing","nodejs middleware","framework","nodejs static files"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@8.1.2","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"3e800e6b00fcefc83ee2d8ae45b7d32597fec6c1","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-8.1.2.tgz","fileCount":5,"integrity":"sha512-ByQ5u0c9c5Hw20BHqiU6ijYwCkx5dHtCSL0/DdeFKutT66Vq7zfOIvG1lkGlF1e+5lkfLlC23xMO3/C8DXWk3Q==","signatures":[{"sig":"MEQCIE9M8kNLr0ww9rIHO2j9pFMkOq7seOLJfBWKiqBcbWcuAiBm8BMLhPJElOtvVLU8fjmEZSyLj7w/te/Iyk09yf3v2w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":79328},"main":"index.js","scripts":{"start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"11.4.1","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"23.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_8.1.2_1754904716410_0.641308004604183","host":"s3://npm-registry-packages-npm-production"}},"8.1.4":{"name":"novaxjs2","version":"8.1.4","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight","flexible","extensible","http server","routing","middleware","static files","dynamic web applications","node framework","node web framework","nodejs","nodejs framework","nodejs web framework","nodejs api","nodejs server","nodejs routing","nodejs middleware","framework","nodejs static files"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@8.1.4","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"51ec203615d4e8194593ce8fcda9eae14626c90b","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-8.1.4.tgz","fileCount":5,"integrity":"sha512-VXDEENkaDjdGjeVI0aZrr0l+lcyHgmZLJ+Q+vW1tBP5aermYOH7Y9I9o+cys6qKBhECDE3/7efvNiXJ+RLZlkw==","signatures":[{"sig":"MEQCIEZCDq7Pd4zO3wzc42k9u56dlF9YVYkkr1q812QhOo3qAiBMK2BIOsm1/+XM25I/WRSh2qx0TVSbPt6fH7i4+GUUtA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80267},"main":"index.js","scripts":{"start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"11.4.1","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"23.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_8.1.4_1754909447250_0.3528696698956004","host":"s3://npm-registry-packages-npm-production"}},"8.1.5":{"name":"novaxjs2","version":"8.1.5","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight","flexible","extensible","http server","routing","middleware","static files","dynamic web applications","node framework","node web framework","nodejs","nodejs framework","nodejs web framework","nodejs api","nodejs server","nodejs routing","nodejs middleware","framework","nodejs static files"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@8.1.5","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"c846c05a3838b174178bd44e1df4cf338fc1feb0","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-8.1.5.tgz","fileCount":5,"integrity":"sha512-mKzXOkhRGsQMVJEyUfEC9Fv8kuJqnP3HsRYUnGk3ji8zPeq0D5tVkJMDzhGj5Fq/Icr7ZaN0Q+40uG2d1ZE4RQ==","signatures":[{"sig":"MEYCIQC41JbdzFk/BIkkAHancYix9MYxf0axXACePJlxVqMe7AIhALAXQHQs5udRm8KBLZ38lG7lWFR3HLXqT+xwqcgQML0P","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":80261},"main":"index.js","scripts":{"start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"11.4.1","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"23.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_8.1.5_1754910171825_0.42747387113937596","host":"s3://npm-registry-packages-npm-production"}},"8.2.0":{"name":"novaxjs2","version":"8.2.0","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight","flexible","extensible","http server","routing","middleware","static files","dynamic web applications","node framework","node web framework","nodejs","nodejs framework","nodejs web framework","nodejs api","nodejs server","nodejs routing","nodejs middleware","framework","nodejs static files"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@8.2.0","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"a1b062e0c028b83382851e6a94a57f136ab8c359","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-8.2.0.tgz","fileCount":5,"integrity":"sha512-EIq4cE2H5Er3araIqVKdUG5z54Ome7HbH9w1k4RCE42Zvh4RgP38XctlzAApiGHdOJP8L0FkC9sV/N2gizvrjQ==","signatures":[{"sig":"MEUCIHtLVQ0DtziSNZJjC640hsQ8n2vXQCWB6Z6AUkhQTZmsAiEA2ufUUzVjYVAYQvn53EKIvWzWL2tYKVEUltib2y+0xCs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":81863},"main":"index.js","scripts":{"start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"11.4.1","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"23.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_8.2.0_1755435821488_0.7743715210456299","host":"s3://npm-registry-packages-npm-production"}},"8.3.0":{"name":"novaxjs2","version":"8.3.0","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight","flexible","extensible","http server","routing","middleware","static files","dynamic web applications","node framework","node web framework","nodejs","nodejs framework","nodejs web framework","nodejs api","nodejs server","nodejs routing","nodejs middleware","framework","nodejs static files"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@8.3.0","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"2443155e59c9ac6b7a0e0b5435513279fdcdfea2","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-8.3.0.tgz","fileCount":5,"integrity":"sha512-WG8oKI9KboITH2LtE4Z0xgu2tTPzsCJynZFnwOihD8cXE9HbQyZ2qCLEhAPL9gomf4zAwDHc+PoxTYcUChPMMQ==","signatures":[{"sig":"MEYCIQCTsxOy90B1h76SQCmwjsRJlvckB6g314NrlnraicK2ugIhAPnLrWvGfSZn7+iIvgGFzF3kB0GRvKJAh776saf996aV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":85443},"main":"index.js","scripts":{"start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"11.4.1","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"23.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_8.3.0_1755757332420_0.23737375811764028","host":"s3://npm-registry-packages-npm-production"}},"9.0.0":{"name":"novaxjs2","version":"9.0.0","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight","flexible","extensible","http server","routing","middleware","static files","dynamic web applications","node framework","node web framework","nodejs","nodejs framework","nodejs web framework","nodejs api","nodejs server","nodejs routing","nodejs middleware","framework","nodejs static files"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@9.0.0","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"dc88699bf868972c669ddf1bdf23a901bccff23c","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-9.0.0.tgz","fileCount":6,"integrity":"sha512-RrIaMEMstXZvxCZLSg3WZ5pIfFoPufazkpKGPtgCVV8oSbaeCW+B9r2yAWvrU/1XOEavpQOE27NSZzjsL58yiw==","signatures":[{"sig":"MEYCIQDuHEyuZBIbnX4/MiYC1xdh3sbhXd2OyUHssSt7d2H+XgIhALbwJrwl6/QgBTQs2Aj0gYIKKzSzYrOWhM/cHihH7rLO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93520},"main":"index.js","gitHead":"6bd7785e0e2c2292fa55881d3441a6f9e123957b","scripts":{"start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"11.4.1","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"23.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_9.0.0_1757315941868_0.7902511141740494","host":"s3://npm-registry-packages-npm-production"}},"9.0.1":{"name":"novaxjs2","version":"9.0.1","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight","flexible","extensible","http server","routing","middleware","static files","dynamic web applications","node framework","node web framework","nodejs","nodejs framework","nodejs web framework","nodejs api","nodejs server","nodejs routing","nodejs middleware","framework","nodejs static files"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@9.0.1","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"f1d08cd115fe663d1d1a69770000988256684eb5","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-9.0.1.tgz","fileCount":6,"integrity":"sha512-eS2Ho3SAldaqVRNVU6zH/AZFG2GvHNrl5uoihGgHgCqnpJrcJZzI66dFRKxUo0lfBmnpdSNZQYDthlVHzsq31Q==","signatures":[{"sig":"MEYCIQDSlHbYCbJiJaeMYpwUBSge32lqTRvBErecTxRs+p/xaQIhAMoewf5wOtmt/Xewxegec5GRq4m2vUoiihSPWydBzoH2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":93314},"main":"index.js","gitHead":"9fd029c49d7d5429be629df42e720cbd83f65c5f","scripts":{"start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"11.4.1","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"23.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_9.0.1_1757316695052_0.638207150876122","host":"s3://npm-registry-packages-npm-production"}},"9.3.4":{"name":"novaxjs2","version":"9.3.4","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight","flexible","extensible","http server","routing","middleware","static files","dynamic web applications","node framework","node web framework","nodejs","nodejs framework","nodejs web framework","nodejs api","nodejs server","nodejs routing","nodejs middleware","framework","nodejs static files"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@9.3.4","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"efbf63e2c54b2bcc9d2e95df2bc91acab8d1157d","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-9.3.4.tgz","fileCount":6,"integrity":"sha512-h4JMtGaLpIiyhmX1QSgv6kX9E8w5nYTCAC7RDrp9M9teXCMS72CrxPotqsHJvPpt8vXQYUjRh55LqSG/UFvn6w==","signatures":[{"sig":"MEUCIQDzU/TBdPgTahJ/AS67QIL7/D8OkF3GuYdGHk3UzTJI3wIgEwyC2l3cDR2lKMUibmeUAtSsDg0IjztjGJGwo1UgrVk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104801},"main":"index.js","gitHead":"e5812f57dcf6867417575c1ec08397024f2bfb43","scripts":{"start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"11.4.1","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"23.0.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_9.3.4_1757582053689_0.7967050166406808","host":"s3://npm-registry-packages-npm-production"}},"9.4.1":{"name":"novaxjs2","version":"9.4.1","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight","flexible","extensible","http server","routing","middleware","static files","dynamic web applications","node framework","node web framework","nodejs","nodejs framework","nodejs web framework","nodejs api","nodejs server","nodejs routing","nodejs middleware","framework","nodejs static files"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@9.4.1","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"74448d0f1588aa0711e46921d5143c1a2c10fe4a","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-9.4.1.tgz","fileCount":6,"integrity":"sha512-Dp+/EEOlWuIuLuwkKE2MZLl6Kgx2ae2nnRzrnaTTrTDIhHuYpBV0XXc8CYReCF16sO42zUofmMGBjhKyWpsVug==","signatures":[{"sig":"MEYCIQDcgJVwH1EWsokPmlOpf/s1ejWPZBechqp2XrYCC8GF1gIhAIPCmwGJvogQV35bIw5SaWg/nxJ/4XvH7HjpbNN91KEV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113097},"main":"index.js","scripts":{"start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"11.5.1","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"24.7.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_9.4.1_1766678216629_0.2438794396621553","host":"s3://npm-registry-packages-npm-production"}},"9.4.2":{"name":"novaxjs2","version":"9.4.2","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight","flexible","extensible","http server","routing","middleware","static files","dynamic web applications","node framework","node web framework","nodejs","nodejs framework","nodejs web framework","nodejs api","nodejs server","nodejs routing","nodejs middleware","framework","nodejs static files"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@9.4.2","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"c4a5880ce95db699fe373de45427d1fdcfde3cca","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-9.4.2.tgz","fileCount":6,"integrity":"sha512-Nn72w91S170/TwFF5xUHIEBx2ecXRuEhJ5lCdsl7YXsfwDMd2zHh1fHOnRV2g9/Yu9U0us4yd00ey36J885PIg==","signatures":[{"sig":"MEUCIQDo96RlKqkrCVbv8xH8BvdTdG50M0FPQCVhLbXbRUDQpQIgONKjAQMZQZ1aFLWo8pC2DJqa/2OREk497AfsgeJhF5A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":115115},"main":"index.js","scripts":{"start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"11.6.2","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_9.4.2_1769427946218_0.08876981893208646","host":"s3://npm-registry-packages-npm-production"}},"9.4.3":{"name":"novaxjs2","version":"9.4.3","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight","flexible","extensible","http server","routing","middleware","static files","dynamic web applications","node framework","node web framework","nodejs","nodejs framework","nodejs web framework","nodejs api","nodejs server","nodejs routing","nodejs middleware","framework","nodejs static files"],"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","_id":"novaxjs2@9.4.3","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"dist":{"shasum":"2b770bff17aa16f11c388d7ad5b7ef97ad8e5783","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-9.4.3.tgz","fileCount":6,"integrity":"sha512-lZp2uUUpmRHLDkIhijbzCzbc9xOKDHNuNUUNsDqfaOdiQeFTl/MWxSSAmQM+SgcnkIEEcPoc+cOy1mCFtsJBEg==","signatures":[{"sig":"MEUCIQDY4jbnD+R28gIpige2myQnF2TceIVYbyeAMDgWmwZzmQIgUsffu/R036MNg/fXdqTf6NswbVaDAaoXYhtLgHn0FgI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":116167},"main":"index.js","scripts":{"start":"node index.js"},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"_npmVersion":"11.14.1","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","directories":{},"_nodeVersion":"25.8.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/novaxjs2_9.4.3_1779259620363_0.38714611828037726","host":"s3://npm-registry-packages-npm-production"}},"9.4.4":{"name":"novaxjs2","version":"9.4.4","main":"index.js","scripts":{"start":"node index.js"},"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight","flexible","extensible","http server","routing","middleware","static files","dynamic web applications","node framework","node web framework","nodejs","nodejs framework","nodejs web framework","nodejs api","nodejs server","nodejs routing","nodejs middleware","framework","nodejs static files"],"_id":"novaxjs2@9.4.4","_nodeVersion":"25.8.2","_npmVersion":"11.14.1","dist":{"integrity":"sha512-oQXGH+1EoZHAAUfzVhiM6fAN0ieHdTjMNVgKiUGQg8G1DnUGLztkSXaBLC9wkp40nnEiymxnQT+atJ9XFqxvNA==","shasum":"d78fd5bfc142efbe9b5519d914485fd28db6abd7","tarball":"https://registry.npmjs.org/novaxjs2/-/novaxjs2-9.4.4.tgz","fileCount":6,"unpackedSize":116698,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCd+AF9wZNz48t1XED1vomw1PsiPFRiKnZsRvkwHtbmnQIhAJz72fsxujLTI/ddTzGjUiN4pZ1aICcayjjtuuTVbOOC"}]},"_npmUser":{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"},"directories":{},"maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/novaxjs2_9.4.4_1779705900215_0.685434078313419"},"_hasShrinkwrap":false}},"time":{"created":"2024-12-22T20:31:59.538Z","modified":"2026-05-25T10:45:00.889Z","1.0.0":"2024-12-22T20:31:59.700Z","2.0.0":"2024-12-24T13:18:09.798Z","3.0.0":"2024-12-29T13:16:17.885Z","3.2.0":"2024-12-29T13:38:48.567Z","4.5.2":"2024-12-30T17:04:32.821Z","4.5.4":"2024-12-31T21:34:14.255Z","4.5.7":"2025-01-13T16:13:45.287Z","4.5.8":"2025-01-17T10:27:50.414Z","4.5.9":"2025-01-26T13:51:04.635Z","4.6.0":"2025-02-18T10:45:55.295Z","4.6.1":"2025-03-15T04:11:36.875Z","4.6.2":"2025-03-29T10:21:19.010Z","4.6.3":"2025-04-02T09:49:02.675Z","4.6.4":"2025-04-22T08:05:27.663Z","4.6.5":"2025-05-05T09:51:02.119Z","4.6.6":"2025-05-19T08:59:50.716Z","4.6.7":"2025-06-07T08:55:16.945Z","5.0.0":"2025-07-06T11:02:54.042Z","5.1.0":"2025-07-06T11:11:06.899Z","6.0.0":"2025-07-10T05:17:46.511Z","7.0.0":"2025-07-10T18:43:04.421Z","7.1.0":"2025-07-19T09:07:27.878Z","8.0.0":"2025-08-03T12:56:17.242Z","8.1.0":"2025-08-11T08:17:30.082Z","8.1.2":"2025-08-11T09:31:56.593Z","8.1.4":"2025-08-11T10:50:47.486Z","8.1.5":"2025-08-11T11:02:51.983Z","8.2.0":"2025-08-17T13:03:41.669Z","8.3.0":"2025-08-21T06:22:12.607Z","9.0.0":"2025-09-08T07:19:02.050Z","9.0.1":"2025-09-08T07:31:35.230Z","9.3.4":"2025-09-11T09:14:13.860Z","9.4.0":"2025-10-14T04:53:54.570Z","9.4.1":"2025-12-25T15:56:56.768Z","9.4.2":"2026-01-26T11:45:46.365Z","9.4.3":"2026-05-20T06:47:00.497Z","9.4.4":"2026-05-25T10:45:00.364Z"},"author":{"name":"Cabdi Waaxid Siciid"},"license":"ISC","keywords":["novaxjs2","nova","nova framework","api","novajs","node.js","web framework","lightweight","flexible","extensible","http server","routing","middleware","static files","dynamic web applications","node framework","node web framework","nodejs","nodejs framework","nodejs web framework","nodejs api","nodejs server","nodejs routing","nodejs middleware","framework","nodejs static files"],"description":"Novaxjs2 is a lightweight, flexible, and extensible web framework built for Node.js, designed to simplify the process of building and serving dynamic web applications. With a focus on simplicity and performance, Novaxjs2 provides a straightforward API tha","maintainers":[{"name":"cabdi_waaxid","email":"cabdiwaaxidsiciid100@gmail.com"}],"readme":"# NovaxJS - Modern Web Framework for Node.js (v9.4.4)\n\n![NovaxJS Logo](https://www.novaxjs2.site/logo.png)\n\n## 🚀 Introduction\n\nNovaxJS is a lightweight, high-performance web framework for Node.js designed for building modern web applications and APIs. With its minimalist design and powerful features, NovaxJS provides developers with an elegant solution for server-side development.\n\n## ✨ Features\n\n- **Blazing Fast** - Optimized for performance with low memory footprint\n- **Intuitive Routing** - Simple yet powerful route definitions with parameter support (named regex groups)\n- **Advanced Template Engine** - Enhanced HTML templates with new @ syntax including @include directives, destructuring, and function calls\n- **File Include Support** - New `@include('file.html')` and `@include('file.html', {data})` syntax\n- **Destructuring Support** - Object and array destructuring in `@var` declarations\n- **Function Call Support** - Direct function calls in templates with `@functionName(args)`\n- **Advanced File Handling** - Robust file uploads with configurable limits and validation (maxSize in MB)\n- **Middleware Pipeline** - Flexible middleware architecture with error handling (`useMiddleware`, `useErrorMiddleware`)\n- **Static File Serving** - Efficient static file delivery with automatic MIME type detection and static path prefix stripping\n- **CORS Support** - Configurable CORS policies with preflight handling, now with **dynamic origin checking** (`cors` method)\n- **Plugin System** - Extensible architecture for adding framework features\n- **Comprehensive Error Handling** - Custom error pages and error middleware stack (`on(statusCode, handler)` for 400–599)\n- **Request Parsing** - Built-in support for JSON, form-data, and urlencoded bodies\n- **Response Helpers** - Convenient methods for common response patterns (`res.set`, `res.status`, `res.redirect`, `res.cookie`)\n- **Cookie Management** - Built-in cookie parsing and manipulation (`req.cookies`, `res.cookie`, `req.clearCookie`)\n- **Global Styles/JS** - Inject CSS and JavaScript globally across responses\n- **Custom Error Pages** - Define handlers for specific HTTP status codes\n- **File Downloads** - Easy file sending with proper content-type handling\n- **Request Utilities** - IP detection, protocol detection, and full URL construction\n- **HTML Minifier** - Minification for HTML, CSS, and JavaScript output (enabled by default)\n- **View Helpers** - Register custom helpers for templates\n- **Router Modularization** - Use external router modules with `useRouter()` method\n\n## What's New in v9.4.4\n\n### 🐛 Bug Fix\n- **Fixed `sendFile()` crash** - Was throwing \"Error reading file\" when trying to send files\n\n### The Fix\nChanged `res.statusCode || 200` to `response.statusCode || 200` in the file reading logic.\n\n### Before (v9.4.3)\n```javascript\napp.get('/file', (req, res) => {\n  app.sendFile('./document.pdf', res); // ❌ Throws \"Error reading file\"\n});\n```\n\n### After (v9.4.4)\n```javascript\napp.get('/file', (req, res) => {\n  app.sendFile('./document.pdf', res); // ✅ Works perfectly\n});\n```\n\n\n## 🔄 What's New in v9.4.3\n\n### 🐛 Bug Fixes\n- **Fixed `res.status()` method**: Status codes now properly apply to responses instead of always defaulting to 200\n- Improved response header handling for status codes\n\n### 📝 Correct Usage Example\n\n```javascript\n// Chain with json\napp.get('/created', (req, res) => {\n  res.status(201).json({ message: 'Resource created' });\n});\n\n// Chain with send\napp.get('/not-found', (req, res) => {\n  res.status(404).send('<h1>Page Not Found</h1>');\n});\n\n// Set status separately\napp.get('/unauthorized', (req, res) => {\n  res.status(401);\n  res.json({ error: 'Unauthorized access' });\n});\n\n// Status code examples\nres.status(200).json({ data: users });  // OK\nres.status(201).send('Created');         // Created\nres.status(204).send();                  // No Content\nres.status(400).json({ error: 'Bad request' });\nres.status(401).send('Unauthorized');\nres.status(404).send('Not found');\nres.status(500).send('Server error');\n```\n\n## 🔄 What's New in v9.4.2\n\n### 🆕 Dynamic CORS Origin Checking\n- **Function-Based Origins**: Now you can pass a function to `app.cors()` to dynamically determine allowed origins\n- **Flexible Logic**: Make CORS decisions based on origin, request headers, or any custom logic\n- **Request Context**: The callback function receives both the origin and the full request object\n- **Backward Compatible**: All existing static origin configurations continue to work\n\n### 🔧 Smart Minification\n- **Selective Minification**: Skip minification for specific code blocks using `<!-- novax:skip -->` markers\n- **Multi-format Support**: Skip markers work for HTML, CSS, and JavaScript\n- **Preserved Formatting**: Code within skip blocks maintains original formatting and whitespace\n- **Flexible Skip Syntax**: Both block-level and inline skip markers available\n\n## 📦 Installation\n\n```bash\nnpm install novaxjs2\n```\n\n## 🎯 Quick Start\n\n```javascript\nconst Nova = require('novaxjs2');\nconst app = new Nova();\n\n// Basic route with HTML response\napp.get('/', (req, res) => {\n  res.send('<h1>Welcome to NovaxJS</h1>');\n});\n\n// Route with middleware\napp.get('/protected', authenticate, (req, res) => {\n  res.send('<h1>Protected Content</h1>');\n});\n\n// Route group\napp.group('/api', (api) => {\n  api.get('/users', getUsers);\n  api.post('/users', createUser);\n});\n\n// Start server with callback\napp.at(3000, () => {\n  console.log('Server running on http://localhost:3000');\n});\n```\n\n## 🆕 New API Highlights\n\n### Dynamic CORS with Function-Based Origins\n\n**Dynamic origin checking with function:**\n```javascript\napp.cors({\n  origins(origin, req) {\n    if (!origin) return false;\n    \n    // Allow specific domains\n    if (origin === \"https://whoappsomali.site\") return true;\n    \n    // Allow all subdomains of a domain\n    if (origin.endsWith(\".small-pencil.website\")) return true;\n    \n    // Allow based on some request property\n    if (req.headers['x-custom-header'] === 'special') return true;\n    \n    // Allow localhost in development\n    if (process.env.NODE_ENV === 'development' && origin.includes('localhost')) {\n      return true;\n    }\n    \n    return false;\n  },\n  methods: [\"GET\", \"POST\", \"PUT\", \"DELETE\"],\n  headers: [\"Content-Type\", \"Authorization\"],\n  credentials: true\n});\n```\n\n**Short form with just a function:**\n```javascript\napp.cors((origin, req) => {\n  // Return true to allow, false to deny\n  return origin === \"https://allowed-domain.com\";\n});\n```\n\n**Traditional static origins (still supported):**\n```javascript\napp.cors({\n  origins: ['https://example.com', 'https://api.example.com'],\n  methods: ['GET', 'POST'],\n  credentials: true\n});\n```\n\n### Smart Minification with skip markers\n\n**Skip minification for specific HTML blocks:**\n```html\n<!-- This will be minified normally -->\n<div class=\"normal-content\">\n  <p>This content will be minified.</p>\n</div>\n\n<!-- novax:skip-start -->\n<!-- This entire block will NOT be minified -->\n<div class=\"preformatted\">\n  <!-- Comments remain intact -->\n  <pre>\n    This preformatted text\n    keeps its original spacing\n    and line breaks exactly as written.\n  </pre>\n  \n  <code>\n    // JavaScript code example\n    function example() {\n      const x = 10;\n      const y = 20;\n      return x + y;\n    }\n  </code>\n</div>\n<!-- novax:skip-end -->\n\n<!-- This will be minified again -->\n<p>Back to normal minification</p>\n```\n\n**Inline skip markers:**\n```html\n<!-- novax:skip -->\n<!-- This section preserves formatting -->\n<div class=\"preserve-me\">\n    <p>Multi-line\n       content with\n       intentional spacing.</p>\n</div>\n<!-- novax:unskip -->\n```\n\n**CSS skip blocks:**\n```css\n/* This CSS will be minified */\nbody {\n  margin: 0;\n  padding: 0;\n}\n\n/* novax:skip-start */\n/* This CSS block won't be minified */\n/* Keep important formatting for readability */\n.header {\n    background: linear-gradient(to right, #ff0000, #00ff00);\n    /* Complex calculations that should remain readable */\n    padding: calc(20px + 10%);\n    margin: 10px 20px 30px 40px;\n}\n/* novax:skip-end */\n\n/* Back to normal minification */\n.footer {\n  background: #000;\n}\n```\n\n**JavaScript skip blocks:**\n```javascript\n// This will be minified\nfunction minifiedFunc(x) {\n  return x * 2;\n}\n\n/* novax:skip-start */\n// This code won't be minified\n// Keep complex algorithms readable\nfunction complexCalculation(a, b, c) {\n    // Multi-step calculation\n    const step1 = a * b;\n    const step2 = step1 / c;\n    const step3 = Math.sqrt(step2);\n    \n    // Important comments preserved\n    return step3;\n}\n/* novax:skip-end */\n\n// Back to minification\nconst anotherFunc = y => y + 1;\n```\n\n\n### Enhanced Template Syntax\n\n**New @ syntax in HTML templates with includes and destructuring:**\n```html\n@var {title, content} = pageData;\n@var [firstItem, secondItem] = itemList;\n\n<h1>@title</h1>\n<div>@content</div>\n\n@include('header.html')\n@include('navbar.html', {currentPage: 'home'})\n\n@each(user in users)\n  @include('user-card.html', {user: user})\n@end\n\n@if(user.isAdmin)\n  @include('admin-panel.html')\n@end\n\n@{ formatDate(user.createdAt) }\n@customHelper(user.name)\n```\n\n### File Includes\n\n```html\n<!-- main-template.html -->\n@var pageTitle = \"Home Page\";\n\n<!DOCTYPE html>\n<html>\n<head>\n    <title>@pageTitle</title>\n    @include('head.html')\n</head>\n<body>\n    @include('header.html', {showBanner: true})\n\n    <main>\n        @include('content.html', {content: pageContent})\n    </main>\n\n    @include('footer.html', {year: 2024})\n</body>\n</html>\n```\n\n### Destructuring Support\n\n```html\n@var {name, age, email} = user;\n@var [first, second, ...rest] = items;\n\n<p>Name: @name</p>\n<p>Age: @age</p>\n<p>Email: @email</p>\n\n<p>First item: @first</p>\n<p>Second item: @second</p>\n```\n\n### Function Calls\n\n```html\n@var formattedDate = formatDate(createdAt);\n@var fullName = getFullName(user.firstName, user.lastName);\n\n<p>Created: @formattedDate</p>\n<p>Welcome, @fullName!</p>\n\n@if(isAdmin(user.role))\n  <div class=\"admin-badge\">Administrator</div>\n@end\n```\n\n## 📚 Comprehensive Documentation\n\n### Core Application\n\n#### Instantiation\n```javascript\nconst app = new Nova();\n\n// With global CSS\napp.style = `\n  body { font-family: Arial; margin: 0; padding: 20px; }\n  h1 { color: #333; }\n`;\n\n// With global JavaScript\napp.js = `\n  console.log('Global script loaded');\n  document.addEventListener('DOMContentLoaded', init);\n`;\n\n// With file upload configuration\napp.setFileConfig({\n  maxSize: 100, // 100MB\n  allowedTypes: ['image/jpeg', 'image/png'],\n  keepOriginalName: true,\n  maxFiles: 10\n});\n```\n\n#### Server Configuration Options\n```javascript\n// Basic usage\napp.at(3000); // Port only\n\n// With host and callback\napp.at(3000, '0.0.0.0', () => {\n  console.log('Server listening on all interfaces');\n});\n\n// With just callback\napp.at(3000, () => {\n  console.log('Server ready');\n});\n\n// With HTTPS (requires Node.js https module)\nconst https = require('https');\nconst fs = require('fs');\nconst options = {\n  key: fs.readFileSync('key.pem'),\n  cert: fs.readFileSync('cert.pem')\n};\napp.server = https.createServer(options, app.server);\napp.at(443);\n```\n\n### Routing System\n\n#### HTTP Methods\n```javascript\n// GET route\napp.get('/products', (req, res) => {\n  res.json([{ id: 1, name: 'Product A' }]);\n});\n\n// POST route with body parsing\napp.post('/products', (req, res) => {\n  console.log('Received product:', req.body);\n  res.status(201).json({ success: true });\n});\n\n// PUT route\napp.put('/products/:id', (req, res) => {\n  res.send(`Updating product \\${req.params.id}`);\n});\n\n// DELETE route\napp.delete('/products/:id', (req, res) => {\n  res.send(`Deleting product \\${req.params.id}`);\n});\n\n// PATCH route\napp.patch('/products/:id', (req, res) => {\n  res.send(`Partially updating product \\${req.params.id}`);\n});\n```\n\n#### Route Parameters\n```javascript\n// Single parameter (named regex group)\napp.get('/users/:userId', (req, res) => {\n  res.send(`User ID: \\${req.params.userId}`);\n});\n\n// Multiple parameters\napp.get('/posts/:postId/comments/:commentId', (req, res) => {\n  res.json({\n    post: req.params.postId,\n    comment: req.params.commentId\n  });\n});\n```\n\n#### Route Groups\n```javascript\n// Grouped routes with common prefix\napp.group('/api/v1', (api) => {\n  api.get('/products', getProducts);\n  api.post('/products', createProduct);\n\n  // Nested groups\n  api.group('/users', (users) => {\n    users.get('/', getUsers);\n    users.post('/', createUser);\n    users.get('/:id', getUser);\n  });\n});\n```\n\n#### Route Middleware\n```javascript\n// Authentication middleware\nconst authenticate = (req, res, next) => {\n  if (req.headers['x-api-key'] === 'secret') {\n    next();\n  } else {\n    res.status(401).send('Unauthorized');\n  }\n};\n\n// Logging middleware\nconst logger = (req, res, next) => {\n  console.log(`[\\${new Date().toISOString()}] \\${req.method} \\${req.url}`);\n  next();\n};\n\n// Data validation middleware\nconst validateProduct = (req, res, next) => {\n  if (!req.body.name || !req.body.price) {\n    return res.status(400).json({ error: 'Name and price are required' });\n  }\n  next();\n};\n\n// Applying middleware to route\napp.post('/products', authenticate, logger, validateProduct, (req, res) => {\n  // Create product logic\n  res.status(201).json({ success: true });\n});\n```\n\n### Request Handling\n\n#### Available Properties\n```javascript\napp.get('/request-info', (req, res) => {\n  res.json({\n    // Basic properties\n    method: req.method,\n    url: req.url,\n\n    // Network information\n    ip: req.ip,\n    protocol: req.protocol,\n    secure: req.protocol === 'https',\n    hostname: req.headers.host,\n    fullUrl: req.fullUrl,\n\n    // Parsed data\n    query: req.query,    // Query string parameters\n    body: req.body,      // Parsed request body\n    files: req.files,    // Uploaded files\n    params: req.params,  // Route parameters\n    cookies: req.cookies,// Parsed cookies\n  });\n});\n```\n\n#### Body Parsing Examples\n```javascript\n// JSON body\napp.post('/api/users', (req, res) => {\n  // req.body will be parsed JSON\n  const user = {\n    id: Date.now(),\n    ...req.body\n  };\n  res.status(201).json(user);\n});\n\n// URL-encoded form\napp.post('/contact', (req, res) => {\n  // req.body contains parsed form data\n  console.log('Contact form submission:', req.body);\n  res.redirect('/thank-you');\n});\n\n// File upload\napp.post('/upload', (req, res) => {\n  // req.files contains uploaded files\n  // req.body contains other form fields\n  const fileInfo = req.files.document;\n  res.json({\n    originalName: fileInfo.name,\n    savedName: fileInfo.newname,\n    size: fileInfo.size,\n    url: `/uploads/\\${fileInfo.newname}`\n  });\n});\n\n// Multipart form with mixed data\napp.post('/profile', (req, res) => {\n  const { name, bio } = req.body;\n  const avatar = req.files.avatar;\n\n  // Process data\n  res.json({\n    profile: { name, bio },\n    avatarUrl: `/uploads/\\${avatar.newname}`\n  });\n});\n```\n\n### Response Handling\n\n#### Response Methods\n```javascript\n// Basic responses\napp.get('/text', (req, res) => {\n  res.send('Plain text response', 'text/plain');\n});\n\napp.get('/html', (req, res) => {\n  res.send('<h1>HTML Response</h1><p>With tags</p>');\n});\n\napp.get('/json', (req, res) => {\n  res.json({ message: 'JSON response', status: 'success' });\n});\n\n// Status codes\napp.get('/created', (req, res) => {\n  res.status(201).send('Resource created');\n});\n\napp.get('/unauthorized', (req, res) => {\n  res.status(401).json({ error: 'Authentication required' });\n});\n\n// Fluent interface\napp.get('/fluent', (req, res) => {\n  res\n    .status(200)\n    .set({\n      'X-Custom-Header': 'value',\n      'Cache-Control': 'no-cache'\n    })\n    .json({ data: 'response' });\n});\n\n// Redirects\napp.get('/old-route', (req, res) => {\n  res.redirect('/new-route');\n});\n\napp.get('/temporary', (req, res) => {\n  res.redirect('/new-location', 307); // Status code can be specified\n});\n\n// Headers\napp.get('/custom-headers', (req, res) => {\n  res.set({\n    'X-Custom-Header': 'value',\n    'Cache-Control': 'no-cache, no-store, must-revalidate'\n  }).send('Headers set');\n});\n\n// Cookies\napp.get('/set-cookie', (req, res) => {\n  res.cookie('sessionId', '12345', {\n    httpOnly: true,\n    maxAge: 24 * 60 * 60 * 1000\n  });\n  res.send('Cookie set');\n});\n```\n\n#### File Responses\n```javascript\n// Send file with automatic content-type\napp.get('/download-pdf', (req, res) => {\n  app.sendFile('./documents/report.pdf', res);\n});\n\n// Explicit content-type\napp.get('/download-csv', (req, res) => {\n  app.sendFile('./data/export.csv', 'text/csv', res);\n});\n\n// Alternative syntax\napp.get('/manual-file', (req, res) => {\n  const filePath = path.join(__dirname, 'files', 'manual.pdf');\n  app.sendFile(filePath, 'application/pdf', res);\n});\n\n// With error handling\napp.get('/download', (req, res) => {\n  try {\n    app.sendFile('./important.docx', res);\n  } catch (err) {\n    res.status(500).send('Failed to download file');\n  }\n});\n```\n\n### Cookie Management\n\n#### Setting Cookies\n```javascript\n// Basic cookie\nres.cookie('username', 'john_doe');\n\n// With options\nres.cookie('session', 'abc123', {\n  maxAge: 24 * 60 * 60 * 1000, // 1 day\n  httpOnly: true,\n  secure: true,\n  domain: 'example.com',\n  path: '/admin',\n  sameSite: 'strict'\n});\n\n// Multiple cookies\nres.cookie('preferences', 'dark_mode')\n   .cookie('language', 'en');\n```\n\n#### Reading Cookies\n```javascript\napp.get('/dashboard', (req, res) => {\n  // All cookies are available in req.cookies\n  const session = req.cookies.session;\n  const preferences = req.cookies.preferences;\n\n  if (!session) {\n    return res.redirect('/login');\n  }\n\n  // Use cookie values\n  res.send(`Preferences: \\${preferences}`);\n});\n```\n\n#### Clearing Cookies\n```javascript\napp.get('/logout', (req, res) => {\n  // Clear specific cookie\n  req.clearCookie('session');\n\n  // Clear with options (must match original cookie options)\n  req.clearCookie('preferences', {\n    domain: 'example.com',\n    path: '/admin'\n  });\n\n  res.redirect('/login');\n});\n```\n\n### Middleware System\n\n#### Application-Level Middleware\n```javascript\n// Runs for every request\napp.useMiddleware((req, res, next) => {\n  console.log('Request received at', new Date());\n  next(); // Pass control to next middleware\n});\n\n// Conditional middleware\napp.useMiddleware((req, res, next) => {\n  if (req.path.startsWith('/api')) {\n    req.apiRequest = true;\n  }\n  next();\n});\n\n// Async middleware\napp.useMiddleware(async (req, res, next) => {\n  try {\n    req.user = await User.findByToken(req.headers.authorization);\n    next();\n  } catch (err) {\n    next(err); // Pass to error handlers\n  }\n});\n\n// Body parsing middleware\napp.useMiddleware((req, res, next) => {\n  if (req.method === 'POST' && !req.headers['content-type']) {\n    req.headers['content-type'] = 'application/json';\n  }\n  next();\n});\n```\n\n#### Error Handling Middleware\n```javascript\n// Basic error handler\napp.useErrorMiddleware((err, req, res, next) => {\n  console.error('Error:', err);\n  res.status(500).send('Something went wrong');\n});\n\n// Status code specific\napp.useErrorMiddleware((err, req, res, next) => {\n  if (err.statusCode === 404) {\n    res.status(404).send('Custom not found message');\n  } else {\n    next(err); // Pass to next error handler\n  }\n});\n\n// Production vs development\napp.useErrorMiddleware((err, req, res, next) => {\n  const response = {\n    message: err.message\n  };\n\n  if (process.env.NODE_ENV === 'development') {\n    response.stack = err.stack;\n  }\n\n  res.status(err.status || 500).json(response);\n});\n\n// File upload error handling\napp.useErrorMiddleware((err, req, res, next) => {\n  if (err.code === 'LIMIT_FILE_SIZE') {\n    res.status(413).json({ error: 'File too large' });\n  } else if (err.code === 'INVALID_FILE_TYPE') {\n    res.status(415).json({ error: 'Invalid file type' });\n  } else {\n    next(err);\n  }\n});\n```\n\n### Static File Serving\n\n#### Basic Setup\n```javascript\n// Serve files from /public directory\napp.serveStatic('public');\n\n// Files will be available at:\n// /public/images/logo.png -> /images/logo.png\n// /public/css/style.css -> /css/style.css\n\n// The static path prefix (e.g., /public) is stripped from the URL automatically.\n\n// With custom prefix\napp.serveStatic('assets');\n// The static path prefix /assets is stripped from the URL.\n```\n\n### File Uploads\n\n#### Configuration Options\n```javascript\n// Complete configuration\napp.setFileConfig({\n  maxSize: 50,          // 50MB max file size (in MB, converted to bytes internally)\n  allowedTypes: [       // Allowed MIME types\n    'image/jpeg',\n    'image/png',\n    'application/pdf'\n  ],\n  maxFiles: 5,          // Maximum files per upload\n  keepOriginalName: false, // Randomize filenames\n});\n\n// Individual settings\napp.setFileSizeLimit(100); // 100MB\napp.setAllowedFileTypes(['image/*']); // All image types\napp.setMaxFiles(10);\napp.setKeepOriginalName(true);\n\n// Wildcard MIME types\napp.setAllowedFileTypes([\n  'image/*',      // All images\n  'application/pdf',\n  'text/plain'\n]);\n\n// Custom validation\napp.useMiddleware((req, res, next) => {\n  if (req.files) {\n    for (const file of Object.values(req.files)) {\n      if (file.size > customLimit) {\n        return res.status(413).send('Custom size limit exceeded');\n      }\n    }\n  }\n  next();\n});\n```\n\n#### Handling Uploads\n```javascript\napp.post('/upload', (req, res) => {\n  if (!req.files || Object.keys(req.files).length === 0) {\n    return res.status(400).send('No files were uploaded');\n  }\n\n  const file = req.files.avatar;\n\n  res.json({\n    originalName: file.name,\n    savedName: file.newname,\n    size: file.size,\n    type: file.type,\n    path: file.path\n  });\n});\n\n// Multiple files\napp.post('/gallery', (req, res) => {\n  const files = req.files.images; // Array when multiple\n\n  const results = files.map(file => ({\n    name: file.name,\n    url: `/uploads/\\${file.newname}`,\n    size: file.size\n  }));\n\n  res.json({ uploaded: results });\n});\n\n// Mixed form data and files\napp.post('/profile', (req, res) => {\n  const { username, bio } = req.body;\n  const avatar = req.files.avatar;\n\n  // Process data\n  res.json({\n    profile: { username, bio },\n    avatarUrl: `/uploads/\\${avatar.newname}`\n  });\n});\n```\n\n### Template Engine\n\n#### Enhanced HTML Templates with New Features\n\n**File Includes:**\n```html\n@include('header.html')\n@include('navbar.html', {currentPage: 'products'})\n@include('footer.html', {showCopyright: true})\n```\n\n**Destructuring:**\n```html\n@var {title, description, price} = product;\n@var [mainImage, ...otherImages] = images;\n\n<h2>@title</h2>\n<p>@description</p>\n<span class=\"price\">$@price</span>\n```\n\n**Function Calls:**\n```html\n@var discountedPrice = calculateDiscount(price, discountPercent);\n@var isAvailable = checkAvailability(productId);\n\n@if(isAvailable)\n  <button class=\"buy-btn\">Buy for $@discountedPrice</button>\n@end\n```\n\n**Complex Examples:**\n```html\n@var {user: {name, email}, orders: [latestOrder, ...otherOrders]} = data;\n\n<div class=\"profile\">\n  <h2>@name</h2>\n  <p>@email</p>\n\n  @include('order-history.html', {orders: otherOrders})\n\n  @if(latestOrder)\n    @include('latest-order.html', {order: latestOrder})\n  @end\n</div>\n```\n\n#### Configuration\n```javascript\n// Basic setup with enhanced features\napp.setViewEngine('novax', {\n  viewsPath: './templates',\n  helpers: {\n    formatDate: date => new Date(date).toLocaleDateString(),\n    calculateDiscount: (price, discount) => price * (1 - discount/100),\n    checkAvailability: productId => inventory[productId] > 0\n  }\n});\n\n// Register additional helpers\napp.addHelper('uppercase', str => str.toUpperCase());\napp.addHelper('truncate', (str, length) =>\n  str.length > length ? str.substring(0, length) + '...' : str\n);\n```\n\n#### Rendering Templates with Includes\n```javascript\napp.get('/profile', async (req, res) => {\n  try {\n    const html = await app.render('profile', {\n      user: req.user,\n      orders: await getOrders(req.user.id),\n      stats: await getUserStats(req.user.id)\n    });\n    res.send(html);\n  } catch (error) {\n    res.status(500).send('Error loading profile');\n  }\n});\n```\n\n\n### Advanced Include Usage\n\n**With complex data:**\n```html\n@include('user-card.html', {\n  user: user,\n  showDetails: true,\n  options: {\n    theme: 'dark',\n    size: 'large'\n  }\n})\n```\n\n**With function calls:**\n```html\n@include('notification.html', {\n  message: formatMessage('welcome', user.name),\n  type: getNotificationType(user.status)\n})\n```\n\n#### HTML Templates with New @ Syntax\n```html\n<!-- views/profile.html -->\n@var title = \"User Profile\";\n@var user = { name: \"Alice\", isAdmin: true, friends: [{ name: \"Bob\" }, { name: \"Charlie\" }] };\n\n<div class=\"profile\">\n  <h1>@title</h1>\n  <img src=\"@user.avatar\" alt=\"Profile picture\">\n\n  @if(user.isAdmin)\n    <div class=\"admin-badge\">Administrator</div>\n  @end\n\n  <ul class=\"friends\">\n    @each(friend in user.friends)\n      <li>\n        @friend.name\n        @if(friend.isClose)⭐@end\n      </li>\n    @end\n  </ul>\n\n  <p>Total friends: @{user.friends.length}</p>\n</div>\n```\n\n#### JavaScript Templates\n```javascript\n// views/profile.js\nmodule.exports = function(data) {\n  const { user } = data;\n\n  // Async operation example\n  return someAsyncOperation().then(result => {\n    return `\n      <div class=\"profile\">\n        <h1>\\${user.name}</h1>\n        <img src=\"\\${user.avatar}\" alt=\"Profile picture\">\n\n        \\${user.isAdmin ? '<div class=\"admin-badge\">Administrator</div>' : ''}\n\n        <ul class=\"friends\">\n          \\${user.friends.map(friend => `\n            <li>\n              \\${friend.name}\n              \\${friend.isClose ? '⭐' : ''}\n            </li>\n          `).join('')}\n        </ul>\n\n        <div class=\"async-result\">\n          \\${result}\n        </div>\n      </div>\n    `;\n  });\n};\n```\n\n#### Configuration\n```javascript\n// Basic setup (views directory is created if it doesn't exist)\napp.setViewEngine('novax', {\n  viewsPath: './templates'\n});\n\n// With JavaScript templates\napp.setViewEngine('novax', {\n  viewsPath: './views',\n  viewsType: 'js'\n});\n\n// With HTML templates (explicit)\napp.setViewEngine('novax', {\n  viewsPath: './templates',\n  viewsType: 'html' // Default\n});\n\n// With third-party engine (e.g. Pug)\nconst pug = require('pug');\napp.setViewEngine(pug, {\n  viewsPath: './templates',\n  viewsType: 'pug'\n});\n```\n\n#### View Helpers\n```javascript\n// Register a single helper\napp.addHelper('formatDate', date => new Date(date).toLocaleDateString());\n\n// Register multiple helpers\napp.addHelpers({\n  upper: str => str.toUpperCase(),\n  lower: str => str.toLowerCase(),\n  truncate: (str, length) => str.length > length ? str.substring(0, length) + '...' : str\n});\n\n// Helpers in templates\n// HTML: @{ upper(user.name) }\n// JS: upper(user.name)\n```\n\n#### Rendering Templates\n```javascript\n// Basic rendering\napp.get('/profile', (req, res) => {\n  app.render('profile', {\n    user: {\n      name: 'Alice',\n      avatar: '/images/alice.jpg',\n      isAdmin: true,\n      friends: [\n        { name: 'Bob', isClose: true },\n        { name: 'Charlie', isClose: false }\n      ]\n    }\n  }).then(html => res.send(html));\n});\n\n// With error handling\napp.get('/dashboard', (req, res) => {\n  app.render('dashboard', { user: req.user })\n    .then(html => res.send(html))\n    .catch(err => {\n      console.error('Render error:', err);\n      res.status(500).send('Error loading page');\n    });\n});\n\napp.get('/page', (req, res) => {\n  app.render('page', { title: 'Home' })\n    .then(content => {\n      res.send(content);\n    });\n});\n\n// Async data fetching\napp.get('/async-page', async (req, res) => {\n  try {\n    const data = await fetchData();\n    const html = await app.render('async-template', { user: req.user });\n    res.send(html);\n  } catch (err) {\n    res.status(500).send('Error');\n  }\n});\n```\n\n### Router Modularization\n\n#### Creating Modular Routers\n```javascript\n// routes/api.js\nmodule.exports = (app) => {\n  app.group('/api/v1', (api) => {\n    api.get('/users', getUsers);\n    api.post('/users', createUser);\n    api.get('/users/:id', getUser);\n    api.put('/users/:id', updateUser);\n    api.delete('/users/:id', deleteUser);\n  });\n};\n\n// routes/auth.js\nmodule.exports = (app) => {\n  app.post('/login', loginHandler);\n  app.post('/register', registerHandler);\n  app.post('/logout', logoutHandler);\n  app.post('/forgot-password', forgotPasswordHandler);\n};\n\n// main app.js\napp.useRouter(require('./routes/api'));\napp.useRouter(require('./routes/auth'));\n```\n\n#### Router Objects\n```javascript\n// Alternative router format as object\nconst productRoutes = {\n  '/products': {\n    method: 'get',\n    handler: getProducts,\n    middleware: [authMiddleware]\n  },\n  '/products/:id': {\n    method: 'get',\n    handler: getProduct\n  },\n  '/products': {\n    method: 'post',\n    handler: createProduct,\n    middleware: [authMiddleware, adminMiddleware, ((req, res, next) => {\n      console.log('My Middleware')\n      next()\n    })]\n  }\n};\n\napp.useRouter(productRoutes);\n```\n\n### Error Handling\n\n#### Custom Error Pages\n```javascript\n// Register a custom error handler for a specific status code (400–599)\napp.on(404, (err, req, res) => `\n  <!DOCTYPE html>\n  <html>\n  <head>\n    <title>Page Not Found</title>\n    <style>\n      body { font-family: Arial; text-align: center; padding: 50px; }\n      h1 { color: #d33; }\n      .details { margin: 20px; padding: 15px; background: #f5f5f5; }\n    </style>\n  </head>\n  <body>\n    <h1>404 - Not Found</h1>\n    <p>The requested page could not be found.</p>\n    \\${process.env.NODE_ENV === 'development' ? `\n      <div class=\"details\">\n        <p><strong>URL:</strong> \\${req.url}</p>\n        <p><strong>Method:</strong> \\${req.method}</p>\n      </div>\n    ` : ''}\n  </body>\n  </html>\n`);\n\n// 500 Server Error\napp.on(500, (err) => `\n  <h1>Server Error</h1>\n  <p>\\${err.message}</p>\n  \\${process.env.NODE_ENV === 'development' ?\n    `<pre>\\${err.stack}</pre>` : ''}\n`);\n\n// Custom business error\napp.on(402, () => `\n  <h1>Payment Required</h1>\n  <p>Please upgrade your account to access this feature</p>\n  <a href=\"/pricing\">View pricing plans</a>\n`);\n```\n\n#### Error Middleware\n```javascript\n// JSON error responses for API routes\napp.useErrorMiddleware((err, req, res, next) => {\n  if (req.path.startsWith('/api')) {\n    res.status(err.statusCode || 500).json({\n      error: err.message,\n      ...(process.env.NODE_ENV === 'development' && { stack: err.stack })\n    });\n  } else {\n    next(err); // Pass to next error handler\n  }\n});\n\n// HTML error pages for regular routes\napp.useErrorMiddleware((err, req, res, next) => {\n  res.status(err.statusCode || 500);\n\n  // Check if accepts HTML\n  const acceptsHtml = req.accepts('html');\n  const acceptsJson = req.accepts('json');\n\n  if (acceptsHtml) {\n    // Try custom error handler first\n    if (app.customErrors[err.statusCode || 500]) {\n      const errorContent = app.customErrors[err.statusCode || 500](err, req, res);\n      res.send(errorContent);\n    } else {\n      // Fallback to default\n      res.send(`\n        <h1>\\${err.statusCode || 500} Error</h1>\n        <p>\\${err.message}</p>\n        \\${process.env.NODE_ENV === 'development' ? `<pre>\\${err.stack}</pre>` : ''}\n      `);\n    }\n  } else if (acceptsJson) {\n    res.json({ error: err.message });\n  } else {\n    res.send(err.message);\n  }\n});\n\n// File upload specific errors\napp.useErrorMiddleware((err, req, res, next) => {\n  if (err.code === 'LIMIT_FILE_SIZE') {\n    res.status(413).json({ error: 'File size exceeds limit' });\n  } else if (err.code === 'INVALID_FILE_TYPE') {\n    res.status(415).json({ error: 'Invalid file type' });\n  } else if (err.code === 'LIMIT_FILE_COUNT') {\n    res.status(413).json({ error: 'Too many files' });\n  } else {\n    next(err);\n  }\n});\n```\n\n### Plugin System\n\n#### Creating a Plugin\n```javascript\n// logger.js\nmodule.exports = function(context, options = {}) {\n  const { setConfig, addMiddleware, addMethod, getConfig, addRoute } = context;\n  const config = {\n    level: options.level || 'info',\n    format: options.format || 'simple'\n  };\n\n  // Set plugin configuration\n  setConfig('logger', config);\n\n  // Add request logging middleware\n  addMiddleware((req, res, next) => {\n    const start = Date.now();\n    res.on('finish', () => {\n      const duration = Date.now() - start;\n      const message = `\\${req.method} \\${req.url} \\${res.statusCode} \\${duration}ms`;\n      log(message, 'info');\n    });\n    next();\n  });\n\n  // Add logging method\n  addMethod('log', (message, level = 'info') => {\n    const levels = ['error', 'warn', 'info', 'debug'];\n    const currentLevel = getConfig('logger').level;\n\n    if (levels.indexOf(level) <= levels.indexOf(currentLevel)) {\n      const timestamp = new Date().toISOString();\n      console[level](`[\\${timestamp}] \\${message}`);\n    }\n  });\n\n  // Add debug route if in development\n  if (process.env.NODE_ENV === 'development') {\n    addRoute('get', '/_logs', (req, res) => {\n      res.json({ logs: getLogs() });\n    });\n  }\n\n  return {\n    name: 'logger',\n    version: '1.0.0',\n    description: 'Request logging plugin'\n  };\n};\n\n// Usage\napp.usePlugin(require('./logger'), { level: 'debug' });\napp.log('Application started');\n```\n\n#### Using Plugins\n```javascript\n// Authentication plugin\nconst authPlugin = require('./auth-plugin');\napp.usePlugin(authPlugin, {\n  secret: process.env.JWT_SECRET,\n  routes: ['/api']\n});\n\n\n// Plugin context provides: addMethod, addRoute, addMiddleware, addErrorMiddleware, setConfig, getConfig\n```\n\n### Configuration\n\n#### CORS Configuration\n```javascript\n// Basic CORS\napp.cors({\n  origins: ['https://example.com']\n});\n\n// Advanced CORS\napp.cors({\n  origins: [\n    'https://example.com',\n    'https://api.example.com',\n    'http://localhost:3000'\n  ],\n  methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS', 'PATCH'],\n  headers: [\n    'Content-Type',\n    'Authorization',\n    'X-Requested-With',\n    'X-Custom-Header'\n  ],\n  credentials: true,\n});\n```\n\n#### Security Headers\n```javascript\n// Add security headers middleware\napp.useMiddleware((req, res, next) => {\n  res.set({\n    'X-Content-Type-Options': 'nosniff',\n    'X-Frame-Options': 'DENY',\n    'X-XSS-Protection': '1; mode=block',\n    'Strict-Transport-Security': 'max-age=63072000; includeSubDomains; preload',\n    'Content-Security-Policy': `\n      default-src 'self';\n      script-src 'self' 'unsafe-inline' https://cdn.example.com;\n      style-src 'self' 'unsafe-inline';\n      img-src 'self' data: https://*.example.com;\n      font-src 'self' https://fonts.gstatic.com;\n      connect-src 'self' https://api.example.com;\n      frame-ancestors 'none';\n    `.replace(/\\s+/g, ' '),\n    'Referrer-Policy': 'strict-origin-when-cross-origin',\n    'Permissions-Policy': 'geolocation=(), microphone=()'\n  });\n  next();\n});\n\n// Rate limiting middleware\napp.useMiddleware((req, res, next) => {\n  const ip = req.ip;\n  const current = rateLimiter[ip] || 0;\n\n  if (current >= 100) {\n    return res.status(429).send('Too many requests');\n  }\n\n  rateLimiter[ip] = current + 1;\n  setTimeout(() => {\n    rateLimiter[ip] = Math.max(0, (rateLimiter[ip] || 0) - 1);\n  }, 60000);\n\n  next();\n});\n```\n\n## 🏗️ Architecture\n\nNovaxJS follows these core principles:\n\n1. **Minimalist Core**: Only essential features in the core framework\n2. **Extensible**: Plugin system for adding functionality\n3. **Unopinionated**: Flexible structure for different use cases\n4. **Performance Focused**: Optimized for speed and low memory usage\n5. **Security Conscious**: Safe defaults and validation for all operations\n\n### Core Components\n\n1. **Server Layer**: HTTP server with request/response handling\n2. **Routing System**: Flexible route definitions with middleware support\n3. **Template Engine**: Dual-mode rendering (HTML and JavaScript) with new @ syntax\n4. **File Handling**: Uploads, downloads, and static file serving\n5. **Middleware Pipeline**: Request/response processing chain\n6. **Error Handling**: Customizable error responses and logging\n7. **Plugin API**: Extensibility point for framework features\n8. **Cookie Management**: Built-in cookie parsing and manipulation\n9. **Router Modularization**: Support for external router modules\n\n### Lifecycle of a Request\n\n1. **Incoming Request**: Server receives HTTP request\n2. **Cookie Parsing**: Parse cookies from request headers\n3. **CORS Handling**: Preflight checks if applicable\n4. **Body Parsing**: JSON, form-data, or urlencoded parsing\n5. **Middleware Execution**: Application-level middleware stack\n6. **Route Matching**: Find matching route based on path and method\n7. **Route Middleware**: Route-specific middleware execution\n8. **Route Handler**: Main route logic execution\n9. **Response Generation**: Send response or render template (with minification)\n10. **Error Handling**: If any errors occur in the pipeline\n11. **Final Response**: Send final response to client (with cookies if set)\n\n## 📜 License\n\nISC License\n\n---\n\nThis documentation covers all features and capabilities of NovaxJS v9.4.4, including both existing functionality and new enhancements. For more examples and advanced usage patterns, please refer to the official documentation website.","readmeFilename":"README.md"}