{"_id":"@bud-fe/h5-native-bridge","_rev":"11-ce7868cc4584f8911fed6944447a4fa2","name":"@bud-fe/h5-native-bridge","dist-tags":{"latest":"1.0.14"},"versions":{"1.0.4":{"name":"@bud-fe/h5-native-bridge","version":"1.0.4","keywords":["h5","native","bridge","hybrid","app"],"author":{"name":"Jason_xu"},"license":"MIT","_id":"@bud-fe/h5-native-bridge@1.0.4","maintainers":[{"name":"l-z","email":"70458055@qq.com"},{"name":"luseng","email":"441740874@qq.com"},{"name":"macrodu","email":"macroios@126.com"},{"name":"sandyliu","email":"18317774724@163.com"},{"name":"kinneyyan","email":"yanshi.ars@gmail.com"},{"name":"wujd","email":"815760442@qq.com"},{"name":"hailongsun","email":"651989481@qq.com"},{"name":"angela.lu","email":"408187459@qq.com"},{"name":"jiangshengrong","email":"shengrongjsr@gmail.com"},{"name":"wind226","email":"winddies226@gmail.com"}],"dist":{"shasum":"d49408526ff09088e599a4df3823c2f3c193dcc2","tarball":"https://registry.npmjs.org/@bud-fe/h5-native-bridge/-/h5-native-bridge-1.0.4.tgz","fileCount":22,"integrity":"sha512-9oEqfInxprGU8YrtqtGYoZUC42foRf3GOzjnLmSt0hKmmbbn1n4Al3Kye4MDenzmT7PBprHkNEdo2BV/uocI6w==","signatures":[{"sig":"MEUCIExvC5XaO2Lq60oaghcMd2xHcEZ7mzE8koyffKVo755PAiEA9i/vLQT+Hv11rYRNaWW9LjbMRuMOzJiVAbb6qhC0MnU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":601297},"main":"./dist/native-bridge.umd.js","type":"module","types":"./dist/index.d.ts","module":"./dist/native-bridge.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/native-bridge.es.js","require":"./dist/native-bridge.umd.js"}},"gitHead":"5de252ee5a5cc014bb3ed5502e193c9d1cbc13c6","scripts":{"dev":"vite","test":"vitest","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"kinneyyan","email":"yanshi.ars@gmail.com"},"_npmVersion":"10.5.0","description":"H5与原生App通信工具库","directories":{},"_nodeVersion":"21.7.3","publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^4.5.0","terser":"^5.20.0","vitest":"^0.34.6","typescript":"^5.2.2","@types/node":"^20.8.0","vite-plugin-dts":"^3.6.0"},"_npmOperationalInternal":{"tmp":"tmp/h5-native-bridge_1.0.4_1775542294276_0.5540481356858451","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@bud-fe/h5-native-bridge","version":"1.0.5","keywords":["h5","native","bridge","hybrid","app"],"author":{"name":"Jason_xu"},"license":"MIT","_id":"@bud-fe/h5-native-bridge@1.0.5","maintainers":[{"name":"l-z","email":"70458055@qq.com"},{"name":"luseng","email":"441740874@qq.com"},{"name":"macrodu","email":"macroios@126.com"},{"name":"sandyliu","email":"18317774724@163.com"},{"name":"kinneyyan","email":"yanshi.ars@gmail.com"},{"name":"wujd","email":"815760442@qq.com"},{"name":"hailongsun","email":"651989481@qq.com"},{"name":"angela.lu","email":"408187459@qq.com"},{"name":"jiangshengrong","email":"shengrongjsr@gmail.com"},{"name":"wind226","email":"winddies226@gmail.com"}],"dist":{"shasum":"4bafab97e8d4265f780b17bac3f6c182832bcc4e","tarball":"https://registry.npmjs.org/@bud-fe/h5-native-bridge/-/h5-native-bridge-1.0.5.tgz","fileCount":22,"integrity":"sha512-x/X+/TmAuEHnAQAUo01981VLwKrqPonGaz9iaSsayDniGkMsi0oiqYb34tJnT7AqfcTXUqebbTvIYyrCJDaYEw==","signatures":[{"sig":"MEYCIQCiBdYtbZCAcSupjNGuRHROfGO1cLiFkzhDUkUDSYg/1QIhAOq2joiul27vYv803uGVo+Jo1cZdtbHiv8KU2juq+ib1","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":649975},"main":"./dist/native-bridge.umd.js","type":"module","_from":"file:bud-fe-h5-native-bridge-1.0.5.tgz","types":"./dist/index.d.ts","module":"./dist/native-bridge.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/native-bridge.es.js","require":"./dist/native-bridge.umd.js"}},"scripts":{"dev":"vite","test":"vitest","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"kinneyyan","email":"yanshi.ars@gmail.com"},"_resolved":"/private/var/folders/rz/9m3c_3k523g8ldfdyqqg61vr0000gn/T/80979bce895117810822d8403d7dbcff/bud-fe-h5-native-bridge-1.0.5.tgz","_integrity":"sha512-x/X+/TmAuEHnAQAUo01981VLwKrqPonGaz9iaSsayDniGkMsi0oiqYb34tJnT7AqfcTXUqebbTvIYyrCJDaYEw==","_npmVersion":"10.5.0","description":"H5与原生App通信工具库","directories":{},"_nodeVersion":"21.7.3","browserslist":["> 1%","last 2 versions","ie >= 9"],"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^4.5.0","terser":"^5.20.0","vitest":"^0.34.6","typescript":"^5.2.2","@types/node":"^20.8.0","vite-plugin-dts":"^3.6.0"},"_npmOperationalInternal":{"tmp":"tmp/h5-native-bridge_1.0.5_1778142697626_0.3718573952463806","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@bud-fe/h5-native-bridge","version":"1.0.6","keywords":["h5","native","bridge","hybrid","app"],"author":{"name":"Jason_xu"},"license":"MIT","_id":"@bud-fe/h5-native-bridge@1.0.6","maintainers":[{"name":"l-z","email":"70458055@qq.com"},{"name":"luseng","email":"441740874@qq.com"},{"name":"macrodu","email":"macroios@126.com"},{"name":"sandyliu","email":"18317774724@163.com"},{"name":"kinneyyan","email":"yanshi.ars@gmail.com"},{"name":"wujd","email":"815760442@qq.com"},{"name":"hailongsun","email":"651989481@qq.com"},{"name":"angela.lu","email":"408187459@qq.com"},{"name":"jiangshengrong","email":"shengrongjsr@gmail.com"},{"name":"wind226","email":"winddies226@gmail.com"}],"dist":{"shasum":"be0b79fe1202d6e47a240fe521dfb36be48c291a","tarball":"https://registry.npmjs.org/@bud-fe/h5-native-bridge/-/h5-native-bridge-1.0.6.tgz","fileCount":22,"integrity":"sha512-B8OiaCpFyfhplwtIpeyWQZttH+RbEFeatpkoH/9kuz+fCNpFZA46rNf3/wMYI5YCOO/CNNlH8PWIQjwAZcuntA==","signatures":[{"sig":"MEUCIQCdc5jdADaHFmGA817UAGAh5x+knanR0IM2qJzuzuoPqAIgDDa8yiEI21DgcXgG2GzRbECok4ahWWw+KbjWOEEc56M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":651963},"main":"./dist/native-bridge.umd.js","type":"module","_from":"file:bud-fe-h5-native-bridge-1.0.6.tgz","types":"./dist/index.d.ts","module":"./dist/native-bridge.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/native-bridge.es.js","require":"./dist/native-bridge.umd.js"}},"scripts":{"dev":"vite","test":"vitest","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"kinneyyan","email":"yanshi.ars@gmail.com"},"_resolved":"/private/var/folders/rz/9m3c_3k523g8ldfdyqqg61vr0000gn/T/ac3136c1ebda166fea0dc7926c3cc6a2/bud-fe-h5-native-bridge-1.0.6.tgz","_integrity":"sha512-B8OiaCpFyfhplwtIpeyWQZttH+RbEFeatpkoH/9kuz+fCNpFZA46rNf3/wMYI5YCOO/CNNlH8PWIQjwAZcuntA==","_npmVersion":"10.5.0","description":"H5与原生App通信工具库","directories":{},"_nodeVersion":"21.7.3","browserslist":["> 1%","last 2 versions","ie >= 9"],"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^4.5.0","terser":"^5.20.0","vitest":"^0.34.6","typescript":"^5.2.2","@types/node":"^20.8.0","vite-plugin-dts":"^3.6.0"},"_npmOperationalInternal":{"tmp":"tmp/h5-native-bridge_1.0.6_1778828037206_0.8830828298274314","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@bud-fe/h5-native-bridge","version":"1.0.7","keywords":["h5","native","bridge","hybrid","app"],"author":{"name":"Jason_xu"},"license":"MIT","_id":"@bud-fe/h5-native-bridge@1.0.7","maintainers":[{"name":"l-z","email":"70458055@qq.com"},{"name":"luseng","email":"441740874@qq.com"},{"name":"macrodu","email":"macroios@126.com"},{"name":"sandyliu","email":"18317774724@163.com"},{"name":"kinneyyan","email":"yanshi.ars@gmail.com"},{"name":"wujd","email":"815760442@qq.com"},{"name":"hailongsun","email":"651989481@qq.com"},{"name":"angela.lu","email":"408187459@qq.com"},{"name":"jiangshengrong","email":"shengrongjsr@gmail.com"},{"name":"wind226","email":"winddies226@gmail.com"}],"dist":{"shasum":"2c2bb1e87e136d8de38b5bb329229251bfe313d9","tarball":"https://registry.npmjs.org/@bud-fe/h5-native-bridge/-/h5-native-bridge-1.0.7.tgz","fileCount":22,"integrity":"sha512-lapRwTg+z/qOS9St90UVXpAvXQ41uOHA0NcrQ9Z2qUeK5Grvlf6o+2qffCZfoQM6WFeQQKdgVsOXoFWnpH40Rg==","signatures":[{"sig":"MEUCIQCTERrUpDNOiH2MJm9GaDXA16ypZMCK0AajXtmyEHQ6qAIgMAcfnGBjfDhUz/+eInISCj4fbOYsZkUS8MqXF7BDAsw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":657388},"main":"./dist/native-bridge.umd.js","type":"module","_from":"file:bud-fe-h5-native-bridge-1.0.7.tgz","types":"./dist/index.d.ts","module":"./dist/native-bridge.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/native-bridge.es.js","require":"./dist/native-bridge.umd.js"}},"scripts":{"dev":"vite","test":"vitest","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"kinneyyan","email":"yanshi.ars@gmail.com"},"_resolved":"/private/var/folders/rz/9m3c_3k523g8ldfdyqqg61vr0000gn/T/85cc8db81ab6b90aa95dac05a8f87c43/bud-fe-h5-native-bridge-1.0.7.tgz","_integrity":"sha512-lapRwTg+z/qOS9St90UVXpAvXQ41uOHA0NcrQ9Z2qUeK5Grvlf6o+2qffCZfoQM6WFeQQKdgVsOXoFWnpH40Rg==","_npmVersion":"10.5.0","description":"H5与原生App通信工具库","directories":{},"_nodeVersion":"21.7.3","browserslist":["> 1%","last 2 versions","ie >= 9"],"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^4.5.0","terser":"^5.20.0","vitest":"^0.34.6","typescript":"^5.2.2","@types/node":"^20.8.0","vite-plugin-dts":"^3.6.0"},"_npmOperationalInternal":{"tmp":"tmp/h5-native-bridge_1.0.7_1779866930059_0.4199671183962401","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@bud-fe/h5-native-bridge","version":"1.0.8","keywords":["h5","native","bridge","hybrid","app"],"author":{"name":"Jason_xu"},"license":"MIT","_id":"@bud-fe/h5-native-bridge@1.0.8","maintainers":[{"name":"l-z","email":"70458055@qq.com"},{"name":"luseng","email":"441740874@qq.com"},{"name":"macrodu","email":"macroios@126.com"},{"name":"sandyliu","email":"18317774724@163.com"},{"name":"kinneyyan","email":"yanshi.ars@gmail.com"},{"name":"wujd","email":"815760442@qq.com"},{"name":"hailongsun","email":"651989481@qq.com"},{"name":"angela.lu","email":"408187459@qq.com"},{"name":"jiangshengrong","email":"shengrongjsr@gmail.com"},{"name":"wind226","email":"winddies226@gmail.com"}],"dist":{"shasum":"5fb90c358fe1bf25a3bf314b5b6f20b84e1a67fc","tarball":"https://registry.npmjs.org/@bud-fe/h5-native-bridge/-/h5-native-bridge-1.0.8.tgz","fileCount":22,"integrity":"sha512-1eibRviEBG3WFvKTcj8OqgBenkQ0KluHE2BWU8qtiQg5W1AYhXnOZwV71esgiykQ7D3T8kXKLbg3iNz0AOgFTw==","signatures":[{"sig":"MEYCIQDCwgUnhfzZ63KuGj6Abxnwqb6v8iIuhimTq18G7ZJq9AIhAKIlm6MlmaTfx7WsK3R8L+5HiqGvY2IkuyGfyDrEzJHI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":663974},"main":"./dist/native-bridge.umd.js","type":"module","_from":"file:bud-fe-h5-native-bridge-1.0.8.tgz","types":"./dist/index.d.ts","module":"./dist/native-bridge.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/native-bridge.es.js","require":"./dist/native-bridge.umd.js"}},"scripts":{"dev":"vite","test":"vitest","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"kinneyyan","email":"yanshi.ars@gmail.com"},"_resolved":"/private/var/folders/rz/9m3c_3k523g8ldfdyqqg61vr0000gn/T/fd44d4f536e07036cf12c7de3299a6bf/bud-fe-h5-native-bridge-1.0.8.tgz","_integrity":"sha512-1eibRviEBG3WFvKTcj8OqgBenkQ0KluHE2BWU8qtiQg5W1AYhXnOZwV71esgiykQ7D3T8kXKLbg3iNz0AOgFTw==","_npmVersion":"10.5.0","description":"H5与原生App通信工具库","directories":{},"_nodeVersion":"21.7.3","browserslist":["> 1%","last 2 versions","ie >= 9"],"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^4.5.0","terser":"^5.20.0","vitest":"^0.34.6","typescript":"^5.2.2","@types/node":"^20.8.0","vite-plugin-dts":"^3.6.0"},"_npmOperationalInternal":{"tmp":"tmp/h5-native-bridge_1.0.8_1781690391027_0.12965726570214797","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@bud-fe/h5-native-bridge","version":"1.0.9","keywords":["h5","native","bridge","hybrid","app"],"author":{"name":"Jason_xu"},"license":"MIT","_id":"@bud-fe/h5-native-bridge@1.0.9","maintainers":[{"name":"l-z","email":"70458055@qq.com"},{"name":"luseng","email":"441740874@qq.com"},{"name":"macrodu","email":"macroios@126.com"},{"name":"sandyliu","email":"18317774724@163.com"},{"name":"kinneyyan","email":"yanshi.ars@gmail.com"},{"name":"wujd","email":"815760442@qq.com"},{"name":"hailongsun","email":"651989481@qq.com"},{"name":"angela.lu","email":"408187459@qq.com"},{"name":"jiangshengrong","email":"shengrongjsr@gmail.com"},{"name":"wind226","email":"winddies226@gmail.com"}],"dist":{"shasum":"4a82d0db51fa1684e188a151b7d0d96f63d704cb","tarball":"https://registry.npmjs.org/@bud-fe/h5-native-bridge/-/h5-native-bridge-1.0.9.tgz","fileCount":23,"integrity":"sha512-XoI9k470MKMDHl1KNqzukpIzfQ76VeYOxfX/2Fr5ZMChbRfSlb+oFXsRpFuRRc0ObZgapkJ0XSj7/BpKiFPRJQ==","signatures":[{"sig":"MEUCIQDDTmDSZHZ9HrDd7TS3BBIKxRfbpHt3geT0uLK+lHQciAIgOu6Jkx3ouczEzdj29cMnNs9Co7jSxfBuasrFwMduhsE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":677316},"main":"./dist/native-bridge.umd.js","type":"module","_from":"file:bud-fe-h5-native-bridge-1.0.9.tgz","types":"./dist/index.d.ts","module":"./dist/native-bridge.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/native-bridge.es.js","require":"./dist/native-bridge.umd.js"}},"scripts":{"dev":"vite","test":"vitest","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"kinneyyan","email":"yanshi.ars@gmail.com"},"_resolved":"/private/var/folders/rz/9m3c_3k523g8ldfdyqqg61vr0000gn/T/c5d811c4dc001e7262fe3d4f8b9a8f03/bud-fe-h5-native-bridge-1.0.9.tgz","_integrity":"sha512-XoI9k470MKMDHl1KNqzukpIzfQ76VeYOxfX/2Fr5ZMChbRfSlb+oFXsRpFuRRc0ObZgapkJ0XSj7/BpKiFPRJQ==","_npmVersion":"10.5.0","description":"H5与原生App通信工具库","directories":{},"_nodeVersion":"21.7.3","browserslist":["> 1%","last 2 versions","ie >= 9"],"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^4.5.0","terser":"^5.20.0","vitest":"^0.34.6","typescript":"^5.2.2","@types/node":"^20.8.0","vite-plugin-dts":"^3.6.0"},"_npmOperationalInternal":{"tmp":"tmp/h5-native-bridge_1.0.9_1782359205122_0.823193587013753","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@bud-fe/h5-native-bridge","version":"1.0.10","keywords":["h5","native","bridge","hybrid","app"],"author":{"name":"Jason_xu"},"license":"MIT","_id":"@bud-fe/h5-native-bridge@1.0.10","maintainers":[{"name":"l-z","email":"70458055@qq.com"},{"name":"luseng","email":"441740874@qq.com"},{"name":"macrodu","email":"macroios@126.com"},{"name":"sandyliu","email":"18317774724@163.com"},{"name":"kinneyyan","email":"yanshi.ars@gmail.com"},{"name":"wujd","email":"815760442@qq.com"},{"name":"hailongsun","email":"651989481@qq.com"},{"name":"angela.lu","email":"408187459@qq.com"},{"name":"jiangshengrong","email":"shengrongjsr@gmail.com"},{"name":"wind226","email":"winddies226@gmail.com"}],"dist":{"shasum":"7a866e61bf6cf1a780882d407f0a4a1752fda9ee","tarball":"https://registry.npmjs.org/@bud-fe/h5-native-bridge/-/h5-native-bridge-1.0.10.tgz","fileCount":23,"integrity":"sha512-O1UkgagNTYC7ppO1pUBItZSzSVc4xF53NIj86cDrcetvewnQ9fouJHyr5cAP36d7M2B4GcYwbXN8vmgml/Bn6A==","signatures":[{"sig":"MEUCICkT3W0zcHt9dAsc0fDv3OS556kgF/oBnr3yb2n4CyliAiEA+sexgC4Osjuowj5xS7A2YCFu7MauvWZq5euIq5Blb5o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":676941},"main":"./dist/native-bridge.umd.js","type":"module","_from":"file:bud-fe-h5-native-bridge-1.0.10.tgz","types":"./dist/index.d.ts","module":"./dist/native-bridge.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/native-bridge.es.js","require":"./dist/native-bridge.umd.js"}},"scripts":{"dev":"vite","test":"vitest","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"kinneyyan","email":"yanshi.ars@gmail.com"},"_resolved":"/private/var/folders/rz/9m3c_3k523g8ldfdyqqg61vr0000gn/T/5ebb3c3b4a473a62f03d345f60f89f3c/bud-fe-h5-native-bridge-1.0.10.tgz","_integrity":"sha512-O1UkgagNTYC7ppO1pUBItZSzSVc4xF53NIj86cDrcetvewnQ9fouJHyr5cAP36d7M2B4GcYwbXN8vmgml/Bn6A==","_npmVersion":"10.5.0","description":"H5与原生App通信工具库","directories":{},"_nodeVersion":"21.7.3","browserslist":["> 1%","last 2 versions","ie >= 9"],"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^4.5.0","terser":"^5.20.0","vitest":"^0.34.6","typescript":"^5.2.2","@types/node":"^20.8.0","vite-plugin-dts":"^3.6.0"},"_npmOperationalInternal":{"tmp":"tmp/h5-native-bridge_1.0.10_1782460156718_0.21323347560819572","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"@bud-fe/h5-native-bridge","version":"1.0.11","keywords":["h5","native","bridge","hybrid","app"],"author":{"name":"Jason_xu"},"license":"MIT","_id":"@bud-fe/h5-native-bridge@1.0.11","maintainers":[{"name":"l-z","email":"70458055@qq.com"},{"name":"luseng","email":"441740874@qq.com"},{"name":"macrodu","email":"macroios@126.com"},{"name":"sandyliu","email":"18317774724@163.com"},{"name":"kinneyyan","email":"yanshi.ars@gmail.com"},{"name":"wujd","email":"815760442@qq.com"},{"name":"hailongsun","email":"651989481@qq.com"},{"name":"angela.lu","email":"408187459@qq.com"},{"name":"jiangshengrong","email":"shengrongjsr@gmail.com"},{"name":"wind226","email":"winddies226@gmail.com"}],"dist":{"shasum":"1eb0027cac59409d7555bb76b51b4739268c07aa","tarball":"https://registry.npmjs.org/@bud-fe/h5-native-bridge/-/h5-native-bridge-1.0.11.tgz","fileCount":23,"integrity":"sha512-tIN+04liBvrz5RY4jfeU/YLrQRdCiytPGVuaoXA5t0aC6Gi9jtZU6DOhZ91RVVcMfGXCUy1fupcJoUWQh04zeg==","signatures":[{"sig":"MEUCIQDjYvHdYHSg4giMxyVsqHwiW1O3aF13x2w1FMjOA/tW6AIgY8Es0fd3YkBcVV02wVb9/8teRs5Gq8l9y5eiffAwDKI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":679249},"main":"./dist/native-bridge.umd.js","type":"module","_from":"file:bud-fe-h5-native-bridge-1.0.11.tgz","types":"./dist/index.d.ts","module":"./dist/native-bridge.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/native-bridge.es.js","require":"./dist/native-bridge.umd.js"}},"scripts":{"dev":"vite","test":"vitest","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"kinneyyan","email":"yanshi.ars@gmail.com"},"_resolved":"/private/var/folders/rz/9m3c_3k523g8ldfdyqqg61vr0000gn/T/4b00f3cb0dd2768eb0df04351e4a6438/bud-fe-h5-native-bridge-1.0.11.tgz","_integrity":"sha512-tIN+04liBvrz5RY4jfeU/YLrQRdCiytPGVuaoXA5t0aC6Gi9jtZU6DOhZ91RVVcMfGXCUy1fupcJoUWQh04zeg==","_npmVersion":"10.5.0","description":"H5与原生App通信工具库","directories":{},"_nodeVersion":"21.7.3","browserslist":["> 1%","last 2 versions","ie >= 9"],"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^4.5.0","terser":"^5.20.0","vitest":"^0.34.6","typescript":"^5.2.2","@types/node":"^20.8.0","vite-plugin-dts":"^3.6.0"},"_npmOperationalInternal":{"tmp":"tmp/h5-native-bridge_1.0.11_1782720478202_0.2102269152356422","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"@bud-fe/h5-native-bridge","version":"1.0.12","keywords":["h5","native","bridge","hybrid","app"],"author":{"name":"Jason_xu"},"license":"MIT","_id":"@bud-fe/h5-native-bridge@1.0.12","maintainers":[{"name":"l-z","email":"70458055@qq.com"},{"name":"luseng","email":"441740874@qq.com"},{"name":"macrodu","email":"macroios@126.com"},{"name":"sandyliu","email":"18317774724@163.com"},{"name":"kinneyyan","email":"yanshi.ars@gmail.com"},{"name":"wujd","email":"815760442@qq.com"},{"name":"hailongsun","email":"651989481@qq.com"},{"name":"angela.lu","email":"408187459@qq.com"},{"name":"jiangshengrong","email":"shengrongjsr@gmail.com"},{"name":"wind226","email":"winddies226@gmail.com"}],"dist":{"shasum":"929af1b3264373317c79216e6218b35bf5567e8b","tarball":"https://registry.npmjs.org/@bud-fe/h5-native-bridge/-/h5-native-bridge-1.0.12.tgz","fileCount":23,"integrity":"sha512-HytYQ+EKQObwnCBqTkEMsvUUSjhT6q2ioguTbawpbM9Y93ep479ZeP/mfCIkn55M7fbdwawTv4YgxDYPxRRiXw==","signatures":[{"sig":"MEQCIHXO7tz4k0iMj6Nm5p8/kYCcwLUxxwHIqCOOftv+DVDVAiADPVGuFL+unC6/Smn/Ux3CwCNQXIyKOylQSGeOr8l6gQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":687956},"main":"./dist/native-bridge.umd.js","type":"module","_from":"file:bud-fe-h5-native-bridge-1.0.12.tgz","types":"./dist/index.d.ts","module":"./dist/native-bridge.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/native-bridge.es.js","require":"./dist/native-bridge.umd.js"}},"scripts":{"dev":"vite","test":"vitest","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"kinneyyan","email":"yanshi.ars@gmail.com"},"_resolved":"/private/var/folders/rz/9m3c_3k523g8ldfdyqqg61vr0000gn/T/a5bb3f765e87d44d4d299a1e15302623/bud-fe-h5-native-bridge-1.0.12.tgz","_integrity":"sha512-HytYQ+EKQObwnCBqTkEMsvUUSjhT6q2ioguTbawpbM9Y93ep479ZeP/mfCIkn55M7fbdwawTv4YgxDYPxRRiXw==","_npmVersion":"10.5.0","description":"H5与原生App通信工具库","directories":{},"_nodeVersion":"21.7.3","browserslist":["> 1%","last 2 versions","ie >= 9"],"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^4.5.0","terser":"^5.20.0","vitest":"^0.34.6","typescript":"^5.2.2","@types/node":"^20.8.0","vite-plugin-dts":"^3.6.0"},"_npmOperationalInternal":{"tmp":"tmp/h5-native-bridge_1.0.12_1783491392032_0.7398206801080907","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"@bud-fe/h5-native-bridge","version":"1.0.13","keywords":["h5","native","bridge","hybrid","app"],"author":{"name":"Jason_xu"},"license":"MIT","_id":"@bud-fe/h5-native-bridge@1.0.13","maintainers":[{"name":"l-z","email":"70458055@qq.com"},{"name":"luseng","email":"441740874@qq.com"},{"name":"macrodu","email":"macroios@126.com"},{"name":"sandyliu","email":"18317774724@163.com"},{"name":"kinneyyan","email":"yanshi.ars@gmail.com"},{"name":"wujd","email":"815760442@qq.com"},{"name":"hailongsun","email":"651989481@qq.com"},{"name":"angela.lu","email":"408187459@qq.com"},{"name":"jiangshengrong","email":"shengrongjsr@gmail.com"},{"name":"wind226","email":"winddies226@gmail.com"}],"dist":{"shasum":"a5963a88306e6d3858b12eadf0b972da38c9b79f","tarball":"https://registry.npmjs.org/@bud-fe/h5-native-bridge/-/h5-native-bridge-1.0.13.tgz","fileCount":23,"integrity":"sha512-JnOZnOQ9+3RRnhQCLExDCTDtY1U3W+60FQUTTiHnUO5ywALqML7f2nKClc5bX0TXJNRlaYIoVHI4CkEUbbBTuw==","signatures":[{"sig":"MEQCIG6XLZpvWWq7sfu/JNHgYWlMPz/BcxHp1/b5yFWffMo6AiAuoYB+E5qt8ql3Sg6jDUyk1irD5hLIw/c3a8vbf6W02w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":689529},"main":"./dist/native-bridge.umd.js","type":"module","_from":"file:bud-fe-h5-native-bridge-1.0.13.tgz","types":"./dist/index.d.ts","module":"./dist/native-bridge.es.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/native-bridge.es.js","require":"./dist/native-bridge.umd.js"}},"scripts":{"dev":"vite","test":"vitest","build":"vite build","preview":"vite preview"},"_npmUser":{"name":"kinneyyan","email":"yanshi.ars@gmail.com"},"_resolved":"/private/var/folders/rz/9m3c_3k523g8ldfdyqqg61vr0000gn/T/8ccd0ce6eb478b231fd85972901d0d42/bud-fe-h5-native-bridge-1.0.13.tgz","_integrity":"sha512-JnOZnOQ9+3RRnhQCLExDCTDtY1U3W+60FQUTTiHnUO5ywALqML7f2nKClc5bX0TXJNRlaYIoVHI4CkEUbbBTuw==","_npmVersion":"10.5.0","description":"H5与原生App通信工具库","directories":{},"_nodeVersion":"21.7.3","browserslist":["> 1%","last 2 versions","ie >= 9"],"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^4.5.0","terser":"^5.20.0","vitest":"^0.34.6","typescript":"^5.2.2","@types/node":"^20.8.0","vite-plugin-dts":"^3.6.0"},"_npmOperationalInternal":{"tmp":"tmp/h5-native-bridge_1.0.13_1783922745227_0.1092768919726339","host":"s3://npm-registry-packages-npm-production"}},"1.0.14":{"name":"@bud-fe/h5-native-bridge","version":"1.0.14","description":"H5与原生App通信工具库","type":"module","main":"./dist/native-bridge.umd.js","module":"./dist/native-bridge.es.js","types":"./dist/index.d.ts","exports":{".":{"import":"./dist/native-bridge.es.js","require":"./dist/native-bridge.umd.js","types":"./dist/index.d.ts"}},"keywords":["h5","native","bridge","hybrid","app"],"author":{"name":"Jason_xu"},"license":"MIT","browserslist":["> 1%","last 2 versions","ie >= 9"],"devDependencies":{"@types/node":"^20.8.0","terser":"^5.20.0","typescript":"^5.2.2","vite":"^4.5.0","vite-plugin-dts":"^3.6.0","vitest":"^0.34.6"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"scripts":{"dev":"vite","build":"vite build","preview":"vite preview","test":"vitest"},"_id":"@bud-fe/h5-native-bridge@1.0.14","_integrity":"sha512-UogLiW4+tVD7aOZhLqJNTJjogSm3RUyXPPN5/o+mx6CAaM9fDtW/2MJ5pJLD2f8KzSTnDbq1ws5ruZqu/yEYbg==","_resolved":"/private/var/folders/rz/9m3c_3k523g8ldfdyqqg61vr0000gn/T/98b01ce7322ce527928370d59482967e/bud-fe-h5-native-bridge-1.0.14.tgz","_from":"file:bud-fe-h5-native-bridge-1.0.14.tgz","_nodeVersion":"21.7.3","_npmVersion":"10.5.0","dist":{"integrity":"sha512-UogLiW4+tVD7aOZhLqJNTJjogSm3RUyXPPN5/o+mx6CAaM9fDtW/2MJ5pJLD2f8KzSTnDbq1ws5ruZqu/yEYbg==","shasum":"4b6357697259af7c5a1a8c923df04315b049876e","tarball":"https://registry.npmjs.org/@bud-fe/h5-native-bridge/-/h5-native-bridge-1.0.14.tgz","fileCount":23,"unpackedSize":697053,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCU4ISPYBQoVdsnX7ClOHAZdMwStebzZRTFK0vJMAIejAIhAIFOzvh96bMszUWecntXleCgE6pXnH8pMoMl6d7l8D3Z"}]},"_npmUser":{"name":"kinneyyan","email":"yanshi.ars@gmail.com"},"directories":{},"maintainers":[{"name":"l-z","email":"70458055@qq.com"},{"name":"luseng","email":"441740874@qq.com"},{"name":"macrodu","email":"macroios@126.com"},{"name":"sandyliu","email":"18317774724@163.com"},{"name":"kinneyyan","email":"yanshi.ars@gmail.com"},{"name":"wujd","email":"815760442@qq.com"},{"name":"hailongsun","email":"651989481@qq.com"},{"name":"angela.lu","email":"408187459@qq.com"},{"name":"jiangshengrong","email":"shengrongjsr@gmail.com"},{"name":"wind226","email":"winddies226@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/h5-native-bridge_1.0.14_1787300818652_0.24003524831984735"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-07T06:11:34.040Z","modified":"2026-08-21T08:26:58.967Z","1.0.4":"2026-04-07T06:11:34.423Z","1.0.5":"2026-05-07T08:31:37.772Z","1.0.6":"2026-05-15T06:53:57.345Z","1.0.7":"2026-05-27T07:28:50.209Z","1.0.8":"2026-06-17T09:59:51.154Z","1.0.9":"2026-06-25T03:46:45.277Z","1.0.10":"2026-06-26T07:49:16.854Z","1.0.11":"2026-06-29T08:07:58.364Z","1.0.12":"2026-07-08T06:16:32.254Z","1.0.13":"2026-07-13T06:05:45.408Z","1.0.14":"2026-08-21T08:26:58.787Z"},"author":{"name":"Jason_xu"},"license":"MIT","keywords":["h5","native","bridge","hybrid","app"],"description":"H5与原生App通信工具库","maintainers":[{"name":"l-z","email":"70458055@qq.com"},{"name":"luseng","email":"441740874@qq.com"},{"name":"macrodu","email":"macroios@126.com"},{"name":"sandyliu","email":"18317774724@163.com"},{"name":"kinneyyan","email":"yanshi.ars@gmail.com"},{"name":"wujd","email":"815760442@qq.com"},{"name":"hailongsun","email":"651989481@qq.com"},{"name":"angela.lu","email":"408187459@qq.com"},{"name":"jiangshengrong","email":"shengrongjsr@gmail.com"},{"name":"wind226","email":"winddies226@gmail.com"}],"readme":"# H5-Native-Bridge\n\nH5与原生App通信工具库，使用TypeScript开发，Vite构建。\n\n## 功能特性\n\n- 提供H5页面与原生App的双向通信能力\n- 支持位置信息获取、设备信息、媒体保存、页面导航等原生能力调用\n- 类型安全，完全使用TypeScript开发\n- 支持开发环境下模拟数据\n- 支持多种打包格式(ESM, UMD)\n- 单元测试覆盖核心功能\n\n## 安装\n\n```bash\nnpm install h5-native-bridge\n```\n\n## 打包\n```bash\nnpm run build\n```\n\n## 使用方法\n\n### 基本使用\n\n```javascript\nimport nativeBridge from 'h5-native-bridge';\n\n// 获取位置信息\nnativeBridge.getLocation({\n  enableHighAccuracy: true\n})\n  .then(location => {\n    console.log('✅ 位置信息:', location);\n  })\n  .catch(error => {\n    console.error('获取位置失败:', error);\n  });\n```\n\n### 开启调试模式\n\n```javascript\nimport nativeBridge from 'h5-native-bridge';\n\n// 开启调试模式可以在控制台查看详细日志\nnativeBridge.setDebug(true);\n```\n\n### 完整示例\n\n```javascript\nimport nativeBridge from 'h5-native-bridge';\n\n// 获取位置信息\nnativeBridge.getLocation({\n  enableHighAccuracy: true\n})\n  .then(location => {\n    console.log('✅ 位置信息:', location);\n  })\n  .catch(error => {\n    console.error('获取位置失败:', error);\n  });\n\n// 获取WiFi列表\nnativeBridge.getWifiList()\n  .then(deviceInfo => {\n    console.log('设备信息:', deviceInfo);\n  })\n  .catch(error => {\n    console.error('获取WiFi失败:', error);\n  });\n\n// 保存图片\nnativeBridge.saveImage({\n  url: \"https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/ecbfab94b77e4c73a9635f4639bf41fd~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5Y-q5oOz6Lq65bmz5LiN5oOz5Yqq5Yqb:q75.awebp?rk3s=f64ab15b&x-expires=1747911373&x-signature=bqy63dhMBpzZuILHRSVE37RuRLM%3D\"\n})\n  .then(deviceInfo => {\n    console.log('图片信息:', deviceInfo);\n  })\n  .catch(error => {\n    console.error('图片保存失败:', error);\n  });\n```\n\n## 原生App对接说明\n\n### Android端\n\n```java\n// MainActivity.java\npublic class MainActivity extends AppCompatActivity {\n    private WebView webView;\n\n    @Override\n    protected void onCreate(Bundle savedInstanceState) {\n        super.onCreate(savedInstanceState);\n        setContentView(R.layout.activity_main);\n\n        webView = findViewById(R.id.webview);\n\n        // 初始化WebView\n        WebSettings settings = webView.getSettings();\n        settings.setJavaScriptEnabled(true);\n\n        // 注册JavaScript接口\n        webView.addJavascriptInterface(new NativeBridgeInterface(), \"AndroidBridge\");\n\n        // 加载H5页面\n        webView.loadUrl(\"https://your-app-url.com\");\n    }\n\n    // JavaScript接口\n    private class NativeBridgeInterface {\n        @JavascriptInterface\n        public void postMessage(String message) {\n            try {\n                JSONObject jsonMessage = new JSONObject(message);\n                String action = jsonMessage.getString(\"action\");\n                JSONObject params = jsonMessage.getJSONObject(\"params\");\n                String callbackId = jsonMessage.getString(\"callbackId\");\n\n                // 根据action处理不同的请求\n                if (\"getLocation\".equals(action)) {\n                    handleGetLocation(callbackId, params);\n                }\n                // 其他action处理...\n\n            } catch (JSONException e) {\n                e.printStackTrace();\n            }\n        }\n\n        private void handleGetLocation(final String callbackId, JSONObject params) {\n            // 获取定位权限并执行定位\n            // 获取到位置后，调用JavaScript回调\n            runOnUiThread(new Runnable() {\n                @Override\n                public void run() {\n                    try {\n                        // 假设已获取到位置信息\n                        JSONObject location = new JSONObject();\n                        location.put(\"latitude\", 31.2304);\n                        location.put(\"longitude\", 121.4737);\n                        location.put(\"accuracy\", 10);\n                        location.put(\"timestamp\", System.currentTimeMillis());\n                        location.put(\"address\", \"上海市某某路123号\");\n\n                        // 调用JavaScript回调\n                        String script = \"window.nativeBridgeCallback('\" + callbackId + \"', 'success', \" + location.toString() + \")\";\n                        webView.evaluateJavascript(script, null);\n                    } catch (Exception e) {\n                        // 处理错误\n                        String script = \"window.nativeBridgeCallback('\" + callbackId + \"', 'fail', {message: '\" + e.getMessage() + \"'})\";\n                        webView.evaluateJavascript(script, null);\n                    }\n                }\n            });\n        }\n    }\n}\n```\n\n### iOS端\n\n```swift\n// ViewController.swift\nimport UIKit\nimport WebKit\n\nclass ViewController: UIViewController, WKScriptMessageHandler, WKNavigationDelegate {\n    \n    var webView: WKWebView!\n    \n    override func viewDidLoad() {\n        super.viewDidLoad()\n        \n        // 配置WKWebView\n        let configuration = WKWebViewConfiguration()\n        let userContentController = WKUserContentController()\n        \n        // 注册JS消息处理，名称为 \"nativeBridge\"\n        userContentController.add(self, name: \"nativeBridge\")\n        configuration.userContentController = userContentController\n        \n        // 创建WKWebView\n        webView = WKWebView(frame: view.bounds, configuration: configuration)\n        webView.navigationDelegate = self\n        view.addSubview(webView)\n        \n        // 加载H5页面\n        if let url = URL(string: \"https://your-app-url.com\") {\n            webView.load(URLRequest(url: url))\n        }\n    }\n    \n    // 处理来自JS的消息\n    func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {\n        if message.name == \"nativeBridge\", let messageBody = message.body as? String {\n            do {\n                // 解析JS发送的JSON消息\n                if let messageData = messageBody.data(using: .utf8),\n                   let jsonMessage = try JSONSerialization.jsonObject(with: messageData) as? [String: Any],\n                   let action = jsonMessage[\"action\"] as? String,\n                   let params = jsonMessage[\"params\"] as? [String: Any],\n                   let callbackId = jsonMessage[\"callbackId\"] as? String {\n                    \n                    // 根据action处理不同的请求\n                    switch action {\n                    case \"getLocation\":\n                        handleGetLocation(callbackId: callbackId, params: params)\n                    case \"navigate\":\n                        handleNavigate(callbackId: callbackId, params: params)\n                    case \"saveImage\":\n                        handleSaveImage(callbackId: callbackId, params: params)\n                    case \"getDeviceInfo\":\n                        handleGetDeviceInfo(callbackId: callbackId, params: params)\n                    case \"getWifiList\":\n                        handleGetWifiList(callbackId: callbackId, params: params)\n                    default:\n                        let error = [\"message\": \"未知的action: \\(action)\"]\n                        let script = \"window.nativeBridgeCallback('\\(callbackId)', 'fail', \\(toJSONString(error)))\"\n                        webView.evaluateJavaScript(script, completionHandler: nil)\n                    }\n                } else {\n                    throw NSError(domain: \"\", code: -1, userInfo: [NSLocalizedDescriptionKey: \"无效的JSON消息\"])\n                }\n            } catch {\n                // 处理解析错误\n                let error = [\"message\": \"消息解析失败: \\(error.localizedDescription)\"]\n                if let callbackId = (message.body as? [String: Any])?[\"callbackId\"] as? String {\n                    let script = \"window.nativeBridgeCallback('\\(callbackId)', 'fail', \\(toJSONString(error)))\"\n                    webView.evaluateJavaScript(script, completionHandler: nil)\n                }\n            }\n        }\n    }\n    \n    // 处理获取位置请求\n    private func handleGetLocation(callbackId: String, params: [String: Any]) {\n        // 获取定位权限并执行定位\n        // 假设已获取到位置信息\n        let location: [String: Any] = [\n            \"latitude\": 31.2304,\n            \"longitude\": 121.4737,\n            \"accuracy\": 10,\n            \"timestamp\": Date().timeIntervalSince1970 * 1000,\n            \"address\": \"上海市某某路123号\"\n        ]\n        \n        // 调用JavaScript回调\n        let script = \"window.nativeBridgeCallback('\\(callbackId)', 'success', \\(toJSONString(location)))\"\n        webView.evaluateJavaScript(script) { _, error in\n            if let error = error {\n                print(\"JavaScript执行错误: \\(error)\")\n            }\n        }\n    }\n    \n    // 处理导航请求\n    private func handleNavigate(callbackId: String, params: [String: Any]) {\n        // 实现导航逻辑，例如跳转到指定页面\n        let response: [String: Any] = [\"status\": \"success\"]\n        let script = \"window.nativeBridgeCallback('\\(callbackId)', 'success', \\(toJSONString(response)))\"\n        webView.evaluateJavaScript(script, completionHandler: nil)\n    }\n    \n    // 处理保存图片请求\n    private func handleSaveImage(callbackId: String, params: [String: Any]) {\n        // 实现图片保存逻辑\n        let response: [String: Any] = [\"status\": \"success\"]\n        let script = \"window.nativeBridgeCallback('\\(callbackId)', 'success', \\(toJSONString(response)))\"\n        webView.evaluateJavaScript(script, completionHandler: nil)\n    }\n    \n    // 处理获取设备信息请求\n    private func handleGetDeviceInfo(callbackId: String, params: [String: Any]) {\n        // 实现设备信息获取逻辑\n        let deviceInfo: [String: Any] = [\n            \"platform\": \"ios\",\n            \"osVersion\": UIDevice.current.systemVersion,\n            \"deviceModel\": UIDevice.current.model,\n            \"appVersion\": Bundle.main.infoDictionary?[\"CFBundleShortVersionString\"] as? String ?? \"\",\n            \"uuid\": UIDevice.current.identifierForVendor?.uuidString ?? \"\",\n            \"screenWidth\": UIScreen.main.bounds.width,\n            \"screenHeight\": UIScreen.main.bounds.height,\n            \"pixelRatio\": UIScreen.main.scale,\n            \"networkType\": \"wifi\",\n            \"language\": Locale.current.languageCode ?? \"en\"\n        ]\n        let script = \"window.nativeBridgeCallback('\\(callbackId)', 'success', \\(toJSONString(deviceInfo)))\"\n        webView.evaluateJavaScript(script, completionHandler: nil)\n    }\n    \n    // 处理获取WiFi列表请求\n    private func handleGetWifiList(callbackId: String, params: [String: Any]) {\n        // 实现WiFi列表获取逻辑\n        let wifiList: [[String: Any]] = [\n            [\"ssid\": \"WiFi-1\", \"signalStrength\": -50],\n            [\"ssid\": \"WiFi-2\", \"signalStrength\": -70]\n        ]\n        let response: [String: Any] = [\n            \"resultCode\": 0,\n            \"resultMessage\": \"成功\",\n            \"wifiList\": wifiList\n        ]\n        let script = \"window.nativeBridgeCallback('\\(callbackId)', 'success', \\(toJSONString(response)))\"\n        webView.evaluateJavaScript(script, completionHandler: nil)\n    }\n    \n    // 辅助函数：将字典转为JSON字符串\n    private func toJSONString(_ dict: [String: Any]) -> String {\n        if let data = try? JSONSerialization.data(withJSONObject: dict),\n           let str = String(data: data, encoding: .utf8) {\n            return str\n        }\n        return \"{}\"\n    }\n}\n\n## 本地开发\n\n```bash\n# 安装依赖\nnpm install\n\n# 启动开发服务器\nnpm run dev\n\n# 构建生产版本\nnpm run build\n\n# 运行测试\nnpm run test\n```\n\n## 许可证\n\nMIT\n\n## 贡献指南\n\n欢迎提交issue和PR。\n","readmeFilename":"README.md"}