UNPKG

huggingface-transformers-react

Version:

A React provider and hooks for using Hugging Face Transformers.js in React applications with built-in loading states, error handling, and Suspense support

5 lines (4 loc) 10.2 kB
"use strict";var r=require("react/jsx-runtime"),e=require("react");function n(r,e){(null==e||e>r.length)&&(e=r.length);for(var n=0,t=Array(e);n<e;n++)t[n]=r[n];return t}function t(r,e,n,t,o,i,u){try{var a=r[i](u),c=a.value}catch(r){return void n(r)}a.done?e(c):Promise.resolve(c).then(t,o)}function o(r){return function(){var e=this,n=arguments;return new Promise((function(o,i){var u=r.apply(e,n);function a(r){t(u,o,i,a,c,"next",r)}function c(r){t(u,o,i,a,c,"throw",r)}a(void 0)}))}}function i(r,e,n){return(e=function(r){var e=function(r,e){if("object"!=typeof r||!r)return r;var n=r[Symbol.toPrimitive];if(void 0!==n){var t=n.call(r,e);if("object"!=typeof t)return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(r)}(r,"string");return"symbol"==typeof e?e:e+""}(e))in r?Object.defineProperty(r,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):r[e]=n,r}function u(r,e){var n=Object.keys(r);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(r);e&&(t=t.filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),n.push.apply(n,t)}return n}function a(r){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?u(Object(n),!0).forEach((function(e){i(r,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(n)):u(Object(n)).forEach((function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(n,e))}))}return r}function c(){ /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var r,e,n="function"==typeof Symbol?Symbol:{},t=n.iterator||"@@iterator",o=n.toStringTag||"@@toStringTag";function i(n,t,o,i){var c=t&&t.prototype instanceof a?t:a,f=Object.create(c.prototype);return l(f,"_invoke",function(n,t,o){var i,a,c,l=0,f=o||[],s=!1,d={p:0,n:0,v:r,a:v,f:v.bind(r,4),d:function(e,n){return i=e,a=0,c=r,d.n=n,u}};function v(n,t){for(a=n,c=t,e=0;!s&&l&&!o&&e<f.length;e++){var o,i=f[e],v=d.p,p=i[2];n>3?(o=p===t)&&(c=i[(a=i[4])?5:(a=3,3)],i[4]=i[5]=r):i[0]<=v&&((o=n<2&&v<i[1])?(a=0,d.v=t,d.n=i[1]):v<p&&(o=n<3||i[0]>t||t>p)&&(i[4]=n,i[5]=t,d.n=p,a=0))}if(o||n>1)return u;throw s=!0,t}return function(o,f,p){if(l>1)throw TypeError("Generator is already running");for(s&&1===f&&v(f,p),a=f,c=p;(e=a<2?r:c)||!s;){i||(a?a<3?(a>1&&(d.n=-1),v(a,c)):d.n=c:d.v=c);try{if(l=2,i){if(a||(o="next"),e=i[o]){if(!(e=e.call(i,c)))throw TypeError("iterator result is not an object");if(!e.done)return e;c=e.value,a<2&&(a=0)}else 1===a&&(e=i.return)&&e.call(i),a<2&&(c=TypeError("The iterator does not provide a '"+o+"' method"),a=1);i=r}else if((e=(s=d.n<0)?c:n.call(t,d))!==u)break}catch(e){i=r,a=1,c=e}finally{l=1}}return{value:e,done:s}}}(n,o,i),!0),f}var u={};function a(){}function f(){}function s(){}e=Object.getPrototypeOf;var d=[][t]?e(e([][t]())):(l(e={},t,(function(){return this})),e),v=s.prototype=a.prototype=Object.create(d);function p(r){return Object.setPrototypeOf?Object.setPrototypeOf(r,s):(r.__proto__=s,l(r,o,"GeneratorFunction")),r.prototype=Object.create(v),r}return f.prototype=s,l(v,"constructor",s),l(s,"constructor",f),f.displayName="GeneratorFunction",l(s,o,"GeneratorFunction"),l(v),l(v,o,"Generator"),l(v,t,(function(){return this})),l(v,"toString",(function(){return"[object Generator]"})),(c=function(){return{w:i,m:p}})()}function l(r,e,n,t){var o=Object.defineProperty;try{o({},"",{})}catch(r){o=0}l=function(r,e,n,t){if(e)o?o(r,e,{value:n,enumerable:!t,configurable:!t,writable:!t}):r[e]=n;else{function i(e,n){l(r,e,(function(r){return this._invoke(e,n,r)}))}i("next",0),i("throw",1),i("return",2)}},l(r,e,n,t)}function f(r,e){return function(r){if(Array.isArray(r))return r}(r)||function(r,e){var n=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(null!=n){var t,o,i,u,a=[],c=!0,l=!1;try{if(i=(n=n.call(r)).next,0===e);else for(;!(c=(t=i.call(n)).done)&&(a.push(t.value),a.length!==e);c=!0);}catch(r){l=!0,o=r}finally{try{if(!c&&null!=n.return&&(u=n.return(),Object(u)!==u))return}finally{if(l)throw o}}return a}}(r,e)||function(r,e){if(r){if("string"==typeof r)return n(r,e);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?n(r,e):void 0}}(r,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}var s=e.createContext(null);function d(){var r=e.useContext(s);if(!r)throw new Error("useTransformers must be used within TransformersProvider");return r}exports.TransformersProvider=function(n){var t=n.children,u=n.moduleUrl,l=void 0===u?"https://cdn.jsdelivr.net/npm/@huggingface/transformers@3.5.2":u,d=n.loadTimeout,v=void 0===d?6e4:d,p=n.maxRetries,y=void 0===p?3:p,m=n.nonce,b=n.onLibraryError,h=n.onModelError,w="undefined"!=typeof window&&"undefined"!=typeof document,g=f(e.useState(!1),2),j=g[0],O=g[1],S=f(e.useState("idle"),2),P=S[0],T=S[1],x=f(e.useState(null),2),E=x[0],k=x[1],C=f(e.useState({}),2),A=C[0],R=C[1],M=f(e.useState({}),2),D=M[0],G=M[1],_=f(e.useState({}),2),F=_[0],q=_[1],I=e.useRef(null),L=e.useRef(),N=e.useRef(!1),U=e.useRef(0),X=e.useRef({}),z=e.useRef(),B=e.useRef(),$=e.useRef();z.current||(z.current=new Promise((function(r,e){B.current=r,$.current=e})));var H=function(){L.current&&(clearTimeout(L.current),L.current=void 0),N.current=!1},J=function(){var r;null===(r=I.current)||void 0===r||r.remove(),I.current=null},K=function(r){var e;if(H(),U.current+=1,U.current<y){var n=Math.min(1e3*Math.pow(2,U.current-1),6e4)+1e3*Math.random();return console.debug("[Transformers] retrying library in ".concat(n.toFixed(0)," ms ")+"(".concat(U.current,"/").concat(y,")")),void setTimeout(Q,n)}k(r),T("error"),null===(e=$.current)||void 0===e||e.call($,r),null==b||b(r),console.debug("[Transformers] library failed permanently")},Q=e.useCallback((function(){w&&(j||"loading"===P||(T("loading"),k(null),function(){if(!I.current){var r=document.createElement("script");r.type="module",r.crossOrigin="anonymous",m&&(r.nonce=m),r.textContent="\n import { pipeline } from '".concat(l,"';\n window.transformers = { pipeline };\n "),r.onerror=function(){H(),J(),K(new Error("Script load error"))},document.head.appendChild(r),I.current=r,console.debug("[Transformers] script tag injected")}}(),function(r){if(!N.current){N.current=!0;var e=function(){var n,t;return null!==(n=window.transformers)&&void 0!==n&&n.pipeline?(H(),J(),O(!0),T("ready"),null===(t=B.current)||void 0===t||t.call(B),void console.debug("[Transformers] library ready")):Date.now()>=r?(H(),J(),void K(new Error("transformers.js not ready within ".concat(v," ms")))):void(L.current=window.setTimeout(e,500))};e()}}(Date.now()+v)))}),[w,j,P,v]);e.useEffect((function(){Q()}),[Q]);var V=e.useCallback(function(){var r=o(c().m((function r(e){var n,t,u,l=arguments;return c().w((function(r){for(;;)switch(r.n){case 0:if(n=l.length>1&&void 0!==l[1]?l[1]:"auto",t=l.length>2&&void 0!==l[2]?l[2]:1,!A[e]){r.n=1;break}return r.a(2,A[e]);case 1:if(!X.current[e]){r.n=2;break}return r.a(2,X.current[e]);case 2:return G((function(r){return a(a({},r),{},i({},e,"loading"))})),q((function(r){return a(a({},r),{},i({},e,null))})),u=function(){var r=o(c().m((function r(t){var o,l,f,s;return c().w((function(r){for(;;)switch(r.n){case 0:return r.p=0,r.n=1,z.current;case 1:return o=window.transformers.pipeline,l=o(n,e),X.current[e]=l,r.n=2,l;case 2:return f=r.v,R((function(r){return a(a({},r),{},i({},e,f))})),G((function(r){return a(a({},r),{},i({},e,"ready"))})),delete X.current[e],r.a(2,f);case 3:if(r.p=3,s=r.v,!(t>0)){r.n=4;break}return r.a(2,u(t-1));case 4:throw q((function(r){return a(a({},r),{},i({},e,s))})),G((function(r){return a(a({},r),{},i({},e,"error"))})),delete X.current[e],null==h||h(e,s),s;case 5:return r.a(2)}}),r,null,[[0,3]])})));return function(e){return r.apply(this,arguments)}}(),r.a(2,u(t))}}),r)})));return function(e){return r.apply(this,arguments)}}(),[A,h]),W=e.useCallback((function(r){X.current[r]&&delete X.current[r],R((function(e){var n=a({},e),t=n[r];if("function"==typeof(null==t?void 0:t.dispose))try{t.dispose()}catch(r){}return delete n[r],n})),G((function(e){var n=a({},e);return delete n[r],n})),q((function(e){var n=a({},e);return delete n[r],n}))}),[]),Y=e.useCallback((function(r,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return V(e||"Xenova/distilbert-base-uncased-finetuned-sst-2-english","sentiment-analysis").then((function(e){return e(r,n)}))}),[V]),Z=e.useCallback(function(){var r=o(c().m((function r(e){var n,t,i,u,a=arguments;return c().w((function(r){for(;;)switch(r.n){case 0:return n=a.length>1&&void 0!==a[1]?a[1]:{},t=function(){var r=o(c().m((function r(e){var n,t,o,i,u,a,l,f,s,d;return c().w((function(r){for(;;)switch(r.n){case 0:if(n=window.AudioContext||window.webkitAudioContext){r.n=1;break}throw new Error("AudioContext is not available. Audio transcription requires a browser environment.");case 1:return t=new n,r.n=2,e.arrayBuffer();case 2:return o=r.v,r.n=3,t.decodeAudioData(o);case 3:if(i=r.v,u=i.getChannelData(0),16e3!==i.sampleRate){for(a=i.sampleRate/16e3,l=Math.floor(u.length/a),f=new Float32Array(l),s=0;s<l;s++)d=Math.floor(s*a),f[s]=u[d]||0;u=f}return t.close(),r.a(2,u)}}),r)})));return function(e){return r.apply(this,arguments)}}(),r.n=1,t(e);case 1:return i=r.v,r.n=2,V(n.model||"Xenova/whisper-tiny.en","automatic-speech-recognition");case 2:return u=r.v,r.a(2,u(i,n))}}),r)})));return function(e){return r.apply(this,arguments)}}(),[V]),rr={isLibraryLoaded:j,libraryStatus:P,libraryError:E,models:A,modelStatus:D,modelErrors:F,loadModel:V,unloadModel:W,analyzeSentiment:Y,transcribeAudio:Z,readyPromise:z.current};return r.jsx(s.Provider,{value:rr,children:t})},exports.useTransformers=d,exports.useTransformersReady=function(){var r=d(),e=r.libraryStatus,n=r.readyPromise;if("ready"!==e)throw n}; //# sourceMappingURL=index.js.map