{"_id":"@crh-fe/oava-customer-sdk","_rev":"13-46ce3452ae2b65efe1e57fd82ed8183e","name":"@crh-fe/oava-customer-sdk","dist-tags":{"latest":"1.0.51"},"versions":{"1.0.1":{"name":"@crh-fe/oava-customer-sdk","version":"1.0.1","_id":"@crh-fe/oava-customer-sdk@1.0.1","maintainers":[{"name":"lruri","email":"1984811813@qq.com"},{"name":"justli","email":"justlilong@outlook.com"},{"name":"desunire","email":"1437397597@qq.com"}],"dist":{"shasum":"2919a92b00a7e5a9ef53d71a422d1226856ab279","tarball":"https://registry.npmjs.org/@crh-fe/oava-customer-sdk/-/oava-customer-sdk-1.0.1.tgz","fileCount":4,"integrity":"sha512-DyUIR6lOthCMgpywZUznTJ9DhqJxtRs8wsAWEABBcgsj/w/nfBHJcjOUKcdjLVM0h41ZV1y50xJSOGT3eJskPQ==","signatures":[{"sig":"MEUCICX7PqdK31daHz0+HV5TLhL6WCVPy2hOIm70yCOAnTlfAiEAuFjQFNGOqnKBhmyaJCAjhnCecNGfgpYUAPlFw0w2zn4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2872611},"main":"./dist/customerComponent.js","type":"module","gitHead":"5211470662d54c105288ef33384d8fe5e3362bde","_npmUser":{"name":"desunire","email":"1437397597@qq.com"},"_npmVersion":"8.19.2","description":"Customer JS SDK package for oava-widget","directories":{},"_nodeVersion":"16.18.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/oava-customer-sdk_1.0.1_1784879758955_0.4314136191568687","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@crh-fe/oava-customer-sdk","version":"1.0.2","_id":"@crh-fe/oava-customer-sdk@1.0.2","maintainers":[{"name":"lruri","email":"1984811813@qq.com"},{"name":"justli","email":"justlilong@outlook.com"},{"name":"desunire","email":"1437397597@qq.com"}],"dist":{"shasum":"2f3910b98a0100c303822831090f8bbf5b973b7e","tarball":"https://registry.npmjs.org/@crh-fe/oava-customer-sdk/-/oava-customer-sdk-1.0.2.tgz","fileCount":4,"integrity":"sha512-5U2jorzq0SBdlBhjMOiy3/O8jFniTNYLJNn7hGX5rqR7d5XvwKdCmZUcwSajOH7A2WFt3D8OGmM0MnJwvao+fg==","signatures":[{"sig":"MEUCIARQ9pzNythESPbsC2jJO1qHK2/rsQf4xj78qwMVLrDSAiEA5WM0UqGM7ubkWmDt4OOemdzd/9oevkBzb7KTqRWUHNI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2880656},"main":"./dist/customerComponent.js","type":"module","gitHead":"5211470662d54c105288ef33384d8fe5e3362bde","_npmUser":{"name":"desunire","email":"1437397597@qq.com"},"_npmVersion":"8.19.2","description":"Customer JS SDK package for oava-widget","directories":{},"_nodeVersion":"16.18.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/oava-customer-sdk_1.0.2_1784882295503_0.5996645351482424","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@crh-fe/oava-customer-sdk","version":"1.0.3","_id":"@crh-fe/oava-customer-sdk@1.0.3","maintainers":[{"name":"lruri","email":"1984811813@qq.com"},{"name":"justli","email":"justlilong@outlook.com"},{"name":"desunire","email":"1437397597@qq.com"}],"dist":{"shasum":"e451f10eb2243a0f274e39c9852d21861f805bd9","tarball":"https://registry.npmjs.org/@crh-fe/oava-customer-sdk/-/oava-customer-sdk-1.0.3.tgz","fileCount":4,"integrity":"sha512-5IWbzwdFdk5+1oxhcnxoCtM2ymZpChb8SOyGe4TjNAEl2T4GZrhLbfqsHW9m1t6+mXTsJZlIMF4qw+jinN9MjA==","signatures":[{"sig":"MEUCIDaM3dNX9ymYkuMjVV3OIHxHXSBGs1UhLulNCnpkkU3qAiEA7Oxn4slWBDj94i1m8V2ELt/eIhBIpVds4jApb7WlZqU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2880631},"main":"./dist/customerComponent.js","type":"module","gitHead":"5211470662d54c105288ef33384d8fe5e3362bde","_npmUser":{"name":"desunire","email":"1437397597@qq.com"},"_npmVersion":"8.19.2","description":"Customer JS SDK package for oava-widget","directories":{},"_nodeVersion":"16.18.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/oava-customer-sdk_1.0.3_1784882591401_0.10351830475118606","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@crh-fe/oava-customer-sdk","version":"1.0.4","_id":"@crh-fe/oava-customer-sdk@1.0.4","maintainers":[{"name":"lruri","email":"1984811813@qq.com"},{"name":"justli","email":"justlilong@outlook.com"},{"name":"desunire","email":"1437397597@qq.com"}],"dist":{"shasum":"6753ed746333d18c1b79da6270bfdd849948571e","tarball":"https://registry.npmjs.org/@crh-fe/oava-customer-sdk/-/oava-customer-sdk-1.0.4.tgz","fileCount":4,"integrity":"sha512-9BRpjK3JvGFwxBW49wNaIt/V0R9bTsxckTD10o+cx4F953Y3YLU2rO1Mde0T5u8M+WUTukSiXhU4O/yjAU5fvA==","signatures":[{"sig":"MEYCIQCejZDqgfQ1UDFfa82EFx2GfU3xaRVJhp+5DazBLy+8/AIhAK4Q9URkTi7jphqK5alLm04PRIN0Ov3noraTWwV12WwQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2877259},"main":"./dist/customerComponent.js","type":"module","gitHead":"5211470662d54c105288ef33384d8fe5e3362bde","_npmUser":{"name":"desunire","email":"1437397597@qq.com"},"_npmVersion":"8.19.2","description":"Customer JS SDK package for oava-widget","directories":{},"_nodeVersion":"16.18.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/oava-customer-sdk_1.0.4_1784883401296_0.3613579420299935","host":"s3://npm-registry-packages-npm-production"}},"1.0.41":{"name":"@crh-fe/oava-customer-sdk","version":"1.0.41","_id":"@crh-fe/oava-customer-sdk@1.0.41","maintainers":[{"name":"lruri","email":"1984811813@qq.com"},{"name":"justli","email":"justlilong@outlook.com"},{"name":"desunire","email":"1437397597@qq.com"}],"dist":{"shasum":"d996bf281319fe9e7847ab7c4766ee9714305182","tarball":"https://registry.npmjs.org/@crh-fe/oava-customer-sdk/-/oava-customer-sdk-1.0.41.tgz","fileCount":4,"integrity":"sha512-FyeKBc7ZJd/wsVPC4Eo1yXYWnisPpGOgGmxCLhEi1+vsp6ykfnf4UIXxXcSg+XyNmF3UwSa45We5yvPi4DMJlQ==","signatures":[{"sig":"MEQCIEIT3soM9zz0Rye39gdAkPtcgU46SyBV2SZr/vZT96HeAiB9IRp5I3cvsZa4Cg+XHjxdKrfTmDb2KkMauleGPBnSpQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2894929},"main":"./dist/customerComponent.js","type":"module","gitHead":"57ab9a339ac1b623f64a4f4c0475818425191c30","_npmUser":{"name":"desunire","email":"1437397597@qq.com"},"_npmVersion":"8.19.2","description":"Customer JS SDK package for oava-widget","directories":{},"_nodeVersion":"16.18.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/oava-customer-sdk_1.0.41_1785145042170_0.7043457881041886","host":"s3://npm-registry-packages-npm-production"}},"1.0.42":{"name":"@crh-fe/oava-customer-sdk","version":"1.0.42","_id":"@crh-fe/oava-customer-sdk@1.0.42","maintainers":[{"name":"lruri","email":"1984811813@qq.com"},{"name":"justli","email":"justlilong@outlook.com"},{"name":"desunire","email":"1437397597@qq.com"}],"dist":{"shasum":"7c060739d90fad5dac16be8a6db1baa6646d596b","tarball":"https://registry.npmjs.org/@crh-fe/oava-customer-sdk/-/oava-customer-sdk-1.0.42.tgz","fileCount":4,"integrity":"sha512-W42njMpFQA5ur1BahehvQOjHvBZ+WV/vGD1MP514koAumeNt2ujfWmz8I9qu3YoBwn3BQYnlvk8hm42TlacjlQ==","signatures":[{"sig":"MEUCIEX9nDkD+lL8ndijtguHvy7IM8gcqdo2c1ZKQW7+XhjSAiEA1cuX8OOiKDK5GfOfp8NFbwUpTdAj8SVdhYNfYdoj6k4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2894879},"main":"./dist/customerComponent.js","type":"module","gitHead":"d5c25fde14b6bcbcd572def2e831f9d697d49803","_npmUser":{"name":"desunire","email":"1437397597@qq.com"},"_npmVersion":"8.19.2","description":"Customer JS SDK package for oava-widget","directories":{},"_nodeVersion":"16.18.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/oava-customer-sdk_1.0.42_1785232695367_0.8978886221500029","host":"s3://npm-registry-packages-npm-production"}},"1.0.43":{"name":"@crh-fe/oava-customer-sdk","version":"1.0.43","_id":"@crh-fe/oava-customer-sdk@1.0.43","maintainers":[{"name":"lruri","email":"1984811813@qq.com"},{"name":"justli","email":"justlilong@outlook.com"},{"name":"desunire","email":"1437397597@qq.com"}],"dist":{"shasum":"aa3e16192b06f6285842157680138b758d4847a5","tarball":"https://registry.npmjs.org/@crh-fe/oava-customer-sdk/-/oava-customer-sdk-1.0.43.tgz","fileCount":4,"integrity":"sha512-dBdJEjJxE2pVnz1hpZBCZIFJBZrFuMFiKKFl8w828bEqhLuXRMYq6sEVxXevZGnXEUw0S5SxF69E7w9CLRtM5A==","signatures":[{"sig":"MEQCIBamlPKGLPZ5u+0tML+zCAKA4G6N/ATSr89sHTErYD3XAiAptR+fUCvzQSGFOZnuu8KCUS/9b7RZchWsBJ+j1C9GRw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2894900},"main":"./dist/customerComponent.js","type":"module","gitHead":"a8e32a9149b2a7516b6a85a8d64307b74a24e6db","_npmUser":{"name":"desunire","email":"1437397597@qq.com"},"_npmVersion":"8.19.2","description":"Customer JS SDK package for oava-widget","directories":{},"_nodeVersion":"16.18.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/oava-customer-sdk_1.0.43_1785379501587_0.7290374887377655","host":"s3://npm-registry-packages-npm-production"}},"1.0.45":{"name":"@crh-fe/oava-customer-sdk","version":"1.0.45","_id":"@crh-fe/oava-customer-sdk@1.0.45","maintainers":[{"name":"lruri","email":"1984811813@qq.com"},{"name":"justli","email":"justlilong@outlook.com"},{"name":"desunire","email":"1437397597@qq.com"}],"dist":{"shasum":"c8aee2f00fff6e57ccdcf3b3ae3af8219b376cfd","tarball":"https://registry.npmjs.org/@crh-fe/oava-customer-sdk/-/oava-customer-sdk-1.0.45.tgz","fileCount":4,"integrity":"sha512-y+SH43mbXuHUvhSEgKVWorTj0636GcWktTvR/VKQiAjywth12Q6N6LS8TI1kcbdBzqbQiYAfQ2y8DirriIlNpA==","signatures":[{"sig":"MEQCIEUVoIHiM3sVF5nqbIvvPj2zz3Hc1cXjl+02LHV6wdHeAiA5Z8B5xbQ48ODoassnF4tcb7pr5oC3//o3vwXqO8mmlQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2894940},"main":"./dist/customerComponent.js","type":"module","gitHead":"a8e32a9149b2a7516b6a85a8d64307b74a24e6db","_npmUser":{"name":"desunire","email":"1437397597@qq.com"},"_npmVersion":"8.19.2","description":"Customer JS SDK package for oava-widget","directories":{},"_nodeVersion":"16.18.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/oava-customer-sdk_1.0.45_1785394942126_0.9701049931281953","host":"s3://npm-registry-packages-npm-production"}},"1.0.46":{"name":"@crh-fe/oava-customer-sdk","version":"1.0.46","_id":"@crh-fe/oava-customer-sdk@1.0.46","maintainers":[{"name":"lruri","email":"1984811813@qq.com"},{"name":"justli","email":"justlilong@outlook.com"},{"name":"desunire","email":"1437397597@qq.com"}],"dist":{"shasum":"953eeae3f72390e7beac12f10bc2ab47f5ddba20","tarball":"https://registry.npmjs.org/@crh-fe/oava-customer-sdk/-/oava-customer-sdk-1.0.46.tgz","fileCount":4,"integrity":"sha512-wuAUcaiD/N8bPZhB5AodvAhRh3WVDuBIlesuxtror2RuiZ+V3LFEgHlCjmYilw4XxOxpVkDVW4FDSpPRKqnwRQ==","signatures":[{"sig":"MEUCIQC+Y72UfkD7aNVK1ocSwwOCB6f/omC+66CDPQPKFKlxEAIgOyPrQx2PBxMDC3MZMCA6XnpaiauYzDfA+wANOHaDWTQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2898858},"main":"./dist/customerComponent.js","type":"module","gitHead":"208d602d83ad158bbd9d7f2bba237f932d6e5e39","_npmUser":{"name":"desunire","email":"1437397597@qq.com"},"_npmVersion":"8.19.2","description":"Customer JS SDK package for oava-widget","directories":{},"_nodeVersion":"16.18.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/oava-customer-sdk_1.0.46_1785479557026_0.5190059834844294","host":"s3://npm-registry-packages-npm-production"}},"1.0.47":{"name":"@crh-fe/oava-customer-sdk","version":"1.0.47","_id":"@crh-fe/oava-customer-sdk@1.0.47","maintainers":[{"name":"lruri","email":"1984811813@qq.com"},{"name":"justli","email":"justlilong@outlook.com"},{"name":"desunire","email":"1437397597@qq.com"}],"dist":{"shasum":"ed062b44a8c421702db2e74eccf727d45c04dac3","tarball":"https://registry.npmjs.org/@crh-fe/oava-customer-sdk/-/oava-customer-sdk-1.0.47.tgz","fileCount":4,"integrity":"sha512-BhOv+5pQMq+5fMU54BfB5ajVDtyorbPkQTOU9qC9bHARi3eHljVawTnEeaV5NW8Mw5mBHzSpNznLm/lf6aHBjA==","signatures":[{"sig":"MEUCIGhwR9Yvm6F6ptAtWS88b7F2ye4jKCce6uh0iHDsiLN3AiEAwWp9JhEE1FVeyrnPhmtGhksw/iMQ3Fyw2jE+JcxfD8o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2899007},"main":"./dist/customerComponent.js","type":"module","gitHead":"dde3ca1ea2caf53600f45a4cd60d40ed16dc91a1","_npmUser":{"name":"desunire","email":"1437397597@qq.com"},"_npmVersion":"8.19.2","description":"Customer JS SDK package for oava-widget","directories":{},"_nodeVersion":"16.18.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/oava-customer-sdk_1.0.47_1787566807544_0.44662117748985763","host":"s3://npm-registry-packages-npm-production"}},"1.0.48":{"name":"@crh-fe/oava-customer-sdk","version":"1.0.48","_id":"@crh-fe/oava-customer-sdk@1.0.48","maintainers":[{"name":"lruri","email":"1984811813@qq.com"},{"name":"justli","email":"justlilong@outlook.com"},{"name":"desunire","email":"1437397597@qq.com"}],"dist":{"shasum":"144850472c11f7ac45ecb6b2e27d994e34e6cc38","tarball":"https://registry.npmjs.org/@crh-fe/oava-customer-sdk/-/oava-customer-sdk-1.0.48.tgz","fileCount":4,"integrity":"sha512-9uIeAYaqheWMeataoSby25uiLx+zuYEJtNSYepjWvUE4v65tnXC6HJ0MhMVV38wtM6KlLq9QaDVhIVw59pO1Ng==","signatures":[{"sig":"MEUCIChphT74dV8RZdwAIiZLgPszgMkXilWK+T77eMwq29NYAiEAoHxNpbGLJvsPenrAXvt0YEWVjOSiHyCalY6d5bKU9mQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2899800},"main":"./dist/customerComponent.js","type":"module","gitHead":"e76bc0433c1d48bd9c9281f7bed08f11419306bc","_npmUser":{"name":"desunire","email":"1437397597@qq.com"},"_npmVersion":"8.19.2","description":"Customer JS SDK package for oava-widget","directories":{},"_nodeVersion":"16.18.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/oava-customer-sdk_1.0.48_1787736330335_0.3247865264322862","host":"s3://npm-registry-packages-npm-production"}},"1.0.49":{"name":"@crh-fe/oava-customer-sdk","version":"1.0.49","_id":"@crh-fe/oava-customer-sdk@1.0.49","maintainers":[{"name":"lruri","email":"1984811813@qq.com"},{"name":"justli","email":"justlilong@outlook.com"},{"name":"desunire","email":"1437397597@qq.com"}],"dist":{"shasum":"dfb24b1abe1d2dc6e21cfc2b7b1291059954f97a","tarball":"https://registry.npmjs.org/@crh-fe/oava-customer-sdk/-/oava-customer-sdk-1.0.49.tgz","fileCount":4,"integrity":"sha512-eHEavS9zkIiuBQDUeto/C3UjyI11NfIiX89Fg59CQNBz0Vi1xTU21RnGKQFJiNwPO7R3nFmILK/qvWLGbEPl5w==","signatures":[{"sig":"MEQCICJgNzpGRvx4s4atEpyanpJw2avR6KrA41hoFqVB22xvAiAPvHE0LT1sV94M5fnzvw4mXr8zHd3sG3vnVtRUKytxKw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2901756},"main":"./dist/customerComponent.js","type":"module","gitHead":"cf30ddedeed52c616f0343c882a0c55497a35156","_npmUser":{"name":"desunire","email":"1437397597@qq.com"},"_npmVersion":"8.19.2","description":"Customer JS SDK package for oava-widget","directories":{},"_nodeVersion":"16.18.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/oava-customer-sdk_1.0.49_1789036236203_0.593155483840347","host":"s3://npm-registry-packages-npm-production"}},"1.0.51":{"_id":"@crh-fe/oava-customer-sdk@1.0.51","dist":{"shasum":"4558221182458b1cf3b06163804ab777f773c792","tarball":"https://registry.npmjs.org/@crh-fe/oava-customer-sdk/-/oava-customer-sdk-1.0.51.tgz","fileCount":4,"integrity":"sha512-ZFA1J7kQnkFjYxOxhbYcJcFgT5Nd4v3uUYhMmcNj4MXLGeYm5SB+TMVAI0WliaDLlW5zVKFHKkZZiQ6U3Fjncg==","signatures":[{"sig":"MEYCIQCdoiAaaruNsYiX5OxEijpVA8JsaZM4NK7cKp2ztYljTQIhAMgTts6O4854zt9ZGvlYgEdzoy46vxUG0EP8IGYTtHgr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBKYfZeGKM1WzMax1Yjy3AcmOJLeMgzvMvnvWTtgMgAzAiBBlb8s986J77E7545FG7siuZb9H1xJbD16PUATtdng3A=="}],"unpackedSize":2901940},"main":"./dist/customerComponent.js","name":"@crh-fe/oava-customer-sdk","type":"module","gitHead":"cf30ddedeed52c616f0343c882a0c55497a35156","version":"1.0.51","_npmUser":{"name":"desunire","email":"1437397597@qq.com"},"_npmVersion":"8.19.2","description":"Customer JS SDK package for oava-widget","directories":{},"maintainers":[{"name":"lruri","email":"1984811813@qq.com"},{"name":"justli","email":"justlilong@outlook.com"},{"name":"desunire","email":"1437397597@qq.com"}],"_nodeVersion":"16.18.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/oava-customer-sdk_1.0.51_1789715731007_0.37547043902912103"}}},"time":{"created":"2026-07-24T07:55:58.725Z","modified":"2026-09-18T07:15:31.328Z","1.0.1":"2026-07-24T07:55:59.190Z","1.0.2":"2026-07-24T08:38:15.695Z","1.0.3":"2026-07-24T08:43:11.622Z","1.0.4":"2026-07-24T08:56:41.478Z","1.0.41":"2026-07-27T09:37:22.421Z","1.0.42":"2026-07-28T09:58:15.539Z","1.0.43":"2026-07-30T02:45:01.794Z","1.0.45":"2026-07-30T07:02:22.311Z","1.0.46":"2026-07-31T06:32:37.208Z","1.0.47":"2026-08-24T10:20:07.740Z","1.0.48":"2026-08-26T09:25:30.541Z","1.0.49":"2026-09-10T10:30:36.365Z","1.0.51":"2026-09-18T07:15:31.168Z"},"description":"Customer JS SDK package for oava-widget","maintainers":[{"name":"lruri","email":"1984811813@qq.com"},{"name":"justli","email":"justlilong@outlook.com"},{"name":"desunire","email":"1437397597@qq.com"}],"readme":"# @crh-fe/oava-customer-sdk\n\n> 数字人视频见证 / 自助视频 双录访客端 SDK\n>\n> 由 `widget` 工程构建产出，对应源码 [widget/lib/customerIndex.js](../../lib/customerIndex.js)。\n>\n> 包名：`@crh-fe/oava-customer-sdk`  · 入口：`dist/customerComponent.js`\n\n---\n\n## 一、特性\n\n- 基于 React + WebRTC 的访客端视频组件，支持**数字人坐席**和**真人坐席**两种模式\n- 一行 `new` 即可创建实例，自带 TURN/媒体协商、推流、订阅\n- 提供人脸在框检测、等待超时、转人工等业务事件回调\n- ES Module 包，`type: \"module\"`，浏览器原生或 webpack 5 均可消费\n\n---\n\n## 二、安装\n\n### 1. 从内部 npm 源安装（推荐）\n\n```bash\nnpm install @crh-fe/oava-customer-sdk\n```\n\n### 2. 本地 tarball 安装\n\n仓库内已打好包：\n\n```bash\nnpm install ./packages/customer-sdk/oava-customer-sdk-1.0.1.tgz\n```\n\n### 3. 通过 `public/` 静态文件直接引用（不推荐，仅用于本地调试）\n\n把 `widget/output/customerComponent.js` 拷到消费者工程的 `public/` 目录，然后用 `<script>` 标签引入，会挂载在 `window.CustomerComponent`（default export）。客户 demo [`demo/customer-demo/src/components/Home.vue`](../../../demo/customer-demo/src/components/Home.vue) 同时支持这两种方式的在线切换。\n\n---\n\n## 三、快速开始\n\n```js\nimport Customer from \"@crh-fe/oava-customer-sdk\";\n\n// 1. 实例化，传入 TURN 服务地址\nconst client = new Customer(\"turn:49.234.13.99?transport=udp\");\n\n// 2. 监听会话结束事件（必接）\nclient.onEnd((e) => {\n  // e.code 参考下方【事件码表】\n  console.log(\"会话结束\", e);\n  client.destroy();\n});\n\n// 3. 初始化挂载。id 为空时挂到 body，否则挂到指定容器\nclient.init(\"\", {\n  roomToken: \"后端派单接口返回的 roomToken\",\n  aiServerUrl: \"https://your-face-detect-server.com\",\n  faceCheckTimer: 3000,   // 人脸在框检测间隔，单位 ms，默认 2000\n  maxWaitTime: 120,       // 等待数字人/真人接入超时，单位 s，默认 120\n  userFaceBase64: \"...\",  // 可选，用户人脸 base64，做人像比对\n});\n```\n\n---\n\n## 四、API 参考\n\n### 4.1 `new CustomerComponent(turnServerUrl)`\n\n| 参数 | 类型 | 必填 | 说明 |\n| --- | --- | --- | --- |\n| `turnServerUrl` | `string` | 否 | IRTC 媒体平台 TURN 地址，默认 `turn:106.15.227.129:3478?transport=udp` |\n\n构造函数会在控制台输出：\n\n```\n[SDK Version] v1.0.1\n[SDK version] v1.0.1, turnServerUrl: <传入值>\n```\n\n### 4.2 `init(id, options)`\n\n挂载并启动组件。\n\n| 参数 | 类型 | 必填 | 说明 |\n| --- | --- | --- | --- |\n| `id` | `string` | 否 | 容器 DOM 的 `id`；**传空字符串时挂载到 `body`**，会动态创建一个 `position: fixed; inset: 0;` 的全屏容器，组件卸载时自动移除 |\n| `options` | `object` | 是 | 见下表 |\n\n#### `options` 字段\n\n| 字段 | 类型 | 必填 | 说明 |\n| --- | --- | --- | --- |\n| `roomToken` | `string` | 是 | 房间 token，由后端 `/tokens` 或派单接口下发 |\n| `aiServerUrl` | `string` | 是 | 人脸在框检测服务地址 |\n| `faceCheckTimer` | `number` | 否 | 人脸在框检测间隔，单位 **ms**，默认 `2000` |\n| `maxWaitTime` | `number` | 否 | 等待数字人/真人接入的最大时长，单位 **s**，默认 `120` |\n| `userFaceBase64` | `string` | 否 | 用户人脸 base64，用于人像比对 |\n\n### 4.3 `destroy()`\n\n销毁组件、断开 WebRTC 推拉流、卸载 React 树，并自动移除由 `init(\"\", ...)` 创建的 `customer-component-container-id` 容器。**一次会话结束务必调用**，否则下次 `new` 会残留 DOM。\n\n### 4.4 `onEnd(callback)`\n\n注册会话结束回调，**只能触发一次**，触发后回调被置空。回调参数：\n\n```ts\ntype EndCallbackParams = {\n  code: string;        // 状态码，见下表\n  message: string;     // 描述\n  data?: any;          // 业务数据\n  type?: string;       // 自定义事件类型\n  reason?: string;     // 主动离开时的原因\n};\n```\n\n#### 事件码表\n\n| code | 含义 |\n| --- | --- |\n| `300` | 见证通过 |\n| `301` | 见证不通过 |\n| `400` | 用户自己主动离开 |\n| `401` | 用户自己主动离开，去自助视频 |\n| `6001` | 加入房间失败 |\n| `6002` | 创建本地摄像头失败 |\n| `6003` | 本地推流异常中断 |\n| `6004` | 推送本地画面失败 |\n| `6005` | 订阅数字人画面失败 |\n| `6008` | 数字人流结束 |\n| `7000` | 服务异常 |\n| `7002` | 数字人坐席离开 |\n| `8001` | 等待数字人接入超时 |\n| `8002` | 等待真人坐席接入超时 |\n\n> 转人工（`transfer`）期间，坐席相关的 6001/7002 等事件会被**抑制**，不再触发 `onEnd`，直到 `cancel-transfer` 复位。\n\n---\n\n## 五、完整示例（客户 demo）\n\n[`demo/customer-demo/src/components/Home.vue`](../../../demo/customer-demo/src/components/Home.vue) 里的最小闭环：\n\n```js\nimport Customer from \"@crh-fe/oava-customer-sdk\";\n\n// 1. 加入排队\nconst queueRes = await request({\n  url: `${aiUrl}/auditcenter/authless/openapi/video/joinQueue`,\n  data: { task_id: taskId },\n});\n\n// 2. 轮询排队结果，坐席接入后拿到 roomToken\nconst queryRes = await request({\n  url: `${aiUrl}/auditcenter/authless/openapi/video/queryQueue`,\n  data: { task_id: taskId },\n});\nconst { room_id, room_token } = JSON.parse(queryRes.data.json_params);\n\nconst tokenRes = await request({\n  url: \"https://zmscrh.zealcomm.cn/tokens\",\n  data: { room: room_id, user: \"testuser\", role: \"presenter\", domain: \"public\" },\n});\n\n// 3. 实例化 SDK 并启动\nconst client = new Customer(\"turn:49.234.13.99?transport=udp\");\n\nclient.onEnd((e) => {\n  if (e.code == \"300\") showSuccess();         // 见证通过\n  else if (e.code == \"301\") showFail();        // 见证不通过\n  else if (e.code == \"200\") return;            // 收到转人工，不结束\n  else queryAuditResult();                     // 其它码：查后端审核结果\n  client.destroy();\n});\n\nclient.init(\"\", {\n  roomToken: tokenRes,                                // 派单接口下发的 roomToken\n  aiServerUrl: \"https://cpekh.test.cairenhui.com\",   // 人脸在框检测\n  faceCheckTimer: 300000,\n  maxWaitTime: 10000,\n});\n```\n\n---\n\n## 六、构建与发布\n\n### 6.1 本地构建\n\n回到 `widget/` 根目录：\n\n```bash\n# 产出 output/customerComponent.js 并同步到本 package 的 dist/\nnpm run build:npm:customer\n```\n\n它会按顺序执行：\n1. `npm run build` — rollup 打包\n2. `npm run sanitize:customer` — 去除 bundle 中残留的 propTypes 警告链接等\n3. `npm run sync:customer-package` — 把产物拷到 `packages/customer-sdk/dist/`\n\n### 6.2 打包 tgz\n\n```bash\ncd packages/customer-sdk\nnpm pack  # 产出 oava-customer-sdk-<version>.tgz\n```\n\n仓库内已附 `oava-customer-sdk-1.0.1.tgz`，可直接 `npm install` 本地引用。\n\n### 6.3 发布到 npm\n\n```bash\ncd packages/customer-sdk\nnpm publish\nnpm publish --access public\n# 私有源：npm publish --registry=https://your-private-registry/\n```\n\n发布前确认：\n- `packages/customer-sdk/package.json` 里的 `name` 已改成你想要的 scope（当前为 `@crh-fe/oava-customer-sdk`）\n- `version` 字段按语义化版本号递增\n- `dist/customerComponent.js` 是最新构建产物\n\n---\n\n## 七、注意事项\n\n1. **包体积约 2.8 MB**（含 React/ReactDOM/IRT 媒体 SDK/业务组件），首次加载建议走 CDN 或拆 chunk 懒加载。\n2. **纯 ESM 包**（`type: \"module\"`）：webpack 4 / 旧版 vue-cli 默认走 CJS interop 会拿不到 `default`，请升级到 webpack 5 / vue-cli ≥ 5，或按需使用 `import(\"@crh-fe/oava-customer-sdk\")` 动态导入。\n3. **必须先 `npm install`**：项目依赖里要显式声明 `@crh-fe/oava-customer-sdk`，否则构建/运行会报模块未找到。\n4. **TURN 地址要可访问**：构造器里的 TURN 服务必须与生产/测试环境媒体平台对齐，否则视频流不通。\n5. **onEnd 仅触发一次**：会话结束、收到见证结论、转人工之外的超时/异常都会触发，记得在回调里调用 `client.destroy()` 释放资源。\n6. **来源切换**（仅在 demo 中需要）：demo 同时演示了\n   - 本地静态文件 `public/customerComponent.js`（适合 SDK 还没发布时的联调）\n   - npm 包 `@crh-fe/oava-customer-sdk`（适合已发布后回归验证）\n   切换时务必先 `destroy()` 旧实例，避免 DOM/媒体通道残留。\n","readmeFilename":"README.md"}