UNPKG

react-native-deepgram

Version:

React Native SDK for Deepgram's AI-powered speech-to-text, real-time transcription, and text intelligence APIs. Supports live audio streaming, file transcription, sentiment analysis, and topic detection for iOS and Android.

67 lines (66 loc) 2.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.useDeepgramTextIntelligence = useDeepgramTextIntelligence; var _react = require("react"); var _constants = require("./constants"); var _helpers = require("./helpers"); function useDeepgramTextIntelligence({ onBeforeAnalyze = () => {}, onAnalyzeSuccess = () => {}, onAnalyzeError = () => {}, options = {} } = {}) { const abortCtrl = (0, _react.useRef)(null); const analyze = (0, _react.useCallback)(async input => { onBeforeAnalyze(); try { const apiKey = globalThis.__DEEPGRAM_API_KEY__; if (!apiKey) throw new Error('Deepgram API key missing'); const paramMap = { summarize: options.summarize, topics: options.topics, intents: options.intents, sentiment: options.sentiment, language: options.language, custom_topic: options.customTopic, // string or string[] custom_topic_mode: options.customTopicMode, callback: options.callback, callback_method: options.callbackMethod }; const params = (0, _helpers.buildParams)(paramMap); const url = `${_constants.DEEPGRAM_BASEURL}/read?${params.toString()}`; abortCtrl.current?.abort(); abortCtrl.current = new AbortController(); const res = await fetch(url, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Token ${apiKey}` }, body: JSON.stringify(input), signal: abortCtrl.current.signal }); if (!res.ok) { const errText = await res.text(); throw new Error(`HTTP ${res.status}: ${errText}`); } const json = await res.json(); onAnalyzeSuccess(json); } catch (err) { if (err.name === 'AbortError') return; onAnalyzeError(err); } }, [onBeforeAnalyze, onAnalyzeSuccess, onAnalyzeError, options.customTopic, options.customTopicMode, options.summarize, options.topics, options.intents, options.sentiment, options.language, options.callback, options.callbackMethod]); (0, _react.useEffect)(() => { return () => { abortCtrl.current?.abort(); }; }, []); return { analyze }; } //# sourceMappingURL=useDeepgramTextIntelligence.js.map