{"_id":"njs-modbus","_rev":"30-038b8f7bad2286603fc337b4d22a9a14","name":"njs-modbus","dist-tags":{"latest":"5.0.1"},"versions":{"1.0.0":{"name":"njs-modbus","version":"1.0.0","keywords":["modbus","rtu","ascii","serial","tcp","udp"],"author":{"name":"Xie Jay","email":"xiejay97@gmail.com"},"license":"MIT","_id":"njs-modbus@1.0.0","maintainers":[{"name":"xiejay","email":"xiejay97@gmail.com"}],"homepage":"https://github.com/xiejay97/njs-modbus/tree/main/packages/ui#readme","bugs":{"url":"https://github.com/xiejay97/njs-modbus/issues"},"dist":{"shasum":"4900952dee9c0a56b14b6e64f7615c9de1bc84c9","tarball":"https://registry.npmjs.org/njs-modbus/-/njs-modbus-1.0.0.tgz","fileCount":28,"integrity":"sha512-dTsQOEJUU+w/t45twqjZRjW9xFeeVpydnobagvLyEYeAZ7GpqhyOJZk8+Vvl1l7xgG3GuHBhpFRrSLyDKe47oA==","signatures":[{"sig":"MEQCIFjBFC1NxAicf5csf0n2oYIrOaNTY8RmgI/2/kgVYytNAiBy8kCfQIa8H4VHTB2KJQXW5gdwKSXYGYgZH0+WapS8cw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":185264},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","source":"src/index.ts","gitHead":"bc9dd63f7b9c90c3963759ce9796893ff45d5e5e","scripts":{"build":"rollup -c","util:sort-package-json":"sort-package-json"},"_npmUser":{"name":"xiejay","actor":{"name":"xiejay","type":"user","email":"xiejay97@gmail.com"},"email":"xiejay97@gmail.com"},"repository":{"url":"git+https://github.com/xiejay97/njs-modbus.git","type":"git"},"_npmVersion":"10.9.2","description":"A pure JavaScript implemetation of Modbus for NodeJS.","directories":{},"sideEffects":false,"_nodeVersion":"22.15.0","_hasShrinkwrap":false,"devDependencies":{"nx":"21.1.3","tslib":"^2.8.1","eslint":"^9.28.0","rollup":"^4.43.0","esbuild":"^0.25.5","prettier":"^3.5.3","@swc/core":"~1.11.31","@eslint/js":"^9.28.0","typescript":"~5.8.3","@types/node":"~24.0.0","microbundle":"^0.15.1","@swc/helpers":"~0.5.17","@nx/eslint-plugin":"21.1.3","rollup-plugin-dts":"^6.2.1","sort-package-json":"^3.2.1","typescript-eslint":"^8.34.0","@swc-node/register":"~1.10.10","eslint-plugin-import":"2.31.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.1","@rollup/plugin-commonjs":"^28.0.6","@microsoft/api-extractor":"^7.52.8","rollup-plugin-typescript2":"^0.36.0"},"peerDependencies":{"serialport":">=12.0.0"},"_npmOperationalInternal":{"tmp":"tmp/njs-modbus_1.0.0_1750249895724_0.8226984191126205","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"njs-modbus","version":"1.0.1","keywords":["modbus","rtu","ascii","serial","tcp","udp"],"author":{"name":"Xie Jay","email":"xiejay97@gmail.com"},"license":"MIT","_id":"njs-modbus@1.0.1","maintainers":[{"name":"xiejay","email":"xiejay97@gmail.com"}],"homepage":"https://github.com/xiejay97/njs-modbus/tree/main/packages/ui#readme","bugs":{"url":"https://github.com/xiejay97/njs-modbus/issues"},"dist":{"shasum":"b2976f4f2f985496962cc09d69c7267c72c430f4","tarball":"https://registry.npmjs.org/njs-modbus/-/njs-modbus-1.0.1.tgz","fileCount":29,"integrity":"sha512-BQ1NBx5ADxqQ3LMh7XYXiItdxK/BMwR+8r13MethcCFF0lMYrxGpEr5eAt31hcaMQAKgGJVb6ZNhzsDHQEdVXw==","signatures":[{"sig":"MEUCIQDf5tQUEqQTNGp9YqMwba0+9ASNb8u+mTE5HM8v4MamAQIgKBmmCmomZ4fT4MkU4eG13fgx+jO7NWKOd/1BDqBRuDg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":186535},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","source":"src/index.ts","gitHead":"5b33ecf97df57521de03d7cbe1df8c607b2b2d92","scripts":{"build":"rollup -c","util:sort-package-json":"sort-package-json"},"_npmUser":{"name":"xiejay","actor":{"name":"xiejay","type":"user","email":"xiejay97@gmail.com"},"email":"xiejay97@gmail.com"},"repository":{"url":"git+https://github.com/xiejay97/njs-modbus.git","type":"git"},"_npmVersion":"10.9.2","description":"A pure JavaScript implemetation of Modbus for NodeJS.","directories":{},"sideEffects":false,"_nodeVersion":"22.15.0","_hasShrinkwrap":false,"devDependencies":{"nx":"21.1.3","tslib":"^2.8.1","eslint":"^9.28.0","rollup":"^4.43.0","esbuild":"^0.25.5","prettier":"^3.5.3","@swc/core":"~1.11.31","@eslint/js":"^9.28.0","typescript":"~5.8.3","@types/node":"~24.0.0","microbundle":"^0.15.1","@swc/helpers":"~0.5.17","@nx/eslint-plugin":"21.1.3","rollup-plugin-dts":"^6.2.1","sort-package-json":"^3.2.1","typescript-eslint":"^8.34.0","@swc-node/register":"~1.10.10","eslint-plugin-import":"2.31.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.1","@rollup/plugin-commonjs":"^28.0.6","@microsoft/api-extractor":"^7.52.8","rollup-plugin-typescript2":"^0.36.0"},"peerDependencies":{"serialport":">=12.0.0"},"_npmOperationalInternal":{"tmp":"tmp/njs-modbus_1.0.1_1750312893468_0.4956090033864011","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"njs-modbus","version":"1.1.0","keywords":["modbus","rtu","ascii","serial","tcp","udp"],"author":{"name":"Xie Jay","email":"xiejay97@gmail.com"},"license":"MIT","_id":"njs-modbus@1.1.0","maintainers":[{"name":"xiejay","email":"xiejay97@gmail.com"}],"homepage":"https://github.com/xiejay97/njs-modbus/tree/main/packages/ui#readme","bugs":{"url":"https://github.com/xiejay97/njs-modbus/issues"},"dist":{"shasum":"2d3ea89b50d0c64a42e967a1dfc16b5faefdccc4","tarball":"https://registry.npmjs.org/njs-modbus/-/njs-modbus-1.1.0.tgz","fileCount":29,"integrity":"sha512-ENjSaTIleqzD8BGr2WmgwuaUw+lQFe/H09fGSgH3dbrLzGCsAgwt6ullbrqeV6aga8eyZlMB6aWkb89cXi1g+g==","signatures":[{"sig":"MEUCIQC2PcC41xLLVqt4LxWxQavjNUmmEaxMwUHeD34Ep9SM6wIgeSSSafCi1A3DGj5h+mDICtAiZHe2IPtAimX4wkAekQc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188054},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","source":"src/index.ts","gitHead":"a6c282efe5c6e65a5e16f75894489f793490f392","scripts":{"build":"rollup -c","util:sort-package-json":"sort-package-json"},"_npmUser":{"name":"xiejay","actor":{"name":"xiejay","type":"user","email":"xiejay97@gmail.com"},"email":"xiejay97@gmail.com"},"repository":{"url":"git+https://github.com/xiejay97/njs-modbus.git","type":"git"},"_npmVersion":"10.9.2","description":"A pure JavaScript implemetation of Modbus for NodeJS.","directories":{},"sideEffects":false,"_nodeVersion":"22.15.0","_hasShrinkwrap":false,"devDependencies":{"nx":"21.1.3","tslib":"^2.8.1","eslint":"^9.28.0","rollup":"^4.43.0","esbuild":"^0.25.5","prettier":"^3.5.3","@swc/core":"~1.11.31","@eslint/js":"^9.28.0","typescript":"~5.8.3","@types/node":"~24.0.0","microbundle":"^0.15.1","@swc/helpers":"~0.5.17","@nx/eslint-plugin":"21.1.3","rollup-plugin-dts":"^6.2.1","sort-package-json":"^3.2.1","typescript-eslint":"^8.34.0","@swc-node/register":"~1.10.10","eslint-plugin-import":"2.31.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.1","@rollup/plugin-commonjs":"^28.0.6","@microsoft/api-extractor":"^7.52.8","rollup-plugin-typescript2":"^0.36.0"},"peerDependencies":{"serialport":">=12.0.0"},"_npmOperationalInternal":{"tmp":"tmp/njs-modbus_1.1.0_1750669764674_0.8013546463430272","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"njs-modbus","version":"1.2.0","keywords":["modbus","rtu","ascii","serial","tcp","udp"],"author":{"name":"Xie Jay","email":"xiejay97@gmail.com"},"license":"MIT","_id":"njs-modbus@1.2.0","maintainers":[{"name":"xiejay","email":"xiejay97@gmail.com"}],"homepage":"https://github.com/xiejay97/njs-modbus/tree/main/packages/ui#readme","bugs":{"url":"https://github.com/xiejay97/njs-modbus/issues"},"dist":{"shasum":"78ba7e36280bea8de03b09cafa847f106423ba38","tarball":"https://registry.npmjs.org/njs-modbus/-/njs-modbus-1.2.0.tgz","fileCount":29,"integrity":"sha512-VaMkJow90IyiXppUwv+Aiw9uR8rr/1A4nV1+ofYKBbtThmh64IujNA1kbN2sISHkNI9rdf7S2xy2DYvZz6IovQ==","signatures":[{"sig":"MEUCIQCrU1pqAXLVP6FtT5n+OdlqRASuupgw6xtKG1iXZq2AYAIgRJJQK9oael7cYW5mpEGp7fBKJNNVPrQTJr/1goSQroY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188786},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","source":"src/index.ts","gitHead":"f49f9b0d45b8447b6c774d7a3b53b00066d7c5f3","scripts":{"build":"rollup -c","util:sort-package-json":"sort-package-json"},"_npmUser":{"name":"xiejay","actor":{"name":"xiejay","type":"user","email":"xiejay97@gmail.com"},"email":"xiejay97@gmail.com"},"repository":{"url":"git+https://github.com/xiejay97/njs-modbus.git","type":"git"},"_npmVersion":"10.9.2","description":"A pure JavaScript implemetation of Modbus for NodeJS.","directories":{},"sideEffects":false,"_nodeVersion":"22.15.0","_hasShrinkwrap":false,"devDependencies":{"nx":"21.1.3","tslib":"^2.8.1","eslint":"^9.28.0","rollup":"^4.43.0","esbuild":"^0.25.5","prettier":"^3.5.3","@swc/core":"~1.11.31","@eslint/js":"^9.28.0","typescript":"~5.8.3","@types/node":"~24.0.0","microbundle":"^0.15.1","@swc/helpers":"~0.5.17","@nx/eslint-plugin":"21.1.3","rollup-plugin-dts":"^6.2.1","sort-package-json":"^3.2.1","typescript-eslint":"^8.34.0","@swc-node/register":"~1.10.10","eslint-plugin-import":"2.31.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.1","@rollup/plugin-commonjs":"^28.0.6","@microsoft/api-extractor":"^7.52.8","rollup-plugin-typescript2":"^0.36.0"},"peerDependencies":{"serialport":">=12.0.0"},"_npmOperationalInternal":{"tmp":"tmp/njs-modbus_1.2.0_1750832426746_0.22268006281285446","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"njs-modbus","version":"1.3.0","keywords":["modbus","rtu","ascii","serial","tcp","udp"],"author":{"name":"Xie Jay","email":"xiejay97@gmail.com"},"license":"MIT","_id":"njs-modbus@1.3.0","maintainers":[{"name":"xiejay","email":"xiejay97@gmail.com"}],"homepage":"https://github.com/xiejay97/njs-modbus/tree/main/packages/ui#readme","bugs":{"url":"https://github.com/xiejay97/njs-modbus/issues"},"dist":{"shasum":"d53cc4f5c92614c5a13cf87a634342629ac81e73","tarball":"https://registry.npmjs.org/njs-modbus/-/njs-modbus-1.3.0.tgz","fileCount":29,"integrity":"sha512-RdyKuc2mbhmz+ZOCIFxEm6NsMln2PAiwLl4Lt5l8esR5I/dN5B8L58Y9sG9f2Wp1xfEErm3jMPWemMqRXwVEOw==","signatures":[{"sig":"MEUCIQDH32Y8BAw/FNNSh+lorTDYDOq5XFQmu/3eSqshy1lIewIgRk+d0YFYyg8/o9TDBM1yWCpdS+HuXMcZ/MtgEg9L+xs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":189990},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","source":"src/index.ts","gitHead":"3f549a7fd85be331ac26bf1308f825b90291ca8f","scripts":{"build":"rollup -c","util:sort-package-json":"sort-package-json"},"_npmUser":{"name":"xiejay","actor":{"name":"xiejay","type":"user","email":"xiejay97@gmail.com"},"email":"xiejay97@gmail.com"},"repository":{"url":"git+https://github.com/xiejay97/njs-modbus.git","type":"git"},"_npmVersion":"10.9.2","description":"A pure JavaScript implemetation of Modbus for NodeJS.","directories":{},"sideEffects":false,"_nodeVersion":"22.15.0","_hasShrinkwrap":false,"devDependencies":{"nx":"21.1.3","tslib":"^2.8.1","eslint":"^9.28.0","rollup":"^4.43.0","esbuild":"^0.25.5","prettier":"^3.5.3","@swc/core":"~1.11.31","@eslint/js":"^9.28.0","typescript":"~5.8.3","@types/node":"~24.0.0","microbundle":"^0.15.1","@swc/helpers":"~0.5.17","@nx/eslint-plugin":"21.1.3","rollup-plugin-dts":"^6.2.1","sort-package-json":"^3.2.1","typescript-eslint":"^8.34.0","@swc-node/register":"~1.10.10","eslint-plugin-import":"2.31.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.1","@rollup/plugin-commonjs":"^28.0.6","@microsoft/api-extractor":"^7.52.8","rollup-plugin-typescript2":"^0.36.0"},"peerDependencies":{"serialport":">=12.0.0"},"_npmOperationalInternal":{"tmp":"tmp/njs-modbus_1.3.0_1750997627885_0.8157101429653855","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"njs-modbus","version":"1.3.1","keywords":["modbus","rtu","ascii","serial","tcp","udp"],"author":{"name":"Xie Jay","email":"xiejay97@gmail.com"},"license":"MIT","_id":"njs-modbus@1.3.1","maintainers":[{"name":"xiejay","email":"xiejay97@gmail.com"}],"homepage":"https://github.com/xiejay97/njs-modbus/tree/main/packages/ui#readme","bugs":{"url":"https://github.com/xiejay97/njs-modbus/issues"},"dist":{"shasum":"562d9c2362a4b33b422185b2075a3bc9362cd842","tarball":"https://registry.npmjs.org/njs-modbus/-/njs-modbus-1.3.1.tgz","fileCount":29,"integrity":"sha512-Ba+P25DfC6UVIfigTnJ2kXLPuCBfUG5V3Jfr3O/4jnMd8rO4lzgLHq2AW8B9KUAZKdlGufhLfxoXfdRDAgwm9Q==","signatures":[{"sig":"MEYCIQDDkd44WMeBXwrADUWD6Kg011L5/HivAmhq5++hKlGwcwIhAPW+4mX0X9nq5xKQD2WuF/GsfwROiE3VaSyiuoYXFCpC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":209400},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","source":"src/index.ts","gitHead":"08119cd2baf0632b5f984e22cb5bc0f12e915f38","scripts":{"build":"rollup -c","util:sort-package-json":"sort-package-json"},"_npmUser":{"name":"xiejay","actor":{"name":"xiejay","type":"user","email":"xiejay97@gmail.com"},"email":"xiejay97@gmail.com"},"repository":{"url":"git+https://github.com/xiejay97/njs-modbus.git","type":"git"},"_npmVersion":"10.9.2","description":"A pure JavaScript implemetation of Modbus for NodeJS.","directories":{},"sideEffects":false,"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"devDependencies":{"nx":"21.1.3","tslib":"^2.8.1","eslint":"^9.28.0","rollup":"^4.43.0","esbuild":"^0.25.5","prettier":"^3.5.3","@swc/core":"~1.11.31","@eslint/js":"^9.28.0","typescript":"~5.8.3","@types/node":"~24.0.0","microbundle":"^0.15.1","@swc/helpers":"~0.5.17","@nx/eslint-plugin":"21.1.3","rollup-plugin-dts":"^6.2.1","sort-package-json":"^3.2.1","typescript-eslint":"^8.34.0","@swc-node/register":"~1.10.10","eslint-plugin-import":"2.31.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.1","@rollup/plugin-commonjs":"^28.0.6","@microsoft/api-extractor":"^7.52.8","rollup-plugin-typescript2":"^0.36.0"},"peerDependencies":{"serialport":">=12.0.0"},"_npmOperationalInternal":{"tmp":"tmp/njs-modbus_1.3.1_1751436715703_0.5168748533277459","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"njs-modbus","version":"1.3.2","keywords":["modbus","rtu","ascii","serial","tcp","udp"],"author":{"name":"Xie Jay","email":"xiejay97@gmail.com"},"license":"MIT","_id":"njs-modbus@1.3.2","maintainers":[{"name":"xiejay","email":"xiejay97@gmail.com"}],"homepage":"https://github.com/xiejay97/njs-modbus/tree/main/packages/ui#readme","bugs":{"url":"https://github.com/xiejay97/njs-modbus/issues"},"dist":{"shasum":"ec0ea49635330a7643fb904874d0bcd32cdeff74","tarball":"https://registry.npmjs.org/njs-modbus/-/njs-modbus-1.3.2.tgz","fileCount":3,"integrity":"sha512-bKfXgQjrNiAYcqnRE2ApK0D0jyc4pTmQiW+OJ6fvs67yIG4dJiB0ltqwX3RPgKUdxslMBeK68jfj54GyAoj5Ow==","signatures":[{"sig":"MEUCIQDzAvgyizLf+Mfgopzvn7vgNS2GTkyPVtkwlp+/QqlP8QIgRjQOiBmFqu7kijZTR+BLUx3332saHWviN/O99/D3SUA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8105},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","source":"src/index.ts","gitHead":"f884b5b87523b2c5a23b9980d654894436bdce76","scripts":{"build":"rollup -c","util:sort-package-json":"sort-package-json"},"_npmUser":{"name":"xiejay","actor":{"name":"xiejay","type":"user","email":"xiejay97@gmail.com"},"email":"xiejay97@gmail.com"},"repository":{"url":"git+https://github.com/xiejay97/njs-modbus.git","type":"git"},"_npmVersion":"10.9.2","description":"A pure JavaScript implemetation of Modbus for NodeJS.","directories":{},"sideEffects":false,"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"devDependencies":{"nx":"21.1.3","tslib":"^2.8.1","eslint":"^9.28.0","rollup":"^4.43.0","esbuild":"^0.25.5","prettier":"^3.5.3","@swc/core":"~1.11.31","@eslint/js":"^9.28.0","typescript":"~5.8.3","@types/node":"~24.0.0","microbundle":"^0.15.1","@swc/helpers":"~0.5.17","@nx/eslint-plugin":"21.1.3","rollup-plugin-dts":"^6.2.1","sort-package-json":"^3.2.1","typescript-eslint":"^8.34.0","@swc-node/register":"~1.10.10","eslint-plugin-import":"2.31.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.1","@rollup/plugin-commonjs":"^28.0.6","@microsoft/api-extractor":"^7.52.8","rollup-plugin-typescript2":"^0.36.0"},"peerDependencies":{"serialport":">=12.0.0"},"_npmOperationalInternal":{"tmp":"tmp/njs-modbus_1.3.2_1751438944128_0.6283631151105993","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"njs-modbus","version":"1.3.3","keywords":["modbus","rtu","ascii","serial","tcp","udp"],"author":{"name":"Xie Jay","email":"xiejay97@gmail.com"},"license":"MIT","_id":"njs-modbus@1.3.3","maintainers":[{"name":"xiejay","email":"xiejay97@gmail.com"}],"homepage":"https://github.com/xiejay97/njs-modbus/tree/main/packages/ui#readme","bugs":{"url":"https://github.com/xiejay97/njs-modbus/issues"},"dist":{"shasum":"b06614728928ba6dc4b006c9b299d922e8d5e974","tarball":"https://registry.npmjs.org/njs-modbus/-/njs-modbus-1.3.3.tgz","fileCount":29,"integrity":"sha512-UuPa7HmH2VKvu+g3iVhDbEFZT/COIIFKM1fpUazS1V4BP8cuvjx+RGWs0AkgREktxn1U/vw5sPTOq7BpSqqMLQ==","signatures":[{"sig":"MEUCIEMqutNf9vAdfQ0Ux4Ggoxl+g63ddJopItQ7NCFE1up7AiEArRnqR128QU1TxGR3hcPnUMdA/sz/tfzWlYrPLzTkz2w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":209400},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","source":"src/index.ts","gitHead":"f884b5b87523b2c5a23b9980d654894436bdce76","scripts":{"build":"rollup -c","util:sort-package-json":"sort-package-json"},"_npmUser":{"name":"xiejay","actor":{"name":"xiejay","type":"user","email":"xiejay97@gmail.com"},"email":"xiejay97@gmail.com"},"repository":{"url":"git+https://github.com/xiejay97/njs-modbus.git","type":"git"},"_npmVersion":"10.9.2","description":"A pure JavaScript implemetation of Modbus for NodeJS.","directories":{},"sideEffects":false,"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"devDependencies":{"nx":"21.1.3","tslib":"^2.8.1","eslint":"^9.28.0","rollup":"^4.43.0","esbuild":"^0.25.5","prettier":"^3.5.3","@swc/core":"~1.11.31","@eslint/js":"^9.28.0","typescript":"~5.8.3","@types/node":"~24.0.0","microbundle":"^0.15.1","@swc/helpers":"~0.5.17","@nx/eslint-plugin":"21.1.3","rollup-plugin-dts":"^6.2.1","sort-package-json":"^3.2.1","typescript-eslint":"^8.34.0","@swc-node/register":"~1.10.10","eslint-plugin-import":"2.31.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.1","@rollup/plugin-commonjs":"^28.0.6","@microsoft/api-extractor":"^7.52.8","rollup-plugin-typescript2":"^0.36.0"},"peerDependencies":{"serialport":">=12.0.0"},"_npmOperationalInternal":{"tmp":"tmp/njs-modbus_1.3.3_1751439012157_0.9391180880698249","host":"s3://npm-registry-packages-npm-production"}},"1.3.4":{"name":"njs-modbus","version":"1.3.4","keywords":["modbus","rtu","ascii","serial","tcp","udp"],"author":{"name":"Xie Jay","email":"xiejay97@gmail.com"},"license":"MIT","_id":"njs-modbus@1.3.4","maintainers":[{"name":"xiejay","email":"xiejay97@gmail.com"}],"homepage":"https://github.com/xiejay97/njs-modbus/tree/main/packages/ui#readme","bugs":{"url":"https://github.com/xiejay97/njs-modbus/issues"},"dist":{"shasum":"4d8b2e4d4a234ee5bdb8ac82b84499b0c2164a4e","tarball":"https://registry.npmjs.org/njs-modbus/-/njs-modbus-1.3.4.tgz","fileCount":29,"integrity":"sha512-x2DylDjKP9nqc5m5UztgJLEXcKX53R2n3a4Hq3lr4a7FaIbn8kJ0wekDO4P6av6JeyFmIJhZAbmGdIbJCPVdNQ==","signatures":[{"sig":"MEYCIQDoMw/CO6zMOtgvaTo4sBX3/kroou1F+Xag1bYDI21ZgwIhALR5q7Vyr1uBFvmXV6wDY37Ax9TND+sgJHK1b0jqhELf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":209246},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","source":"src/index.ts","gitHead":"f585978ea14d262444eaafa9770faee8ade159e8","scripts":{"build":"rollup -c","util:sort-package-json":"sort-package-json"},"_npmUser":{"name":"xiejay","actor":{"name":"xiejay","type":"user","email":"xiejay97@gmail.com"},"email":"xiejay97@gmail.com"},"repository":{"url":"git+https://github.com/xiejay97/njs-modbus.git","type":"git"},"_npmVersion":"10.9.2","description":"A pure JavaScript implemetation of Modbus for NodeJS.","directories":{},"sideEffects":false,"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"devDependencies":{"nx":"21.1.3","tslib":"^2.8.1","eslint":"^9.28.0","rollup":"^4.43.0","esbuild":"^0.25.5","prettier":"^3.5.3","@swc/core":"~1.11.31","@eslint/js":"^9.28.0","typescript":"~5.8.3","@types/node":"~24.0.0","microbundle":"^0.15.1","@swc/helpers":"~0.5.17","@nx/eslint-plugin":"21.1.3","rollup-plugin-dts":"^6.2.1","sort-package-json":"^3.2.1","typescript-eslint":"^8.34.0","@swc-node/register":"~1.10.10","eslint-plugin-import":"2.31.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.1","@rollup/plugin-commonjs":"^28.0.6","@microsoft/api-extractor":"^7.52.8","rollup-plugin-typescript2":"^0.36.0"},"peerDependencies":{"serialport":">=12.0.0"},"_npmOperationalInternal":{"tmp":"tmp/njs-modbus_1.3.4_1751447767783_0.9673679843222172","host":"s3://npm-registry-packages-npm-production"}},"1.3.5":{"name":"njs-modbus","version":"1.3.5","keywords":["modbus","rtu","ascii","serial","tcp","udp"],"author":{"name":"Xie Jay","email":"xiejay97@gmail.com"},"license":"MIT","_id":"njs-modbus@1.3.5","maintainers":[{"name":"xiejay","email":"xiejay97@gmail.com"}],"homepage":"https://github.com/xiejay97/njs-modbus/tree/main/packages/ui#readme","bugs":{"url":"https://github.com/xiejay97/njs-modbus/issues"},"dist":{"shasum":"ed945f2ac8aa8e70081e86a46e67706706f52e41","tarball":"https://registry.npmjs.org/njs-modbus/-/njs-modbus-1.3.5.tgz","fileCount":30,"integrity":"sha512-pCCFKh/TbgxQEA2lSA/AWXi82BafFIML8I2TxvEKHD3fhC8tyFxH61+sMBbGVtMUowdttUfRup7tN+qtRm659w==","signatures":[{"sig":"MEYCIQDtUoX5kDFf3CCKc+KLIg/0CojGinBs7tq7wZdEBSPcvwIhAKskX16dNQ/VVH+BRWtAfbS6A7GW81vj+5p8iYSW/csT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":209641},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","source":"src/index.ts","gitHead":"c33f83994c23bbe87b084b650f4946baa9b6f42e","scripts":{"build":"rollup -c","util:sort-package-json":"sort-package-json"},"_npmUser":{"name":"xiejay","actor":{"name":"xiejay","type":"user","email":"xiejay97@gmail.com"},"email":"xiejay97@gmail.com"},"repository":{"url":"git+https://github.com/xiejay97/njs-modbus.git","type":"git"},"_npmVersion":"10.9.2","description":"A pure JavaScript implemetation of Modbus for NodeJS.","directories":{},"sideEffects":false,"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"devDependencies":{"nx":"21.1.3","tslib":"^2.8.1","eslint":"^9.28.0","rollup":"^4.43.0","esbuild":"^0.25.5","prettier":"^3.5.3","@swc/core":"~1.11.31","@eslint/js":"^9.28.0","typescript":"~5.8.3","@types/node":"~24.0.0","microbundle":"^0.15.1","@swc/helpers":"~0.5.17","@nx/eslint-plugin":"21.1.3","rollup-plugin-dts":"^6.2.1","sort-package-json":"^3.2.1","typescript-eslint":"^8.34.0","@swc-node/register":"~1.10.10","eslint-plugin-import":"2.31.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.1","@rollup/plugin-commonjs":"^28.0.6","@microsoft/api-extractor":"^7.52.8","rollup-plugin-typescript2":"^0.36.0"},"peerDependencies":{"serialport":">=12.0.0"},"_npmOperationalInternal":{"tmp":"tmp/njs-modbus_1.3.5_1751610802273_0.5818932338350744","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"njs-modbus","version":"1.4.0","keywords":["modbus","rtu","ascii","serial","tcp","udp"],"author":{"name":"Xie Jay","email":"xiejay97@gmail.com"},"license":"MIT","_id":"njs-modbus@1.4.0","maintainers":[{"name":"xiejay","email":"xiejay97@gmail.com"}],"homepage":"https://github.com/xiejay97/njs-modbus/tree/main/packages/ui#readme","bugs":{"url":"https://github.com/xiejay97/njs-modbus/issues"},"dist":{"shasum":"b2e4f938aa738e06c8d88317f3465df7b9e6937f","tarball":"https://registry.npmjs.org/njs-modbus/-/njs-modbus-1.4.0.tgz","fileCount":31,"integrity":"sha512-X4n+bIXXLWiAibB0Ue5+4jZoR22ueXRTZQFTpd0sdH8AV1DMIENQK3QylgzKfjXo2wKQWlDLTuhkxqTc7YZwNA==","signatures":[{"sig":"MEUCIEGSmcpUyGU6U6x8ih9wkAtxRlXp5fbayqxY+GsAIdzcAiEAg+aVhVs4bTSKeWw8hmGxNvIrQ12OrVggvYLkrgAd7QA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":210871},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","source":"src/index.ts","gitHead":"c028b828a4d4e7cf038625567a1e5063e3270741","scripts":{"build":"rollup -c","util:sort-package-json":"sort-package-json"},"_npmUser":{"name":"xiejay","email":"xiejay97@gmail.com"},"repository":{"url":"git+https://github.com/xiejay97/njs-modbus.git","type":"git"},"_npmVersion":"10.9.2","description":"A pure JavaScript implemetation of Modbus for NodeJS.","directories":{},"sideEffects":false,"_nodeVersion":"22.17.0","_hasShrinkwrap":false,"devDependencies":{"nx":"21.1.3","tslib":"^2.8.1","eslint":"^9.28.0","rollup":"^4.43.0","esbuild":"^0.25.5","prettier":"^3.5.3","@swc/core":"~1.11.31","@eslint/js":"^9.28.0","typescript":"~5.8.3","@types/node":"~24.0.0","microbundle":"^0.15.1","@swc/helpers":"~0.5.17","@nx/eslint-plugin":"21.1.3","rollup-plugin-dts":"^6.2.1","sort-package-json":"^3.2.1","typescript-eslint":"^8.34.0","@swc-node/register":"~1.10.10","eslint-plugin-import":"2.31.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.1","@rollup/plugin-commonjs":"^28.0.6","@microsoft/api-extractor":"^7.52.8","rollup-plugin-typescript2":"^0.36.0"},"peerDependencies":{"serialport":">=12.0.0"},"_npmOperationalInternal":{"tmp":"tmp/njs-modbus_1.4.0_1753860602141_0.09613619325184364","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"njs-modbus","version":"1.5.0","keywords":["modbus","rtu","ascii","serial","tcp","udp"],"author":{"name":"Xie Jay","email":"xiejay97@gmail.com"},"license":"MIT","_id":"njs-modbus@1.5.0","maintainers":[{"name":"xiejay","email":"xiejay97@gmail.com"}],"homepage":"https://github.com/xiejay97/njs-modbus/tree/main/packages/ui#readme","bugs":{"url":"https://github.com/xiejay97/njs-modbus/issues"},"dist":{"shasum":"fd7bb8df51a921dd6c2060bcb21e2a66473ce337","tarball":"https://registry.npmjs.org/njs-modbus/-/njs-modbus-1.5.0.tgz","fileCount":30,"integrity":"sha512-ClMfZG4pROOzZUpGcsDy/SUpYCZiTOs1WiTc3V1onpryHrQIAn7g7peyQ9KTUPbMZqNXvpXMjRgOs4z4KuD3GA==","signatures":[{"sig":"MEUCIQCRQFMfcnmLKfA5hgoO3jdhif3szUGOSLMelS5o286wHQIgCgOdpzUCk0DDrFb7cJ65Bh7SfqXpSI8X5T59twpNOqQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":220946},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","source":"src/index.ts","gitHead":"13f8d206f001d799163e398d75a32a8a615cf117","scripts":{"test":"tsx --test test/slave.test.ts","build":"rollup -c","util:sort-package-json":"sort-package-json"},"_npmUser":{"name":"xiejay","email":"xiejay97@gmail.com"},"repository":{"url":"git+https://github.com/xiejay97/njs-modbus.git","type":"git"},"_npmVersion":"11.11.0","description":"A pure JavaScript implemetation of Modbus for NodeJS.","directories":{},"sideEffects":false,"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"nx":"21.1.3","tslib":"^2.8.1","eslint":"^9.28.0","rollup":"^4.43.0","esbuild":"^0.25.5","prettier":"^3.5.3","@swc/core":"~1.11.31","@eslint/js":"^9.28.0","typescript":"~5.8.3","@types/node":"~24.0.0","microbundle":"^0.15.1","@swc/helpers":"~0.5.17","@nx/eslint-plugin":"21.1.3","rollup-plugin-dts":"^6.2.1","sort-package-json":"^3.2.1","typescript-eslint":"^8.34.0","@swc-node/register":"~1.10.10","eslint-plugin-import":"2.31.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.1","@rollup/plugin-commonjs":"^28.0.6","@microsoft/api-extractor":"^7.52.8","rollup-plugin-typescript2":"^0.36.0"},"peerDependencies":{"serialport":">=12.0.0"},"_npmOperationalInternal":{"tmp":"tmp/njs-modbus_1.5.0_1777570680603_0.5101832013456968","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"njs-modbus","version":"2.0.0","keywords":["modbus","rtu","ascii","serial","tcp","udp"],"author":{"name":"Xie Jay","email":"xiejay97@gmail.com"},"license":"MIT","_id":"njs-modbus@2.0.0","maintainers":[{"name":"xiejay","email":"xiejay97@gmail.com"}],"homepage":"https://github.com/xiejay97/njs-modbus/tree/main/packages/ui#readme","bugs":{"url":"https://github.com/xiejay97/njs-modbus/issues"},"dist":{"shasum":"f271e8b1633aa0911c2f2aed7ecec19b493b062f","tarball":"https://registry.npmjs.org/njs-modbus/-/njs-modbus-2.0.0.tgz","fileCount":61,"integrity":"sha512-y9Rwc3ZquJRyZzlZVog+8BSolt88XWpxiRoWCWfG3m49o8Zq08XG+O+MxxvLpmH9NXAUoGBtV3YA5dgqMGZArA==","signatures":[{"sig":"MEUCIQDzW7MhVTNfYjRB8lnfYIt04gLcsmSo0i902dPG6CBjmQIgdRdFJz3j1YYfDI7Y0Sy2UVG0HAWZmV/62hD0paFMaUA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":308053},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","source":"src/index.ts","gitHead":"035dbd13f5241a19308d938ccd2a1d293fa7c740","scripts":{"test":"tsx --test \"test/*.test.ts\"","build":"rollup -c","util:sort-package-json":"sort-package-json"},"_npmUser":{"name":"xiejay","email":"xiejay97@gmail.com"},"repository":{"url":"git+https://github.com/xiejay97/njs-modbus.git","type":"git"},"_npmVersion":"11.12.1","description":"A pure JavaScript implemetation of Modbus for NodeJS.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"nx":"21.1.3","tslib":"^2.8.1","eslint":"^9.28.0","rollup":"^4.43.0","esbuild":"^0.25.5","prettier":"^3.5.3","@swc/core":"~1.11.31","@eslint/js":"^9.28.0","serialport":">=12.0.0","typescript":"~5.8.3","@types/node":"~24.0.0","microbundle":"^0.15.1","@swc/helpers":"~0.5.17","@nx/eslint-plugin":"21.1.3","rollup-plugin-dts":"^6.2.1","sort-package-json":"^3.2.1","typescript-eslint":"^8.34.0","@swc-node/register":"~1.10.10","eslint-plugin-import":"2.31.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.1","@rollup/plugin-commonjs":"^28.0.6","@microsoft/api-extractor":"^7.52.8","@serialport/binding-mock":"^10.2.2","rollup-plugin-typescript2":"^0.36.0"},"peerDependencies":{"serialport":">=12.0.0"},"_npmOperationalInternal":{"tmp":"tmp/njs-modbus_2.0.0_1778662757044_0.9817395750727023","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"njs-modbus","version":"2.0.1","keywords":["modbus","rtu","ascii","serial","tcp","udp"],"author":{"name":"Xie Jay","email":"xiejay97@gmail.com"},"license":"MIT","_id":"njs-modbus@2.0.1","maintainers":[{"name":"xiejay","email":"xiejay97@gmail.com"}],"homepage":"https://github.com/xiejay97/njs-modbus/tree/main/packages/ui#readme","bugs":{"url":"https://github.com/xiejay97/njs-modbus/issues"},"dist":{"shasum":"b1c02242ffcaf12e82fb441acb40a1df528a0280","tarball":"https://registry.npmjs.org/njs-modbus/-/njs-modbus-2.0.1.tgz","fileCount":61,"integrity":"sha512-rIHB95z6rLMbcx7spApR/U1eBY/8esMTfmprGwO9Mg1FlY8KBzmJYLoIY52ctiEvwxS/NvGgOyfKSL6xClJZ7Q==","signatures":[{"sig":"MEUCIQCiJNKfRfbhpis6JySthQjHVYMoORM8gMRLf5Zkgn4/wQIgCvjKgYDt+T03qu4f16+9flHZcs3dRBuxO3kTTPAjkl8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":314629},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","source":"src/index.ts","gitHead":"3da45ade65b8c1e66e917d972f594b2546466542","scripts":{"test":"tsx --test \"test/*.test.ts\"","build":"rollup -c","util:sort-package-json":"sort-package-json"},"_npmUser":{"name":"xiejay","email":"xiejay97@gmail.com"},"repository":{"url":"git+https://github.com/xiejay97/njs-modbus.git","type":"git"},"_npmVersion":"11.12.1","description":"A pure JavaScript implemetation of Modbus for NodeJS.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"nx":"21.1.3","tslib":"^2.8.1","eslint":"^9.28.0","rollup":"^4.43.0","esbuild":"^0.25.5","prettier":"^3.5.3","@swc/core":"~1.11.31","@eslint/js":"^9.28.0","serialport":">=12.0.0","typescript":"~5.8.3","@types/node":"~24.0.0","microbundle":"^0.15.1","@swc/helpers":"~0.5.17","@nx/eslint-plugin":"21.1.3","rollup-plugin-dts":"^6.2.1","sort-package-json":"^3.2.1","typescript-eslint":"^8.34.0","@swc-node/register":"~1.10.10","eslint-plugin-import":"2.31.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.1","@rollup/plugin-commonjs":"^28.0.6","@microsoft/api-extractor":"^7.52.8","@serialport/binding-mock":"^10.2.2","rollup-plugin-typescript2":"^0.36.0"},"peerDependencies":{"serialport":">=12.0.0"},"_npmOperationalInternal":{"tmp":"tmp/njs-modbus_2.0.1_1778670408926_0.5578520975651688","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"njs-modbus","version":"2.1.0","keywords":["modbus","rtu","ascii","serial","tcp","udp"],"author":{"name":"Xie Jay","email":"xiejay97@gmail.com"},"license":"MIT","_id":"njs-modbus@2.1.0","maintainers":[{"name":"xiejay","email":"xiejay97@gmail.com"}],"homepage":"https://github.com/xiejay97/njs-modbus/tree/main/packages/ui#readme","bugs":{"url":"https://github.com/xiejay97/njs-modbus/issues"},"dist":{"shasum":"18c67c131d87006224e03acce8d90599527e4a11","tarball":"https://registry.npmjs.org/njs-modbus/-/njs-modbus-2.1.0.tgz","fileCount":61,"integrity":"sha512-mpZl9NggvYTkmwBthQjGLVo0YGkd8R3/uTwETXZm38WG0ZwXiX3H7by27Y5/vTNeJKtDBRpSuVYV8COgsfuqog==","signatures":[{"sig":"MEUCIQDVyPBmMfPyuWtfpIh/1keS1xkVcVpHifgQCZsddTOX8QIgCeFMH56ACAcoNKgHnMphtFUJHoJqXOgNF1QjPxSSsHs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":314091},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","source":"src/index.ts","gitHead":"bdcb0e937b97b073f3f0466735b5003f5a640fb0","scripts":{"test":"tsx --test test/*.test.ts","build":"rollup -c","util:sort-package-json":"sort-package-json"},"_npmUser":{"name":"xiejay","email":"xiejay97@gmail.com"},"repository":{"url":"git+https://github.com/xiejay97/njs-modbus.git","type":"git"},"_npmVersion":"11.12.1","description":"A pure JavaScript implemetation of Modbus for NodeJS.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"packageManager":"pnpm@10.10.0","devDependencies":{"nx":"21.1.3","tsx":"^4.21.0","tslib":"^2.8.1","eslint":"^9.28.0","rollup":"^4.43.0","esbuild":"^0.25.5","prettier":"^3.5.3","@swc/core":"~1.11.31","@eslint/js":"^9.28.0","serialport":">=12.0.0","typescript":"~5.8.3","@types/node":"~24.0.0","microbundle":"^0.15.1","@swc/helpers":"~0.5.17","@nx/eslint-plugin":"21.1.3","rollup-plugin-dts":"^6.2.1","sort-package-json":"^3.2.1","typescript-eslint":"^8.34.0","@swc-node/register":"~1.10.10","eslint-plugin-import":"2.31.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.1","@rollup/plugin-commonjs":"^28.0.6","@microsoft/api-extractor":"^7.52.8","@serialport/binding-mock":"^10.2.2","rollup-plugin-typescript2":"^0.36.0"},"peerDependencies":{"serialport":">=12.0.0"},"_npmOperationalInternal":{"tmp":"tmp/njs-modbus_2.1.0_1778732251515_0.35042718327562916","host":"s3://npm-registry-packages-npm-production"}},"3.0.2":{"name":"njs-modbus","version":"3.0.2","keywords":["modbus","rtu","ascii","serial","tcp","udp"],"author":{"name":"Xie Jay","email":"xiejay97@gmail.com"},"license":"MIT","_id":"njs-modbus@3.0.2","maintainers":[{"name":"xiejay","email":"xiejay97@gmail.com"}],"homepage":"https://github.com/xiejay97/njs-modbus/tree/main#readme","bugs":{"url":"https://github.com/xiejay97/njs-modbus/issues"},"dist":{"shasum":"9a633871b55e80be571082c98efc635166316375","tarball":"https://registry.npmjs.org/njs-modbus/-/njs-modbus-3.0.2.tgz","fileCount":40,"integrity":"sha512-nc2aM37hRllWNPWjiONl3QQI85lPd1r2PPMoxrcq6JzT4q5bUhhqaTzNIiVm4HhYl9LaVC14/poiAU3SqPJYNw==","signatures":[{"sig":"MEUCIQDd3/Ov2MAEbKU5asVT81smZqaWNnFIgir3Dnw1qEH6uAIgfZKho3KXraNG3xNFV9Mzs6261UfzhratnRJ9wAO2Bjc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":408897},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","source":"src/index.ts","gitHead":"6ecadca542855772aa21beedac76b4f2347e4027","scripts":{"test":"tsx --test test/**/*.test.ts","build":"node -e \"fs.rmSync('dist', {recursive: true, force: true})\" && rollup -c","util:sort-package-json":"sort-package-json"},"_npmUser":{"name":"xiejay","email":"xiejay97@gmail.com"},"repository":{"url":"git+https://github.com/xiejay97/njs-modbus.git","type":"git"},"_npmVersion":"11.12.1","description":"A pure JavaScript implementation of Modbus for Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"nx":"21.1.3","tsx":"^4.21.0","tslib":"^2.8.1","eslint":"^9.28.0","rollup":"^4.43.0","esbuild":"^0.25.5","prettier":"^3.5.3","@swc/core":"~1.11.31","@eslint/js":"^9.28.0","serialport":">=12.0.0","typescript":"~5.8.3","@types/node":"~24.0.0","microbundle":"^0.15.1","@swc/helpers":"~0.5.17","@nx/eslint-plugin":"21.1.3","rollup-plugin-dts":"^6.2.1","sort-package-json":"^3.2.1","typescript-eslint":"^8.34.0","@swc-node/register":"~1.10.10","why-is-node-running":"^3.2.2","eslint-plugin-import":"2.31.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.1","@rollup/plugin-commonjs":"^28.0.6","@microsoft/api-extractor":"^7.52.8","@serialport/binding-mock":"^10.2.2","rollup-plugin-typescript2":"^0.36.0"},"peerDependencies":{"serialport":">=12.0.0"},"_npmOperationalInternal":{"tmp":"tmp/njs-modbus_3.0.2_1780761284954_0.1139376598954196","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"njs-modbus","version":"3.1.0","keywords":["modbus","rtu","ascii","serial","tcp","udp"],"author":{"name":"Xie Jay","email":"xiejay97@gmail.com"},"license":"MIT","_id":"njs-modbus@3.1.0","maintainers":[{"name":"xiejay","email":"xiejay97@gmail.com"}],"homepage":"https://github.com/xiejay97/njs-modbus/tree/main#readme","bugs":{"url":"https://github.com/xiejay97/njs-modbus/issues"},"dist":{"shasum":"cabd619f860ab20eadac19e0b8ed1e054a8cdef9","tarball":"https://registry.npmjs.org/njs-modbus/-/njs-modbus-3.1.0.tgz","fileCount":42,"integrity":"sha512-cCTg7qub7kIWpthuwbYdfd5/ThAwI6JzOXwAoC+qILuyhRGa84yxFP7JtGk0Xdiy/F2YZ5hBcGz21fNGrXtXLQ==","signatures":[{"sig":"MEYCIQCW61rDwHMF83fq9jDz+oo1BDJUDDezEH3OR3LaMBBqTAIhALIu/bOlphuZQCmlxHw3bgUnwEE3Q54XKO0UcRoh+56q","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":373138},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","source":"src/index.ts","engines":{"node":">=18.19"},"gitHead":"d4e34b8dba6030396b9e84e17b24ccd4f508982a","scripts":{"test":"tsx --test test/**/*.test.ts","build":"node -e \"fs.rmSync('dist', {recursive: true, force: true})\" && rollup -c","benchmark":"tsx benchmark/encode-decode.ts && echo && tsx benchmark/tcp-throughput.ts && echo && tsx benchmark/concurrent.ts","benchmark:report":"tsx benchmark/generate-report.ts","util:sort-package-json":"sort-package-json"},"_npmUser":{"name":"xiejay","email":"xiejay97@gmail.com"},"repository":{"url":"git+https://github.com/xiejay97/njs-modbus.git","type":"git"},"_npmVersion":"11.12.1","description":"A pure JavaScript implementation of Modbus for Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"nx":"21.1.3","tsx":"^4.21.0","tslib":"^2.8.1","eslint":"^9.28.0","rollup":"^4.43.0","esbuild":"^0.25.5","jsmodbus":"^4.0.10","prettier":"^3.5.3","@swc/core":"~1.11.31","@eslint/js":"^9.28.0","serialport":">=12.0.0","typescript":"~5.8.3","@types/node":"~24.0.0","microbundle":"^0.15.1","@swc/helpers":"~0.5.17","modbus-serial":"^8.0.25","@nx/eslint-plugin":"21.1.3","rollup-plugin-dts":"^6.2.1","sort-package-json":"^3.2.1","typescript-eslint":"^8.34.0","@swc-node/register":"~1.10.10","why-is-node-running":"^3.2.2","eslint-plugin-import":"2.31.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.1","@rollup/plugin-commonjs":"^28.0.6","@microsoft/api-extractor":"^7.52.8","@serialport/binding-mock":"^10.2.2","rollup-plugin-typescript2":"^0.36.0"},"peerDependencies":{"serialport":">=12.0.0"},"_npmOperationalInternal":{"tmp":"tmp/njs-modbus_3.1.0_1780830319042_0.7158250430110245","host":"s3://npm-registry-packages-npm-production"}},"3.1.1":{"name":"njs-modbus","version":"3.1.1","keywords":["modbus","rtu","ascii","serial","tcp","udp"],"author":{"name":"Xie Jay","email":"xiejay97@gmail.com"},"license":"MIT","_id":"njs-modbus@3.1.1","maintainers":[{"name":"xiejay","email":"xiejay97@gmail.com"}],"homepage":"https://github.com/xiejay97/njs-modbus/tree/main#readme","bugs":{"url":"https://github.com/xiejay97/njs-modbus/issues"},"dist":{"shasum":"e01125401b9d6cbd9c431690202c1d36de9e6840","tarball":"https://registry.npmjs.org/njs-modbus/-/njs-modbus-3.1.1.tgz","fileCount":42,"integrity":"sha512-EekBO87C4hzZ4nBrFUUWmxpMrxhlIyTMAECw6jy3uKfshT1iU81zQncv5nSIgt6zZu6aX8rkh0u0pELjubDhfA==","signatures":[{"sig":"MEUCIQDwKdKF0rYhfSoIxwRAAl0wh6KLhcLiLiAiBC5GpivLVgIgH/DUSxeLhlO7txAArgRxUC9xxAInxpKa0ZLDvAidNT0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":372818},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","source":"src/index.ts","engines":{"node":">=18.19"},"gitHead":"203e04d081350653d1032a03524367efd35e3bc1","scripts":{"test":"tsx --test test/**/*.test.ts","build":"node -e \"fs.rmSync('dist', {recursive: true, force: true})\" && rollup -c","benchmark":"tsx benchmark/encode-decode.ts && echo && tsx benchmark/tcp-throughput.ts && echo && tsx benchmark/concurrent.ts","benchmark:report":"tsx benchmark/generate-report.ts","util:sort-package-json":"sort-package-json"},"_npmUser":{"name":"xiejay","email":"xiejay97@gmail.com"},"repository":{"url":"git+https://github.com/xiejay97/njs-modbus.git","type":"git"},"_npmVersion":"11.12.1","description":"A pure JavaScript implementation of Modbus for Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"24.15.0","_hasShrinkwrap":false,"devDependencies":{"nx":"21.1.3","tsx":"^4.21.0","tslib":"^2.8.1","eslint":"^9.28.0","rollup":"^4.43.0","esbuild":"^0.25.5","jsmodbus":"^4.0.10","prettier":"^3.5.3","@swc/core":"~1.11.31","@eslint/js":"^9.28.0","serialport":">=12.0.0","typescript":"~5.8.3","@types/node":"~24.0.0","microbundle":"^0.15.1","@swc/helpers":"~0.5.17","modbus-serial":"^8.0.25","@nx/eslint-plugin":"21.1.3","rollup-plugin-dts":"^6.2.1","sort-package-json":"^3.2.1","typescript-eslint":"^8.34.0","@swc-node/register":"~1.10.10","why-is-node-running":"^3.2.2","eslint-plugin-import":"2.31.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.1","@rollup/plugin-commonjs":"^28.0.6","@microsoft/api-extractor":"^7.52.8","@serialport/binding-mock":"^10.2.2","rollup-plugin-typescript2":"^0.36.0"},"peerDependencies":{"serialport":">=12.0.0"},"_npmOperationalInternal":{"tmp":"tmp/njs-modbus_3.1.1_1780833013323_0.15570054451728943","host":"s3://npm-registry-packages-npm-production"}},"3.2.0":{"name":"njs-modbus","version":"3.2.0","keywords":["modbus","rtu","ascii","serial","tcp","udp"],"author":{"name":"Xie Jay","email":"xiejay97@gmail.com"},"license":"MIT","_id":"njs-modbus@3.2.0","maintainers":[{"name":"xiejay","email":"xiejay97@gmail.com"}],"homepage":"https://github.com/xiejay97/njs-modbus/tree/main#readme","bugs":{"url":"https://github.com/xiejay97/njs-modbus/issues"},"dist":{"shasum":"1881aa0915e1469360d3175801cdf7a78b6efe57","tarball":"https://registry.npmjs.org/njs-modbus/-/njs-modbus-3.2.0.tgz","fileCount":10,"integrity":"sha512-BQCDaHGkfEV5a27NfiTmn4ew+0UQv/s19IwoXLPmciyfSBblP5Hed+tioVwoOAlFHRUb+vivJH/z21od5AnGrA==","signatures":[{"sig":"MEYCIQDZZ149C2VramQ95e2jFtN6v4jpygdWlTsT/ycBSKOcfQIhAKT5W4iF9Acjxlw/nxzG+7d0FWpjqp5/I5fGgO13HXwG","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":415898},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","source":"src/index.ts","engines":{"node":">=18.19"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.mjs","require":"./dist/utils.cjs"}},"gitHead":"741ee85b64fcf89a47381ab15ea501e1d078436d","scripts":{"test":"tsx --test test/**/*.test.ts","build":"node -e \"fs.rmSync('dist', {recursive: true, force: true})\" && rollup -c && node -e \"fs.rmSync('dist/src', {recursive: true, force: true})\"","benchmark":"tsx benchmark/encode-decode.ts && echo && tsx benchmark/tcp-throughput.ts && echo && tsx benchmark/concurrent.ts","benchmark:report":"tsx benchmark/generate-report.ts","benchmark:all-fcs":"tsx benchmark/all-fcs.ts","util:sort-package-json":"sort-package-json"},"_npmUser":{"name":"xiejay","email":"xiejay97@gmail.com"},"repository":{"url":"git+https://github.com/xiejay97/njs-modbus.git","type":"git"},"_npmVersion":"11.13.0","description":"A pure JavaScript implementation of Modbus for Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"nx":"21.1.3","tsx":"^4.21.0","tslib":"^2.8.1","eslint":"^9.28.0","rollup":"^4.43.0","esbuild":"^0.25.5","jsmodbus":"^4.0.10","prettier":"^3.5.3","@swc/core":"~1.11.31","@eslint/js":"^9.28.0","serialport":">=12.0.0","typescript":"~5.8.3","@types/node":"~24.0.0","microbundle":"^0.15.1","@swc/helpers":"~0.5.17","modbus-serial":"^8.0.25","@nx/eslint-plugin":"21.1.3","rollup-plugin-dts":"^6.2.1","sort-package-json":"^3.2.1","typescript-eslint":"^8.34.0","@swc-node/register":"~1.10.10","why-is-node-running":"^3.2.2","eslint-plugin-import":"2.31.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.1","@rollup/plugin-commonjs":"^28.0.6","@microsoft/api-extractor":"^7.52.8","@serialport/binding-mock":"^10.2.2","rollup-plugin-typescript2":"^0.36.0"},"peerDependencies":{"serialport":">=12.0.0"},"_npmOperationalInternal":{"tmp":"tmp/njs-modbus_3.2.0_1780960138412_0.5383136227157437","host":"s3://npm-registry-packages-npm-production"}},"3.3.0":{"name":"njs-modbus","version":"3.3.0","keywords":["modbus","rtu","ascii","serial","tcp","udp"],"author":{"name":"Xie Jay","email":"xiejay97@gmail.com"},"license":"MIT","_id":"njs-modbus@3.3.0","maintainers":[{"name":"xiejay","email":"xiejay97@gmail.com"}],"homepage":"https://github.com/xiejay97/njs-modbus/tree/main#readme","bugs":{"url":"https://github.com/xiejay97/njs-modbus/issues"},"dist":{"shasum":"c27cee2d51a3d37ef8649c94ac36cf6a34a13eeb","tarball":"https://registry.npmjs.org/njs-modbus/-/njs-modbus-3.3.0.tgz","fileCount":10,"integrity":"sha512-zHXTebzbt1K45BbLY0VqsUXZE8uesq7nUA9EuOkuIzHY0XNdBp7OX4oAme4GOP6ui9onTe6aesMp7dzrvOXwgQ==","signatures":[{"sig":"MEYCIQCYt/gP8nX9AytunqSLJJnoYCrOiXhFluqzU/zzpJKSuQIhANi2w3xbRPAt1A/XvU79hjkNOilJJ89aATFfF4vHYKxz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":449877},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","source":"src/index.ts","engines":{"node":">=18.19"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.mjs","require":"./dist/utils.cjs"}},"gitHead":"24bc74cb54e459cd97c6bc5ccbbdae2774e1d593","scripts":{"test":"tsx --test test/**/*.test.ts","build":"node -e \"fs.rmSync('dist', {recursive: true, force: true})\" && rollup -c && node -e \"fs.rmSync('dist/src', {recursive: true, force: true})\"","benchmark":"tsx benchmark/encode-decode.ts && echo && tsx benchmark/tcp-throughput.ts && echo && tsx benchmark/concurrent.ts","benchmark:rtu":"tsx benchmark/rtu-throughput.ts","benchmark:tcp":"tsx benchmark/tcp-throughput.ts","benchmark:report":"tsx benchmark/generate-report.ts","benchmark:all-fcs":"tsx benchmark/all-fcs.ts","benchmark:profile":"tsx benchmark/all-fcs.ts -- --duration 30s --runs 1 --only fc03 --libs njs-modbus --profile","benchmark:concurrent":"tsx benchmark/concurrent.ts","benchmark:report:full":"tsx benchmark/generate-report.ts -- --duration 120s --runs 3 --max-payload","benchmark:report:quick":"tsx benchmark/generate-report.ts -- --duration 10s --runs 2","util:sort-package-json":"sort-package-json","benchmark:encode-decode":"tsx benchmark/encode-decode.ts"},"_npmUser":{"name":"xiejay","email":"xiejay97@gmail.com"},"repository":{"url":"git+https://github.com/xiejay97/njs-modbus.git","type":"git"},"_npmVersion":"11.13.0","description":"A pure JavaScript implementation of Modbus for Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"nx":"21.1.3","tsx":"^4.21.0","tslib":"^2.8.1","eslint":"^9.28.0","rollup":"^4.43.0","esbuild":"^0.25.5","jsmodbus":"^4.0.10","prettier":"^3.5.3","@swc/core":"~1.11.31","@eslint/js":"^9.28.0","serialport":">=12.0.0","typescript":"~5.8.3","@types/node":"~24.0.0","microbundle":"^0.15.1","@swc/helpers":"~0.5.17","modbus-serial":"^8.0.25","@nx/eslint-plugin":"21.1.3","rollup-plugin-dts":"^6.2.1","sort-package-json":"^3.2.1","typescript-eslint":"^8.34.0","@swc-node/register":"~1.10.10","why-is-node-running":"^3.2.2","eslint-plugin-import":"2.31.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.1","@rollup/plugin-commonjs":"^28.0.6","@microsoft/api-extractor":"^7.52.8","@serialport/binding-mock":"^10.2.2","rollup-plugin-typescript2":"^0.36.0"},"peerDependencies":{"serialport":">=12.0.0"},"_npmOperationalInternal":{"tmp":"tmp/njs-modbus_3.3.0_1781006986910_0.08547056223885274","host":"s3://npm-registry-packages-npm-production"}},"3.4.0":{"name":"njs-modbus","version":"3.4.0","keywords":["modbus","rtu","ascii","serial","tcp","udp"],"author":{"name":"Xie Jay","email":"xiejay97@gmail.com"},"license":"MIT","_id":"njs-modbus@3.4.0","maintainers":[{"name":"xiejay","email":"xiejay97@gmail.com"}],"homepage":"https://github.com/xiejay97/njs-modbus/tree/main#readme","bugs":{"url":"https://github.com/xiejay97/njs-modbus/issues"},"dist":{"shasum":"7eb0ed7df7bb8b6ad819d4016b0e6f780c534653","tarball":"https://registry.npmjs.org/njs-modbus/-/njs-modbus-3.4.0.tgz","fileCount":10,"integrity":"sha512-OSVQ1PS/Q/T2XQfHLe/Xll2Ovr1VY6jlfxc4HpaL8cTok2Uvn5/ROkgsF/J/7xbrd6fBAhoJOAjQyxwW0llPUg==","signatures":[{"sig":"MEMCH0radrh8BNqn0G64JF+j7AWOzVTiyu/ilR9vAMhzZI4CIFfixhvtv1CfP6dZb+3dnL6Lq44laqTFZfHq/7i9qxGd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":475573},"main":"dist/index.cjs","type":"module","types":"dist/index.d.ts","module":"dist/index.mjs","source":"src/index.ts","engines":{"node":">=18.19"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.cjs"},"./utils":{"types":"./dist/utils.d.ts","import":"./dist/utils.mjs","require":"./dist/utils.cjs"}},"gitHead":"7e0f137b0ce9a97090bdef6b37d6243c5a702309","scripts":{"test":"tsx --test test/**/*.test.ts","build":"node -e \"fs.rmSync('dist', {recursive: true, force: true})\" && rollup -c && node -e \"fs.rmSync('dist/src', {recursive: true, force: true})\"","benchmark:report":"tsx benchmark/generate-report.ts","benchmark:report:full":"tsx benchmark/generate-report.ts -- --duration 120s --runs 5 --max-payload","benchmark:report:test":"tsx benchmark/test-report.ts","benchmark:report:quick":"tsx benchmark/generate-report.ts -- --duration 10s --runs 2","util:sort-package-json":"sort-package-json"},"_npmUser":{"name":"xiejay","email":"xiejay97@gmail.com"},"repository":{"url":"git+https://github.com/xiejay97/njs-modbus.git","type":"git"},"_npmVersion":"11.13.0","description":"A pure JavaScript implementation of Modbus for Node.js.","directories":{},"sideEffects":false,"_nodeVersion":"24.16.0","_hasShrinkwrap":false,"devDependencies":{"nx":"21.1.3","tsx":"^4.21.0","tslib":"^2.8.1","eslint":"^9.28.0","rollup":"^4.43.0","esbuild":"^0.25.5","jsmodbus":"^4.0.10","prettier":"^3.5.3","@swc/core":"~1.11.31","@eslint/js":"^9.28.0","serialport":">=12.0.0","typescript":"~5.8.3","@types/node":"~24.0.0","microbundle":"^0.15.1","@swc/helpers":"~0.5.17","modbus-serial":"^8.0.25","@nx/eslint-plugin":"21.1.3","rollup-plugin-dts":"^6.2.1","sort-package-json":"^3.2.1","typescript-eslint":"^8.34.0","@swc-node/register":"~1.10.10","why-is-node-running":"^3.2.2","eslint-plugin-import":"2.31.0","eslint-config-prettier":"^10.1.5","eslint-plugin-prettier":"^5.4.1","@rollup/plugin-commonjs":"^28.0.6","@microsoft/api-extractor":"^7.52.8","@serialport/binding-mock":"^10.2.2","rollup-plugin-typescript2":"^0.36.0"},"peerDependencies":{"serialport":">=12.0.0"},"_npmOperationalInternal":{"tmp":"tmp/njs-modbus_3.4.0_1781174413949_0.05555975644696454","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"njs-modbus","version":"4.0.0","keywords":["modbus","tcp","rtu","ascii","tls","udp"],"author":"Xie Jay <xiejay97@gmail.com>","license":"BUSL-1.1","_id":"njs-modbus@4.0.0","maintainers":[{"name":"xiejay","email":"xiejay97@gmail.com"}],"homepage":"https://github.com/xiejay97/njs-modbus#readme","bugs":{"url":"https://github.com/xiejay97/njs-modbus/issues"},"dist":{"shasum":"66097b202f7c964a01fcf0db71fa7b55125ed5b7","tarball":"https://registry.npmjs.org/njs-modbus/-/njs-modbus-4.0.0.tgz","fileCount":8,"integrity":"sha512-s2/NO7A157foZVMxwTuRG4IpKfXxMMtgzXA1OQQdGxPZ4d+YsSnWSZDjhdJPrdIwuTnrB2ZH/NpfQCusLi4g4g==","signatures":[{"sig":"MEUCICosGSnZh7zzk+aTHB3k7wg8N+MPvKuVbqTXBYU37K8mAiEAy+ibC6nMLCtFZRFyohkbCRyTRY3Nfrf1UuN0l6LhyhU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":739351},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.cts","module":"./dist/index.mjs","engines":{"node":">=18.19"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./package.json":"./package.json"},"scripts":{"dev":"tsdown --watch","lint":"eslint .","test":"vitest run","build":"tsdown","format":"prettier --write .","release":"release-it","benchmark":"NODE_OPTIONS='--conditions=dev' tsx benchmark/bench-run.ts","typecheck":"tsc --noEmit","docs:build":"typedoc","test:coverage":"vitest run --coverage","benchmark:fast":"NODE_OPTIONS='--conditions=dev' tsx benchmark/bench-run.ts --all --report --fast --max-payload","benchmark:full":"pnpm run build && NODE_OPTIONS='--conditions=dist' pnpm exec tsx benchmark/bench-run.ts --all --report --max-payload --runs 5 --duration 120 --chaos-requests 2000","benchmark:test":"NODE_OPTIONS='--conditions=dev' tsx benchmark/bench-test-report.ts"},"_npmUser":{"name":"xiejay","email":"xiejay97@gmail.com"},"repository":{"url":"git+https://github.com/xiejay97/njs-modbus.git","type":"git"},"description":"A zero-dependency Modbus protocol library for Node.js with TCP, RTU, ASCII, UDP, and TLS support.","directories":{},"sideEffects":false,"_nodeVersion":"26.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","eslint":"^9.39.4","tsdown":"^0.22.0","vitest":"^4.1.5","typedoc":"^0.28.19","prettier":"^3.8.4","@eslint/js":"^9.39.4","release-it":"^20.2.0","typescript":"^6.0.3","@types/node":"^18.19.130","unplugin-unused":"^0.5.7","typescript-eslint":"^8.61.0","@vitest/coverage-v8":"^4.1.8","eslint-plugin-import":"^2.32.0","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","typedoc-plugin-markdown":"^4.12.0","@typescript/native-preview":"7.0.0-dev.20260509.2","eslint-config-flat-gitignore":"^2.3.0","@release-it/conventional-changelog":"^11.0.1"},"peerDependencies":{"serialport":">=12.0.0"},"peerDependenciesMeta":{"serialport":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/njs-modbus_4.0.0_1782498182227_0.6627859736455219","host":"s3://npm-registry-packages-npm-production"}},"4.0.1":{"name":"njs-modbus","version":"4.0.1","keywords":["modbus","tcp","rtu","ascii","tls","udp"],"author":"Xie Jay <xiejay97@gmail.com>","license":"BUSL-1.1","_id":"njs-modbus@4.0.1","maintainers":[{"name":"xiejay","email":"xiejay97@gmail.com"}],"homepage":"https://github.com/xiejay97/njs-modbus#readme","bugs":{"url":"https://github.com/xiejay97/njs-modbus/issues"},"dist":{"shasum":"7bd6ff567a2188d9e543ce785037b60c4cb20529","tarball":"https://registry.npmjs.org/njs-modbus/-/njs-modbus-4.0.1.tgz","fileCount":8,"integrity":"sha512-bGHAXGm0ufBvK4EhQmxLyM9fU/u4f85zuvZiLaFCWi+YISM9LcsgD6AmBIOSVM1nofZXbN/TTBklWsQn+8rrzg==","signatures":[{"sig":"MEUCIQDkmIl9Pulxj+rMnrs415DI6exVQ/cyyIHT9n/G3Q1hRgIgK4UtNxAG15RtEgsCAMsQ4/oKFLxBT90il3KINcgaTSQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":740093},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.cts","module":"./dist/index.mjs","engines":{"node":">=18.19"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./package.json":"./package.json"},"scripts":{"dev":"tsdown --watch","lint":"eslint .","test":"vitest run","build":"tsdown","format":"prettier --write .","release":"release-it","benchmark":"NODE_OPTIONS='--conditions=dev' tsx benchmark/bench-run.ts","typecheck":"tsc --noEmit","docs:build":"typedoc","test:coverage":"vitest run --coverage","benchmark:fast":"NODE_OPTIONS='--conditions=dev' tsx benchmark/bench-run.ts --all --report --fast --max-payload","benchmark:full":"pnpm run build && NODE_OPTIONS='--conditions=dist' pnpm exec tsx benchmark/bench-run.ts --all --report --max-payload --runs 5 --duration 120 --chaos-requests 2000","benchmark:test":"NODE_OPTIONS='--conditions=dev' tsx benchmark/bench-test-report.ts"},"_npmUser":{"name":"xiejay","email":"xiejay97@gmail.com"},"repository":{"url":"git+https://github.com/xiejay97/njs-modbus.git","type":"git"},"description":"A zero-dependency Modbus protocol library for Node.js with TCP, RTU, ASCII, UDP, and TLS support.","directories":{},"sideEffects":false,"_nodeVersion":"26.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","eslint":"^9.39.4","tsdown":"^0.22.0","vitest":"^4.1.5","typedoc":"^0.28.19","prettier":"^3.8.4","@eslint/js":"^9.39.4","release-it":"^20.2.0","typescript":"^6.0.3","@types/node":"^18.19.130","unplugin-unused":"^0.5.7","typescript-eslint":"^8.61.0","@vitest/coverage-v8":"^4.1.8","eslint-plugin-import":"^2.32.0","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","typedoc-plugin-markdown":"^4.12.0","@typescript/native-preview":"7.0.0-dev.20260509.2","eslint-config-flat-gitignore":"^2.3.0","@release-it/conventional-changelog":"^11.0.1"},"peerDependencies":{"serialport":">=12.0.0"},"peerDependenciesMeta":{"serialport":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/njs-modbus_4.0.1_1782700137310_0.23619585218536998","host":"s3://npm-registry-packages-npm-production"}},"4.1.0":{"name":"njs-modbus","version":"4.1.0","keywords":["modbus","tcp","rtu","ascii","tls","udp"],"author":"Xie Jay <xiejay97@gmail.com>","license":"BUSL-1.1","_id":"njs-modbus@4.1.0","maintainers":[{"name":"xiejay","email":"xiejay97@gmail.com"}],"homepage":"https://github.com/xiejay97/njs-modbus#readme","bugs":{"url":"https://github.com/xiejay97/njs-modbus/issues"},"dist":{"shasum":"7f0d750a43b5af654478a000511ce82b7fbe11f1","tarball":"https://registry.npmjs.org/njs-modbus/-/njs-modbus-4.1.0.tgz","fileCount":8,"integrity":"sha512-apdyiSYWy7msE3BrXFuvb10zcVKleWhqOHT3LZbFnMxKK31aIRtrp4BQyonLNMC6xM4yhmiQqX7WYJ9fho2EXw==","signatures":[{"sig":"MEYCIQD+xRAc0tjeAahVSAkQoZQVuXiVc6jmJPVcbDeXV8JaTAIhAKXr1Xx6frfj5Jk50+fCWvvWazRs0FdiH6YKSzdIP4yJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":745181},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.cts","module":"./dist/index.mjs","engines":{"node":">=18.19"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./package.json":"./package.json"},"scripts":{"dev":"tsdown --watch","lint":"eslint .","test":"vitest run","build":"tsdown","format":"prettier --write .","release":"release-it","benchmark":"NODE_OPTIONS='--conditions=dev' tsx benchmark/bench-run.ts","typecheck":"tsc --noEmit","docs:build":"typedoc","test:coverage":"vitest run --coverage","benchmark:fast":"NODE_OPTIONS='--conditions=dev' tsx benchmark/bench-run.ts --all --report --fast --max-payload","benchmark:full":"pnpm run build && NODE_OPTIONS='--conditions=dist' pnpm exec tsx benchmark/bench-run.ts --all --report --max-payload --runs 5 --duration 120 --chaos-requests 2000","benchmark:test":"NODE_OPTIONS='--conditions=dev' tsx benchmark/bench-test-report.ts"},"_npmUser":{"name":"xiejay","email":"xiejay97@gmail.com"},"repository":{"url":"git+https://github.com/xiejay97/njs-modbus.git","type":"git"},"description":"A zero-dependency Modbus protocol library for Node.js with TCP, RTU, ASCII, UDP, and TLS support.","directories":{},"sideEffects":false,"_nodeVersion":"26.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.0","eslint":"^9.39.4","tsdown":"^0.22.4","vitest":"^4.1.10","typedoc":"^0.28.20","prettier":"^3.9.4","@eslint/js":"^9.39.4","release-it":"^20.2.1","typescript":"^6.0.3","@types/node":"^18.19.130","unplugin-unused":"^0.5.7","typescript-eslint":"^8.63.0","@vitest/coverage-v8":"^4.1.10","eslint-plugin-import":"^2.32.0","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","typedoc-plugin-markdown":"^4.12.0","@typescript/native-preview":"7.0.0-dev.20260707.2","eslint-config-flat-gitignore":"^2.3.0","@release-it/conventional-changelog":"^11.0.1"},"peerDependencies":{"serialport":">=12.0.0"},"peerDependenciesMeta":{"serialport":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/njs-modbus_4.1.0_1783499540649_0.047735256094463274","host":"s3://npm-registry-packages-npm-production"}},"5.0.0":{"name":"njs-modbus","version":"5.0.0","keywords":["modbus","tcp","rtu","ascii","tls","udp"],"author":"Xie Jay <xiejay97@gmail.com>","license":"BUSL-1.1","_id":"njs-modbus@5.0.0","maintainers":[{"name":"xiejay","email":"xiejay97@gmail.com"}],"homepage":"https://github.com/xiejay97/njs-modbus#readme","bugs":{"url":"https://github.com/xiejay97/njs-modbus/issues"},"dist":{"shasum":"2416c6e275535db55698edc0ab843ea0319a4b8b","tarball":"https://registry.npmjs.org/njs-modbus/-/njs-modbus-5.0.0.tgz","fileCount":8,"integrity":"sha512-5f9kZZxCimTkxMm/BFc1FZEXqw+WOF8IzVWuqXvWtIv2MBY8ua+pqZuzXkWrdQ0yswFjXH16cigev8TDfuNZCw==","signatures":[{"sig":"MEUCIAaBLI0e3QLnOslnVkz5vGoIBgbPl3yRK9Vzpc6BTbQgAiEAh9kAeOcvaZ0DqgFnb+FuFeLMbH4emWb3uYDxAeW42Fo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":777784},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.cts","module":"./dist/index.mjs","engines":{"node":">=18.19"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./package.json":"./package.json"},"scripts":{"dev":"tsdown --watch","lint":"eslint .","test":"vitest run","build":"tsdown","format":"prettier --write .","release":"release-it","benchmark":"NODE_OPTIONS='--conditions=dev' tsx benchmark/bench-run.ts","typecheck":"tsc --noEmit","docs:build":"typedoc","test:coverage":"vitest run --coverage","benchmark:fast":"NODE_OPTIONS='--conditions=dev' tsx benchmark/bench-run.ts --all --report --fast --max-payload","benchmark:full":"pnpm run build && NODE_OPTIONS='--conditions=dist' pnpm exec tsx benchmark/bench-run.ts --all --report --max-payload --runs 5 --duration 120 --chaos-requests 2000","benchmark:test":"NODE_OPTIONS='--conditions=dev' tsx benchmark/bench-test-report.ts"},"_npmUser":{"name":"xiejay","email":"xiejay97@gmail.com"},"repository":{"url":"git+https://github.com/xiejay97/njs-modbus.git","type":"git"},"description":"A zero-dependency Modbus protocol library for Node.js with TCP, RTU, ASCII, UDP, and TLS support.","directories":{},"sideEffects":false,"_nodeVersion":"26.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.5","eslint":"^9.39.5","tsdown":"^0.22.14","vitest":"^4.1.10","typedoc":"^0.28.20","prettier":"^3.9.6","@eslint/js":"^9.39.5","release-it":"^21.0.1","typescript":"^6.0.3","@types/node":"^18.19.130","unplugin-unused":"^0.6.0","typescript-eslint":"^8.66.0","@vitest/coverage-v8":"^4.1.10","eslint-plugin-import":"^2.32.0","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","typedoc-plugin-markdown":"^4.12.0","@typescript/native-preview":"7.0.0-dev.20260707.2","eslint-config-flat-gitignore":"^2.3.0","@release-it/conventional-changelog":"^12.0.0"},"peerDependencies":{"serialport":">=12.0.0"},"peerDependenciesMeta":{"serialport":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/njs-modbus_5.0.0_1785832813045_0.7222467129420218","host":"s3://npm-registry-packages-npm-production"}},"5.0.1":{"_id":"njs-modbus@5.0.1","bugs":{"url":"https://github.com/xiejay97/njs-modbus/issues"},"dist":{"shasum":"2a178ba0ceaa1f41c42808b9d6f0df30a16940cc","tarball":"https://registry.npmjs.org/njs-modbus/-/njs-modbus-5.0.1.tgz","fileCount":8,"integrity":"sha512-sHSBCritXwiEtvJKyCuQR3a+8oK4ohi4Eykwoq+wDyn+Q/VfNpuN4yOpAhb4dQTC7yD84CuE+5u/MfSjCEwixQ==","signatures":[{"sig":"MEYCIQCJToaaKAsqh2W7xqtHa9cAj0Ay/eVjwz7FuUMNR1hwjQIhANwF2Nkg1a5wqqXs1grdw6e8T92vH++B+QGxjDyidGur","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCItqp7pAHTtfIGMuRWWuRDwZBgORlRxBMV9RNF0wZiNwIhAOUFDQ2i487C/C1uR4PSbjHDBqCVVJeO4jGybyLV0S6W"}],"unpackedSize":782642},"main":"./dist/index.cjs","name":"njs-modbus","type":"module","types":"./dist/index.d.cts","author":"Xie Jay <xiejay97@gmail.com>","module":"./dist/index.mjs","engines":{"node":">=18.19"},"exports":{".":{"import":{"types":"./dist/index.d.mts","default":"./dist/index.mjs"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./package.json":"./package.json"},"license":"BUSL-1.1","scripts":{"dev":"tsdown --watch","lint":"eslint .","test":"vitest run","build":"tsdown","format":"prettier --write .","release":"release-it","benchmark":"NODE_OPTIONS='--conditions=dev' tsx benchmark/bench-run.ts","typecheck":"tsc --noEmit","docs:build":"typedoc","test:coverage":"vitest run --coverage","benchmark:fast":"NODE_OPTIONS='--conditions=dev' tsx benchmark/bench-run.ts --all --report --fast --max-payload","benchmark:full":"pnpm run build && NODE_OPTIONS='--conditions=dist' pnpm exec tsx benchmark/bench-run.ts --all --report --max-payload --runs 5 --duration 120 --chaos-requests 2000","benchmark:test":"NODE_OPTIONS='--conditions=dev' tsx benchmark/bench-test-report.ts"},"version":"5.0.1","_npmUser":{"name":"xiejay","email":"xiejay97@gmail.com"},"homepage":"https://github.com/xiejay97/njs-modbus#readme","keywords":["modbus","tcp","rtu","ascii","tls","udp"],"repository":{"url":"git+https://github.com/xiejay97/njs-modbus.git","type":"git"},"description":"A zero-dependency Modbus protocol library for Node.js with TCP, RTU, ASCII, UDP, and TLS support.","directories":{},"maintainers":[{"name":"xiejay","email":"xiejay97@gmail.com"}],"sideEffects":false,"_nodeVersion":"26.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.15","eslint":"^9.39.5","tsdown":"^0.23.0","vitest":"^4.1.11","typedoc":"^0.28.20","prettier":"^3.9.9","@eslint/js":"^9.39.5","release-it":"^21.1.0","typescript":"^6.0.3","@types/node":"^18.19.130","unplugin-unused":"^0.6.0","typescript-eslint":"^8.70.1","@vitest/coverage-v8":"^4.1.11","eslint-plugin-import":"^2.32.0","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.6","typedoc-plugin-markdown":"^4.13.1","@typescript/native-preview":"7.0.0-dev.20260707.2","eslint-config-flat-gitignore":"^2.4.0","@release-it/conventional-changelog":"^12.0.2"},"peerDependencies":{"serialport":">=12.0.0"},"peerDependenciesMeta":{"serialport":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/njs-modbus_5.0.1_1790146571182_0.48666833225433215"}}},"time":{"created":"2025-06-18T12:31:35.723Z","modified":"2026-09-23T06:56:11.429Z","1.0.0":"2025-06-18T12:31:35.899Z","1.0.1":"2025-06-19T06:01:33.637Z","1.1.0":"2025-06-23T09:09:24.887Z","1.2.0":"2025-06-25T06:20:26.927Z","1.3.0":"2025-06-27T04:13:48.040Z","1.3.1":"2025-07-02T06:11:55.909Z","1.3.2":"2025-07-02T06:49:04.275Z","1.3.3":"2025-07-02T06:50:12.359Z","1.3.4":"2025-07-02T09:16:07.982Z","1.3.5":"2025-07-04T06:33:22.449Z","1.4.0":"2025-07-30T07:30:02.338Z","1.5.0":"2026-04-30T17:38:00.758Z","2.0.0":"2026-05-13T08:59:17.174Z","2.0.1":"2026-05-13T11:06:49.100Z","2.1.0":"2026-05-14T04:17:31.736Z","3.0.0":"2026-06-06T14:43:32.028Z","3.0.1":"2026-06-06T14:57:26.864Z","3.0.2":"2026-06-06T15:54:45.080Z","3.1.0":"2026-06-07T11:05:19.192Z","3.1.1":"2026-06-07T11:50:13.475Z","3.2.0":"2026-06-08T23:08:58.555Z","3.3.0":"2026-06-09T12:09:47.083Z","3.4.0":"2026-06-11T10:40:14.135Z","4.0.0":"2026-06-26T18:23:02.425Z","4.0.1":"2026-06-29T02:28:57.451Z","4.1.0":"2026-07-08T08:32:20.850Z","5.0.0":"2026-08-04T08:40:13.257Z","5.0.1":"2026-09-23T06:56:11.263Z"},"bugs":{"url":"https://github.com/xiejay97/njs-modbus/issues"},"author":"Xie Jay <xiejay97@gmail.com>","license":"BUSL-1.1","homepage":"https://github.com/xiejay97/njs-modbus#readme","keywords":["modbus","tcp","rtu","ascii","tls","udp"],"repository":{"url":"git+https://github.com/xiejay97/njs-modbus.git","type":"git"},"description":"A zero-dependency Modbus protocol library for Node.js with TCP, RTU, ASCII, UDP, and TLS support.","maintainers":[{"name":"xiejay","email":"xiejay97@gmail.com"}],"readme":"# njs-modbus\n\n[![License](https://img.shields.io/badge/License-BSL%201.1-orange.svg)](LICENSE)\n[![Node.js](https://img.shields.io/badge/Runtime-Node%20%3E%3D18.19-339933.svg?logo=nodedotjs)](https://nodejs.org/)\n[![TypeScript](https://img.shields.io/badge/TypeScript-Strict-3178C6.svg?logo=typescript)](https://www.typescriptlang.org/)\n[![Modbus](https://img.shields.io/badge/Modbus-TCP%20%7C%20RTU%20%7C%20ASCII%20%7C%20TLS-555555.svg)](https://modbus.org/)\n\n**English** | [中文](README.zh-CN.md)\n\n> A production-grade, zero-GC Modbus protocol stack for Node.js — TCP, RTU, and ASCII over TCP, UDP, TLS, serial, or any custom transport you can model as a byte pipeline.\n\n`njs-modbus` is written in strict TypeScript and targets Node.js `>=18.19`. Its design is heavily informed by industrial field conditions: deterministic latency, streaming frame recovery, programmable access control, and audit logging are built in from the start.\n\nLicensed under the **Business Source License 1.1 (BSL 1.1)**. Free for development, testing, and production use by individuals, educational institutions, non-profits, and companies with annual gross revenue below US$1M. A proprietary commercial license is available for larger organizations. Every version transitions to **Apache-2.0** on its Change Date.\n\n---\n\n## Table of Contents\n\n- [What is njs-modbus?](#what-is-njs-modbus)\n- [Why njs-modbus?](#why-njs-modbus)\n- [Feature Matrix](#feature-matrix)\n- [Installation](#installation)\n- [Quick Start](#quick-start)\n  - [TCP Master](#tcp-master)\n  - [TCP Slave](#tcp-slave)\n  - [RTU over Serial](#rtu-over-serial)\n- [Architecture](#architecture)\n- [Core Capabilities](#core-capabilities)\n- [Supported Function Codes](#supported-function-codes)\n- [Benchmarks](#benchmarks)\n- [Security & Compliance](#security--compliance)\n- [Commercial Support & License](#commercial-support--license)\n\n---\n\n## What is njs-modbus?\n\n`njs-modbus` is a layered Modbus protocol library for Node.js. The protocol layer speaks only in buffers and knows nothing about the underlying physical device. That means the same master/slave logic runs over TCP, UDP, TLS, serial, WebSocket, an in-memory mock, or any other transport — you implement the wire once behind the `AbstractPipelineAdapter` interface and reuse the full protocol stack unchanged.\n\n```\n┌─────────────────────────────────────────────┐\n│  Application: ModbusMaster / ModbusSlave    │\n├─────────────────────────────────────────────┤\n│  Protocol framing: TCP / RTU / ASCII        │\n├─────────────────────────────────────────────┤\n│  Pipeline: AbstractPipelineAdapter          │\n├─────────────────────────────────────────────┤\n│  Physical transport: TCP / UDP / TLS /      │\n│  Serial / WebSocket / custom                │\n└─────────────────────────────────────────────┘\n```\n\n- **Strict TypeScript** — generic protocol literals (`'TCP' | 'RTU' | 'ASCII'`) and typed Promise APIs catch integration mistakes at compile time.\n- **Zero-GC decode hot paths** — explicit finite-state-machine framing avoids allocating objects or buffers on the JS heap during steady-state operation.\n- **Transport-agnostic** — one adapter interface, any wire.\n\n---\n\n## Why njs-modbus?\n\n| Concern | What you get |\n| --- | --- |\n| **Deterministic latency** | GC-free decode paths, low-allocation encode, and sub-microsecond P50 codec latency. No garbage-collection pauses on the hot path. |\n| **Production-hardened framing** | Streaming state machines recover from garbage bytes, sticky frames, truncation, cross-boundary chunks, and corrupted CRC/LRC — without leaking invalid data into adjacent frames. |\n| **Type safety** | Strict TypeScript with typed Promise APIs; most integration mistakes surface at compile time. |\n| **Access control & audit** | Policy hooks at unit, address, and runtime gates, plus structured `accessAudit` events on the slave for compliance and forensics. |\n| **Transport freedom** | TCP, UDP, TLS, serial, or custom transports via `AbstractPipelineAdapter`. The protocol logic never changes. |\n| **Commercial clarity** | BSL 1.1: free for individuals, non-profits, and small companies; commercial license available for larger organizations; Apache-2.0 after the Change Date. |\n\n---\n\n## Feature Matrix\n\n| Capability | TCP | RTU | ASCII |\n| --- | :---: | :---: | :---: |\n| Master / client | ✅ | ✅ | ✅ |\n| Slave / server | ✅ | ✅ | ✅ |\n| Concurrent pipelining | ✅ | — | — |\n| Broadcast (`unit === 0`) | ✅ | ✅ | ✅ |\n| Custom function codes | ✅ | ✅* | ✅ |\n| Streaming frame recovery | ✅ | ✅ | ✅ |\n\n\\* RTU custom function codes require a `determineFrameLength` callback so the framing state machine can know the frame length without buffering.\n\nBecause the protocol layer is transport-agnostic, any protocol (TCP / RTU / ASCII) can run over any transport for which you provide a pipeline adapter. Built-in transports include TCP, UDP, TLS (over TCP), and serial; the WebSocket example demonstrates a custom adapter.\n\n---\n\n## Installation\n\n```bash\nnpm install njs-modbus\n```\n\nSerial support is provided through an optional peer dependency:\n\n```bash\nnpm install serialport\n```\n\nRequires Node.js `>=18.19`.\n\n---\n\n## Quick Start\n\n### TCP Master\n\n```typescript\nimport { ModbusMaster, TcpClientPhysicalLayer } from 'njs-modbus';\n\nconst physical = new TcpClientPhysicalLayer();\n\nphysical.on('connect', async (pipeline) => {\n  const master = new ModbusMaster({\n    pipelineAdapter: pipeline,\n    protocol: { type: 'TCP' },\n    queueStrategy: 'concurrent',\n    responseTimeout: 1000,\n  });\n\n  try {\n    const response = await master.readHoldingRegisters(1, 0, 10);\n    console.log('registers:', response.data);\n  } catch (err) {\n    console.error('request failed:', (err as Error).message);\n  } finally {\n    master.destroy();\n    physical.close();\n  }\n});\n\nphysical.open({ host: '127.0.0.1', port: 502 }, (err) => {\n  if (err) {\n    console.error('failed to connect:', err.message);\n    process.exit(1);\n  }\n});\n```\n\n### TCP Slave\n\n```typescript\nimport { ModbusSlave, TcpServerPhysicalLayer } from 'njs-modbus';\n\nconst physical = new TcpServerPhysicalLayer();\n\nphysical.on('connect', (pipeline) => {\n  const slave = new ModbusSlave({\n    pipelineAdapter: pipeline,\n    protocol: { type: 'TCP' },\n    queueStrategy: 'drop-stale',\n  });\n\n  slave.addUnit(1, {\n    readHoldingRegisters: (address, length, callback) => {\n      const values = Array.from({ length }, (_, i) => (address + i) & 0xffff);\n      callback(null, values);\n    },\n    writeSingleRegister: (address, value, callback) => {\n      console.log(`write ${value} to ${address}`);\n      callback(null);\n    },\n  });\n});\n\nphysical.open({ port: 502 }, (err) => {\n  if (err) {\n    console.error('failed to listen:', err.message);\n    process.exit(1);\n  }\n  console.log('slave listening on port 502');\n});\n```\n\n### RTU over Serial\n\n```typescript\nimport { ModbusMaster, SerialPhysicalLayer } from 'njs-modbus';\n\nconst physical = new SerialPhysicalLayer();\n\nphysical.on('connect', async (pipeline) => {\n  const master = new ModbusMaster({\n    pipelineAdapter: pipeline,\n    protocol: { type: 'RTU' },\n    queueStrategy: 'fifo',\n    responseTimeout: 500,\n  });\n\n  const res = await master.readHoldingRegisters(1, 0, 10);\n  console.log('registers:', res.data);\n\n  master.destroy();\n  physical.close();\n});\n\nphysical.open({ path: '/dev/ttyUSB0', baudRate: 115200 });\n```\n\nSee [`examples/`](https://github.com/xiejay97/njs-modbus/tree/main/examples) for runnable master/slave pairs, including access control, audit logging, TLS, and custom transports such as WebSocket.\n\n### Reconnection\n\n`njs-modbus` does not provide built-in auto-reconnect. Reconnection is an application concern: the right backoff, retry budget, and shutdown behavior depend on your deployment. The [`examples/best-practice/`](https://github.com/xiejay97/njs-modbus/tree/main/examples/best-practice) example shows a production-ready pattern with exponential backoff, jitter, a retry budget, and graceful shutdown.\n\n---\n\n## Architecture\n\nThe library is organized into four layers. Each layer is independent, testable in isolation, and replaceable.\n\n| Layer | Responsibility | Public Contract |\n| --- | --- | --- |\n| **Physical** | Open/close the wire and emit a pipeline per connection. | `AbstractPhysicalLayer` |\n| **Pipeline** | Move raw bytes, handle back-pressure, and expose a `write(data)` + `data` event surface. | `AbstractPipelineAdapter` / `AbstractPipelineLayer` |\n| **Protocol** | Parse frames, validate CRC/LRC/MBAP, and emit complete ADUs. | `TcpProtocolLayer` / `RtuProtocolLayer` / `AsciiProtocolLayer` |\n| **Application** | Orchestrate transactions, queues, access control, and expose the public Promise API. | `ModbusMaster` / `ModbusSlave` |\n\nThis separation is what makes custom transports trivial. The WebSocket example in [`examples/websocket/`](https://github.com/xiejay97/njs-modbus/tree/main/examples/websocket) implements a full pipeline layer in under 150 lines.\n\n---\n\n## Core Capabilities\n\n### Low-Allocation Codec Hot Paths\n\nThe protocol framing layers for TCP, RTU, and ASCII are implemented as explicit finite state machines. Decode paths avoid allocating objects or buffers on the JavaScript heap during steady-state operation by using pre-allocated residual buffers and zero-copy views, which removes garbage-collection jitter from the protocol hot path. Encode paths perform a single bounded `Buffer.allocUnsafe()` per frame.\n\n### Streaming Frame Recovery\n\nThe framing layers parse incoming bytes as a stream. They recover from:\n\n- Garbage bytes injected on the wire.\n- Multiple valid frames concatenated in one read (`sticky` frames).\n- Truncated frames followed by valid frames.\n- Cross-boundary chunks split across multiple reads.\n- Corrupted CRC (RTU) or LRC (ASCII).\n\nValid frames are emitted; invalid data is discarded without corrupting adjacent frames.\n\n### Queue Strategies\n\nBoth `ModbusMaster` and `ModbusSlave` support four queue strategies:\n\n| Strategy | Behavior | Best for |\n| --- | --- | --- |\n| `fifo` | Strict first-in-first-out execution. | Serial lines, deterministic ordering. |\n| `drop-stale` | New requests clear all pending, unexecuted requests. | Telemetry collectors where only the latest value matters. |\n| `deduplicate` | Pending requests with the same ADU fingerprint are dropped. | Polling loops that may overlap. |\n| `concurrent` | Requests are dispatched concurrently. | Modbus TCP or multi-link masters/slaves. |\n\n`drop-stale` is the default.\n\n### Per-Unit Write Range Lock\n\nFor the slave in `concurrent` mode, `enableWriteRangeLock` (default `true`) ensures that write requests (FC05/06/15/16/22/23) with overlapping address ranges on the same unit are serialized, preventing race conditions. This is critical for maintaining consistency when modifying shared registers or coils from multiple connections simultaneously. Set to `false` only for purely synchronous in-memory slaves that do not need the coordination overhead.\n\n### Access Control and Audit\n\nInstall an `AccessAuthorizer` on either master or slave to enforce policies at three gates:\n\n- `checkUnit` — authorize the target unit address.\n- `checkAddress` — authorize the address range touched by the request.\n- `checkRuntime` — last-chance authorization immediately before wire I/O.\n\nEach hook may return `true`, `false`, or a numeric Modbus exception `ErrorCode`. On the slave, denied requests emit `accessAudit` events.\n\n```typescript\nslave.setAccessAuthorizer({\n  checkUnit: (unit) => unit === 1,\n  checkAddress: (_unit, table, [start, end]) =>\n    table === 'holdingRegisters' && start >= 0 && end < 100,\n});\n\nslave.on('accessAudit', (event) => {\n  console.log('access denied:', event.type, event.message);\n});\n```\n\n### Custom Function Codes\n\nRegister non-standard function codes on the master or slave. The framing layer learns the request shape, and the application layer receives the raw PDU to parse and respond.\n\n```typescript\nslave.addCustomFunctionCode(\n  { fc: 0x65 },\n  (unit, fc, data, callback) => {\n    // produce response PDU bytes\n    callback(null, () => Buffer.from([0x00]));\n  },\n);\n```\n\nFor RTU (and ASCII when operating over byte-oriented transports), the descriptor must also provide `determineFrameLength` so the framing state machine can determine frame length without buffering.\n\n---\n\n## Supported Function Codes\n\n| FC | Name | Master | Slave |\n| --: | --- | :---: | :---: |\n| 01 | Read Coils | ✅ | ✅ |\n| 02 | Read Discrete Inputs | ✅ | ✅ |\n| 03 | Read Holding Registers | ✅ | ✅ |\n| 04 | Read Input Registers | ✅ | ✅ |\n| 05 | Write Single Coil | ✅ | ✅ |\n| 06 | Write Single Register | ✅ | ✅ |\n| 08/00 | Return Query Data | ✅ | ✅ |\n| 15 | Write Multiple Coils | ✅ | ✅ |\n| 16 | Write Multiple Registers | ✅ | ✅ |\n| 17 | Report Server ID | ✅ | ✅ |\n| 22 | Mask Write Register | ✅ | ✅ |\n| 23 | Read/Write Multiple Registers | ✅ | ✅ |\n| 43/14 | Read Device Identification | ✅ | ✅ |\n\n---\n\n## Benchmarks\n\nAll figures below were produced by the benchmark harness in this repository on an **AMD Ryzen 7 9800X3D** workstation running **Node.js v24.16.0**. See [`benchmark/report_presentation.md`](benchmark/report_presentation.md) for the full report, methodology, and reproducibility instructions.\n\n### Codec Micro-Benchmark\n\nPure CPU encode/decode, no network I/O. Each op completes in sub-microsecond time, so `Ops/sec` and `CPU (µs/op)` are the reliable indicators; per-op latency at this scale is dominated by `process.hrtime` overhead and is omitted.\n\n| Suite | Ops/sec | CPU (µs/op) |\n| --- | ---: | ---: |\n| TCP request encode | 9.37 M | 0.11 |\n| TCP response encode | 7.83 M | 0.13 |\n| TCP request decode | 8.83 M | 0.11 |\n| TCP response decode | 8.90 M | 0.11 |\n| RTU request encode | 9.12 M | 0.11 |\n| RTU response encode | 1.91 M | 0.53 |\n| RTU request decode | 8.53 M | 0.12 |\n| RTU response decode | 1.98 M | 0.51 |\n| ASCII request encode | 8.83 M | 0.11 |\n| ASCII response encode | 2.44 M | 0.42 |\n| ASCII request decode | 7.84 M | 0.13 |\n| ASCII response decode | 2.53 M | 0.4 |\n\nAll codec suites report `0` ns/op of GC pressure because the decode hot paths do not allocate on the JavaScript heap during steady-state operation.\n\n### End-to-End Transport Throughput\n\nFC 03 (read 50 holding registers) over loopback TCP and a 115200-baud `socat` PTY pair for serial transports.\n\n| Transport | Library | Ops/sec | P50 (µs) | P99 (µs) |\n| --- | --- | ---: | ---: | ---: |\n| TCP sequential | **njs-modbus** | **94.81 k** | **8.7** | **43.9** |\n| TCP sequential | jsmodbus | 59.59 k | 13.6 | 65.7 |\n| TCP sequential | modbus-serial | 867 | 1,150.5 | 1,244.5 |\n| TCP 8 connections | **njs-modbus** | **109.23 k** | **60.7** | **179.8** |\n| TCP 8 connections | jsmodbus | 63.84 k | 102.6 | 299.7 |\n| TCP 8 connections | modbus-serial | 6.37 k | 1,241.3 | 1,437.6 |\n| RTU sequential | **njs-modbus** | **104** | **514.5** | **852.8** |\n| RTU sequential | jsmodbus | 104 | 546.4 | 927.3 |\n| RTU sequential | modbus-serial | 31 | 31,903.6 | 32,219.3 |\n| ASCII sequential | **njs-modbus** | **51** | **556.1** | **947.9** |\n\n### Chaos Resilience\n\nThe chaos suite injects corrupted, fragmented, sticky, and garbage-contaminated frames into live Modbus servers and verifies that valid frames are recovered without leakage.\n\n| Protocol | Scenarios passed |\n| --- | ---: |\n| TCP | 12 / 12 |\n| RTU | 12 / 12 |\n| ASCII | 14 / 14 |\n\nRe-run the full suite locally:\n\n```bash\nnpm run benchmark:full\n```\n\n---\n\n## Security & Compliance\n\n`njs-modbus` is a pure Modbus protocol stack. For regulated environments, it provides a protocol-level policy enforcement point through `AccessAuthorizer` and an auditable trail through `accessAudit` events on `ModbusSlave`:\n\n- `checkUnit` — authorize the target unit address.\n- `checkAddress` — authorize the address range touched by the request.\n- `checkRuntime` — last-chance authorization immediately before wire I/O.\n\nDenied requests emit structured `accessAudit` events that can be forwarded to SIEM or audit logs. This helps meet operational-technology (OT) security and compliance requirements without adding external proxies.\n\n`njs-modbus` also ships a built-in **TLS transport plugin** (`TlsClientPhysicalLayer` / `TlsServerPhysicalLayer`) backed by `node:tls`, so encrypted Modbus TCP links and mutual TLS are available when you supply certificates and TLS options. Network identity beyond certificate validation, IP whitelisting, host hardening, and physical security remain the responsibility of the host application and infrastructure.\n\n- [`SECURITY.md`](SECURITY.md) — vulnerability reporting, coordinated disclosure, and security update policy.\n- [`docs/security/`](https://github.com/xiejay97/njs-modbus/tree/main/docs/security) — access control, audit events, TLS usage, deployment compensating controls, and SDL.\n\nSee `examples/security/` for runnable master/slave examples, including TLS and transport-layer security options.\n\n---\n\n## Commercial Support & License\n\n`njs-modbus` is released under the [Business Source License 1.1 (BSL 1.1)](LICENSE).\n\n- **Free production use** is granted for individuals, educational institutions, non-profit organizations, and companies with annual gross revenue below US$1,000,000.\n- **Change Date**: 2029-06-24. On that date, this version transitions to the Apache License, Version 2.0.\n- **Commercial license**: For OEMs, system integrators, and commercial products that need a predictable licensing path, guaranteed support, or cannot satisfy the BSL free-use conditions, we offer a separate proprietary commercial license.\n\nA commercial license removes BSL restrictions for your product and our support offerings help you ship with confidence:\n\n- **Product integration license** — use `njs-modbus` in closed-source commercial products without copyleft obligations.\n- **Professional technical support** — troubleshooting, performance tuning, migration guidance, and upgrade planning.\n- **Enterprise support options** — response SLAs, long-term maintenance releases, priority bug fixes, and custom development.\n\nFor licensing terms, pricing, and support options, please contact us:\n\n- Email: [xiejay97@gmail.com](mailto:xiejay97@gmail.com)\n- GitHub Issues: [https://github.com/xiejay97/njs-modbus/issues](https://github.com/xiejay97/njs-modbus/issues)\n","readmeFilename":""}