{"_id":"@belumi/beauty-sdk","_rev":"13-608986da6c5e2a166d17dc339446d0c0","name":"@belumi/beauty-sdk","dist-tags":{"latest":"0.2.4"},"versions":{"0.0.1":{"name":"@belumi/beauty-sdk","version":"0.0.1","keywords":["beauty","webrtc","webgl","mediapipe","livestream","ar-sticker","face-tracking"],"author":{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"},"license":"UNLICENSED","_id":"@belumi/beauty-sdk@0.0.1","maintainers":[{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"}],"dist":{"shasum":"63a18f1317fff1b4d260483322f939536ece2e4d","tarball":"https://registry.npmjs.org/@belumi/beauty-sdk/-/beauty-sdk-0.0.1.tgz","fileCount":22,"integrity":"sha512-7DBs6mPCFc40K45oYDUYX1nhkn2DpghRKCEuRcGKEqEKRWax4PNLqpwhDBYpL3ugeXoPvxnr07g8couS7K5ijQ==","signatures":[{"sig":"MEUCIH8lr7/0i/7ncRPEQv1WS/qYVXUOpEJNa5FCURwOnmRRAiEAwAXNVkpEZ2ezssSOEsHQUDP9VGzc/TsDqxVdjUs8WSE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3238953},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"1374beed847638dd1cb8e288d456da1f44bbc267","scripts":{"build":"npm run build:wasm && npm run build:stickers && npm run build:ts","clean":"rm -rf dist target crates/belumi-core/pkg src/native/belumi_core.js src/native/belumi_core.wasm src/native/belumi_core.d.ts","build:ts":"rollup -c","build:wasm":"node scripts/build-wasm.mjs","test:smoke":"node scripts/smoke-test.mjs","keys:generate":"node scripts/generate-keys.mjs","license:issue":"node scripts/generate-license.mjs","build:stickers":"node scripts/embed-stickers.mjs"},"_npmUser":{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"},"_npmVersion":"10.9.2","description":"Landmark-driven beauty engine SDK (skin smoothing, stickers, makeup, BG replace) with license-gated activation.","directories":{},"_nodeVersion":"22.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^2.8.0","dotenv":"^16.4.5","rollup":"^4.24.0","typescript":"^5.6.3","rollup-plugin-copy":"^3.5.0","@rollup/plugin-alias":"^6.0.0","rollup-plugin-string":"^3.0.0","@rollup/plugin-commonjs":"^28.0.1","@rollup/plugin-typescript":"^12.1.1","@rollup/plugin-node-resolve":"^15.3.0"},"_npmOperationalInternal":{"tmp":"tmp/beauty-sdk_0.0.1_1784207230949_0.6044041503016593","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@belumi/beauty-sdk","version":"0.0.2","keywords":["beauty","webrtc","webgl","mediapipe","livestream","ar-sticker","face-tracking"],"author":{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"},"license":"UNLICENSED","_id":"@belumi/beauty-sdk@0.0.2","maintainers":[{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"}],"dist":{"shasum":"1a8b02db05a0f11a6a65b8ad119759050d63b251","tarball":"https://registry.npmjs.org/@belumi/beauty-sdk/-/beauty-sdk-0.0.2.tgz","fileCount":26,"integrity":"sha512-yX6cccykjmWT+3XTSLTag1TpkBKw58xUVkKmWeCCjvRyWBnidr1UqrIKpTQTww7ZdfTVigxf87TtSUJePqq5dQ==","signatures":[{"sig":"MEYCIQCqFFkbH8o2enb1wW717K3MA0z37qRzt47mAVTBikmNnAIhAOeyyZFbxvK1DV3hQHoh9CnmgAoSqxfbKHy03qc3eI30","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3514770},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"9fbf1b741c9ce1a97fe9f501a0c54c0901ccd5f4","scripts":{"demo":"python3 -m http.server 8766 --directory examples","build":"npm run build:wasm && npm run build:stickers && npm run build:ts","clean":"rm -rf dist target crates/belumi-core/pkg src/native/belumi_core.js src/native/belumi_core.wasm src/native/belumi_core.d.ts","build:ts":"rollup -c","test:api":"node tests/smoke.mjs","build:wasm":"node scripts/build-wasm.mjs","test:smoke":"node scripts/smoke-test.mjs","keys:generate":"node scripts/generate-keys.mjs","license:issue":"node scripts/generate-license.mjs","build:stickers":"node scripts/embed-stickers.mjs"},"_npmUser":{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"},"_npmVersion":"10.9.2","description":"Landmark-driven beauty engine SDK (skin smoothing, stickers, makeup, BG replace) with license-gated activation.","directories":{},"_nodeVersion":"22.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^2.8.0","dotenv":"^16.4.5","rollup":"^4.24.0","typescript":"^5.6.3","rollup-plugin-copy":"^3.5.0","@rollup/plugin-alias":"^6.0.0","rollup-plugin-string":"^3.0.0","@rollup/plugin-commonjs":"^28.0.1","@rollup/plugin-typescript":"^12.1.1","@rollup/plugin-node-resolve":"^15.3.0"},"peerDependencies":{"onnxruntime-web":"^1.27.0"},"peerDependenciesMeta":{"onnxruntime-web":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/beauty-sdk_0.0.2_1784519070810_0.9187210813561775","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@belumi/beauty-sdk","version":"0.0.3","keywords":["beauty","webrtc","webgl","mediapipe","livestream","ar-sticker","face-tracking"],"author":{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"},"license":"UNLICENSED","_id":"@belumi/beauty-sdk@0.0.3","maintainers":[{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"}],"dist":{"shasum":"5b3ae67587d6033cd006b1c3e737683dc031888f","tarball":"https://registry.npmjs.org/@belumi/beauty-sdk/-/beauty-sdk-0.0.3.tgz","fileCount":26,"integrity":"sha512-ObyGcdPvcnCpH24JeEwSs86k+LcuCPCm7wcIUyiUxZaVIfj85b/4g2GVBf2CpKOfu/xu9JEWT1033N/Jx4oS3w==","signatures":[{"sig":"MEQCIEep8krRftDG3b9jOFLkaXzYQy+NvZjXuXIBp1XsBBFSAiB/UvQ0HsHYT+9L1a4BduPPbkUt2lirAWsjHrcJdS/ekQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3547175},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"a504cf333a550cf70b0054851c304ac18d1a42b1","scripts":{"demo":"python3 -m http.server 8766 --directory examples","build":"npm run build:wasm && npm run build:stickers && npm run build:ts","clean":"rm -rf dist target crates/belumi-core/pkg src/native/belumi_core.js src/native/belumi_core.wasm src/native/belumi_core.d.ts","build:ts":"rollup -c","test:api":"node tests/smoke.mjs","build:wasm":"node scripts/build-wasm.mjs","test:smoke":"node scripts/smoke-test.mjs","keys:generate":"node scripts/generate-keys.mjs","license:issue":"node scripts/generate-license.mjs","build:stickers":"node scripts/embed-stickers.mjs"},"_npmUser":{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"},"_npmVersion":"10.9.2","description":"Landmark-driven beauty engine SDK (skin smoothing, stickers, makeup, BG replace) with license-gated activation.","directories":{},"_nodeVersion":"22.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^2.8.0","dotenv":"^16.4.5","rollup":"^4.24.0","typescript":"^5.6.3","rollup-plugin-copy":"^3.5.0","@rollup/plugin-alias":"^6.0.0","rollup-plugin-string":"^3.0.0","@rollup/plugin-commonjs":"^28.0.1","@rollup/plugin-typescript":"^12.1.1","@rollup/plugin-node-resolve":"^15.3.0"},"peerDependencies":{"onnxruntime-web":"^1.27.0"},"peerDependenciesMeta":{"onnxruntime-web":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/beauty-sdk_0.0.3_1784547066299_0.5766192129733763","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@belumi/beauty-sdk","version":"0.0.4","keywords":["beauty","webrtc","webgl","mediapipe","livestream","ar-sticker","face-tracking"],"author":{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"},"license":"UNLICENSED","_id":"@belumi/beauty-sdk@0.0.4","maintainers":[{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"}],"dist":{"shasum":"482c5d09e5d287c01edd06f6f6743444fb61a330","tarball":"https://registry.npmjs.org/@belumi/beauty-sdk/-/beauty-sdk-0.0.4.tgz","fileCount":27,"integrity":"sha512-jARjaH/o99PJYpIiOH9LtI3gvHuiaMa3Cv2cd4PbGo9vwXBFe1y1pM3asUVMAxCUEuvo+KMOlVipWxINQ0A7zw==","signatures":[{"sig":"MEQCIHeeghyk0AzWvos2TMKPaf5SmsBF4tKSekSMgrMWYiezAiAdHeIKa5M+Rwtv5RvnRFQO6D5KwTCPdnJf3g+XoHdEKw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3640107},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"a4944ace5726dd9ab6c2c9f406916c0e4945f016","scripts":{"demo":"python3 -m http.server 8766 --directory examples","build":"npm run build:wasm && npm run build:stickers && npm run build:ts","clean":"rm -rf dist target crates/belumi-core/pkg src/native/belumi_core.js src/native/belumi_core.wasm src/native/belumi_core.d.ts","build:ts":"rollup -c","test:api":"node tests/smoke.mjs","build:wasm":"node scripts/build-wasm.mjs","test:smoke":"node scripts/smoke-test.mjs","keys:generate":"node scripts/generate-keys.mjs","license:issue":"node scripts/generate-license.mjs","build:stickers":"node scripts/embed-stickers.mjs"},"_npmUser":{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"},"_npmVersion":"10.9.2","description":"Landmark-driven beauty engine SDK (skin smoothing, stickers, makeup, BG replace) with license-gated activation.","directories":{},"_nodeVersion":"22.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^2.8.0","dotenv":"^16.4.5","rollup":"^4.24.0","typescript":"^5.6.3","rollup-plugin-copy":"^3.5.0","@rollup/plugin-alias":"^6.0.0","rollup-plugin-string":"^3.0.0","@rollup/plugin-commonjs":"^28.0.1","@rollup/plugin-typescript":"^12.1.1","@rollup/plugin-node-resolve":"^15.3.0"},"peerDependencies":{"onnxruntime-web":"^1.27.0"},"peerDependenciesMeta":{"onnxruntime-web":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/beauty-sdk_0.0.4_1784815516378_0.11794738174882857","host":"s3://npm-registry-packages-npm-production"}},"0.0.5":{"name":"@belumi/beauty-sdk","version":"0.0.5","keywords":["beauty","webrtc","webgl","mediapipe","livestream","ar-sticker","face-tracking"],"author":{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"},"license":"UNLICENSED","_id":"@belumi/beauty-sdk@0.0.5","maintainers":[{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"}],"dist":{"shasum":"f5628ee7cc22f1f44e7d0516b16f664249b0732a","tarball":"https://registry.npmjs.org/@belumi/beauty-sdk/-/beauty-sdk-0.0.5.tgz","fileCount":27,"integrity":"sha512-qPQ42EAJksh+uQtyjGsTOZ9LA61pz1HIWwme8PnMUOysXnhk0sm7DQAgQecgWUjIOJvkHRVxbNEfQrzlcQMkLA==","signatures":[{"sig":"MEUCIQD0o1putyUOaTfj3Pz2COAy+5CbY0ghWiQILvbKuApF2AIgCRLfFaB+xP3Gd1gAjtQFUbf2iw8Cd6DN33u2amiCNN0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3641879},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"ddb5980615835d61d3db3b80c87641e83d1e17d0","scripts":{"demo":"python3 -m http.server 8766 --directory examples","build":"npm run build:wasm && npm run build:stickers && npm run build:ts","clean":"rm -rf dist target crates/belumi-core/pkg src/native/belumi_core.js src/native/belumi_core.wasm src/native/belumi_core.d.ts","build:ts":"rollup -c","test:api":"node tests/smoke.mjs","build:wasm":"node scripts/build-wasm.mjs","test:smoke":"node scripts/smoke-test.mjs","keys:generate":"node scripts/generate-keys.mjs","license:issue":"node scripts/generate-license.mjs","build:stickers":"node scripts/embed-stickers.mjs"},"_npmUser":{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"},"_npmVersion":"10.9.2","description":"Landmark-driven beauty engine SDK (skin smoothing, stickers, makeup, BG replace) with license-gated activation.","directories":{},"_nodeVersion":"22.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^2.8.0","dotenv":"^16.4.5","rollup":"^4.24.0","typescript":"^5.6.3","rollup-plugin-copy":"^3.5.0","@rollup/plugin-alias":"^6.0.0","rollup-plugin-string":"^3.0.0","@rollup/plugin-commonjs":"^28.0.1","@rollup/plugin-typescript":"^12.1.1","@rollup/plugin-node-resolve":"^15.3.0"},"peerDependencies":{"onnxruntime-web":"^1.27.0"},"peerDependenciesMeta":{"onnxruntime-web":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/beauty-sdk_0.0.5_1784819544195_0.7875386494627947","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"@belumi/beauty-sdk","version":"0.1.0","keywords":["beauty","webrtc","webgl","mediapipe","livestream","ar-sticker","face-tracking"],"author":{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"},"license":"UNLICENSED","_id":"@belumi/beauty-sdk@0.1.0","maintainers":[{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"}],"dist":{"shasum":"6402352f75336ffacf393412c9413cd937646166","tarball":"https://registry.npmjs.org/@belumi/beauty-sdk/-/beauty-sdk-0.1.0.tgz","fileCount":28,"integrity":"sha512-hE0RZNLbM2Y9zAMRV2OgSioxApSbiolDQhwxIgcOzEMa6/e8uefCV9v2xK23lOOIdV0JAarcwt4J2woEHf87Xg==","signatures":[{"sig":"MEUCIQC8Duoqgmo4cs9YbFThnrd6uq8IDwaE71VJ16XNwHCUZwIgKkJZ/2G7txD1oauMZlMUFYkESo7+7yqltyIlXMlV0b0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3501594},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"3d3082c1501766a848a5807bac2c0d2bfb8d2949","scripts":{"demo":"python3 -m http.server 8766 --directory examples","build":"npm run build:wasm && npm run build:stickers && npm run build:ts","clean":"rm -rf dist target crates/belumi-core/pkg src/native/belumi_core.js src/native/belumi_core.wasm src/native/belumi_core.d.ts","build:ts":"rollup -c","test:api":"node tests/smoke.mjs","build:wasm":"node scripts/build-wasm.mjs","test:smoke":"node scripts/smoke-test.mjs","demo:examples":"python3 -m http.server 8766 --directory examples","keys:generate":"node scripts/generate-keys.mjs","license:issue":"node scripts/generate-license.mjs","build:stickers":"node scripts/embed-stickers.mjs"},"_npmUser":{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"},"_npmVersion":"10.9.2","description":"Landmark-driven beauty engine SDK (skin smoothing, stickers, makeup, BG replace) with license-gated activation.","directories":{},"_nodeVersion":"22.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^2.8.0","dotenv":"^16.4.5","rollup":"^4.24.0","typescript":"^5.6.3","rollup-plugin-copy":"^3.5.0","@rollup/plugin-alias":"^6.0.0","rollup-plugin-string":"^3.0.0","@rollup/plugin-terser":"^1.0.0","@rollup/plugin-commonjs":"^28.0.1","@rollup/plugin-typescript":"^12.1.1","@rollup/plugin-node-resolve":"^15.3.0"},"peerDependencies":{"onnxruntime-web":"^1.27.0"},"peerDependenciesMeta":{"onnxruntime-web":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/beauty-sdk_0.1.0_1785080891642_0.818086941745445","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@belumi/beauty-sdk","version":"0.1.1","keywords":["beauty","webrtc","webgl","mediapipe","livestream","ar-sticker","face-tracking"],"author":{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"},"license":"UNLICENSED","_id":"@belumi/beauty-sdk@0.1.1","maintainers":[{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"}],"dist":{"shasum":"217c90550ecc2c8c4a06cbe6c79b821ddd4fcfbf","tarball":"https://registry.npmjs.org/@belumi/beauty-sdk/-/beauty-sdk-0.1.1.tgz","fileCount":28,"integrity":"sha512-kGXvyXxa224qznIpme7TN44/5iDguyCMRPOL++znROE0wYL5UlI9X56/UXdRIwqJbXEQQv2bVK4mVr3DclJmYg==","signatures":[{"sig":"MEYCIQDdKOCCDxF19yYd548KN4GWItOzoXQzYcsvYrYvAfUaMgIhALw2Wm0GMCrzSd9t6OUGYdvS/YEzfJ8tFNy/KINRVvD3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3501668},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"1810947e5f49ccb8f8a1334d3bac931de96c0752","scripts":{"demo":"python3 -m http.server 8766 --directory examples","build":"npm run build:wasm && npm run build:stickers && npm run build:ts","clean":"rm -rf dist target crates/belumi-core/pkg src/native/belumi_core.js src/native/belumi_core.wasm src/native/belumi_core.d.ts","build:ts":"rollup -c","test:api":"node tests/smoke.mjs","build:wasm":"node scripts/build-wasm.mjs","test:smoke":"node scripts/smoke-test.mjs","demo:examples":"python3 -m http.server 8766 --directory examples","keys:generate":"node scripts/generate-keys.mjs","license:issue":"node scripts/generate-license.mjs","build:stickers":"node scripts/embed-stickers.mjs"},"_npmUser":{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"},"_npmVersion":"10.9.2","description":"Landmark-driven beauty engine SDK (skin smoothing, stickers, makeup, BG replace) with license-gated activation.","directories":{},"_nodeVersion":"22.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^2.8.0","dotenv":"^16.4.5","rollup":"^4.24.0","typescript":"^5.6.3","rollup-plugin-copy":"^3.5.0","@rollup/plugin-alias":"^6.0.0","rollup-plugin-string":"^3.0.0","@rollup/plugin-terser":"^1.0.0","@rollup/plugin-commonjs":"^28.0.1","@rollup/plugin-typescript":"^12.1.1","@rollup/plugin-node-resolve":"^15.3.0"},"peerDependencies":{"onnxruntime-web":"^1.27.0"},"peerDependenciesMeta":{"onnxruntime-web":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/beauty-sdk_0.1.1_1785115193477_0.6722270627054596","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@belumi/beauty-sdk","version":"0.1.2","keywords":["beauty","webrtc","webgl","mediapipe","livestream","ar-sticker","face-tracking"],"author":{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"},"license":"UNLICENSED","_id":"@belumi/beauty-sdk@0.1.2","maintainers":[{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"}],"dist":{"shasum":"9f3c22b278b578a6aa4694056e913e20cf31d068","tarball":"https://registry.npmjs.org/@belumi/beauty-sdk/-/beauty-sdk-0.1.2.tgz","fileCount":28,"integrity":"sha512-N7rCryQJzaPdXwp8r8UsvJAeXtaedZjrRFnXhtWhtn5dsGSz5EVxEGWR8QMQaAHQlgI/se4HURk41cPInK/pWA==","signatures":[{"sig":"MEUCIECiF8cceU5LvzQSshvyOD2ZYIUUXoil1dv3eWzyLGE6AiEAiXG1lE4Rnyxi3dyNBbqigxj8eNkFjB3S7GyP1+TiBl4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3503871},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"2d6c8e45e2c2340cbdf013b88f57164fc9ea4187","scripts":{"demo":"python3 -m http.server 8766 --directory examples","build":"npm run build:wasm && npm run build:stickers && npm run build:ts","clean":"rm -rf dist target crates/belumi-core/pkg src/native/belumi_core.js src/native/belumi_core.wasm src/native/belumi_core.d.ts","build:ts":"rollup -c","test:api":"node tests/smoke.mjs","build:wasm":"node scripts/build-wasm.mjs","test:smoke":"node scripts/smoke-test.mjs","demo:examples":"python3 -m http.server 8766 --directory examples","keys:generate":"node scripts/generate-keys.mjs","license:issue":"node scripts/generate-license.mjs","build:stickers":"node scripts/embed-stickers.mjs"},"_npmUser":{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"},"_npmVersion":"10.9.2","description":"Landmark-driven beauty engine SDK (skin smoothing, stickers, makeup, BG replace) with license-gated activation.","directories":{},"_nodeVersion":"22.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tslib":"^2.8.0","dotenv":"^16.4.5","rollup":"^4.24.0","typescript":"^5.6.3","rollup-plugin-copy":"^3.5.0","@rollup/plugin-alias":"^6.0.0","rollup-plugin-string":"^3.0.0","@rollup/plugin-terser":"^1.0.0","@rollup/plugin-commonjs":"^28.0.1","@rollup/plugin-typescript":"^12.1.1","@rollup/plugin-node-resolve":"^15.3.0"},"peerDependencies":{"onnxruntime-web":"^1.27.0"},"peerDependenciesMeta":{"onnxruntime-web":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/beauty-sdk_0.1.2_1785139712066_0.725733503362572","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@belumi/beauty-sdk","version":"0.2.0","keywords":["beauty","webrtc","webgl","mediapipe","livestream","ar-sticker","face-tracking"],"author":{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"},"license":"UNLICENSED","_id":"@belumi/beauty-sdk@0.2.0","maintainers":[{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"}],"dist":{"shasum":"5bbd0cf43c06914de2dc4cf2b43a9b13f734dace","tarball":"https://registry.npmjs.org/@belumi/beauty-sdk/-/beauty-sdk-0.2.0.tgz","fileCount":68,"integrity":"sha512-NcDvt9PKknjd5jza/DWFLDqP0phS5GtM7P9cQ/jjZaQWQxkUp+P70JOqkPQIIvpXRu8009W8c5Bf2N1zwm0dTQ==","signatures":[{"sig":"MEUCIFOTKIHj+yw/7ZqH91rj9mJRi4rRGQUfxRtPeNQzy3VqAiEAr/hXYkMSc3MUqE+CtDTGWVcrg78r0ZHBjqCyz72Ttqg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3775825},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"1a3162739a1508ca43db222ee82f921d6fc72229","scripts":{"demo":"node scripts/dev-server.mjs","test":"npm run test:unit && npm run test:boundary && npm run test:e2e","build":"npm run build:wasm && npm run build:stickers && npm run build:ts","clean":"rm -rf dist target crates/belumi-core/pkg src/native/belumi_core.js src/native/belumi_core.wasm src/native/belumi_core.d.ts","baseline":"node scripts/collect-v1-baseline.mjs","build:ts":"rollup -c","test:api":"node tests/smoke.mjs","test:e2e":"playwright test","test:unit":"vitest run","build:wasm":"node scripts/build-wasm.mjs","test:smoke":"node scripts/smoke-test.mjs","demo:legacy":"python3 -m http.server 8766 --directory examples","demo:examples":"node scripts/dev-server.mjs","keys:generate":"node scripts/generate-keys.mjs","license:issue":"node scripts/generate-license.mjs","test:boundary":"node scripts/check-boundaries.mjs","build:stickers":"node scripts/embed-stickers.mjs","test:unit:watch":"vitest"},"_npmUser":{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"},"_npmVersion":"10.9.2","description":"Landmark-driven beauty engine SDK (skin smoothing, stickers, makeup, BG replace) with license-gated activation.","directories":{},"_nodeVersion":"22.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^29.1.1","tslib":"^2.8.0","dotenv":"^16.4.5","rollup":"^4.24.0","vitest":"^2.1.9","typescript":"^5.6.3","@playwright/test":"^1.62.0","rollup-plugin-copy":"^3.5.0","@rollup/plugin-alias":"^6.0.0","rollup-plugin-string":"^3.0.0","@rollup/plugin-terser":"^1.0.0","@rollup/plugin-commonjs":"^28.0.1","@rollup/plugin-typescript":"^12.1.1","@rollup/plugin-node-resolve":"^15.3.0"},"peerDependencies":{"onnxruntime-web":"^1.27.0"},"peerDependenciesMeta":{"onnxruntime-web":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/beauty-sdk_0.2.0_1785670347733_0.312665635875518","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@belumi/beauty-sdk","version":"0.2.1","keywords":["beauty","webrtc","webgl","mediapipe","livestream","ar-sticker","face-tracking"],"author":{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"},"license":"UNLICENSED","_id":"@belumi/beauty-sdk@0.2.1","maintainers":[{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"}],"dist":{"shasum":"4a4f684a102f58c473a09f956fbbda4bd80aebc3","tarball":"https://registry.npmjs.org/@belumi/beauty-sdk/-/beauty-sdk-0.2.1.tgz","fileCount":68,"integrity":"sha512-7jLjAYdajj2Jvi6xXLSIHPCgIX3+Q1VXs5yPU0JhIxZ/EIxudRC1tWGDZgtMJ9tIDlGiF0vIv5R8jpRrVojylA==","signatures":[{"sig":"MEUCIQDeYZDyjnVUxAy8luyQmILAgzShS2fHG34C0TfWKBCc/QIgXDS4QKp5fZQgleB+maIa4Ez/AuwMyh8QHV7U4pD7BMU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3777442},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"70352ba7e469d57a568641b7fd857163e31ff91e","scripts":{"demo":"node scripts/dev-server.mjs","test":"npm run test:unit && npm run test:boundary && npm run test:e2e","build":"npm run build:wasm && npm run build:stickers && npm run build:ts","clean":"rm -rf dist target crates/belumi-core/pkg src/native/belumi_core.js src/native/belumi_core.wasm src/native/belumi_core.d.ts","baseline":"node scripts/collect-v1-baseline.mjs","build:ts":"rollup -c","test:api":"node tests/smoke.mjs","test:e2e":"playwright test","test:unit":"vitest run","build:wasm":"node scripts/build-wasm.mjs","test:smoke":"node scripts/smoke-test.mjs","demo:legacy":"python3 -m http.server 8766 --directory examples","demo:examples":"node scripts/dev-server.mjs","keys:generate":"node scripts/generate-keys.mjs","license:issue":"node scripts/generate-license.mjs","test:boundary":"node scripts/check-boundaries.mjs","build:stickers":"node scripts/embed-stickers.mjs","test:unit:watch":"vitest"},"_npmUser":{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"},"_npmVersion":"10.9.2","description":"Landmark-driven beauty engine SDK (skin smoothing, stickers, makeup, BG replace) with license-gated activation.","directories":{},"_nodeVersion":"22.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^29.1.1","tslib":"^2.8.0","dotenv":"^16.4.5","rollup":"^4.24.0","vitest":"^2.1.9","typescript":"^5.6.3","@playwright/test":"^1.62.0","rollup-plugin-copy":"^3.5.0","@rollup/plugin-alias":"^6.0.0","rollup-plugin-string":"^3.0.0","@rollup/plugin-terser":"^1.0.0","@rollup/plugin-commonjs":"^28.0.1","@rollup/plugin-typescript":"^12.1.1","@rollup/plugin-node-resolve":"^15.3.0"},"peerDependencies":{"onnxruntime-web":"^1.27.0"},"peerDependenciesMeta":{"onnxruntime-web":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/beauty-sdk_0.2.1_1785742051281_0.9778871636035131","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@belumi/beauty-sdk","version":"0.2.2","keywords":["beauty","webrtc","webgl","mediapipe","livestream","ar-sticker","face-tracking"],"author":{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"},"license":"UNLICENSED","_id":"@belumi/beauty-sdk@0.2.2","maintainers":[{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"}],"dist":{"shasum":"2a3116524fef10f1eb7b0b53fa73116f5fc1b82e","tarball":"https://registry.npmjs.org/@belumi/beauty-sdk/-/beauty-sdk-0.2.2.tgz","fileCount":69,"integrity":"sha512-ydT+AIsEWr7/5FUHimPFap4uYypt7kVeqZrfpHWW0FO0DhTZfZktUDURaIjRdQfmbpCf8MtQ/W5gkzD9o7RtSg==","signatures":[{"sig":"MEUCIQDFRlWPD18SV8lx6ZJrb70Z5TJWKBwMhkFSi8oGX+2M9wIgYLr0wITx62pRp5JLkVG3zXykqnF9an8HYaKDXgiyILs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3785457},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"9d33c1cb5b5b907c7580d00289a38df2a509d9e9","scripts":{"demo":"node scripts/dev-server.mjs","test":"npm run test:unit && npm run test:boundary && npm run test:e2e","build":"npm run build:wasm && npm run build:stickers && npm run build:ts","clean":"rm -rf dist target crates/belumi-core/pkg src/native/belumi_core.js src/native/belumi_core.wasm src/native/belumi_core.d.ts","baseline":"node scripts/collect-v1-baseline.mjs","build:ts":"rollup -c","test:api":"node tests/smoke.mjs","test:e2e":"playwright test","test:unit":"vitest run","build:wasm":"node scripts/build-wasm.mjs","test:smoke":"node scripts/smoke-test.mjs","demo:legacy":"python3 -m http.server 8766 --directory examples","demo:examples":"node scripts/dev-server.mjs","keys:generate":"node scripts/generate-keys.mjs","license:issue":"node scripts/generate-license.mjs","test:boundary":"node scripts/check-boundaries.mjs","build:stickers":"node scripts/embed-stickers.mjs","test:unit:watch":"vitest"},"_npmUser":{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"},"_npmVersion":"10.9.2","description":"Landmark-driven beauty engine SDK (skin smoothing, stickers, makeup, BG replace) with license-gated activation.","directories":{},"_nodeVersion":"22.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^29.1.1","tslib":"^2.8.0","dotenv":"^16.4.5","rollup":"^4.24.0","vitest":"^2.1.9","typescript":"^5.6.3","@playwright/test":"^1.62.0","rollup-plugin-copy":"^3.5.0","@rollup/plugin-alias":"^6.0.0","rollup-plugin-string":"^3.0.0","@rollup/plugin-terser":"^1.0.0","@rollup/plugin-commonjs":"^28.0.1","@rollup/plugin-typescript":"^12.1.1","@rollup/plugin-node-resolve":"^15.3.0"},"peerDependencies":{"onnxruntime-web":"^1.27.0"},"peerDependenciesMeta":{"onnxruntime-web":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/beauty-sdk_0.2.2_1785760593439_0.12986003493748433","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@belumi/beauty-sdk","version":"0.2.3","keywords":["beauty","webrtc","webgl","mediapipe","livestream","ar-sticker","face-tracking"],"author":{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"},"license":"UNLICENSED","_id":"@belumi/beauty-sdk@0.2.3","maintainers":[{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"}],"dist":{"shasum":"dafcee450223050174791f17d9a43bffd475058f","tarball":"https://registry.npmjs.org/@belumi/beauty-sdk/-/beauty-sdk-0.2.3.tgz","fileCount":70,"integrity":"sha512-P4BiORLFhlrcL/1rhEZ7s7e9rdgxsIfzx2VXPMFS0FolJH93D5+SnIMMJOT94k9tUjtzAPhEGwN/5IlcAuuyiw==","signatures":[{"sig":"MEQCICaPfAsXEFr2HUaUXmPbdjFrqNjfaXWdgVIkn9lkEeF1AiA65yViO1h1E25xDoyuh8mU7ez7PYmsBPS33i00tG36Lg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3803953},"main":"./dist/index.cjs","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"9ec31795265abc3cab6458ef4c8541c04278aca4","scripts":{"demo":"node scripts/dev-server.mjs","test":"npm run test:unit && npm run test:boundary && npm run test:e2e","build":"npm run build:wasm && npm run build:stickers && npm run build:ts","clean":"rm -rf dist target crates/belumi-core/pkg src/native/belumi_core.js src/native/belumi_core.wasm src/native/belumi_core.d.ts","baseline":"node scripts/collect-v1-baseline.mjs","build:ts":"rollup -c","test:api":"node tests/smoke.mjs","test:e2e":"playwright test","test:unit":"vitest run","build:wasm":"node scripts/build-wasm.mjs","test:smoke":"node scripts/smoke-test.mjs","demo:legacy":"python3 -m http.server 8766 --directory examples","demo:examples":"node scripts/dev-server.mjs","keys:generate":"node scripts/generate-keys.mjs","license:issue":"node scripts/generate-license.mjs","test:boundary":"node scripts/check-boundaries.mjs","build:stickers":"node scripts/embed-stickers.mjs","test:unit:watch":"vitest"},"_npmUser":{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"},"_npmVersion":"10.9.2","description":"Landmark-driven beauty engine SDK (skin smoothing, stickers, makeup, BG replace) with license-gated activation.","directories":{},"_nodeVersion":"22.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^29.1.1","tslib":"^2.8.0","dotenv":"^16.4.5","rollup":"^4.24.0","vitest":"^2.1.9","typescript":"^5.6.3","@playwright/test":"^1.62.0","rollup-plugin-copy":"^3.5.0","@rollup/plugin-alias":"^6.0.0","rollup-plugin-string":"^3.0.0","@rollup/plugin-terser":"^1.0.0","@rollup/plugin-commonjs":"^28.0.1","@rollup/plugin-typescript":"^12.1.1","@rollup/plugin-node-resolve":"^15.3.0"},"peerDependencies":{"onnxruntime-web":"^1.27.0"},"peerDependenciesMeta":{"onnxruntime-web":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/beauty-sdk_0.2.3_1785771999155_0.5997159632211093","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"_id":"@belumi/beauty-sdk@0.2.4","dist":{"shasum":"7c39b4bc9254441209c44a41962aeab746ea48b9","tarball":"https://registry.npmjs.org/@belumi/beauty-sdk/-/beauty-sdk-0.2.4.tgz","fileCount":80,"integrity":"sha512-MYOD+jQtjvpeWkw31lpsrEUvxAnMjqIjsLiRF7yzNRtB8QdPQrb+On3g1qsNZ7LUaWUOeSTtySthiKM06WCVGg==","signatures":[{"sig":"MEYCIQCyCl+UmI5C7CZ74J+ig2WXiMOePwWX1CNFDH21j8kqswIhAJONR5brFtwPWabLSvk7O8ktSnofx6OEWVI/67jUU7SO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCnahXg3KbiQ2aTusXXDfzqmqPsw6yFM0ACHzR6a6GoZgIgFDalwJo+tUR3+y3jrbl7U3ksd6up3HOgxujvqJsGfxk="}],"unpackedSize":3854316},"main":"./dist/index.cjs","name":"@belumi/beauty-sdk","type":"module","types":"./dist/index.d.ts","author":{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"},"module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"f6cfb72742d5304473dcd9e129bdf90a484a7ca4","license":"UNLICENSED","scripts":{"demo":"node scripts/dev-server.mjs","test":"npm run test:unit && npm run test:boundary && npm run test:e2e","build":"npm run build:wasm && npm run build:stickers && npm run build:ts","clean":"rm -rf dist target crates/belumi-core/pkg src/native/belumi_core.js src/native/belumi_core.wasm src/native/belumi_core.d.ts","baseline":"node scripts/collect-v1-baseline.mjs","build:ts":"rollup -c","test:api":"node tests/smoke.mjs","test:e2e":"playwright test","test:unit":"vitest run","build:wasm":"node scripts/build-wasm.mjs","test:smoke":"node scripts/smoke-test.mjs","demo:legacy":"python3 -m http.server 8766 --directory examples","demo:examples":"node scripts/dev-server.mjs","keys:generate":"node scripts/generate-keys.mjs","license:issue":"node scripts/generate-license.mjs","test:boundary":"node scripts/check-boundaries.mjs","build:stickers":"node scripts/embed-stickers.mjs","test:unit:watch":"vitest"},"version":"0.2.4","_npmUser":{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"},"keywords":["beauty","webrtc","webgl","mediapipe","livestream","ar-sticker","face-tracking"],"_npmVersion":"10.9.2","description":"Landmark-driven beauty engine SDK (skin smoothing, stickers, makeup, BG replace) with license-gated activation.","directories":{},"maintainers":[{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"}],"_nodeVersion":"22.16.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jsdom":"^29.1.1","tslib":"^2.8.0","dotenv":"^16.4.5","rollup":"^4.24.0","vitest":"^2.1.9","typescript":"^5.6.3","@playwright/test":"^1.62.0","rollup-plugin-copy":"^3.5.0","@rollup/plugin-alias":"^6.0.0","rollup-plugin-string":"^3.0.0","@rollup/plugin-terser":"^1.0.0","@rollup/plugin-commonjs":"^28.0.1","@rollup/plugin-typescript":"^12.1.1","@rollup/plugin-node-resolve":"^15.3.0"},"peerDependencies":{"onnxruntime-web":"^1.27.0"},"peerDependenciesMeta":{"onnxruntime-web":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/beauty-sdk_0.2.4_1788170987407_0.29578813852496055"}}},"time":{"created":"2026-07-16T13:07:10.784Z","modified":"2026-08-31T10:09:47.709Z","0.0.1":"2026-07-16T13:07:11.142Z","0.0.2":"2026-07-20T03:44:31.035Z","0.0.3":"2026-07-20T11:31:06.515Z","0.0.4":"2026-07-23T14:05:16.562Z","0.0.5":"2026-07-23T15:12:24.403Z","0.1.0":"2026-07-26T15:48:11.835Z","0.1.1":"2026-07-27T01:19:53.705Z","0.1.2":"2026-07-27T08:08:32.284Z","0.2.0":"2026-08-02T11:32:27.967Z","0.2.1":"2026-08-03T07:27:31.521Z","0.2.2":"2026-08-03T12:36:33.657Z","0.2.3":"2026-08-03T15:46:39.380Z","0.2.4":"2026-08-31T10:09:47.576Z"},"author":{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"},"license":"UNLICENSED","keywords":["beauty","webrtc","webgl","mediapipe","livestream","ar-sticker","face-tracking"],"description":"Landmark-driven beauty engine SDK (skin smoothing, stickers, makeup, BG replace) with license-gated activation.","maintainers":[{"name":"chuyouxin","email":"chuyouxin2005@gmail.com"}],"readme":"# @belumi/beauty-sdk\n\n**语言**: [English](./README.md) · **简体中文**\n\n浏览器直播美颜引擎，基于面部关键点驱动。集磨皮、美白、柔光、\n肌色调整、MLS 五向双向形变（瘦脸/下巴/瘦鼻/大眼/丰唇，全部支持\n反向）、完整眼妆（眉毛+眼线+多层眼影+美瞳+眼白+眼神光）、口红、\nLUT 滤镜、背景虚化/替换、3D 关键点驱动贴纸于一个 npm 包内。\n\n需要 SDK 发行方签发的 license 才能激活。\n\n**状态**：`v0.1.x` — alpha。API 在 v1.0 之前可能演进。\n\n---\n\n## 安装\n\n```bash\nnpm install @belumi/beauty-sdk --legacy-peer-deps\n```\n\nSDK 已预编译（WASM 内联到 bundle）。消费方**无需**装 Rust 或其它\n原生依赖。\n\n## 快速上手\n\n```js\nimport {\n  ensurePrism,\n  setBeautyParam,\n  getProcessedStream,\n  dispose,\n  BelumiLicenseError,\n} from '@belumi/beauty-sdk'\n\nasync function startBeauty(previewEl) {\n  try {\n    const { capabilities, license } = await ensurePrism(previewEl, {\n      licenseKey: process.env.BELUMI_LICENSE_KEY, // 或按你框架方式读 runtime config\n      enforceLicense: true,\n    })\n\n    // 调美颜参数（sync，滑块 @input 60Hz 拖动安全）\n    setBeautyParam('Skin', 'Beauty', 'skinSmoothingStrength', 0.6)\n    setBeautyParam('Skin', 'Beauty', 'skinWhiteningStrength', 0.4)\n    setBeautyParam('Face', 'Beauty', 'faceSlimAmount', 0.3)\n\n    // 把处理后的流喂给 RTC SDK\n    const processedStream = getProcessedStream(30)\n    // AgoraRTC.createCustomVideoTrack({ mediaStreamTrack: processedStream.getVideoTracks()[0] })\n\n    return capabilities\n  } catch (err) {\n    if (err instanceof BelumiLicenseError) {\n      console.error(`License 拒绝（code ${err.code}）:`, err.message)\n    }\n    throw err\n  }\n}\n\n// 会话结束\nawait dispose()\n```\n\n## 功能清单\n\n| 能力 | License feature flag |\n|---|---|\n| 关键点驱动 3D AR 贴纸（猫耳 / 面具等）| `stickers` |\n| 磨皮 — bilateral 双边滤波，只平色度 + 振幅感知阈值 | `skin_smoothing` |\n| 美白 — Y 通道 tone curve + Cb/Cr shift | `whitening` |\n| **柔光** — 高光区 Y 提亮 + 微粉调 rosy chrominance shift | `softlight` |\n| **肌色调整** — 目标 CbCr overlay 保留原 Y | `skin_color` |\n| **五向形变（双向 slider）**— 瘦脸/下巴/鼻/眼/唇，67 控制点 MLS warp + Catmull-Rom 样条 + iris/眉毛/边缘 anchor | `face_slim` |\n| 口红 — 20 点唇形 landmark + multiply blend | `lip_makeup` |\n| 眼妆 — 眉毛/眼线/眼影/美瞳/眼白提亮/眼神光 | `eyes_makeup` |\n| **眼妆** — 8 层控件（眉毛含 9 种眉形 + 眼线 + 上下/眼尾/眼头/卧蚕眼影 + 美瞳 + 眼白 + 眼神光）+ 11 preset look | `eyes_makeup` |\n| LUT 滤镜（色彩分级） | `filters` |\n| 背景虚化 | `bg_blur` |\n| 背景替换（SelfieMulticlass 分割） | `bg_replace` |\n| ABPN AI 祛痘（离线一次性，65MB ONNX） | (内置) |\n\n你的 license 决定能用哪些功能——申请 license 时明确需要的功能集。\n\n> ⚠️ **命名坑**：上表 `License feature flag` 一列是**签 license 时 CSV\n> 里用的名字**（snake_case），要跟 Rust core 的 `from_csv` 匹配串\n> 一致。SDK 运行时返回的 `capabilities` 对象、`setBeautyParam` 的参数\n> 键都用 **camelCase**（例如 `skinSmoothing`, `bgBlur`），形似但**不能\n> 互换**。签 license 时**只能**用上表的 snake_case 名字——用 camelCase\n> 会静默 fallthrough 到 `0`（功能关闭），签出来的 license 看着 valid\n> 但对应能力就是不生效。完整 snake_case 白名单 + 一行 copy-paste\n> 命令见 `docs/DEPLOY.md §4.1`。\n\n## API 参考\n\n### `ensurePrism(previewEl, options): Promise<{ instance, capabilities, license }>`\n\n激活 SDK。校验 license，加载 WASM 核心，初始化 WebGL 2 + MediaPipe。\n\n**参数**\n\n| 名称 | 类型 | 说明 |\n|---|---|---|\n| `licenseKey` | `string`（必填）| SDK 发行方签发的 license 字符串 |\n| `enforceLicense` | `boolean`（默认 `true`）| `false` 时 license 无效仅 warn 不 throw，返回禁用状态 |\n| `mediapipeBaseUrl` | `string` | 自定义 MediaPipe WASM + 模型 CDN |\n| `stickerCdnBase` | `string` | 自定义 sticker PNG 托管（默认用内嵌图片）|\n| `abpnModelBase` | `string` | ABPN ONNX 模型的 base URL（`applyABPN()` 用）。不打算用祛痘可以省略 |\n| `metricsReporter` | `(event, value) => void` | 观测回调 |\n| `i18n` | `(key) => string` | 用户可见错误翻译 |\n| `onCapabilityDowngrade` | `(reason) => void` | 低端设备自动降级时触发 |\n\n**返回** `{ instance, capabilities, license }`：\n\n- `capabilities` — `{ stickers, skinSmoothing, whitening, softlight, skinColor, faceSlim, reshape, eyesMakeup, lipMakeup, makeup, filters, bgBlur, bgReplace }`（每项布尔，跟 license 一致）。`makeup` 是**虚拟伞形** = `eyesMakeup || lipMakeup`；实际 license bits 是 `eyes_makeup`（老）和 `lip_makeup`（新，2026-07-27 从 `makeup` 重命名）。`reshape`（2026-07-27 从 `retouch` 重命名）严格跟随 `face_slim` bit。\n- `license` — `{ valid, expiresAt: number, errorCode: LicenseErrorCode }`\n\n**抛异常** `BelumiLicenseError`（Error 子类），当 `enforceLicense !== false`\n且 license 无效。`.code` 为 `LicenseErrorCode` 之一：`BadSignature` /\n`BadFingerprint` / `Expired` / `DomainMismatch` / `MalformedStructure` /\n`UnparseablePayload`。\n\n### `setBeautyParam(node, component, parameter, value)`\n\n调美颜参数。sync 调用，安全用于滑块 `@input` 60 Hz 拖动。取值范围\n按参数类型见 Range 列。`hex` key 传 `#rrggbb` 字符串，其他传 number。\n\n| Node | Component | Parameter | Range | 用途 |\n|---|---|---|---|---|\n| `Skin` | `Beauty` | `skinSmoothingStrength` | `[0, 1]` | 磨皮 bilateral 强度 |\n| `Skin` | `Beauty` | `skinWhiteningStrength` | `[0, 1]` | 美白 tone curve 强度 |\n| `Softlight` | `Beauty` | `strength` | `[0, 1]` | 柔光 强度 |\n| `SkinColor` | `Beauty` | `strength` | `[0, 1]` | 肌色 overlay 强度 |\n| `SkinColor` | `Beauty` | `hex` | `#rrggbb` | 肌色 目标颜色 |\n| `Face` | `Beauty` | `faceSlimAmount` | `[-1, 1]` | 瘦脸 (-) 胖脸 / (+) 瘦脸 |\n| `Face` | `Beauty` | `chinShapeAmount` | `[-1, 1]` | 下巴 (-) 圆下巴 / (+) 尖 V-line |\n| `Nose` | `Beauty` | `noseSlimAmount` | `[-1, 1]` | 鼻子 (-) 宽鼻 / (+) 瘦鼻 |\n| `Eyes` | `Beauty` | `eyesEnlargeAmount` | `[-1, 1]` | 眼睛 (-) 缩眼 / (+) 大眼 |\n| `Lips` | `Beauty` | `lipsPlumpAmount` | `[-1, 1]` | 嘴唇 (-) 薄唇 / (+) 丰唇 |\n\n带符号的参数走 `pow(|v|, 1.3)` gamma 曲线，低滑块值感知更柔和。反向\n（负值）方向 chin/nose/lips 会额外 1.8× 放大补偿\"反向阈值高\"的视觉\n落差。\n\n### `setEyesMakeup(config)`\n\n配置眼妆 overlay。部分 config 会 merge 到当前状态——只传要改的\n字段即可。所有 layer 默认关闭 / 0。\n\n```js\nsetEyesMakeup({\n  brows: { enabled: true, color: '#3a2a1a', style: 'natural' },\n  liner: { enabled: true, color: '#1a1a1a' },\n  shadow: { enabled: true, color: '#a67856' },\n  shadowLower: false,       // 下眼影\n  shadowTail: false,        // 眼尾深化（烟熏灵魂）\n  innerHighlight: false,    // 眼头提亮\n  aegyoSal: false,          // 卧蚕\n  iris: { enabled: false, color: '#5b8c5a' },\n  whitening: 0,             // 0-1 眼白提亮\n  flare: 0,                 // 0-1 眼神光\n})\n```\n\n**眉形** (`brows.style`)：`natural` / `arch` / `straight` / `tapered` /\n`thick` / `short` / `high` / `curved` / `sad` 共 9 种。\n\n### `applyEyesMakeupLook(lookId): boolean`\n\n一键套用 preset look。返回 `true` 表示 id 存在，`false` 表示未知\nid。会覆盖当前 eyesConfig。\n\n```js\napplyEyesMakeupLook('smoky')  // 深邃烟熏\n```\n\n### `getEyesMakeupLooks(): Array<{ id, label, hint, config }>` / `EYE_LOOKS`\n\n返回 11 个 preset。`EYE_LOOKS` 是同一份数组的命名导出，方便直接用于\n下拉菜单。Preset id：`natural` / `sweet` / `smoky` / `jp-clean` /\n`kr-arch` / `willow` / `gentle-moon` / `puppy` / `anime` / `red-lens` /\n`reset`。\n\n### `getEyesMakeupConfig(): object`\n\n返回当前 merge 完的眼妆 config。\n\n### `getProcessedStream(fps = 30): MediaStream`\n\n返回处理后的视频流。喂给 Agora / LiveKit / 任意 WebRTC 推流器。\n\n### `switchEffect(url): Promise<void>` / `clearEffect(): Promise<void>`\n\n加载/移除 AR / 背景 / 贴纸 / 滤镜 / 口红 effect。URL scheme：\n- `sticker:<id>` — 3D 关键点贴纸\n- `bg:blur:<0-1>` / `bg:color:<#hex>` / `bg:image:<url>` — 背景模式\n- `filter:<id>` — LUT 色彩分级（`cool` / `rose` / `warm` / `vintage` / `bw` / `snow`）\n- `makeup:lip:<#hex>` / `makeup:lip:<#hex>:<intensity>` / `makeup:lip:off` — 口红\n\n### `applyABPN(): Promise<ImageData>`\n\n一次性 AI 祛痘（Alibaba ABPN, CVPR 2022, Apache 2.0）。抓当前 canvas\n快照，跑 3 模型 pipeline（detection → inpainting → generator），返\nretouch 后的 `ImageData`。\n\n**非实时** — WASM 单帧 5-15s。适用于用户触发的静态照片处理，不用于\n直播主流。首次调用会从 `abpnModelBase` 下载 ~65MB ONNX，之后缓存。\n\n需要在 `ensurePrism` options 里配 `abpnModelBase` 指向托管 3 个文件\n的目录：\n- `detection_uint8.onnx`, `inpainting_uint8.onnx`, `abpn_uint8.onnx`\n\n参考模型在 `belumi-beauty-sdk/models/abpn/`。把它们托管到自己的 CDN\n再设 `abpnModelBase`。\n\n**局限**：ABPN 训练数据是重痤疮图像，对雀斑 / 老年斑的 detection\ncoverage 通常 0% —— 检测网 recognized 不出这类瑕疵。\n\n### `dispose(): Promise<void>`\n\n释放 WebGL 上下文、结束 MediaPipe worker、关摄像头。\n\n### `coreVersion(): Promise<string>`\n\nBuild 版本标识（如 `belumi-core@0.1.0`）。工单里带上有助排查。\n\n## License 系统\n\nLicense 是 URL-safe 字符串，由 SDK 发行方签发。每份 license 授权指定\ndomain 上的指定功能集，有指定 TTL。\n\n### 申请 license\n\n跟 SDK 发行方提供：\n\n- 客户 / 项目名\n- SDK 会跑的 domain（支持 `*.example.com` 通配）\n- 需要的功能集\n- 期望 TTL（一般 90-365 天）\n\n拿到一段 license 字符串。存到环境变量里——**绝对不要写死在源码**。\n\n### 配 license\n\n按你框架的 runtime config 机制配。\n\n**Nuxt 2**（需要额外加 webpack 4 transpile）：\n\n```js\n// nuxt.config.js\nexport default {\n  publicRuntimeConfig: {\n    belumiLicense: process.env.BELUMI_LICENSE_KEY || '',\n  },\n  build: {\n    transpile: ['@belumi/beauty-sdk'],\n  },\n}\n\n// 代码里:\nlicenseKey: window.$nuxt.$config.belumiLicense\n```\n\n**Nuxt 3** — 不需要 transpile：\n\n```ts\n// nuxt.config.ts\nruntimeConfig: {\n  public: { belumiLicense: '' },  // 从 NUXT_PUBLIC_BELUMI_LICENSE 注入\n}\n// 代码里:\nlicenseKey: useRuntimeConfig().public.belumiLicense\n```\n\n**Vite / Next.js / 普通 webpack 5** — 分别读 `import.meta.env` /\n`process.env.NEXT_PUBLIC_BELUMI_LICENSE` / `process.env.BELUMI_LICENSE_KEY`。\n无需 bundler 配置。\n\n### 续期\n\nLicense 到 `expires_at` 就失效。SDK 会以 `LicenseErrorCode.Expired`\n拒绝。续期 = 发行方签发新的一份，消费方换 env var 重新部署。**没有云端\nheartbeat**——SDK 不联网。签发后到过期前完全离线可用。\n\n## 框架兼容矩阵\n\n| 框架 | 备注 |\n|---|---|\n| Nuxt 2.15+ | 加 `build.transpile: ['@belumi/beauty-sdk']` |\n| Nuxt 3.x | 开箱即用 |\n| Next.js 13+ | 用 `dynamic(() => import(), { ssr: false })`——SDK 仅客户端 |\n| Vite 4+ | 开箱即用 |\n| Create React App 5.x | 开箱即用 |\n| Vue CLI 5.x | 开箱即用 |\n| Angular 15+ | 开箱即用（未测）|\n\n## RTC 兼容矩阵\n\n| RTC SDK | 集成方式 |\n|---|---|\n| Agora Web SDK 4.19+ | `AgoraRTC.createCustomVideoTrack({ mediaStreamTrack })` |\n| LiveKit Client 2.x | `new LocalVideoTrack(mediaStreamTrack)` |\n| 原生 `RTCPeerConnection` | `pc.addStream(processedStream)` |\n\n`getProcessedStream()` 返标准 W3C `MediaStream`——任何接受 media\nstream track 的 RTC SDK 都能用。\n\n## 排错\n\n### `BelumiLicenseError: license signature does not verify`\n\nLicense 是给别的 SDK build 签的。跟发行方要针对当前 SDK 版本重签。\n\n### `BelumiLicenseError: license expired`\n\nLicense 过期。申请续期。\n\n### `BelumiLicenseError: license not valid for this hostname`\n\n当前 `window.location.hostname` 不在 license domain 白名单里。检查你\n部署的 hostname 或重签一份含正确 domain 的 license。\n\n### `Module parse failed: Unexpected token`（webpack 4 / Nuxt 2）\n\n把 SDK 加进 `build.transpile`：\n\n```js\n// nuxt.config.js\nbuild: { transpile: ['@belumi/beauty-sdk'] }\n```\n\n### `Cannot read properties of null (reading 'bindTexture')`\n\nSDK 还没 `ensurePrism` 完成（或已 fail），代码就尝试渲染了。用\n`ensurePrism` 返的 `capabilities` 做守卫，确保 SDK 就绪后才调\nswitchEffect / effect 相关 API。\n\n## 支持\n\n- License 申请 / 续期：联系 SDK 发行方\n- Bug 报告：联系 SDK 发行方\n\n## 许可\n\n专有软件。详见 [`LICENSE`](./LICENSE) 或联系发行方。\n","readmeFilename":"README.zh-CN.md"}