{"_id":"@banuba/agora-extension","_rev":"10-3858fae8b43d6b627f9e3368b6b10e25","name":"@banuba/agora-extension","dist-tags":{"latest":"2.0.1"},"versions":{"1.0.0":{"name":"@banuba/agora-extension","version":"1.0.0","keywords":["agora","extension","banuba","webar","sdk","ar"],"license":"SEE LICENSE IN LICENSE.txt","_id":"@banuba/agora-extension@1.0.0","maintainers":[{"name":"artem.shershen","email":"artem.shershen@banuba.com"},{"name":"remmidemmia","email":"alexander.popelnyk@banuba.com"},{"name":"itumashyk","email":"ihar.tumashyk@banuba.com"},{"name":"artem.stepanishchev_banuba.com","email":"artem.stepanishchev@banuba.com"}],"bugs":{"url":"https://docs.banuba.com/face-ar-sdk-v1/support"},"dist":{"shasum":"77e3dbebbca596a246cb55a11d6511c324cd721e","tarball":"https://registry.npmjs.org/@banuba/agora-extension/-/agora-extension-1.0.0.tgz","fileCount":20,"integrity":"sha512-RVDfaHhHDFNZHaAhzAhEYU+ddxjR8fWPsiUUPSEFqPOjWct7lwHB56PV/kOmXbXaPOQQ4c2s3WRJ2D1qLgVegw==","signatures":[{"sig":"MEUCICi+jtvmHg4hDJfJK5qo0IHHGQTOWRKqNQ7lhs8/ja4zAiEArTB8q1FhFHnfbHOf7izjJzvNSgxTU5rjag35HpB2MUA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":70973201,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj7UO8ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoNqA//VwjQwcgiNbns2MQ/MpYUnD8mDd2MtCEd/qPP0bp2dM4dkgIF\r\nBl1oMYqp722O8cvYLgXMhwrXj5R1FVN+2eLgWxWkSLaZfvNCKFCcSeYePnKd\r\nB2uexJs4uyA0VKy3396sWAvwu+gIkp+UKLaNzHDvHeFqMyMfpwFM/arVBb2m\r\nT2DpOydUvDeUpgZLwlz2are9KHqbTINY3lXkYphaypQc6FM4M2kJxxt6qBnt\r\nLHib2xQObP3+/nXBqtwY+5p18GlcoKXI6pi0SRiRMgaVlq+sqf00HbEbYLI9\r\nhTnm5AjQDXbXHh51DEqrZ8XujzSEZu5bwyTZraf+jYBzUrj6JfAP0SAiHXIb\r\nh9SIVPQPg5Wh315F1nILXzVdBiMIHutI4VPUKm8/zMXb9eIP6Hu373Q5Oc1u\r\niEmz2UdSeBdzTHqWL1DCA/V9lsUa0iKgzatRgckufjbHvrri+EoyBWuzkgnI\r\n1c/xO/a3xEhVH6Htqtkkw9uZyQojCmhhBY23hyam97j5FiT31HH+vpKx4uOE\r\nArVqCBhVvS90Oi2ii04rRIdbmVcjKQ0ikm0UV7LjPbHq6x5VxYMHeUi3tnDg\r\n+KblOu025K/xMO3m27W39sv2uQhzHKyjQj2raiKlbOh6foPxnVWgBbkvTD9i\r\n+d+nSMSymA4LjNmnTchJyGkJ4oUY8hJ8lgg=\r\n=oYFH\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","unpkg":"dist/index.browser.js","exports":{".":"./dist/index.js","./*":"./dist/modules/*","./dist/*":"./dist/*","./BanubaSDK.*":"./dist/BanubaSDK.*","./package.json":"./package.json"},"gitHead":"a70f3727051fe7778240b1ddba93b6679fe1c707","scripts":{"dev":"vite --open","build":"vite build","types":"rollup -i index.ts -p rollup-plugin-dts -o dist/index.d.ts -f es","postbuild":"npm run types"},"_npmUser":{"name":"artem.stepanishchev_banuba.com","email":"artem.stepanishchev@banuba.com"},"jsdelivr":"dist/index.browser.js","_npmVersion":"8.3.1","description":"Banuba WebAR Agora extension","directories":{},"sideEffects":false,"_nodeVersion":"16.14.0","dependencies":{"@banuba/webar":"latest","agora-rte-extension":"^1.2.3"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^4.1.1","prettier":"^2.8.4","typescript":"^4.9.5","rollup-plugin-dts":"^5.2.0","rollup-plugin-copy":"^3.4.0"},"_npmOperationalInternal":{"tmp":"tmp/agora-extension_1.0.0_1676493755897_0.24945962162003377","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@banuba/agora-extension","version":"2.0.0","keywords":["agora","extension","banuba","webar","sdk","ar"],"license":"SEE LICENSE IN LICENSE.txt","_id":"@banuba/agora-extension@2.0.0","maintainers":[{"name":"sdk-banuba","email":"sdk.accounts@banuba.com"},{"name":"banuba-sdk","email":"ihar.tumashyk@banuba.com"},{"name":"artem.shershen","email":"artem.shershen@banuba.com"},{"name":"remmidemmia","email":"alexander.popelnyk@banuba.com"}],"bugs":{"url":"https://docs.banuba.com/face-ar-sdk-v1/support"},"dist":{"shasum":"a3bac0c5788b23b27383df84a2b394a57b321408","tarball":"https://registry.npmjs.org/@banuba/agora-extension/-/agora-extension-2.0.0.tgz","fileCount":6,"integrity":"sha512-Jj6E4OAtPhVfaagLbCgPHRjBdLGjvfiohXfbAYVc6/mSWayXk0UMeP84sXlJtl0TposJMgYP3L0L37HBxhvHAQ==","signatures":[{"sig":"MEQCIFEhMBuv8do77hQ1EUM/lTJlfg4hOokS5Mg2Ec4PgUMDAiAKmOcXzZH79UJbGk7NGKotdxYucpAo6NWaCJDsH2KFvQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":186618},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","unpkg":"dist/index.browser.js","exports":{".":"./dist/index.js","./dist/*":"./dist/*","./package.json":"./package.json"},"gitHead":"68244e7478cc16179d4c8114323bed54bbdf3187","scripts":{"dev":"vite --open","build":"vite build","types":"rollup -i index.ts -p rollup-plugin-dts -o dist/index.d.ts -f es","postbuild":"npm run types"},"_npmUser":{"name":"artem.shershen","email":"artem.shershen@banuba.com"},"jsdelivr":"dist/index.browser.js","_npmVersion":"9.8.1","description":"Banuba WebAR Agora extension","directories":{},"sideEffects":false,"_nodeVersion":"20.6.0","dependencies":{"@banuba/webar":"latest","agora-rte-extension":"^1.2.3"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^4.1.1","prettier":"^2.8.4","typescript":"^4.9.5","rollup-plugin-dts":"^5.2.0","rollup-plugin-copy":"^3.4.0","vite-plugin-external":"^4.0.1"},"_npmOperationalInternal":{"tmp":"tmp/agora-extension_2.0.0_1698073754302_0.3056673750420875","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"@banuba/agora-extension","version":"2.0.1","description":"Banuba WebAR extension for Agora RTC — add real-time face filters, virtual makeup, beautification and background replacement to Agora video calls in the browser.","license":"SEE LICENSE IN LICENSE.txt","type":"module","main":"dist/index.js","jsdelivr":"dist/index.browser.js","unpkg":"dist/index.browser.js","types":"dist/index.d.ts","sideEffects":false,"exports":{"./package.json":"./package.json","./dist/*":"./dist/*",".":"./dist/index.js"},"keywords":["agora","extension","banuba","webar","sdk","ar"],"bugs":{"url":"https://docs.banuba.com/face-ar-sdk-v1/support"},"homepage":"https://docs.banuba.com/far-sdk","scripts":{"dev":"vite --open","build":"vite build","types":"rollup -i index.ts -p rollup-plugin-dts -o dist/index.d.ts -f es","postbuild":"npm run types"},"dependencies":{"@banuba/webar":"latest","agora-rte-extension":"^1.2.3"},"devDependencies":{"prettier":"^2.8.4","rollup-plugin-copy":"^3.4.0","rollup-plugin-dts":"^5.2.0","typescript":"^4.9.5","vite":"^4.1.1","vite-plugin-external":"^4.0.1"},"_id":"@banuba/agora-extension@2.0.1","gitHead":"68244e7478cc16179d4c8114323bed54bbdf3187","_nodeVersion":"22.21.1","_npmVersion":"10.9.4","dist":{"integrity":"sha512-tZPHU9AXB4FlvMMfNEAwwofL+lJ+ZszOzlT6jM+v6yUFNHtyxHjTbf9FWsRKf9sUDibPhgwIFxwxG/t8oU6sMw==","shasum":"99129318974e2b59cc95c5796405f5ef6c88d6c0","tarball":"https://registry.npmjs.org/@banuba/agora-extension/-/agora-extension-2.0.1.tgz","fileCount":3,"unpackedSize":9769,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCKxs4Vk6tVnZsJ+3UsVIYuiiZkw0bpMq3z+qDpQVTcwwIhAPT2gah9mtWzr/6/1ObJPbOsdHvW3niI0kkSC1n4+l6M"}]},"_npmUser":{"name":"sdk-banuba","email":"sdk.accounts@banuba.com"},"directories":{},"maintainers":[{"name":"banuba-sdk","email":"ihar.tumashyk@banuba.com"},{"name":"remmidemmia","email":"alexander.popelnyk@banuba.com"},{"name":"sdk-banuba","email":"sdk.accounts@banuba.com"},{"name":"herman_khodyrev","email":"german.khodyrev@banuba.com"},{"name":"banuba_ve_sdk","email":"gleb.prischepa@banuba.com"},{"name":"leobintsarouski","email":"leanid.bintsarouski@banuba.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/agora-extension_2.0.1_1788424349494_0.8257023595228214"},"_hasShrinkwrap":false}},"time":{"created":"2023-02-15T20:42:35.804Z","modified":"2026-09-03T08:32:29.821Z","1.0.0":"2023-02-15T20:42:36.810Z","2.0.0":"2023-10-23T15:09:14.487Z","2.0.1":"2026-09-03T08:32:29.617Z"},"bugs":{"url":"https://docs.banuba.com/face-ar-sdk-v1/support"},"license":"SEE LICENSE IN LICENSE.txt","keywords":["agora","extension","banuba","webar","sdk","ar"],"description":"Banuba WebAR extension for Agora RTC — add real-time face filters, virtual makeup, beautification and background replacement to Agora video calls in the browser.","maintainers":[{"name":"banuba-sdk","email":"ihar.tumashyk@banuba.com"},{"name":"remmidemmia","email":"alexander.popelnyk@banuba.com"},{"name":"sdk-banuba","email":"sdk.accounts@banuba.com"},{"name":"herman_khodyrev","email":"german.khodyrev@banuba.com"},{"name":"banuba_ve_sdk","email":"gleb.prischepa@banuba.com"},{"name":"leobintsarouski","email":"leanid.bintsarouski@banuba.com"}],"readme":"# Banuba WebAR Agora extension\n\n`@banuba/agora-extension` - Agora extension and video processor based on `@banuba/webar`.\n\nTake a look at the [`@banuba/webar`](https://www.npmjs.com/package/@banuba/webar) npm package and [Banuba WebAR docs](https://docs.banuba.com/face-ar-sdk-v1/web/web_overview) for a deep dive.\n\n## Quickstart\n\n### CDN\n\nVia `<script>` tag:\n\n```html\n<div id=\"video-container\" style=\"width: 640px; height: 640px\"></div>\n\n<!-- Exposes AgoraRTC variable on window -->\n<script src=\"https://cdn.jsdelivr.net/npm/agora-rtc-sdk-ng@4.16.1/AgoraRTC_N-production.min.js\"></script>\n<!-- Exposes BanubaSDK variable on window -->\n<script src=\"https://cdn.jsdelivr.net/npm/@banuba/webar/dist/BanubaSDK.browser.js\"></script>\n<!-- Exposes BanubaAgoraExtension variable on window -->\n<script src=\"https://cdn.jsdelivr.net/npm/@banuba/agora-extension/dist/index.browser.js\"></script>\n\n<script>\n  const banuba = new BanubaAgoraExtension.Extension({\n    clientToken: \"xxx-xxx-xxx\",\n    locateFile: BanubaSDK.locateFile\n  })\n  AgoraRTC.registerExtensions([banuba])\n\n  const processor = banuba.createProcessor()\n  await processor.addModule(\n    ...[\"face_tracker\", \"background\"].map((m) => \"https://cdn.jsdelivr.net/npm/@banuba/webar/dist/modules/\" + m + \".zip\"),\n  )\n  const video = await AgoraRTC.createCameraVideoTrack()\n\n  video.pipe(processor).pipe(video.processorDestination)\n  video.play(document.querySelector(\"#video-container\"))\n</script>\n```\n\nVia `<script type=\"module\">` tag:\n\n```html\n<div id=\"video-container\" style=\"width: 640px; height: 640px\"></div>\n\n<!-- Exposes AgoraRTC variable on window -->\n<script src=\"https://cdn.jsdelivr.net/npm/agora-rtc-sdk-ng@4.16.1/AgoraRTC_N-production.min.js\"></script>\n<!-- Exposes BanubaSDK variable on window -->\n<script src=\"https://cdn.jsdelivr.net/npm/@banuba/webar/dist/BanubaSDK.browser.js\"></script>\n\n<script type=\"module\">\n  import * as BanubaAgoraExtension from \"https://cdn.jsdelivr.net/npm/@banuba/agora-extension/dist/index.js\"\n\n  const banuba = new BanubaAgoraExtension.Extension({\n    clientToken: \"xxx-xxx-xxx\",\n    locateFile: BanubaSDK.locateFile\n  })\n  AgoraRTC.registerExtensions([banuba])\n\n  const processor = banuba.createProcessor()\n  await processor.addModule(\n    ...[\"face_tracker\", \"background\"].map(\n      (m) => \"https://cdn.jsdelivr.net/npm/@banuba/agora-extension/dist/modules/\" + m + \".zip\",\n    ),\n  )\n  const video = await AgoraRTC.createCameraVideoTrack()\n\n  video.pipe(processor).pipe(video.processorDestination)\n  video.play(document.querySelector(\"#video-container\"))\n</script>\n```\n\n### NPM\n\n```bash\nnpm i --save agora-rtc-sdk-ng @banuba/agora-extension\n```\n\n```js\nimport AgoraRTC from \"agora-rtc-sdk-ng\"\nimport { Extension } from \"@banuba/agora-extension\"\nimport data from \"@banuba/webar/dist/BanubaSDK.data\"\nimport wasm from \"@banuba/webar/dist/BanubaSDK.wasm\"\nimport simd from \"@banuba/webar/dist/BanubaSDK.simd.wasm\"\nimport FaceTracker from \"@banuba/webar/dist/modules/face_tracker.zip\"\nimport Background from \"@banuba/webar/dist/modules/background.zip\"\n\nconst banuba = new Extension({\n  clientToken: \"xxx-xxx-xxx\",\n  locateFile: {\n    \"BanubaSDK.data\": data,\n    \"BanubaSDK.wasm\": wasm,\n    \"BanubaSDK.simd.wasm\": simd,\n  },\n})\nAgoraRTC.registerExtensions([banuba])\n\nconst processor = banuba.createProcessor()\nawait processor.addModule(FaceTracker, Background)\nconst video = await AgoraRTC.createCameraVideoTrack()\n\nvideo.pipe(processor).pipe(video.processorDestination)\n// assume the page has a div element with id=\"video-container\" and `width` and `height` set\nvideo.play(document.querySelector(\"#video-container\"))\n```\n\nRead the [Integration tutorials](https://docs.banuba.com/face-ar-sdk-v1/web/web_tutorials_integrations) intro for the explanation of the `locateFile` option.\n\nRead the [Bundlers](https://docs.banuba.com/face-ar-sdk-v1/generated/typedoc/#bundlers) section of the [Integrations guides](https://docs.banuba.com/face-ar-sdk-v1/generated/typedoc/#integrations) for more receipts for different bundlers.\n\n## API Reference\n\n### Extension \nThe `Extension` constructor accepts all the same options as the [Player.create()](https://docs.banuba.com/face-ar-sdk-v1/generated/typedoc/classes/Player.html#create) method from Banuba WebAR SDK, most noticeable options are:\n\n- `clientToken` - Banuba Client Token, required. See [Obtaining Banuba Client token](#obtaining-banuba-client-token) for details\n- `locateFile` - specifies where to look for the Banuba WebAR’s `.wasm` and `.data` files, optional. Check the [Integration tutorials](https://docs.banuba.com/face-ar-sdk-v1/web/web_tutorials_integrations) intro for explanation.\n- `devicePixelRatio` - image scaling factor for HiDPI devices, optional. If not specified it has a value of `1` as a reasonable default for WebRTC AR.\n\n#### `Extension.checkCompatibility()` \n\nChecks if the browser is capable to run the `Extension` and `Processor`:\n\n```ts\nconst banuba = new Extension({\n  clientToken: \"xxx-xxx-xxx\",\n  locateFile: BanubaSDK.locateFile\n})\n\nif (!banuba.checkCompatibility()) alert(\"The browser does not support the extension :(\")\n```\n\n### Processor\n\nThe `Processor` instance created by the `Extension.createProcessor()` method has the following methods:\n\n#### `Processor.addModule(url | WebArModule)`\n\nAdds AR modules (neural networks) to the processor, so effects can consume them:\n\n```ts\n// This is a syntax sugar over\n// import { Module } from \"@banuba/agora-extension\"\n// const face_tracker = new Module(\"/path/to/face_tracker.zip\")\n// await processor.addModule(face_tracker)\n\nawait processor.addModule(\"/path/to/face_tracker.zip\")\n```\n\nSee the [WebAR API Reference](https://docs.banuba.com/face-ar-sdk-v1/generated/typedoc/classes/Module.html) for the list of available AR modules and usage code examples.\n\nAlso you may want to check the docs of the [Player.addModule()](https://docs.banuba.com/face-ar-sdk-v1/generated/typedoc/classes/Player.html#addModule)from Banuba WebAR SDK as the processor’s method is a simple wrapper around the [Player.addModule()](https://docs.banuba.com/face-ar-sdk-v1/generated/typedoc/classes/Player.html#addModule).\n\n#### `Processor.applyEffect(url | WebArEffect)`\n\nApplies an AR effect to the processor:\n\n```ts\n// This is a syntax sugar over\n// import { Effect } from \"@banuba/agora-extension\"\n// const octopus = new Effect(\"/path/to/Octopus.zip\")\n// await processor.applyEffect(octopus)\n\nawait processor.applyEffect(\"/path/to/Octopus.zip\")\n```\n\nYou can download and use test effect from the [Demo face filters](https://docs.banuba.com/face-ar-sdk-v1/overview/demo_face_filters) page.\n\nAlso you may want to check the  docs of the [Player.applyEffect()](https://docs.banuba.com/face-ar-sdk-v1/generated/typedoc/classes/Player.html#applyEffect) from Banuba WebAR SDK as the processor’s method is a simple wrapper around the [Player.applyEffect()](https://docs.banuba.com/face-ar-sdk-v1/generated/typedoc/classes/Player.html#applyEffect).\n\n#### `Processor.clearEffect()`\n\nClears the applied effect if any:\n\n\n```ts\nawait processor.applyEffect(\"/path/to/Octopus.zip\")\n\n// ... a few moments later ...\n\nprocessor.clearEffect()\n```\n\n#### `Processor.destroy()`\n\nDestroys the processor instance, frees up resources and allocated memory:\n\n```ts\nprocessor.destroy()\n```\n\nTry to not to forget to destroy the processor instance once it’s not needed to [avoid accidental memory leaks](https://docs.banuba.com/face-ar-sdk-v1/web/web_known_issues#page-running-webar-sdk-consumes-too-much-memory).\n\nThe processor instance con not be re-used once it’s destroyed.\n\n## Obtaining Banuba Client token\n\n[Banuba Client token](https://docs.banuba.com/face-ar-sdk-v1/overview/token_management) is required to get Banuba SDK Web AR working.\n\nTo receive a new trial client token please fill in the form on [banuba.com](https://www.banuba.com) website, or contact us via info@banuba.com.\n\n## Resources and links\n\n- [Banuba WebAR overview](https://docs.banuba.com/face-ar-sdk-v1/web/web_overview)\n\n- [Banuba WebAR demo applications](https://docs.banuba.com/face-ar-sdk-v1/overview/getting_started#banuba-sdk-demo-applications)\n\n- [Demo face filters](https://docs.banuba.com/face-ar-sdk-v1/overview/demo_face_filters)\n\n- [Banuba WebAR JS API docs](https://docs.banuba.com/face-ar-sdk-v1/generated/typedoc/)\n\n- [Changelog](https://docs.banuba.com/face-ar-sdk-v1/overview/releases)\n","readmeFilename":"README.md","homepage":"https://docs.banuba.com/far-sdk"}