{"_id":"vsoa","_rev":"61-a781c91be560d15e18936e21c19e6903","name":"vsoa","dist-tags":{"latest":"1.8.3"},"versions":{"0.2.0":{"name":"vsoa","version":"0.2.0","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@0.2.0","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"3bb057b42bb6e08281bbb8bff3bae442a0622e16","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-0.2.0.tgz","fileCount":25,"integrity":"sha512-umLJp9RlU3ZIyx1KudNpyBWezsjIfcYGHowsHLRjbNHP/MfTIsVK4g96XMN+891KMfNVb9Yo4W47eENklOkotg==","signatures":[{"sig":"MEQCIEaCPSy6hX9zRTFFdty/En8Lhul4u6fywW6Li9LG8QudAiBX/Vlh4F1X2Jg6lZ4RrAPDIN++PRHanYp/3IZxYIIGiA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":607888,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiVZ1zACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoWVQ/9FV1PmTHU8q/kaHpoKzyd2bGUDH4eWPT7UdKFiqsMfCAaBVTk\r\n6QR44gm1OQVlOZa0hxDQ7qxFJSGVQCsaPXYOgwxN04AQYtWmhVI/+CmLb0va\r\n/HtdF7MxKNpnUAedokQmz26SPVMGGtnF+JCtiT1pJFy/Gz+iwEXw/Lgg+WLW\r\nA5WpF8xV1M/iJJcu063hnkQMXquTWy3J/oDWD5jSgHoH0xgOAXvU0cZo6xUK\r\nmdPOea/Jb8APOwqXpda2MBbAiFK+SMoOHHxluaoP5qackgIPYupBdUYuxmeN\r\n7PWe75UWYU51z2xDrbbRsDCV5P7wGCklRS34A8nETyEiVyYbHQSSnTQJd6/B\r\nitnwztM/kH230c32E4qf76oL8yZkw7NJUtYAPe55OLBKN4W+PPzglzHSM1Gm\r\n1jbfndCCYBt7opUe9tEVOEjq7gL+TveEtfOVerPDfhIgd+Pm8zutFdoCHesg\r\njp1DgRA6xJ1JR+indtxq4ku/7kSQqhpE3qIqjzd29+z478kUtWCSDeAj6ZqO\r\n6tzbAg2eelhTZyhZgUWgq1uBFkZC02a9UEsjCev6H2AJEpdHRJ0er8SGDfLG\r\n4+XAo4INfDWP3pj57RCWvCt/rAY8l1UIccd1j77GWrJ37EZ3pzp1Wns6W1wf\r\nvLtbunzEX0jEFzDJSo9eIoUWNNBXCbKcfgk=\r\n=uGYY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","gitHead":"c6360bae1c7c3fcafa92638fa2e294e36761ef72","gypfile":true,"scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","config":"node-gyp configure","install":"node-gyp rebuild","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.16","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.19.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","@typescript-eslint/parser":"^5.16.0","@typescript-eslint/eslint-plugin":"^5.16.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_0.2.0_1649778034897_0.7169035669725248","host":"s3://npm-registry-packages"}},"0.2.2":{"name":"vsoa","version":"0.2.2","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@0.2.2","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"45976bc4dc8ac96285db1b198fe59c2bfed925bc","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-0.2.2.tgz","fileCount":25,"integrity":"sha512-wNWIU+GV8OfgMypa4KfEwI4HJW8+IsnCbWj+ESmr0xHwn+nBCf1bRxHEgR2Wk05EO85IHNNfEfZQ30bGm3IwzQ==","signatures":[{"sig":"MEUCIEshmf5z3EwDfg6++Og3/mrCINVz7h2bG6a8i5Xsadw8AiEAmYYFUtOAcNq89qZPuGM9sK4Z01fm1O9eU7p0dE8mSPQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":609304,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiWDkQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqvjQ/6A1GREdyz715yNUCT2ti0hMktrmYIrUYSCJGTY3g1/iT25NNr\r\nXiOovOxmnCPVjPXcfUS+qQAxa8er/gJTPqTSSKDiGcLIkapQS1tUmg6Ujtqo\r\nwR3kDlyl8uTFZLnryUNQXrQN1ZVdohkgfAtya+riOT4mbnFO2DW74UqJmFmn\r\nc0bXAYtN9pcCk83gfIcsAkF/87Gi4cnyJ8PTp4FkOE3GWQ9wkLMwCC+DDhbA\r\nDPi4Brlg1UK7ZzRgYr1muPUDYvfgbub8Y/JXz8fYmsunGoudW1qt2/nCaeuG\r\n+vK8JkKWDrSUhptNpvv2zZEmQAr9ebGqbla32yCzq1zsZecTgOcrn36fmWnP\r\nEBbfmassLAOm4m49GDbgAjbHSqrbmpuRTj8kyPrha7SX9y6CCrVMxcQvbvI+\r\nVWmyBpIwf3wtSZy9vnmj1k3HON2PNINNVRguoKR4nK8dvReQNMG5P9rw+Wof\r\nAavKI1XU0hwPUd+G6trQPU6mKxPYt8ow723dQBXfy7DvvCwOuEcW5OEopZFa\r\npxT/zYCn5kR5omVGqm4cEPrxVl9HFweAC328CRisnG92C2j3O8Tc8uvZZyTq\r\nwblJeaAuZsUQc5wdUuQVxv/NSAFOMAIWoDcP77FnvaymbnFgYJzR76OEXOPV\r\n2ma69Xtc0BvYzr1aU1C/qBLN54cmlxdg8VA=\r\n=1f69\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","gitHead":"2547d8f6b8d0bf6851b64272d5dcad8d4c5b4fdd","gypfile":true,"scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","config":"node-gyp configure","install":"node-gyp rebuild","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.16","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.19.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","@typescript-eslint/parser":"^5.16.0","@typescript-eslint/eslint-plugin":"^5.16.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_0.2.2_1649948943850_0.3644087285017299","host":"s3://npm-registry-packages"}},"0.2.3":{"name":"vsoa","version":"0.2.3","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@0.2.3","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"cd80df495ebed6a6bf945b2a363b3dc904d0d6aa","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-0.2.3.tgz","fileCount":25,"integrity":"sha512-sdnLXYtL2idN2bC5cXqM8Dbne8MsmunS1gxQJPmSxTZpyNpCuLhTend5ZO2wKCOdX3QkfO11KTdVnH8Uhv5ESA==","signatures":[{"sig":"MEQCIFIwfbefzDl2MOwAj8SdbIRYIz4zLperOjFFcgWsgQgyAiBpjgNDklqlhNXjeTFIwF8h1Ju6H0nvGieJ1S4wLSooVA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":612130,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiYk5gACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrQlg/+OKTRYy0RSSODupigc81y0Bn7bPGeyZWs+SZiPfGqRHzdJCcO\r\ndLuS7GbTpr9LeKAIqyGFTvpBfglp8Isj1ijDyJBce6rO8gnTSIBHGTtpaWYh\r\nNPfqn8yKnTMctcgGNB1zV69cMzomLUBDC2UoOU3beKUJKKzRTSJRc+F1JdwP\r\n9kJpQ/6pTwNpj1HqhuodclUoDkXLTfBYDpV2tD1jl3h2JOK0m/yQtqlBLp8P\r\nuyEymKTCmLmCDyymMPh+jP8Kp8xUNIhWQP1AI+ScbvFscxP3ID/vlL/YQESW\r\nmMFp7Qg+1v3N2I05wARBgAaK46B54gqpoAwqSgK9R4M67iv8xEbQudcW40YF\r\njb8xj9t7WZVLccDPMSXtwG0OYNl41w0g/r2y5FvpYgLuugJCC/qLWI9GMRNf\r\nR+10emxhjnbxuwndJs8e5CMuhrewB/3h/KfI92ybHk0P1By7ukycqCbf4MPy\r\n4lOwk13PpnH0HeeN5vVFN2+MrsE37/yffpgbUpEJUCb2VopvWpIzQqADkJ3T\r\nu29kM7eVwFdLzc6EylXM0tYeVi8dEJKqm0owPISiqcFMFGuZZ7529KRQ8Ip3\r\nI4IxMbGSHlPU2bABQJ5GaHg1a12M4Qzp24yleBtRlEOe2YonbalBjSfYBTQR\r\nGJduiMUOWHwOJsHeVGNZBwRIlO3bUoK3MfA=\r\n=ftmS\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","gitHead":"345698cb9ac88e80e1bdec982b6fac9bb31696ac","gypfile":true,"scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","config":"node-gyp configure","install":"node-gyp rebuild","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.16","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.19.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","@typescript-eslint/parser":"^5.16.0","@typescript-eslint/eslint-plugin":"^5.16.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_0.2.3_1650609760305_0.7083623870504083","host":"s3://npm-registry-packages"}},"0.2.4":{"name":"vsoa","version":"0.2.4","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@0.2.4","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"81c788a1d541363e76ebda0c8e820fc62ec51e63","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-0.2.4.tgz","fileCount":25,"integrity":"sha512-sO2Vsvpe1t6P9cajccFHuF0QShjDRZIY3CGZkn4Lt//QD3b9v6OCzYKkPM+bVNPN/evVPBailUvr99ePbiK4lg==","signatures":[{"sig":"MEUCIA8ce2TeQAMk+/0GkznaPsoAxGnVOQ+McEq46KJugEj7AiEAguUhtp5VHH9273zf65wzv/ennZAKNcEQ/gN/bnAXlMo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":612451,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiZSxHACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoIrg//Xh6Xe205RtuXcBUr3hkmUho2I7vQ993iocPWwEiHhxrHiDdc\r\nKujx4jnGpZ+FtUEKntBFwPV+rWPaIft+Bu8CHluJTa4za8usSghB0sGW/d6z\r\nTcdxLJ/yAofS7MIyBp5Vuu8bja52R68oGZykSfal+GDTLRlBRFsbH+m+AnVj\r\npOewsG9R+uiK+7Zd9OEgSwz5ZlNOj64HMPeL3HAbnl58tqQlEUjan8zy36cL\r\nKK66CvAwsf/RSLpCdQ1vx9rTyhsfRhaFfYBb8u+5Kyq58WttDo+KmK3d8SeE\r\nxg4Cpi4dmHV+Mdpvbnulj8DOAsJmJtsJXfWWFNhk45uBZmozTNhbwvYt9Q+Q\r\nevQkGa4M4PrWzPaVMT6fin9gjy0LX8FMEXs7zv2qxoSvIFrOXrDvoiECw87d\r\ncH8oUZ1cr62sU1yVJ/JBpx6aDbNCyKwhxYZP8BNL2UiX5ttKSZuuvwLeleL4\r\nf40ohLEJjeB9BU0xZuKr3Xvmu4ayx1cM+KM3PjDJPoorrDtYf/YozBRQxS9V\r\nbfcNUpbWN2DgpNquzs7QAKCKir6J9zGDBb1oys2/ks5t3CdO2xirwhDWx8K9\r\ncpUQZvzvHSL1jSzvk8t48JiQzU4ZJyVxSwvRD5KjzwW+JMoMeulNfgfNsbIO\r\nR3HJbaZ/cwgALgxz8o14xEZ4cVicVof2yKc=\r\n=gZbL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","gitHead":"80ff737118ebcc620d8d4993baf1fec4fa19dc83","gypfile":true,"scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","config":"node-gyp configure","install":"node-gyp rebuild","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.16","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.19.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","@typescript-eslint/parser":"^5.16.0","@typescript-eslint/eslint-plugin":"^5.16.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_0.2.4_1650797639214_0.24543324408323186","host":"s3://npm-registry-packages"}},"0.2.4-b":{"name":"vsoa","version":"0.2.4-b","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@0.2.4-b","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"47a09cbb4dc5983bca24471a37ff07ed36e85ac3","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-0.2.4-b.tgz","fileCount":28,"integrity":"sha512-0D9asiGtHxOk/JNZU2+ZKPda8co8FwIVuBfMxa0QUCYVAbdVfCFsvW72G84BZfbTKAaCSXDKCK0twcRr1acdwg==","signatures":[{"sig":"MEQCIAg8B/X5iLWw0VE02Zk9D8mDAZ82wwxlerh/z3BdcBqeAiAQN+walPEbtCfzhco439R9ACUsVjK2M4Oelwovj1lvgw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":634691,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJilMVCACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmpc2A/+KAv20zI+bmYzJrtYpV3z/9TaWyFT34x7mDHQMU4aDDxrJem1\r\nxD1aniRSDrBQdDGgg9dA3Nle+puahzhhDerYckTrb5w8zKlGoGcgI45AtCS2\r\nSzI9ovUQ115mZfmK9ZbZjtBxydQLh8HP9CLWPsNlD2At0tL/lTKCi8SgqLYG\r\nUnXrWlmiSszh6JfGOg26HY92q3nNUZtc6x7BG1P1Z7LjrO5ON9hZoRzHJe30\r\nGUhZZrMXGYqodzT3GQAg/FetVdbGP2BRFK9YZJ3uKHnvlGB7ci4NLaE3XaOW\r\n3Ov4poiXI58YievcE52vmm9TDCj9O+hmZS6lS6yQVyTe48bw+Ok0HQPLKJE3\r\ntGcFG5S3IMJPWJ7jL1LwhvzmQL0DWK8+qH2iLFsvI4Y725prngwKJme3FSS6\r\n2MgulP1pLEDbCf5tgbk/txGcF9wfXXJ+8QOt1qJRZpv+KCvgWvuwGKOTODQj\r\neGXzEq83epu1XLSKIkBPqgndikzZudUIe5vKK0pb8r2QSQpRqQrQVL0ejyWw\r\nm0AsnhuLnvCFhu+1HKClCLpzBfNRCygUB6DQE6knTIAbs4kZ8CC9BGxKjf3h\r\nLSpDiOSHtaesgxG+dkQSxAmBOknTgpAwtMLHLAWEankVj1GrW0DYow2Q2N9p\r\nGZsTLDcXfIm8/vwKV+BHpZGD4k4KT23hk8k=\r\n=a1JJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","types":"src/index.d.ts","gitHead":"c10a81da4da4b47085b08c85dbf1ab9fd80a9bb2","gypfile":true,"scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","types":"npx tsc","config":"node-gyp configure","install":"node-gyp rebuild","release":"node-gyp build","predebug":"npm run config","prepublish":"npm run lint && npm run test && npm run types","prerelease":"npm run config"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.16","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.19.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_0.2.4-b_1653916993996_0.6546725626294965","host":"s3://npm-registry-packages"}},"0.2.4-c":{"name":"vsoa","version":"0.2.4-c","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@0.2.4-c","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"17a6b9f8b35e65648b83cf0c0d9cd6b7f8f307ca","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-0.2.4-c.tgz","fileCount":28,"integrity":"sha512-fyhFpss5v5szj3o8XVWawr+PaIupjDqLiBS1SbxMlH11agXidC9J328L4ikfOgITW2mwAb/pYmJWp6YAt8hl3A==","signatures":[{"sig":"MEQCIHVEsKnhkHGKqg8smAqfhm3P2e3lr/DuPQPmp/dv628xAiBJWoGyNvTIPacb5QB7FTZyUOFF7pMZiqBFNvYVG/9cqQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":635150,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJilMhiACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqQehAAgwpmhZhHkjRINmf7z53RW1WlZkueuQ5Z6PqmZ5sUPkHPn/N+\r\nqK427X48Nb/YN/BTB7GnSvEP6FZMJW4iJF1CKmA6UXnX5fLsxIricLKlhDNg\r\n9Bpr15WBzS5h+NnDEaoWqCHrF03J59x/AqzCd6BaoL0Y0kqtXi95tKzTJH2V\r\nFJJ3DK3xiX63bZJqjWogSXwWXK9RY3tjTqHqlaN9J1o65BdNBzftGOknQQf1\r\n9plf4zpMi/JokzuDM72wKPQJ2Rlv+UwcpVsxoMx9S6QewzxMrOFupx3nLfJn\r\nfHTyyEY65d+rVN3a/vjNmgwG5ung5sz2EyLqxeNQaBrgOOpDV59hSIVCuxiJ\r\nwSugl6tHq25oacuII3hQ6u2dPZKplFM224tWSbfJjWMcbJIBZZ88IO4cTD8v\r\nuzDvScJD2lX3XGnonJTSIiP6izLnf+apm1G+o/5DvJ2kH48fOnhc5PDl9YJ6\r\nmDiscWsODHPp6pIh2W9bd6AdVftJbMTUk2NejICZXBkEDoXqDVBsd4egW9Y/\r\nJq8mYcvob5B9UA7M0ZjDQP9RHqZXiBpNl6kgG/tU8iCLFIfONy16cnjugirD\r\n26mTEuNG08iW1IYbFTBenK2nFyipEnODcBSyfjF6DQoQn+W234+p2d60e95N\r\n08/+f72I1McYFyuFtGMDGSujbAA6m8xZGhU=\r\n=7C/k\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","types":"src/index.d.ts","gitHead":"68d2d1da7cd5e57d251cce042fe021477fd23d7d","gypfile":true,"scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","types":"npx tsc","config":"node-gyp configure","install":"node-gyp rebuild","release":"node-gyp build","predebug":"npm run config","prepublish":"npm run lint && npm run test && npm run types","prerelease":"npm run config"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.16","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.19.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_0.2.4-c_1653917794250_0.8524720188385153","host":"s3://npm-registry-packages"}},"0.2.5":{"name":"vsoa","version":"0.2.5","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@0.2.5","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"3c05bec7b18d886ff6a9bc0bc4ce4ef1e57b8c0f","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-0.2.5.tgz","fileCount":28,"integrity":"sha512-s3+2OaTtjVV7zNf6ozYwck0AG+z6f9QwzGmAouUKMuTZS+lubrehIFQM93BpAatkfUDqZYLm7JFR3aD1Uiuiow==","signatures":[{"sig":"MEUCIQCiXb4njctJJZ42fTbjYqQIjQ6zfZkl6HcBtpcqu/znwAIgJy8RzednmbdibwWm0bIbDd63+ylE0Ug8k6ai54A4l5w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":635408,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJinbaYACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmo3rhAAnGr0vPQoe05fWouRrfM23455YFlmxIc1rnscXt4X0BORO46a\r\nQIbSi1LEXc1ISHqIfRytRNbqiHgde/+ldLPS6OMT7+t+irQ1gz+bwZQ6rLGS\r\nWJoDIWFXFjeMxyEv8ARmvqbxLwswrZyiqZYpWCOWUgq76X1RrLwoCnWF2hsc\r\nsWX95eFTzyS7B4SMBCn58pFFhjj3NtNjQeKCF1XvSz3PcgvXFVv1O71xkDOo\r\nL9HXP6d+kvQ2V38BOg36hapHau1JKKCgCuLA8QiMTI+VEmUUT5z+ICDh9lSt\r\nAXQyxc5KHCgK0OkMkJ7fY+wgiRbJ8A53ZvNJd4NWlQ+R0hr9urXZtcyOWet4\r\nO/9FIvKX/JmNUeyv53KpqKIWEqnnqUQ1NYz8CHDHXkOo9tQEOuNwbe4di8vK\r\nRbGmQyS68SCIDlLLzblOE5pM7kpjaNUEplV+WEu8icXJ17RfyXGxUqpWx9rJ\r\n+S8trFgqRQf+mwL3eVGNJFrKq6odGLBS94JmLXmrVLcqYD5toqtgvqXYvk1z\r\nwzs5NndzqnGN43WXaJqs6/JzQMLbiYapSvmrFmHThd7V59n6IvF18A9K1B3l\r\nqyYMplV0SkIqvNJ5vc1bd9y3JDWMvfj6EF103VZvGxgbw6Qf/pN+dDNTiCv9\r\ntD4MMinPhj15aWThZu240FWr7GnKEx2HT2U=\r\n=dno+\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","types":"src/index.d.ts","gitHead":"218d7714ed67505bc676eb4cee5418454a3186d3","gypfile":true,"scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","types":"npx tsc","config":"node-gyp configure","install":"node-gyp rebuild","release":"node-gyp build","predebug":"npm run config","prepublish":"npm run lint && npm run test && npm run types","prerelease":"npm run config"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.17","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.19.3","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_0.2.5_1654503063755_0.61108777450755","host":"s3://npm-registry-packages"}},"0.2.6":{"name":"vsoa","version":"0.2.6","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@0.2.6","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"3f7da3c8d04bf5d40323b97d0dc472cee4e796e4","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-0.2.6.tgz","fileCount":28,"integrity":"sha512-iUGYSgNXbFSCQklhIsUO2Erxdw6+l5PFcF1LjEDBXiVU2jk3CEzV1WzpSw65rPA8VEA3lcS9yO1ZnhpDbYIpwA==","signatures":[{"sig":"MEYCIQC5YMUvNRUY13EYddMDwX8Ex9d5BKvxNWJTgrMv3rGUCQIhALbg7XXzjsnBUIJbgHdtyO0qsGcwYMRkqtgyGl5BVQN+","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":635232,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJisJbdACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrPUQ/9EtIzhALrPY/13y+p00D56Yz6iWbzi7HkQjIbpEWQGrVpemU+\r\nDM5PpZL5DoIn9fN0AXsiAkV//iP8UtZmcs7dBXWlom+plv7ZaHekIFOO9lrS\r\nvN7GDUnUPctP6Eg/74ZTlwDNn4RGQtXk3RyQeJjst1wWmnsZEoQIjMUyJJcV\r\nYuDMu2lcNoL8fhzth1Ry0pdSZL2A3kIYNTf/5PUcAdFRkauTdi5/jXpKJljq\r\nXlOs1hBxY5K8RmhZ4MuVuxZSoAPQlGwqgrLSDFQuOW6+m4Iw6gng6psc6zPC\r\n2CMTqVDsX6engtpB7JugcGe5xwcPzDOUmxAzKoWMuvrDmsgdIUJnhIcmCUN2\r\nMUIfnYm/M9Egq5A2NzE0sPWiNb/ye5Xvov5+VTMPWBxFFgS4pH46tTFijVRF\r\n5qGAFOAfA39kRw7lBb9LQ3ztfWJK17PMfZ5qCXvXadquX2t0czRp7vf+9okw\r\nPMvEbMhbqBr7ZowX7MbyeZK3qqXc3DfwoQ9RbfLS23jSlyfPkpM9OGu8KBVr\r\ngFX60XD9ccSHWg8vxeRz00ai45iI+sNlCaLoLvSeBPeJiu1BZewwO7uPuXz9\r\nbrrDJxin2MLmA2R1Tqb7IggYqE/nzLQcFdVK4byq67PNmLLWJZ5Fmep+udOq\r\nVoJvK6Alp7KzYZsBPmSkhbJGL8xjw1lvMhQ=\r\n=tIIV\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","types":"src/index.d.ts","gitHead":"270f85906a4c67a4c32676eaff330f93f25ab3b5","gypfile":true,"scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","types":"npx tsc","config":"node-gyp configure","install":"node-gyp rebuild","release":"node-gyp build","predebug":"npm run config","prepublish":"npm run lint && npm run test && npm run types","prerelease":"npm run config"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.17","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.19.3","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_0.2.6_1655740125628_0.9522684311142109","host":"s3://npm-registry-packages"}},"0.2.7":{"name":"vsoa","version":"0.2.7","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@0.2.7","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"c3697deee77b4aa8130408e45a4b8ea3b78ecca7","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-0.2.7.tgz","fileCount":28,"integrity":"sha512-dH7rAj83hrhPpi3u/5BJ59j/2DEb2kVZwnnuvw5oxX2y69hSgfieQDD6+361dzt095fl8w40irMdiU0LRv1okw==","signatures":[{"sig":"MEUCIA+AlKnU4rCbF8DeuCOg80QIwmQwba3Evf1sXvVIhr7FAiEA16G7xcqYivuWO1TL3QkxhVHCeBytGMvuO3CVg1nT4Yo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":635306,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJisd7vACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq2jRAAo8lsZ+NRt+kan36MsnpXidC2eTv/RUAMm7ilhqnnEGjeK++0\r\ngUSqbmvREx9E3VMcybIGOpJ10mvWm8xrFr2EhcXxoTlAA/XWCp27R13mr+01\r\nCFd66Lvmd3CzaVa5oGx2XjGyI46CMEI1Q18PHq2Yt4NbmbNu/1GTl37I7Q/h\r\nDM3ypyN8XBDAbk3t8Nu4z5522Mbs7cbr3B4Y7ZfNWQZCx8QdotblJDoWcjsA\r\nTw4MHBtE6anS4DEgXkExcm1HInkjumATfGOaGXuE8wgU70R9dDdtaxOultMA\r\nTtTAqJxI9OJ6rf0GWfeI0nSOl5CZYg0TCZZk+rCbfgFbW/jNr92eqBYiaUqy\r\nKNofPUL5MU4zUMGtK/yjVkIsHPWMfGm4c5u9n7QR5TNjmuLW11GLlcTuFk7z\r\nTSik2v9Fs7liHmcq1GVdIdZWkrOe+EIqqpMFClACA1mOhBw0sAcBs3tnExe2\r\nAW+4BNMIm1+Hc4o2KKRUYXGNPALQ9cYWpRiXhMGeXjHHdDvV4aDGb3s3b3vc\r\niHI5RSB3k9lqNHLLpxkLQ9NjMGgCDr5rBjTAAqCuTjxhkPSMcLoYu1PMN/T5\r\nQ7hq+Xx2pba8ORtNWeL+oR7WxLL5UfnWhzMOf0QgkrmnnMIMenDJpkL3CJem\r\n9U0EWcvc86mC1UoI8dTorDiFHIiDg7W6Xko=\r\n=Usu0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","types":"src/index.d.ts","gitHead":"106677d4139219ecd772d8546db21adf3525c047","gypfile":true,"scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","types":"npx tsc","config":"node-gyp configure","install":"node-gyp rebuild","release":"node-gyp build","predebug":"npm run config","prepublish":"npm run lint && npm run test && npm run types","prerelease":"npm run config"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.17","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.19.3","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_0.2.7_1655824110986_0.7153718581315769","host":"s3://npm-registry-packages"}},"0.2.7-b":{"name":"vsoa","version":"0.2.7-b","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@0.2.7-b","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"4cd1b4a014470b861e7e1c2f68b3560e563fca43","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-0.2.7-b.tgz","fileCount":28,"integrity":"sha512-bxo8wIWj6pdB5RTXPSvjsdMsgMd0vejhPCO7LiGgI0dP/j6BGoM9y7lbn/oWFYR7aKxssk2Cvqf0/5B3scH3kw==","signatures":[{"sig":"MEUCIQCv2n0O+ah1dn+RSmfApd0pPvwxVQJRKNRKSounbFyaOQIga5S1zBVDk8P/bLFWMfzrswv7L2nWFMoViun4bJc9fTw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":635609,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJixsSYACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr9QA/7BmzUTAVKYaAAMtmYrEn+7/uBgwh9Oq8oD84x5wueCkfbR4Yu\r\nqwYFZOKWuNSdzlCWqqjacQvtxU7BNSr7z/j8zbw/f7PwG/YAVS8tvXaOnwUw\r\nxiSC9loavqYiLQ3MB4M77wmyTSMIHLEzeRzUfA9WCnOHqG3L9qICxtMiT/56\r\nRpWjT5rOwUWUhO130fDURcOLUhnMZ2Vk5axOY+9mIoNogo689ZN6DA6+8HJw\r\ns4SdKLpiwMTzlOklxBQcPsm6+mgz9HqhEp63T3Sa51eHjlQhaNMIOgHJrhaI\r\nAJK2AVHGIy4HvjIwpB/bL2enHJyWWmwNdogDUUFh4YKbO6zyuh9mepqVcWlO\r\nNPwzYj9l8qBkGsxBbpTez+F22tVLu2lp/ee6htNBXPYyR4eImcEj4SrwgJmj\r\nO1Ot2Q71A5nEsr2TFdwFilO8cnAhVTUM7NWjLqRccJ559JgEAlzWISy0PTNb\r\n7XwKmm2Xo838J2jCxJEHqdwUvi2R7FTCe8jYhsmD/A8DOltWuiB1tn2ZAoVr\r\nTnqp+K0LuwGel7ioA2vlWEN521Z8Mdnyyt1LV7ztwuKV+oyE/WpQIrvZDx+e\r\naCRn8X1AgSeHIwyFgdd34sXGsZaPiBsVnIuIZwMPSZwTKRNPQXvICebKmxsr\r\nYy8/jXsVJ1EndQ1/rPddn3vqDg0ysAjyAe0=\r\n=CgEJ\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","types":"src/index.d.ts","gitHead":"6550f2ef6795e28201999f4695712bacb6b19c6d","gypfile":true,"scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","types":"npx tsc","config":"node-gyp configure","install":"node-gyp rebuild","release":"node-gyp build","predebug":"npm run config","prepublish":"npm run lint && npm run test && npm run types","prerelease":"npm run config"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.17","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.19.3","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_0.2.7-b_1657193624600_0.7619498545860248","host":"s3://npm-registry-packages"}},"0.2.7-c":{"name":"vsoa","version":"0.2.7-c","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@0.2.7-c","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"9fe65e9191043d979bd952e33fef64b9895df30d","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-0.2.7-c.tgz","fileCount":28,"integrity":"sha512-LAWe7G86OLtiOAdq+mZlHkNGgISdCI5L/s7mMpRlYUeBZu0UYCkFzDsebH8xWQpkyycGWOlVNP3MEN+qez84Tw==","signatures":[{"sig":"MEYCIQCuF7287HV7Im+gkrEjNYt90frjH/aMqA+0JdkuL4eCkQIhAIc9m20jrbebSdUUYSWM32Jb08h5fMNcAYTCuX5X2uaL","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":635636,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi4LsuACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmr/HhAAoiNe2Pj5tIyhpTAVYUzev2RQitUkQ1j9YN48zNjKLuKYLfA4\r\nzd6fBEQX4IENpP+HqulzK+bQdWKTrn0qCY/wA1M7iKrMdCcA+dxEEotjsl4K\r\nbveMY1lX5DaboNHsjZwnEll74m8nqv8yN8ArV0c61PEmuJ1hvtd5MkBgfERb\r\nCRxJF7URVpqdHciIj1A6ytbMpAugQWdpjZnuhJaunpdxNF6ZpBWWo/9MMCIC\r\n5vutZiyOWFOirWwVEbdA/PgU+BUnn6AVq8w0GGcuPGHuxB+ZmHz9Md8Xurwm\r\nftwMSpdwlJfx+dMrAseLNSXqJ5gYul/mRZ6aOq+HpMs3zvfwU3K7o20YKu4l\r\nxUEGTrlpByMaI0JaQi49K5InZzetC4W/ExPh14RZbRUqomAKABmr3EPhtTPX\r\n8U1JbOLKsI9bNhWFCJWTkR+A6qU4qi42QdXPOarlDdD0r9woHVKqeeAYKhY1\r\nY+RyKgvhPu0vYNgdFZ91gFDAFHNyY0r1ceMOGCPptes2jTpeAu1i0Equts22\r\nu4uptvceN+vYzJ4ZmjhjcunoQgi1eZkKZEeuQoFwrgIRwQCtza8jQyYf4uJW\r\nHrHWh0UgmQFily6o3Ix1c5H+I1nTmalnKNHRdk1+d01oSTB+2+q62UHTaPSi\r\nC8BKCpTiYj5zsCVCSw0u3sJntFdMk8gX1aI=\r\n=cBfo\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","types":"src/index.d.ts","gitHead":"312bc1963f66a2f069af6a119df7288cf8207724","gypfile":true,"scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","types":"npx tsc","config":"node-gyp configure","install":"node-gyp rebuild","release":"node-gyp build","predebug":"npm run config","prepublish":"npm run lint && npm run test && npm run types","prerelease":"npm run config"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.17","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.19.3","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_0.2.7-c_1658895150715_0.9617169989594023","host":"s3://npm-registry-packages"}},"0.2.7-d":{"name":"vsoa","version":"0.2.7-d","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@0.2.7-d","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"9ea4350a664073c4640af02bae5379fa12060090","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-0.2.7-d.tgz","fileCount":27,"integrity":"sha512-lPoRdL3ymjGdkSOwaGxVV/V6iNczUyJIotKZ+8ehbuCQx3vx7xiR1VBX3TzTnR7MId2BSmd0MWtY8NtFTA31VQ==","signatures":[{"sig":"MEQCIA+maWaVQHmC9sV2EN2qS4Hu5ejz/qaJnLj/nN1gBz5QAiAokssM0qnITOOgJBpHvtweAgxdd50EO9Yqz9XRAXYWtw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":630365,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi9kvQACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqJgg/9HXcFjoYFoJfm84ph60G/TCVBz9CYQ+0bmEB4JPpcBY8yDcBa\r\nztw2vQEWBQJqbbF1PGGZE8mak7zDqHxcuqmNZP6eQ175wSjeDVz0d3k8Vitu\r\nX8V+Ns5Y9nl9ZwQCDBr9qr7oj8kbsAtWQXcUoZL5cP27g8YgEJy8ljUSibFa\r\nOlyBwvxT1ie44cWtGJsmu0apz7gaOhmNk0iio8vdCbMlI7b8RWOrVS5yWZT2\r\nrKg7/tRhMe9k5uPSqtmiP2xPTOHEW/QNtdq8lDRf3G2GW8kF4gT4Mpx46s41\r\nzxjOpxPF/1ht1SupwY4bLDxktDWl9mGrAgDaimu/Cv6oy39wggwEapX8uQkI\r\nFhtsaS8GecJEtjrppuDI0AqdRIkKVedtgM9idYCNOVbwXJwBu4tw+JWfW4SO\r\nsVPAfTZN46z+8rRxHEnW11zsMU5mc64kS48azJTdSzL0x9afEskmi1/D4HMv\r\n0efrwrxZDV2x7LFwhnP9TLiR2MqhdWtw8egxd/bk467GfRsZgBMHiCd4+iJ5\r\nyStLUKbll7UPcLogbagP9wK3QOZd2uGB0xb/YUMDMQCoZtbfEeVAr1lhXcPI\r\nJT0vnDRIy9mWe4iPsWZl4wJRuxwlZGlMaKY4Hrf1aLr8a/4oDV6oO/vaMLaS\r\nkNknZKcUwvIe/jJqntp5mYdrwzpYSaMyTtQ=\r\n=Ut+g\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","types":"src/index.d.ts","gitHead":"fe81ace50c692d97fdbbc99f9f1bdc0d1a68635d","gypfile":true,"scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","types":"npx tsc","config":"node-gyp configure","install":"node-gyp rebuild","release":"node-gyp build","predebug":"npm run config","prepublish":"npm run lint && npm run test && npm run types","prerelease":"npm run config"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.17","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.19.3","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_0.2.7-d_1660308432169_0.6421525297517676","host":"s3://npm-registry-packages"}},"0.3.2":{"name":"vsoa","version":"0.3.2","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@0.3.2","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"b54916778cdb8094ba47e7a80a1dcc5a1bc1b88e","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-0.3.2.tgz","fileCount":27,"integrity":"sha512-j/54jxbd7nTPcVI1Q13wFfxecxoBtasSzL30UKADdokE8/GBd8u1EI9L5e2hp5iDdqVk76oyCslgPiFTGAfyQg==","signatures":[{"sig":"MEQCIElnXeGraAY90xW56TMF/+7lko4IJAF6D+U7uyO9ksm9AiATO4CUKvWaqjsmKk8OFxi7VaMhJdIPRTorSv/LYuy9GA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":663377,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjBDVSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq2ORAApOKbg4JphDzFTBi6pXP4CmZn0qsAKN9IeTUxOaUIAXeMZL2n\r\nn+ktlnEPfOtxvGY1LaLmv2kzN5fA2md7FMrsApcwUJicllH7e7O7G4yjVYSf\r\nZWKJ5hMTacURMSgw4yZYuA2lxEeM6ABOECz94z7f4AiSy0SJKn7fOFDpGHT1\r\nLcruVlSNR7X7b9fk7w2CBJIo+w747IJ7DaePfdkVInzz5DcQ4ukE1ymS/GHU\r\nrnCXv/mQvROB/qymu1q6/9vZ1hycr5Yr2rp8/oZyrV8+WSA6KXNfOgc7+jxS\r\n2I8drkyPuvXV2/oV4xwycQ1k7PHJr4z+PInu8Iw0NwuqwQoF70UvWs5kvr/T\r\nZNtqF2Th9BMW12wCqXckVcCdbf1seNnQt8rz9QjsNDVZ/TDdbrV3c/UjY6e9\r\nn3H421WO+4aHtQsl1UB0h5gWhVX37ltzbnn3P42zMejK+XUwRKiNC4187Qha\r\nx5/UwUkjzrzFlgY6Gg1HJM4luOWrI2Ixn36n0wzsV2k/Fs6/FdZpmDKoxHWy\r\nPhbp/aTgiVWeJPwMX+g86EBAuP/Iw5QcH0OunlnJ5ja5+b3MxjzpykRxQyCv\r\ne+RLVBXO8vf9o/xExneyH1vwpmGIrJpUl1G5vp4G0U2wfScL7K9bTo+AQR5P\r\nmbdpOCt5t9ANzIlHCLGhQYNxMyl8glgkNiA=\r\n=6eYH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","types":"src/index.d.ts","gitHead":"ef7d746dbb3fff2ee695bd2d6052f7bdd68c3a7c","gypfile":true,"scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","types":"npx tsc","config":"node-gyp configure","install":"node-gyp rebuild","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","prepublishOnly":"npm run lint && npm run test && npm run types"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.17","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.19.3","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_0.3.2_1661220178698_0.5896826163569979","host":"s3://npm-registry-packages"}},"0.3.2-b":{"name":"vsoa","version":"0.3.2-b","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@0.3.2-b","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"e3952a56804005e30fc5a9dd1817b22cf0097fc9","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-0.3.2-b.tgz","fileCount":27,"integrity":"sha512-LRT9V1LO9WgRa5X0IS9nthz1+YDh3O8W6kjI1EZYzobXYV6YYw3TShYQue58Iu2rqJG8VGjpRFUqEDJbGPx9mg==","signatures":[{"sig":"MEUCIQCp0EdhyeLA325bNrFUkUs/xuV6KQWy+WoZl3O2wQhqwAIgfbI8wRxFeFkOsgRFBBYZBq8VCYsiyHtzhwR9PnaSsIE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":663393,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjBDz0ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpAbhAAiy/auvvhURAqrv7Ngr8Xv/ez5hHFx9xs71qaLmo2dZxF4n1p\r\nNsHsdOC19grTKA0bzWMzHASo0+2OIgVRjsAtkTpEk/8spevr5CDalAzutxxP\r\nemkqQy+N7nXXE63nyUNCGTWUBS3OgQ3+0oTv1KsBYzHAM+PK9E2iJAz0gIg6\r\n03CKMK42n2/BiQDe5qH4/fmV8TsTES6jwR28JsuoVRVnqT2lVo9SDzvbuJ/5\r\nK/xdnzLgAeN/Lea0XwkDCikhS1BGO9byW0lUsYLDWnH45wDh9EHppV7AcrGD\r\nhF/w0ERJrncrRee/d6lWtsXWYNR/yD71/GF8iYEx/gEEHGaTWKZMyplgshUX\r\nyy2Iw7xuqAk/sOqfEPrSVouRodWO7DmpmWSjKo35+aAXGMR02YOHD0h/a0Ne\r\nwa/LlWu2xOuoAoZJ/0xIoEJr4sziDg769qKtM0nYTkeSQfYOrTYP3q1v59Df\r\noya53hEz2seDEw68nAAy4BUH49dlktEt/3E4cmE3Andn35SNqvXdQwy07yUA\r\noPELebL/ZH7CBbbaJ6c0BabvG9as4/H65Z0A7JGZYh7/MggETh1elLqpuEoN\r\nhNp1B8b3EAVeLYc1BORotjZOibWE8Fc8wkEeTI3z/klbg4wJDT1w1Jo/HARc\r\nPgYcI+OCMgUozKMtd/MHauehpOkJ6PmZ7O4=\r\n=aBIO\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","types":"src/index.d.ts","gitHead":"ef7d746dbb3fff2ee695bd2d6052f7bdd68c3a7c","gypfile":true,"scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","types":"npx tsc","config":"node-gyp configure","install":"node-gyp rebuild","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","prepublishOnly":"npm run lint && npm run test && npm run types"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.17","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.19.3","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_0.3.2-b_1661222131947_0.3214476187191224","host":"s3://npm-registry-packages"}},"0.3.4":{"name":"vsoa","version":"0.3.4","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@0.3.4","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"90dd93170256e29942ea8cab9e34930de07999b5","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-0.3.4.tgz","fileCount":27,"integrity":"sha512-ATRX6wAWmvOYgzRzIoDSrYIjYM48RB/S+/4NYTgXS4L92DEtCwRazH1ejKq8bEeDfg1bzaLuW2Pg51Zre1pyTA==","signatures":[{"sig":"MEYCIQD2GpSTqtzBKjV/x4MjMPH4RwpZpHGLh/HFobmiJUSTpgIhAKr3SWgkdh6IoujKDPM1KsMn+PkF/bXsR0tN4b47qno2","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":664992,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjByCMACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrSnQ/9GkP0fzEfVSXsxOTZlZAzgcO2n4ZVbeIzCPLVzXGbce4Di/de\r\n34IdLbfYzC0IAhWUIK6ZxWsblxjRcCr/RAcDYSkp6hM/Sd+Apy/8vkQwp/GD\r\nS22vePGgnPboovQLkHRaAGulWl+zjSAwb4VVY+L1PK4omOyuomPv5A4p6XTc\r\nCJXHrDpBzHojcxJuien0f7n7qIXSOfZuUBTED01+szNv5aJhj5AUIMNs5//1\r\nZsGT6ERay/PpKX0MEeAF9NsEoObTWqDkRInlLQLLNWboux//12m8213oMnPH\r\nlyCVrE8ILhQrEpnaK+y8taI62RBJs8k5736bLHd/U1hY+VJG/LituI3cPG3B\r\nHhR4l44dUQ3b+FnYsTQlmzFnFTV+YDlGn+9KLtymJNeSE9eWbIEujdy1dYfd\r\nL2tr8cYxjW7L+pncRpBJsuDXJ7CLThNgSQi9+TQMRd/1N9wFbDo6RVv7Rsfv\r\nTlrnMhUYRTCkA+DOX0/3n7Fiu+OKADbMq7F01e4LF6eSf862A3QvRExMkR5r\r\nDAaY+FG1p2B+rbaRLkMoKo4z2Xs7AY7nKh2ydsVyHfSzLsIW6ywUtHW1ayIm\r\n+7QYlwLiw9y2dA2o9X7pJr+R4OW/pgGJQP/eMNCu033ZN46jPLegjZKWUQFS\r\n2ngaIp4QQX0aT0hx5Ot3kQOTk0RSvn/4rG8=\r\n=gsDW\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","types":"src/index.d.ts","gitHead":"8a92c651779e5bdc12e46fe26c8ad932bc9be560","gypfile":true,"scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","types":"npx tsc","config":"node-gyp configure","install":"node-gyp rebuild","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","prepublishOnly":"npm run lint && npm run test && npm run types"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.17","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.19.3","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_0.3.4_1661411468577_0.1374139016661975","host":"s3://npm-registry-packages"}},"0.3.4-b":{"name":"vsoa","version":"0.3.4-b","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@0.3.4-b","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"fd588ae7df73d0306cb1b06a53314e352830e725","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-0.3.4-b.tgz","fileCount":27,"integrity":"sha512-FZKwfYpjbo3Kzlzf1G2PyUZ82NKHR5R0f1RmVggEzqkpkWHL8Jz4ARVNUi0tZKI/LrtXg8s3u4shJS3h3Vg7tA==","signatures":[{"sig":"MEYCIQDNK1MmE2w2KmApBc3v+ls5HwPmHWjp9C57oTEJR6y1QgIhAJVSVVoQbGxQ5ZJulqCIEuKRlL1FRc3GvVZlaamnjgbe","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":665099,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjDgjAACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrGfA/+OeD1bZaeA0M7AruAdNA9lmhpPuBOUosjENzsqY539wPVJuYR\r\nkbGs18+7IJ/C08vtCFldC2LUbAvF6N2wkWLu19RJ0R4gEoyszr+TSQ56T9fW\r\nfidJ+8mAbsrxKJfDH44BDHOCSmjcMDpoC9CZIuaSIqBzoR88FTfL0PKcRLjG\r\nVi/mTKIEb5l3lwVKj9nJBZ4kzqhZXqzhrTiDoUvPERv7Om/6N92rsraMzNTR\r\nzkLyllc2ZGFNYgIc/2SZfg0+I7owD3NOPeJ86y0ZjRzLOyo5PV7B0s2Ev00G\r\nO8/FMAcvP4IDyZEwq/o6Xz/PkiSY1ZD4lUO3AxVnMjM20OxtnA5MIWk9bZz/\r\nCKRFIUe8lmkYU/32gXAn/pjbcjnre/cI8oDjfs4Q1Kf2bLfvgxG9pdAqOu69\r\nAiev7z08ghskM8Jq0r4+bEW3RE8iMvDUPuoKi4L6nP54gaIadN+AmOwJgYTk\r\nd+1i5q7Hu/HwbIZVXaR6gyzof2Z7IaGlXP4L3k/xg6nAAGh6My8UMG1x+gRG\r\nt5nurww44X/PqoHCYZI3BvYr+dCqzcLzEKUEj6+gx6EmLgtiJ0ZJ28Hnda5W\r\n5omM8/1zw2E2InvsJVk0V+PBImWKrLdBkkxThzBgh8hlMOT8WEMSTLfL/3XE\r\ng3hdxyIOd9YH1BFZUkiRjkT0TNNAnPkGTk0=\r\n=i/xR\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","types":"src/index.d.ts","gitHead":"3fab91a0355ea72e9ac1ae257cf6821b33a53b71","gypfile":true,"scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","types":"npx tsc","config":"node-gyp configure","install":"node-gyp rebuild","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","prepublishOnly":"npm run lint && npm run test && npm run types"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.17","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.19.3","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_0.3.4-b_1661864128422_0.2891194730836706","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"vsoa","version":"1.0.0","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.0.0","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"f4ebeac5936383fbafcbec28d5671e7c2d1fa027","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.0.0.tgz","fileCount":28,"integrity":"sha512-AEOfvs2mdbJrFBuL52flOofOFOsGize1GpoqRevk7m7iJqEbb3RNGTN6vSKuZKP9P8DUbcxIZDakS0YDW71ZQQ==","signatures":[{"sig":"MEUCIQDAoZk694D3G4ZbCS7BMdW424PGT/RuUk66LyS73jM1GQIgegbV1YZNhRqT26WRnJy9wnMsKyg+e3READuxzGrXEPM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":696062,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjGWu8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoA0Q/8C4zUirCj0bo1AKtfKRncHrnS0crLYzBTJyUpqftF5H0h1AqO\r\ndxUrREClIKHfkTWkppg87uWp+AapgiBkOAOxSTwLvBOi7HyUB5/yqNo00R6z\r\nwHqJ151i/BVkl98TG4MQopzCyoDQuqOi/p10FieEfOwK1iag1Yx9bO/T1c3n\r\nco96+8tQNVjxSRA90GNIM3QKigYeptbASqMNRPIBxgoxEBL9iTyMTjmrGDdW\r\nNxfX/Q/8guiaSprmXg+8LARWJTbbttSq9OzmaBoWJkZKMGZCqZMbtMVvoie0\r\n3WKdXCRDMKhB44telAwJmfVAlXMZ6BK1uNHW8cyvlXsoN0FcVa1zl7GQOKwC\r\nCCzvVfDl2Stv1XAzTOzqW+HJkMtal42JvDL71RW8VEjrowcc6OshnkxlCUd4\r\nUjrIJ6jRkqXqODLH77g86chKXACJAdRc0r480CMyNlF4XODyYzH6kKl4LIP9\r\nsAu3WztwgOQch5Kjh1pnDxfI9iiDiVLQnZEdQzTHIkBgEmTBmBLiqcYU8o4r\r\nlR+UFqkl/RHLO36i8NChspYRZZqbBE2DSFYvNnPDRuBj5jNpUeUCwNp6RWZw\r\nHTwZNchlcix7vVHxS7uX4B+325HcutjS3baawE73rYHbkjjjC7gsgV8Z/EeD\r\nziI1m/exLs5OsBniSXSzkhMGmd+6KQUqfaE=\r\n=ctdE\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","types":"src/index.d.ts","gitHead":"71f953dd989da226a396254804f2831f0f5c52ce","gypfile":true,"scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","types":"npx tsc","config":"node-gyp configure","install":"node-gyp rebuild","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","prepublishOnly":"npm run lint && npm run test && npm run types"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.17","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.19.3","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.0.0_1662610364566_0.1516804990372138","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"vsoa","version":"1.0.2","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.0.2","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"da04eaa69139f424a3856b52dc1254109e379665","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.0.2.tgz","fileCount":28,"integrity":"sha512-dYjYFyQpQivi4xbs5RW9u/R5WkujrZMpbKR3dI1CHkzkuWW8c2Yg5KJbhSKGWrPOy81RRCmEAfp+nN9rwtBdmw==","signatures":[{"sig":"MEQCIClgdQVHUrO0a/CcG9LwrjQZLvqAHgh3i2ERvG+olgBnAiAO7MxEjwwhcJmsu/Mk6QlrTPEr9+skJIHXSYwrS26bbw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":704532,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjVn0SACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpfuhAApARGHJrPxtrZjQcxZ5wco8MjxKNSLrzFaPyG3ZYm6jqXEVhH\r\nbokgE07toIkEJW8Ne1Yry4vY/WyZp3cmOn/+4FwS/D9Aj4fvHiLJ+yeMOCrh\r\neL08hg+0Qgksml9CbBJkanAJvRcUr5hO74p8cLYiBlDweWTZ97b8GuNzVPYp\r\nfJrbGfZlV1ELg/cXB3PmnHHhWEcm4zZA1svVvl6j34lIVKPeP5E7m6QmGoiC\r\nzuwZ+fIuftnbGRVX1BoYTS/qB2ONyy6vRHiuvx8PLzuajNt3z7i9RUeUNg0D\r\nPO7I2sOQ/fGunqGGRiEMysutIpaCzv9/jIieClLgW05/2N1tkwVrbidb4Hkj\r\nvXu7Ky/B2VxUCKjPywkfjxRjkw3WQ6OuHonRYPsGOgcnRtsY4opUbk+MaWF2\r\n/MZh4yejSf2kPbH2WDO50KgJnTucSjLeXzdeNuAvSLemyL9IuT3ef5ov+1Q8\r\nD17qcofvmrlUvsF09HrG/DmPTbBToX/Az2mUDFlwH+V4wMXtgX+Hmok/jxJV\r\ncg74llpWudPVlBNQcG4SzPpe1x1nTPw9o3DJaoJGdcPcuq8zBhpcZTV/WPiq\r\n8kPPlbuELWlCMYn9airISR527P4j4vDnKhRj4pzF1LKxKj9GbYy9zOevuJg+\r\n6ZeOKC6mMLibTyDDo3ZyMQ3NnR5PTkeBaJY=\r\n=N0uD\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","types":"src/index.d.ts","gitHead":"c30726be7623c284b54336472692bdfe8b6a0f35","gypfile":true,"scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","types":"npx tsc","config":"node-gyp configure","install":"node-gyp rebuild","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","prepublishOnly":"npm run lint && npm run test && npm run types"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.17","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.20.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.0.2_1666612497895_0.06585061804125103","host":"s3://npm-registry-packages"}},"1.0.2-b":{"name":"vsoa","version":"1.0.2-b","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.0.2-b","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"aabeafbd7f0ab94d8cef2fc34050189916b48f00","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.0.2-b.tgz","fileCount":28,"integrity":"sha512-AP3KdkzHUqDUGw/JanDC8vub3kVAB3r3ULC+Etk59uz3AtGwYm/HkjlEh07EmfU/u45oLvxc6UxscfbfTlhKAQ==","signatures":[{"sig":"MEUCIA2DJobKyj6XsGegWjCMlPVKSNScjsFmDc6JLcBiNCEQAiEApGlw/gmV30Xpzd3kWkf77CY0/rZZf4J0EFeDOmPbL7w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":704634,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjbQyaACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoWhw//UrslwVRZLqdG2jS2JLKpTS18P/3/TUHhtbcaFT31ymTCDu/f\r\nnI5J769UYsGmw4T2D90LHjU3Ya2tvVkPuLrlPnW+oPz8QiTCHSu2ud0hySjb\r\nfWsCbswcCt3YA60f9AWdhAwGrN7QLyQ4szFa9DyGEJbXS/+4Ie7Y8KI6AJVi\r\nE+QvvGUDHB1nN4BFsSY0SL9gpWfUVrW2FxYzB/lUzI2q5WiI9vc1tDYjpyJT\r\nCgXIRO1r2YrT6Q869gS4mT7QmcO70tANW2eDkRlVkV/W7DkIJCEwJ62JuPfx\r\nmGB9YM0p4d2cpnS7FL4llKTrVKh0Pm7SOioiRnnaRxn1vVsToQ2UeWsyBmJJ\r\nxAq8VKj2unIQypmOuhhB21jXw6k8ybOxP5vuuGmcBScsSQr7joh/ZlENV9MU\r\n86C07h8BAjlThGvVMIWk/V2TxCgCYYRz0Rs03BCjXArT27FXNi7uMUzbTKit\r\ng5UCWN5PfQEYmNdU+9xx+G1XUczGwkUdAUQefwRk4R8ah6fxHryK+liQLkFw\r\nCthoJVtcLCtT0a8tIg403Je4zzokdR8ypfL9I0Iw56BDXIruZnyOP6gaRHFB\r\nMLFqY5K3sA2H4uFuXXLewjtUKJazWjUdK+U22HG02/pkV73IWQk5PSbRC5m4\r\nCjWDu+WiT1jabTVMxjcQvhZuyvZh0szD8Mk=\r\n=P8hc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","types":"src/index.d.ts","gitHead":"601d8e39e92d5c577eec321247043b257b62e95a","gypfile":true,"scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","types":"npx tsc","config":"node-gyp configure","install":"node-gyp rebuild","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","prepublishOnly":"npm run lint && npm run test && npm run types"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.17","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.21.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.0.2-b_1668091034072_0.7094465787675881","host":"s3://npm-registry-packages"}},"1.0.2-d":{"name":"vsoa","version":"1.0.2-d","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.0.2-d","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"ead090eda1c1c3f5bd237b937199a50d34a6667e","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.0.2-d.tgz","fileCount":28,"integrity":"sha512-zC0v0Bl40KSRFTKQ011Myi7Sye1GEr8X5my6hIITNkqgcYEoCmG9kQcDVY5nvyDm5K+yaHvq9XlyusWkBbKGeg==","signatures":[{"sig":"MEQCIQCwQcW7jlnJNsEl6+s3RZoB5374UT1f5XTtdNFULHbsXAIfBBkuMsxiBdmoZcy4FmSbK5QCHnmwRQtgY5uJcSLcrw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":704729,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjoHjYACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrWbBAAjmRWTf8rwT3cRfgOKQQz2xR1EBrPTRZZ2tr3jqnsYtd9zEkW\r\npzoaOWXZZ4kyf/33wqDKvSxHl7u6ggarSFz2sUOBuDLpaLVeLvcyBWCLO8Yq\r\nQETO1F+DxUU4Xr1odiXKlpWWlf7Av0amwwv5aZMiBlQPsEaAd+OPfu2IaiwO\r\nnDFf6rIO9BPpG1YYTs3YH+FHSqGlj+1u4mf/MnwxyAa9ZVMFv5G0WGFg6Nj5\r\n0zJ9qbDRDa4GbOYD0bXo8RsLl+4Yz/40+sKjy6OVPjHucJaRveNZTycHTu5l\r\nItAsl2ZFRiJycm/K1nBtT0e7SCNfjOM/+1yGi/UO393MslKwXHYOdtKfDjG0\r\nP3WX8UYH0bg3pUvHtoiGXV7dp9k/+7oXFE2LKvzsFNOSspGWmNUyfl0s5OGz\r\njC6HW7Racmj6duDBPRxjcVGwKzfKYBxfO97tok+BbWeWF2WDjvR1r1u8o2+0\r\nPJ1LikKfG/MSUV+w634+pTToK+d+pxXCcVr0b4ulzhO+STWuONqsmGRHTfO7\r\n1QOgs83XbI+6W6R4NYW+GrEjmPPcfPm7iD4Cwl8VkKEfj5o+pruAPigbP2f3\r\n1OYzwqiRrg/gZpZe32R9JpsBF9g5WkShonuUUK7r0qVxgQq5FH4XCH3IW+wk\r\nU4dh1BgWU+RfVkg//XaycoyyxefThrm6hFo=\r\n=NWsx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","types":"src/index.d.ts","gitHead":"786f444a0dbd19e5e07557b8fd5726b1c4297da2","scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","types":"npx tsc","config":"node-gyp configure","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","prepublishOnly":"npm run lint && npm run test && npm run types"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.17","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.21.1","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.0.2-d_1671461080549_0.5395658346251597","host":"s3://npm-registry-packages"}},"1.0.2-e":{"name":"vsoa","version":"1.0.2-e","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.0.2-e","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"f58cb4efa0ebae70cfc7330df96e32361ab1f5fc","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.0.2-e.tgz","fileCount":28,"integrity":"sha512-GuQe346iWFsNgriyVHrkKC3pLepLuXO2Go2zgrZAbeQ2SKemxdm9N6YKrrzxp94C5dyanUfmXI7k14ASlwd+DA==","signatures":[{"sig":"MEUCIQDpspTGb54F0u1D0SPnh5aB9xip3H6aQWBXRld+7q4UdgIgHo8Q7nQIhHWst9B4KBfpLOSds/hS6zw87yGsJsBTQSU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":704731,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjrAZnACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqeFw/9G4TZl9zjnha1GzbRZE7uuxqnu6539GG9VcHPUZgdCliCZkJp\r\nmHr3gahCTJvocXPn/eKaVps38pbLCqjkMGrfCkcoUGSnJ53sd2+E00nto1We\r\njEpYyW1sUHpMhSSyTjlzT73CWssNxg5DstKevJ8ySE0GUKfUS6T2dXJlnLu3\r\n/oINskJE6XgvGtyM6yu0g2pQaTkHGrtSV0yX6FuRQwKOuhCKx6cbPQfMC5A4\r\nvMLEMJsx9FbT3kdONugpQLKqRqk9Hp1QoKRBrHaTzQqr2oa7+7qpsU4au9PW\r\nGbExswp75FF6Tj2qZAmpYCJrgan6beD9kS30MqEXp5af9uN9sAJYSLS1l7UK\r\n+0jO6FwzLYEgBpnINlUoNIRPyjXMbQOSR505gCgLZtaXD+eaYBjzkCNUWShf\r\n0MwCJ5tKIYMFjRc7IJ3nsiDP+w3lI+MqjWGwrzgZe3tFF332VxwyzDTcheAw\r\n7Ij2ID7JI/lfc0cTIHhWXid1mxCE/ztBxe7QUXxLxpFM84M0eOxa6L/HIj7o\r\nkrvYimNw7R20dv5U60o696TwqCIpbTdB+zW2F2Ag9DUflEg0e1PQr+TPlEch\r\n4n/sX2vt5KhKL4svkNbhwJmLwOsHqrNAc5uMHWL5AYz+Ch5UuOg79vlqntzv\r\nCv097/MO4T0wbdOOReCzq87xYGZqcLe6oDE=\r\n=Ipf6\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","types":"src/index.d.ts","gitHead":"dce86a554abbf59e2ad1fe2bf534c33a3b552e42","scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","types":"npx tsc","config":"node-gyp configure","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","prepublishOnly":"npm run lint && npm run test && npm run types"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"8.19.3","description":"VSOA for Node.js","directories":{},"_nodeVersion":"19.1.0","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.0.2-e_1672218215738_0.2140016250024528","host":"s3://npm-registry-packages"}},"1.0.6":{"name":"vsoa","version":"1.0.6","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.0.6","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"faa17c64141809a778ec0f43004ebfb74b2fb608","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.0.6.tgz","fileCount":28,"integrity":"sha512-fLsMJmmi0gmcZmfeRKbKtueS9/1FoXttcy3DFUPscks6Pqp0p2Gvo0riFMXEZKMQyP4Mt514WeVrzREBRPyXYw==","signatures":[{"sig":"MEUCIQConzc/HfpUKN19+0ZvjkZ0n8kChYb9mLib9ctMfzrOSwIgaUxthAB3pj2RCFfvOfF3AfXGghrSRMKpjuECbvgRJ4U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":704788,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjtPC8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpL6Q/8CsPf2EDjcO6VDasGJjAYVX3PX9xbNtncz8Cjj0OREzRomQTv\r\nlXo0lb8c2+8pKhURdbzEJgc6TmIzUWODYq1tlWtTBS54izmZd0q7mh+eePAa\r\nvv6h3QVrYOkMfjPwVqqtklQAZGh96m+9vlZhvj5UhJs0oWwQjf491jhcU9oq\r\nbhHKfqqeC958iiDgA3oSPFw9E5Q6a7sKwQIcJNqTpfHucJxhE90gzO5p6Vbg\r\nsLHe8qXFH8eRSqb5+YFemsr/LLdU2NinhccHgPuFYyz8Skv6qWh3PnMmgiQd\r\nsCvnpHxPGXd1bwJS67IOfTCUG5SkXjyuLPxiVsdt/z/M7tAajIzY+32KMJ1n\r\n24aUxuWEcVuc4i1jY+ETUOe87v7U2j6Cd76Vii7uAOt9Vs+5uArQFFkAQRrr\r\niv5GSzPXBwhAdzwnZPyyIArRyWJR1ISAG+5OIqVk5IwtLxyMXB+dOQJMwQH7\r\nMJggkMWC8Tj8rFZKCcZjOGh9/V6iUhl9YdGCQZQ/VK1OIBWcq3CAWQlvYu5R\r\nWsa0ewAK8oaDL+4aWqovcGVNPikg0bZ5MaP4pxT/Fnti56rXgO8bjZR/a+8D\r\n/07est4FgXL5lRULgM1ui1yV4XGD4Ip8gonKHMappkHzvn9zbxIxzP1+JW+x\r\nTCK+atHotq9lnDE1YxT5n35ZryEfO3FyiXA=\r\n=CTMs\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","types":"src/index.d.ts","gitHead":"bfa2e91972427bb66b6c25518758cd4531101206","scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","types":"npx tsc","config":"node-gyp configure","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","prepublishOnly":"npm run lint && npm run test && npm run types"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.17","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.21.2","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.0.6_1672802491890_0.8119920937033109","host":"s3://npm-registry-packages"}},"1.0.7":{"name":"vsoa","version":"1.0.7","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.0.7","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"cd8ba95fff1d5e12d11e99bdccbcecf6898974e6","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.0.7.tgz","fileCount":37,"integrity":"sha512-egwiWHYRq22EWqmESrv/p9FZRzofNSHtCKiutb0pXEUTqwjp1juuSoL8AkxdcIS6YMQQeBR5cbkuGmkQK2c76w==","signatures":[{"sig":"MEYCIQCoWrpdY+6mF0ZJMDjHWI3ae8nJDgG7rhDxhXYKWuQRTAIhALkHXUSS6hew6WZ6LdhYh24hmVTBpxGHbhQtVq0zZQhk","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1297078,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj5iYVACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrfEg/8DEXUTtpNkOGA4ej9twZsM7eyCA8mxxDq77nRXKt6RAncYuue\r\nPBB21BaeDZSuJrTF0J1QDJWiLeOLKkqXoFhFyLhP9SV4Z3BeTD53SAAeF2AB\r\nnWS+IzO2vPljSjmuE2H1Ad5mjL2NfEOErZv/qzaOPJV8ukHxU9UtweJWO1Zq\r\nVf6Q41khO8pnRVOnq9STcLYpJX5I+L71AnJLzUddYXK9nlQ/cMEEpn6e5F15\r\n48RrTo+VxIgtPSw7JDXmrqpog88U/ksA2dtR/FXaw2QCZQviYAUO92lqoQds\r\nrQyt6rQrdHOe9WtukPOUtdLrZnF+koeIyUGKBG4Sh74Pqze9vUWhINvDj6To\r\n5qbGz9Qq7fxGLZO2slITPONrhEryh+GVjiFVHnf5OGGDeRBW2z+fzoBNrRJ3\r\nFpPe721JnDzH6+L5cntGSZH1d7UpCS6mSQOLmGuDXbqN+T1vi5j2va4aGrgW\r\nQKCdVL3hqW3dxq2IzgopfNRJfjddj+8nSHiQNgMvXcd5br3VvEBzBKXzcCKe\r\nNPIzpbq8nWynQpRGt/MbViM0RcF6lyd0xYH80m0Z1e5KMkQJOTk1lFsZNa8J\r\nKj8sSorEkrgJu+5GEolEEKVWrZV5LfHRL3SWXbgXgAI/gzpkO+MDALFdpcoT\r\neL/OZ7CQBLfFgjskSR4QQDjocYBsniZlc7E=\r\n=+QbI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","types":"src/index.d.ts","gitHead":"f6aeda6322b2fc92e097be0be5dfc81b7a3e69ed","scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","types":"npx tsc","config":"node-gyp configure","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","prepublishOnly":"npm run lint && npm run test && npm run types"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.17","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.21.2","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.0.7_1676027412955_0.9957476437187449","host":"s3://npm-registry-packages"}},"1.1.0":{"name":"vsoa","version":"1.1.0","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.1.0","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"dfba2dfb20e6ae311858a513a0f70d3a8b145e50","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.1.0.tgz","fileCount":37,"integrity":"sha512-SsifZa/A0KDc2nykQbB+TS7DB31oFJoDr1Q+FXr/DGtgH/BsZACBRJBrcIilAXSrG0nqXIi5OJK/5NhmSzwYkQ==","signatures":[{"sig":"MEUCICLX46GS25Jq2/GgXKmQNYcOnHXvhyjagp+6ne6WRRDVAiEAuB9TmrzTUvFEn3v2BATiR6/bmf0AIeSF7OCON1gT4fc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1297481,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj5lfoACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpkTg//QF1cFaTK7z0AIxeGfUvXRUM4B5HGMyC3JQ4PlpAeXKqs6u1k\r\nK5kOG6RqiVwgjKLeLs/1/PD/ec1RnZVX1Ng/lD03eulVZ9JXeJd2lFGWClSU\r\nzGATld32k8u3BP3BYDF6QaEdZMP3hUjntvEBlbSKJESy253KaNGy8fcZ7erx\r\nhF32At5Sa758zLqyskZS2PdV8sOUS7JRuTElLsgPnyztw6w7z+rZPjHJkW0O\r\n1UO/3j6LYNJT+zL57YaeErSetdLRxDvdt/6lTAQTVQ63GKNYTWFC7sYRv+8V\r\nWp2Dmoip0b3AQHjdmv5w1wJk+pgBCU/yzKMsdYMLg2/9DvZ0DF0XiYksT43t\r\nTg/b8W0VYzwdtHMaRVA1ajzOztNL+ECTUHMZg9bgj/tlJuyNr4kXOL1p/X9h\r\ntuv2vWxlMaWQtv19cp64W3QLaNSLD+p2PN4N3eDHvIN05t0aGGB9heHUzQmR\r\nx9Cwb3Fzuu55DltjqtuDsrJjBVKkpe2NarmU1LuUVfy21sS61ZH3eW9C87BW\r\nKLYdHGarg+//YHyV1r2umgGE2rxPFZXl0gZsddsqjidTceQi57Ko3RkbAfF+\r\nIVa2NMXvH80cF+WiBqI4oUSSz/DSQ72zgvoViIk2cblYIsVwOJYEC4Uwry4/\r\nRcH6DxqFxoGv3PLYAaAha+Qbq2o8w9OmdhM=\r\n=j1ZN\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","types":"src/index.d.ts","gitHead":"eddcc13697522ef216c194307e87b8cd441f8273","scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","types":"npx tsc","config":"node-gyp configure","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","prepublishOnly":"npm run lint && npm run test && npm run types"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.17","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.21.2","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.1.0_1676040167987_0.47757473763090674","host":"s3://npm-registry-packages"}},"1.2.2":{"name":"vsoa","version":"1.2.2","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.2.2","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"55febcd1a083a1160163a96ce0ace2898574e50d","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.2.2.tgz","fileCount":37,"integrity":"sha512-NMSv1Zj84+6nCODYB/EpD7tHBp30bacHLYTK9HBwkmmeP7dyENNC5oL3yV64a+EYMe8O0HoFWh+5v2TecIhsVQ==","signatures":[{"sig":"MEUCIQDfQO02HGib2OX4tthhtn5T3gZkhMz3dG3pv03Az33PUQIgSjGvWz7LsZZnLlP4gB3doEHugGI0/GdzF3rSHD17VFQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1298226,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkAwzwACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqKmQ//f0nYu7sN87LcqCUwwBqTHKAlH4mfidozhotzbxfMU/rEoB7X\r\nw2fdo1/11udecTXJZOGuYHnX1F8dGGUxA27CIGHWGgV77q+XG/WYsjSv48/+\r\nJMt0MDt3rZqga7Kmxm41m+397csGb7g+fVEBlYrnMBW1vuZgfASw7nvUzSNP\r\nt1ZXXJX7RiwUuv1mrSSXnJPF6XbpHctCEL0Of9fr2r+m98KbJeqMXOG5ZTBM\r\ngcIPKYCkfMbW6g9NpR0bDujMLgp5wpfLIsYlXqAg+OMnCGxv9IFwPobNh4ss\r\nq9PTgJBk0KGG+VzoWapZFj9ciZpafllZmHs+hvJYRmbYL5HTkHDUAgbuEnmv\r\ncDPC3I92zwmupdx1OGW53dW+Crb15OELx4Knqc3gbiVaoOZZv24TI7SroXnP\r\nmRXTYJIBWNs1bfSJ4u2/uHsy3VEKIwDTojNJ9TdOyPYyAGXtJ28s4EU3OMT0\r\nY0CTGAdDJk/0NEuo/OQQvR259kCi/Sb9Mli5h5hrciN0FHE1KezYdbU3dKC/\r\nyPn3J2q4uu/TDcj7+oVwQjRnghi7WJeZj9iaFGCLT1Gi9SdevOfMbQhEJDFs\r\nE1qWPWJhFCk/puLNcEguBmqch49txNZ/R9gFkvAPfuX09PUu6gy1s4r954Gh\r\np7xvwCRXpBsWY6XcoroqRp5NpD8mPO/KINc=\r\n=+puK\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","types":"src/index.d.ts","gitHead":"c2895b44f18e19f5798a6ce723520909f4f21979","scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","types":"npx tsc","config":"node-gyp configure","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","prepublishOnly":"npm run lint && npm run test && npm run types"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.18","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.21.3","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.2.2_1677921520039_0.49261178082953205","host":"s3://npm-registry-packages"}},"1.2.3":{"name":"vsoa","version":"1.2.3","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.2.3","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"633d16328f6e77736a24f8bd6e631be4987a4bdf","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.2.3.tgz","fileCount":37,"integrity":"sha512-eqaR4aM/WR+3zgxYCVrASXujO/wxEthEptm+AuUJw0mYgbe1fSisHDj2ldTwZxMiY/kvmlDc0W4ChSSVLOYSkA==","signatures":[{"sig":"MEQCIDF40epsHnda+XeW53/lZe05eyNg1vKhW4U8S8cKOULPAiAHGlkpj4IdZgfFPj5Zi8Y42NsPY9s70xBllDBQw1sJyw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1298313,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkEV6JACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoxihAAnvo+REkAYss0/7TmwUDvxHjAiVYQaRKrOZdRoPRA72zifbay\r\nhcKIqFRUzJUAbj12G9JxHGvau6b9wNAv32GByL69oZadd7wKATZX+FmtjX3C\r\ncF78AuQcoZCuPRAfW6YEXCgMY2UIdV9ZhjKi33+k2rxWIb/uUwxU+vmEFWgz\r\nBVAaJF9iUrRWSlbhXZ3q0eyAbg29jzRxOQNmMJ5lMUFE+fu9iYlr9NOBM68V\r\nPtgv0qHxJz7Aye7MyXDOZ8fBHs2U4TpTUDhlF+Gqg1zSgLJEHhofjRjDTOmB\r\namMACI80XLke72FwtcN0Wf6qQO5z0FxcMNiZR8HYhfGsaBRW50PyB94AhjbX\r\nRK6csXySJHtpJosfC0NlyRbK1j5XixTRcxHAtNwNrPh+WHufJgud1MtgPQH7\r\nDlXskJQUo2LhNSL74Cww4jz5Sqqv6oegvv/aUG7lLiQsjUxJo18/7Z39++79\r\nS4O4vwiEDCiYL3tfltoaJg26fAjOPz53Ze+KG3k0vBTfLmRsKoX27/vdgBHa\r\nLFFE9FdGJne46+Msr9dmt5L+ESovNLBlzroGdm2mOjzq1Zvc1/pRwnmsFPl+\r\nFz73DlhpjznsKaa28j5cPK0/T/zhspiDqcEZVJKPctlpPwU7KcXJcyAD8WxS\r\nUAZQdYVoKnO3iJlRGVhI3t6Rk4kGR3pcGTA=\r\n=YRBx\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","types":"src/index.d.ts","gitHead":"5caced4166cc5f54b9a582b9e2a6d79996df5e59","scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","types":"npx tsc","config":"node-gyp configure","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","prepublishOnly":"npm run lint && npm run test && npm run types"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.18","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.21.3","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.2.3_1678859913266_0.8987944847956775","host":"s3://npm-registry-packages"}},"1.2.4":{"name":"vsoa","version":"1.2.4","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.2.4","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"c05d046d23d98890e67ee5129e45cf93f567f378","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.2.4.tgz","fileCount":37,"integrity":"sha512-dj9Odmcuj3B2YrSMHpJw/bJFsutu2OqTGcTp+9fCr7eAZVBPw0RKSYH8NFMbj2NB4W3ATnuhtcTrpkPOp4uAYA==","signatures":[{"sig":"MEQCIBNdRpI591yFAb5LZb+dhbKqObF82CXhhL3YlT/eA9CbAiB1CstxhF6QopNv8aGFgwMRhjDgjLHyU1Jl+SY8hfbdvg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1298473,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkM+nSACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoZEA/9EZbbYajs3WTtmmIytZ3TnCL2GXF/lngzP0MGFVUpi2Jvi5T/\r\nX2iTNiaj1rm3cVbiKk6lV++5gtv6IBZ1e0Jzp2OAiw9O58tlAWwhcK7Gdu3N\r\nntrVxwiWkWONcs1xkDv8p1SiXjGyGgdcaAL47BXv3Cg600sg3JxLtcFZhiZ7\r\nWsIlLdym41S2aHjL0ro/fQsjqBqXOOMRe4efybs8s5ZTWSN56al9o4lXeusp\r\nEtkbqf+MieyIBRilXeGlKA59meVFQZ+mtNxssqV0QDALrAewFHAomEPU8W9Q\r\n1sQvgS4lfNabD+9uxou3dxNwuK5R/Qd7tuNPu3v8keqH2/qps6hn6lQMG0ny\r\n5S+eHZWPnGspscOqY67F1k6u3tW7MA6xJ2spo2jfNHpOQS/+iS7RdJ5n1nbA\r\neSV8vhkzx2BP653G5QNPG4LAvbi1pJL82q054ZJnYXW7EAGFd2sjJVrKHY+v\r\nP9qkDi2d5tx/t0uHatJaT+oQdKVloBmgGrxG43Dghl2LrsXIMU209+eL2O9S\r\nWHhhjWrBlzNEvOMSE8VSIdoCgAIFNk7lPIjI7LXEiDlJuywq458uYDx25GUw\r\ngZ9yl8lgo4zt7KyJJ0wN2kyNxdRpEPnuifmjUhp5n/KASwiC5n8aQPes98KQ\r\nCxnvHUmC18UZ0kN6ixRxDqAnmB4CbgV3ayQ=\r\n=eeLc\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","types":"src/index.d.ts","gitHead":"21033c7ee9d17bd6c201233a5d9022376da6ecd8","scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","types":"npx tsc","config":"node-gyp configure","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","prepublishOnly":"npm run lint && npm run test && npm run types"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.18","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.21.3","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.2.4_1681123794151_0.32097888031617594","host":"s3://npm-registry-packages"}},"1.2.5":{"name":"vsoa","version":"1.2.5","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.2.5","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"e15bd245c25dd4f60c539963429e5174f564b3f9","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.2.5.tgz","fileCount":37,"integrity":"sha512-KNB4jCHKReORBvdOv9yJ61xXRHhm/IOflHLUbEHfuMavmGALvm0KH4fAZC+M4LjJizQf/+ei3Kz3H8+nWvRMDA==","signatures":[{"sig":"MEQCIGsm70qeJIdka7epLkhvY7G8VKNZ8+GIIRa9AQtHpY4dAiALw4a0z72Z7Tzn8MiIs6Q6SpkIc7X8f5IQfchIGuryCg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":1298402,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkNRiFACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrXnhAAnE4nVOTT11haAQU+hiJ+oV/oRg99uy9BDE5HuePnv6zSqpYQ\r\n/Hq/gdFPgN5kuB1CTXmykIh7YpeqI2e+xiIgj+EF0TGYPpFPZRP6QeG+HdT4\r\ndm8r5dICVm0f6CMOkc8m7khnaSQlFruKU0A9FYXsocOvxHE3At1u8H4Ptghd\r\nuNi/+YArN67f9ZbfVBaqNrBQj+qv65o0riAx6Qpn1WBbfuRmtXooXieBGeX/\r\ngbw+RUnjkhGfDSvMCpwyTtblq7NBkntlsxpspqaxEWW3+4UtBsmSkO9IgH6K\r\n4a/TPr6iGGeIZH8LtAmRLBWhvHFO7yzfF+W4CEquDYvL5GWoURun0J2MbnlQ\r\nYII5svi/zeUgKLOFddkscpoFAmksS/1C5rK1KSWFd12ka14CN2vjHSNQYksy\r\nnFOpxWvF0qzgXpH4QZszcPceQVTMCcDCV5Ow0nw/cJiD9LONvzvRHhrIu6Ng\r\nBV21BOewUeXSKvTfz+Yj2wLE26nAHRXQAqWUJwWVS4z4B2HoNtKAACv91o66\r\nlSvhyJg30vRsIwpP5L6QBaX95vTb7pq1dTPOO3/gUmWKHPdqSwnjvLPRYOLw\r\nspDrd0oAOHUlfVI9XOq0uicu2nXBoPnix58DcDnozt3cB2ViDL3na8ayCifo\r\nwJti4OMLAND1q6LrsC80bXYyHaavBvpojkw=\r\n=fyDC\r\n-----END PGP SIGNATURE-----\r\n"},"main":"src/index.js","types":"src/index.d.ts","gitHead":"2b9649969c07973fc32920834451b6fee63bf3e2","scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","types":"npx tsc","config":"node-gyp configure","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","prepublishOnly":"npm run lint && npm run test && npm run types"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.18","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.21.3","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.2.5_1681201285509_0.18699248840012617","host":"s3://npm-registry-packages"}},"1.4.1":{"name":"vsoa","version":"1.4.1","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.4.1","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"0c0582f8c528853fb56c6bb7dc07ff005ac92728","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.4.1.tgz","fileCount":28,"integrity":"sha512-zH5dCXv7Yg3I/x98Wll4fqMONVGbro4WlsxvLW9bYHiiA7mt0jrOX64iWug8wY/bSDaSrb1+vU8CzcAMqIJDsg==","signatures":[{"sig":"MEUCIQDODrdyIxFV9nBXZ/kiphmtbzUq9wr3ix3TK7Bs4j9DPQIgAYcjf54eq4opfmj3ZpxgmjwKxkjsFPULqVL96bSeCQI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":728068},"main":"src/index.js","types":"src/index.d.ts","gitHead":"99c26d90ff3c4cb6a7fd3a2c22d3bf0337367da7","scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","types":"npx tsc","config":"node-gyp configure","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","prepublishOnly":"npm run lint && npm run test && npm run types"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.18","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.21.3","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.4.1_1684467303064_0.04309823082531272","host":"s3://npm-registry-packages"}},"1.4.3":{"name":"vsoa","version":"1.4.3","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.4.3","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"f82575b7d858a29483e67070cf7e8342e3620b25","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.4.3.tgz","fileCount":28,"integrity":"sha512-hbuK3HRLWs53OHv2lkfIt2J1ElndghhjkYgaWR1R8xWLBc1L4Fa/EtCdOYmheJ7Pvaom1trypJDFj7CjRfXPHA==","signatures":[{"sig":"MEQCIHHuNH+OapFCaXrzGI8wvqbz98eOtLdAZ3QSjwJqnbSBAiAot/GQ0nzAHrVGWRROpC/qk4yOqLVYrBDDWTFL9qZKGA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":899978},"main":"src/index.js","types":"src/index.d.ts","gitHead":"e14db5597ebbc25869c80c105cdb3f8b9c41432b","scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","types":"npx tsc","config":"node-gyp configure","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","prepublishOnly":"npm run lint && npm run test && npm run types"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.18","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.21.3","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.4.3_1685268620222_0.3977877367510687","host":"s3://npm-registry-packages"}},"1.4.4":{"name":"vsoa","version":"1.4.4","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.4.4","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"3385a58009f0a1c6266059210740580674c51c8d","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.4.4.tgz","fileCount":28,"integrity":"sha512-vRVp5O7Ca/M74QdnsFWSLMNpebXPw3w0o/5xNvDeGt0dx4RWS3wmXBI2adJMeaixDRTPxWQ7N9C6SjqF6woGFw==","signatures":[{"sig":"MEYCIQCad/ObHNOyalpjhew/EAlMIn5Oe8aCBPjU4+4jsMGrKwIhAJGNdZ5o6v4eh8m3zld3T7OU+cjhQo9BpUzDmLQqmNHz","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":912282},"main":"src/index.js","types":"src/index.d.ts","gitHead":"b8d32995e59c5fcbdf273c00bdde87e346867e7d","scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","types":"npx tsc","config":"node-gyp configure","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","prepublishOnly":"npm run lint && npm run test && npm run types"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.18","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.21.3","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.4.4_1685786876164_0.19997441509296277","host":"s3://npm-registry-packages"}},"1.4.4-b":{"name":"vsoa","version":"1.4.4-b","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.4.4-b","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"f76427cb3df8cf745c4a57001e755a2fbe93e64e","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.4.4-b.tgz","fileCount":28,"integrity":"sha512-mnQD8/++s9GL+47qrOBkR2mwsIW9y+bVaR5JErZvBaC/ELsm6ga0VXUxFmnhrqyw/ZOxQllrHWMRk1njJkhQZQ==","signatures":[{"sig":"MEQCIFtkji/Kfn21jYglK+klZ3fDBbIa+cHoPzq6q3PZ75YWAiBInlMLrDz3u+ynGPqrYXmj8ZOnAZh6HbBbNX0S8hUztw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":912284},"main":"src/index.js","types":"src/index.d.ts","gitHead":"6125f094dfc324fb43af58c4c40280cac26665e2","scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","types":"npx tsc","config":"node-gyp configure","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","prepublishOnly":"npm run lint && npm run test && npm run types"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.18","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.21.3","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.4.4-b_1685975317860_0.3521746233166654","host":"s3://npm-registry-packages"}},"1.4.4-c":{"name":"vsoa","version":"1.4.4-c","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.4.4-c","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"874d789ffc23e045a51daf6f4c0cd3a313c3bee9","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.4.4-c.tgz","fileCount":28,"integrity":"sha512-Gv4tCSwEeYAXQhx1W/AajGjsrSJyIxLdREuCWuVNe1Vq8BaBnF0OLb2rbnNRsBJiVuIBr72EsfkQZ+cB7YnpoQ==","signatures":[{"sig":"MEYCIQDnHlIi7aQSrvcLKzCYbhitFLjMHh25Qpep28XrvE3KLgIhALZ1CySHeiCyfe2qjn98oi2kOD0LAhn/7hO7xR08gyix","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":912284},"main":"src/index.js","types":"src/index.d.ts","gitHead":"477c7c4638cfc9271a5206c8accb4087feca5494","scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","types":"npx tsc","config":"node-gyp configure","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","prepublishOnly":"npm run lint && npm run test && npm run types"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.18","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.21.3","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.4.4-c_1685978545013_0.1289525946352299","host":"s3://npm-registry-packages"}},"1.4.4-d":{"name":"vsoa","version":"1.4.4-d","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.4.4-d","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"47ae69b3e4f96493f99c21bdd00aa325e67d0bba","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.4.4-d.tgz","fileCount":28,"integrity":"sha512-WFyWOS0iG5m+jPWBlf0f9AKO5dR2Kg5+Fyd6wS2RSxsE/QK3nFmbPgIFQf2g6XSqFeAVH2jyZahhKWpALFOlKQ==","signatures":[{"sig":"MEUCIDhc4Mv3qfw9MA5MScZZ3bSTorDq/YCJPBHml+3Jn4zcAiEAmlA0DFdqOHZ2fJIAakHiFEg74eTpjVDVyerbU4zrBtU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":914378},"main":"src/index.js","types":"src/index.d.ts","gitHead":"dd77d63b0ad1b2b6a33ace9f2e3b085e6f801f24","scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","types":"npx tsc","config":"node-gyp configure","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","prepublishOnly":"npm run lint && npm run test && npm run types"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.18","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.21.3","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.4.4-d_1688373477717_0.9038708568982228","host":"s3://npm-registry-packages"}},"1.5.0":{"name":"vsoa","version":"1.5.0","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.5.0","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"ead50da9e31d2faaa5960c969170fbc059fa15ab","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.5.0.tgz","fileCount":28,"integrity":"sha512-C0RPxfW/wRMcS12ENpsWIizevHVucLBix2/G0kjzujTckNMPoYYAAVLzCvItzcpiEEN+JLq7xCEaOPKMpwnuTA==","signatures":[{"sig":"MEUCIQDGPiL9K7nSS3OJjEKw9UJAxIBGy0Tr8eh88q83cu+oeQIgbzszq9hK9kjZf1JC8nZUd9qVcwp/D2plMaa4MB6a5lQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":918155},"main":"src/index.js","types":"src/index.d.ts","gitHead":"ae518529f4a3d08b252deec1d4face9e967bb330","scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16","types":"npx tsc","config":"node-gyp configure","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","prepublishOnly":"npm run lint && npm run test && npm run types"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"6.14.18","description":"VSOA for Node.js","directories":{},"_nodeVersion":"14.21.3","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.5.0_1694877893669_0.6462232198260667","host":"s3://npm-registry-packages"}},"1.5.1":{"name":"vsoa","version":"1.5.1","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.5.1","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"cd8e514e54656eb4ee21b31775309930cde93a5c","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.5.1.tgz","fileCount":22,"integrity":"sha512-rZJF/44UZ9wa9uAkXoRyEfck08OFIkRb+AZTjemns6LAVbJ0jvF1/b2QGZ79p7wmglE6gmg3jZbZJKDo7pqO6Q==","signatures":[{"sig":"MEUCIAllhI75JQihHZiB+iAp5L0HGobLmebCgSICRl2tQFNDAiEA2OW4qGHETrYKH+L3JZ30PpcwCEqaK/BgODsv2173T5o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":940943},"main":"src/index.js","types":"src/index.d.ts","gitHead":"907426e7035f47a22a70352a255a50eb6e84eccf","scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16 --verbose","types":"npx tsc","config":"node-gyp configure --verbose","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","postpublish":"git tag v$(jq -r .version package.json) && git push --tags","prepublishOnly":"npm run lint && npm run test && npm run types"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"9.8.1","description":"VSOA for Node.js","directories":{},"_nodeVersion":"18.18.2","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.5.1_1700928649095_0.09270581317266835","host":"s3://npm-registry-packages"}},"1.6.7":{"name":"vsoa","version":"1.6.7","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.6.7","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"d2b40907a0a09aef291f166ad790a470591ca536","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.6.7.tgz","fileCount":23,"integrity":"sha512-oGGOLqBUJBEcFioQOvelSyZcR4IKtWYqA1GJLzfwHeQIg4vOAC0es1YFaf1ukKgqHuRxNRzHqhnQjbmVvbsjww==","signatures":[{"sig":"MEYCIQCrfJ29FNN2imwIP5fPazC3DufAnLLeAV2zbpsTxlDPxQIhAP8ddbDi0TyHrhZ90/jT6PWbWf+ajJTVEZB7l2IE/RMc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":978705},"main":"src/index.js","types":"src/index.d.ts","gitHead":"85f4263ce6152fd96a8d3476ce1dddc2dd0f88a4","scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16 --verbose","types":"npx tsc","config":"node-gyp configure --verbose","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","postpublish":"git tag v$(jq -r .version package.json) && git push --tags","prepublishOnly":"npm run lint && npm run test && npm run types"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"9.8.1","description":"VSOA for Node.js","directories":{},"_nodeVersion":"18.18.2","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.6.7_1703586735022_0.854747305261562","host":"s3://npm-registry-packages"}},"1.6.8":{"name":"vsoa","version":"1.6.8","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.6.8","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"523a0b474641a76e49a10d9173b5ff13e4e97202","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.6.8.tgz","fileCount":23,"integrity":"sha512-QzwaPpp4JhCPrjavM22/tiIvnwlNJvYsiFydPDk2MEgI8INXsgtUysiRoEWo8hUYL7cfXSmizXAnr3hN5dWajg==","signatures":[{"sig":"MEYCIQD+Y19JkFH3uLQdlSTGEk4St8owdIdz28sX25mK+KXiFQIhAPdh1o1gR3J8cph+JKg90n91/ws53lbGBFr7/dGMjnwT","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":966566},"main":"src/index.js","types":"src/index.d.ts","gitHead":"3c6c94bf8da394dc3d4d4522e38f32b82dc1b56e","scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16 --verbose","types":"npx tsc","config":"node-gyp configure --verbose","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","postpublish":"git tag v$(jq -r .version package.json) && git push --tags","prepublishOnly":"npm run lint && npm run test && npm run types"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"9.8.1","description":"VSOA for Node.js","directories":{},"_nodeVersion":"18.18.2","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.6.8_1704280503872_0.4764856802330226","host":"s3://npm-registry-packages"}},"1.6.8-a":{"name":"vsoa","version":"1.6.8-a","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.6.8-a","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"7b692447fc3c6c714fd11e302ecdc8a77565582e","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.6.8-a.tgz","fileCount":23,"integrity":"sha512-BFhngdNj2B9mKXI+NjVUWbalV1KX9uZP3Vc7l0wv+DMjF7I+JogEadjOmkhQbnhdbx/iWGhXnjxXHOi5QTePFA==","signatures":[{"sig":"MEYCIQCyEvfFZin7V9x4kb5cfj097Z5AZ0RUVM1UO5MjXlXG8gIhAOK2eN3rN7nTF9xmPCc3Ol/1ETjmI8AngH6KE6ZT2U90","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":966567},"main":"src/index.js","types":"src/index.d.ts","gitHead":"3c6c94bf8da394dc3d4d4522e38f32b82dc1b56e","scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16 --verbose","types":"npx tsc","config":"node-gyp configure --verbose","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","postpublish":"git tag v$(jq -r .version package.json) && git push --tags","prepublishOnly":"npm run lint && npm run test && npm run types"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"9.8.1","description":"VSOA for Node.js","directories":{},"_nodeVersion":"18.18.2","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.6.8-a_1704280849805_0.6582844365120983","host":"s3://npm-registry-packages"}},"1.6.8-b":{"name":"vsoa","version":"1.6.8-b","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.6.8-b","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"2029acb98ab9b60990a71e27fccc8d2e5de26198","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.6.8-b.tgz","fileCount":23,"integrity":"sha512-BTo5c9FPEJGSi0aMeIMcmTWZ5Py1Ibk3S/pb+mgv6+NEFpGX5S4wtzbE+lcdtKyQwX6zIgdAovDwWN+Dnjv2eg==","signatures":[{"sig":"MEUCIAIqgJx+2ajEaE0/BQ62ikWudK0BgS+A7ZYufvPe2+7aAiEA0l1m+rA2bd2mNy+5RoDAnLemSiCDZfTRuRO3+s7bX4I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":966667},"main":"src/index.js","types":"src/index.d.ts","engines":{"node":">=12.13.0"},"gitHead":"acb69c1808fecfbda1f84d82331b919464db092b","scripts":{"lint":"npx eslint src","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16 --verbose","types":"npx tsc","config":"node-gyp configure --verbose","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","postpublish":"git tag v$(jq -r .version package.json) && git push --tags","prepublishOnly":"npm run lint && npm run test && npm run types"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"9.8.1","description":"VSOA for Node.js","directories":{},"_nodeVersion":"18.18.2","dependencies":{},"_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.6.8-b_1705585544551_0.7611087484142194","host":"s3://npm-registry-packages"}},"1.6.8-c":{"name":"vsoa","version":"1.6.8-c","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.6.8-c","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"02965727f753b6a558a922a340d7a6c27afd479e","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.6.8-c.tgz","fileCount":23,"integrity":"sha512-5AHL7HcX+VSxiQ6Liu7aZOhy3kkSsSTl/g7c9HxMr72h68X4UjTSLkZyTBZTnDr6L2WaI2BYOGx0kiW6wYbEoQ==","signatures":[{"sig":"MEUCIEgKGZqVoBHu9SDRcv6hl3xdmItHAR5gCs5tGCCNOhOnAiEAiWOm0jLoXARWrP5FY1Vx7beSb7g+WMUSYAmLzAgzUeY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":955031},"main":"src/index.js","types":"src/index.d.ts","engines":{"node":">=12.13.0"},"gitHead":"7f2be0ace19d526bd481c3849b1d8688750fefce","scripts":{"lint":"npx eslint src spec/**.mjs","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16 --verbose","types":"npx tsc","config":"node-gyp configure --verbose","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","postpublish":"git tag v$(jq -r .version package.json) && git push --tags","testBrowser":"jasmine-browser-runner","prepublishOnly":"npm run lint && npm run test && npm run types","pretestBrowser":"sed 's/module.exports =/export default/g' src/timer.js > spec/timer.mjs"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"10.5.0","description":"VSOA for Node.js","directories":{},"_nodeVersion":"18.20.1","_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","jasmine-core":"^5.1.1","eslint-plugin-jasmine":"^4.1.3","jasmine-browser-runner":"^2.3.0","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.6.8-c_1712581222831_0.25545986924003095","host":"s3://npm-registry-packages"}},"1.7.0":{"name":"vsoa","version":"1.7.0","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.7.0","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"3b457557ac0002dfbafad99cbd0dcded5c9a4ba2","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.7.0.tgz","fileCount":23,"integrity":"sha512-KjS4306rklai/XaeUXs7/rzaser05/Cej5rc/tnoEryqokrHwnZE3lPh/CzOL+K5uI3OM6V3tErjHPED4m4H5g==","signatures":[{"sig":"MEYCIQDPJcartCgXP71TLAJw/KmJ6n0h6vLO/CIrwObLF8TuDwIhAJUK97l3qOU64nJL9pXXMnvpYDgTJM86XBERDU34Z8Bc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":955031},"main":"src/index.js","types":"src/index.d.ts","engines":{"node":">=12.13.0"},"gitHead":"50c4e86c83078b9d61d1bf56c735bfc67e23c42b","scripts":{"lint":"npx eslint src spec/**.mjs","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16 --verbose","types":"npx tsc","config":"node-gyp configure --verbose","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","postpublish":"git tag v$(jq -r .version package.json) && git push --tags","testBrowser":"jasmine-browser-runner","prepublishOnly":"npm run lint && npm run test && npm run types","pretestBrowser":"sed 's/module.exports =/export default/g' src/timer.js > spec/timer.mjs"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"10.5.0","description":"VSOA for Node.js","directories":{},"_nodeVersion":"18.20.1","_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","jasmine-core":"^5.1.1","eslint-plugin-jasmine":"^4.1.3","jasmine-browser-runner":"^2.3.0","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.7.0_1718846828602_0.33077096996890076","host":"s3://npm-registry-packages"}},"1.7.0-b":{"name":"vsoa","version":"1.7.0-b","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.7.0-b","dist":{"shasum":"6e84b6d78caf80ed51b25593b16c9aaaa1b8f206","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.7.0-b.tgz","fileCount":23,"integrity":"sha512-kX31getMYI+oHzAsbGHE1lxGKzWVIFVA5LF7dSXpFP+Lqs3XhHkcdMM5xgSfKeKfyR9lp5RfjllqXt5IkLjZqw==","signatures":[{"sig":"MEUCIQDy0OKiwbCjxz9kaLA4tq5uF1tNkUx5q2brNgHjBYUvkwIgRMIUKax0T5vAhW7Pwo/p0Rk7sPARIm8VD6BZNDWWokw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":955035},"main":"src/index.js","types":"src/index.d.ts","engines":{"node":">=12.13.0"},"gitHead":"07d3be30b3b2668d791521d72552caa8ee0e5551","scripts":{"lint":"npx eslint src spec/**.mjs","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16 --verbose","types":"npx tsc","config":"node-gyp configure --verbose","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","postpublish":"git tag v$(jq -r .version package.json) && git push --tags","testBrowser":"jasmine-browser-runner","prepublishOnly":"npm run lint && npm run test && npm run types","pretestBrowser":"sed 's/module.exports =/export default/g' src/timer.js > spec/timer.mjs"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"10.5.0","description":"VSOA for Node.js","directories":{},"_nodeVersion":"18.20.1","_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","jasmine-core":"^5.1.1","eslint-plugin-jasmine":"^4.1.3","jasmine-browser-runner":"^2.3.0","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.7.0-b_1719907687395_0.7685678863023813","host":"s3://npm-registry-packages"}},"1.7.1":{"name":"vsoa","version":"1.7.1","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.7.1","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"b3a9466dcf043ee3178dc7eefd535d8df71d4dd6","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.7.1.tgz","fileCount":23,"integrity":"sha512-OgDN6VhgclfdlNb03uAa3OgqBtZuyjWYiavVnHEXy0RXITtlgmGRZstXhh4wa4ZrWsZRrXwEMH9AMaH3p/GYXw==","signatures":[{"sig":"MEYCIQC/u+nFPA3o4qrGP2kxPBYyZGmWGkHb9st+gOXPM53sbQIhAMZiK/918D2Vbw6B1NYVdEbxMTmnGkS0+EvDpzWU6foW","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":955097},"main":"src/index.js","types":"src/index.d.ts","engines":{"node":">=12.13.0"},"gitHead":"fef6f98bc526e1c38555613dc4652647ad7a84a8","scripts":{"lint":"npx eslint src spec/**.mjs","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16 --verbose","types":"npx tsc","config":"node-gyp configure --verbose","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","postpublish":"git tag v$(jq -r .version package.json) && git push --tags","testBrowser":"jasmine-browser-runner","prepublishOnly":"npm run lint && npm run test && npm run types","pretestBrowser":"sed 's/module.exports =/export default/g' src/timer.js > spec/timer.mjs"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"10.7.0","description":"VSOA for Node.js","directories":{},"_nodeVersion":"18.20.3","_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","jasmine-core":"^5.1.1","eslint-plugin-jasmine":"^4.1.3","jasmine-browser-runner":"^2.3.0","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.7.1_1720015113643_0.052922957724850006","host":"s3://npm-registry-packages"}},"1.7.1-b":{"name":"vsoa","version":"1.7.1-b","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.7.1-b","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"99829cb501dff4b4c1e391bd0f49b0c93e37c9a8","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.7.1-b.tgz","fileCount":23,"integrity":"sha512-DHPKWrz1D7kZlPS4acSdTIrNSQjA3VYkRuvtVavkcfzD11fvxlebtHbD4W7P8CzRegwQThoDjTp61iILzqP/uw==","signatures":[{"sig":"MEQCICqoqd0Hjk7xuaorPCrXgaEiUS9HuOxTpFnDzJKoYYLlAiBCyx5t7IhdsYL6FnvQI5ik5zPnlm16yCPTiIp/NHfAnA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":950987},"main":"src/index.js","types":"src/index.d.ts","engines":{"node":">=12.13.0"},"gitHead":"afd8c5a52461010e8b94e8351b123d69b7fc862f","scripts":{"lint":"npx eslint src spec/**.mjs","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16 --verbose","types":"npx tsc","config":"node-gyp configure --verbose","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","postpublish":"git tag v$(jq -r .version package.json) && git push --tags","testBrowser":"jasmine-browser-runner","prepublishOnly":"npm run lint && npm run test && npm run types","pretestBrowser":"sed 's/module.exports =/export default/g' src/timer.js > spec/timer.mjs"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"10.7.0","description":"VSOA for Node.js","directories":{},"_nodeVersion":"18.20.3","_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","jasmine-core":"^5.1.1","eslint-plugin-jasmine":"^4.1.3","jasmine-browser-runner":"^2.3.0","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.7.1-b_1720086821805_0.6063378217865552","host":"s3://npm-registry-packages"}},"1.7.1-c":{"name":"vsoa","version":"1.7.1-c","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.7.1-c","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"136b59cdc63f6ee09421d6553bd0cd4cb21db59b","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.7.1-c.tgz","fileCount":23,"integrity":"sha512-Mez9eznv26LslRezqljbF6vFSKVAQJ/RTk396SbZG1291lk7zCz/t8kxBMytyxHh9BM+bQuTzx9moMod2G7AFg==","signatures":[{"sig":"MEUCIQDgSvViEX5pZgmA8uHSTAcS9TD+odma1u1cqN3+p7T4+wIgf+FRTZzzSzpB8NLEC4JGdBBeVqMidEouff/MlsKNNI4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":946891},"main":"src/index.js","types":"src/index.d.ts","engines":{"node":">=12.13.0"},"gitHead":"9ede48357230802c4a32599598c89cfad654efbf","scripts":{"lint":"npx eslint src spec/**.mjs","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16 --verbose","types":"npx tsc","config":"node-gyp configure --verbose","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","postpublish":"git tag v$(jq -r .version package.json) && git push --tags","testBrowser":"jasmine-browser-runner","prepublishOnly":"npm run lint && npm run test && npm run types","pretestBrowser":"sed 's/module.exports =/export default/g' src/timer.js > spec/timer.mjs"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"10.7.0","description":"VSOA for Node.js","directories":{},"_nodeVersion":"18.20.3","_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","jasmine-core":"^5.1.1","eslint-plugin-jasmine":"^4.1.3","jasmine-browser-runner":"^2.3.0","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.7.1-c_1720535840792_0.06731275262456915","host":"s3://npm-registry-packages"}},"1.7.1-d":{"name":"vsoa","version":"1.7.1-d","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.7.1-d","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"d73b18bdeb5284e06f33561950ec08ae92aa685b","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.7.1-d.tgz","fileCount":23,"integrity":"sha512-hT+Ug+msNmj8SaEAL79YuTeHGrxq33pbuwOaAzV30EzP8l4wqZ6XwU4T6YNCimtWJxK0//t32q9Rzgg3qr435A==","signatures":[{"sig":"MEYCIQDi501FfF5rWxbt2J6paeFBl6rHl3HtsCee+Z94rmBM1wIhANxLWcCklQw9ATliTHcdcIqkv8LTCH0+52SnS0qHSmdd","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":997580},"main":"src/index.js","types":"src/index.d.ts","engines":{"node":">=12.13.0"},"gitHead":"8dfb8a179ef29ab2205deb7d3efa83a607de3cc6","scripts":{"lint":"npx eslint src spec/**.mjs","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16 --verbose","types":"npx tsc","config":"node-gyp configure --verbose","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","postpublish":"git tag v$(jq -r .version package.json) && git push --tags","testBrowser":"jasmine-browser-runner","prepublishOnly":"npm run lint && npm run test && npm run types","pretestBrowser":"sed 's/module.exports =/export default/g' src/timer.js > spec/timer.mjs"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"10.7.0","description":"VSOA for Node.js","directories":{},"_nodeVersion":"18.20.4","_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","jasmine-core":"^5.1.1","eslint-plugin-jasmine":"^4.1.3","jasmine-browser-runner":"^2.3.0","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.7.1-d_1723560147129_0.20815873641244198","host":"s3://npm-registry-packages"}},"1.7.2-a":{"name":"vsoa","version":"1.7.2-a","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.7.2-a","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"d0bd3bce67ca53cf0005b1ddffe25ec6d3f385cb","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.7.2-a.tgz","fileCount":23,"integrity":"sha512-wxY/mKlGGX7v3i4srGouufyOmAT5fYHCaf/5pGyfD4TaiwRcblR8RdG0RjNOnA23qAgqgRFcmkcAqacEVlDCsg==","signatures":[{"sig":"MEYCIQDygLR6gfthfbLmslIFyRmFFRKFtWQLLDIOgO30But/GwIhAObeEKYYj2Ap2YXbJlVn6VJQeJBlvDC3ufJ1Qbct/p+B","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":997905},"main":"src/index.js","types":"src/index.d.ts","engines":{"node":">=12.13.0"},"gitHead":"e75723d410e7c3415f8acf9fb7bd3c475b296314","scripts":{"lint":"npx eslint src spec/**.mjs","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16 --verbose","types":"npx tsc","config":"node-gyp configure --verbose","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","postpublish":"git tag v$(jq -r .version package.json) && git push --tags","testBrowser":"jasmine-browser-runner","prepublishOnly":"npm run lint && npm run test && npm run types","pretestBrowser":"sed 's/module.exports =/export default/g' src/timer.js > spec/timer.mjs"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"10.8.2","description":"VSOA for Node.js","directories":{},"_nodeVersion":"20.19.0","_hasShrinkwrap":false,"devDependencies":{"tape":"^5.5.2","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","jasmine-core":"^5.1.1","eslint-plugin-jasmine":"^4.1.3","jasmine-browser-runner":"^2.3.0","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.7.2-a_1748772523762_0.6123729942136888","host":"s3://npm-registry-packages-npm-production"}},"1.7.2-b":{"name":"vsoa","version":"1.7.2-b","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.7.2-b","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"b1484a0062f6e7cfaa7eac0ca67e3c26ac15d72f","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.7.2-b.tgz","fileCount":23,"integrity":"sha512-5n4ozmC7t5pXc3YJAHGj4yAhViZwzilSW5Tq8cqs2rimTx+Wpqb3cvCGsTLI/QQ5fK2roa9/ZuUWoblAVTWEgQ==","signatures":[{"sig":"MEQCIGG1/aHhcFB2vsolx1dwvYsXpA8bbsaf1elOeQfd994+AiADRnLHHG3Dzyszc9hw5jbGTNunLwLSwRyJv6EhRyX/TA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":997969},"main":"src/index.js","types":"src/index.d.ts","engines":{"node":">=12.13.0"},"gitHead":"cac3330e5c99e267dfc96b962d4d94834e5a2134","scripts":{"lint":"npx eslint src spec/**.mjs","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16 --verbose","types":"npx tsc","config":"node-gyp configure --verbose","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","postpublish":"git tag v$(jq -r .version package.json) && git push --tags","testBrowser":"jasmine-browser-runner","prepublishOnly":"npm run lint && npm run test && npm run types","pretestBrowser":"sed 's/module.exports =/export default/g' src/timer.js > spec/timer.mjs"},"_npmUser":{"name":"clarkttfu","actor":{"name":"clarkttfu","type":"user","email":"clarkttfu@gmail.com"},"email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"10.8.2","description":"VSOA for Node.js","directories":{},"_nodeVersion":"20.19.0","_hasShrinkwrap":false,"devDependencies":{"tape":"^5.9.0","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","jasmine-core":"^5.1.1","eslint-plugin-jasmine":"^4.1.3","jasmine-browser-runner":"^2.3.0","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.7.2-b_1752161471848_0.11230247253366765","host":"s3://npm-registry-packages-npm-production"}},"1.7.3":{"name":"vsoa","version":"1.7.3","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.7.3","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"45c3d622719e163bab61f098811d3eedc02798d6","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.7.3.tgz","fileCount":25,"integrity":"sha512-Jy7CyjberGecRBVCGHopqqj9SaKtxLjFlttnaxlXTW/LENPdeKgClo7/ooqqBsTUYusFjJhh6dSUPNEahM/eDg==","signatures":[{"sig":"MEUCIQCZxtW+0BfitKjeohSZh/qOdTjBJkzjE5Hb6g0aqnwyYAIgOIWvpmFvuBF+8PgkTYFyFanJxRjCj+HtzXe7qqXvucQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1179526},"main":"src/index.js","types":"src/index.d.ts","engines":{"node":">=12.13.0"},"gitHead":"f7ea6f0088a8fc3fba122cf4cb446c10c777b67b","scripts":{"lint":"npx eslint src spec/**.mjs","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16 --verbose","types":"npx tsc","config":"node-gyp configure --verbose","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","postpublish":"git tag v$(jq -r .version package.json) && git push --tags","testBrowser":"jasmine-browser-runner","prepublishOnly":"npm run lint && npm run test && npm run types","pretestBrowser":"sed 's/module.exports =/export default/g' src/timer.js > spec/timer.mjs"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"10.8.2","description":"VSOA for Node.js","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"tape":"^5.9.0","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","jasmine-core":"^5.1.1","eslint-plugin-jasmine":"^4.1.3","jasmine-browser-runner":"^2.3.0","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.7.3_1762263217548_0.7919372648116099","host":"s3://npm-registry-packages-npm-production"}},"1.7.4":{"name":"vsoa","version":"1.7.4","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.7.4","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"197fe1a132bdff56fdc91cb4eab7a71a63a26019","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.7.4.tgz","fileCount":25,"integrity":"sha512-dRT0cyKcSzSaK+bekt8+NDpue8IsCJVmZpIz6XjSlwKp0c4hVnLlVQHcm45zoyueogSj4gtJ+bOUuQydNKqixQ==","signatures":[{"sig":"MEYCIQCvh5jRMmdr2W0BLoSNq9257nnc3gm5e6EhCdsGFWGXEAIhAIi+4ZW0KDDLpYPEXl+fGG5EyEegaHUpFgiHQa6fidmO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1179824},"main":"src/index.js","types":"src/index.d.ts","engines":{"node":">=12.13.0"},"gitHead":"6455b4b183517e18293ad002770148d2a1bacbc2","scripts":{"lint":"npx eslint src spec/**.mjs","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16 --verbose","types":"npx tsc","config":"node-gyp configure --verbose","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","postpublish":"git tag v$(jq -r .version package.json) && git push --tags","testBrowser":"jasmine-browser-runner","prepublishOnly":"npm run lint && npm run test && npm run types","pretestBrowser":"sed 's/module.exports =/export default/g' src/timer.js > spec/timer.mjs"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"10.8.2","description":"VSOA for Node.js","directories":{},"_nodeVersion":"20.19.4","_hasShrinkwrap":false,"devDependencies":{"tape":"^5.9.0","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","jasmine-core":"^5.1.1","eslint-plugin-jasmine":"^4.1.3","jasmine-browser-runner":"^2.3.0","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.7.4_1762520416528_0.6764672001362744","host":"s3://npm-registry-packages-npm-production"}},"1.7.5":{"name":"vsoa","version":"1.7.5","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.7.5","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"b92fb49e7edf6638bf6508051cf05029fbfe5fcb","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.7.5.tgz","fileCount":26,"integrity":"sha512-3Zgq5/XQJf3Jyx4mWqAHXOQljWCifd2q8Z0vxRm72PqeKdCZAX4wlyfkz7u23dgJm1BuXh9J71JNpzFKftfxNQ==","signatures":[{"sig":"MEYCIQCmXkJUHzdRndrD9TBBwOJcTOUozw3eC5vrhIi9xzp/YQIhAIqZ8FxcI7YBcEYosjV5fQplBK2CBIqnK3atoQquSU/K","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1184959},"main":"src/index.js","types":"src/index.d.ts","engines":{"node":">=12.13.0"},"gitHead":"80a1c7c8ff5078c71740cafba422a4d18df0dbc8","scripts":{"lint":"npx eslint src spec/**.mjs","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16 --verbose","types":"npx tsc","config":"node-gyp configure --verbose","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","postpublish":"git tag v$(jq -r .version package.json) && git push --tags","testBrowser":"jasmine-browser-runner","prepublishOnly":"npm run lint && npm run test && npm run types","pretestBrowser":"sed 's/module.exports =/export default/g' src/timer.js > spec/timer.mjs"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"10.9.8","description":"VSOA for Node.js","directories":{},"_nodeVersion":"22.22.3","_hasShrinkwrap":false,"devDependencies":{"tape":"^5.9.0","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","jasmine-core":"^5.1.1","eslint-plugin-jasmine":"^4.1.3","jasmine-browser-runner":"^2.3.0","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.7.5_1782832439534_0.09725342899434719","host":"s3://npm-registry-packages-npm-production"}},"1.7.6":{"name":"vsoa","version":"1.7.6","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.7.6","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"be1f425c9a2f42ae3c703e3b8cb5f972ee5515e8","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.7.6.tgz","fileCount":26,"integrity":"sha512-xkBuQvAQdOmGWBd+hQS2X7SrFK+Dmfp/3+Rgfw9Oa7tiPjEtL2ElGN7ifJTmxdd9pHUjdtI7qtdrFslPPUN9bA==","signatures":[{"sig":"MEUCIQDT9vSWwFRvfhWaRfIAtLAJLZFiNA1ouIngH/L8GTKxMAIgBwqMyNSFe9YpzgdbhwMdzIv0uZfT3NeCuz//BW00se8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1185530},"main":"src/index.js","types":"src/index.d.ts","engines":{"node":">=12.13.0"},"gitHead":"6aae26de1d2c49535dab0b22174399af8627385d","scripts":{"lint":"npx eslint src spec/**.mjs","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16 --verbose","types":"npx tsc","config":"node-gyp configure --verbose","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","postpublish":"git tag v$(jq -r .version package.json) && git push --tags","testBrowser":"jasmine-browser-runner","prepublishOnly":"npm run lint && npm run test && npm run types","pretestBrowser":"sed 's/module.exports =/export default/g' src/timer.js > spec/timer.mjs"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"10.9.8","description":"VSOA for Node.js","directories":{},"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"devDependencies":{"tape":"^5.9.0","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","jasmine-core":"^5.1.1","eslint-plugin-jasmine":"^4.1.3","jasmine-browser-runner":"^2.3.0","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.7.6_1785568879007_0.8304608526585833","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"vsoa","version":"1.8.0","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.8.0","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"f82d927ba6bff5139e5d6cc1a60b9722a4af2b22","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.8.0.tgz","fileCount":26,"integrity":"sha512-TvSq8OpOTyoxgVj7pvbL6YwhCJziGH9bxgl8Pm1BwxZphO1q0j6PPC1/pyB2xVg32BKfol1SPAYFSdy4wARKxQ==","signatures":[{"sig":"MEUCIQDzb2ZEuNO+5UW6jWuJ+rAB347uzMw8b6Mq3+sd+IdRyQIgOtkRbWm1WzV6YMeYq2oGKbrtOWjb5LfNnDackCgrDPE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3701379},"main":"src/index.js","types":"src/index.d.ts","engines":{"node":">=12.13.0"},"gitHead":"35a64751529dd0f831677b7ff5b25a8a30e379f5","scripts":{"lint":"npx eslint src spec/**.mjs","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16 --verbose","types":"npx tsc","config":"node-gyp configure --verbose","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","postpublish":"git tag v$(jq -r .version package.json) && git push --tags","testBrowser":"jasmine-browser-runner","prepublishOnly":"npm run lint && npm run test && npm run types","pretestBrowser":"sed 's/module.exports =/export default/g' src/timer.js > spec/timer.mjs"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"10.9.8","description":"VSOA for Node.js","directories":{},"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"devDependencies":{"tape":"^5.9.0","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","jasmine-core":"^5.1.1","eslint-plugin-jasmine":"^4.1.3","jasmine-browser-runner":"^2.3.0","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.8.0_1785571936430_0.5442348010775193","host":"s3://npm-registry-packages-npm-production"}},"1.8.1":{"name":"vsoa","version":"1.8.1","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.8.1","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"1d34b0ea95c8eb993bbe084761ac5f0a831a6016","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.8.1.tgz","fileCount":27,"integrity":"sha512-udt4DZVq8clzGeXkIGS7MrjQM7049IOnI29NM4mxQ+5H5wTzT5K4X464/YPSHF9XI16gZioZPh1xK5q86AcXxQ==","signatures":[{"sig":"MEUCIQDFYSQvAcinkYoEv66qQN2R/ub6zetK5NYhJvlfngyW4gIgVY1ilrqjcaXnPMBC5t8B+3mSMnUzoEqEC+SzHwuQkKc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3761126},"main":"src/index.js","types":"src/index.d.ts","engines":{"node":">=12.13.0"},"gitHead":"6aaa3a43ed7a9f4931699534aecf46cf6589ed61","scripts":{"lint":"npx eslint src spec/**.mjs","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16 --verbose","types":"npx tsc","config":"node-gyp configure --verbose","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","postpublish":"git tag v$(jq -r .version package.json) && git push --tags","testBrowser":"jasmine-browser-runner","prepublishOnly":"npm run lint && npm run test && npm run types","pretestBrowser":"sed 's/module.exports =/export default/g' src/timer.js > spec/timer.mjs"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"10.9.8","description":"VSOA for Node.js","directories":{},"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"devDependencies":{"tape":"^5.9.0","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","jasmine-core":"^5.1.1","eslint-plugin-jasmine":"^4.1.3","jasmine-browser-runner":"^2.3.0","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.8.1_1785748413608_0.45683369906479343","host":"s3://npm-registry-packages-npm-production"}},"1.8.2":{"name":"vsoa","version":"1.8.2","keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","_id":"vsoa@1.8.2","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"dist":{"shasum":"30528355dce397c0bf0bc122ba9bcc0fa097eb5b","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.8.2.tgz","fileCount":26,"integrity":"sha512-Mciz7AA5MuDXI1Q7Bv8Ju0w8T10fuxwlNLAOnJo3Np5BCrG6mM15zHdNX5yoOwbMmzuhxg22jBfr+WD62uc3wg==","signatures":[{"sig":"MEYCIQD8fCtnLAv1azJE1g3eg5yUxtLc+MjPAo5v0fetqFneiAIhAKDATYlPv7wS0+Jvk0AbnNIDuC2L73Aqb8FvHS0pZkCw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3765308},"main":"src/index.js","types":"src/index.d.ts","engines":{"node":">=12.13.0"},"gitHead":"8ca0b4bcde3b521ebd8fcd55972bc26b9fd668dd","scripts":{"lint":"npx eslint src spec/**.mjs","test":"tape test/**/test-*.js | tap-spec","clean":"node-gyp clean","debug":"node-gyp build --debug -j16 --verbose","types":"npx tsc","config":"node-gyp configure --verbose","install":"echo","release":"node-gyp build","predebug":"npm run config","prerelease":"npm run config","postpublish":"git tag v$(jq -r .version package.json) && git push --tags","testBrowser":"jasmine-browser-runner","prepublishOnly":"npm run lint && npm run test && npm run types","pretestBrowser":"sed 's/module.exports =/export default/g' src/timer.js > spec/timer.mjs"},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"repository":{"type":"git"},"_npmVersion":"10.9.8","description":"VSOA for Node.js","directories":{},"_nodeVersion":"22.23.1","_hasShrinkwrap":false,"devDependencies":{"tape":"^5.9.0","eslint":"^8.11.0","node-gyp":"^9.0.0","tap-spec":"^5.0.0","typescript":"^4.7.2","@types/node":"^14.18.18","jasmine-core":"^5.1.1","eslint-plugin-jasmine":"^4.1.3","jasmine-browser-runner":"^2.3.0","@typescript-eslint/parser":"^5.26.0","@typescript-eslint/eslint-plugin":"^5.26.0"},"_npmOperationalInternal":{"tmp":"tmp/vsoa_1.8.2_1785923284910_0.4424886035683815","host":"s3://npm-registry-packages-npm-production"}},"1.8.3":{"name":"vsoa","version":"1.8.3","description":"VSOA for Node.js","main":"src/index.js","scripts":{"install":"echo","test":"tape test/**/test-*.js | tap-spec","pretestBrowser":"sed 's/module.exports =/export default/g' src/timer.js > spec/timer.mjs","testBrowser":"jasmine-browser-runner","lint":"npx eslint src spec/**.mjs","types":"npx tsc","prepublishOnly":"npm run lint && npm run test && npm run types","postpublish":"git tag v$(jq -r .version package.json) && git push --tags","clean":"node-gyp clean","config":"node-gyp configure --verbose","debug":"node-gyp build --debug -j16 --verbose","predebug":"npm run config","release":"node-gyp build","prerelease":"npm run config"},"repository":{"type":"git"},"keywords":["vsoa"],"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","engines":{"node":">=12.13.0"},"types":"src/index.d.ts","devDependencies":{"@types/node":"^14.18.18","@typescript-eslint/eslint-plugin":"^5.26.0","@typescript-eslint/parser":"^5.26.0","eslint":"^8.11.0","eslint-plugin-jasmine":"^4.1.3","jasmine-browser-runner":"^2.3.0","jasmine-core":"^5.1.1","node-gyp":"^9.0.0","tap-spec":"^5.0.0","tape":"^5.9.0","typescript":"^4.7.2"},"_id":"vsoa@1.8.3","gitHead":"6a8a8b891778bb3c7014797a7e3bed43d26d221c","_nodeVersion":"22.23.1","_npmVersion":"10.9.8","dist":{"integrity":"sha512-yO/ZWf8PzQsHAKeh/+8ElF4LejD3JN/NvlSS8elrJtSF2n28Ep2ifbmA29AYHlWks4NxSBxXHq74bJF+VwVTsg==","shasum":"b98b03ab0dc9fa33b983b919e7d35fd1047d8bb7","tarball":"https://registry.npmjs.org/vsoa/-/vsoa-1.8.3.tgz","fileCount":26,"unpackedSize":3729724,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGcVLuOH93QS8O38Z5NYkuaEnYRoJ6U+iLJm9A1XLbdYAiAiPkHuXssr/84I0vS/MaHb5+o/HioV2IXVi3UsbO9fUw=="}]},"_npmUser":{"name":"clarkttfu","email":"clarkttfu@gmail.com"},"directories":{},"maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/vsoa_1.8.3_1787202301482_0.814153002378361"},"_hasShrinkwrap":false}},"time":{"created":"2022-04-12T15:40:34.896Z","modified":"2026-08-20T05:05:01.837Z","0.1.0":"2022-04-10T14:02:03.648Z","0.2.0":"2022-04-12T15:40:35.058Z","0.2.1":"2022-04-14T14:13:06.895Z","0.2.2":"2022-04-14T15:09:04.076Z","0.2.3":"2022-04-22T06:42:40.637Z","0.2.4":"2022-04-24T10:53:59.386Z","0.2.4-b":"2022-05-30T13:23:14.285Z","0.2.4-c":"2022-05-30T13:36:34.506Z","0.2.5":"2022-06-06T08:11:03.994Z","0.2.6":"2022-06-20T15:48:45.902Z","0.2.7":"2022-06-21T15:08:31.206Z","0.2.7-b":"2022-07-07T11:33:44.818Z","0.2.7-c":"2022-07-27T04:12:30.907Z","0.2.7-d":"2022-08-12T12:47:12.405Z","0.3.2":"2022-08-23T02:02:58.921Z","0.3.2-b":"2022-08-23T02:35:32.200Z","0.3.4":"2022-08-25T07:11:08.724Z","0.3.4-b":"2022-08-30T12:55:28.602Z","1.0.0":"2022-09-08T04:12:44.818Z","1.0.2":"2022-10-24T11:54:58.102Z","1.0.2-b":"2022-11-10T14:37:14.220Z","1.0.2-d":"2022-12-19T14:44:40.822Z","1.0.2-e":"2022-12-28T09:03:35.960Z","1.0.6":"2023-01-04T03:21:32.120Z","1.0.7":"2023-02-10T11:10:13.195Z","1.1.0":"2023-02-10T14:42:48.282Z","1.2.2":"2023-03-04T09:18:40.251Z","1.2.3":"2023-03-15T05:58:33.479Z","1.2.4":"2023-04-10T10:49:54.410Z","1.2.5":"2023-04-11T08:21:25.688Z","1.4.1":"2023-05-19T03:35:03.360Z","1.4.3":"2023-05-28T10:10:20.383Z","1.4.4":"2023-06-03T10:07:56.402Z","1.4.4-b":"2023-06-05T14:28:38.079Z","1.4.4-c":"2023-06-05T15:22:25.241Z","1.4.4-d":"2023-07-03T08:37:57.965Z","1.5.0":"2023-09-16T15:24:53.969Z","1.5.1":"2023-11-25T16:10:49.400Z","1.6.7":"2023-12-26T10:32:15.231Z","1.6.8":"2024-01-03T11:15:04.058Z","1.6.8-a":"2024-01-03T11:20:50.076Z","1.6.8-b":"2024-01-18T13:45:44.767Z","1.6.8-c":"2024-04-08T13:00:23.030Z","1.7.0":"2024-06-20T01:27:08.836Z","1.7.0-b":"2024-07-02T08:08:07.626Z","1.7.1":"2024-07-03T13:58:33.834Z","1.7.1-b":"2024-07-04T09:53:42.010Z","1.7.1-c":"2024-07-09T14:37:21.004Z","1.7.1-d":"2024-08-13T14:42:27.360Z","1.7.2-a":"2025-06-01T10:08:43.995Z","1.7.2-b":"2025-07-10T15:31:12.164Z","1.7.3":"2025-11-04T13:33:37.800Z","1.7.4":"2025-11-07T13:00:16.818Z","1.7.5":"2026-06-30T15:13:59.715Z","1.7.6":"2026-08-01T07:21:19.249Z","1.8.0":"2026-08-01T08:12:16.627Z","1.8.1":"2026-08-03T09:13:33.786Z","1.8.2":"2026-08-05T09:48:05.087Z","1.8.3":"2026-08-20T05:05:01.694Z"},"author":{"name":"futongtang@acoinfo.com"},"license":"Apache-2.0","keywords":["vsoa"],"repository":{"type":"git"},"description":"VSOA for Node.js","maintainers":[{"name":"clarkttfu","email":"clarkttfu@gmail.com"}],"readme":"# Overview\nVSOA is the abbreviation of Vehicle SOA presented by ACOINFO, VSOA provides a reliable, Real-Time SOA (Service Oriented Architecture) framework, this framework has multi-language and multi-environment implementation, developers can use this framework to build a distributed service model. \n\nVSOA includes the following features:\n+ Support resource tagging of unified URL\n+ Support URL matching subscribe and publish model\n+ Support Real-Time Remote Procedure Call\n+ Support parallel multiple command sequences\n+ Support reliable and unreliable data publishing and datagram\n+ Support multi-channel full-duplex high speed parallel data stream\n+ Support network QoS control\n+ Easily implement server fault-tolerant design\n+ Support multiple language bindings\n\nVSOA is a dual-channel communication protocol, using both **TCP** and **UDP**, among which the API marked with `quick` uses the **UDP** channel. The quick channel is used for high-frequency data update channels. Due to the high data update frequency, the requirements for communication reliability are not strict. It should be noted that **UDP** channel cannot pass through NAT network, so please do not use quick channel in NAT network.\n\nThe total url and payload length of the VSOA data packet cannot exceed **256KBytes - 20Bytes** and **65507Bytes - 20Bytes** on quick channel, so if you need to send a large amount of data, you can use the VSOA data stream.\n\n## Get started\n\n### VSOA Supported platforms\n\n|        | SylixOS | Linux | Windows |  Mac\n|     -- | :--:    | :--:  | :--:    | :--:\nx86      | Y       | Y     | Y       | -\nx64      | Y       | Y     | Y       | Y\nARM      | Y       | Y     | -       | -\nARM64    | Y       | Y     | -       | Y\nLoong64  | Y       | Y     | -       | -\n\nInstall `vsoa` module using npm:\n``` shell\nnpm i vsoa\n```\n\nImport the `vsoa` module.\n``` javascript\nvar vsoa = require('vsoa');\n```\n\n# API\n\n## Constants\n\nConstant | Description\n---      |:--\nvsoa.AF_INET (2) | IPv4 Network Address domain\nvsoa.AF_INET6 (10) | IPv6 Network Address domain\nvsoa.method.GET (0) | VSOA Get request \nvsoa.method.SET (1) | VSOA Set request \n\n## VSOA Server Class\n\n### new vsoa.Server(opt)\n+ `opt` *{Object}* Server configuration.\n+ Returns: *{Object}* VSOA server object.\n\nTo create a VSOA server, `opt` must contain the following members:\n+ `info` *{Object}* Server information description.\n  + `name` *{String}* Server name.\n\nIf the server requires a connection password, `opt` needs to contain the following members:\n+ `passwd` *{String}* Connection password. Optional.\n\nIf the server does not need to automatically parse the JSON in the payload, you can set the following options:\n+ `rawParam` *{Boolean}* Whether to automatically parse the JSON in the payload. Only valid for `RPC`, `PUBLISH` and `DATAGRAM` packet. **default: false**.\n\nIf JSON serialization is supposed to support `NaN` and `Infinity`, set the option:\n+ `yyjson` *{Boolean}* Whether to use yyjson to parse and to stringify JSON with `NaN` and `Infinity` support. **default: false**.\n\n#### Example\n``` javascript\nvar server = new vsoa.Server({ info: { name: 'Test server' } });\n```\n\n## VSOA Server Object\nThe VSOA server object inherits from `EventEmitter`, and the `on()` method can be used to add processing callbacks for different services.\n\n### server.close([removeListeners], [callback])\n+ `removeListeners` *{Boolean}* Remove all listeners **default: false**\n+ `callback` *{Function}* Called when the server is closed. Optional.\n\nClose VSOA server.\n\n### server.start(saddr[, tlsOpt][, callback])\n+ `saddr` *{Object}* Server socket address.\n+ `tlsOpt` *{Object}* TLS security configuration. Optional.\n+ `callback` *{Function}* Called when the server is started. Optional.\n\n`saddr` is the server address, it has following members:\n+ `domain` *{Integer}* Address domain, either `vsoa.AF_INET` or `vsoa.AF_INET6`.\n+ `addr` *{String}* IP address.\n+ `port` *{Integer}* TCP port.\n+ `backlog` *{Integer}* TCP server backlog. Optional.\n\nStart the server, if the startup fails, callback will be invoked with error. If the server is a secure connection server, you need to set the `tlsOpt` parameter, please refer to the `tls` module description.\n\n#### Example\n``` javascript\nvar server = new vsoa.Server({\n  info: 'Node.js VSOA server',\n  passwd: '123456'\n});\nserver.start({ domain: vsoa.AF_INET, port: 3002 });\n```\n\nIf the port bound at start is `0`, the system will automatically assign a port. At this time, the VSOA server TCP and UDP ports are different, and the client needs to use version `1.0.1` or later to support.\n\n### server.count([link])\n+ `link` *{Boolean}* Those without successful password verification will also be counted.\n+ Returns: *{Integer}* Current clients count.\n\nGet the number of connected clients.\n\n### server.address()\n+ Returns: *{Object}* Server address.\n\nGet the current server TCP / TLS address, the address options:\n+ `domain` *{Integer}* Address domain, it can be `vsoa.AF_INET` or `vsoa.AF_INET6`.\n+ `addr` *{String}* IP address.\n+ `port` *{Integer}* TCP port.\n\n### server.onclient\n+ *{Function}*\n\nThis function will be called when a client is connected or disconnected. The arguments of this callback function are as follows:\n+ `cli` *{Object}* Remote client.\n+ `connect` *{Boolean}* Connect or disconnect.\n\n#### Example\n``` javascript\nvar server = new vsoa.Server(...);\n\nserver.onclient = function(cli, connect) {\n  if (connect) {\n    console.log('New client connected!', cli.address().addr);\n  } else {\n    console.log('Client lost!', cli.address().addr);\n  }\n}\n```\n\n### server.ondata\n+ *{Function}*\n\nThis callback is called when the server receives a **DATAGRAM** type packet. The arguments of this callback function are as follows:\n+ `cli` *{Object}* Remote client.\n+ `url` *{String}* This datagram URL.\n+ `payload` *{Object}* This datagram payload data.\n+ `quick` *{Boolean}* Whether this datagram comes from the quick channel.\n\nThe `payload` is the datagram payload, and the `payload` contains the following members:\n+ `param` *{Object | String}* Parameters of this datagram. Optional.\n+ `data` *{Buffer}* Data for this datagram. Optional.\n\n#### Example\n``` javascript\nvar server = new vsoa.Server(...);\n\nserver.ondata = function(cli, url, payload) {\n  console.log(url, JSON.stringify(payload.param));\n}\n```\n\n**NOTICE**: Usually **DATAGRAM** type data is used to transmit some data that does not require confirmation, for example, VSOA's **DATAGRAM** data packets can be used to build a VPN network.\n\n### server.publish(url[, payload][, quick])\n+ `url` *{String}* This event URL.\n+ `payload` *{Object}* This message payload data.\n+ `quick` *{Boolean}* Whether to use the quick publish channel. **default: false**.\n\nPublish a message, all clients subscribed to this URL will receive this message. If a large number of high-frequency releases are required and delivery is not guaranteed, the `quick` parameter can be set to `true`.\n\nThe `payload` contains the following members:\n+ `param` *{Object | String}* Parameters of this RPC request. Optional.\n+ `data` *{Buffer}* Data for this publish. Optional.\n+ `offset` *{Integer}* If `data` exists, this member indicates the offset of `data`. Optional.\n+ `length` *{Integer}* If `data` exists, this member indicates the length of `data`. Optional.\n\nURL matching: URL uses `'/'` as a separator, for example: `'/a/b/c'`. If the client subscribes to `'/a/'`, and server publishes `'/a'`, `'/a/b'` or `'/a/b/c'` message, they will be all received by the client.\n\n#### Example\n``` javascript\nvar server = new vsoa.Server(...);\n\nserver.publish('/a/b/c');\nserver.publish('/a/b/c', { param: { hello: 'hello' } });\nserver.publish('/a/b/c', { param: { hello: 'hello' }, data: new Buffer([1, 2, 3]) });\n```\n\nIf a large number of high-frequency publish are required and delivery is not guaranteed, quick publish can be used. But the quick type publish cannot traverse a NAT network, so the quick publish interface is not allowed in a NAT network. quick publish uses a different channel than publish, quick publish does not guarantee the order of arrival.\n\n## server.isSubscribed(url)\n+ `url` *{String}* URL.\n+ Returns: *{Boolean}* Whether the specified URL is subscribed by clients.\n\nWhether the specified URL is subscribed. When the return value is `true`, it means that the specified URL is subscribed by at least one client.\n\n### server.syncer(cli, request, payload, target[, setter])\n+ `cli` *{Object}* Remote client object.\n+ `request` *{Object}* Remote RPC request.\n  + `url` *{String}* Request URL.\n  + `seqno` *{Integer}* Command sequence number.\n  + `method` *{Integer}* Operation method.\n+ `payload` *{Object}* Request payload.\n+ `target` *{Object}* The target object that needs data synchronization.\n+ `setter` *{Function}* Do parameter checking and set target's callback function.\n  + `param` *{Object}* Request `payload.param`.\n  + `payload` *{Object}* Request payload.\n  + Returns: *{Integer}* Returns `0` for successful settings, other values represent errors.\n\nThis function helps VSOA server to synchronize data and reduce data synchronization code. If request method is get, this function will automatically reply to the RPC request. If request method is set, this function will check whether the `setter` is valid. If the `setter` is valid, the `setter` is responsible for updating the `target`, and if the `setter` is invalid, it will be updated directly with `payload.param` target, this function will automatically reply to the RPC remote client and generate the corresponding publish operation.\n\nThe `payload` is the RPC request payload, and the `payload` contains the following members:\n+ `param` *{Object | String}* Parameters of this RPC request. Optional.\n+ `data` *{Buffer}* Data for this RPC request. Optional.\n\n#### Example\n``` javascript\nvar server = new vsoa.Server(...);\nvar data = { foo: 0 };\n\nserver.on('/foo', function(cli, request, payload) {\n  server.syncer(cli, request, payload, data, param => {\n    if (typeof param.foo === 'number') {\n      data.foo = param.foo;\n      return vsoa.code.SUCCESS;\n    } else {\n      return vsoa.code.ARGUMENTS;\n    }\n  });\n});\n```\n\n## server.sendTimeout(timeout[, curclis])\n+ `timeout` *{Integer}* Send timeout.\n+ `curclis` *{Boolean}* Whether to set the currently connected client at the same time.\n\nWhen the server is created, it will use the default send timeout (`100` ms), this function is used to modify this setting, all clients will use this setting by default.\n\n## server.working\n+ *{Boolean}*\n\nGet whether the current server is working.\n\n### server.createStream([timeout])\n+ `timeout` *{Integer}* Timeout time for waiting for client stream connection, **default: 10000ms**.\n+ Returns: *{Stream.Duplex}* Duplex stream.\n\nCreate a stream to wait for the client stream to connect, this object has inherited from `Stream.Duplex`, you can refer to the `Stream` related documents for operation.\n\nThe members of this stream object extending `Stream.Duplex` object are as follows:\n+ `close` *{Function}* Close this stream.\n+ `tunid` *{Integer}* This stream tunnel id, The client stream can connect to this server stream through this `tunid`.\n\nIn addition to the events defined by the standard `Stream.Duplex`, this object also generates the following additional events:\n+ `'timeout'` When the server stream does not receive the client stream connection request within the specified timeout period, the `'timeout'` event will be generated at this time, and the stream will be automatically closed at the same time.\n+ `'connect'` This event is generated when the client stream successfully connects with the current stream.\n\n#### Example\n``` javascript\nvar server = new vsoa.Server(...);\nvar buffer = new Buffer([0, 1, 2, 3, 4, 5, 6]);\n\nserver.on('/a/b/c', function(cli, request, payload) {\n  var stream = server.createStream();\n  cli.reply(0, request.seqno, stream.tunid);\n\n  stream.on('connect', () => {\n    stream.write(buffer);\n    stream.close();\n  });\n\n  stream.on('timeout', () => {\n    console.log('No client connect stream!');\n  });\n});\n```\n\n## VSOA Server Events\nThe VSOA server object inherits from `EventEmitter`, and the `on()` method can be used to add processing callbacks for different services.\n\n### Client Command URL\n+ `cli` *{Object}* Remote client.\n+ `request` *{Object}* Remote client request.\n  + `url` *{String}* Request URL.\n  + `seqno` *{Integer}* Command sequence number.\n  + `method` *{Integer}* Operation method.\n+ `payload` *{Object}* Command payload. Optional.\n  + `param` *{Object | String}* Payload parameter. Optional.\n  + `data` *{Buffer}* Payload data. Optional.\n\nWhen a remote client generates an RPC request, the server will receive the corresponding request event, usually the event name is the requested URL matched.\n\nPossible values of `method` include `vsoa.method.GET` (`0`) and `vsoa.method.SET` (`1`).\n\nThe server can reply to RPC calls through the `cli.reply` function.\n\n#### Example\n``` javascript\nvar server = new vsoa.Server(...);\n\n// Echo payload\nserver.on('/echo', function(cli, request, payload) {\n  cli.reply(0, request.seqno, payload);\n});\n\n// Strictly match '/a/b/c' path\nserver.on('/a/b/c', function(cli, request, payload) {\n  cli.reply(0, request.seqno, payload);\n});\n\n// Match '/a/b/c' and '/a/b/c/...'\nserver.on('/a/b/c/', function(cli, request, payload) {\n  cli.reply(0, request.seqno, payload);\n});\n\n// Default match\nserver.on('/', function(cli, request, payload) {\n  cli.reply(0, request.seqno, payload);\n});\n\n// Delay echo\nserver.on('/delayecho', function(cli, request, payload) {\n  setTimeout(function() {\n    cli.reply(0, request.seqno, payload);\n  }, 1000);\n});\n```\n\n#### RPC URL match rules\n\nPATH|RPC match rules\n:--|:--\n`\"/\"`|Default URL listener.\n`\"/a/b/c\"`|Only handle `\"/a/b/c\"` path call.\n`\"/a/b/c/\"`|Handle `\"/a/b/c\"` and `\"/a/b/c/...\"` all path calls.\n\n**NOTICE**: If both `\"/a/b/c\"` and `\"/a/b/c/\"` RPC handler are present, When the client makes a `\"/a/b/c\"` RPC call, `\"/a/b/c\"` handler is matched before `\"/a/b/c/\"`.\n\n## VSOA Remote Client Object\n\n## cli.authed\n+ *{Boolean}*\n\nWhether the client is authorized. When a client connects to the server and has passed the password verification, `cli.authed` is `true`. At this time, the client can receive the publish message. If the server wants to perform independent client authorization , you can set `cli.authed` to `false` in the `onclient` callback, then the client cannot receive the publish message until the client passes the independent authorization program designed by the server.\n\n### Example\n``` javascript\nvar server = new vsoa.Server(...);\n\nserver.onclient = function(cli, connect) {\n\tif (connect) {\n\t\tcli.authed = false; // We need independent authorization.\n\t}\n};\n\nserver.on('/auth', function(cli, request, payload) {\n\tif (payload && /* Independent Authorization Verify */) {\n\t\tcli.authed = true;\n\t\t/* The authorization verification is successful, \n\t\t * and the server's publish information can be received */\n\t\tcli.reply(0, request.seqno);\n\t} else {\n\t\tcli.reply(AUTH_ERROR_CODE, request.seqno);\n\t}\n});\n```\n\nThis feature is available in VSOA 1.0.7 and above.\n\n### cli.close()\n\nClose this remote client connection.\n\n### cli.address()\n+ Returns: *{Object}* Remote client address.\n\nGet this remote client address object, which contains:\n+ `domain` *{Integer}* Address domain, it can be `vsoa.AF_INET` or `vsoa.AF_INET6`.\n+ `addr` *{String}* IP address.\n+ `port` *{Integer}* TCP port.\n\n### cli.isSubscribed(url)\n+ `url` *{String}* URL.\n+ Returns: *{Boolean}* Whether the specified URL is subscribed by this client.\n\nWhether the specified URL is subscribed.\n\n### cli.reply(code, seqno[, payload][, tunid])\n+ `code` *{Integer}* Return status code.\n+ `seqno` *{Integer}* Command sequence number.\n+ `payload` *{Object}* This reply payload data.\n  + `param` *{Object | String}* Parameters of this message. Optional.\n  + `data` *{Buffer}* Data for this message. Optional.\n  + `offset` *{Integer}* If `data` exists, this member indicates the offset of `data`. Optional.\n  + `length` *{Integer}* If `data` exists, this member indicates the length of `data`. Optional.\n+ `tunid` *{Integer}* Server tunnel stream id.\n\nServer RPC reply, The valid value of `code` is `0` - `255`, **where `0` means success**, and other values mean failure, where `vsoa.code` contains the following failure values, and the user-defined failure value is recommended to be `128` ~ `254`.\n\nStatus Code|Value\n---|:--:\n`vsoa.code.SUCCESS`|0\n`vsoa.code.PASSWORD`|1\n`vsoa.code.ARGUMENTS`|2\n`vsoa.code.INVALID_URL`|3\n`vsoa.code.NO_RESPONDING`|4\n`vsoa.code.NO_PERMISSIONS`|5\n`vsoa.code.NO_MEMORY`|6\n\n**NOTICE**: `seqno` is very important, it must be consistent with the `seqno` of the RPC request.\n\n### cli.datagram(url, payload[, quick])\n+ `url` *{String}* This datagram URL.\n+ `payload` *{Object}* This reply payload data.\n  + `param` *{Object | String}* Parameters of this datagram. Optional.\n  + `data` *{Buffer}* Data for this datagram. Optional.\n  + `offset` *{Integer}* If `data` exists, this member indicates the offset of `data`. Optional.\n  + `length` *{Integer}* If `data` exists, this member indicates the length of `data`. Optional.\n+ `quick` *{Boolean}* Whether to use the quick channel. **default: false**.\n\nSend a DATAGRAM packet to the client.\n\n**NOTICE**: Usually **DATAGRAM** type data is used to transmit some data that does not require confirmation, for example, VSOA's **DATAGRAM** data packets can be used to build a VPN network.\n\n### cli.setKeepAlive(idle)\n+ `idle` *{Integer}* Idle time in milliseconds.\n\nSet a connection keep alive timer for this remote client, when it fails 3 times in a row, the client connection is considered disconnected.\n\n#### Example\n``` javascript\nvar server = new vsoa.Server(...);\n\nserver.onclient = function(cli, connect) {\n  if (connect) {\n    cli.setKeepAlive(5000);\n  }\n}\n```\n\n### cli.priority(prio)\n+ `prio` *{Integer}* New priority.\n\nSet the specified remote client priority, the allowed priority range is `0` ~ `5`, `0` is the lowest priority, `5` is the highest priority, and the initial priority of each client is `0`. The priority controls the order in which the publish is sent, and the underlying network packet QoS, please set according to the situation.\n\n#### Example\n``` javascript\nvar server = new vsoa.Server(...);\n\nserver.onclient = function(cli, connect) {\n  if (connect) {\n    // If this client is an important client.\n    cli.priority(3);\n  }\n}\n```\n\n### cli.sendTimeout(timeout)\n+ `timeout` *{Integer | Undefined}* Set network send timeout(ms).\n\nSet the client packet sending timeout, the default is server global send timeout setting (`500` ms) in JSRE. NodeJS does not have a send timeout setting by default.\n\n## VSOA Remote Client Event\nThe VSOA remote client object inherits from `EventEmitter`, and the `on()` method can be used to listen the following event.\n\n### subscribe\n+ `url` *{String | Array}* Subscribe URL.\n\nThis client is subscribed to the specified URL event.\n\n### unsubscribe\n+ `url` *{String | Array | Null}* Unsubscribe URL.\n\nThis client is unsubscribed to the specified URL event. If the URL is `null`, it means unsubscribe from all events.\n\n## VSOA Client Class\n\n### new vsoa.Client([opt])\n+ `opt` *{Object}* Client options.\n\nCreate a VSOA client, if you need a connection password, you can specify it in `opt.passwd`.\n\n`opt` can also contain the following members:\n+ `pingInterval` *{Integer}* Ping interval time, must be greater than **10ms**. Optional.\n+ `pingTimeout` *{Integer}* Ping timeout, must be less or equal than `pingInterval` **default: same as `pingInterval`**. Optional.\n+ `pingLost` *{Integer}* How many consecutive ping timeouts will drop the connection. **default: 3**.\n+ `pingTurbo` *{Integer}* Fast ping period.  must be less or equal than `pingInterval`, `pingInterval` should be an integer multiple of `pingTurbo`. Optional.\n\nIf you set `pingInterval`, after the client connects to the server, it will immediately start periodic ping operations, and always check the communication link and whether the server is normal.\n\nIf the client does not need to automatically parse the JSON in the payload, you can set the following options:\n+ `rawParam` *{Boolean}* Whether to automatically parse the JSON in the payload. Only valid for `RPC`, `PUBLISH` and `DATAGRAM` packet. **default: false**.\n\nIf JSON serialization is supposed to support `NaN` and `Infinity`, set the option:\n+ `yyjson` *{Boolean}* Whether to use yyjson to parse and to stringify JSON with `NaN` and `Infinity` support. **default: false**.\n\n#### Example\n``` javascript\nvar client1 = new vsoa.Client();\nvar client2 = new vsoa.Client({ passwd: '123456' });\nvar client3 = new vsoa.Client({ passwd: '123456', pingInterval: 5000, pingTimeout: 3000, pingLost: 5 });\n```\n\nWhen there is an RPC call pending, and if there is data packet loss, and the client and server need to do their best to perform TCP fast retransmission at this time, you can set this `pingTurbo` parameter, the minimum value is 25ms. `0` means disable turbo ping.\n\n### Example\n``` javascript\nvar client4 = new vsoa.Client({ passwd: '123456', pingInterval: 5000, pingTimeout: 3000, pingLost: 5, `pingTurbo`: 200 });\n```\n\n## VSOA Client Object\n### client.connect(saddr[, callback][, tlsOpt][, timeout])\n+ `saddr` *{Object}* Server socket address.\n+ `callback` *{Function}* Connection result callback function. Optional.\n  + `error` *{Error}* Specify error message when connection error.\n  + `info` *{Object | String}* Server information obtained when the connection is successful.\n+ `tlsOpt` *{Object}* TLS security configuration. Optional.\n+ `timeout` *{Integer}* Connection timeout. **default: 10000ms**.\n\nConnect to the specified VSOA server.\n\n`saddr` is the server address, it needs to contain the following members:\n+ `domain` *{Integer}* Address domain, it can be `vsoa.AF_INET` or `vsoa.AF_INET6`.\n+ `addr` *{String}* IP address.\n+ `port` *{Integer}* TCP port.\n\nIf the server is a secure connection server, you need to set the `tlsOpt` parameter, `tlsOpt` includes following items:\n\n+ `rejectUnauthorized` *{Boolean}* Whether the server certificate should be verified against the list of supplied CAs. **default: false**.\n+ `ca` *{String}* Trusted CA certificates chain. **default: undefined**.\n+ `server` *{String}* Set the server host name (usually is the server domain name) to verify received server certificate. **default: undefined**.\n+ Other [Node.js TLS options](https://nodejs.org/api/tls.html#tls_tls_createserver_options_secureconnectionlistener).\n\nIf you need authentication between the server and the client, you can specify the client certificate and private key through the following members of `opt`:\n  + `cert` *{String}* Client certificate.\n  + `key` *{String}* Private key of client certificate.\n  + `passwd` *{String}* Private key password. **default: no password**.\n\n#### Example\n``` javascript\nvar client = new vsoa.Client({ passwd: '123456' });\n\nclient.connect({\n  domain: vsoa.AF_INET,\n  addr: '127.0.0.1', port: 3002\n}, function(error, info) {\n  if (error) {\n    console.error('Connect error:', error);\n    if (error.status) {\n      console.error('Error status code:', error.status);\n    }\n  } else {\n    console.log('Connect OK server info:', JSON.stringify(info));\n  }\n});\n```\n\n### client.connect(url[, callback][, tlsOpt][, timeout])\n+ `url` *{String}* Server URL.\n+ `callback` *{Function}* Connection result callback function.\n  + `error` *{Error}* Specify error message when connection error.\n  + `info` *{Object | String}* Server information obtained when the connection is successful.\n+ `tlsOpt` *{Object}* TLS security configuration.\n+ `timeout` *{Integer}* Connection timeout. **default: 10000ms**.\n\nConnect to the specified VSOA server.\n\n#### Example\n``` javascript\nvar client = new vsoa.Client({ passwd: '123456' });\n\nclient.connect('vsoa://127.0.0.1:3002', (error, info) => {\n  if (error) {\n    console.warn('Connect error:', error.status);\n  } else {\n    console.log('Connect OK server info:', JSON.stringify(info));\n  }\n});\n```\n\n### client.close()\n\nClose the current client. After this client is closed, it is allowed to call the `client.connect` method to reconnect to the server.\n\n### client.ping([callback[, timeout]])\n+ `callback` *{Function}* Ping reply callback.\n  + `error` *{Error}* If an error occurs, specify the error message and error status.\n+ `timeout` *{Integer}* Response timeout. **default: 60000ms**.\n\nUse Ping / Echo mechanism to check whether the server connection is normal.\n\n#### Example\n``` javascript\nclient.ping(function(error) {\n  if (error) {\n    // connection lost, reconnect...\n  }\n});\n```\n\nUnder normal circumstances, TCP connection disconnection can be obtained by listening to the client's `'error'` event, and periodic Ping operations can detect physical connection failure errors.\n\n### client.subscribe(url[, callback[, timeout]])\n+ `url` *{String | Array}* Events that need to be subscribed.\n+ `callback` *{Function}* Subscription results.\n  + `error` *{Error}* If there is an error, indicate the error message and error status.\n+ `timeout` Timeout. **default: 60000ms**.\n\nSubscribe to the specified event (URL), when the server sends the corresponding event, the Client can receive the event.\n\n`url` indicates the event, VSOA event matching is prefix matching, for example, when the client subscribes to the `'/a/b/'` event, then the `'/a/b'` or `'/a/b/c'` event can be received.\n\n#### Example\n``` javascript\nclient.on('message', function(url, payload) {\n  console.log('Received URL:', url, JSON.stringify(payload));\n});\n\n// Single subscription\nclient.subscribe('/a', function(error) {\n  if (error) {\n    console.error('Subscribe error', error);\n  }\n});\n\n// Multi subscription\nclient.subscribe(['/a', '/b', '/c'], function(error) {\n\tif (error) {\n\t\tconsole.error('Subscribe error', error);\n\t}\n});\n```\n\n#### Subscribe URL match rules\n\nPATH|Subscribe match rules\n:--|:--\n`\"/\"`|Catch all publish message.\n`\"/a/b/c\"`|Only catch `\"/a/b/c\"` publish message.\n`\"/a/b/c/\"`|Catch `\"/a/b/c\"` and `\"/a/b/c/...\"` all publish message.\n\n### client.unsubscribe([url[, callback[, timeout]]])\n+ `url` *{String | Array | Null}* Events that need to be unsubscribed.\n+ `callback` *{Function}* Unsubscription results.\n  + `error` *{Error}* If there is an error, indicate the error message and error status.\n+ `timeout` Timeout. **default: 60000ms**.\n\nUnsubscribe the specified event, if `url` is `null`, unsubscribe all events.\n\n### client.call(url[, opt[, payload]][, callback[, timeout]])\n+ `url` *{String}* RPC command url.\n+ `opt` *{Object}* RPC options.\n  + `method` *{Integer}* RPC method. **default: vsoa.method.GET**.\n+ `payload` *{Object}* RPC payload. Optional.\n+ `callback` *{Function}* RPC callback function.\n  + `error` *{Error}* If there is an error, indicate the error message and error status.\n  + `payload` *{Object}* Server reply payload. Optional.\n  + `tunid` *{Integer}* Server reply tunnel stream id. Optional.\n+ `timeout` *{Integer}* Timeout. **default: 60000ms**.\n\nMake an RPC call. The value of `opt.method` is `vsoa.method.GET` or `vsoa.method.SET`. Version 1.5.0 or above supports string type, and the value is `'SET'` or `'GET'`.\n\nThe `payload` is the message payload, and the `payload` contains the following members:\n+ `param` *{Object | String}* Parameters of this message. Optional.\n+ `data` *{Buffer}* Data for this message. Optional.\n+ `offset` *{Integer}* If `data` exists, this member indicates the offset of `data`. Optional.\n+ `length` *{Integer}* If `data` exists, this member indicates the length of `data`. Optional.\n\n#### Example\n+ Simple call\n\n``` javascript\nclient.call('/a/b/c', function(error) {\n  if (error) {\n    console.error('RPC call error:', error);\n    if (error.status) {\n      console.error('Error status code:', error.status);\n    }\n  }\n});\n```\n+ Setting\n\n``` javascript\nclient.call('/a/b/c', { method: vsoa.method.SET }, {\n  param: { hello: 'hello' }\n}, function(error) {\n  if (error) {\n    console.error('RPC call error:', error);\n    if (error.status) {\n      console.error('Error status code:', error.status);\n    }\n  }\n});\n```\n+ Get stream data\n\n``` javascript\nclient.call('/a/b/c', function(error, payload, tunid) {\n  if (tunid) {\n    var stream = client.createStream(tunid);\n\n    stream.on('data', (chunk) => {\n      console.log('RECV:', chunk.toString('hex'));\n    });\n\n    stream.on('timeout', () => {\n      console.log('Stream connect error!');\n    });\n  }\n});\n```\n\nThe `error` generated by the client If `error.message` is `'status'`, you can get the status code returned by the server through `error.status`.\n\n#### Example\n``` javascript\nif (error.message === 'status') {\n  console.log(error.status);\n}\n// Or\nif (error.status) {\n  console.log(error.status);\n}\n```\n\n### async client.fetch(url[, opt[, payload]][, timeout])\n+ `url` *{String}* RPC command url.\n+ `opt` *{Object}* RPC options. (No payload can be omitted)\n  + `method` *{Integer}* RPC method. **default: vsoa.method.GET**.\n+ `payload` *{Object}* RPC payload. Optional.\n+ `timeout` *{Integer}* Timeout. **default: 60000ms**.\n+ Returns: *{Object}* Promise result.\n\nMake an RPC call with asynchronous mode. Normally, the return value object contains the following members:\n+ `payload` *{Object}* Server reply payload. Optional.\n+ `tunid` *{Integer}* Server reply tunnel stream id. Optional.\n\nIf an error occurs, an exception is thrown, and the `.status` member of the `error` object can be detected to obtain the error code returned by the server. If there is a payload when the error occurs, the `.payload` member of the `error` object saves the payload information returned by the server.\n\n#### Example\n``` javascript\nasync function test() {\n  try {\n    var { payload, tunid } = await client.fetch('/a/b/c');\n  } catch (error) {\n    return console.error(error.message, error.status);\n  }\n  console.log(JSON.stringify(payload));\n}\n// Or:\nclient.fetch('/a/b/c').then(({payload, tunid}) => {\n  console.log(JSON.stringify(payload));\n}, error => console.error(error.message, error.status));\n```\n\n### client.datagram(url, payload[, quick])\n+ `url` *{String}* Datagram url.\n+ `payload` *{Object}* Payload.\n+ `quick` *{Boolean}* Whether use quick channel. **default: false**.\n\nClient sends DATAGRAM packet to server. This communication server does not confirm and does not guarantee successful communication.\n\n### client.createStream(tunid[, timeout])\n+ `tunid` *{Integer}* Server tunnel stream id.\n+ `timeout` *{Integer}* Timeout. **default: 10000ms**.\n+ Returns: *{Stream.Duplex}* Duplex stream.\n\nCreate a stream to connect with server stream, this object has inherited from `Stream.Duplex`, you can refer to the `Stream` related documents for operation.\n\nThe members of this stream object extending `Stream.Duplex` object are as follows:\n+ `close` *{Function}* Close this stream.\n\nIn addition to the events defined by the standard `Stream.Duplex`, this object also generates the following additional events:\n+ `'timeout'` When the server stream does not connect the server stream connection request within the specified timeout period, the `'timeout'` event will be generated at this time, and the stream will be automatically closed at the same time.\n+ `'connect'` This event is generated when the client stream successfully connects with the server stream.\n\n### client.sendTimeout(timeout)\n+ `timeout` *{Integer | Undefined}* Set network send timeout(ms).\n\nSet the client packet sending timeout, the default waiting for the sending buffer to be valid is `100` ms in JSRE. NodeJS does not have a send timeout setting by default.\n\n## VSOA Client Events\nThe VSOA client object inherits from `EventEmitter`, and the `on()` method can be used to listen the following event.\n\n### message\n+ `url` *{String}* Server event URL.\n+ `payload` *{Object}* Server event payload. Optional.\n+ `quick` *{Boolean}* Is it a quick publish message.\n\nFor events published by the server, if this client subscribes to the relevant URL, then when the server publishes the corresponding event, this client will be received.\n\n#### Example\n``` javascript\nclient.on('message', function(url, payload, quick) {\n  console.log('Event', url, 'received');\n});\n```\n\n### datagram\n+ `url` *{String}* Server datagram URL.\n+ `payload` *{Object}* Server datagram payload.\n+ `quick` *{Boolean}* Whether this datagram comes from the quick channel.\n\nThe client receives the **DATAGRAM** packet sent by the server.\n\n**NOTICE**: Usually **DATAGRAM** type data is used to transmit some data that does not require confirmation, for example, VSOA's **DATAGRAM** data packets can be used to build a VPN network.\n\n### subscribe\n+ `url` *{String | Array}* Server event URL.\n\nThis client successfully subscribed to the specified event.\n\n#### Example\n``` javascript\nclient.on('subscribe', function(url) {\n  console.log('Event', url, 'subscribed');\n});\n```\n\n### unsubscribe\n+ `url` *{String | Array | Null}* Server event URL.\n\nThis client successfully unsubscribed from the specified event. If `null`, the client unsubscribe all subscriptions.\n\n### connect\n+ `info` *{Object | String}* Server information.\n\nThis client successfully connected to the server.\n\n#### Example\n``` javascript\nclient.on('connect', function(info) {\n  console.log('Connect to server success:', JSON.stringify(info));\n});\n```\n\n### error\n+ `error` *{Error}* Error message.\n\nWhen the client generates an error, it will receive this event. When receiving this event, the user can call `client.close` to close the client, and the client object can be call `client.connect` again.\n\n#### Example\n``` javascript\nclient.on('error', function(error) {\n  console.log('Client error:', error);\n  client.close();\n});\n```\n\nThe possible errors are as follows:\n\nError Message|Has Status|Description\n---|:--:|---\n`'no responding'`||Server is not responding\n`'status'`|●|Server responded with an error status\n`'ping timeout'`||Periodic automatic ping timeout\n`'send timeout'`||Send timeout\n`'no network'`||Server connection lost\n`'no connection'`||Network is not connected\n`'insufficient resources'`||Insufficient network resources\n`'parser failed'`||Packet parser error\n`'closed'`||Client is closed\n\n## VSOA Regulator Class\nVSOA regulator provides the function of changing the speed of client subscription data. For example, the server publish period is 100ms, and the regulator can slow down the speed to receive once every 1000ms.\n\n### new vsoa.Regulator(client, period)\n+ `client` *{VsoaClient}* VSOA client object.\n+ `period` *{Integer}* Fastest update period.\n+ Returns: *{Object}* VSOA regulator object.\n\nCreate a VSOA regulator, `period` cannot be less than 1ms.\n\n#### Example\n``` javascript\nvar regulator = new vsoa.Regulator(client, 1000);\n```\n\n### vsoa.Regulator.slot(client, period, url)\n+ `client` *{VsoaClient}* VSOA client object.\n+ `period` *{Integer}* Fastest update period.\n+ `url` *{String}* Legal URL string.\n+ Returns: *{Object}* VSOA regulator object.\n\nThis function is equivalent to the following code:\n``` javascript\nfunction(client, period, url) {\n\tvar regulator = new Regulator(client, period);\n\tregulator.slot(url);\n\treturn regulator;\n}\n```\n\n## VSOA Regulator Object\n### regulator.close()\n\nClose VSOA regulator. This object cannot be used again.\n\n### regulator.slot(url)\n+ `url` *{String}* Legal URL string.\n+ Returns: *{Object}* VSOA regulator object.\n\nSet a URL that needs to be changed. This URL can be a precise URL or a wildcard URL.\n\n### regulator.unslot(url)\n+ `url` *{String}* Legal URL string.\n+ Returns: *{Object}* VSOA regulator object.\n\nDelete a URL that `regulator.slot()` has been called before.\n\nFor example, the server `'/foo'` url publishes very quickly, and we need to reduce the speed to 1s. You can use the following code:\n``` javascript\nvar regulator = new vsoa.Regulator(client, 1000);\n\nregulator.slot('/foo').on('message', (url, payload, quick) => {\n\t// The frequency here is called at most once every 1 second.\n});\n```\n\nIf you need to speed down the publish reception of all URLs starting with `'/foo'`, you can use `'/foo/'` as the slot url.\n\n### regulator.period(period)\n+ `period` *{Integer}* New fastest update period.\n+ Returns: *{Object}* VSOA regulator object.\n\nChange the period parameter of regulator.\n\n## VSOA Regulator Events\nThe VSOA regulator object inherits from `EventEmitter`, and the `on()` method can be used to listen the following event.\n\n### message\n+ `url` *{String}* Server event URL.\n+ `payload` *{Object}* Server event payload. Optional.\n+ `quick` *{Boolean}* Is it a quick publish message.\n\nAfter changing the speed of the publish message event, developers do not need to repeatedly listen to the client’s `message` event.\n\n## VSOA Proxy Class\nVSOA proxy provides a multi-server proxy function, which can abstract multiple microservices into one microservice entry.\n\n### new vsoa.Proxy([opt])\n+ `opt` *{Object}* Server configuration.\n+ Returns: *{Object}* VSOA proxy object.\n\nCreate a VSOA server for proxying, `opt` is an argument to `new vsoa.Server()`.\n\n## VSOA Proxy Object\n### proxy.close()\n\nClose VSOA proxy.\n\n### proxy.start(saddr[, tlsOpt])\n+ `saddr` *{Object}* Server socket address.\n+ `tlsOpt` *{Object}* TLS security configuration. Optional.\n\nStart the proxy server.\n\n### proxy.add(prefix, opt, saddr[, tlsOpt])\n+ `prefix` *{String}* Path prefixes starting with `'/'`.\n+ `opt` *{Object}* Options for connecting to remote servers.\n+ `saddr` *{Object | String}* Remote server socket address or domain name.\n+ `tlsOpt` *{Object}* TLS security configuration. Optional.\n\nCreate a proxy rule. The optional parameters of `opt` are as follows:\n+ `passwd` *{String}* Remote server password.\n+ `pingInterval` *{Integer}* Ping interval time, must be greater than **200ms**. Optional.\n+ `pingTimeout` *{Integer}* Ping timeout, must be less than `pingInterval` **default: half of `pingInterval`**. Optional.\n+ `pingLost` *{Integer}* How many consecutive ping timeouts will drop the connection. **default: 3**.\n+ `timeout` *{Integer}* RPC call timeout.\n\n#### Example\n``` javascript\nvar proxy = new vsoa.Proxy({ info: { name: 'Proxy' } });\n\n// Start\nproxy.start({ domain: vsoa.AF_INET, port: 3000 });\n\n// Add rule\nproxy.add('/s1', { timeout: 5000 }, 'vsoa://s1');\nproxy.add('/s2', { timeout: 5000 }, 'vsoa://s2');\n```\n\n### proxy.delete(prefix)\n+ `prefix` *{String}* Path prefixes starting with `'/'`.\n\nDelete an added rule.\n\n#### Example\n``` javascript\nproxy.delete('/s1');\n```\n\n## VSOA Position Server Class\nVSOA Position Server provides the function of querying VSOA server address by service name, similar to DNS server.\n\n### new vsoa.Position(table, saddr)\n+ `table` *{Array}* Server address table.\n+ `saddr` *{Object}* Position server socket address.\n+ Returns: *{Object}* Position server object.\n\nTo create a VSOA Position Server, each item of the table array needs to meet the following requirements:\n+ `name` *{String}* VSOA server name.\n+ `domain` *{Integer}* Address domain, either `vsoa.AF_INET` or `vsoa.AF_INET6`.\n+ `addr` *{String}* IP address.\n+ `port` *{Integer}* TCP port.\n+ `security` *{Boolean}* Whether the server is a TLS secure connection.\n\n#### Example\n``` javascript\nvar position = new vsoa.Position([\n  { name: 's1', domain: 2, addr: '192.168.0.1', port: 1000, security: false },\n  { name: 's2', domain: 2, addr: '192.168.0.2', port: 2000, security: false },\n  { name: 's3', domain: 2, addr: '192.168.0.3', port: 3000, security: false },\n], { domain: 2, addr: '0.0.0.0', port: 1234 });\n// Or\nvar position = new vsoa.Position([], {\n  domain: 2, addr: '0.0.0.0', port: 1234\n});\n```\n\n## VSOA Position Server Object\n### position.start([callback])\n\nStart the VSOA position server and listen on the specified port.\n\n### position.stop()\n\nStop the VSOA position server.\n\n### position.close([callback])\n\nClose the VSOA position server and release the resources.\n\n### position.onquery\n+ *{Function}*\n\nThis function will be called when the VSOA server cannot be found in the initialization table of the position server. The arguments of this callback function are as follows:\n+ `name` *{String}* The name of the VSOA server to be queried.\n+ `domain` *{Integer}* Query the server address of the specified domain. `undefined` means any domain.\n+ `callback` *{Function}* Query result callback.\n  + `res` *{Object}* Query result `undefined` means not found.\n\n#### Example\n``` javascript\nposition.onquery = function(name, domain, callback) {\n  if (name === 's1') {\n    callback({\n      domain: 2, addr: '192.168.0.1', port: 1000, security: false\n    });\n  } else {\n    callback(undefined);\n  }\n}\n```\n\n## VSOA Position Query\n\n### vsoa.Position.server(saddr)\n+ `saddr` *{Object}* Position server address.\n\nIf position server is specified, only the specified server will be queried, If the position server address has not been specified, this function will first use the environment variable `VSOA_POS_SERVER` to query, if not found, it will use the server query configured in `/etc/vsoa.pos` (`C:\\Windows\\System32\\drivers\\etc\\vsoa.pos` in Windows).\n\n- `VSOA_POS_SERVER` environment variable is string of comma separated server entries, i.e. `192.168.1.2:3000,192.168.1.3:3001`\n- For configration file, server entries should be saved as `<ip> <port>` per line, i.e:\n\n```\n192.168.1.2 3000\n192.168.1.3 3001\n```\n\n### vsoa.lookup(name, callback[, domain])\n+ `name` *{String}* VSOA server name.\n+ `callback` *{Function}* Query callback.\n  + `error` *{Error}* Error message.\n  + `saddr` *{Object}* VSOA server socket address.\n+ `domain` *{Integer}* Query the server address of the specified domain. **default: any domain**.\n\nQuery the network socket address corresponding to a VSOA service.\n\n#### Example\n``` javascript\nvsoa.lookup('s1', function(error, saddr) {\n  if (saddr) {\n    console.log('VSOA Server s1 address:', JSON.stringify(saddr));\n  }\n});\n```\n\n## VSOA Status Code\nSimilar to HTTP, the server responds with a status code to the client.\n\n### vsoa.code\n+ *{Array}*\n\nVSOA status code, the valid value of `code` is `0` ~ `255`, **where `0` means success**, and other values mean failure, where `vsoa.code` contains the following failure values, and the user-defined failure value is recommended to be `128` ~ `254`.\n\nStatus Code|Value|Description\n---|:--:|---\n`vsoa.code.SUCCESS`|0|Call succeeded\n`vsoa.code.PASSWORD`|1|Wrong password\n`vsoa.code.ARGUMENTS`|2|Parameter error\n`vsoa.code.INVALID_URL`|3|Invalid URL\n`vsoa.code.NO_RESPONDING`|4|Server not responding\n`vsoa.code.NO_PERMISSIONS`|5|No permission\n`vsoa.code.NO_MEMORY`|6|Out of memory\n`vsoa.code.PROXY`|7|Proxy error (`payload.param.error` indicates the error message)\n\n## VSOA RPC Method\nSimilar to HTTP, the client requests the server with the method parameter.\n\n### vsoa.method\n+ *{Integer}*\n\nMethod|Value\n---|:--:\n`vsoa.method.GET`|0\n`vsoa.method.SET`|1\n\n## VSOA Single Remote Call\n### async vsoa.fetch(url[, opt[, payload]][, timeout])\n+ `url` *{String}* RPC command url.\n+ `opt` *{Object}* RPC options.\n  + `method` *{Integer}* RPC method. **default: vsoa.method.GET**.\n  + `passwd` *{String}* Server password. **default: no password**.\n  + `tlsOpt` *{Object}* TLS security configuration. Optional.\n+ `payload` *{Object}* RPC payload. Optional.\n+ `timeout` *{Integer}* Timeout. **default: 60000ms**.\n+ Returns: *{Object}* Promise result.\n\nMake an RPC call with asynchronous mode. Normally, the return value object contains the following members:\n+ `payload` *{Object}* Server reply payload. Optional.\n+ `tunid` *{Integer}* Server reply tunnel stream id. Optional.\n+ `info` *{Object | String}* Server information.\n\nIf an error occurs, an exception is thrown, and the `.status` member of the `error` object can be detected to obtain the error code returned by the server.\n\n#### Example\n``` javascript\n// Fetch server /foo data\nvsoa.fetch('vsoa://vsoa.example.com/foo').then(result => {\n  console.info('Fetch /foo OK:', JSON.stringify(result));\n}).catch(error => {\n  console.error('Fetch /foo ERROR:', error.message, error.status);\n});\n// Or:\nasync function test() {\n  var result = await vsoa.fetch('vsoa://vsoa.example.com/foo', { passwd: '123456' });\n  console.info('Fetch /foo OK:', JSON.stringify(result));\n}\n```\n\n","readmeFilename":"README.md"}