{"_id":"tspace-spear","_rev":"46-81a9c77489ba348fc4a52c2f5bb950c2","name":"tspace-spear","dist-tags":{"latest":"1.3.2","beta":"1.3.1-beta.1"},"versions":{"1.0.0":{"name":"tspace-spear","version":"1.0.0","keywords":["tspace","spear","fast","http","node","rest api","decorators","middlewares","controllers","routers"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.0.0","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"b420f37e09114c78338bb30ed7aec6fcb72dc76b","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.0.0.tgz","fileCount":25,"integrity":"sha512-rs+9CyHAtf2Z2Pl+uD8i0YkniCypfXlSY8+yETqLk+QL6sA9bys+Ta2Kdx48m2bPlV6ov0HYCZgd0L3n8As2KA==","signatures":[{"sig":"MEQCIDfcMREBllLIVGrBhpglnjXN9kinLnRS5wNylCjYgWQHAiBVJqRAALT+ib8IvfSV551M8FwWK7C+PBUr7jIdr0HUvQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":72713},"main":"./build/lib/index.js","types":"./build/lib/index.d.ts","gitHead":"381bb35abae9e486fa480b93bb34277677728600","scripts":{"build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"6.14.18","description":"Build a REST API with high speed using a native HTTP server for Node.js.","directories":{},"_nodeVersion":"14.21.3","dependencies":{"formidable":"^3.5.1","find-my-way":"^8.1.0","on-finished":"^2.4.1","reflect-metadata":"^0.1.14"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^16.4.0","@types/formidable":"^3.4.5","@types/on-finished":"^2.3.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.0.0_1714671967549_0.8022403466975234","host":"s3://npm-registry-packages"}},"1.0.0-rc":{"name":"tspace-spear","version":"1.0.0-rc","keywords":["tspace","spear","fast","http","node","rest api","decorators","middlewares","controllers","routers"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.0.0-rc","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"33e22ae1cd98f0b5d2844fb8a151f5b75518fdd6","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.0.0-rc.tgz","fileCount":25,"integrity":"sha512-rTiDb2HCUFGEDJz9uIlAkQgupadPq3cc8ddmYzTcDMk3MDrxZeF/nEygqusd/mpgssSvyeMjULnYlTzt06pY9A==","signatures":[{"sig":"MEQCIBrnRttHN+us/aEjWQvgIUvm34L0RWzWw8DXDyqLZFEPAiBZu1NvB+ocHVZ4K8YfxyfFT9w6pPsVnp/1QGc0HxNH1w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":71844},"main":"./build/lib/index.js","types":"./build/lib/index.d.ts","gitHead":"381bb35abae9e486fa480b93bb34277677728600","scripts":{"build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"6.14.18","description":"Build a REST API with high speed using a native HTTP server for Node.js.","directories":{},"_nodeVersion":"14.21.3","dependencies":{"formidable":"^3.5.1","find-my-way":"^8.1.0","on-finished":"^2.4.1","reflect-metadata":"^0.1.14"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^16.4.0","@types/formidable":"^3.4.5","@types/on-finished":"^2.3.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.0.0-rc_1714674093762_0.11276512329674726","host":"s3://npm-registry-packages"}},"1.0.0-rc-1":{"name":"tspace-spear","version":"1.0.0-rc-1","keywords":["tspace","spear","fast","http","node","rest api","decorators","middlewares","controllers","routers"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.0.0-rc-1","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"6226190b2c011ad8362c0aaa431d6d067d29f322","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.0.0-rc-1.tgz","fileCount":39,"integrity":"sha512-3xjRRyBIq4wgsIjVB4rD91JzHyaDH4q0B+YR4YCX7fgVt10H+vcw8PgBY0NdTszHFokuU1tYGtXsNGH1QzJiHg==","signatures":[{"sig":"MEYCIQCuYn4zdqQbFKTiWFcxJodUq+FvQ6Us7wZSWAqikEF9LwIhAJjhaanTi5S2Sm5XPxigvQ/CrEf/DSfDWRFWJUozGdBE","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":133021},"main":"./build/lib/index.js","types":"./build/lib/index.d.ts","gitHead":"381bb35abae9e486fa480b93bb34277677728600","scripts":{"build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"6.14.18","description":"Build a REST API with high speed using a native HTTP server for Node.js.","directories":{},"_nodeVersion":"14.21.3","dependencies":{"express":"^4.19.2","formidable":"^3.5.1","find-my-way":"^8.1.0","on-finished":"^2.4.1","swagger-jsdoc":"^6.2.8","swagger-ui-dist":"^5.17.6","reflect-metadata":"^0.1.14","swagger-ui-express":"^5.0.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^16.4.0","@types/formidable":"^3.4.5","@types/on-finished":"^2.3.4","@types/swagger-jsdoc":"^6.0.4","@types/swagger-ui-express":"^4.1.6"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.0.0-rc-1_1715280369777_0.0778900761863921","host":"s3://npm-registry-packages"}},"1.0.0-rc-2":{"name":"tspace-spear","version":"1.0.0-rc-2","keywords":["tspace","spear","fast","http","node","rest api","decorators","middlewares","controllers","routers"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.0.0-rc-2","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"b22d49d8781f98f9dc9d40975658097048d4dee0","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.0.0-rc-2.tgz","fileCount":42,"integrity":"sha512-rm5ZYrNGMLNKZUfP0LpHKfoNucGj2HnpTtlrNROwLmXkHtmUrgMiSbX/NBd1VaTYPhd8Y8kY07ucPH32+dqrQg==","signatures":[{"sig":"MEQCIHZeQw3e1s9BweZZEPfgeUJlxVVroTsna+59n+WOYbwbAiAWQEciIrlzn95QjY6M+jhjlqKmmc4/vwIQJwqoqyrq8g==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":137914},"main":"./build/lib/index.js","types":"./build/lib/index.d.ts","gitHead":"381bb35abae9e486fa480b93bb34277677728600","scripts":{"build":"tsc","prepare":"npm run build"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"6.14.18","description":"Build a REST API with high speed using a native HTTP server for Node.js.","directories":{},"_nodeVersion":"14.21.3","dependencies":{"formidable":"^3.5.1","find-my-way":"^8.1.0","on-finished":"^2.4.1","reflect-metadata":"^0.1.14"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^16.4.0","@types/formidable":"^3.4.5","@types/on-finished":"^2.3.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.0.0-rc-2_1715533287174_0.8957664180010774","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"tspace-spear","version":"1.0.1","keywords":["tspace","tspace-spear","web","framework","web framework"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.0.1","homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"64d544cdb8dbf9df292a1407e77fea57acc9e979","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.0.1.tgz","fileCount":45,"integrity":"sha512-tvYmo0W/3j7ZaJiLhYoInwN0rShKeBY1+tv4HX4JHRxSd5kCCup6xdAGiylBiZrVYZWTgzuAiF0DQVnVQ1ADMA==","signatures":[{"sig":"MEUCIEqpK0moGuDP+kY2rAjw/MCJFv+aS/t4FTwLw72IE3/VAiEAv9sycQkvPG7UqlDtxEQBj+ZeKhrtlu3HqihnJdOdb6E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":159606},"main":"./build/lib/index.js","types":"./build/lib/index.d.ts","scripts":{"test":"ts-node src/tests/benchmark.test.ts","build":"tsc","prepare":"npm run build","test:build":"node build/tests/benchmark.test.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"10.2.4","description":"Build a REST API with high speed using a native HTTP server for Node.js.","directories":{},"_nodeVersion":"18.19.0","dependencies":{"formidable":"^3.5.1","mime-types":"^2.1.35","find-my-way":"^8.1.0","on-finished":"^2.4.1","swagger-ui-dist":"^5.17.10","reflect-metadata":"^0.1.14"},"_hasShrinkwrap":false,"devDependencies":{"yargs":"^17.7.2","express":"^4.19.2","fastify":"^4.28.1","autocannon":"^7.15.0","typescript":"^5.4.5","@types/node":"^16.4.0","@types/yargs":"^17.0.32","@types/express":"^4.17.21","@types/autocannon":"^7.12.5","@types/formidable":"^3.4.5","@types/mime-types":"^2.1.4","@types/on-finished":"^2.3.4","@types/swagger-ui-dist":"^3.30.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.0.1_1719691194782_0.015045783339694196","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"tspace-spear","version":"1.0.2","keywords":["tspace","tspace-spear","web","framework","web framework"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.0.2","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"8372c197f2fbb1c026bbec4b62e9cdc5d2c334b3","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.0.2.tgz","fileCount":48,"integrity":"sha512-IFYioUj4gAfk0qZR1dhZiN2dY0/rXEDB0CJStFO30oMP2qQkdR5rCg1NYV3+Zo4Tzuwnc5QCWAjaPsL2HpCjlA==","signatures":[{"sig":"MEUCIF6cFuqby9Z/3sIr5DNg2pF8LtDRJTlYnBCu4MACECC5AiEAtXJm9a1FmqC8VwzDtTZ8z+2EhiGuBUxem0lobF+oCK4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":225682},"main":"./build/lib/index.js","types":"./build/lib/index.d.ts","gitHead":"0b4c29b39201563b5e59cf737123aa1f632108bc","scripts":{"test":"ts-node src/tests/benchmark.test.ts","build":"tsc","prepare":"npm run build","test:load":"autocannon -c 100 -d 40 -p 10 localhost:3000","test:build":"node build/tests/benchmark.test.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"8.19.4","description":"tspace-spear is a lightweight API framework for Node.js that is fast and highly focused on providing the best developer experience. It utilizes the native HTTP server","directories":{},"_nodeVersion":"16.20.2","dependencies":{"formidable":"3.5.1","mime-types":"2.1.35","find-my-way":"8.2.0","on-finished":"2.4.1","swagger-ui-dist":"5.17.10","reflect-metadata":"0.1.14"},"_hasShrinkwrap":false,"devDependencies":{"yargs":"^17.7.2","express":"^4.19.2","fastify":"^4.28.1","ts-node":"^10.9.2","autocannon":"^7.15.0","typescript":"^5.4.5","@types/node":"^16.4.0","@types/yargs":"^17.0.32","@types/express":"^4.17.21","@types/autocannon":"^7.12.5","@types/formidable":"^3.4.5","@types/mime-types":"^2.1.4","@types/on-finished":"^2.3.4","@types/swagger-ui-dist":"^3.30.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.0.2_1721456030142_0.6632432638431172","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"tspace-spear","version":"1.0.3","keywords":["tspace","tspace-spear","web","framework","web framework"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.0.3","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"8ce64f6fa0888127e92b7d45c3bcf864f8bff6b8","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.0.3.tgz","fileCount":48,"integrity":"sha512-/Fc4Km+urebLEYvzDRCzgazp55O8VYuIffnf4Y+YirGLZqm4MRO6JUE7koLqB5JjyDl5+3iXm0Pyq36XHRUp2A==","signatures":[{"sig":"MEUCIDBDXE5cJnR1jJwIpGOtYjxz3+hNlMbQc9gqIka5V1itAiEA6VKvRPQ8sXYqkrGcwSSkkArwgUMbmUDsrD6cLCLFXX8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":225755},"main":"./build/lib/index.js","types":"./build/lib/index.d.ts","gitHead":"b59f4ad30f27c07853b6e6c3088a031c66a21586","scripts":{"test":"ts-node src/tests/benchmark.test.ts","build":"tsc","prepare":"npm run build","test:load":"autocannon -c 100 -d 40 -p 10 localhost:3000","test:build":"node build/tests/benchmark.test.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"8.19.4","description":"tspace-spear is a lightweight API framework for Node.js that is fast and highly focused on providing the best developer experience. It utilizes the native HTTP server","directories":{},"_nodeVersion":"16.20.2","dependencies":{"formidable":"3.5.1","mime-types":"2.1.35","find-my-way":"8.2.0","on-finished":"2.4.1","swagger-ui-dist":"5.17.10","reflect-metadata":"0.1.14"},"_hasShrinkwrap":false,"devDependencies":{"yargs":"^17.7.2","express":"^4.19.2","fastify":"^4.28.1","ts-node":"^10.9.2","autocannon":"^7.15.0","typescript":"^5.4.5","@types/node":"^16.4.0","@types/yargs":"^17.0.32","@types/express":"^4.17.21","@types/autocannon":"^7.12.5","@types/formidable":"^3.4.5","@types/mime-types":"^2.1.4","@types/on-finished":"^2.3.4","@types/swagger-ui-dist":"^3.30.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.0.3_1721456413589_0.917719925381167","host":"s3://npm-registry-packages"}},"1.0.4":{"name":"tspace-spear","version":"1.0.4","keywords":["tspace","tspace-spear","web","framework","web framework"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.0.4","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"684fb4341ed772e2ae81043c85b7c9c67a99aff5","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.0.4.tgz","fileCount":48,"integrity":"sha512-8iPgnaI1MrNI/E+1lfliNZzYq/qCeIbVdhcbu8UBWWsOB+vQqKCVCFGoOTFE3Fe6QwjmT9a+cwHkSP8l33wUAQ==","signatures":[{"sig":"MEYCIQDQOfunmm/CAh7CFq0SfVIE35wH6pCCYQQWS3RYxOepeAIhALzMM0/BnuEL8SaPan7g0ICVrlihTX/p4h7d73CFiIy+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":225755},"main":"./build/lib/index.js","types":"./build/lib/index.d.ts","gitHead":"b59f4ad30f27c07853b6e6c3088a031c66a21586","scripts":{"test":"ts-node src/tests/benchmark.test.ts","build":"tsc","prepare":"npm run build","test:load":"autocannon -c 100 -d 40 -p 10 localhost:3000","test:build":"node build/tests/benchmark.test.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"8.19.4","description":"tspace-spear is a lightweight API framework for Node.js that is fast and highly focused on providing the best developer experience. It utilizes the native HTTP server","directories":{},"_nodeVersion":"16.20.2","dependencies":{"formidable":"3.5.1","mime-types":"2.1.35","find-my-way":"8.2.0","on-finished":"2.4.1","swagger-ui-dist":"5.17.10","reflect-metadata":"0.1.14"},"_hasShrinkwrap":false,"devDependencies":{"yargs":"^17.7.2","express":"^4.19.2","fastify":"^4.28.1","ts-node":"^10.9.2","autocannon":"^7.15.0","typescript":"^5.4.5","@types/node":"^16.4.0","@types/yargs":"^17.0.32","@types/express":"^4.17.21","@types/autocannon":"^7.12.5","@types/formidable":"^3.4.5","@types/mime-types":"^2.1.4","@types/on-finished":"^2.3.4","@types/swagger-ui-dist":"^3.30.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.0.4_1721456714629_0.03855236680452623","host":"s3://npm-registry-packages"}},"1.0.5":{"name":"tspace-spear","version":"1.0.5","keywords":["tspace","tspace-spear","web","framework","web framework"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.0.5","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"e42e3b06f68c2f32be949af34d2f1276ed0524d8","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.0.5.tgz","fileCount":45,"integrity":"sha512-9DNIkNDgmvSNf/H0Cl7HQWyj9qHrzEjaSZbt05aNu1y8+MIdZeQJKxFD17ryEk2Ry6j04lM9WvxMvH7Sxg522A==","signatures":[{"sig":"MEQCIDgDhF9Bc4HUEl1EnJmm79ltFGCF3agZ4cnxa8q9dPJ3AiAIoBMR4dAt6u1ebeU+N8llSNpWxErCTYjpAswTv1picg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172610},"main":"./build/lib/index.js","types":"./build/lib/index.d.ts","gitHead":"b59f4ad30f27c07853b6e6c3088a031c66a21586","scripts":{"test":"ts-node src/tests/benchmark.test.ts","build":"tsc","prepare":"npm run build","release":"npm run build && npm publish","test:load":"autocannon -c 100 -d 40 -p 10 localhost:3000","test:build":"node build/tests/benchmark.test.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"8.19.4","description":"tspace-spear is a lightweight API framework for Node.js that is fast and highly focused on providing the best developer experience. It utilizes the native HTTP server","directories":{},"_nodeVersion":"16.20.2","dependencies":{"formidable":"3.5.1","mime-types":"2.1.35","find-my-way":"8.2.0","on-finished":"2.4.1","swagger-ui-dist":"5.17.10","reflect-metadata":"0.1.14"},"_hasShrinkwrap":false,"devDependencies":{"yargs":"^17.7.2","express":"^4.19.2","fastify":"^4.28.1","ts-node":"^10.9.2","autocannon":"^7.15.0","typescript":"^5.4.5","@types/node":"^16.4.0","@types/yargs":"^17.0.32","@types/express":"^4.17.21","@types/autocannon":"^7.12.5","@types/formidable":"^3.4.5","@types/mime-types":"^2.1.4","@types/on-finished":"^2.3.4","@types/swagger-ui-dist":"^3.30.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.0.5_1721457000323_0.08885266350563148","host":"s3://npm-registry-packages"}},"1.0.6":{"name":"tspace-spear","version":"1.0.6","keywords":["tspace","tspace-spear","web","framework","web framework"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.0.6","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"6e81ec5a459fe25030c7c1003200358821d68bf8","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.0.6.tgz","fileCount":45,"integrity":"sha512-puCZHSuKFpk2hKwLXE2iZkwiUvM/QPmSs2X82UzZktqCXdmiVuWDAaGsTHdlcnBubOhbWufb5K+dox6J2LJV7g==","signatures":[{"sig":"MEUCIQCJ5AdqfMaeD4pHV88U4Y0gbREqxK4dlJkosOUHcKhzMgIgYO/gGbKs97HKNDHpA4JQie+M317DY5yMLoN4rQ7ptb0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172428},"main":"./build/lib/index.js","types":"./build/lib/index.d.ts","gitHead":"b59f4ad30f27c07853b6e6c3088a031c66a21586","scripts":{"test":"ts-node src/tests/benchmark.test.ts","build":"tsc","prepare":"npm run build","release":"npm run build && npm publish","test:load":"autocannon -c 100 -d 40 -p 10 localhost:3000","test:build":"node build/tests/benchmark.test.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"8.19.4","description":"tspace-spear is a lightweight API framework for Node.js that is fast and highly focused on providing the best developer experience. It utilizes the native HTTP server","directories":{},"_nodeVersion":"16.20.2","dependencies":{"formidable":"3.5.1","mime-types":"2.1.35","find-my-way":"8.2.0","on-finished":"2.4.1","swagger-ui-dist":"5.17.10","reflect-metadata":"0.1.14"},"_hasShrinkwrap":false,"devDependencies":{"yargs":"^17.7.2","express":"^4.19.2","fastify":"^4.28.1","ts-node":"^10.9.2","autocannon":"^7.15.0","typescript":"^5.4.5","@types/node":"^16.4.0","@types/yargs":"^17.0.32","@types/express":"^4.17.21","@types/autocannon":"^7.12.5","@types/formidable":"^3.4.5","@types/mime-types":"^2.1.4","@types/on-finished":"^2.3.4","@types/swagger-ui-dist":"^3.30.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.0.6_1721457370503_0.47573851470388306","host":"s3://npm-registry-packages"}},"1.0.7":{"name":"tspace-spear","version":"1.0.7","keywords":["tspace","tspace-spear","web","framework","web framework"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.0.7","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"d118f2e954092496e520c8e64781f821527ca178","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.0.7.tgz","fileCount":45,"integrity":"sha512-+pqoj0dhfgV/YrhFm/2Ljyux00TUUQ1PaesY3iBvvlXkChQqZ6fJhBYAug6NvoJyBwZN0eiLgopncEVPNAuS5w==","signatures":[{"sig":"MEUCIQC6U/4aqfh8729lj2Ly+esYw2fsTDcs140NY+d90g/txgIgWAF36bSkmsyOgDJO/PDWZuUs1p68Wd/2bZnNR44xHbg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172601},"main":"./build/lib/index.js","types":"./build/lib/index.d.ts","gitHead":"b59f4ad30f27c07853b6e6c3088a031c66a21586","scripts":{"test":"ts-node src/tests/benchmark.test.ts","build":"tsc","prepare":"npm run build","release":"npm run build && npm publish","test:load":"autocannon -c 100 -d 40 -p 10 localhost:3000","test:build":"node build/tests/benchmark.test.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"8.19.4","description":"tspace-spear is a lightweight API framework for Node.js that is fast and highly focused on providing the best developer experience. It utilizes the native HTTP server","directories":{},"_nodeVersion":"16.20.2","dependencies":{"formidable":"3.5.1","mime-types":"2.1.35","find-my-way":"8.2.0","on-finished":"2.4.1","swagger-ui-dist":"5.17.10","reflect-metadata":"0.1.14"},"_hasShrinkwrap":false,"devDependencies":{"yargs":"^17.7.2","express":"^4.19.2","fastify":"^4.28.1","ts-node":"^10.9.2","autocannon":"^7.15.0","typescript":"^5.4.5","@types/node":"^16.4.0","@types/yargs":"^17.0.32","@types/express":"^4.17.21","@types/autocannon":"^7.12.5","@types/formidable":"^3.4.5","@types/mime-types":"^2.1.4","@types/on-finished":"^2.3.4","@types/swagger-ui-dist":"^3.30.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.0.7_1721580845675_0.26776393673218024","host":"s3://npm-registry-packages"}},"1.0.8":{"name":"tspace-spear","version":"1.0.8","keywords":["tspace","tspace-spear","web","framework","web framework"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.0.8","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"267432b8c2641d4363bfe99e22fdc74f9e543b7b","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.0.8.tgz","fileCount":45,"integrity":"sha512-elfJIG4lJQGrNsm4Tc1QyioSFJlyqmKIaJ8+C7JGCdFtFgMtJp1GmWfHXFbxR3iYABtK4vNO+pu/sbT9eCuOfg==","signatures":[{"sig":"MEUCIHFatvVwziEw95cUHKiBKhG5OtjaoDhSTvaVdSU69wRxAiEAzxrWkSCM/5lv1myKl2GlDCWBRBP7w3r2yyCK2+1yw/g=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172277},"main":"./build/lib/index.js","types":"./build/lib/index.d.ts","gitHead":"7308a0ad5362a14c5423aa47d03d3e5644f8cc52","scripts":{"test":"ts-node src/tests/benchmark.test.ts","build":"tsc","prepare":"npm run build","release":"npm run build && npm publish","test:load":"autocannon -c 100 -d 40 -p 10 localhost:3000","test:build":"node build/tests/benchmark.test.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"8.19.4","description":"tspace-spear is a lightweight API framework for Node.js that is fast and highly focused on providing the best developer experience. It utilizes the native HTTP server","directories":{},"_nodeVersion":"16.20.2","dependencies":{"formidable":"3.5.1","mime-types":"2.1.35","find-my-way":"8.2.0","on-finished":"2.4.1","swagger-ui-dist":"5.17.10","reflect-metadata":"0.1.14"},"_hasShrinkwrap":false,"devDependencies":{"yargs":"^17.7.2","express":"^4.19.2","fastify":"^4.28.1","ts-node":"^10.9.2","autocannon":"^7.15.0","typescript":"^5.4.5","@types/node":"^16.4.0","@types/yargs":"^17.0.32","@types/express":"^4.17.21","@types/autocannon":"^7.12.5","@types/formidable":"^3.4.5","@types/mime-types":"^2.1.4","@types/on-finished":"^2.3.4","@types/swagger-ui-dist":"^3.30.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.0.8_1721654371749_0.823179715639462","host":"s3://npm-registry-packages"}},"1.0.9":{"name":"tspace-spear","version":"1.0.9","keywords":["tspace","tspace-spear","web","framework","web framework","node.js","low overhead"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.0.9","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"1269461ff0d369e25329f65c648f03b31d8fd62e","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.0.9.tgz","fileCount":45,"integrity":"sha512-WevXOP8EHvHU7WgoQcQlGZM4XCG8tTAgPQR79HKLptvWrH92JcO++dtMsOr6JNUWRCMc22AtvWKj6jLZWuEJMA==","signatures":[{"sig":"MEUCIQC/JyruJfabQSwUK466FbLzOhVEOSY8t6LCtPS6FhlqlgIgHFEq9eW0+ArGGy9zTJ36/QxAIL0ocaw81Ow0gqvNVLs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":173207},"main":"./build/lib/index.js","types":"./build/lib/index.d.ts","gitHead":"a12ca7a354d40d55e853843b995352cffa1b8cde","scripts":{"test":"ts-node src/tests/benchmark.test.ts","build":"tsc","prepare":"npm run build","release":"npm run build && npm publish","test:load":"autocannon -c 100 -d 40 -p 10 localhost:3000","test:build":"node build/tests/benchmark.test.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"8.19.4","description":"tspace-spear is a lightweight API framework for Node.js that is fast and highly focused on providing the best developer experience. It utilizes the native HTTP server","directories":{},"_nodeVersion":"16.20.2","dependencies":{"formidable":"3.5.1","mime-types":"2.1.35","find-my-way":"8.2.0","on-finished":"2.4.1","swagger-ui-dist":"5.17.10","reflect-metadata":"0.1.14"},"_hasShrinkwrap":false,"devDependencies":{"yargs":"^17.7.2","express":"^4.19.2","fastify":"^4.28.1","ts-node":"^10.9.2","autocannon":"^7.15.0","typescript":"^5.4.5","@types/node":"^16.4.0","@types/yargs":"^17.0.32","@types/express":"^4.17.21","@types/autocannon":"^7.12.5","@types/formidable":"^3.4.5","@types/mime-types":"^2.1.4","@types/on-finished":"^2.3.4","@types/swagger-ui-dist":"^3.30.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.0.9_1722446603399_0.6371563832326448","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"tspace-spear","version":"1.1.0","keywords":["tspace","tspace-spear","web","framework","web framework"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.1.0","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"c53f33f47a919853ddfcb06f211848013562ab00","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.1.0.tgz","fileCount":45,"integrity":"sha512-MWtynBvaXUR6w5SUo8+xbm6nHzWB6mHBBlBQ1Gqii29jUrA+9eyH47v1Mggwz9uOVIePxjpOwyZuLK2DLacrRQ==","signatures":[{"sig":"MEYCIQC+xbiDrvkPYXdxJVwJsPDlpuG4bUEjKIr24L13bctSTwIhALpZaI2+/daM0MGLgL732PsYnGAudpQlsA4wSfN2cn9c","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":174046},"main":"./build/lib/index.js","types":"./build/lib/index.d.ts","gitHead":"348c7eda8228affdb9945b506a25340652bb7e70","scripts":{"test":"ts-node src/tests/benchmark.test.ts","build":"tsc","prepare":"npm run build","release":"npm run build && npm publish","test:load":"autocannon -c 100 -d 40 -p 10 localhost:3000","test:build":"node build/tests/benchmark.test.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"10.2.4","description":"tspace-spear is a lightweight API framework for Node.js that is fast and highly focused on providing the best developer experience. It utilizes the native HTTP server","directories":{},"_nodeVersion":"18.19.0","dependencies":{"formidable":"3.5.1","mime-types":"2.1.35","find-my-way":"8.2.0","on-finished":"2.4.1","swagger-ui-dist":"5.17.10","reflect-metadata":"0.1.14"},"_hasShrinkwrap":false,"devDependencies":{"yargs":"^17.7.2","express":"^4.19.2","fastify":"^4.28.1","ts-node":"^10.9.2","autocannon":"^7.15.0","typescript":"^5.4.5","@types/node":"^16.4.0","@types/yargs":"^17.0.32","@types/express":"^4.17.21","@types/autocannon":"^7.12.5","@types/formidable":"^3.4.5","@types/mime-types":"^2.1.4","@types/on-finished":"^2.3.4","@types/swagger-ui-dist":"^3.30.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.1.0_1722706216464_0.09869858624614425","host":"s3://npm-registry-packages"}},"1.1.1":{"name":"tspace-spear","version":"1.1.1","keywords":["tspace","tspace-spear","web","framework","web framework"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.1.1","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"3917b2866aab821bd6d48ea7167b0ae50da0108b","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.1.1.tgz","fileCount":45,"integrity":"sha512-1onS8ampYmGkzMWkNHfJYKmbmCfnshkWKb25DibFqeKIPVBZ5L7oW+bdeGNUzysdGXtkylk1grP4Xopmxfwxkw==","signatures":[{"sig":"MEUCIQDaAiXOVB4ChVkfwPHg1pL3HqB4ciEYAOHnj1YZw6PWTAIgW4AcXxuG0oA+d7jv5Xz02eJXXdQOPofM8PhHyBEGXVs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164245},"main":"./build/lib/index.js","type":"commonjs","types":"./build/lib/index.d.ts","gitHead":"348c7eda8228affdb9945b506a25340652bb7e70","scripts":{"load":"autocannon -c 100 -d 40 -p 10 localhost:3000","test":"npm run build && node build/tests/benchmark.test.js","build":"tsc","prepare":"npm run build","release":"npm run build && npm publish","test:build":"node build/tests/benchmark.test.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"10.2.4","description":"tspace-spear is a lightweight API framework for Node.js that is fast and highly focused on providing the best developer experience. It utilizes the native HTTP server","directories":{},"_nodeVersion":"18.19.0","dependencies":{"formidable":"3.5.1","mime-types":"2.1.35","find-my-way":"8.2.0","on-finished":"2.4.1","swagger-ui-dist":"5.17.10","reflect-metadata":"0.1.14"},"_hasShrinkwrap":false,"devDependencies":{"yargs":"^17.7.2","express":"^4.19.2","fastify":"^4.28.1","ts-node":"^10.9.2","autocannon":"^7.15.0","typescript":"^5.4.5","@types/node":"^16.4.0","@types/yargs":"^17.0.32","@types/express":"^4.17.21","@types/autocannon":"^7.12.5","@types/formidable":"^3.4.5","@types/mime-types":"^2.1.4","@types/on-finished":"^2.3.4","@types/swagger-ui-dist":"^3.30.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.1.1_1722795555985_0.3932167729290763","host":"s3://npm-registry-packages"}},"1.1.2":{"name":"tspace-spear","version":"1.1.2","keywords":["tspace","tspace-spear","api","rest api","framework"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.1.2","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"9ed6a23b193a6b2fd295fe9adaa30c360e1dd6f0","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.1.2.tgz","fileCount":45,"integrity":"sha512-/YCAlPfPQkLUiiV5EktcQbBv0P0OOAZGHRxz5h9Y+Gr13EXoSv8X/uQNmuBj1Wcr026Vi12KWZvDGz0FUvOAkw==","signatures":[{"sig":"MEUCIQC/ggiZzAj+YWDkbCmBISgQJNQ+z0ievjgag82E6hAC1QIgEH96ixpzTmwIjJ352vJjx8xD0SAL1O4kYO0LqP89Cjc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":164396},"main":"./build/lib/index.js","type":"commonjs","types":"./build/lib/index.d.ts","gitHead":"51ef5a2a21b728457cb51e008c078b018f320a3a","scripts":{"load":"autocannon -c 100 -d 40 -p 10 localhost:3000","test":"npm run build && node build/tests/benchmark.test.js","build":"tsc","prepare":"npm run build","release":"npm run build && npm publish","test:build":"node build/tests/benchmark.test.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"10.2.4","description":"tspace-spear is a lightweight API framework for Node.js that is fast and highly focused on providing the best developer experience. It utilizes the native HTTP server","directories":{},"_nodeVersion":"18.19.0","dependencies":{"formidable":"2.1.2","mime-types":"2.1.35","find-my-way":"7.4.0","on-finished":"2.4.1","swagger-ui-dist":"5.17.10","reflect-metadata":"0.1.14"},"_hasShrinkwrap":false,"devDependencies":{"yargs":"^17.7.2","express":"^4.19.2","fastify":"^4.28.1","ts-node":"^10.9.2","autocannon":"^7.15.0","typescript":"^5.4.5","@types/node":"^16.4.0","@types/yargs":"^17.0.32","@types/express":"^4.17.21","@types/autocannon":"^7.12.5","@types/formidable":"^3.4.5","@types/mime-types":"^2.1.4","tspace-echo-spear":"^1.0.0","@types/on-finished":"^2.3.4","@types/swagger-ui-dist":"^3.30.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.1.2_1723630883762_0.4099533964662365","host":"s3://npm-registry-packages"}},"1.1.3":{"name":"tspace-spear","version":"1.1.3","keywords":["tspace","tspace-spear","api","rest api","framework"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.1.3","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"93da728eed87a3d6370d3b83e1fb69320341e8bf","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.1.3.tgz","fileCount":45,"integrity":"sha512-O8k8EwfsO7QJYB8Y1d8vHrlaIQOjxYl8pO94Zm9ClHpIY8wEoBBPCoVX0EbJUmGs646Ezs+8DXRAw0cuXzrTvA==","signatures":[{"sig":"MEQCICn+j1DZpYRche8ye/zG5RAethXIv8HLW1k6WRPX2scGAiALYNLFQk1Cm4qWECUKLjE3pXhLb8bm6hmgFWj6xVx1cQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":168729},"main":"./build/lib/index.js","type":"commonjs","types":"./build/lib/index.d.ts","gitHead":"b1d71b57a2e253c0811e1b6aef48e5029727a832","scripts":{"load":"autocannon -c 100 -d 40 -p 10 localhost:3000","test":"npm run build && node build/tests/benchmark.test.js","build":"tsc","prepare":"npm run build","release":"npm run build && npm publish","test:build":"node build/tests/benchmark.test.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"10.2.4","description":"tspace-spear is a lightweight API framework for Node.js that is fast and highly focused on providing the best developer experience. It utilizes the native HTTP server","directories":{},"_nodeVersion":"18.19.0","dependencies":{"busboy":"1.6.0","mime-types":"2.1.35","find-my-way":"7.4.0","on-finished":"2.4.1","swagger-ui-dist":"5.17.10","reflect-metadata":"0.1.14"},"_hasShrinkwrap":false,"devDependencies":{"yargs":"17.7.2","express":"4.19.2","fastify":"4.28.1","ts-node":"10.9.2","autocannon":"7.15.0","typescript":"5.4.5","@types/node":"16.4.0","@types/yargs":"17.0.32","@types/busboy":"1.5.4","tspace-0spear":"1.0.0","@types/express":"4.17.21","@types/autocannon":"7.12.5","@types/mime-types":"2.1.4","@types/on-finished":"2.3.4","@types/swagger-ui-dist":"3.30.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.1.3_1724723101984_0.4264171967112875","host":"s3://npm-registry-packages"}},"1.1.4":{"name":"tspace-spear","version":"1.1.4","keywords":["tspace","tspace-spear","api","rest api","fast","low overhead"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.1.4","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"6a3b15578065a63bbe000915730b24552dcd3a82","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.1.4.tgz","fileCount":45,"integrity":"sha512-b9FbxjV1Dg1PBpEx4p+aRdmCisdvG6fKyoya4uKQHHQc2mRmBSQMnC6MX/RH1l4ZhuOmrlP78gjEZ7ebK8GMoQ==","signatures":[{"sig":"MEUCIH/jw6M5BxJa4SGKaHryk2PB8Vt9CGUJHtP1H1xG8kUwAiEAqlN6Ty9HZzMywgs7H3NCLJgksGBdyjpJ5S5NCJ9Atqo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":172410},"main":"./build/lib/index.js","type":"commonjs","types":"./build/lib/index.d.ts","gitHead":"2f7bde4164dae76187a595db670870fb0aa24d9f","scripts":{"load":"autocannon -c 100 -d 40 -p 10 localhost:3000","test":"npm run build && node build/tests/benchmark.test.js","build":"tsc","prepare":"npm run build","release":"npm run build && npm publish","test:build":"node build/tests/benchmark.test.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"8.19.4","description":"tspace-spear is a lightweight API framework for Node.js that is fast and highly focused on providing the best developer experience. It utilizes the native HTTP server","directories":{},"_nodeVersion":"16.20.2","dependencies":{"busboy":"1.6.0","mime-types":"2.1.35","find-my-way":"7.7.0","on-finished":"2.4.1","swagger-ui-dist":"5.17.10","reflect-metadata":"0.1.14"},"_hasShrinkwrap":false,"devDependencies":{"yargs":"17.7.2","express":"4.19.2","fastify":"4.28.1","ts-node":"10.9.2","autocannon":"7.15.0","typescript":"5.4.5","@types/node":"16.4.0","@types/yargs":"17.0.32","@types/busboy":"1.5.4","@types/express":"4.17.21","@types/autocannon":"7.12.5","@types/mime-types":"2.1.4","@types/on-finished":"2.3.4","@types/swagger-ui-dist":"3.30.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.1.4_1724857339275_0.7923521795168749","host":"s3://npm-registry-packages"}},"1.1.5":{"name":"tspace-spear","version":"1.1.5","keywords":["tspace","tspace-spear","api","rest api","fast","low overhead"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.1.5","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"23806ce7d23623fe3571d97eacb79591d7e137e5","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.1.5.tgz","fileCount":45,"integrity":"sha512-nPUgCPsjhSlPU3ersteCZPpiHnEkWy8YRerJv/qvAH5shI6Al9csTVTaoDYvrx2FjFdTi829ziEI9Ft4jHvayQ==","signatures":[{"sig":"MEYCIQDGrqiBuI37mudRIopN+W/nO7idg7krUhUgsujcGbYrlQIhAJ4TIU1K7nDnDh4ezxKr0qTEpxK4XNZRlk3drPV1C//6","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":175249},"main":"./build/lib/index.js","type":"commonjs","types":"./build/lib/index.d.ts","gitHead":"07aab20a29a3c36c3d587dfa1fd053fd99cbd41c","scripts":{"load":"autocannon -c 100 -d 40 -p 10 localhost:3000","test":"npm run build && node build/tests/benchmark.test.js","build":"tsc","prepare":"npm run build","release":"npm run build && npm publish","test:build":"node build/tests/benchmark.test.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"10.2.4","description":"tspace-spear is a lightweight API framework for Node.js that is fast and highly focused on providing the best developer experience. It utilizes the native HTTP server","directories":{},"_nodeVersion":"18.19.0","dependencies":{"busboy":"1.6.0","mime-types":"2.1.35","find-my-way":"7.7.0","on-finished":"2.4.1","swagger-ui-dist":"5.17.10","reflect-metadata":"0.1.14"},"_hasShrinkwrap":false,"devDependencies":{"yargs":"17.7.2","express":"4.19.2","fastify":"4.28.1","ts-node":"10.9.2","autocannon":"7.15.0","typescript":"5.4.5","@types/node":"16.4.0","@types/yargs":"17.0.32","@types/busboy":"1.5.4","@types/express":"4.17.21","@types/autocannon":"7.12.5","@types/mime-types":"2.1.4","@types/on-finished":"2.3.4","@types/swagger-ui-dist":"3.30.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.1.5_1728723471984_0.6125810811489298","host":"s3://npm-registry-packages"}},"1.1.6":{"name":"tspace-spear","version":"1.1.6","keywords":["tspace","tspace-spear","api","rest api","fast","low overhead"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.1.6","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"eb97f4dc0e9906defddf7882a151bba4466ecfe0","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.1.6.tgz","fileCount":45,"integrity":"sha512-t1XAxe8QOJoSM+vlQaYJ9yX1aFVHldedVUE8CsFPP1yhRWOIFcNc19rFebj7+8M0FxkF+oQfzJbbhMMjWzTC7w==","signatures":[{"sig":"MEUCIQCj7zmD2ZB+Tp0s26VJXUuiY4phd/4D+SvFVOKfjPbIdQIgOXg4Oo1kZSO2LogWjfn4qDbw0NvYlFLrT0mL92OXU/I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":176263},"main":"./build/lib/index.js","type":"commonjs","types":"./build/lib/index.d.ts","gitHead":"fbfdbfe9f16b3646c3b91e1dea15adcd0a8af7c3","scripts":{"load":"autocannon -c 100 -d 40 -p 10 localhost:3000","test":"npm run build && node build/tests/benchmark.test.js","build":"tsc","prepare":"npm run build","release":"npm run build && npm publish","test:build":"node build/tests/benchmark.test.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"6.14.18","description":"tspace-spear is a lightweight API framework for Node.js that is fast and highly focused on providing the best developer experience. It utilizes the native HTTP server","directories":{},"_nodeVersion":"14.21.3","dependencies":{"busboy":"1.6.0","mime-types":"2.1.35","find-my-way":"7.7.0","on-finished":"2.4.1","swagger-ui-dist":"5.17.10","reflect-metadata":"0.1.14"},"_hasShrinkwrap":false,"devDependencies":{"yargs":"17.7.2","express":"4.19.2","fastify":"4.28.1","ts-node":"10.9.2","autocannon":"7.15.0","typescript":"5.4.5","@types/node":"16.4.0","@types/yargs":"17.0.32","@types/busboy":"1.5.4","@types/express":"4.17.21","@types/autocannon":"7.12.5","@types/mime-types":"2.1.4","@types/on-finished":"2.3.4","@types/swagger-ui-dist":"3.30.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.1.6_1732118904142_0.5423163941844789","host":"s3://npm-registry-packages"}},"1.1.7":{"name":"tspace-spear","version":"1.1.7","keywords":["tspace","tspace-spear","api","rest api","fast","low overhead"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.1.7","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"cdd05f0c707b41ba50935743fc9b654419723de0","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.1.7.tgz","fileCount":45,"integrity":"sha512-jonHdRB+VTeKrts968UKyCp6pex4wfsP6zB6vDJY1Jpk+esLkS3t5iW00yh0OlSbCr1RsTsMWbqgpHE8W5teSQ==","signatures":[{"sig":"MEQCIBc8iuu9/QVAJ3+rxMgIa/JLqGcrFDPXJgwMxW4kce8wAiBx7y3dxs5KVzByJgukjGg++W8LqgeLfNzEMNHvByBHtg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":176308},"main":"./build/lib/index.js","type":"commonjs","types":"./build/lib/index.d.ts","gitHead":"709756528e2ddf33dd5342525cad0dc9cf245142","scripts":{"load":"autocannon -c 100 -d 40 -p 10 localhost:3000","test":"npm run build && node build/tests/benchmark.test.js","build":"tsc","prepare":"npm run build","release":"npm run build && npm publish","test:build":"node build/tests/benchmark.test.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"10.8.2","description":"tspace-spear is a lightweight API framework for Node.js that is fast and highly focused on providing the best developer experience. It utilizes the native HTTP server","directories":{},"_nodeVersion":"20.18.1","dependencies":{"busboy":"1.6.0","mime-types":"2.1.35","find-my-way":"7.7.0","on-finished":"2.4.1","swagger-ui-dist":"5.17.10","reflect-metadata":"0.1.14"},"_hasShrinkwrap":false,"devDependencies":{"yargs":"17.7.2","express":"4.19.2","fastify":"4.28.1","ts-node":"10.9.2","autocannon":"7.15.0","typescript":"5.4.5","@types/node":"16.4.0","@types/yargs":"17.0.32","@types/busboy":"1.5.4","@types/express":"4.17.21","@types/autocannon":"7.12.5","@types/mime-types":"2.1.4","@types/on-finished":"2.3.4","@types/swagger-ui-dist":"3.30.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.1.7_1736609439282_0.5706157176755724","host":"s3://npm-registry-packages-npm-production"}},"1.1.8":{"name":"tspace-spear","version":"1.1.8","keywords":["tspace","tspace-spear","api","rest api","fast","low overhead"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.1.8","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"9c31654ced73c8d99f5f9ae862faaf7cc50bf24d","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.1.8.tgz","fileCount":45,"integrity":"sha512-A5f0gygewfo+5XsW2MLKOurScmUYL05nJcEQH9O6xTTTBGo6CVcPYIOwB8hVADcUp6uNS4O7kvKeh6ruquF8IA==","signatures":[{"sig":"MEQCICm/K98N4drBWRU4x+xMp+c2bwBl9ShkyOxiqpzqvvYKAiAwMj4w25Qd0iVQWjPU9OdrntOivwD/VsI7UNsKXjxdgQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":177450},"main":"./build/lib/index.js","type":"commonjs","types":"./build/lib/index.d.ts","gitHead":"d4ea0acbcc07cefdaead9d302dafdf586bf91663","scripts":{"load":"autocannon -c 100 -d 40 -p 10 localhost:3000","test":"npm run build && node build/tests/benchmark.test.js","build":"tsc","prepare":"npm run build","release":"npm run build && npm publish","test:build":"node build/tests/benchmark.test.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"8.19.4","description":"tspace-spear is a lightweight API framework for Node.js that is fast and highly focused on providing the best developer experience. It utilizes the native HTTP server","directories":{},"_nodeVersion":"16.20.2","dependencies":{"busboy":"1.6.0","mime-types":"2.1.35","find-my-way":"7.7.0","on-finished":"2.4.1","swagger-ui-dist":"5.17.10","reflect-metadata":"0.1.14"},"_hasShrinkwrap":false,"devDependencies":{"yargs":"17.7.2","express":"4.19.2","fastify":"4.28.1","ts-node":"10.9.2","autocannon":"7.15.0","typescript":"5.4.5","@types/node":"16.4.0","@types/yargs":"17.0.32","@types/busboy":"1.5.4","@types/express":"4.17.21","@types/autocannon":"7.12.5","@types/mime-types":"2.1.4","@types/on-finished":"2.3.4","@types/swagger-ui-dist":"3.30.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.1.8_1749925098230_0.9799690216685244","host":"s3://npm-registry-packages-npm-production"}},"1.1.9":{"name":"tspace-spear","version":"1.1.9","keywords":["tspace","tspace-spear","api","rest api","fast","low overhead"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.1.9","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"626a62f6fd30e889ae4538bfb1bd85f5549caf5b","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.1.9.tgz","fileCount":45,"integrity":"sha512-OhEUyh30A4PFUB641rV3FeR9ttG+VBhURWTsSa7Tq44N/37bGxtZt8cqPPmCBkce9wB1JedfKiYcoWw8MnPYzQ==","signatures":[{"sig":"MEUCIQDhIkEYPEEEECEsvuZD2g0LmvYE4B+AN2zu1S2QJlDTZQIgLNwWkZ03JK6A81zGwB7xQWqlKanLRoi8qg53i6EFk8I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":178510},"main":"./build/lib/index.js","type":"commonjs","types":"./build/lib/index.d.ts","gitHead":"dd2745d8401d97fb07b9ebb5e9b815617ec147ff","scripts":{"load":"autocannon -c 100 -d 40 -p 10 localhost:3000","test":"npm run build && node build/tests/benchmark.test.js","build":"tsc","prepare":"npm run build","release":"npm run build && npm publish","test:build":"node build/tests/benchmark.test.js"},"_npmUser":{"name":"thanathip41","actor":{"name":"thanathip41","type":"user","email":"thanathip.louis@gmail.com"},"email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"10.2.4","description":"tspace-spear is a lightweight API framework for Node.js that is fast and highly focused on providing the best developer experience. It utilizes the native HTTP server","directories":{},"_nodeVersion":"16.20.2","dependencies":{"busboy":"1.6.0","mime-types":"2.1.35","find-my-way":"7.7.0","on-finished":"2.4.1","swagger-ui-dist":"5.17.10","reflect-metadata":"0.1.14"},"_hasShrinkwrap":false,"devDependencies":{"yargs":"17.7.2","express":"4.19.2","fastify":"4.28.1","ts-node":"10.9.2","autocannon":"7.15.0","typescript":"5.4.5","@types/node":"16.4.0","@types/yargs":"17.0.32","@types/busboy":"1.5.4","@types/express":"4.17.21","@types/autocannon":"7.12.5","@types/mime-types":"2.1.4","@types/on-finished":"2.3.4","@types/swagger-ui-dist":"3.30.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.1.9_1750252188334_0.3000542812303062","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"tspace-spear","version":"1.2.0","keywords":["tspace","tspace-spear","api","rest api","fast","low overhead"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.2.0","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"ad640586fa641415d26781a82702f4be0849ef2a","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.2.0.tgz","fileCount":45,"integrity":"sha512-k/syEgp+dtReUNhwG8EOn+6cu8Wb4O/ahKjRS4b+IY51+hmo0DpxemD/35OpLT4OINoyg0qBQWTidtIFT1S0FA==","signatures":[{"sig":"MEUCIQCzx1ckK8NGiiE8bfAMM2vC/mRpR6EXfZEpkS+aR4WU/AIgc53DJ1FrcIpP+1LUZL5NEuVWSsNgJB/RMlOE01/NJrg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":179093},"main":"./build/lib/index.js","type":"commonjs","types":"./build/lib/index.d.ts","gitHead":"18433355f983fb46da57010af8b96b770b682b6b","scripts":{"load":"autocannon -c 100 -d 40 -p 10 localhost:3000","test":"npm run build && node build/tests/benchmark.test.js","build":"tsc","prepare":"npm run build","release":"npm run build && npm publish","test:build":"node build/tests/benchmark.test.js"},"_npmUser":{"name":"thanathip41","actor":{"name":"thanathip41","type":"user","email":"thanathip.louis@gmail.com"},"email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"8.19.4","description":"tspace-spear is a lightweight API framework for Node.js that is fast and highly focused on providing the best developer experience. It utilizes the native HTTP server","directories":{},"_nodeVersion":"16.20.2","dependencies":{"busboy":"1.6.0","mime-types":"2.1.35","find-my-way":"7.7.0","on-finished":"2.4.1","swagger-ui-dist":"5.17.10","reflect-metadata":"0.1.14"},"_hasShrinkwrap":false,"devDependencies":{"yargs":"17.7.2","express":"4.19.2","fastify":"4.28.1","ts-node":"10.9.2","autocannon":"7.15.0","typescript":"5.4.5","@types/node":"16.4.0","@types/yargs":"17.0.32","@types/busboy":"1.5.4","@types/express":"4.17.21","@types/autocannon":"7.12.5","@types/mime-types":"2.1.4","@types/on-finished":"2.3.4","@types/swagger-ui-dist":"3.30.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.2.0_1751703762923_0.19325771932306002","host":"s3://npm-registry-packages-npm-production"}},"1.2.1-beta.1":{"name":"tspace-spear","version":"1.2.1-beta.1","keywords":["tspace","tspace-spear","api","rest api","fast","low overhead"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.2.1-beta.1","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"f3444e36370a573c0a4822cf47f0ab8a416573b2","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.2.1-beta.1.tgz","fileCount":33,"integrity":"sha512-auSAcyHmC1nkWegjj5hGJXwx/eyDgtk5ZCdllthfCTDycwAyaksemjOdhlBzVlAlLLsbZsci91/75rIcwLdRyA==","signatures":[{"sig":"MEUCIGD4gv1NSjR8gXD5AaY/sIZr7Y+PFTA0qgyDnUAsrOGDAiEAjy9eAR25Q7iWDnBu4n/Pm1UnNdR/LIGrDhiCW9QrZ3k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":166678},"main":"./dist/lib/index.js","type":"commonjs","types":"./dist/lib/index.d.ts","gitHead":"05e078e712aae16888d23a35f9b690829d44326d","scripts":{"beta":"npm run build && npm publish --tag beta","docs":"npx docsify-cli serve docs","load":"autocannon -c 100 -d 40 -p 10 localhost:3000","test":"npm run build && node dist/tests/benchmark.test.js","build":"tsc","prepare":"npm run build","release":"npm run build && npm publish","test:build":"node dist/tests/benchmark.test.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"10.5.0","description":"tspace-spear is a lightweight API framework for Node.js that is fast and highly focused on providing the best developer experience. It utilizes the native HTTP server","directories":{},"_nodeVersion":"18.20.0","dependencies":{"busboy":"1.6.0","mime-types":"2.1.35","find-my-way":"7.7.0","on-finished":"2.4.1","swagger-ui-dist":"5.32.0","reflect-metadata":"0.1.14"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"ws":"^8.18.3","yargs":"17.7.2","express":"4.19.2","fastify":"4.28.1","ts-node":"10.9.2","@types/ws":"^8.18.1","autocannon":"7.15.0","typescript":"5.1.6","@types/node":"16.4.0","docsify-cli":"4.4.4","@types/yargs":"17.0.32","@types/busboy":"1.5.4","tspace-0spear":"*","@types/express":"4.17.21","@types/autocannon":"7.12.5","@types/mime-types":"2.1.4","@types/on-finished":"2.3.4","@types/swagger-ui-dist":"3.30.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.2.1-beta.1_1773312026252_0.4825108102429396","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"tspace-spear","version":"1.2.1","keywords":["tspace","tspace-spear","api","rest api","fast","low overhead"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.2.1","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"3f14c7b143043d4b9cbb7aa81dd59a09a3f643a7","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.2.1.tgz","fileCount":33,"integrity":"sha512-QkmGq3RXyUcPQinoAjklm3ipc3QhLVBk6DP4InFUsNpecZ7TUGNLEvR2pfTcW6nPWo6DYy+aOvzq/kdNzG+VQw==","signatures":[{"sig":"MEUCIADHJ8gURuSUj2BOzQZFU1ZETmufjJkdVl0jqjPyjVEJAiEA1yFxWACmGYRUXMNdmQjT8vKoS04PAnAnwn5gTGYfilE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":181288},"main":"./dist/lib/index.js","type":"commonjs","types":"./dist/lib/index.d.ts","gitHead":"9c89159ec76157f109c8763be79127cc4d6d55df","scripts":{"beta":"npm run build && npm publish --tag beta","docs":"npx docsify-cli serve docs","load":"autocannon -c 100 -d 40 -p 10 localhost:3000","test":"npm run build && node dist/tests/benchmark.test.js","build":"tsc","prepare":"npm run build","release":"npm run build && npm publish"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"10.5.0","description":"tspace-spear is a lightweight API framework for Node.js that is fast and highly focused on providing the best developer experience. It utilizes the native HTTP server","directories":{},"_nodeVersion":"18.20.0","dependencies":{"busboy":"1.6.0","mime-types":"2.1.35","find-my-way":"7.7.0","on-finished":"2.4.1","swagger-ui-dist":"5.32.0","reflect-metadata":"0.1.14"},"_hasShrinkwrap":false,"devDependencies":{"ws":"8.18.3","zod":"4.3.6","yargs":"17.7.2","express":"4.19.2","fastify":"4.28.1","ts-node":"10.9.2","@types/ws":"8.18.1","autocannon":"7.15.0","typescript":"5.1.6","@types/node":"16.4.0","docsify-cli":"4.4.4","@types/yargs":"17.0.32","@types/busboy":"1.5.4","@types/express":"4.17.21","@types/autocannon":"7.12.5","@types/mime-types":"2.1.4","@types/on-finished":"2.3.4","@types/swagger-ui-dist":"3.30.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.2.1_1773399064977_0.44796961682822833","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"tspace-spear","version":"1.2.2","keywords":["tspace","tspace-spear","api","rest api","fast","low overhead"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.2.2","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"871fd45ea476ce95a84ab580001e788a77ec0a29","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.2.2.tgz","fileCount":45,"integrity":"sha512-iS9Qhx8UMN+FXxQrSSIR6Za8iPdAXsr0JSALtoLKqy12ZYZfebCvgwaKi9M0jJ79VDY5POV936gdpxcN9rWFkQ==","signatures":[{"sig":"MEUCIQCdtgTz+HRpzHTcBzE8KEaSTaX44+8+y6ICeE+xy8kB0QIgZEKrps7CLnaBxnpdlOqPqq3e3LfbW5qMmkDXz3BAIak=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":211895},"main":"./dist/lib/index.js","type":"commonjs","types":"./dist/lib/index.d.ts","engines":{"node":">=14"},"gitHead":"18950fd13c4f97975d8dc0a7ea4ddcffc541777a","scripts":{"beta":"npm run build && npm publish --tag beta","docs":"npx docsify-cli serve docs","load":"autocannon -c 100 -d 40 -p 10 localhost:3000","test":"npm run build && node dist/tests/benchmark.test.js","build":"tsc","prepare":"npm run build","release":"npm run build && npm publish"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"10.8.2","description":"tspace-spear is a lightweight API framework for Node.js that is fast and highly focused on providing the best developer experience. It utilizes the native HTTP server","directories":{},"_nodeVersion":"20.18.1","dependencies":{"busboy":"1.6.0","mime-types":"2.1.35","find-my-way":"8.2.2","on-finished":"2.4.1","swagger-ui-dist":"5.32.0","reflect-metadata":"0.2.2"},"_hasShrinkwrap":false,"devDependencies":{"ws":"8.18.3","zod":"4.3.6","yargs":"17.7.2","express":"4.19.2","fastify":"4.28.1","ts-node":"10.9.2","@types/ws":"8.18.1","autocannon":"7.15.0","typescript":"5.9.3","@types/node":"16.4.0","docsify-cli":"4.4.4","@types/yargs":"17.0.32","@types/busboy":"1.5.4","@types/express":"4.17.21","@types/autocannon":"7.12.5","@types/mime-types":"2.1.4","@types/on-finished":"2.3.4","@types/swagger-ui-dist":"3.30.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.2.2_1773427457189_0.62237759023969","host":"s3://npm-registry-packages-npm-production"}},"1.2.3":{"name":"tspace-spear","version":"1.2.3","keywords":["tspace","tspace-spear","api","rest api","fast","low overhead","http","uWS","uWebSockets","uWebSockets.js"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.2.3","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"589ffcaf7e24fa634be557f560c95aad46c445c1","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.2.3.tgz","fileCount":42,"integrity":"sha512-nTvI8f44MKAlG9iKM2aCjZRIWPFfkvDPDF5MlJbjIw4MgL4Jj48dvBLVMmH55nwLs+SLJ58809tMHEy3Fwn7Tw==","signatures":[{"sig":"MEQCIBKRxKDCFBGXrAklevrMzTUndKQ9bh4PLPaq8kmwTaJmAiBMLzY8USPT51wa19RBs++tek8xqS0jhmw7/1ojJLotMQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":237589},"main":"./dist/lib/index.js","type":"commonjs","types":"./dist/lib/index.d.ts","engines":{"node":">=14"},"gitHead":"867a1aa9e3d16f66f083feda31dbd8260da9f951","scripts":{"beta":"npm run build && npm publish --tag beta","docs":"npx docsify-cli serve docs","load":"autocannon -c 100 -d 30 -p 10 localhost:3000","test":"mocha  dist/tests/**/0*.test.js","build":"tsc","prepare":"npm run build","release":"npm run build && npm publish","benchmark":"npm run build && ts-node __tests__/benchmark.test.ts"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"10.7.0","description":"tspace-spear is a lightweight, high-performance API framework for Node.js that leverages the native HTTP server and supports uWebSockets.js (C++) for maximum speed and efficiency.","directories":{},"_nodeVersion":"18.20.4","dependencies":{"ws":"8.19.0","busboy":"1.6.0","mime-types":"2.1.35","find-my-way":"8.2.2","on-finished":"2.4.1","swagger-ui-dist":"5.32.0","reflect-metadata":"0.2.2"},"_hasShrinkwrap":false,"devDependencies":{"zod":"4.3.6","chai":"4.5.0","yargs":"17.7.2","express":"4.19.2","fastify":"4.28.1","ts-node":"10.9.2","@types/ws":"8.18.1","chai-http":"5.1.2","autocannon":"7.15.0","typescript":"5.9.3","@types/chai":"5.2.3","@types/jest":"30.0.0","@types/node":"16.4.0","docsify-cli":"4.4.4","@types/mocha":"10.0.10","@types/yargs":"17.0.32","@types/busboy":"1.5.4","@types/express":"4.17.21","@types/chai-http":"4.2.4","@types/autocannon":"7.12.5","@types/mime-types":"2.1.4","@types/on-finished":"2.3.4","@types/swagger-ui-dist":"3.30.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.2.3_1774458304885_0.8185251649210428","host":"s3://npm-registry-packages-npm-production"}},"1.2.4":{"name":"tspace-spear","version":"1.2.4","keywords":["tspace","tspace-spear","api","rest api","fast","fast-api","fast api","low overhead","http","uWS","uWebSockets","uWebSockets.js"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.2.4","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"1ff96be812167709d0ca9db276eefe4666672cb5","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.2.4.tgz","fileCount":66,"integrity":"sha512-OAG/HMmeF3z7fYHeQR1hJKfcFTzGwIloCqAvAps5wIEIcMV6BeB04+wsYN/TpFFuFiWVVRZy51webQVeeYyI+Q==","signatures":[{"sig":"MEYCIQCEPRJCf54aOOsDc4cOdPENVHlC9Uss3Tml6Q4lUmTdwgIhAPu0JapGN2U/5lm8i0ChhmN7ZITC7dQS/nw9KZzXqO+u","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":422795},"main":"./dist/lib/index.js","type":"commonjs","types":"./dist/lib/index.d.ts","engines":{"node":">=14"},"gitHead":"fcff36e40fea0e6909971dfdbfc6744ecaa26454","scripts":{"beta":"npm run build && npm publish --tag beta","docs":"npx docsify-cli serve docs","load":"autocannon -c 100 -d 30 -p 10 localhost:5000","test":"mocha  dist/tests/**/0*.test.js","build":"tsc","bm:bun":"npm run benchmark:bun","bm:node":"npm run benchmark:node","prepare":"npm run build","release":"npm run build && npm publish","benchmark:bun":"npm run build && bun run benchmarks/tests/benchmark.bun.js","benchmark:node":"npm run build && node benchmarks/tests/benchmark.node.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"11.6.4","description":"tspace-spear is a lightweight, high-performance API framework for Node.js that leverages the native HTTP server and supports uWebSockets.js (C++) for maximum speed and efficiency.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ws":"8.19.0","busboy":"1.6.0","xml2js":"0.6.2","mime-types":"2.1.35","on-finished":"2.4.1","swagger-ui-dist":"5.32.0","fast-querystring":"1.1.2","reflect-metadata":"0.2.2"},"_hasShrinkwrap":false,"devDependencies":{"zod":"4.3.6","hono":"4.12.9","0http":"4.4.0","elysia":"1.4.28","express":"4.19.2","fastify":"4.28.1","ts-node":"10.9.2","@types/ws":"8.18.1","autocannon":"7.15.0","typescript":"5.9.3","@types/node":"16.18.126","docsify-cli":"4.4.4","@types/busboy":"1.5.4","@types/xml2js":"0.4.14","@elysiajs/node":"1.4.5","@types/express":"4.17.21","uWebSockets.js":"github:uNetworking/uWebSockets.js#v20.63.0","@hono/node-server":"1.19.11","@types/autocannon":"7.12.5","@types/mime-types":"2.1.4","@types/on-finished":"2.3.4","@types/swagger-ui-dist":"3.30.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.2.4_1778082163064_0.354654265836861","host":"s3://npm-registry-packages-npm-production"}},"1.2.5":{"name":"tspace-spear","version":"1.2.5","keywords":["tspace","tspace-spear","api","rest api","fast","fast-api","fast api","low overhead","http","uWS","uWebSockets","uWebSockets.js"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.2.5","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"d402bdba48a5e350ea0c2cfa06699ee55096e2d4","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.2.5.tgz","fileCount":60,"integrity":"sha512-dhzGjZb6rcOHgIYD+M0JWGoXkt54U7OFDjyxaVKcX2yC8GJIfvEyXC784yOoAjVLhQkZGp9HILA6XT0DUqBuIg==","signatures":[{"sig":"MEYCIQClxpBhFkY3KgQQd4O7IYI60t/K045xU8BWw/890DeQzgIhAMLW5Bc2l4qXc1Jo6so5oEKH1Xbs+jZpUx2RepwMx8yX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":318616},"main":"./dist/lib/index.js","type":"commonjs","types":"./dist/lib/index.d.ts","engines":{"node":">=14"},"gitHead":"3b4f0fc972e5356e695dc3f62451d87dc6a84dd3","scripts":{"beta":"npm run build && npm publish --tag beta","docs":"npx docsify-cli serve docs","load":"autocannon -c 100 -d 30 -p 10 localhost:5000","test":"mocha  dist/tests/**/0*.test.js","build":"tsc","bm:bun":"npm run benchmark:bun","bm:node":"npm run benchmark:node","prepare":"npm run build","release":"npm run build && npm publish","benchmark:bun":"npm run build && bun run benchmarks/tests/benchmark.bun.js","benchmark:node":"npm run build && node benchmarks/tests/benchmark.node.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"10.5.0","description":"tspace-spear is a lightweight, high-performance API framework for Node.js that leverages the native HTTP server and supports uWebSockets.js (C++) for maximum speed and efficiency.","directories":{},"_nodeVersion":"18.20.0","dependencies":{"ws":"8.19.0","busboy":"1.6.0","xml2js":"0.6.2","mime-types":"2.1.35","on-finished":"2.4.1","swagger-ui-dist":"5.32.0","fast-querystring":"1.1.2","reflect-metadata":"0.2.2"},"_hasShrinkwrap":false,"devDependencies":{"zod":"4.3.6","hono":"4.12.9","0http":"4.4.0","elysia":"1.4.28","express":"4.19.2","fastify":"4.28.1","ts-node":"10.9.2","@types/ws":"8.18.1","autocannon":"7.15.0","typescript":"5.9.3","@types/node":"16.18.126","docsify-cli":"4.4.4","@types/busboy":"1.5.4","@types/xml2js":"0.4.14","@elysiajs/node":"1.4.5","@types/express":"4.17.21","uWebSockets.js":"github:uNetworking/uWebSockets.js#v20.63.0","@hono/node-server":"1.19.11","@types/autocannon":"7.12.5","@types/mime-types":"2.1.4","@types/on-finished":"2.3.4","@types/swagger-ui-dist":"3.30.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.2.5_1778128470414_0.5421101527899481","host":"s3://npm-registry-packages-npm-production"}},"1.2.5-beta.1":{"name":"tspace-spear","version":"1.2.5-beta.1","keywords":["tspace","tspace-spear","api","rest api","fast","fast-api","fast api","low overhead","http","uWS","uWebSockets","uWebSockets.js"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.2.5-beta.1","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"0817701b7f0a96514a09b39a17f75c6bbb38c33c","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.2.5-beta.1.tgz","fileCount":75,"integrity":"sha512-8fQ1byL7vRJ+oISBG0ib0CkCUvO+RyyHo/kEBuu3WCF2OeE8X2HaB2tA4xzP7DiiM/D0vnueIGTJIB31N3n9bw==","signatures":[{"sig":"MEYCIQDnGQ+K+tuESudI6cW8ISKygjSVNplzd8AZfngjFqcHWgIhAM1xfkPK7ITaPwXigoY/XZIXKbSIZ730HBzT7UWWCjgw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":336352},"main":"./dist/lib/index.js","type":"commonjs","types":"./dist/lib/index.d.ts","engines":{"node":">=14"},"gitHead":"f95622d610a6a76a982dd6e6b3f9d304c144e3d4","scripts":{"beta":"npm run build && npm publish --tag beta","docs":"npx docsify-cli serve docs","load":"autocannon -c 100 -d 30 -p 10 localhost:5000","test":"mocha  dist/tests/**/0*.test.js","build":"tsc","bm:bun":"npm run benchmark:bun","bm:node":"npm run benchmark:node","prepare":"npm run build","release":"npm run build && npm publish","benchmark:bun":"npm run build && bun run benchmarks/tests/benchmark.bun.js","benchmark:node":"npm run build && node benchmarks/tests/benchmark.node.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"11.6.4","description":"tspace-spear is a lightweight, high-performance API framework for Node.js that leverages the native HTTP server and supports uWebSockets.js (C++) for maximum speed and efficiency.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ws":"8.19.0","busboy":"1.6.0","xml2js":"0.6.2","ts-morph":"28.0.0","mime-types":"2.1.35","on-finished":"2.4.1","swagger-ui-dist":"5.32.0","fast-querystring":"1.1.2","reflect-metadata":"0.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"zod":"4.3.6","hono":"4.12.9","0http":"4.4.0","elysia":"1.4.28","express":"4.19.2","fastify":"4.28.1","ts-node":"10.9.2","@types/ws":"8.18.1","autocannon":"7.15.0","typescript":"5.9.3","@types/node":"16.18.126","docsify-cli":"4.4.4","@types/busboy":"1.5.4","@types/xml2js":"0.4.14","@elysiajs/node":"1.4.5","@types/express":"4.17.21","uWebSockets.js":"github:uNetworking/uWebSockets.js#v20.63.0","@hono/node-server":"1.19.11","@types/autocannon":"7.12.5","@types/mime-types":"2.1.4","@types/on-finished":"2.3.4","@types/swagger-ui-dist":"3.30.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.2.5-beta.1_1778397943612_0.8326364225811296","host":"s3://npm-registry-packages-npm-production"}},"1.2.5-beta.2":{"name":"tspace-spear","version":"1.2.5-beta.2","keywords":["tspace","tspace-spear","api","rest api","fast","fast-api","fast api","low overhead","http","uWS","uWebSockets","uWebSockets.js"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.2.5-beta.2","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"65b6049f4350734260f5f6c093bddc29447979be","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.2.5-beta.2.tgz","fileCount":75,"integrity":"sha512-m+YLStKx01mPjk1Bf7I0TTME3TxQxetpTybgbVPjK3RnrTpZXAG9YGh+qod3h9hMgnhxKBjwC4L5UDZHJPM4/g==","signatures":[{"sig":"MEUCIEZnj2tiWAWG6J1hQPLXF5zuRwUgWw/JaHYcKbZugPNLAiEArDa8H+Ij+nHtEFpHcWofDmvr4yIJ2+HzseK9YO9Juac=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":341505},"main":"./dist/lib/index.js","type":"commonjs","types":"./dist/lib/index.d.ts","engines":{"node":">=14"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/client/index.d.ts","import":"./dist/client/index.js"},"./server":{"types":"./dist/server/index.d.ts","import":"./dist/server/index.js"}},"gitHead":"f95622d610a6a76a982dd6e6b3f9d304c144e3d4","scripts":{"beta":"npm run build && npm publish --tag beta","docs":"npx docsify-cli serve docs","load":"autocannon -c 100 -d 30 -p 10 localhost:5000","test":"mocha  dist/tests/**/0*.test.js","build":"tsc","bm:bun":"npm run benchmark:bun","bm:node":"npm run benchmark:node","prepare":"npm run build","release":"npm run build && npm publish","benchmark:bun":"npm run build && bun run benchmarks/tests/benchmark.bun.js","benchmark:node":"npm run build && node benchmarks/tests/benchmark.node.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"11.6.4","description":"tspace-spear is a lightweight, high-performance API framework for Node.js that leverages the native HTTP server and supports uWebSockets.js (C++) for maximum speed and efficiency.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ws":"8.19.0","busboy":"1.6.0","xml2js":"0.6.2","ts-morph":"28.0.0","mime-types":"2.1.35","on-finished":"2.4.1","swagger-ui-dist":"5.32.0","fast-querystring":"1.1.2","reflect-metadata":"0.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"zod":"4.3.6","hono":"4.12.9","0http":"4.4.0","elysia":"1.4.28","express":"4.19.2","fastify":"4.28.1","ts-node":"10.9.2","@types/ws":"8.18.1","autocannon":"7.15.0","typescript":"5.9.3","@types/node":"16.18.126","docsify-cli":"4.4.4","@types/busboy":"1.5.4","@types/xml2js":"0.4.14","@elysiajs/node":"1.4.5","@types/express":"4.17.21","uWebSockets.js":"github:uNetworking/uWebSockets.js#v20.63.0","@hono/node-server":"1.19.11","@types/autocannon":"7.12.5","@types/mime-types":"2.1.4","@types/on-finished":"2.3.4","@types/swagger-ui-dist":"3.30.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.2.5-beta.2_1778403080442_0.8227138713140696","host":"s3://npm-registry-packages-npm-production"}},"1.2.5-beta.3":{"name":"tspace-spear","version":"1.2.5-beta.3","keywords":["tspace","tspace-spear","api","rest api","fast","fast-api","fast api","low overhead","http","uWS","uWebSockets","uWebSockets.js"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.2.5-beta.3","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"e31d0978bfc6e721e471ec38db9fbe99fb534fd2","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.2.5-beta.3.tgz","fileCount":75,"integrity":"sha512-0HWeEx38Q0sjdv2idBnH3x10cvHfo36lDLKeDwzKzw96JH4967H7gsb4PWpyXIXoxxasgx8OXnGkmzbzBsjxwQ==","signatures":[{"sig":"MEYCIQDZxObeeAR8dnXEamWQC/D/qUFpeQklzhK1xvlfaSkK0gIhAMFvPYXFnmG+payEYyUvE0gHNeif5eB63xAv5PlRVeWZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":341394},"main":"./dist/lib/index.js","type":"commonjs","types":"./dist/lib/index.d.ts","engines":{"node":">=14"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./client":{"types":"./dist/lib/core/client/index.d.ts","import":"./dist/lib/core/client/index.js"}},"gitHead":"f95622d610a6a76a982dd6e6b3f9d304c144e3d4","scripts":{"beta":"npm run build && npm publish --tag beta","docs":"npx docsify-cli serve docs","load":"autocannon -c 100 -d 30 -p 10 localhost:5000","test":"mocha  dist/tests/**/0*.test.js","build":"tsc","bm:bun":"npm run benchmark:bun","bm:node":"npm run benchmark:node","prepare":"npm run build","release":"npm run build && npm publish","benchmark:bun":"npm run build && bun run benchmarks/tests/benchmark.bun.js","benchmark:node":"npm run build && node benchmarks/tests/benchmark.node.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"11.6.4","description":"tspace-spear is a lightweight, high-performance API framework for Node.js that leverages the native HTTP server and supports uWebSockets.js (C++) for maximum speed and efficiency.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ws":"8.19.0","busboy":"1.6.0","xml2js":"0.6.2","ts-morph":"28.0.0","mime-types":"2.1.35","on-finished":"2.4.1","swagger-ui-dist":"5.32.0","fast-querystring":"1.1.2","reflect-metadata":"0.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"zod":"4.3.6","hono":"4.12.9","0http":"4.4.0","elysia":"1.4.28","express":"4.19.2","fastify":"4.28.1","ts-node":"10.9.2","@types/ws":"8.18.1","autocannon":"7.15.0","typescript":"5.9.3","@types/node":"16.18.126","docsify-cli":"4.4.4","@types/busboy":"1.5.4","@types/xml2js":"0.4.14","@elysiajs/node":"1.4.5","@types/express":"4.17.21","uWebSockets.js":"github:uNetworking/uWebSockets.js#v20.63.0","@hono/node-server":"1.19.11","@types/autocannon":"7.12.5","@types/mime-types":"2.1.4","@types/on-finished":"2.3.4","@types/swagger-ui-dist":"3.30.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.2.5-beta.3_1778403676355_0.3446451620664648","host":"s3://npm-registry-packages-npm-production"}},"1.2.5-beta.4":{"name":"tspace-spear","version":"1.2.5-beta.4","keywords":["tspace","tspace-spear","api","rest api","fast","fast-api","fast api","low overhead","http","uWS","uWebSockets","uWebSockets.js"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.2.5-beta.4","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"dist":{"shasum":"ca781e4c9db0957c301a824b00f7883ac3203c42","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.2.5-beta.4.tgz","fileCount":75,"integrity":"sha512-7VuxCBwnUWY14tp7hq3PqCyDdlX0hGAnV0ZkyMA5V1r5KA157L0+h3WuYYk6wVEBjm8s1TRTM49OKHycimFZSg==","signatures":[{"sig":"MEUCIQDtWN6tNvX/iP4vUKVi0WD0CNAVZDjo8tbBPLTQDYI/rAIgQ2IUFw7AIlVMrY1jxf2dingNMLvkHzaxAwtGQYaQXqA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":342684},"main":"./dist/lib/index.js","type":"commonjs","types":"./dist/lib/index.d.ts","engines":{"node":">=14"},"exports":{".":{"types":"./dist/lib/index.d.ts","import":"./dist/lib/index.js","require":"./dist/lib/index.js"},"./client":{"types":"./dist/lib/core/client/index.d.ts","import":"./dist/lib/core/client/index.js","require":"./dist/lib/core/client/index.js"}},"gitHead":"f95622d610a6a76a982dd6e6b3f9d304c144e3d4","scripts":{"beta":"npm run build && npm publish --tag beta","docs":"npx docsify-cli serve docs","load":"autocannon -c 100 -d 30 -p 10 localhost:5000","test":"mocha  dist/tests/**/0*.test.js","build":"tsc","bm:bun":"npm run benchmark:bun","bm:node":"npm run benchmark:node","prepare":"npm run build","release":"npm run build && npm publish","benchmark:bun":"npm run build && bun run benchmarks/tests/benchmark.bun.js","benchmark:node":"npm run build && node benchmarks/tests/benchmark.node.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"11.6.4","description":"tspace-spear is a lightweight, high-performance API framework for Node.js that leverages the native HTTP server and supports uWebSockets.js (C++) for maximum speed and efficiency.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ws":"8.19.0","busboy":"1.6.0","xml2js":"0.6.2","ts-morph":"28.0.0","mime-types":"2.1.35","on-finished":"2.4.1","swagger-ui-dist":"5.32.0","fast-querystring":"1.1.2","reflect-metadata":"0.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"zod":"4.3.6","hono":"4.12.9","0http":"4.4.0","elysia":"1.4.28","express":"4.19.2","fastify":"4.28.1","ts-node":"10.9.2","@types/ws":"8.18.1","autocannon":"7.15.0","typescript":"5.9.3","@types/node":"16.18.126","docsify-cli":"4.4.4","@types/busboy":"1.5.4","@types/xml2js":"0.4.14","@elysiajs/node":"1.4.5","@types/express":"4.17.21","uWebSockets.js":"github:uNetworking/uWebSockets.js#v20.63.0","@hono/node-server":"1.19.11","@types/autocannon":"7.12.5","@types/mime-types":"2.1.4","@types/on-finished":"2.3.4","@types/swagger-ui-dist":"3.30.4"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.2.5-beta.4_1778410284708_0.1951395578197983","host":"s3://npm-registry-packages-npm-production"}},"1.2.5-beta.5":{"name":"tspace-spear","version":"1.2.5-beta.5","keywords":["tspace","tspace-spear","api","rest api","fast","fast-api","fast api","low overhead","http","uWS","uWebSockets","uWebSockets.js"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.2.5-beta.5","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"bin":{"tspace-spear":"dist/cli/index.js"},"dist":{"shasum":"081ce45ed00d45e626ca063a8258b67d466eb5fa","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.2.5-beta.5.tgz","fileCount":87,"integrity":"sha512-XXB3Lkai7g0eVTnySF9NIZR52gzgQafovMXhXzBcEU6w4Kmdn1eV/3GIbWWj4MUMHgG2NIaqHk9QR5w8celndg==","signatures":[{"sig":"MEYCIQCrJMPcVKCIwfOY6Z4WcTWYb9jSspXRUEeZjyYs2LFpHgIhANuDPbgS8/D/Bg6xeK0J5+c6KMibbkPLuxznNJPmP0IR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":392814},"main":"./dist/lib/index.js","type":"commonjs","types":"./dist/lib/index.d.ts","engines":{"node":">=14"},"exports":{".":{"types":"./dist/lib/index.d.ts","import":"./dist/lib/index.js","require":"./dist/lib/index.js"},"./client":{"types":"./dist/lib/core/client/index.d.ts","import":"./dist/lib/core/client/index.js","require":"./dist/lib/core/client/index.js"}},"gitHead":"d0a66dfa64087f945e08fef2cac790558cc6d80f","scripts":{"beta":"npm run build && npm publish --tag beta","docs":"npx docsify-cli serve docs","load":"autocannon -c 100 -d 30 -p 10 localhost:5000","test":"ts-mocha ./__tests__/**/*.test.ts --reporter spec --no-timeouts --recursive --reporter mochawesome --reporter-options reportDir=__tests-report__,reportFilename=errors.html,reportTitle=Unit-test --exit","build":"tsc","bm:bun":"npm run benchmark:bun","bm:node":"npm run benchmark:node","prepare":"npm run build","release":"npm run build && npm publish","benchmark:bun":"npm run build && bun run benchmarks/tests/benchmark.bun.js","benchmark:node":"npm run build && node benchmarks/tests/benchmark.node.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"11.6.4","description":"tspace-spear is a lightweight, high-performance API framework for Node.js that leverages the native HTTP server and supports uWebSockets.js (C++) for maximum speed and efficiency.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ws":"8.19.0","busboy":"1.6.0","xml2js":"0.6.2","ts-morph":"28.0.0","mime-types":"2.1.35","node-fetch":"2.7.0","on-finished":"2.4.1","swagger-ui-dist":"5.32.0","fast-querystring":"1.1.2","reflect-metadata":"0.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"zod":"4.3.6","chai":"4.3.10","hono":"4.12.9","0http":"4.4.0","mocha":"10.2.0","elysia":"1.4.28","express":"4.19.2","fastify":"4.28.1","ts-node":"10.9.2","ts-mocha":"10.0.0","@types/ws":"8.18.1","autocannon":"7.15.0","typescript":"5.6.2","@types/chai":"4.3.11","@types/node":"16.18.126","docsify-cli":"4.4.4","mochawesome":"7.1.3","@types/mocha":"10.0.6","@types/busboy":"1.5.4","@types/xml2js":"0.4.14","@elysiajs/node":"1.4.5","@types/express":"4.17.21","uWebSockets.js":"github:uNetworking/uWebSockets.js#v20.63.0","chai-json-schema":"1.5.1","@hono/node-server":"1.19.11","@types/autocannon":"7.12.5","@types/mime-types":"2.1.4","@types/node-fetch":"^2.6.13","@types/on-finished":"2.3.4","@types/swagger-ui-dist":"3.30.4","@types/chai-json-schema":"1.4.9"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.2.5-beta.5_1778604441570_0.6746637596293252","host":"s3://npm-registry-packages-npm-production"}},"1.2.6":{"name":"tspace-spear","version":"1.2.6","keywords":["tspace","tspace-spear","api","rest api","fast","fast-api","fast api","low overhead","http","uWS","uWebSockets","uWebSockets.js"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.2.6","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"bin":{"tspace-spear":"dist/cli/index.js"},"dist":{"shasum":"71db0a702019718e823aa9493c30cd298e70b5af","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.2.6.tgz","fileCount":87,"integrity":"sha512-HKV0cMwUKq2bNJrSZFfjoWMsjjyOqU5rd7Wby7AOFXUCKbg5zq8j3zzX3eKNrpAiFRIAdrgq5NbrhQ48Nvs5vw==","signatures":[{"sig":"MEUCIQCsOSuQJd61YWzuQ+xgMMwhN51Gsg/yaNS9pU4oMK2pqwIgW7H6PNv2uepRN6TaeJ9ARsa3rTQkOS6OUnO+65/8Q4Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":407165},"main":"./dist/lib/index.js","type":"commonjs","types":"./dist/lib/index.d.ts","engines":{"node":">=14"},"exports":{".":{"types":"./dist/lib/index.d.ts","import":"./dist/lib/index.js","require":"./dist/lib/index.js"},"./client":{"types":"./dist/lib/core/client/index.d.ts","import":"./dist/lib/core/client/index.js","require":"./dist/lib/core/client/index.js"}},"gitHead":"b0d5de025fcba27de4586e96500e1bc2181b5ee3","scripts":{"beta":"npm run build && npm publish --tag beta","docs":"npx docsify-cli serve docs","load":"autocannon -c 100 -d 30 -p 10 localhost:5000","test":"ts-mocha ./__tests__/**/*.test.ts --reporter spec --no-timeouts --recursive --reporter mochawesome --reporter-options reportDir=__tests-report__,reportFilename=errors.html,reportTitle=Unit-test --exit","build":"tsc","bm:bun":"npm run benchmark:bun","bm:node":"npm run benchmark:node","prepare":"npm run build","release":"sh ./release.sh","benchmark:bun":"npm run build && bun run benchmarks/tests/benchmark.bun.js","benchmark:node":"npm run build && node benchmarks/tests/benchmark.node.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"11.6.4","description":"tspace-spear is a lightweight, high-performance API framework for Node.js that leverages the native HTTP server and supports uWebSockets.js (C++) for maximum speed and efficiency.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ws":"8.19.0","busboy":"1.6.0","xml2js":"0.6.2","ts-morph":"28.0.0","mime-types":"2.1.35","node-fetch":"2.7.0","on-finished":"2.4.1","swagger-ui-dist":"5.32.0","fast-querystring":"1.1.2","reflect-metadata":"0.2.2"},"_hasShrinkwrap":false,"devDependencies":{"zod":"4.3.6","chai":"4.3.10","hono":"4.12.9","0http":"4.4.0","mocha":"10.2.0","elysia":"1.4.28","express":"4.19.2","fastify":"4.28.1","ts-node":"10.9.2","ts-mocha":"10.0.0","@types/ws":"8.18.1","autocannon":"7.15.0","typescript":"5.6.2","@types/chai":"4.3.11","@types/node":"16.18.126","docsify-cli":"4.4.4","mochawesome":"7.1.3","@types/mocha":"10.0.6","@types/busboy":"1.5.4","@types/xml2js":"0.4.14","@elysiajs/node":"1.4.5","@types/express":"4.17.21","uWebSockets.js":"github:uNetworking/uWebSockets.js#v20.63.0","class-validator":"0.15.1","chai-json-schema":"1.5.1","@hono/node-server":"1.19.11","@types/autocannon":"7.12.5","@types/mime-types":"2.1.4","@types/node-fetch":"^2.6.13","class-transformer":"0.5.1","@types/on-finished":"2.3.4","@types/swagger-ui-dist":"3.30.4","@types/chai-json-schema":"1.4.9"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.2.6_1778772937999_0.2246406576493869","host":"s3://npm-registry-packages-npm-production"}},"1.2.6-beta.1":{"name":"tspace-spear","version":"1.2.6-beta.1","keywords":["tspace","tspace-spear","api","rest api","fast","fast-api","fast api","low overhead","http","uWS","uWebSockets","uWebSockets.js"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.2.6-beta.1","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"bin":{"tspace-spear":"dist/cli/index.js"},"dist":{"shasum":"5b6ea7e5f8e2389a3fd4d0d23e36f3c296cc1a60","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.2.6-beta.1.tgz","fileCount":87,"integrity":"sha512-J3JwU7AMvWwYGkx8uEbueoMa8IvNx5d9MNOBx/cPXIqyn0XXjES+habTzZRV+jxeDzb8UDCDWy704pp3pVE1mw==","signatures":[{"sig":"MEYCIQDwbudjD2UUr147CcqhwOaoKn+6W66nUONsYXVeagGxqgIhANBN8huzDwA2xx4ChlJu5mY08J75kvvr4AsmRwTMYmMu","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":403781},"main":"./dist/lib/index.js","type":"commonjs","types":"./dist/lib/index.d.ts","engines":{"node":">=14"},"exports":{".":{"types":"./dist/lib/index.d.ts","import":"./dist/lib/index.js","require":"./dist/lib/index.js"},"./client":{"types":"./dist/lib/core/client/index.d.ts","import":"./dist/lib/core/client/index.js","require":"./dist/lib/core/client/index.js"}},"gitHead":"9215b306da2dcece439167bb29df2083dc438405","scripts":{"beta":"npm run build && npm publish --tag beta","docs":"npx docsify-cli serve docs","load":"autocannon -c 100 -d 30 -p 10 localhost:5000","test":"ts-mocha ./__tests__/**/*.test.ts --reporter spec --no-timeouts --recursive --reporter mochawesome --reporter-options reportDir=__tests-report__,reportFilename=errors.html,reportTitle=Unit-test --exit","build":"tsc","bm:bun":"npm run benchmark:bun","bm:node":"npm run benchmark:node","prepare":"npm run build","release":"sh ./release.sh","benchmark:bun":"npm run build && bun run benchmarks/tests/benchmark.bun.js","benchmark:node":"npm run build && node benchmarks/tests/benchmark.node.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"11.6.4","description":"tspace-spear is a lightweight, high-performance API framework for Node.js that leverages the native HTTP server and supports uWebSockets.js (C++) for maximum speed and efficiency.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ws":"8.19.0","busboy":"1.6.0","xml2js":"0.6.2","ts-morph":"28.0.0","mime-types":"2.1.35","node-fetch":"2.7.0","on-finished":"2.4.1","swagger-ui-dist":"5.32.0","fast-querystring":"1.1.2","reflect-metadata":"0.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"zod":"4.3.6","chai":"4.3.10","hono":"4.12.9","0http":"4.4.0","mocha":"10.2.0","elysia":"1.4.28","express":"4.19.2","fastify":"4.28.1","ts-node":"10.9.2","ts-mocha":"10.0.0","@types/ws":"8.18.1","autocannon":"7.15.0","typescript":"5.6.2","@types/chai":"4.3.11","@types/node":"16.18.126","docsify-cli":"4.4.4","mochawesome":"7.1.3","@types/mocha":"10.0.6","@types/busboy":"1.5.4","@types/xml2js":"0.4.14","@elysiajs/node":"1.4.5","@types/express":"4.17.21","uWebSockets.js":"github:uNetworking/uWebSockets.js#v20.63.0","class-validator":"0.15.1","chai-json-schema":"1.5.1","@hono/node-server":"1.19.11","@types/autocannon":"7.12.5","@types/mime-types":"2.1.4","@types/node-fetch":"^2.6.13","class-transformer":"0.5.1","@types/on-finished":"2.3.4","@types/swagger-ui-dist":"3.30.4","@types/chai-json-schema":"1.4.9"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.2.6-beta.1_1778776231658_0.21620306293360803","host":"s3://npm-registry-packages-npm-production"}},"1.2.6-beta.2":{"name":"tspace-spear","version":"1.2.6-beta.2","keywords":["tspace","tspace-spear","api","rest api","fast","fast-api","fast api","low overhead","http","uWS","uWebSockets","uWebSockets.js"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.2.6-beta.2","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"bin":{"tspace-spear":"dist/cli/index.js"},"dist":{"shasum":"24bc46bf875cb5fb376f04f4ad8f39d400f97ef7","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.2.6-beta.2.tgz","fileCount":87,"integrity":"sha512-pu3jFLQc9Bv5gpoco0jrC9H+Hw5Sew/7OYLPfpju4cQQsUqT6pRYZKd0bq+mcSQ3Q2BVebfi+ibefs72NdBLDg==","signatures":[{"sig":"MEYCIQDR0ay1Qr+43kZ+An2AjjsZ8msrJ5cVbCMWxT8R2FUm+QIhAMuPGTbCICPClKAFRM2xDi99We57TMcEpLOXnoMxf0eg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":404490},"main":"./dist/lib/index.js","type":"commonjs","types":"./dist/lib/index.d.ts","engines":{"node":">=14"},"exports":{".":{"types":"./dist/lib/index.d.ts","import":"./dist/lib/index.js","require":"./dist/lib/index.js"},"./client":{"types":"./dist/lib/core/client/index.d.ts","import":"./dist/lib/core/client/index.js","require":"./dist/lib/core/client/index.js"}},"gitHead":"3cc920be1cb04104ba27a3acb7d9815981e9e559","scripts":{"beta":"npm run build && npm publish --tag beta","docs":"npx docsify-cli serve docs","load":"autocannon -c 100 -d 30 -p 10 localhost:5000","test":"ts-mocha ./__tests__/**/*.test.ts --reporter spec --no-timeouts --recursive --reporter mochawesome --reporter-options reportDir=__tests-report__,reportFilename=errors.html,reportTitle=Unit-test --exit","build":"tsc","bm:bun":"npm run benchmark:bun","bm:node":"npm run benchmark:node","prepare":"npm run build","release":"sh ./release.sh","benchmark:bun":"npm run build && bun run benchmarks/tests/benchmark.bun.js","benchmark:node":"npm run build && node benchmarks/tests/benchmark.node.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"11.6.4","description":"tspace-spear is a lightweight, high-performance API framework for Node.js that leverages the native HTTP server and supports uWebSockets.js (C++) for maximum speed and efficiency.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ws":"8.19.0","busboy":"1.6.0","xml2js":"0.6.2","ts-morph":"28.0.0","mime-types":"2.1.35","node-fetch":"2.7.0","on-finished":"2.4.1","swagger-ui-dist":"5.32.0","fast-querystring":"1.1.2","reflect-metadata":"0.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"zod":"4.3.6","chai":"4.3.10","hono":"4.12.9","0http":"4.4.0","mocha":"10.2.0","elysia":"1.4.28","express":"4.19.2","fastify":"4.28.1","ts-node":"10.9.2","ts-mocha":"10.0.0","@types/ws":"8.18.1","autocannon":"7.15.0","typescript":"5.6.2","@types/chai":"4.3.11","@types/node":"16.18.126","docsify-cli":"4.4.4","mochawesome":"7.1.3","@types/mocha":"10.0.6","@types/busboy":"1.5.4","@types/xml2js":"0.4.14","@elysiajs/node":"1.4.5","@types/express":"4.17.21","uWebSockets.js":"github:uNetworking/uWebSockets.js#v20.63.0","class-validator":"0.15.1","chai-json-schema":"1.5.1","@hono/node-server":"1.19.11","@types/autocannon":"7.12.5","@types/mime-types":"2.1.4","@types/node-fetch":"^2.6.13","class-transformer":"0.5.1","@types/on-finished":"2.3.4","@types/swagger-ui-dist":"3.30.4","@types/chai-json-schema":"1.4.9"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.2.6-beta.2_1778778279465_0.32219492153048246","host":"s3://npm-registry-packages-npm-production"}},"1.2.7":{"name":"tspace-spear","version":"1.2.7","keywords":["tspace","tspace-spear","api","rest api","fast","fast-api","fast api","low overhead","http","uWS","uWebSockets","uWebSockets.js"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.2.7","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"bin":{"tspace-spear":"dist/cli/index.js"},"dist":{"shasum":"53de40f95fef132b0dc47d142b087cc79c27586e","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.2.7.tgz","fileCount":84,"integrity":"sha512-ecyS+kJV3Y7u/jPK4YO94F4PNhhA1b6V4MgmHOuqfpHgEW2QCXiWtV4lopMxeZrHQd+q7DKJNovP2s5AyrGD0A==","signatures":[{"sig":"MEYCIQDbmLqtl0FqYjrt2UUPL9wS0BJQ66R36f29qfRJKBe3mAIhAN2Wi6GCUG/lbK8h6sanxGiIruP2/MJ4/xm5Hf6vG+Nb","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":408589},"main":"./dist/lib/index.js","type":"commonjs","types":"./dist/lib/index.d.ts","engines":{"node":">=14"},"exports":{".":{"types":"./dist/lib/index.d.ts","import":"./dist/lib/index.js","require":"./dist/lib/index.js"},"./client":{"types":"./dist/lib/core/client/index.d.ts","import":"./dist/lib/core/client/index.js","require":"./dist/lib/core/client/index.js"}},"gitHead":"d003786f86e7f8744ac048e89bfd2e427d10b81d","scripts":{"beta":"npm run build && npm publish --tag beta","docs":"npx docsify-cli serve docs","load":"autocannon -c 100 -d 30 -p 10 localhost:5000","test":"ts-mocha ./__tests__/**/*.test.ts --reporter spec --no-timeouts --recursive --reporter mochawesome --reporter-options reportDir=__tests-report__,reportFilename=errors.html,reportTitle=Unit-test --exit","build":"tsc","bm:bun":"npm run benchmark:bun","bm:node":"npm run benchmark:node","prepare":"npm run build","release":"sh ./release.sh","benchmark:bun":"npm run build && bun run benchmarks/tests/benchmark.bun.js","benchmark:node":"npm run build && node benchmarks/tests/benchmark.node.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"10.5.0","description":"tspace-spear is a lightweight, high-performance API framework for Node.js that leverages the native HTTP server and supports uWebSockets.js (C++) for maximum speed and efficiency.","directories":{},"_nodeVersion":"18.20.0","dependencies":{"ws":"8.19.0","busboy":"1.6.0","xml2js":"0.6.2","ts-morph":"28.0.0","mime-types":"2.1.35","node-fetch":"2.7.0","on-finished":"2.4.1","swagger-ui-dist":"5.32.0","fast-querystring":"1.1.2","reflect-metadata":"0.2.2"},"_hasShrinkwrap":false,"devDependencies":{"zod":"4.3.6","chai":"4.3.10","hono":"4.12.9","0http":"4.4.0","mocha":"10.2.0","elysia":"1.4.28","express":"4.19.2","fastify":"4.28.1","ts-node":"10.9.2","ts-mocha":"10.0.0","@types/ws":"8.18.1","autocannon":"7.15.0","typescript":"5.6.2","@types/chai":"4.3.11","@types/node":"16.18.126","docsify-cli":"4.4.4","mochawesome":"7.1.3","@types/mocha":"10.0.6","@types/busboy":"1.5.4","@types/xml2js":"0.4.14","@elysiajs/node":"1.4.5","@types/express":"4.17.21","uWebSockets.js":"github:uNetworking/uWebSockets.js#v20.63.0","class-validator":"0.15.1","chai-json-schema":"1.5.1","@hono/node-server":"1.19.11","@types/autocannon":"7.12.5","@types/mime-types":"2.1.4","@types/node-fetch":"^2.6.13","class-transformer":"0.5.1","@types/on-finished":"2.3.4","@types/swagger-ui-dist":"3.30.4","@types/chai-json-schema":"1.4.9"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.2.7_1778830341146_0.3950990819805569","host":"s3://npm-registry-packages-npm-production"}},"1.2.8":{"name":"tspace-spear","version":"1.2.8","keywords":["tspace","tspace-spear","api","rest api","fast","fast-api","fast api","low overhead","http","uWS","uWebSockets","uWebSockets.js"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.2.8","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"bin":{"spear":"dist/cli/index.js"},"dist":{"shasum":"4f4024d454f5faad845ebe75f5828e9f34e760bc","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.2.8.tgz","fileCount":153,"integrity":"sha512-VXaO2Dzz5RLhj9T1CB8yeQ8BcqHggsONk9iNZY4vyxJhDqFXcoUSF8eX/BtFr6O6QOVv5X+BZnU4VeSz6S0t2Q==","signatures":[{"sig":"MEUCIQCYTJujf4lcjSoQQF6z0mmcX3ijvBc5UKtByklA+Y6bmQIgNkHN2xbMULagwMsv4bhb3phsrfyD4x1ppSRi4lyfDLI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":484899},"main":"./dist/lib/index.js","type":"commonjs","types":"./dist/lib/index.d.ts","engines":{"node":">=14"},"exports":{".":{"types":"./dist/lib/index.d.ts","import":"./dist/lib/index.js","require":"./dist/lib/index.js"},"./client":{"types":"./dist/lib/core/client/index.d.ts","import":"./dist/lib/core/client/index.js","require":"./dist/lib/core/client/index.js"}},"gitHead":"b4f073d1ca3811224d25d20c71f21180d51efd52","scripts":{"beta":"npm run build && npm publish --tag beta","docs":"npx docsify-cli serve docs","load":"autocannon -c 100 -d 30 -p 10 localhost:5000","test":"ts-mocha ./__tests__/**/*.test.ts --reporter spec --no-timeouts --recursive --reporter mochawesome --reporter-options reportDir=__tests-report__,reportFilename=errors.html,reportTitle=Unit-test --exit","build":"tsc","bm:bun":"npm run benchmark:bun","bm:node":"npm run benchmark:node","prepare":"npm run build","release":"sh ./release.sh","benchmark:bun":"npm run build && bun run benchmarks/tests/benchmark.bun.js","benchmark:node":"npm run build && node benchmarks/tests/benchmark.node.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"11.6.4","description":"tspace-spear is a lightweight, high-performance API framework for Node.js that leverages the native HTTP server and supports uWebSockets.js (C++) for maximum speed and efficiency.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ws":"8.19.0","busboy":"1.6.0","xml2js":"0.6.2","ts-morph":"28.0.0","mime-types":"2.1.35","node-fetch":"2.7.0","on-finished":"2.4.1","swagger-ui-dist":"5.32.0","fast-querystring":"1.1.2","reflect-metadata":"0.2.2"},"_hasShrinkwrap":false,"devDependencies":{"zod":"4.3.6","chai":"4.3.10","hono":"4.12.9","0http":"4.4.0","mocha":"10.2.0","elysia":"1.4.28","express":"4.19.2","fastify":"4.28.1","ts-node":"10.9.2","ts-mocha":"10.0.0","@types/ws":"8.18.1","autocannon":"7.15.0","typescript":"5.6.2","@types/chai":"4.3.11","@types/node":"16.18.126","docsify-cli":"4.4.4","mochawesome":"7.1.3","@types/mocha":"10.0.6","@types/busboy":"1.5.4","@types/xml2js":"0.4.14","@elysiajs/node":"1.4.5","@types/express":"4.17.21","uWebSockets.js":"github:uNetworking/uWebSockets.js#v20.63.0","class-validator":"0.15.1","chai-json-schema":"1.5.1","@hono/node-server":"1.19.11","@types/autocannon":"7.12.5","@types/mime-types":"2.1.4","@types/node-fetch":"^2.6.13","class-transformer":"0.5.1","@types/on-finished":"2.3.4","@types/swagger-ui-dist":"3.30.4","@types/chai-json-schema":"1.4.9"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.2.8_1778952692144_0.21739991260497815","host":"s3://npm-registry-packages-npm-production"}},"1.2.9":{"name":"tspace-spear","version":"1.2.9","keywords":["tspace","tspace-spear","api","rest api","fast","fast-api","fast api","low overhead","http","uWS","uWebSockets","uWebSockets.js"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.2.9","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"bin":{"spear":"dist/cli/index.js"},"dist":{"shasum":"3618d089919b73ef3dcbc47535274b4bcdd3153b","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.2.9.tgz","fileCount":120,"integrity":"sha512-mEYr9AWcZ3O8Ehs129lp8ef03Eno8J/zf4WShR5dAJkz535+vi1Ci3lLgv8+m1fAcjYoAWBvGaAbFZXMj6s41w==","signatures":[{"sig":"MEQCIB+OoZnSB1rClWM2g+pnzfTUhSqjGzuZNuwVmozMogOfAiB1wumRvM6C1N+ahZSDh9XX3ehV2ID4Rd0bXWTlX0LDMQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":481022},"main":"./dist/lib/index.js","type":"commonjs","types":"./dist/lib/index.d.ts","engines":{"node":">=14"},"exports":{".":{"types":"./dist/lib/index.d.ts","import":"./dist/lib/index.js","require":"./dist/lib/index.js"},"./client":{"types":"./dist/lib/core/client/index.d.ts","import":"./dist/lib/core/client/index.js","require":"./dist/lib/core/client/index.js"}},"gitHead":"42eca9e9e98a4a948b1e1a57774c2030752253bf","scripts":{"beta":"npm run build && npm publish --tag beta","docs":"npx docsify-cli serve docs","load":"autocannon -c 100 -d 30 -p 10 localhost:5000","test":"ts-mocha ./__tests__/**/*.test.ts --reporter spec --slow 0 --no-timeouts --recursive --reporter mochawesome --reporter-options reportDir=__tests-report__,reportFilename=errors.html,reportTitle=Unit-test --exit","build":"tsc","bm:bun":"npm run benchmark:bun","bm:node":"npm run benchmark:node","prepare":"npm run build","release":"sh ./release.sh","benchmark:bun":"npm run build && bun run benchmarks/tests/benchmark.bun.js","benchmark:node":"npm run build && node benchmarks/tests/benchmark.node.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"8.19.4","description":"tspace-spear is a lightweight, high-performance API framework for Node.js that leverages the native HTTP server and supports uWebSockets.js (C++) for maximum speed and efficiency.","directories":{},"_nodeVersion":"16.20.2","dependencies":{"ws":"8.19.0","busboy":"1.6.0","xml2js":"0.6.2","ts-morph":"28.0.0","mime-types":"2.1.35","on-finished":"2.4.1","swagger-ui-dist":"5.32.0","fast-querystring":"1.1.2","reflect-metadata":"0.2.2"},"_hasShrinkwrap":false,"devDependencies":{"zod":"4.3.6","chai":"4.3.10","hono":"4.12.9","0http":"4.4.0","mocha":"10.2.0","elysia":"1.4.28","express":"4.19.2","fastify":"4.28.1","graphql":"16.14.0","ts-node":"10.9.2","ts-mocha":"10.0.0","@types/ws":"8.18.1","form-data":"4.0.5","autocannon":"7.15.0","node-fetch":"2.7.0","typescript":"5.6.2","@types/chai":"4.3.11","@types/node":"16.18.126","docsify-cli":"4.4.4","mochawesome":"7.1.3","@types/mocha":"10.0.6","graphql-http":"1.22.4","@types/busboy":"1.5.4","@types/xml2js":"0.4.14","@elysiajs/node":"1.4.5","@types/express":"4.17.21","uWebSockets.js":"github:uNetworking/uWebSockets.js#v20.63.0","class-validator":"0.15.1","chai-json-schema":"1.5.1","@hono/node-server":"1.19.11","@types/autocannon":"7.12.5","@types/mime-types":"2.1.4","@types/node-fetch":"^2.6.13","class-transformer":"0.5.1","@types/on-finished":"2.3.4","@types/swagger-ui-dist":"3.30.4","@types/chai-json-schema":"1.4.9"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.2.9_1779634188606_0.9462126682136094","host":"s3://npm-registry-packages-npm-production"}},"1.2.9-beta.1":{"name":"tspace-spear","version":"1.2.9-beta.1","keywords":["tspace","tspace-spear","api","rest api","fast","fast-api","fast api","low overhead","http","uWS","uWebSockets","uWebSockets.js"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.2.9-beta.1","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"bin":{"spear":"dist/cli/index.js"},"dist":{"shasum":"03319d7fe90ca2eb0797f37b99ff061957fc790f","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.2.9-beta.1.tgz","fileCount":138,"integrity":"sha512-0Of54hGAVuJvC9q7R6/tlWyyZ6NVNNv7dHyTxKeVkqqT8GTUsmJMSsXZ54YAXDVzeM7RDuPq1qri6hQGhcXAZw==","signatures":[{"sig":"MEQCIA2y35nb6LeSFZX72hw3TLnWSjV7+luayb9knoSPCDbyAiAggJgnhqj6Y/bhlWm+G0jq2FyvIHZsfVxGcY7QmyGPYg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":513835},"main":"./dist/lib/index.js","type":"commonjs","types":"./dist/lib/index.d.ts","engines":{"node":">=14"},"exports":{".":{"types":"./dist/lib/index.d.ts","import":"./dist/lib/index.js","require":"./dist/lib/index.js"},"./client":{"types":"./dist/lib/core/client/index.d.ts","import":"./dist/lib/core/client/index.js","require":"./dist/lib/core/client/index.js"},"./exception":{"types":"./dist/lib/core/exception/index.d.ts","import":"./dist/lib/core/exception/index.js","require":"./dist/lib/core/exception/index.js"}},"gitHead":"c28f622e1c5b02074ff3b4802280988140832c89","scripts":{"beta":"npm run build && npm publish --tag beta","docs":"npx docsify-cli serve docs","load":"autocannon -c 100 -d 30 -p 10 localhost:5000","test":"ts-mocha ./__tests__/**/*.test.ts --reporter spec --slow 0 --no-timeouts --recursive --reporter mochawesome --reporter-options reportDir=__tests-report__,reportFilename=errors.html,reportTitle=Unit-test --exit","build":"tsc","bm:bun":"npm run benchmark:bun","bm:node":"npm run benchmark:node","prepare":"npm run build","release":"sh ./release.sh","benchmark:bun":"npm run build && bun run  --no-warnings --optimize-for-size benchmarks/tests/benchmark.bun.js","benchmark:node":"npm run build && node --no-warnings --optimize-for-size benchmarks/tests/benchmark.node.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"10.9.2","description":"tspace-spear is a lightweight, high-performance API framework for Node.js that leverages the native HTTP server and supports uWebSockets.js (C++) for maximum speed and efficiency.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"8.19.0","busboy":"1.6.0","xml2js":"0.6.2","ts-morph":"28.0.0","mime-types":"2.1.35","on-finished":"2.4.1","swagger-ui-dist":"5.32.0","fast-querystring":"1.1.2","reflect-metadata":"0.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"zod":"4.3.6","chai":"4.3.10","hono":"4.12.9","0http":"4.4.0","mocha":"10.2.0","elysia":"1.4.28","express":"4.19.2","fastify":"4.28.1","graphql":"16.14.0","ts-node":"10.9.2","ts-mocha":"10.0.0","@types/ws":"8.18.1","form-data":"4.0.5","autocannon":"7.15.0","node-fetch":"2.7.0","typescript":"5.6.2","@types/chai":"4.3.11","@types/node":"16.18.126","docsify-cli":"4.4.4","mochawesome":"7.1.3","@types/mocha":"10.0.6","graphql-http":"1.22.4","graphql-yoga":"5.21.0","@types/busboy":"1.5.4","@types/xml2js":"0.4.14","@elysiajs/node":"1.4.5","@types/express":"4.17.21","uWebSockets.js":"github:uNetworking/uWebSockets.js#v20.63.0","class-validator":"0.15.1","chai-json-schema":"1.5.1","@hono/node-server":"1.19.11","@types/autocannon":"7.12.5","@types/mime-types":"2.1.4","@types/node-fetch":"^2.6.13","class-transformer":"0.5.1","@types/on-finished":"2.3.4","@types/swagger-ui-dist":"3.30.4","@types/chai-json-schema":"1.4.9"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.2.9-beta.1_1780995604628_0.3703005430031261","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"tspace-spear","version":"1.3.0","keywords":["tspace","tspace-spear","nodejs","node","framework","api","http","server","backend","web","typescript","type-safe","dependency-injection","decorators","middleware","routing","controller","rest","rest-api","high-performance","fast","lightweight","low-overhead","uws","uwebsockets","uwebsockets.js","native-http","e2e","end-to-end"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.3.0","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"bin":{"spear":"dist/cli/index.js"},"dist":{"shasum":"6373a9fdb664a2ab4e4465ce81b84671f99d03f8","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.3.0.tgz","fileCount":132,"integrity":"sha512-JT2u3AS54GdjuzkpUR+QU7VFckqrPgie88aFCQU3Jhn24/gxCVk+EC2nj7H1dthIkXunWPulbm5WQIZbkI9AEw==","signatures":[{"sig":"MEUCIQC466fEd4B1G5QeweG5Sr6U0ZiCcLdNlGQjWICzsTTZUwIgXPsHPyoPxr44k7T5JdO0n+uw9Wi9O6QN/fvJrUCkQtk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":529986},"main":"./dist/lib/index.js","type":"commonjs","types":"./dist/lib/index.d.ts","engines":{"node":">=14"},"exports":{".":{"types":"./dist/lib/index.d.ts","import":"./dist/lib/index.js","require":"./dist/lib/index.js"},"./client":{"types":"./dist/lib/core/client/index.d.ts","import":"./dist/lib/core/client/index.js","require":"./dist/lib/core/client/index.js"},"./exception":{"types":"./dist/lib/core/exception/index.d.ts","import":"./dist/lib/core/exception/index.js","require":"./dist/lib/core/exception/index.js"}},"gitHead":"d6836d31dd0be11f31b2e18ed3f1600d26f7b1f8","scripts":{"beta":"npm run build && npm publish --tag beta","docs":"npx docsify-cli serve docs","load":"autocannon -c 100 -d 30 -p 10 localhost:5000","test":"ts-mocha ./__tests__/**/0*.test.ts  --reporter spec --slow 0 --no-timeouts --recursive --reporter mochawesome --reporter-options reportDir=__tests-report__,reportFilename=errors.html,reportTitle=Unit-test --exit","build":"tsc","bm:bun":"npm run benchmark:bun","bm:node":"npm run benchmark:node","prepare":"npm run build","release":"sh ./release.sh","benchmark:bun":"npm run build && bun run  --no-warnings --optimize-for-size benchmarks/tests/benchmark.bun.js","benchmark:node":"npm run build && node --no-warnings --optimize-for-size benchmarks/tests/benchmark.node.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"11.6.4","description":"tspace-spear is a lightweight, high-performance API framework for Node.js that leverages the native HTTP server and supports uWebSockets.js (C++) for maximum speed and efficiency.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ws":"8.19.0","busboy":"1.6.0","xml2js":"0.6.2","ts-morph":"28.0.0","mime-types":"2.1.35","on-finished":"2.4.1","swagger-ui-dist":"5.32.0","fast-querystring":"1.1.2","reflect-metadata":"0.2.2"},"_hasShrinkwrap":false,"devDependencies":{"zod":"4.3.6","chai":"4.3.10","hono":"4.12.9","0http":"4.4.0","mocha":"10.2.0","elysia":"1.4.28","express":"4.19.2","fastify":"4.28.1","graphql":"16.14.0","ts-node":"10.9.2","ts-mocha":"10.0.0","@types/ws":"8.18.1","form-data":"4.0.5","autocannon":"7.15.0","node-fetch":"2.7.0","typescript":"5.6.2","@types/chai":"4.3.11","@types/node":"16.18.126","docsify-cli":"4.4.4","mochawesome":"7.1.3","@types/mocha":"10.0.6","graphql-http":"1.22.4","graphql-yoga":"5.21.0","@types/busboy":"1.5.4","@types/xml2js":"0.4.14","@elysiajs/node":"1.4.5","@types/express":"4.17.21","uWebSockets.js":"github:uNetworking/uWebSockets.js#v20.63.0","class-validator":"0.15.1","chai-json-schema":"1.5.1","@hono/node-server":"1.19.11","@types/autocannon":"7.12.5","@types/mime-types":"2.1.4","@types/node-fetch":"^2.6.13","class-transformer":"0.5.1","@types/on-finished":"2.3.4","@types/swagger-ui-dist":"3.30.4","@types/chai-json-schema":"1.4.9"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.3.0_1783260634818_0.27681879412209787","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"tspace-spear","version":"1.3.1","keywords":["tspace","tspace-spear","nodejs","node","framework","api","http","server","backend","web","typescript","type-safe","dependency-injection","decorators","middleware","routing","controller","rest","rest-api","high-performance","fast","lightweight","low-overhead","uws","uwebsockets","uwebsockets.js","native-http","e2e","end-to-end"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.3.1","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"bin":{"spear":"dist/cli/index.js"},"dist":{"shasum":"ffead776fb4f72bff1497270b17c745e15b7d5d5","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.3.1.tgz","fileCount":180,"integrity":"sha512-zrtnrlqE71I325QsbYZEAs3J6g9ur574SbH+uhEFXCr/0IFMFYzgzLFnDE/L1hwdnKJjqTSqLb43KLtDtDWxig==","signatures":[{"sig":"MEUCIQCCR6SuK/gco1q1ttNa/ji7qm1O3rMxwCACgwUs7enOoQIgQeyojivgBuS+UUcZdAbgJHbBjrKig1WtRXKHP1hdklM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":605931},"main":"./dist/lib/index.js","type":"commonjs","types":"./dist/lib/index.d.ts","engines":{"node":">=14"},"exports":{".":{"types":"./dist/lib/index.d.ts","import":"./dist/lib/index.js","require":"./dist/lib/index.js"},"./client":{"types":"./dist/lib/core/client/index.d.ts","import":"./dist/lib/core/client/index.js","require":"./dist/lib/core/client/index.js"},"./testing":{"types":"./dist/lib/core/testing/index.d.ts","import":"./dist/lib/core/testing/index.js","require":"./dist/lib/core/testing/index.js"},"./exception":{"types":"./dist/lib/core/exception/index.d.ts","import":"./dist/lib/core/exception/index.js","require":"./dist/lib/core/exception/index.js"}},"gitHead":"e1ca239b4f141c3521261e4af14015d2f8334c3e","scripts":{"beta":"npm run build && npm publish --tag beta","docs":"npx docsify-cli serve docs","load":"autocannon -c 100 -d 30 -p 10 localhost:5000","test":"npm run test:http & npm run test:net & npm run test:uws","build":"tsc","bm:bun":"npm run benchmark:bun","bm:uws":"npm run benchmark:uws","bm:node":"npm run benchmark:node","prepare":"npm run build","release":"sh ./release.sh","test:net":"cross-env TEST_ADAPTER=net npm run test:script","test:uws":"cross-env TEST_ADAPTER=uws npm run test:script","test:http":"cross-env TEST_ADAPTER=http npm run test:script","test:script":"ts-mocha ./__tests__/**/0*.test.ts  --reporter spec --slow 0 --no-timeouts --recursive --reporter mochawesome --reporter-options reportDir=__tests-report__,reportFilename=errors.html,reportTitle=Unit-test --exit","benchmark:bun":"npm run build && bun run --expose-gc  --no-warnings --optimize-for-size benchmarks/tests/benchmark.bun.js","benchmark:uws":"npm run build && node --expose-gc --no-warnings --optimize-for-size benchmarks/tests/benchmark.uws.js","benchmark:node":"npm run build && node --expose-gc --no-warnings --optimize-for-size benchmarks/tests/benchmark.node.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"11.6.4","description":"tspace-spear is a lightweight, high-performance API framework for Node.js that leverages the native HTTP server and supports uWebSockets.js (C++) for maximum speed and efficiency.","directories":{},"_nodeVersion":"22.16.0","dependencies":{"ws":"8.19.0","busboy":"1.6.0","xml2js":"0.6.2","ts-morph":"25.0.0","mime-types":"2.1.35","on-finished":"2.4.1","swagger-ui-dist":"5.32.0","fast-querystring":"1.1.2","reflect-metadata":"0.2.2"},"_hasShrinkwrap":false,"devDependencies":{"zod":"4.3.6","chai":"4.3.10","hono":"4.12.9","0http":"4.4.0","mocha":"10.2.0","elysia":"1.4.28","express":"4.19.2","fastify":"4.28.1","graphql":"16.14.0","ts-node":"10.9.2","ts-mocha":"10.0.0","@types/ws":"8.18.1","cross-env":"^7.0.3","form-data":"4.0.5","autocannon":"7.15.0","node-fetch":"2.7.0","typescript":"5.6.2","@types/chai":"4.3.11","@types/node":"16.18.126","docsify-cli":"4.4.4","mochawesome":"7.1.3","@types/mocha":"10.0.6","graphql-http":"1.22.4","graphql-yoga":"5.21.0","@ionited/mesh":"^0.8.0","@types/busboy":"1.5.4","@types/xml2js":"0.4.14","hyper-express":"^6.17.4","@elysiajs/node":"1.4.5","@types/express":"4.17.21","uWebSockets.js":"github:uNetworking/uWebSockets.js#v20.63.0","class-validator":"0.15.1","chai-json-schema":"1.5.1","@hono/node-server":"1.19.11","@types/autocannon":"7.12.5","@types/mime-types":"2.1.4","@types/node-fetch":"^2.6.13","class-transformer":"0.5.1","@types/on-finished":"2.3.4","@types/swagger-ui-dist":"3.30.4","@types/chai-json-schema":"1.4.9"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.3.1_1785323005811_0.44458879726471623","host":"s3://npm-registry-packages-npm-production"}},"1.3.1-beta.1":{"name":"tspace-spear","version":"1.3.1-beta.1","keywords":["tspace","tspace-spear","nodejs","node","framework","api","http","server","backend","web","typescript","type-safe","dependency-injection","decorators","middleware","routing","controller","rest","rest-api","high-performance","fast","lightweight","low-overhead","uws","uwebsockets","uwebsockets.js","native-http","e2e","end-to-end"],"author":{"url":"https://github.com/thanathip41","name":"Thanathip"},"license":"MIT","_id":"tspace-spear@1.3.1-beta.1","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"homepage":"https://github.com/thanathip41","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"bin":{"spear":"dist/cli/index.js"},"dist":{"shasum":"fb4e0e1c42a89caca1ff3a9c7a73f50245768991","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.3.1-beta.1.tgz","fileCount":192,"integrity":"sha512-wZG6Li6PQKVDzDbMv/HkV5aoXiiBFBBo6ZqaE8y15qWsC6qG5AIAIS2DG452xjp4nUG7hdGI9NVdRVXWNmVc9Q==","signatures":[{"sig":"MEUCIAnT2h15KRUQsi2V4QzdJWorlC1DJTgCzzqISXp5cjTQAiEA0dxBrrdpi1RvjByG1RdsheV6iBspHNGh8HeVs1lphLk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":654696},"main":"./dist/lib/index.js","type":"commonjs","types":"./dist/lib/index.d.ts","engines":{"node":">=14"},"exports":{".":{"types":"./dist/lib/index.d.ts","import":"./dist/lib/index.js","require":"./dist/lib/index.js"},"./client":{"types":"./dist/lib/core/client/index.d.ts","import":"./dist/lib/core/client/index.js","require":"./dist/lib/core/client/index.js"},"./testing":{"types":"./dist/lib/core/testing/index.d.ts","import":"./dist/lib/core/testing/index.js","require":"./dist/lib/core/testing/index.js"},"./exception":{"types":"./dist/lib/core/exception/index.d.ts","import":"./dist/lib/core/exception/index.js","require":"./dist/lib/core/exception/index.js"}},"gitHead":"daed99c4be0f48fa8246060c537358362c125057","scripts":{"beta":"npm run build && npm publish --tag beta","docs":"npx docsify-cli serve docs","load":"autocannon -c 100 -d 30 -p 10 localhost:5000","test":"npm run test:http & npm run test:net & npm run test:uws","build":"tsc","bm:bun":"npm run benchmark:bun","bm:uws":"npm run benchmark:uws","bm:node":"npm run benchmark:node","prepare":"npm run build","release":"sh ./release.sh","test:net":"cross-env TEST_ADAPTER=net npm run test:script","test:uws":"cross-env TEST_ADAPTER=uws npm run test:script","test:http":"cross-env TEST_ADAPTER=http npm run test:script","test:script":"ts-mocha ./__tests__/**/0*.test.ts  --reporter spec --slow 0 --no-timeouts --recursive --reporter mochawesome --reporter-options reportDir=__tests-report__,reportFilename=errors.html,reportTitle=Unit-test --exit","benchmark:bun":"npm run build && bun run --expose-gc  --no-warnings --optimize-for-size benchmarks/tests/benchmark.bun.js","benchmark:uws":"npm run build && node --expose-gc --no-warnings --optimize-for-size benchmarks/tests/benchmark.uws.js","benchmark:node":"npm run build && node --expose-gc --no-warnings --optimize-for-size benchmarks/tests/benchmark.node.js"},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"repository":{"url":"git+https://github.com/thanathip41/tspace-spear.git","type":"git"},"_npmVersion":"10.9.2","description":"tspace-spear is a lightweight, high-performance API framework for Node.js that leverages the native HTTP server and supports uWebSockets.js (C++) for maximum speed and efficiency.","directories":{},"_nodeVersion":"22.14.0","dependencies":{"ws":"8.19.0","busboy":"1.6.0","xml2js":"0.6.2","ts-morph":"25.0.0","mime-types":"2.1.35","on-finished":"2.4.1","swagger-ui-dist":"5.32.0","fast-querystring":"1.1.2","reflect-metadata":"0.2.2"},"_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"zod":"4.3.6","chai":"4.3.10","hono":"4.12.33","0http":"4.4.0","mocha":"10.2.0","elysia":"1.4.29","express":"4.19.2","fastify":"4.28.1","graphql":"16.14.0","ts-node":"10.9.2","ts-mocha":"10.0.0","@types/ws":"8.18.1","cross-env":"7.0.3","form-data":"4.0.5","@types/bun":"1.3.14","autocannon":"7.15.0","node-fetch":"2.7.0","typescript":"5.6.2","@types/chai":"4.3.11","@types/node":"16.18.126","docsify-cli":"4.4.4","mochawesome":"7.1.3","@types/mocha":"10.0.6","graphql-http":"1.22.4","graphql-yoga":"5.21.0","@ionited/mesh":"0.8.0","@types/busboy":"1.5.4","@types/xml2js":"0.4.14","hyper-express":"6.17.4","@elysiajs/node":"1.4.5","@types/express":"4.17.21","uWebSockets.js":"github:uNetworking/uWebSockets.js#v20.63.0","class-validator":"0.15.1","chai-json-schema":"1.5.1","@hono/node-server":"1.19.11","@types/autocannon":"7.12.5","@types/mime-types":"2.1.4","@types/node-fetch":"2.6.13","class-transformer":"0.5.1","@types/on-finished":"2.3.4","@types/swagger-ui-dist":"3.30.4","@types/chai-json-schema":"1.4.9"},"_npmOperationalInternal":{"tmp":"tmp/tspace-spear_1.3.1-beta.1_1785744415480_0.5361033520009697","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"tspace-spear","version":"1.3.2","description":"tspace-spear is a lightweight, high-performance API framework for Node.js that leverages the native HTTP server and supports uWebSockets.js (C++) for maximum speed and efficiency.","main":"./dist/lib/index.js","types":"./dist/lib/index.d.ts","bin":{"spear":"dist/cli/index.js"},"type":"commonjs","repository":{"type":"git","url":"git+https://github.com/thanathip41/tspace-spear.git"},"keywords":["tspace","tspace-spear","nodejs","node","framework","api","http","server","backend","web","typescript","type-safe","dependency-injection","decorators","middleware","routing","controller","rest","rest-api","high-performance","fast","lightweight","low-overhead","uws","uwebsockets","uwebsockets.js","native-http","e2e","end-to-end"],"author":{"name":"Thanathip","url":"https://github.com/thanathip41"},"license":"MIT","bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"homepage":"https://github.com/thanathip41","scripts":{"build":"tsc","prepare":"npm run build","release":"sh ./release.sh","beta":"npm run build && npm publish --tag beta","bm:uws":"npm run benchmark:uws","bm:node":"npm run benchmark:node","bm:bun":"npm run benchmark:bun","benchmark:uws":"npm run build && node --expose-gc --no-warnings --optimize-for-size benchmarks/tests/benchmark.uws.js","benchmark:node":"npm run build && node --expose-gc --no-warnings --optimize-for-size benchmarks/tests/benchmark.node.js","benchmark:bun":"npm run build && bun run --expose-gc  --no-warnings --optimize-for-size benchmarks/tests/benchmark.bun.js","load":"autocannon -c 100 -d 30 -p 10 localhost:5000","test:script":"ts-mocha ./__tests__/**/0*.test.ts  --reporter spec --slow 0 --no-timeouts --recursive --reporter mochawesome --reporter-options reportDir=__tests-report__,reportFilename=errors.html,reportTitle=Unit-test --exit","test":"npm run test:http & npm run test:net & npm run test:uws","test:http":"cross-env TEST_ADAPTER=http npm run test:script","test:uws":"cross-env TEST_ADAPTER=uws npm run test:script","test:net":"cross-env TEST_ADAPTER=net npm run test:script","docs":"npx docsify-cli serve docs"},"exports":{".":{"types":"./dist/lib/index.d.ts","import":"./dist/lib/index.js","require":"./dist/lib/index.js"},"./client":{"types":"./dist/lib/core/client/index.d.ts","import":"./dist/lib/core/client/index.js","require":"./dist/lib/core/client/index.js"},"./exception":{"types":"./dist/lib/core/exception/index.d.ts","import":"./dist/lib/core/exception/index.js","require":"./dist/lib/core/exception/index.js"},"./testing":{"types":"./dist/lib/core/testing/index.d.ts","import":"./dist/lib/core/testing/index.js","require":"./dist/lib/core/testing/index.js"}},"engines":{"node":">=14"},"dependencies":{"busboy":"1.6.0","fast-querystring":"1.1.2","mime-types":"2.1.35","on-finished":"2.4.1","reflect-metadata":"0.2.2","swagger-ui-dist":"5.32.0","ts-morph":"25.0.0","ws":"8.19.0","xml2js":"0.6.2"},"devDependencies":{"@elysiajs/node":"1.4.5","@hono/node-server":"1.19.11","@ionited/mesh":"0.8.0","@types/autocannon":"7.12.5","@types/bun":"1.3.14","@types/busboy":"1.5.4","@types/chai":"4.3.11","@types/chai-json-schema":"1.4.9","@types/express":"4.17.21","@types/mime-types":"2.1.4","@types/mocha":"10.0.6","@types/node":"16.18.126","@types/node-fetch":"2.6.13","@types/on-finished":"2.3.4","@types/swagger-ui-dist":"3.30.4","@types/ws":"8.18.1","@types/xml2js":"0.4.14","0http":"4.4.0","autocannon":"7.15.0","chai":"4.3.10","chai-json-schema":"1.5.1","class-transformer":"0.5.1","class-validator":"0.15.1","cross-env":"7.0.3","docsify-cli":"4.4.4","elysia":"1.4.29","express":"4.19.2","fastify":"4.28.1","form-data":"4.0.5","graphql":"16.14.0","graphql-http":"1.22.4","graphql-yoga":"5.21.0","hono":"4.12.33","hyper-express":"6.17.4","mocha":"10.2.0","mochawesome":"7.1.3","node-fetch":"2.7.0","ts-mocha":"10.0.0","ts-node":"10.9.2","typescript":"5.6.2","uWebSockets.js":"github:uNetworking/uWebSockets.js#v20.63.0","zod":"4.3.6"},"gitHead":"e0a3c6639157dfe3ca62244853226b948bba3f11","_id":"tspace-spear@1.3.2","_nodeVersion":"22.16.0","_npmVersion":"11.6.4","dist":{"integrity":"sha512-6o5btfIMX+5uFV3iIpQruAJRNmEil1vz3kC7bcQbb7SbznW1VZOdHPrhFDOIfmKV9lFDD00fFSbghD7UYjkm6Q==","shasum":"55a99a0657b8c258de9f9969d11c8671b42d703a","tarball":"https://registry.npmjs.org/tspace-spear/-/tspace-spear-1.3.2.tgz","fileCount":183,"unpackedSize":634292,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIB2LLpG/zA+ZmbsYMm6guPDtqe2KlXLG1L5M1I68cHYfAiEA/i6IISW5Fsh8wlWlotbgTCTTgPPTThyrQGJK4136jDk="}]},"_npmUser":{"name":"thanathip41","email":"thanathip.louis@gmail.com"},"directories":{},"maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/tspace-spear_1.3.2_1786289678585_0.42526463001388826"},"_hasShrinkwrap":false}},"time":{"created":"2024-05-02T17:46:07.548Z","modified":"2026-08-09T15:34:38.868Z","1.0.0":"2024-05-02T17:46:07.723Z","1.0.0-rc":"2024-05-02T18:21:33.902Z","1.0.0-rc-1":"2024-05-09T18:46:09.928Z","1.0.0-rc-2":"2024-05-12T17:01:27.341Z","1.0.1":"2024-06-29T19:59:54.964Z","1.0.2":"2024-07-20T06:13:50.331Z","1.0.3":"2024-07-20T06:20:13.783Z","1.0.4":"2024-07-20T06:25:14.811Z","1.0.5":"2024-07-20T06:30:00.501Z","1.0.6":"2024-07-20T06:36:10.745Z","1.0.7":"2024-07-21T16:54:05.863Z","1.0.8":"2024-07-22T13:19:31.996Z","1.0.9":"2024-07-31T17:23:23.629Z","1.1.0":"2024-08-03T17:30:16.743Z","1.1.1":"2024-08-04T18:19:16.168Z","1.1.2":"2024-08-14T10:21:23.964Z","1.1.3":"2024-08-27T01:45:02.156Z","1.1.4":"2024-08-28T15:02:19.452Z","1.1.5":"2024-10-12T08:57:52.180Z","1.1.6":"2024-11-20T16:08:24.345Z","1.1.7":"2025-01-11T15:30:39.475Z","1.1.8":"2025-06-14T18:18:18.434Z","1.1.9":"2025-06-18T13:09:48.516Z","1.2.0":"2025-07-05T08:22:43.126Z","1.2.1-beta.1":"2026-03-12T10:40:26.407Z","1.2.1":"2026-03-13T10:51:05.118Z","1.2.2":"2026-03-13T18:44:17.405Z","1.2.3":"2026-03-25T17:05:05.047Z","1.2.4":"2026-05-06T15:42:43.225Z","1.2.5":"2026-05-07T04:34:30.573Z","1.2.5-beta.1":"2026-05-10T07:25:43.780Z","1.2.5-beta.2":"2026-05-10T08:51:20.593Z","1.2.5-beta.3":"2026-05-10T09:01:16.499Z","1.2.5-beta.4":"2026-05-10T10:51:24.859Z","1.2.5-beta.5":"2026-05-12T16:47:21.727Z","1.2.6":"2026-05-14T15:35:38.160Z","1.2.6-beta.1":"2026-05-14T16:30:31.860Z","1.2.6-beta.2":"2026-05-14T17:04:39.618Z","1.2.7":"2026-05-15T07:32:21.335Z","1.2.8":"2026-05-16T17:31:32.294Z","1.2.9":"2026-05-24T14:49:48.803Z","1.2.9-beta.1":"2026-06-09T09:00:04.754Z","1.3.0":"2026-07-05T14:10:34.978Z","1.3.1":"2026-07-29T11:03:25.948Z","1.3.1-beta.1":"2026-08-03T08:06:55.639Z","1.3.2":"2026-08-09T15:34:38.744Z"},"bugs":{"url":"https://github.com/thanathip41/tspace-spear"},"author":{"name":"Thanathip","url":"https://github.com/thanathip41"},"license":"MIT","homepage":"https://github.com/thanathip41","keywords":["tspace","tspace-spear","nodejs","node","framework","api","http","server","backend","web","typescript","type-safe","dependency-injection","decorators","middleware","routing","controller","rest","rest-api","high-performance","fast","lightweight","low-overhead","uws","uwebsockets","uwebsockets.js","native-http","e2e","end-to-end"],"repository":{"type":"git","url":"git+https://github.com/thanathip41/tspace-spear.git"},"description":"tspace-spear is a lightweight, high-performance API framework for Node.js that leverages the native HTTP server and supports uWebSockets.js (C++) for maximum speed and efficiency.","maintainers":[{"name":"thanathip41","email":"thanathip.louis@gmail.com"}],"readme":"# tspace-spear\r\n\r\n[![NPM version](https://img.shields.io/npm/v/tspace-spear.svg)](https://www.npmjs.com)\r\n[![NPM downloads](https://img.shields.io/npm/dm/tspace-spear.svg)](https://www.npmjs.com)\r\n\r\n**tspace-spear** is a lightweight, high-performance API framework for Node.js, built on the native HTTP server with optional support for uWebSockets.js (C++) to achieve maximum speed and efficiency.\r\n\r\nIt is designed with a strong focus on developer experience and provides end-to-end (E2E) type safety and testing support across the full request lifecycle, from request input to response output (see [E2E](#e2e)).\r\n\r\n---\r\n\r\n## Features\r\n\r\n- ⚡ High-performance core built on native Node.js HTTP\r\n- 🚀 Optional [uWebSockets.js](#adapter) adapter support for ultra-low latency and maximum throughput\r\n- 🧠 End-to-end [E2E](#e2e) type safety across the entire request → response lifecycle\r\n- 🎮 Built-in support for [Controllers](#controller) and route-based architecture\r\n- 🏷️ Powerful Decorator system for [routes](#router), [middleware](#middleware), validation, and metadata\r\n- 💉 Built-in constructor-based dependency injection (DI) for [Services](#service)\r\n- 📦 [DTO](#dto) (Data Transfer Object) support for structured and type-safe request handling\r\n- 📂 Built-in [File Upload](#file-upload) support via `useFileUpload()` with zero configuration required\r\n- 🔌 Native [WebSocket](#web-socket) support for real-time applications and event-driven systems\r\n- ⚛️ [GraphQL](#graphql) support with flexible schema integration and HTTP adapters\r\n- 🖥️ Built-in [Cluster mode](#cluster) support for multi-core scalability and higher throughput\r\n- 🧪 Built-in testing utilities for [E2E](#e2e) validation\r\n- 🧩 Simple and intuitive developer experience\r\n- 📘 Auto-generated [Swagger](#swagger) documentation via `app.useSwagger()` with zero manual configuration\r\n- 🔥 Lightweight and optimized for high-performance APIs and microservices\r\n- 🧪 First-class testing support with built-in mocks, spies, and test utilities\r\n- 🎯 Type-safe testing APIs with zero-boilerplate setup\r\n\r\n---\r\n\r\n## Install\r\n\r\nInstall with [npm](https://www.npmjs.com/):\r\n\r\n```sh\r\nnpm install tspace-spear --save\r\nnpm install tspace-spear -g\r\n```\r\n\r\n## Documentation\r\n\r\nSee the [`docs`](https://thanathip41.github.io/tspace-spear) directory for full documentation.\r\n\r\n### 📖 Skills Documentation (Recommended for LLMs)\r\n\r\nFor AI assistants and LLMs, we recommend reading the [`skills/`](./skills) folder for comprehensive, easy-to-understand documentation:\r\n\r\n```bash\r\n# All skills documentation in one place\r\nskills/\r\n├── README.md              # Overview + 13 quick examples\r\n├── 00-quick-start.md      # Installation + Hello World\r\n├── 01-controllers.md      # Controllers + DI\r\n├── 02-routing.md          # Routes + Router groups\r\n├── 03-middleware.md       # Global + Route middleware\r\n├── 04-validation.md       # DTO + class-validator + Zod\r\n├── 05-response.md         # Response helpers\r\n├── 06-testing.md          # Unit + E2E testing\r\n├── 07-e2e-types.md        # Type-safe client\r\n├── 08-swagger.md          # OpenAPI documentation\r\n├── 09-websocket.md        # Real-time communication\r\n├── 10-file-upload.md      # File handling\r\n├── 11-custom-context.md   # Extend T.Context (user, session)\r\n└── 12-cli.md              # Code generators\r\n```\r\n\r\n**For LLMs:** Read `skills/README.md` first for an overview, then dive into specific skill files as needed. All examples are copy-paste ready!\r\n\r\n## Basic Usage\r\n- [Getting Started](#getting-started)\r\n- [Quick Started](#quick-started)\r\n- [Adapter](#adapter)\r\n- [Cluster](#cluster)\r\n- [Global Prefix](#global-prefix)\r\n- [Logger](#logger)\r\n- [Format Response](#format-response)\r\n  - [Notfound](#notfound)\r\n  - [Response](#response)\r\n  - [Catch](#catch)\r\n- [Cors](#cors)\r\n- [Body](#body)\r\n- [File Upload](#file-upload)\r\n- [Cookie](#cookie)\r\n- [Middleware](#middleware)\r\n- [Controller](#controller)\r\n- [Service](#service)\r\n- [Extending Context Type](#extending-context-type)\r\n- [Exception](#exception)\r\n- [Dto](#dto)\r\n- [Router](#router)\r\n- [Serve Static Files](#serve-static-files)\r\n- [Swagger](#swagger)\r\n- [WebSocket](#web-socket)\r\n- [Graphql](#graphql)\r\n- [E2E](#e2e)\r\n- [Testing](#testing)\r\n\r\n## Getting Started\r\n```js\r\nimport { Spear } from \"tspace-spear\";\r\n\r\nnew Spear()\r\n.get('/' , () => 'Hello world!')\r\n.get('/json' , () => {\r\n  return {\r\n    message : 'Hello world!'\r\n  }\r\n})\r\n.listen(8000 , () => console.log(`Server is now listening http://localhost:8000`))\r\n```\r\n\r\n## Quick Started\r\nGenerate applications, modules, controllers, services, and middleware with the Spear CLI.\r\n```sh\r\n# Install CLI globally\r\nnpm install -g tspace-spear\r\n\r\n# Create a new application structure\r\nspear create new my-app\r\n\r\n✔ Successfully created project \"my-app\"\r\n\r\n📦 Project Structure\r\n\r\nsrc/\r\n├── common/\r\n│   └── middlewares/\r\n│       └── log.middleware.ts\r\n│\r\n├── modules/\r\n│   └── cats/\r\n│       ├── cat.controller.ts\r\n│       ├── cat.service.ts\r\n│       └── cat.dto.ts\r\n│\r\n├── client.ts\r\n└── index.ts\r\n\r\n🚀 Next Steps\r\n\r\ncd my-app\r\n\r\nnpm run dev\r\n\r\n✔ Server is running at:\r\n  http://localhost:8000\r\n\r\n✔ Swagger Docs:\r\n  http://localhost:8000/api/docs\r\n\r\n✔ Run E2E client:\r\n  ts-node src/client.ts\r\n```\r\n\r\n## Adapter\r\ntspace-spear supports multiple server adapters, \r\nincluding the native Node.js HTTP server and uWebSockets.js for high performance.\r\n\r\n⚠️ Requirements for uWebSockets.js\r\nNode.js 18 or higher is required\r\nInstallation is done via GitHub (no official npm release)\r\n\r\n```js\r\nimport { Spear } from \"tspace-spear\";\r\nimport uWS from \"uWebSockets.js\";\r\n\r\n// Install via package.json\r\n// \"dependencies\": {\r\n//   \"uWebSockets.js\": \"github:uNetworking/uWebSockets.js#v20.45.0\"\r\n// }\r\n\r\nnew Spear({ adapter: uWS })\r\n.get(\"/\", () => \"Hello world!\")\r\n.get(\"/json\", () => {\r\n  return {\r\n    message: \"Hello world!\",\r\n  };\r\n})\r\n.listen(8000, () =>\r\n  console.log(\"uWS server is running at http://localhost:8000\")\r\n);\r\n```\r\n\r\n## Cluster\r\nCluster mode allows tspace-spear to run multiple worker processes to fully utilize multi-core CPU performance.\r\n```js\r\nimport { Spear } from \"tspace-spear\";\r\nnew Spear({\r\n  cluster : 3\r\n})\r\n.get('/' , () => 'Hello world!')\r\n.get('/json' , () => {\r\n  return {\r\n    message : 'Hello world!'\r\n  }\r\n})\r\n.listen(8000 , () => console.log(`Server is now listening http://localhost:8000`))\r\n\r\n```\r\n\r\n## Global Prefix\r\nGlobal Prefix allows you to define a base path for all routes in your application.\r\n\r\nIt helps keep your API structured and consistent (e.g. /api, /v1, /app).\r\n```js\r\nconst app = new Spear({\r\n  globalPrefix : '/api', // prefix all routes\r\n})\r\n.get('/' , () => 'Hello world!') // http://localhost:8000/api\r\n.get('/cats' , () => `Hello all cats`) // http://localhost:8000/api/cats\r\n.get('/cats/:id' , ({ params }) => `Hello cat: ${params.id}`) // http://localhost:8000/api/cats/1\r\n.listen(8000 , () => console.log(`Server is now listening http://localhost:8000`))\r\n\r\n// http://localhost:8000/api => 'Hello world!'\r\n\r\n// Or this\r\n\r\nconst app = new Spear()\r\n.useGlobalPrefix('api', {\r\n  exclude : [\r\n    {\r\n      path : '/cats/*',\r\n      // methods : '*'\r\n      // methods : ['GET','POST']\r\n    }\r\n  ]\r\n})\r\n.get('/' , () => 'Hello world!') // http://localhost:8000/api\r\n.get('/cats' , () => `Hello all cats`) // http://localhost:8000/cats\r\n.get('/cats/:id' , ({ params }) => `Hello cat: ${params.id}`) // http://localhost:8000/cats/1\r\n.listen(8000 , () => console.log(`Server is now listening http://localhost:8000`))\r\n```\r\n\r\n## Logger\r\nThe built-in Logger provides request logging for incoming HTTP requests.\r\n\r\nIt helps you monitor:\r\n\r\nRequest method\r\nRequest path\r\nPerformance tracking\r\nDebugging and observability\r\n\r\nYou can enable a simple logger or configure advanced logging behavior.\r\n```js\r\nconst app = new Spear({\r\n  logger :  true\r\n})\r\n// or use this for logging\r\n.useLogger({\r\n    methods     : ['GET','POST'],\r\n    exceptPath  : /\\/benchmark(\\/|$)|\\/favicon\\.ico(\\/|$)/ // or use Array ['/']\r\n})\r\n.get('/' , () => 'Hello world!')\r\n.listen(8000 , () => console.log(`Server is now listening http://localhost:8000`))\r\n\r\n```\r\n\r\n## Format Response\r\nProvides a consistent response structure system to standardize how responses are handled across your application.\r\n\r\nIt ensures that:\r\n\r\n* All responses are predictable\r\n* Errors are properly structured\r\n* Missing routes are handled cleanly\r\n* Global error catching is supported\r\n\r\n### Notfound\r\nThe NotFound handler is triggered when no route matches the incoming request.\r\n```js\r\nconst app = new Spear()\r\n.get('/' , () => {\r\n  return { \r\n    message: 'Hello world'\r\n  }\r\n})\r\n.notfound(({ res } : T.Context) => {\r\n  return res.notFound('Not found!')\r\n})\r\n.listen(8000 , () => console.log(`Server is now listening http://localhost:8000`))\r\n// http://localhost:8000/notfound => { success: false , message : 'Not found!' , statusCode: 404 }\r\n\r\n```\r\n\r\n### Response\r\nThe response system ensures that all returned values are automatically formatted and sent to the client.\r\n\r\nYou can return:\r\n\r\n* String\r\n* Object (JSON)\r\n* Custom response via ctx.res\r\n```js\r\nimport { Spear } from \"tspace-spear\";\r\n\r\nconst app = new Spear()\r\n.get('/' , () => {\r\n  return { \r\n    message: 'Hello world'\r\n  }\r\n})\r\n.response((results, statusCode) => {\r\n\r\n    if (typeof results === 'string') return results\r\n\r\n    if (Array.isArray(results)) {\r\n        return {\r\n          success: statusCode < 400,\r\n          data: results,\r\n          statusCode\r\n        }\r\n    }\r\n\r\n    if (typeof results === 'object' && results !== null) {\r\n        return {\r\n          success: statusCode < 400,\r\n          ...results,\r\n          statusCode\r\n        }\r\n    }\r\n\r\n    return {\r\n        success: statusCode < 400,\r\n        data: results,\r\n        statusCode\r\n    }\r\n})\r\n.listen(8000 , () => console.log(`Server is now listening http://localhost:8000`))\r\n// http://localhost:8000 => { success: true , message : 'Hello World' , statusCode: 200 }\r\n\r\n```\r\n\r\n### Catch\r\nThe Catch handler is used to handle unexpected runtime errors globally.\r\n\r\nIt acts as a safety layer to prevent server crashes and standardize error responses.\r\n\r\n```js\r\nimport { Spear } from \"tspace-spear\";\r\nimport { z } from \"zod\";\r\nconst app = new Spear()\r\n.get('/' , () => {\r\n  throw new Error('Catching failed')\r\n})\r\n.catch((err, { res } : T.Context) => {\r\n\r\n  if(err instanceof z.ZodError) {\r\n      return res\r\n      .status(422)\r\n      .json({\r\n          success    : false,\r\n          message: \"Validation failed\",\r\n          issues    : err?.issues,\r\n          statusCode : 422\r\n      });\r\n  }\r\n\r\n  return res\r\n  .status(500)\r\n  .json({\r\n      success    : false,\r\n      message    : err?.message,\r\n      statusCode : 500\r\n  });\r\n}) \r\n.listen(8000 , () => console.log(`Server is now listening http://localhost:8000`))\r\n// http://localhost:8000 => { success: false , message : 'Catching failed' , statusCode: 500 }\r\n\r\n```\r\n\r\n## Cors\r\nCORS (Cross-Origin Resource Sharing) controls which origins are allowed to access your API.\r\n\r\nIt helps secure your server by restricting or allowing cross-domain requests.\r\n```js\r\nconst app = new Spear()\r\n.cors({\r\n    origins: [\r\n      /^http:\\/\\/localhost:\\d+$/\r\n    ],\r\n    credentials: true\r\n})\r\n//.cors() allow *\r\n.listen(port , () => console.log(`Server is now allow cors localhost:* `))\r\n\r\n```\r\n\r\n## Body\r\nBody parsing allows your server to read incoming request payloads (JSON) and access them via ctx.body.\r\n\r\nIt enables handling requests with structured data.\r\n```js\r\n\r\nnew Spear()\r\n// enable body payload\r\n.useBodyParser()\r\n.post('/' , ({ body }) =>  {\r\n  return {\r\n    yourBody : body\r\n  }\r\n})\r\n.listen(8000 , () => console.log(`Server is now listening http://localhost:8000`))\r\n\r\n```\r\n\r\n## File Upload\r\nFile upload support allows handling multipart/form-data requests and working with uploaded files via ctx.files.\r\n\r\nIt provides:\r\n\r\n* Temporary file handling\r\n* File size limits\r\n* Manual file movement\r\n* Auto cleanup option\r\n```js\r\n\r\nimport { Spear, type T } from 'tspace-spear';\r\nimport path from 'path'\r\n\r\nnew Spear()\r\n// use this for enable file upload\r\n.useFileUpload({\r\n  limit : 1000 * 1000, // limit for file upload 1_000_000 bytes by default Infinity\r\n  tempFileDir : 'temp', // folder temporary directory by default tmp\r\n  removeTempFile : {\r\n    remove : true, // remove temporary files by default false\r\n    ms : 1000 * 60 // remove file temporary after 60 seconds\r\n  }\r\n})\r\n.post('/' , ({ files } : T.Context) => {\r\n\r\n  // you can move the file from temporary to other folder\r\n  // for example please validate the your input file\r\n  const file     = files.file[0]\r\n  const folder   = 'uploads'\r\n\r\n  await file.write(path.join(path.resolve(),`${folder}/${+new Date()}.${file.extension}`))\r\n\r\n  // after writed the file you should remove the temporary file\r\n  await file.remove()\r\n\r\n  return {\r\n    files\r\n  }\r\n})\r\n.listen(8000 , () => console.log(`Server is now listening http://localhost:8000`))\r\n\r\n```\r\n\r\n## Cookie\r\nCookie support allows you to read and manage HTTP cookies from incoming requests via ctx.cookies.\r\n\r\nIt is useful for:\r\n\r\n* Session handling\r\n* Authentication\r\n* User preferences\r\n* Stateful requests\r\n```js\r\n\r\nnew Spear()\r\n.useCookiesParser()\r\n.post('/' , ({ cookies }) =>  {\r\n  return {\r\n    yourCookies : cookies\r\n  }\r\n})\r\n.listen(8000 , () => console.log(`Server is now listening http://localhost:8000`))\r\n```\r\n\r\n## Middleware\r\nMiddleware is a function that runs before the controller handler and is used to:\r\n\r\n* Intercept requests\r\n* Modify ctx\r\n* Validate or block execution\r\n* Handle authentication / logging / transformations\r\n```js\r\nimport { type T } from \"tspace-spear\"\r\n// file cat-middleware.ts\r\nexport default (ctx : T.Context, next: T.NextFunction) =>{\r\n  console.log('cat middleware globals');\r\n  return next();\r\n}\r\n\r\nimport  Spear { Router, type T } from \"tspace-spear\";\r\nimport CatMiddleware from './cat-middleware.ts'\r\n\r\n(async () => {\r\n  const port = Number(process.env.PORT ?? 8000)\r\n  const app = new Spear({\r\n    middlewares: [ CatMiddleware ]\r\n    // if you want to import middlewares with a directory can you follow the example\r\n    // middlewares : {\r\n    //   folder : `${__dirname}/middlewares`,\r\n    //   name :  /middleware\\.(ts|js)$/i\r\n    // }\r\n  })\r\n\r\n  // or add a middleware\r\n  app.use((ctx : T.Context , next : T.NextFunction) => {\r\n    console.log('global middlewares')\r\n    return next()\r\n  })\r\n\r\n   app.get('/' ((ctx,next) => {\r\n    console.log('middleware on the crrent route')\r\n    return next()\r\n   }), ({ res } : T.Context) => {\r\n    return res.json({\r\n      message : 'hello world!'\r\n    });\r\n  })\r\n\r\n  app.get('/' , ({ res } : T.Context) => {\r\n    return res.json({\r\n      message : 'hello world!'\r\n    });\r\n  })\r\n\r\n  app.listen(port , () => console.log(`Server is now listening http://localhost:8000`))\r\n\r\n  // localhost:8000\r\n\r\n})()\r\n```\r\n\r\n## Controller\r\nA Controller is used to group related routes and define request handlers in a structured way.\r\n\r\nIt helps organize your application into modules (similar to NestJS / Express routers), while keeping a clean and readable API design.\r\n```js\r\nimport { \r\n  Controller , \r\n  Middleware , \r\n  Get , \r\n  Post,\r\n  Patch,\r\n  Put,\r\n  Delete,  \r\n  WriteHeader, \r\n  Query, \r\n  Body,\r\n  Params,\r\n  Cookies,\r\n  Files, \r\n  StatusCode,\r\n  type T\r\n} from 'tspace-spear';\r\n\r\nimport CatMiddleware from './cat-middleware.ts'\r\n\r\n// file cat-controller.ts\r\n@Controller('/cats')\r\nclass CatController {\r\n  @Get('/')\r\n  @Middleware(CatMiddleware)\r\n  @Query('test','id')\r\n  @Cookies('name')\r\n  public async index({ query , cookies } : { \r\n    query : T.Query<{ id : string }>\r\n    cookies : T.Cookies<{ name : string}>\r\n  }) {\r\n\r\n    return {\r\n      query,\r\n      cookies\r\n    }\r\n  }\r\n\r\n  @Get('/:id')\r\n  @Middleware(CatMiddleware)\r\n  @Params('id')\r\n  public async show({ params } : T.Context) {\r\n    return {\r\n      params\r\n    }\r\n  }\r\n\r\n  @Post('/')\r\n  @Middleware(CatMiddleware)\r\n  public async store({ body } : T.Context) {\r\n    return {\r\n      body\r\n    }\r\n  }\r\n\r\n  @Put('/:id')\r\n  @Middleware(CatMiddleware)\r\n  public async update({ files } : T.Context) {\r\n    return {\r\n     files\r\n    }\r\n  }\r\n\r\n  @Post('/upload')\r\n  @Middleware(CatMiddleware)\r\n  public async upload({ files } : T.Context) {\r\n    return {\r\n     files\r\n    }\r\n  }\r\n\r\n  @Delete('/:id')\r\n  @Middleware(CatMiddleware)\r\n  public async destroy({ params } : T.Context) {\r\n    return {\r\n     params\r\n    }\r\n  }\r\n}\r\n\r\nimport { Spear } , { Router, type T } from \"tspace-spear\";\r\n\r\nimport CatController from './cat-controller.ts'\r\n\r\n(async () => {\r\n\r\n  const app = new Spear({\r\n    controllers: [ CatController ]\r\n    // if you want to import controllers with a directory can you follow the example\r\n    // controllers : {\r\n    //   folder : `${__dirname}/controllers`, // nestjs style `${__dirname}/modules/*`\r\n    //   name :  /controller\\.(ts|js)$/i,\r\n\r\n    //   *Auto-generate route metadata for type-safe E2E usage, \r\n    //   *and swagger documentation. By default if use .useSwagger() in app no need to set any description \r\n    //   preRouteTypes : true \r\n    // }\r\n  })\r\n\r\n  app.useBodyParser()\r\n  app.useCookiesParser()\r\n  app.useFileUpload()\r\n\r\n  app.get('/' , ( { res } : T.Context) => {\r\n    return res.json({\r\n      message : 'hello world!'\r\n    });\r\n  })\r\n\r\n  app.listen(8000 , () => console.log(`Server is now listening http://localhost:8000`))\r\n\r\n  // localhost:8000/cats \r\n  // localhost:8000/cats/41\r\n\r\n})()\r\n```\r\n\r\n## Service\r\nRegisters one or more service classes for Dependency Injection.\r\n\r\nAll registered services will be available in the controller constructor\r\nwithout manual instantiation.\r\n```js\r\n// cat-service.ts\r\nclass CatService {\r\n  public index () {\r\n    return [\r\n      {\r\n        id: 1,\r\n        name: 'cat1'\r\n      },\r\n      {\r\n        id: 2,\r\n        name: 'cat2'\r\n      }\r\n    ]\r\n  }\r\n}\r\n\r\n// cat-controller.ts\r\nimport { \r\n  Controller, \r\n  Get\r\n} from 'tspace-spear';\r\nimport CatService from './cat-service.ts'\r\n\r\n@Dependencies([CatService]) // don't forgot this to send CatService for Dependency Injection(DI)\r\n@Controller('/cats')\r\nclass CatController {\r\n\r\n  constructor(\r\n    private catService: CatService\r\n  ) {}\r\n\r\n  @Get('/')\r\n  public index() {\r\n    return this.catService.index();\r\n  }\r\n}\r\n\r\n// app.ts\r\nimport { Spear } from \"tspace-spear\";\r\n\r\n(async () => {\r\n\r\n  const app = new Spear({\r\n    controllers : {\r\n      folder : `${__dirname}/controllers`,\r\n      name :  /controller\\.(ts|js)$/i,\r\n      preRouteTypes : true \r\n    }\r\n  });\r\n  \r\n  app.useSwagger();\r\n\r\n  app.listen(8000 , () => console.log(`Server is now listening http://localhost:8000`));\r\n})()\r\n```\r\n\r\n## Extending Context Type\r\n`tspace-spear` supports TypeScript module augmentation, allowing you to extend the default `Context` type with your own application-specific properties.\r\n\r\nThis is useful for adding custom data such as `user`, `session`, `permissions`, or authentication information.\r\n```js\r\n// Create `types.d.ts` in your project src:\r\nimport { ContextExtensions } from 'tspace-spear';\r\n\r\ntype User = {\r\n  id    : number;\r\n  name  : string;\r\n  email : string;\r\n}\r\n\r\ndeclare module \"tspace-spear\" {\r\n  interface ContextExtensions {\r\n    user ?: User;\r\n  }\r\n}\r\n\r\n// Make sure types.d.ts is included in your tsconfig.json:\r\n\r\n// {\r\n//   \"include\": [\r\n//     \"src\",\r\n//     \"src/types.d.ts\"\r\n//   ]\r\n// }\r\n\r\n// index.ts\r\nimport { Spear, type T } from \"tspace-spear\";\r\n\r\nconst app = new Spear();\r\n\r\napp.use((ctx: T.Context, next: T.NextFunction) => {\r\n  // fake auth\r\n  ctx.user = {\r\n    id: 1,\r\n    name: \"John Doe\",\r\n    email: \"john_doe@gmail.com\"\r\n  };\r\n  return next();\r\n});\r\n\r\napp.get(\"/\", (ctx: T.Context) => {\r\n  if (!ctx.user) {\r\n    return ctx.res.unauthorized()\r\n  }\r\n  return ctx.user!;\r\n});\r\n\r\napp.listen(8000, () => {\r\n  console.log(\"Server is running at http://localhost:8000\");\r\n});\r\n\r\n```\r\n## Exception\r\nExceptions are used to return HTTP errors from your application.\r\n```js\r\nimport {\r\n  BadRequestException,\r\n  UnauthorizedException,\r\n  ForbiddenException,\r\n  NotFoundException,\r\n  MethodNotAllowedException,\r\n  ConflictException,\r\n  GoneException,\r\n  UnsupportedMediaTypeException,\r\n  UnprocessableEntityException,\r\n  TooManyRequestsException,\r\n  InternalServerErrorException,\r\n  NotImplementedException,\r\n  BadGatewayException,\r\n  ServiceUnavailableException,\r\n  GatewayTimeoutException,\r\n} from 'tspace-spear/exception';\r\n\r\n@Controller('/users')\r\nclass UserController {\r\n  @Get('/:id')\r\n  public async show({ params }) {\r\n\r\n    if (!params.id) {\r\n      throw new BadRequestException('User id is required');\r\n    }\r\n\r\n    return {\r\n      id: params.id,\r\n    };\r\n  }\r\n}\r\n```\r\n\r\n## Dto\r\nDTO (Data Transfer Object) is used to validate and transform incoming request data before it reaches your controller logic.\r\n```js\r\nimport { \r\n  Controller , \r\n  Post,\r\n  Validate,\r\n  ValidateDto,\r\n  createDtoDecorator,\r\n  type T\r\n} from 'tspace-spear';\r\n\r\nimport z from \"zod\";\r\n\r\nimport { \r\n  IsString, \r\n  IsInt, \r\n  validate \r\n} from \"class-validator\";\r\n\r\nconst ValidateDtoCustomBody = (keys: string[]) => {\r\n  return createDtoDecorator((ctx) => {\r\n    const body = ctx.body ?? {};\r\n    const issues: Array<{ path: string; message: string }> = [];\r\n\r\n    for (let i = 0; i < keys.length; i++) {\r\n      const key = keys[i];\r\n\r\n      if (body[key] == null) {\r\n          issues.push({\r\n              path: key,\r\n              message: \"Missing field\",\r\n          });\r\n      }\r\n    }\r\n\r\n    if (issues.length > 0) {\r\n      throw {\r\n        message : \"Validation failed\",\r\n        issues\r\n      }\r\n    }\r\n  });\r\n}\r\n\r\nconst ValidateDtoPromiseBody = (keys: string[]) => {\r\n  return createDtoDecorator(async (ctx) => {\r\n      await new Promise(resolve => setTimeout(resolve,500));\r\n      // check in DB or other async operation\r\n      const cats = await catRepository.findMany({ where : { name : ctx.body.name }});\r\n\r\n      if(!cats.length) {\r\n       throw new Error('Validation failed in promise!');\r\n      }\r\n\r\n  }, (ctx, error) => {\r\n    // you implement your custom error handling for async validation here\r\n    return ctx.res.status(400).json({\r\n      message: error.message || \"Validation failed\",\r\n      issues: error.issues || [],\r\n    });\r\n  });\r\n}\r\n\r\nconst catSchema = z.object({\r\n  name: z.string(),\r\n  age: z.number(),\r\n})\r\n\r\nclass CreateCatDto {\r\n  @IsString()\r\n  name!: string;\r\n\r\n  @IsInt()\r\n  age!: number;\r\n}\r\n\r\n// file cat-controller.ts\r\n@Controller('/cats')\r\nexport class CatController {\r\n\r\n  @Post('/')\r\n  // only required validation without type checking\r\n  @Validate([\"name\", \"age\"], { required: { allowEmptyString: false, allowNull: false } })\r\n  public async basic(ctx : T.Context<{ body : { name : any , age : any }}>) {\r\n    return {\r\n      body : ctx.body\r\n    }\r\n  }\r\n\r\n  @Post('/custom')\r\n  @ValidateDtoCustomBody([\"name\", \"age\"])\r\n  public async custom(ctx : T.Context<{ body : { name : string , age : number }}>) {\r\n    return {\r\n      body : ctx.body\r\n    }\r\n  }\r\n\r\n  @Post('/promise')\r\n  @ValidateDtoPromiseBody(['name'])\r\n  public async promise(ctx : T.Context<{ body : { name : string }}>) {\r\n    return {\r\n      body : ctx.body\r\n    }\r\n  }\r\n\r\n  @Post('/zod')\r\n  @ValidateDto(catSchema, { adaptor : \"zod\" })\r\n  public async zod(ctx : T.Context<{ body : z.infer<typeof catSchema>}>) {\r\n    return {\r\n      body : ctx.body\r\n    }\r\n  }\r\n\r\n  @Post('/cls')\r\n  @ValidateDto(CreateCatDto)\r\n  public async cls(ctx : T.Context<{ body : CreateCatDto }>) {\r\n    return {\r\n      body : ctx.body\r\n    }\r\n  }\r\n}\r\n\r\nimport { Spear } , { Router, type T } from \"tspace-spear\";\r\n\r\nimport CatController from './cat-controller.ts'\r\n\r\n(async () => {\r\n\r\n  new Spear({\r\n    controllers: [ CatController ]\r\n  })\r\n  .useBodyParser()\r\n  .listen(8000 , () => console.log(`Server is now listening http://localhost:8000`))\r\n\r\n  // localhost:8000/cats  // basic implete\r\n  // localhost:8000/cats/zod  // zod implete\r\n  // localhost:8000/cats/promise // promise implete\r\n\r\n})()\r\n```\r\n\r\n## Router\r\nThe Router allows you to organize routes into modular groups, making your application more scalable and maintainable.\r\n\r\nIt supports:\r\n\r\n* Grouped routes\r\n* Nested route prefixes\r\n* Reusable router modules\r\n* Separation of concerns\r\n```js\r\nimport { Spear, Router, type T } from \"tspace-spear\";\r\n\r\nconst app = new Spear()\r\n\r\nconst router = new Router()\r\n    \r\nrouter.groups('/my',(r) => {\r\n\r\n  r.get('/cats' , ({ req , res }) => {\r\n\r\n      return res.json({\r\n          message : 'Hello, World!'\r\n      })\r\n  })\r\n\r\n  return r\r\n})\r\n    \r\nrouter.get('/cats' , ({ req , res }) => {\r\n  return res.json({\r\n      message : 'Hello, World!'\r\n  })\r\n})\r\n\r\napp.useRouter(router)\r\n\r\napp.get('/' , ({ res } : T.Context) => {\r\n  return res.json({\r\n    message : 'hello world!'\r\n  });\r\n})\r\n\r\nlet port = 8000\r\n\r\napp.listen(port , () => console.log(`Server is now listening http://localhost:8000`))\r\n\r\n// localhost:8000/my/cats\r\n// localhost:8000/cats\r\n\r\n```\r\n\r\n## Serve Static Files\r\nServe files directly from a local directory.\r\n```js\r\n\r\nconst path = require('path');\r\n\r\nnew Spear({\r\n  logger: true\r\n})\r\n.get('/file/*', (ctx) => {\r\n  // Maps:\r\n  //   /file/example.pdf\r\n  // -> ./example/example.pdf\r\n  const filePath = path.join(\r\n    path.resolve(),\r\n    'example',\r\n    String(ctx.params['*'])\r\n  );\r\n\r\n  return ctx.res.serveMedia(filePath);\r\n})\r\n.listen(3000 , ({ port }) =>  {\r\n  console.log(`server listening on : http://localhost:${port}`)\r\n})\r\n\r\n```\r\n\r\n## Swagger\r\nProvides built-in Swagger support to document your API endpoints. <br>\r\n\r\nIt allows you to: <br>\r\n\r\nDescribe request parameters (query, body, params) <br>\r\nGenerate API documentation <br>\r\nImprove developer experience <br>\r\nStandardize API contracts\r\n```js\r\n\r\n// file cat-controller.ts\r\nimport { \r\n  type T,\r\n  Controller, \r\n  Get , \r\n  Post,\r\n  Put,\r\n  Patch,\r\n  Delete,\r\n  Swagger\r\n} from 'tspace-spear';\r\n\r\n@Controller('/cats')\r\nclass CatController {\r\n  @Get('/')\r\n  @Swagger({\r\n    query : {\r\n      id : {\r\n        type : 'integer'\r\n      },\r\n      name :  {\r\n        type : 'string'\r\n      }\r\n    }\r\n  })\r\n  public async index({ query }  : T.Context) {\r\n\r\n    return {\r\n      query\r\n    }\r\n  }\r\n\r\n  @Get('/:id')\r\n  @Swagger({\r\n    description : '- message',\r\n    query : {\r\n      id : {\r\n        type : 'integer'\r\n      }\r\n    },\r\n    responses : [\r\n      { status : 200 , description : \"OK\" , example : { id : 'catz' }},\r\n      { status : 400 , description : \"Bad request\" , example : { id : 'catz' }}\r\n    ]\r\n  })\r\n  public async show({ params } : T.Context) {\r\n    return {\r\n      params\r\n    }\r\n  }\r\n\r\n  @Post('/')\r\n  @Swagger({\r\n    bearerToken : true,\r\n    body : {\r\n      description : 'The description !',\r\n      required : true,\r\n      properties : {\r\n        id : {\r\n          type : 'integer',\r\n          example : 1\r\n        },\r\n        name :  {\r\n          type : 'string',\r\n          example : \"xxxxx\"\r\n        }\r\n      }\r\n    }\r\n  })\r\n  public async store({ body } : T.Context) {\r\n    return {\r\n      body\r\n    }\r\n  }\r\n\r\n  @Put('/:uuid')\r\n  @Swagger({\r\n    bearerToken : true,\r\n    body : {\r\n      description : 'The description !',\r\n      required : true,\r\n      properties : {\r\n        id : {\r\n          type : 'integer',\r\n          example : 1\r\n        },\r\n        name :  {\r\n          type : 'string',\r\n          example : \"xxxxx\"\r\n        }\r\n      }\r\n    }\r\n  })\r\n  public async updated({ body } : T.Context) {\r\n    return {\r\n      body\r\n    }\r\n  }\r\n\r\n  @Patch('/:uuid')\r\n  @Swagger({\r\n    bearerToken : true,\r\n    body : {\r\n      description : 'The description !',\r\n      required : true,\r\n      properties : {\r\n        id : {\r\n          type : 'integer',\r\n          example : 1\r\n        },\r\n        name :  {\r\n          type : 'string',\r\n          example : \"xxxxx\"\r\n        }\r\n      }\r\n    }\r\n  })\r\n  public async update({ body } : T.Context) {\r\n    return {\r\n      body\r\n    }\r\n  }\r\n\r\n  @Delete('/:uuid')\r\n  @Swagger({\r\n    bearerToken : true\r\n  })\r\n  public async delete({ params } : T.Context) {\r\n    return {\r\n      params\r\n    }\r\n  }\r\n\r\n  @Post('/upload')\r\n  @Swagger({\r\n    bearerToken : true,\r\n    files : {\r\n      required : true,\r\n      properties : {\r\n        file : {\r\n          type : 'array',\r\n          items: {\r\n            type  :\"string\",\r\n            format:\"binary\"\r\n          }\r\n        },\r\n        name : {\r\n          type : 'string'\r\n        }\r\n      }\r\n    }\r\n  })\r\n  public async upload({ body , files } : T.Context) {\r\n    return {\r\n      body,\r\n      files\r\n    }\r\n  }\r\n}\r\n\r\n(async () => {\r\n\r\n  await new Spear({\r\n    controllers: [ CatController ]\r\n  })\r\n   .get('/' , ({ res } : T.Context) => {\r\n    return res.json({\r\n      message : 'hello world!'\r\n    });\r\n  })\r\n  // .useSwagger() // by default path is \"/api/docs\"\r\n  .useSwagger({\r\n    path : \"/docs\",\r\n    servers : [\r\n      { url : \"http://localhost:8000\" , description : \"development\"}, \r\n      { url : \"http://localhost:8000\" , description : \"production\"}\r\n    ],\r\n    info : {\r\n      \"title\" : \"Welcome to the the documentation\",\r\n      \"description\" : \"This is the documentation\"\r\n    }\r\n  })\r\n  .listen(8000 , () => console.log(`Server is now listening http://localhost:8000`))\r\n\r\n  // localhost:8000/docs\r\n})()\r\n\r\n```\r\n## Web Socket\r\nprovides built-in WebSocket support for real-time communication. <br>\r\n\r\nIt allows you to: <br>\r\n\r\nHandle client connections <br>\r\nSend/receive messages <br>\r\nBuild chat systems <br>\r\nManage real-time events\r\n```js\r\nimport { Spear } from \"tspace-spear\";\r\nimport fs from 'fs';\r\nimport path from 'path';\r\n\r\nnew Spear()\r\n.get('/',(ctx) => {\r\n  // you can serve a HTML file for testing WebSocket connection\r\n  const htmlWs = fs.readFileSync(path.join(path.resolve(), 'public', 'ws.html'), 'utf-8');\r\n  return ctx.res.html(htmlWs);\r\n})\r\n.ws(() => {\r\n  const clients = new Map<string, any>();\r\n  return {\r\n    connection: (ws) => {\r\n      console.log(\"connected\");\r\n    },\r\n\r\n    message: (ws, msg) => {\r\n      const data = JSON.parse(msg.toString());\r\n\r\n      if (data.type === \"register\") {\r\n        ws.userId = data.userId;\r\n        clients.set(data.userId, ws);\r\n\r\n        ws.send(JSON.stringify({\r\n          type: \"system\",\r\n          message: `registered as ${data.userId}`\r\n        }));\r\n\r\n        return;\r\n      }\r\n\r\n      if (data.type === \"chat\") {\r\n        const targetWs = clients.get(data.to);\r\n\r\n        if (!targetWs) {\r\n          ws.send(JSON.stringify({\r\n            type: \"error\",\r\n            message: \"User not online\"\r\n          }));\r\n          return;\r\n        }\r\n\r\n        targetWs.send(JSON.stringify({\r\n          type: \"chat\",\r\n          from: ws.userId,\r\n          text: data.text\r\n        }));\r\n\r\n        return;\r\n      }\r\n    },\r\n\r\n    close: (ws) => {\r\n      if (ws.userId) {\r\n        clients.delete(ws.userId);\r\n      }\r\n    },\r\n    \r\n    error: (ws, error) => {\r\n      console.error('WebSocket error:', error);\r\n    }\r\n  };\r\n})\r\n.listen(8000 , ({ port , server }) =>  {\r\n    console.log(`server listening on : http://localhost:${port}`)\r\n})\r\n\r\n\r\n```\r\n\r\n### Graphql\r\nGraphQL CRUD Example with graphql-yoga + tspace-spear\r\n\r\nThis example shows how to build a simple GraphQL CRUD API using graphql-yoga and tspace-spear.\r\n\r\nIt includes:\r\n\r\n- GraphQL schema setup\r\n- Query and Mutation examples\r\n- Create / Read / Update / Delete operations\r\n- HTTP integration with graphql-yoga\r\n\r\nThe server uses an in-memory array as a fake database for simplicity.\r\n\r\nFeatures\r\n- High performance HTTP server with tspace-spear\r\n- Native GraphQL schema definitions\r\n- Full CRUD operations\r\n- Simple and dependency-light setup\r\n- Works with standard GraphQL clients and tools\r\n\r\n```sh\r\nnpm install graphql graphql-yoga\r\n```\r\n\r\n```js\r\nimport { type T, Spear } from \"tspace-spear\";\r\n\r\nimport {\r\n  createYoga,\r\n  createSchema,\r\n} from 'graphql-yoga';\r\n\r\ntype User = {\r\n  id: number;\r\n  name: string;\r\n  email: string;\r\n};\r\n\r\nconst users: User[] = [\r\n  {\r\n    id: 1,\r\n    name: 'John',\r\n    email: 'john@gmail.com',\r\n  },\r\n];\r\n\r\nconst yoga = createYoga({\r\n  graphqlEndpoint: '/graphql',\r\n\r\n  schema: createSchema({\r\n    typeDefs: /* GraphQL */ `\r\n      type User {\r\n        id: Int!\r\n        name: String!\r\n        email: String!\r\n      }\r\n\r\n      input CreateUserInput {\r\n        name: String!\r\n        email: String!\r\n      }\r\n\r\n      input UpdateUserInput {\r\n        id: Int!\r\n        name: String\r\n        email: String\r\n      }\r\n\r\n      type Query {\r\n        users: [User!]!\r\n        user(id: Int!): User\r\n      }\r\n\r\n      type Mutation {\r\n        createUser(input: CreateUserInput!): User!\r\n        updateUser(input: UpdateUserInput!): User!\r\n        removeUser(id: Int!): User!\r\n      }\r\n    `,\r\n\r\n    resolvers: {\r\n      Query: {\r\n        users: () => users,\r\n\r\n        user: (_root, args) => {\r\n          return users.find(\r\n            (u) => u.id === args.id,\r\n          );\r\n        },\r\n      },\r\n\r\n      Mutation: {\r\n        createUser: (_root, args) => {\r\n          const user = {\r\n            id: Date.now(),\r\n            name: args.input.name,\r\n            email: args.input.email,\r\n          };\r\n\r\n          users.push(user);\r\n\r\n          return user;\r\n        },\r\n\r\n        updateUser: (_root, args) => {\r\n          const user = users.find(\r\n            (u) => u.id === args.input.id,\r\n          );\r\n\r\n          if (!user) {\r\n            throw new Error(\r\n              'User not found',\r\n            );\r\n          }\r\n\r\n          if (args.input.name !== undefined) {\r\n            user.name = args.input.name;\r\n          }\r\n\r\n          if (args.input.email !== undefined) {\r\n            user.email = args.input.email;\r\n          }\r\n\r\n          return user;\r\n        },\r\n\r\n        removeUser: (_root, args) => {\r\n          const index = users.findIndex(\r\n            (u) => u.id === args.id,\r\n          );\r\n\r\n          if (index === -1) {\r\n            throw new Error(\r\n              'User not found',\r\n            );\r\n          }\r\n\r\n          const deleted = users[index];\r\n\r\n          users.splice(index, 1);\r\n\r\n          return deleted;\r\n        },\r\n      },\r\n    },\r\n  }),\r\n});\r\n\r\nconst app = new Spear()\r\n.get('/graphql',({ req , res }) => yoga(req , res))\r\n.post('/graphql',({ req , res }) => yoga(req , res)) \r\n.listen(4000 , ({ port , server }) =>  {\r\n  console.log(`server listening on : http://localhost:${port}/graphql`)\r\n})\r\n```\r\n\r\n## E2E\r\nProvides end-to-end type safety and testing support across the full request lifecycle, from request input to\r\nresponse output. It allows you to:\r\n```js\r\n// file cat-controller.ts\r\nimport z from 'zod';\r\nimport {\r\n  type T,\r\n  Controller,\r\n  Get,\r\n  Post,\r\n  Put,\r\n  Delete,\r\n  createDtoDecorator\r\n} from \"tspace-spear\";\r\n\r\nconst catSchema = z.object({\r\n  id: z.number(),\r\n  name: z.string(),\r\n  age: z.number(),\r\n});\r\n\r\nconst catSchemaAction = z.object({\r\n  name: z.string(),\r\n  age: z.number(),\r\n});\r\n\r\ntype Cat = z.infer<typeof catSchema>\r\n\r\nlet cats: z.infer<typeof catSchema>[] = [\r\n  { id: 1, name: 'cat1', age: 1.6 },\r\n  { id: 2, name: 'cat2', age: 1.8 },\r\n];\r\n\r\nconst ValidateDtoBody = (schema: z.ZodTypeAny) => {\r\n  return createDtoDecorator((ctx) => {\r\n    const result = schema.parse(ctx.body);\r\n    ctx.body = result as T.Body;\r\n  });\r\n};\r\n@Controller('/cats')\r\nclass CatController {\r\n\r\n  @Get('/')\r\n  public async index({\r\n    query,\r\n  }: T.Context) {\r\n    return {\r\n      cats,\r\n    };\r\n  }\r\n\r\n  @Get('/:id')\r\n  public async show({ res, params }: T.Context<{ params: { id: number } }>) : Promise<{\r\n    cat : Cat\r\n  }> {\r\n    const cat = cats.find((d) => d.id === Number(params.id));\r\n\r\n    if(cat == null) {\r\n      throw res.notFound('not found cat')\r\n    }\r\n\r\n    return {\r\n      cat\r\n    };\r\n  }\r\n\r\n  @Post('/')\r\n  @ValidateDtoBody(catSchemaAction)\r\n  public async create({\r\n    body,\r\n  }: T.Context<{ body: z.infer<typeof catSchemaAction> }>) {\r\n\r\n    const cat = {\r\n      id: cats.length + 1,\r\n      ...body\r\n    }\r\n\r\n    cats.push(cat);\r\n\r\n    return {\r\n      cat,\r\n      message: 'created',\r\n    };\r\n  }\r\n\r\n  @Put('/:id')\r\n  @ValidateDtoBody(catSchemaAction.partial())\r\n  public async update({\r\n    res,\r\n    params,\r\n    body,\r\n  }: T.Context<{\r\n    params: { id: number };\r\n    body: Partial<z.infer<typeof catSchemaAction>>;\r\n  }>) {\r\n    const id = Number(params.id);\r\n\r\n    const index = cats.findIndex((d) => d.id === id);\r\n\r\n    if (index === -1) {\r\n      throw res.notFound('not found cat')\r\n    }\r\n\r\n    cats[index] = {\r\n      ...cats[index],\r\n      ...body,\r\n      id\r\n    };\r\n\r\n    const cat = cats[index]\r\n\r\n    return {\r\n      message: 'updated',\r\n      cat,\r\n    };\r\n  }\r\n\r\n  @Delete('/:id')\r\n  public async remove({ res, params }: T.Context<{ params: { id: number } }>) {\r\n    const id = Number(params.id);\r\n\r\n    const index = cats.findIndex((d) => d.id === id);\r\n\r\n    if (index === -1) {\r\n      throw res.notFound('not found cat')\r\n    }\r\n\r\n    cats = cats.filter((d) => d.id !== id);\r\n\r\n    return {\r\n      message: 'deleted',\r\n    };\r\n  }\r\n}\r\n\r\nexport { CatController };\r\nexport default CatController;\r\n\r\n// file server/app.ts\r\nimport Spear from \"tspace-spear\";\r\nconst app = new Spear({\r\n  logger : true,\r\n  controllers: {\r\n      folder : `${__dirname}/controllers/*`,\r\n      name:/controller\\.(ts|js)$/i,\r\n      // don't forget to set this option for auto-generate route metadata for type-safe E2E usage, \r\n      // and swagger documentation. By default if use .useSwagger() in app no need to set any description\r\n      preRouteTypes: true\r\n  }\r\n})\r\n\r\napp.useGlobalPrefix('api');\r\napp.useBodyParser();\r\napp.listen(8000 , () => console.log(`Server is now listening http://localhost:8000`));\r\n\r\ntype AppRouter = typeof app.contract;\r\nexport { AppRouter }\r\nexport default app;\r\n\r\n// file frontend/index.ts\r\nimport { AppRouter } from \"./server/app\";\r\nimport { ApiClient } from \"tspace-spear/client\";\r\n\r\nconst client: ApiClient<AppRouter> = new ApiClient(\r\n  `http://localhost:8000/api`\r\n);\r\n\r\nawait client.get(\"/catsq\"); ❌ // Type error: Argument of type '\"/catsq\"' is not assignable to parameter of type '\"/cats\" | \"/cats/:id\" | ... 3 more\r\nconst res = await client.get(\"/cats\");\r\n// res.ok -> true or false\r\n// res.status -> number\r\n// res.headers -> Hearders\r\n// res.data -> { cats: [{ id: 1, name: 'cat1', age: 1.6 },{ id: 2, name: 'cat2', age: 1.8 }] }\r\n\r\n// Without checking `res.ok`, `res.data` is always typed as `any`.\r\nif(res.ok) {\r\n  res.data.cats = 1 ❌ // Type error: Type 'number' is not assignable to type '{ id: number; name: string; age: number; }[]'\r\n  res.data.cats[0].name = 1 ❌ // Type error: Type 'number' is not assignable to type 'string'\r\n  res.data.cats[0].age = \"1.6\" ❌ // Type error: Type 'string' is not assignable to type 'number'\r\n}\r\n\r\nawait client.get(\"/cats/:id\") ❌ // Expected 2 arguments, but got 1.\r\nawait client.get(\"/cats/:id\", { params : { id : \"1\" }}) ❌ \r\n// The expected type comes from property 'id' which is declared here on type '{ id: number; }'\r\nawait client.get(\"/cats/:id\", { params : { id : 1 }}) ✅\r\n\r\nawait client.post(\"/cats\") ❌ // Expected 2 arguments, but got 1.\r\nawait client.post(\"/cats\",{\r\n  body : {}  ❌ // Type '{}' is missing the following properties from type '{ name: string; age: number; }'\r\n});\r\nawait client.post(\"/cats\",{\r\n  body : { name : \"super cat\" } ❌ \r\n  // Property 'age' is missing in type '{ name: string; }' \r\n  // but required in type '{ name: string; age: number; }'.\r\n});\r\nawait client.post(\"/cats\",{\r\n  body : { name : \"super cat\" , age : 5 }  ✅\r\n});\r\n\r\nawait client.put(\"/cats\") ✅\r\n\r\nawait client.put(\"/cats\",{\r\n  body : {}  ✅\r\n});\r\n\r\nawait client.put(\"/cats\",{\r\n  body : { name : 1 } ❌ // Type 'number' is not assignable to type 'string'.\r\n});\r\n\r\nawait client.put(\"/cats\",{\r\n  body : { name : \"super cat\" } ✅\r\n});\r\n\r\nawait client.put(\"/cats\",{\r\n  body : { name : \"super cat\" , age : 5 }  ✅\r\n});\r\n \r\n```\r\n## Testing\r\nBasic testing examples for tspace-spear framework.\r\n\r\n### Example Service and Controller\r\n```js\r\nimport { Controller, Get, Post, Dependencies, type T } from \"tspace-spear\";\r\n\r\nclass UserService {\r\n  private users = new Map([\r\n      [1, { id: 1, name: \"Alice\", email: \"alice@example.com\" }],\r\n      [2, { id: 2, name: \"Bob\", email: \"bob@example.com\" }],\r\n  ]);\r\n\r\n  findAll() { \r\n      return Array.from(this.users.values()); \r\n  }\r\n\r\n  findById(id:number | string) { \r\n      return this.users.get(+id); \r\n  }\r\n\r\n  create(name:string, email:string) {\r\n      const id = this.users.size + 1;\r\n      const user = { id, name, email };\r\n      this.users.set(id, user);\r\n      return user;\r\n  }\r\n}\r\n\r\n@Controller(\"/users\")\r\n@Dependencies([UserService])\r\nclass UsersController {\r\n  constructor(private userService: UserService ) {}\r\n\r\n  @Get(\"/\") \r\n  index() { \r\n      return this.userService.findAll();\r\n  }\r\n  @Get(\"/:id\") \r\n  show({ res, params } : T.Context) {\r\n      const user = this.userService.findById(params.id!);\r\n      if (!user) throw res.notFound(\"User not found\");\r\n      return  user;\r\n  }\r\n  @Post(\"/\") \r\n  create({ body, res }: T.Context) {\r\n      const { name, email } = body;\r\n      if (!name || !email) throw res.status(400).json({ error: \"Required\" });\r\n      return { created: this.userService.create(name, email) };\r\n  }\r\n}\r\n```\r\n\r\n### Unit Testing a Service\r\n```js\r\nimport { TestingService } from \"tspace-spear/testing\";\r\n\r\nconst testing = new TestingService();\r\nconst service = testing.createService(UserService);\r\n\r\nconst users = service.findAll(); // [{ id: 1, name: \"Alice\", ... }]\r\nconst user = service.findById(1); // { id: 1, name: \"Alice\", ... }\r\n```\r\n\r\n### Unit Testing a Controller with Mocked Service\r\n```js\r\nimport { \r\n  TestingController, \r\n  createMockService \r\n  } from \"tspace-spear/testing\";\r\n\r\nconst testing = new TestingController();\r\nconst mockService = createMockService(UserService, {\r\n  findAll: () => [{ id: 1, name: \"Mock User\" }],\r\n});\r\n\r\nconst controller = testing.createController(UsersController, {\r\n  mocks: new Map([[UserService, mockService]]),\r\n});\r\n\r\nconst ctx = testing.createContext({ params: { id: 1 } });\r\nconst result = controller.show(ctx);\r\n```\r\n\r\n### Integration Testing with TestModule\r\n```js\r\nimport { TestModule } from \"tspace-spear/testing\";\r\n\r\nconst module = await TestModule.create()\r\n  .setControllers([UsersController])\r\n  .setLogger(false)\r\n  .compile();\r\n\r\nconst res = await module.client.get(\"/users\");\r\nawait module.close();\r\n```\r\n\r\n### Integration Testing with createTestServer\r\n```js\r\nimport { createTestServer } from \"tspace-spear/testing\";\r\n\r\nconst testServer = await createTestServer({\r\n  controllers: [UsersController],\r\n  logger: false,\r\n});\r\n\r\nconst res = await testServer.client.get(\"/users\");\r\nawait testServer.close();\r\n```\r\n\r\n### Spying on Service Methods\r\n```js\r\nimport { TestingService } from \"tspace-spear/testing\";\r\n\r\nconst testing = new TestingService();\r\nconst service = new UserService();\r\nconst spy = testing.spyOn(service, \"findAll\");\r\n\r\nservice.findAll();\r\nconsole.log(spy.callCount); // 1\r\n```","readmeFilename":"README.md"}