assemblyai 4.16.1 → 4.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -65,7 +65,7 @@
65
65
  defaultUserAgentString += navigator.userAgent;
66
66
  }
67
67
  const defaultUserAgent = {
68
- sdk: { name: "JavaScript", version: "4.16.1" },
68
+ sdk: { name: "JavaScript", version: "4.17.0" },
69
69
  };
70
70
  if (typeof process !== "undefined") {
71
71
  if (process.versions.node && defaultUserAgentString.indexOf("Node") === -1) {
@@ -157,40 +157,46 @@
157
157
  }
158
158
 
159
159
  class LemurService extends BaseService {
160
- summary(params) {
160
+ summary(params, signal) {
161
161
  return this.fetchJson("/lemur/v3/generate/summary", {
162
162
  method: "POST",
163
163
  body: JSON.stringify(params),
164
+ signal,
164
165
  });
165
166
  }
166
- questionAnswer(params) {
167
+ questionAnswer(params, signal) {
167
168
  return this.fetchJson("/lemur/v3/generate/question-answer", {
168
169
  method: "POST",
169
170
  body: JSON.stringify(params),
171
+ signal,
170
172
  });
171
173
  }
172
- actionItems(params) {
174
+ actionItems(params, signal) {
173
175
  return this.fetchJson("/lemur/v3/generate/action-items", {
174
176
  method: "POST",
175
177
  body: JSON.stringify(params),
178
+ signal,
176
179
  });
177
180
  }
178
- task(params) {
181
+ task(params, signal) {
179
182
  return this.fetchJson("/lemur/v3/generate/task", {
180
183
  method: "POST",
181
184
  body: JSON.stringify(params),
185
+ signal,
182
186
  });
183
187
  }
184
- getResponse(id) {
185
- return this.fetchJson(`/lemur/v3/${id}`);
188
+ getResponse(id, signal) {
189
+ return this.fetchJson(`/lemur/v3/${id}`, { signal });
186
190
  }
187
191
  /**
188
192
  * Delete the data for a previously submitted LeMUR request.
189
193
  * @param id - ID of the LeMUR request
194
+ * @param signal - Optional AbortSignal to cancel the request
190
195
  */
191
- purgeRequestData(id) {
196
+ purgeRequestData(id, signal) {
192
197
  return this.fetchJson(`/lemur/v3/${id}`, {
193
198
  method: "DELETE",
199
+ signal,
194
200
  });
195
201
  }
196
202
  }
@@ -1 +1 @@
1
- !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).assemblyai={})}(this,(function(e){"use strict";function t(e,t,s,i){return new(s||(s=Promise))((function(r,n){function o(e){try{c(i.next(e))}catch(e){n(e)}}function a(e){try{c(i.throw(e))}catch(e){n(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,a)}c((i=i.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const s={cache:"no-store"};let i="";"undefined"!=typeof navigator&&navigator.userAgent&&(i+=navigator.userAgent);const r={sdk:{name:"JavaScript",version:"4.16.1"}};"undefined"!=typeof process&&(process.versions.node&&-1===i.indexOf("Node")&&(r.runtime_env={name:"Node",version:process.versions.node}),process.versions.bun&&-1===i.indexOf("Bun")&&(r.runtime_env={name:"Bun",version:process.versions.bun})),"undefined"!=typeof Deno&&process.versions.bun&&-1===i.indexOf("Deno")&&(r.runtime_env={name:"Deno",version:Deno.version.deno});class n{constructor(e){var t;this.params=e,!1===e.userAgent?this.userAgent=void 0:this.userAgent=(t=e.userAgent||{},i+(!1===t?"":" AssemblyAI/1.0 ("+Object.entries(Object.assign(Object.assign({},r),t)).map((([e,t])=>t?`${e}=${t.name}/${t.version}`:"")).join(" ")+")"))}fetch(e,i){return t(this,void 0,void 0,(function*(){i=Object.assign(Object.assign({},s),i);let t={Authorization:this.params.apiKey,"Content-Type":"application/json"};(null==s?void 0:s.headers)&&(t=Object.assign(Object.assign({},t),s.headers)),(null==i?void 0:i.headers)&&(t=Object.assign(Object.assign({},t),i.headers)),this.userAgent&&(t["User-Agent"]=this.userAgent,"undefined"!=typeof window&&"chrome"in window&&(t["AssemblyAI-Agent"]=this.userAgent)),i.headers=t,e.startsWith("http")||(e=this.params.baseUrl+e);const r=yield fetch(e,i);if(r.status>=400){let e;const t=yield r.text();if(t){try{e=JSON.parse(t)}catch(e){}if(null==e?void 0:e.error)throw new Error(e.error);throw new Error(t)}throw new Error(`HTTP Error: ${r.status} ${r.statusText}`)}return r}))}fetchJson(e,s){return t(this,void 0,void 0,(function*(){return(yield this.fetch(e,s)).json()}))}}class o extends n{summary(e){return this.fetchJson("/lemur/v3/generate/summary",{method:"POST",body:JSON.stringify(e)})}questionAnswer(e){return this.fetchJson("/lemur/v3/generate/question-answer",{method:"POST",body:JSON.stringify(e)})}actionItems(e){return this.fetchJson("/lemur/v3/generate/action-items",{method:"POST",body:JSON.stringify(e)})}task(e){return this.fetchJson("/lemur/v3/generate/task",{method:"POST",body:JSON.stringify(e)})}getResponse(e){return this.fetchJson(`/lemur/v3/${e}`)}purgeRequestData(e){return this.fetchJson(`/lemur/v3/${e}`,{method:"DELETE"})}}const{WritableStream:a}="undefined"!=typeof window?window:"undefined"!=typeof global?global:globalThis;var c,l;const d=null!==(l=null!==(c=null!==WebSocket&&void 0!==WebSocket?WebSocket:null===global||void 0===global?void 0:global.WebSocket)&&void 0!==c?c:null===window||void 0===window?void 0:window.WebSocket)&&void 0!==l?l:null===self||void 0===self?void 0:self.WebSocket,h=(e,t)=>t?new d(e,t):new d(e),u={[4e3]:"Sample rate must be a positive integer",[4001]:"Not Authorized",[4002]:"Insufficient funds",[4003]:"This feature is paid-only and requires you to add a credit card. Please visit https://app.assemblyai.com/ to add a credit card to your account.",[4004]:"Session ID does not exist",[4008]:"Session has expired",[4010]:"Session is closed",[4029]:"Rate limited",[4030]:"Unique session violation",[4031]:"Session Timeout",[4032]:"Audio too short",[4033]:"Audio too long",[4034]:"Audio too small to transcode",[4100]:"Bad JSON",[4101]:"Bad schema",[4102]:"Too many streams",[4103]:"This session has been reconnected. This WebSocket is no longer valid.",[1013]:"Reconnect attempts exhausted",[4104]:"Could not parse word boost parameter"};class m extends Error{}const p={[4e3]:"Sample rate must be a positive integer",[4001]:"Not Authorized",[4002]:"Insufficient funds",[4003]:"This feature is paid-only and requires you to add a credit card. Please visit https://app.assemblyai.com/ to add a credit card to your account.",[4004]:"Session ID does not exist",[4008]:"Session has expired",[4010]:"Session is closed",[4029]:"Rate limited",[4030]:"Unique session violation",[4031]:"Session Timeout",[4032]:"Audio too short",[4033]:"Audio too long",[4034]:"Audio too small to transcode",[4101]:"Bad schema",[4102]:"Too many streams",[4103]:"This session has been reconnected. This WebSocket is no longer valid."};class f extends Error{}const y='{"terminate_session":true}';class v{constructor(e){var t,s;if(this.listeners={},this.realtimeUrl=null!==(t=e.realtimeUrl)&&void 0!==t?t:"wss://api.assemblyai.com/v2/realtime/ws",this.sampleRate=null!==(s=e.sampleRate)&&void 0!==s?s:16e3,this.wordBoost=e.wordBoost,this.encoding=e.encoding,this.endUtteranceSilenceThreshold=e.endUtteranceSilenceThreshold,this.disablePartialTranscripts=e.disablePartialTranscripts,"token"in e&&e.token&&(this.token=e.token),"apiKey"in e&&e.apiKey&&(this.apiKey=e.apiKey),!this.token&&!this.apiKey)throw new Error("API key or temporary token is required.")}connectionUrl(){const e=new URL(this.realtimeUrl);if("wss:"!==e.protocol)throw new Error("Invalid protocol, must be wss");const t=new URLSearchParams;return this.token&&t.set("token",this.token),t.set("sample_rate",this.sampleRate.toString()),this.wordBoost&&this.wordBoost.length>0&&t.set("word_boost",JSON.stringify(this.wordBoost)),this.encoding&&t.set("encoding",this.encoding),t.set("enable_extra_session_information","true"),this.disablePartialTranscripts&&t.set("disable_partial_transcripts",this.disablePartialTranscripts.toString()),e.search=t.toString(),e}on(e,t){this.listeners[e]=t}connect(){return new Promise((e=>{if(this.socket)throw new Error("Already connected");const t=this.connectionUrl();this.token?this.socket=h(t.toString()):(console.warn("API key authentication is not supported for the RealtimeTranscriber in browser environment. Use temporary token authentication instead.\nLearn more at https://github.com/AssemblyAI/assemblyai-node-sdk/blob/main/docs/compat.md#browser-compatibility."),this.socket=h(t.toString(),{headers:{Authorization:this.apiKey}})),this.socket.binaryType="arraybuffer",this.socket.onopen=()=>{void 0!==this.endUtteranceSilenceThreshold&&null!==this.endUtteranceSilenceThreshold&&this.configureEndUtteranceSilenceThreshold(this.endUtteranceSilenceThreshold)},this.socket.onclose=({code:e,reason:t})=>{var s,i;t||e in u&&(t=u[e]),null===(i=(s=this.listeners).close)||void 0===i||i.call(s,e,t)},this.socket.onerror=e=>{var t,s,i,r;e.error?null===(s=(t=this.listeners).error)||void 0===s||s.call(t,e.error):null===(r=(i=this.listeners).error)||void 0===r||r.call(i,new Error(e.message))},this.socket.onmessage=({data:t})=>{var s,i,r,n,o,a,c,l,d,h,u,p,f,y,v;const b=JSON.parse(t.toString());if("error"in b)null===(i=(s=this.listeners).error)||void 0===i||i.call(s,new m(b.error));else switch(b.message_type){case"SessionBegins":{const t={sessionId:b.session_id,expiresAt:new Date(b.expires_at)};e(t),null===(n=(r=this.listeners).open)||void 0===n||n.call(r,t);break}case"PartialTranscript":b.created=new Date(b.created),null===(a=(o=this.listeners).transcript)||void 0===a||a.call(o,b),null===(l=(c=this.listeners)["transcript.partial"])||void 0===l||l.call(c,b);break;case"FinalTranscript":b.created=new Date(b.created),null===(h=(d=this.listeners).transcript)||void 0===h||h.call(d,b),null===(p=(u=this.listeners)["transcript.final"])||void 0===p||p.call(u,b);break;case"SessionInformation":null===(y=(f=this.listeners).session_information)||void 0===y||y.call(f,b);break;case"SessionTerminated":null===(v=this.sessionTerminatedResolve)||void 0===v||v.call(this)}}}))}sendAudio(e){this.send(e)}stream(){return new a({write:e=>{this.sendAudio(e)}})}forceEndUtterance(){this.send('{"force_end_utterance":true}')}configureEndUtteranceSilenceThreshold(e){this.send(`{"end_utterance_silence_threshold":${e}}`)}send(e){if(!this.socket||this.socket.readyState!==this.socket.OPEN)throw new Error("Socket is not open for communication");this.socket.send(e)}close(){return t(this,arguments,void 0,(function*(e=!0){var t;if(this.socket){if(this.socket.readyState===this.socket.OPEN)if(e){const e=new Promise((e=>{this.sessionTerminatedResolve=e}));this.socket.send(y),yield e}else this.socket.send(y);(null===(t=this.socket)||void 0===t?void 0:t.removeAllListeners)&&this.socket.removeAllListeners(),this.socket.close()}this.listeners={},this.socket=void 0}))}}class b extends n{constructor(e){super(e),this.rtFactoryParams=e}createService(e){return this.transcriber(e)}transcriber(e){const t=Object.assign({},e);return t.token||t.apiKey||(t.apiKey=this.rtFactoryParams.apiKey),new v(t)}createTemporaryToken(e){return t(this,void 0,void 0,(function*(){return(yield this.fetchJson("/v2/realtime/token",{method:"POST",body:JSON.stringify(e)})).token}))}}function g(e){return e.startsWith("http")||e.startsWith("https")||e.startsWith("data:")?null:e.startsWith("file://")?e.substring(7):e.startsWith("file:")?e.substring(5):e}class w extends n{constructor(e,t){super(e),this.files=t}transcribe(e,s){return t(this,void 0,void 0,(function*(){const t=yield this.submit(e);return yield this.waitUntilReady(t.id,s)}))}submit(e){return t(this,void 0,void 0,(function*(){let t,s;if("audio"in e){const{audio:i}=e,r=function(e,t){var s={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(s[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(i=Object.getOwnPropertySymbols(e);r<i.length;r++)t.indexOf(i[r])<0&&Object.prototype.propertyIsEnumerable.call(e,i[r])&&(s[i[r]]=e[i[r]])}return s}(e,["audio"]);if("string"==typeof i){const e=g(i);t=null!==e?yield this.files.upload(e):i.startsWith("data:")?yield this.files.upload(i):i}else t=yield this.files.upload(i);s=Object.assign(Object.assign({},r),{audio_url:t})}else s=e;return yield this.fetchJson("/v2/transcript",{method:"POST",body:JSON.stringify(s)})}))}create(e,s){return t(this,void 0,void 0,(function*(){var t;const i=g(e.audio_url);if(null!==i){const t=yield this.files.upload(i);e.audio_url=t}const r=yield this.fetchJson("/v2/transcript",{method:"POST",body:JSON.stringify(e)});return null===(t=null==s?void 0:s.poll)||void 0===t||t?yield this.waitUntilReady(r.id,s):r}))}waitUntilReady(e,s){return t(this,void 0,void 0,(function*(){var t,i;const r=null!==(t=null==s?void 0:s.pollingInterval)&&void 0!==t?t:3e3,n=null!==(i=null==s?void 0:s.pollingTimeout)&&void 0!==i?i:-1,o=Date.now();for(;;){const t=yield this.get(e);if("completed"===t.status||"error"===t.status)return t;if(n>0&&Date.now()-o>n)throw new Error("Polling timeout");yield new Promise((e=>setTimeout(e,r)))}}))}get(e){return this.fetchJson(`/v2/transcript/${e}`)}list(e){return t(this,void 0,void 0,(function*(){let t="/v2/transcript";"string"==typeof e?t=e:e&&(t=`${t}?${new URLSearchParams(Object.keys(e).map((t=>{var s;return[t,(null===(s=e[t])||void 0===s?void 0:s.toString())||""]})))}`);const s=yield this.fetchJson(t);for(const e of s.transcripts)e.created=new Date(e.created),e.completed&&(e.completed=new Date(e.completed));return s}))}delete(e){return this.fetchJson(`/v2/transcript/${e}`,{method:"DELETE"})}wordSearch(e,t){const s=new URLSearchParams({words:t.join(",")});return this.fetchJson(`/v2/transcript/${e}/word-search?${s.toString()}`)}sentences(e){return this.fetchJson(`/v2/transcript/${e}/sentences`)}paragraphs(e){return this.fetchJson(`/v2/transcript/${e}/paragraphs`)}subtitles(e){return t(this,arguments,void 0,(function*(e,t="srt",s){let i=`/v2/transcript/${e}/${t}`;if(s){const e=new URLSearchParams;e.set("chars_per_caption",s.toString()),i+=`?${e.toString()}`}const r=yield this.fetch(i);return yield r.text()}))}redactions(e){return this.redactedAudio(e)}redactedAudio(e){return this.fetchJson(`/v2/transcript/${e}/redacted-audio`)}redactedAudioFile(e){return t(this,void 0,void 0,(function*(){const{redacted_audio_url:t,status:s}=yield this.redactedAudio(e);if("redacted_audio_ready"!==s)throw new Error(`Redacted audio status is ${s}`);const i=yield fetch(t);if(!i.ok)throw new Error(`Failed to fetch redacted audio: ${i.statusText}`);return{arrayBuffer:i.arrayBuffer.bind(i),blob:i.blob.bind(i),body:i.body,bodyUsed:i.bodyUsed}}))}}class k extends n{upload(e){return t(this,void 0,void 0,(function*(){let s;s="string"==typeof e?e.startsWith("data:")?function(e){const t=e.split(","),s=t[0].match(/:(.*?);/)[1],i=atob(t[1]);let r=i.length;const n=new Uint8Array(r);for(;r--;)n[r]=i.charCodeAt(r);return new Blob([n],{type:s})}(e):yield function(e){return t(this,void 0,void 0,(function*(){throw new Error("Interacting with the file system is not supported in this environment.")}))}():e;return(yield this.fetchJson("/v2/upload",{method:"POST",body:s,headers:{"Content-Type":"application/octet-stream"},duplex:"half"})).upload_url}))}}const S='{"type":"Terminate"}';class T{constructor(e){if(this.listeners={},this.params=Object.assign(Object.assign({},e),{websocketBaseUrl:e.websocketBaseUrl||"wss://streaming.assemblyai.com/v3/ws"}),"token"in e&&e.token&&(this.token=e.token),"apiKey"in e&&e.apiKey&&(this.apiKey=e.apiKey),!this.token&&!this.apiKey)throw new Error("API key or temporary token is required.")}connectionUrl(){var e;const t=new URL(null!==(e=this.params.websocketBaseUrl)&&void 0!==e?e:"");if("wss:"!==t.protocol)throw new Error("Invalid protocol, must be wss");const s=new URLSearchParams;return this.token&&s.set("token",this.token),s.set("sample_rate",this.params.sampleRate.toString()),this.params.endOfTurnConfidenceThreshold&&s.set("end_of_turn_confidence_threshold",this.params.endOfTurnConfidenceThreshold.toString()),this.params.minEndOfTurnSilenceWhenConfident&&s.set("min_end_of_turn_silence_when_confident",this.params.minEndOfTurnSilenceWhenConfident.toString()),this.params.maxTurnSilence&&s.set("max_turn_silence",this.params.maxTurnSilence.toString()),this.params.formatTurns&&s.set("format_turns",this.params.formatTurns.toString()),this.params.encoding&&s.set("encoding",this.params.encoding.toString()),this.params.keytermsPrompt?s.set("keyterms_prompt",JSON.stringify(this.params.keytermsPrompt)):this.params.keyterms&&(console.warn("[Deprecation Warning] `keyterms` is deprecated and will be removed in a future release. Please use `keytermsPrompt` instead."),s.set("keyterms_prompt",JSON.stringify(this.params.keyterms))),this.params.filterProfanity&&s.set("filter_profanity",this.params.filterProfanity.toString()),t.search=s.toString(),t}on(e,t){this.listeners[e]=t}connect(){return new Promise((e=>{if(this.socket)throw new Error("Already connected");const t=this.connectionUrl();this.token?this.socket=h(t.toString()):(console.warn("API key authentication is not supported for the StreamingTranscriber in browser environment. Use temporary token authentication instead.\nLearn more at https://github.com/AssemblyAI/assemblyai-node-sdk/blob/main/docs/compat.md#browser-compatibility."),this.socket=h(t.toString(),{headers:{Authorization:this.apiKey}})),this.socket.binaryType="arraybuffer",this.socket.onopen=()=>{},this.socket.onclose=({code:e,reason:t})=>{var s,i;t||e in p&&(t=p[e]),null===(i=(s=this.listeners).close)||void 0===i||i.call(s,e,t)},this.socket.onerror=e=>{var t,s,i,r;e.error?null===(s=(t=this.listeners).error)||void 0===s||s.call(t,e.error):null===(r=(i=this.listeners).error)||void 0===r||r.call(i,new Error(e.message))},this.socket.onmessage=({data:t})=>{var s,i,r,n,o,a,c;const l=JSON.parse(t.toString());if("error"in l)null===(i=(s=this.listeners).error)||void 0===i||i.call(s,new f(l.error));else switch(l.type){case"Begin":e(l),null===(n=(r=this.listeners).open)||void 0===n||n.call(r,l);break;case"Turn":null===(a=(o=this.listeners).turn)||void 0===a||a.call(o,l);break;case"Termination":null===(c=this.sessionTerminatedResolve)||void 0===c||c.call(this)}}}))}stream(){return new a({write:e=>{this.sendAudio(e)}})}sendAudio(e){this.send(e)}send(e){if(!this.socket||this.socket.readyState!==this.socket.OPEN)throw new Error("Socket is not open for communication");this.socket.send(e)}close(){return t(this,arguments,void 0,(function*(e=!0){var t;if(this.socket){if(this.socket.readyState===this.socket.OPEN)if(e){const e=new Promise((e=>{this.sessionTerminatedResolve=e}));this.socket.send(S),yield e}else this.socket.send(S);(null===(t=this.socket)||void 0===t?void 0:t.removeAllListeners)&&this.socket.removeAllListeners(),this.socket.close()}this.listeners={},this.socket=void 0}))}}class O extends n{constructor(e){super(e),this.baseServiceParams=e}transcriber(e){const t=Object.assign({},e);return t.token||t.apiKey||(t.apiKey=this.baseServiceParams.apiKey),new T(t)}createTemporaryToken(e){return t(this,void 0,void 0,(function*(){const t=new URLSearchParams;Object.entries(e).forEach((([e,s])=>{null!=s&&t.append(e,String(s))}));const s=t.toString(),i=s?`/v3/token?${s}`:"/v3/token";return(yield this.fetchJson(i,{method:"GET"})).token}))}}e.AssemblyAI=class{constructor(e){e.baseUrl=e.baseUrl||"https://api.assemblyai.com",e.baseUrl&&e.baseUrl.endsWith("/")&&(e.baseUrl=e.baseUrl.slice(0,-1)),this.files=new k(e),this.transcripts=new w(e,this.files),this.lemur=new o(e),this.realtime=new b(e),this.streaming=new O(Object.assign(Object.assign({},e),{baseUrl:e.streamingBaseUrl||"https://streaming.assemblyai.com"}))}},e.FileService=k,e.LemurService=o,e.RealtimeService=class extends v{},e.RealtimeServiceFactory=class extends b{},e.RealtimeTranscriber=v,e.RealtimeTranscriberFactory=b,e.StreamingTranscriber=T,e.TranscriptService=w}));
1
+ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).assemblyai={})}(this,(function(e){"use strict";function t(e,t,s,i){return new(s||(s=Promise))((function(n,r){function o(e){try{c(i.next(e))}catch(e){r(e)}}function a(e){try{c(i.throw(e))}catch(e){r(e)}}function c(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(o,a)}c((i=i.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;const s={cache:"no-store"};let i="";"undefined"!=typeof navigator&&navigator.userAgent&&(i+=navigator.userAgent);const n={sdk:{name:"JavaScript",version:"4.17.0"}};"undefined"!=typeof process&&(process.versions.node&&-1===i.indexOf("Node")&&(n.runtime_env={name:"Node",version:process.versions.node}),process.versions.bun&&-1===i.indexOf("Bun")&&(n.runtime_env={name:"Bun",version:process.versions.bun})),"undefined"!=typeof Deno&&process.versions.bun&&-1===i.indexOf("Deno")&&(n.runtime_env={name:"Deno",version:Deno.version.deno});class r{constructor(e){var t;this.params=e,!1===e.userAgent?this.userAgent=void 0:this.userAgent=(t=e.userAgent||{},i+(!1===t?"":" AssemblyAI/1.0 ("+Object.entries(Object.assign(Object.assign({},n),t)).map((([e,t])=>t?`${e}=${t.name}/${t.version}`:"")).join(" ")+")"))}fetch(e,i){return t(this,void 0,void 0,(function*(){i=Object.assign(Object.assign({},s),i);let t={Authorization:this.params.apiKey,"Content-Type":"application/json"};(null==s?void 0:s.headers)&&(t=Object.assign(Object.assign({},t),s.headers)),(null==i?void 0:i.headers)&&(t=Object.assign(Object.assign({},t),i.headers)),this.userAgent&&(t["User-Agent"]=this.userAgent,"undefined"!=typeof window&&"chrome"in window&&(t["AssemblyAI-Agent"]=this.userAgent)),i.headers=t,e.startsWith("http")||(e=this.params.baseUrl+e);const n=yield fetch(e,i);if(n.status>=400){let e;const t=yield n.text();if(t){try{e=JSON.parse(t)}catch(e){}if(null==e?void 0:e.error)throw new Error(e.error);throw new Error(t)}throw new Error(`HTTP Error: ${n.status} ${n.statusText}`)}return n}))}fetchJson(e,s){return t(this,void 0,void 0,(function*(){return(yield this.fetch(e,s)).json()}))}}class o extends r{summary(e,t){return this.fetchJson("/lemur/v3/generate/summary",{method:"POST",body:JSON.stringify(e),signal:t})}questionAnswer(e,t){return this.fetchJson("/lemur/v3/generate/question-answer",{method:"POST",body:JSON.stringify(e),signal:t})}actionItems(e,t){return this.fetchJson("/lemur/v3/generate/action-items",{method:"POST",body:JSON.stringify(e),signal:t})}task(e,t){return this.fetchJson("/lemur/v3/generate/task",{method:"POST",body:JSON.stringify(e),signal:t})}getResponse(e,t){return this.fetchJson(`/lemur/v3/${e}`,{signal:t})}purgeRequestData(e,t){return this.fetchJson(`/lemur/v3/${e}`,{method:"DELETE",signal:t})}}const{WritableStream:a}="undefined"!=typeof window?window:"undefined"!=typeof global?global:globalThis;var c,l;const d=null!==(l=null!==(c=null!==WebSocket&&void 0!==WebSocket?WebSocket:null===global||void 0===global?void 0:global.WebSocket)&&void 0!==c?c:null===window||void 0===window?void 0:window.WebSocket)&&void 0!==l?l:null===self||void 0===self?void 0:self.WebSocket,h=(e,t)=>t?new d(e,t):new d(e),u={[4e3]:"Sample rate must be a positive integer",[4001]:"Not Authorized",[4002]:"Insufficient funds",[4003]:"This feature is paid-only and requires you to add a credit card. Please visit https://app.assemblyai.com/ to add a credit card to your account.",[4004]:"Session ID does not exist",[4008]:"Session has expired",[4010]:"Session is closed",[4029]:"Rate limited",[4030]:"Unique session violation",[4031]:"Session Timeout",[4032]:"Audio too short",[4033]:"Audio too long",[4034]:"Audio too small to transcode",[4100]:"Bad JSON",[4101]:"Bad schema",[4102]:"Too many streams",[4103]:"This session has been reconnected. This WebSocket is no longer valid.",[1013]:"Reconnect attempts exhausted",[4104]:"Could not parse word boost parameter"};class m extends Error{}const p={[4e3]:"Sample rate must be a positive integer",[4001]:"Not Authorized",[4002]:"Insufficient funds",[4003]:"This feature is paid-only and requires you to add a credit card. Please visit https://app.assemblyai.com/ to add a credit card to your account.",[4004]:"Session ID does not exist",[4008]:"Session has expired",[4010]:"Session is closed",[4029]:"Rate limited",[4030]:"Unique session violation",[4031]:"Session Timeout",[4032]:"Audio too short",[4033]:"Audio too long",[4034]:"Audio too small to transcode",[4101]:"Bad schema",[4102]:"Too many streams",[4103]:"This session has been reconnected. This WebSocket is no longer valid."};class f extends Error{}const y='{"terminate_session":true}';class v{constructor(e){var t,s;if(this.listeners={},this.realtimeUrl=null!==(t=e.realtimeUrl)&&void 0!==t?t:"wss://api.assemblyai.com/v2/realtime/ws",this.sampleRate=null!==(s=e.sampleRate)&&void 0!==s?s:16e3,this.wordBoost=e.wordBoost,this.encoding=e.encoding,this.endUtteranceSilenceThreshold=e.endUtteranceSilenceThreshold,this.disablePartialTranscripts=e.disablePartialTranscripts,"token"in e&&e.token&&(this.token=e.token),"apiKey"in e&&e.apiKey&&(this.apiKey=e.apiKey),!this.token&&!this.apiKey)throw new Error("API key or temporary token is required.")}connectionUrl(){const e=new URL(this.realtimeUrl);if("wss:"!==e.protocol)throw new Error("Invalid protocol, must be wss");const t=new URLSearchParams;return this.token&&t.set("token",this.token),t.set("sample_rate",this.sampleRate.toString()),this.wordBoost&&this.wordBoost.length>0&&t.set("word_boost",JSON.stringify(this.wordBoost)),this.encoding&&t.set("encoding",this.encoding),t.set("enable_extra_session_information","true"),this.disablePartialTranscripts&&t.set("disable_partial_transcripts",this.disablePartialTranscripts.toString()),e.search=t.toString(),e}on(e,t){this.listeners[e]=t}connect(){return new Promise((e=>{if(this.socket)throw new Error("Already connected");const t=this.connectionUrl();this.token?this.socket=h(t.toString()):(console.warn("API key authentication is not supported for the RealtimeTranscriber in browser environment. Use temporary token authentication instead.\nLearn more at https://github.com/AssemblyAI/assemblyai-node-sdk/blob/main/docs/compat.md#browser-compatibility."),this.socket=h(t.toString(),{headers:{Authorization:this.apiKey}})),this.socket.binaryType="arraybuffer",this.socket.onopen=()=>{void 0!==this.endUtteranceSilenceThreshold&&null!==this.endUtteranceSilenceThreshold&&this.configureEndUtteranceSilenceThreshold(this.endUtteranceSilenceThreshold)},this.socket.onclose=({code:e,reason:t})=>{var s,i;t||e in u&&(t=u[e]),null===(i=(s=this.listeners).close)||void 0===i||i.call(s,e,t)},this.socket.onerror=e=>{var t,s,i,n;e.error?null===(s=(t=this.listeners).error)||void 0===s||s.call(t,e.error):null===(n=(i=this.listeners).error)||void 0===n||n.call(i,new Error(e.message))},this.socket.onmessage=({data:t})=>{var s,i,n,r,o,a,c,l,d,h,u,p,f,y,v;const b=JSON.parse(t.toString());if("error"in b)null===(i=(s=this.listeners).error)||void 0===i||i.call(s,new m(b.error));else switch(b.message_type){case"SessionBegins":{const t={sessionId:b.session_id,expiresAt:new Date(b.expires_at)};e(t),null===(r=(n=this.listeners).open)||void 0===r||r.call(n,t);break}case"PartialTranscript":b.created=new Date(b.created),null===(a=(o=this.listeners).transcript)||void 0===a||a.call(o,b),null===(l=(c=this.listeners)["transcript.partial"])||void 0===l||l.call(c,b);break;case"FinalTranscript":b.created=new Date(b.created),null===(h=(d=this.listeners).transcript)||void 0===h||h.call(d,b),null===(p=(u=this.listeners)["transcript.final"])||void 0===p||p.call(u,b);break;case"SessionInformation":null===(y=(f=this.listeners).session_information)||void 0===y||y.call(f,b);break;case"SessionTerminated":null===(v=this.sessionTerminatedResolve)||void 0===v||v.call(this)}}}))}sendAudio(e){this.send(e)}stream(){return new a({write:e=>{this.sendAudio(e)}})}forceEndUtterance(){this.send('{"force_end_utterance":true}')}configureEndUtteranceSilenceThreshold(e){this.send(`{"end_utterance_silence_threshold":${e}}`)}send(e){if(!this.socket||this.socket.readyState!==this.socket.OPEN)throw new Error("Socket is not open for communication");this.socket.send(e)}close(){return t(this,arguments,void 0,(function*(e=!0){var t;if(this.socket){if(this.socket.readyState===this.socket.OPEN)if(e){const e=new Promise((e=>{this.sessionTerminatedResolve=e}));this.socket.send(y),yield e}else this.socket.send(y);(null===(t=this.socket)||void 0===t?void 0:t.removeAllListeners)&&this.socket.removeAllListeners(),this.socket.close()}this.listeners={},this.socket=void 0}))}}class b extends r{constructor(e){super(e),this.rtFactoryParams=e}createService(e){return this.transcriber(e)}transcriber(e){const t=Object.assign({},e);return t.token||t.apiKey||(t.apiKey=this.rtFactoryParams.apiKey),new v(t)}createTemporaryToken(e){return t(this,void 0,void 0,(function*(){return(yield this.fetchJson("/v2/realtime/token",{method:"POST",body:JSON.stringify(e)})).token}))}}function g(e){return e.startsWith("http")||e.startsWith("https")||e.startsWith("data:")?null:e.startsWith("file://")?e.substring(7):e.startsWith("file:")?e.substring(5):e}class w extends r{constructor(e,t){super(e),this.files=t}transcribe(e,s){return t(this,void 0,void 0,(function*(){const t=yield this.submit(e);return yield this.waitUntilReady(t.id,s)}))}submit(e){return t(this,void 0,void 0,(function*(){let t,s;if("audio"in e){const{audio:i}=e,n=function(e,t){var s={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(s[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var n=0;for(i=Object.getOwnPropertySymbols(e);n<i.length;n++)t.indexOf(i[n])<0&&Object.prototype.propertyIsEnumerable.call(e,i[n])&&(s[i[n]]=e[i[n]])}return s}(e,["audio"]);if("string"==typeof i){const e=g(i);t=null!==e?yield this.files.upload(e):i.startsWith("data:")?yield this.files.upload(i):i}else t=yield this.files.upload(i);s=Object.assign(Object.assign({},n),{audio_url:t})}else s=e;return yield this.fetchJson("/v2/transcript",{method:"POST",body:JSON.stringify(s)})}))}create(e,s){return t(this,void 0,void 0,(function*(){var t;const i=g(e.audio_url);if(null!==i){const t=yield this.files.upload(i);e.audio_url=t}const n=yield this.fetchJson("/v2/transcript",{method:"POST",body:JSON.stringify(e)});return null===(t=null==s?void 0:s.poll)||void 0===t||t?yield this.waitUntilReady(n.id,s):n}))}waitUntilReady(e,s){return t(this,void 0,void 0,(function*(){var t,i;const n=null!==(t=null==s?void 0:s.pollingInterval)&&void 0!==t?t:3e3,r=null!==(i=null==s?void 0:s.pollingTimeout)&&void 0!==i?i:-1,o=Date.now();for(;;){const t=yield this.get(e);if("completed"===t.status||"error"===t.status)return t;if(r>0&&Date.now()-o>r)throw new Error("Polling timeout");yield new Promise((e=>setTimeout(e,n)))}}))}get(e){return this.fetchJson(`/v2/transcript/${e}`)}list(e){return t(this,void 0,void 0,(function*(){let t="/v2/transcript";"string"==typeof e?t=e:e&&(t=`${t}?${new URLSearchParams(Object.keys(e).map((t=>{var s;return[t,(null===(s=e[t])||void 0===s?void 0:s.toString())||""]})))}`);const s=yield this.fetchJson(t);for(const e of s.transcripts)e.created=new Date(e.created),e.completed&&(e.completed=new Date(e.completed));return s}))}delete(e){return this.fetchJson(`/v2/transcript/${e}`,{method:"DELETE"})}wordSearch(e,t){const s=new URLSearchParams({words:t.join(",")});return this.fetchJson(`/v2/transcript/${e}/word-search?${s.toString()}`)}sentences(e){return this.fetchJson(`/v2/transcript/${e}/sentences`)}paragraphs(e){return this.fetchJson(`/v2/transcript/${e}/paragraphs`)}subtitles(e){return t(this,arguments,void 0,(function*(e,t="srt",s){let i=`/v2/transcript/${e}/${t}`;if(s){const e=new URLSearchParams;e.set("chars_per_caption",s.toString()),i+=`?${e.toString()}`}const n=yield this.fetch(i);return yield n.text()}))}redactions(e){return this.redactedAudio(e)}redactedAudio(e){return this.fetchJson(`/v2/transcript/${e}/redacted-audio`)}redactedAudioFile(e){return t(this,void 0,void 0,(function*(){const{redacted_audio_url:t,status:s}=yield this.redactedAudio(e);if("redacted_audio_ready"!==s)throw new Error(`Redacted audio status is ${s}`);const i=yield fetch(t);if(!i.ok)throw new Error(`Failed to fetch redacted audio: ${i.statusText}`);return{arrayBuffer:i.arrayBuffer.bind(i),blob:i.blob.bind(i),body:i.body,bodyUsed:i.bodyUsed}}))}}class k extends r{upload(e){return t(this,void 0,void 0,(function*(){let s;s="string"==typeof e?e.startsWith("data:")?function(e){const t=e.split(","),s=t[0].match(/:(.*?);/)[1],i=atob(t[1]);let n=i.length;const r=new Uint8Array(n);for(;n--;)r[n]=i.charCodeAt(n);return new Blob([r],{type:s})}(e):yield function(e){return t(this,void 0,void 0,(function*(){throw new Error("Interacting with the file system is not supported in this environment.")}))}():e;return(yield this.fetchJson("/v2/upload",{method:"POST",body:s,headers:{"Content-Type":"application/octet-stream"},duplex:"half"})).upload_url}))}}const S='{"type":"Terminate"}';class T{constructor(e){if(this.listeners={},this.params=Object.assign(Object.assign({},e),{websocketBaseUrl:e.websocketBaseUrl||"wss://streaming.assemblyai.com/v3/ws"}),"token"in e&&e.token&&(this.token=e.token),"apiKey"in e&&e.apiKey&&(this.apiKey=e.apiKey),!this.token&&!this.apiKey)throw new Error("API key or temporary token is required.")}connectionUrl(){var e;const t=new URL(null!==(e=this.params.websocketBaseUrl)&&void 0!==e?e:"");if("wss:"!==t.protocol)throw new Error("Invalid protocol, must be wss");const s=new URLSearchParams;return this.token&&s.set("token",this.token),s.set("sample_rate",this.params.sampleRate.toString()),this.params.endOfTurnConfidenceThreshold&&s.set("end_of_turn_confidence_threshold",this.params.endOfTurnConfidenceThreshold.toString()),this.params.minEndOfTurnSilenceWhenConfident&&s.set("min_end_of_turn_silence_when_confident",this.params.minEndOfTurnSilenceWhenConfident.toString()),this.params.maxTurnSilence&&s.set("max_turn_silence",this.params.maxTurnSilence.toString()),this.params.formatTurns&&s.set("format_turns",this.params.formatTurns.toString()),this.params.encoding&&s.set("encoding",this.params.encoding.toString()),this.params.keytermsPrompt?s.set("keyterms_prompt",JSON.stringify(this.params.keytermsPrompt)):this.params.keyterms&&(console.warn("[Deprecation Warning] `keyterms` is deprecated and will be removed in a future release. Please use `keytermsPrompt` instead."),s.set("keyterms_prompt",JSON.stringify(this.params.keyterms))),this.params.filterProfanity&&s.set("filter_profanity",this.params.filterProfanity.toString()),t.search=s.toString(),t}on(e,t){this.listeners[e]=t}connect(){return new Promise((e=>{if(this.socket)throw new Error("Already connected");const t=this.connectionUrl();this.token?this.socket=h(t.toString()):(console.warn("API key authentication is not supported for the StreamingTranscriber in browser environment. Use temporary token authentication instead.\nLearn more at https://github.com/AssemblyAI/assemblyai-node-sdk/blob/main/docs/compat.md#browser-compatibility."),this.socket=h(t.toString(),{headers:{Authorization:this.apiKey}})),this.socket.binaryType="arraybuffer",this.socket.onopen=()=>{},this.socket.onclose=({code:e,reason:t})=>{var s,i;t||e in p&&(t=p[e]),null===(i=(s=this.listeners).close)||void 0===i||i.call(s,e,t)},this.socket.onerror=e=>{var t,s,i,n;e.error?null===(s=(t=this.listeners).error)||void 0===s||s.call(t,e.error):null===(n=(i=this.listeners).error)||void 0===n||n.call(i,new Error(e.message))},this.socket.onmessage=({data:t})=>{var s,i,n,r,o,a,c;const l=JSON.parse(t.toString());if("error"in l)null===(i=(s=this.listeners).error)||void 0===i||i.call(s,new f(l.error));else switch(l.type){case"Begin":e(l),null===(r=(n=this.listeners).open)||void 0===r||r.call(n,l);break;case"Turn":null===(a=(o=this.listeners).turn)||void 0===a||a.call(o,l);break;case"Termination":null===(c=this.sessionTerminatedResolve)||void 0===c||c.call(this)}}}))}stream(){return new a({write:e=>{this.sendAudio(e)}})}sendAudio(e){this.send(e)}send(e){if(!this.socket||this.socket.readyState!==this.socket.OPEN)throw new Error("Socket is not open for communication");this.socket.send(e)}close(){return t(this,arguments,void 0,(function*(e=!0){var t;if(this.socket){if(this.socket.readyState===this.socket.OPEN)if(e){const e=new Promise((e=>{this.sessionTerminatedResolve=e}));this.socket.send(S),yield e}else this.socket.send(S);(null===(t=this.socket)||void 0===t?void 0:t.removeAllListeners)&&this.socket.removeAllListeners(),this.socket.close()}this.listeners={},this.socket=void 0}))}}class O extends r{constructor(e){super(e),this.baseServiceParams=e}transcriber(e){const t=Object.assign({},e);return t.token||t.apiKey||(t.apiKey=this.baseServiceParams.apiKey),new T(t)}createTemporaryToken(e){return t(this,void 0,void 0,(function*(){const t=new URLSearchParams;Object.entries(e).forEach((([e,s])=>{null!=s&&t.append(e,String(s))}));const s=t.toString(),i=s?`/v3/token?${s}`:"/v3/token";return(yield this.fetchJson(i,{method:"GET"})).token}))}}e.AssemblyAI=class{constructor(e){e.baseUrl=e.baseUrl||"https://api.assemblyai.com",e.baseUrl&&e.baseUrl.endsWith("/")&&(e.baseUrl=e.baseUrl.slice(0,-1)),this.files=new k(e),this.transcripts=new w(e,this.files),this.lemur=new o(e),this.realtime=new b(e),this.streaming=new O(Object.assign(Object.assign({},e),{baseUrl:e.streamingBaseUrl||"https://streaming.assemblyai.com"}))}},e.FileService=k,e.LemurService=o,e.RealtimeService=class extends v{},e.RealtimeServiceFactory=class extends b{},e.RealtimeTranscriber=v,e.RealtimeTranscriberFactory=b,e.StreamingTranscriber=T,e.TranscriptService=w}));
package/dist/browser.mjs CHANGED
@@ -15,7 +15,7 @@ if (typeof navigator !== "undefined" && navigator.userAgent) {
15
15
  defaultUserAgentString += navigator.userAgent;
16
16
  }
17
17
  const defaultUserAgent = {
18
- sdk: { name: "JavaScript", version: "4.16.1" },
18
+ sdk: { name: "JavaScript", version: "4.17.0" },
19
19
  };
20
20
  if (typeof process !== "undefined") {
21
21
  if (process.versions.node && defaultUserAgentString.indexOf("Node") === -1) {
@@ -103,40 +103,46 @@ class BaseService {
103
103
  }
104
104
 
105
105
  class LemurService extends BaseService {
106
- summary(params) {
106
+ summary(params, signal) {
107
107
  return this.fetchJson("/lemur/v3/generate/summary", {
108
108
  method: "POST",
109
109
  body: JSON.stringify(params),
110
+ signal,
110
111
  });
111
112
  }
112
- questionAnswer(params) {
113
+ questionAnswer(params, signal) {
113
114
  return this.fetchJson("/lemur/v3/generate/question-answer", {
114
115
  method: "POST",
115
116
  body: JSON.stringify(params),
117
+ signal,
116
118
  });
117
119
  }
118
- actionItems(params) {
120
+ actionItems(params, signal) {
119
121
  return this.fetchJson("/lemur/v3/generate/action-items", {
120
122
  method: "POST",
121
123
  body: JSON.stringify(params),
124
+ signal,
122
125
  });
123
126
  }
124
- task(params) {
127
+ task(params, signal) {
125
128
  return this.fetchJson("/lemur/v3/generate/task", {
126
129
  method: "POST",
127
130
  body: JSON.stringify(params),
131
+ signal,
128
132
  });
129
133
  }
130
- getResponse(id) {
131
- return this.fetchJson(`/lemur/v3/${id}`);
134
+ getResponse(id, signal) {
135
+ return this.fetchJson(`/lemur/v3/${id}`, { signal });
132
136
  }
133
137
  /**
134
138
  * Delete the data for a previously submitted LeMUR request.
135
139
  * @param id - ID of the LeMUR request
140
+ * @param signal - Optional AbortSignal to cancel the request
136
141
  */
137
- purgeRequestData(id) {
142
+ purgeRequestData(id, signal) {
138
143
  return this.fetchJson(`/lemur/v3/${id}`, {
139
144
  method: "DELETE",
145
+ signal,
140
146
  });
141
147
  }
142
148
  }
package/dist/bun.mjs CHANGED
@@ -17,7 +17,7 @@ if (typeof navigator !== "undefined" && navigator.userAgent) {
17
17
  defaultUserAgentString += navigator.userAgent;
18
18
  }
19
19
  const defaultUserAgent = {
20
- sdk: { name: "JavaScript", version: "4.16.1" },
20
+ sdk: { name: "JavaScript", version: "4.17.0" },
21
21
  };
22
22
  if (typeof process !== "undefined") {
23
23
  if (process.versions.node && defaultUserAgentString.indexOf("Node") === -1) {
@@ -98,40 +98,46 @@ class BaseService {
98
98
  }
99
99
 
100
100
  class LemurService extends BaseService {
101
- summary(params) {
101
+ summary(params, signal) {
102
102
  return this.fetchJson("/lemur/v3/generate/summary", {
103
103
  method: "POST",
104
104
  body: JSON.stringify(params),
105
+ signal,
105
106
  });
106
107
  }
107
- questionAnswer(params) {
108
+ questionAnswer(params, signal) {
108
109
  return this.fetchJson("/lemur/v3/generate/question-answer", {
109
110
  method: "POST",
110
111
  body: JSON.stringify(params),
112
+ signal,
111
113
  });
112
114
  }
113
- actionItems(params) {
115
+ actionItems(params, signal) {
114
116
  return this.fetchJson("/lemur/v3/generate/action-items", {
115
117
  method: "POST",
116
118
  body: JSON.stringify(params),
119
+ signal,
117
120
  });
118
121
  }
119
- task(params) {
122
+ task(params, signal) {
120
123
  return this.fetchJson("/lemur/v3/generate/task", {
121
124
  method: "POST",
122
125
  body: JSON.stringify(params),
126
+ signal,
123
127
  });
124
128
  }
125
- getResponse(id) {
126
- return this.fetchJson(`/lemur/v3/${id}`);
129
+ getResponse(id, signal) {
130
+ return this.fetchJson(`/lemur/v3/${id}`, { signal });
127
131
  }
128
132
  /**
129
133
  * Delete the data for a previously submitted LeMUR request.
130
134
  * @param id - ID of the LeMUR request
135
+ * @param signal - Optional AbortSignal to cancel the request
131
136
  */
132
- purgeRequestData(id) {
137
+ purgeRequestData(id, signal) {
133
138
  return this.fetchJson(`/lemur/v3/${id}`, {
134
139
  method: "DELETE",
140
+ signal,
135
141
  });
136
142
  }
137
143
  }
package/dist/deno.mjs CHANGED
@@ -17,7 +17,7 @@ if (typeof navigator !== "undefined" && navigator.userAgent) {
17
17
  defaultUserAgentString += navigator.userAgent;
18
18
  }
19
19
  const defaultUserAgent = {
20
- sdk: { name: "JavaScript", version: "4.16.1" },
20
+ sdk: { name: "JavaScript", version: "4.17.0" },
21
21
  };
22
22
  if (typeof process !== "undefined") {
23
23
  if (process.versions.node && defaultUserAgentString.indexOf("Node") === -1) {
@@ -98,40 +98,46 @@ class BaseService {
98
98
  }
99
99
 
100
100
  class LemurService extends BaseService {
101
- summary(params) {
101
+ summary(params, signal) {
102
102
  return this.fetchJson("/lemur/v3/generate/summary", {
103
103
  method: "POST",
104
104
  body: JSON.stringify(params),
105
+ signal,
105
106
  });
106
107
  }
107
- questionAnswer(params) {
108
+ questionAnswer(params, signal) {
108
109
  return this.fetchJson("/lemur/v3/generate/question-answer", {
109
110
  method: "POST",
110
111
  body: JSON.stringify(params),
112
+ signal,
111
113
  });
112
114
  }
113
- actionItems(params) {
115
+ actionItems(params, signal) {
114
116
  return this.fetchJson("/lemur/v3/generate/action-items", {
115
117
  method: "POST",
116
118
  body: JSON.stringify(params),
119
+ signal,
117
120
  });
118
121
  }
119
- task(params) {
122
+ task(params, signal) {
120
123
  return this.fetchJson("/lemur/v3/generate/task", {
121
124
  method: "POST",
122
125
  body: JSON.stringify(params),
126
+ signal,
123
127
  });
124
128
  }
125
- getResponse(id) {
126
- return this.fetchJson(`/lemur/v3/${id}`);
129
+ getResponse(id, signal) {
130
+ return this.fetchJson(`/lemur/v3/${id}`, { signal });
127
131
  }
128
132
  /**
129
133
  * Delete the data for a previously submitted LeMUR request.
130
134
  * @param id - ID of the LeMUR request
135
+ * @param signal - Optional AbortSignal to cancel the request
131
136
  */
132
- purgeRequestData(id) {
137
+ purgeRequestData(id, signal) {
133
138
  return this.fetchJson(`/lemur/v3/${id}`, {
134
139
  method: "DELETE",
140
+ signal,
135
141
  });
136
142
  }
137
143
  }
package/dist/index.cjs CHANGED
@@ -63,7 +63,7 @@ if (typeof navigator !== "undefined" && navigator.userAgent) {
63
63
  defaultUserAgentString += navigator.userAgent;
64
64
  }
65
65
  const defaultUserAgent = {
66
- sdk: { name: "JavaScript", version: "4.16.1" },
66
+ sdk: { name: "JavaScript", version: "4.17.0" },
67
67
  };
68
68
  if (typeof process !== "undefined") {
69
69
  if (process.versions.node && defaultUserAgentString.indexOf("Node") === -1) {
@@ -155,40 +155,46 @@ class BaseService {
155
155
  }
156
156
 
157
157
  class LemurService extends BaseService {
158
- summary(params) {
158
+ summary(params, signal) {
159
159
  return this.fetchJson("/lemur/v3/generate/summary", {
160
160
  method: "POST",
161
161
  body: JSON.stringify(params),
162
+ signal,
162
163
  });
163
164
  }
164
- questionAnswer(params) {
165
+ questionAnswer(params, signal) {
165
166
  return this.fetchJson("/lemur/v3/generate/question-answer", {
166
167
  method: "POST",
167
168
  body: JSON.stringify(params),
169
+ signal,
168
170
  });
169
171
  }
170
- actionItems(params) {
172
+ actionItems(params, signal) {
171
173
  return this.fetchJson("/lemur/v3/generate/action-items", {
172
174
  method: "POST",
173
175
  body: JSON.stringify(params),
176
+ signal,
174
177
  });
175
178
  }
176
- task(params) {
179
+ task(params, signal) {
177
180
  return this.fetchJson("/lemur/v3/generate/task", {
178
181
  method: "POST",
179
182
  body: JSON.stringify(params),
183
+ signal,
180
184
  });
181
185
  }
182
- getResponse(id) {
183
- return this.fetchJson(`/lemur/v3/${id}`);
186
+ getResponse(id, signal) {
187
+ return this.fetchJson(`/lemur/v3/${id}`, { signal });
184
188
  }
185
189
  /**
186
190
  * Delete the data for a previously submitted LeMUR request.
187
191
  * @param id - ID of the LeMUR request
192
+ * @param signal - Optional AbortSignal to cancel the request
188
193
  */
189
- purgeRequestData(id) {
194
+ purgeRequestData(id, signal) {
190
195
  return this.fetchJson(`/lemur/v3/${id}`, {
191
196
  method: "DELETE",
197
+ signal,
192
198
  });
193
199
  }
194
200
  }
package/dist/index.mjs CHANGED
@@ -61,7 +61,7 @@ if (typeof navigator !== "undefined" && navigator.userAgent) {
61
61
  defaultUserAgentString += navigator.userAgent;
62
62
  }
63
63
  const defaultUserAgent = {
64
- sdk: { name: "JavaScript", version: "4.16.1" },
64
+ sdk: { name: "JavaScript", version: "4.17.0" },
65
65
  };
66
66
  if (typeof process !== "undefined") {
67
67
  if (process.versions.node && defaultUserAgentString.indexOf("Node") === -1) {
@@ -153,40 +153,46 @@ class BaseService {
153
153
  }
154
154
 
155
155
  class LemurService extends BaseService {
156
- summary(params) {
156
+ summary(params, signal) {
157
157
  return this.fetchJson("/lemur/v3/generate/summary", {
158
158
  method: "POST",
159
159
  body: JSON.stringify(params),
160
+ signal,
160
161
  });
161
162
  }
162
- questionAnswer(params) {
163
+ questionAnswer(params, signal) {
163
164
  return this.fetchJson("/lemur/v3/generate/question-answer", {
164
165
  method: "POST",
165
166
  body: JSON.stringify(params),
167
+ signal,
166
168
  });
167
169
  }
168
- actionItems(params) {
170
+ actionItems(params, signal) {
169
171
  return this.fetchJson("/lemur/v3/generate/action-items", {
170
172
  method: "POST",
171
173
  body: JSON.stringify(params),
174
+ signal,
172
175
  });
173
176
  }
174
- task(params) {
177
+ task(params, signal) {
175
178
  return this.fetchJson("/lemur/v3/generate/task", {
176
179
  method: "POST",
177
180
  body: JSON.stringify(params),
181
+ signal,
178
182
  });
179
183
  }
180
- getResponse(id) {
181
- return this.fetchJson(`/lemur/v3/${id}`);
184
+ getResponse(id, signal) {
185
+ return this.fetchJson(`/lemur/v3/${id}`, { signal });
182
186
  }
183
187
  /**
184
188
  * Delete the data for a previously submitted LeMUR request.
185
189
  * @param id - ID of the LeMUR request
190
+ * @param signal - Optional AbortSignal to cancel the request
186
191
  */
187
- purgeRequestData(id) {
192
+ purgeRequestData(id, signal) {
188
193
  return this.fetchJson(`/lemur/v3/${id}`, {
189
194
  method: "DELETE",
195
+ signal,
190
196
  });
191
197
  }
192
198
  }
package/dist/node.cjs CHANGED
@@ -22,7 +22,7 @@ if (typeof navigator !== "undefined" && navigator.userAgent) {
22
22
  defaultUserAgentString += navigator.userAgent;
23
23
  }
24
24
  const defaultUserAgent = {
25
- sdk: { name: "JavaScript", version: "4.16.1" },
25
+ sdk: { name: "JavaScript", version: "4.17.0" },
26
26
  };
27
27
  if (typeof process !== "undefined") {
28
28
  if (process.versions.node && defaultUserAgentString.indexOf("Node") === -1) {
@@ -103,40 +103,46 @@ class BaseService {
103
103
  }
104
104
 
105
105
  class LemurService extends BaseService {
106
- summary(params) {
106
+ summary(params, signal) {
107
107
  return this.fetchJson("/lemur/v3/generate/summary", {
108
108
  method: "POST",
109
109
  body: JSON.stringify(params),
110
+ signal,
110
111
  });
111
112
  }
112
- questionAnswer(params) {
113
+ questionAnswer(params, signal) {
113
114
  return this.fetchJson("/lemur/v3/generate/question-answer", {
114
115
  method: "POST",
115
116
  body: JSON.stringify(params),
117
+ signal,
116
118
  });
117
119
  }
118
- actionItems(params) {
120
+ actionItems(params, signal) {
119
121
  return this.fetchJson("/lemur/v3/generate/action-items", {
120
122
  method: "POST",
121
123
  body: JSON.stringify(params),
124
+ signal,
122
125
  });
123
126
  }
124
- task(params) {
127
+ task(params, signal) {
125
128
  return this.fetchJson("/lemur/v3/generate/task", {
126
129
  method: "POST",
127
130
  body: JSON.stringify(params),
131
+ signal,
128
132
  });
129
133
  }
130
- getResponse(id) {
131
- return this.fetchJson(`/lemur/v3/${id}`);
134
+ getResponse(id, signal) {
135
+ return this.fetchJson(`/lemur/v3/${id}`, { signal });
132
136
  }
133
137
  /**
134
138
  * Delete the data for a previously submitted LeMUR request.
135
139
  * @param id - ID of the LeMUR request
140
+ * @param signal - Optional AbortSignal to cancel the request
136
141
  */
137
- purgeRequestData(id) {
142
+ purgeRequestData(id, signal) {
138
143
  return this.fetchJson(`/lemur/v3/${id}`, {
139
144
  method: "DELETE",
145
+ signal,
140
146
  });
141
147
  }
142
148
  }
package/dist/node.mjs CHANGED
@@ -20,7 +20,7 @@ if (typeof navigator !== "undefined" && navigator.userAgent) {
20
20
  defaultUserAgentString += navigator.userAgent;
21
21
  }
22
22
  const defaultUserAgent = {
23
- sdk: { name: "JavaScript", version: "4.16.1" },
23
+ sdk: { name: "JavaScript", version: "4.17.0" },
24
24
  };
25
25
  if (typeof process !== "undefined") {
26
26
  if (process.versions.node && defaultUserAgentString.indexOf("Node") === -1) {
@@ -101,40 +101,46 @@ class BaseService {
101
101
  }
102
102
 
103
103
  class LemurService extends BaseService {
104
- summary(params) {
104
+ summary(params, signal) {
105
105
  return this.fetchJson("/lemur/v3/generate/summary", {
106
106
  method: "POST",
107
107
  body: JSON.stringify(params),
108
+ signal,
108
109
  });
109
110
  }
110
- questionAnswer(params) {
111
+ questionAnswer(params, signal) {
111
112
  return this.fetchJson("/lemur/v3/generate/question-answer", {
112
113
  method: "POST",
113
114
  body: JSON.stringify(params),
115
+ signal,
114
116
  });
115
117
  }
116
- actionItems(params) {
118
+ actionItems(params, signal) {
117
119
  return this.fetchJson("/lemur/v3/generate/action-items", {
118
120
  method: "POST",
119
121
  body: JSON.stringify(params),
122
+ signal,
120
123
  });
121
124
  }
122
- task(params) {
125
+ task(params, signal) {
123
126
  return this.fetchJson("/lemur/v3/generate/task", {
124
127
  method: "POST",
125
128
  body: JSON.stringify(params),
129
+ signal,
126
130
  });
127
131
  }
128
- getResponse(id) {
129
- return this.fetchJson(`/lemur/v3/${id}`);
132
+ getResponse(id, signal) {
133
+ return this.fetchJson(`/lemur/v3/${id}`, { signal });
130
134
  }
131
135
  /**
132
136
  * Delete the data for a previously submitted LeMUR request.
133
137
  * @param id - ID of the LeMUR request
138
+ * @param signal - Optional AbortSignal to cancel the request
134
139
  */
135
- purgeRequestData(id) {
140
+ purgeRequestData(id, signal) {
136
141
  return this.fetchJson(`/lemur/v3/${id}`, {
137
142
  method: "DELETE",
143
+ signal,
138
144
  });
139
145
  }
140
146
  }
@@ -1,20 +1,22 @@
1
1
  import { LemurSummaryParams, LemurActionItemsParams, LemurQuestionAnswerParams, LemurTaskParams, LemurSummaryResponse, LemurQuestionAnswerResponse, LemurActionItemsResponse, LemurTaskResponse, PurgeLemurRequestDataResponse, LemurResponse } from "../..";
2
2
  import { BaseService } from "../base";
3
3
  export declare class LemurService extends BaseService {
4
- summary(params: LemurSummaryParams): Promise<LemurSummaryResponse>;
5
- questionAnswer(params: LemurQuestionAnswerParams): Promise<LemurQuestionAnswerResponse>;
6
- actionItems(params: LemurActionItemsParams): Promise<LemurActionItemsResponse>;
7
- task(params: LemurTaskParams): Promise<LemurTaskResponse>;
4
+ summary(params: LemurSummaryParams, signal?: AbortSignal): Promise<LemurSummaryResponse>;
5
+ questionAnswer(params: LemurQuestionAnswerParams, signal?: AbortSignal): Promise<LemurQuestionAnswerResponse>;
6
+ actionItems(params: LemurActionItemsParams, signal?: AbortSignal): Promise<LemurActionItemsResponse>;
7
+ task(params: LemurTaskParams, signal?: AbortSignal): Promise<LemurTaskResponse>;
8
8
  /**
9
9
  * Retrieve a LeMUR response that was previously generated.
10
10
  * @param id - The ID of the LeMUR request you previously made. This would be found in the response of the original request.
11
+ * @param signal - Optional AbortSignal to cancel the request
11
12
  * @returns The LeMUR response.
12
13
  */
13
- getResponse<T extends LemurResponse>(id: string): Promise<T>;
14
- getResponse(id: string): Promise<LemurResponse>;
14
+ getResponse<T extends LemurResponse>(id: string, signal?: AbortSignal): Promise<T>;
15
+ getResponse(id: string, signal?: AbortSignal): Promise<LemurResponse>;
15
16
  /**
16
17
  * Delete the data for a previously submitted LeMUR request.
17
18
  * @param id - ID of the LeMUR request
19
+ * @param signal - Optional AbortSignal to cancel the request
18
20
  */
19
- purgeRequestData(id: string): Promise<PurgeLemurRequestDataResponse>;
21
+ purgeRequestData(id: string, signal?: AbortSignal): Promise<PurgeLemurRequestDataResponse>;
20
22
  }
package/dist/workerd.mjs CHANGED
@@ -15,7 +15,7 @@ if (typeof navigator !== "undefined" && navigator.userAgent) {
15
15
  defaultUserAgentString += navigator.userAgent;
16
16
  }
17
17
  const defaultUserAgent = {
18
- sdk: { name: "JavaScript", version: "4.16.1" },
18
+ sdk: { name: "JavaScript", version: "4.17.0" },
19
19
  };
20
20
  if (typeof process !== "undefined") {
21
21
  if (process.versions.node && defaultUserAgentString.indexOf("Node") === -1) {
@@ -96,40 +96,46 @@ class BaseService {
96
96
  }
97
97
 
98
98
  class LemurService extends BaseService {
99
- summary(params) {
99
+ summary(params, signal) {
100
100
  return this.fetchJson("/lemur/v3/generate/summary", {
101
101
  method: "POST",
102
102
  body: JSON.stringify(params),
103
+ signal,
103
104
  });
104
105
  }
105
- questionAnswer(params) {
106
+ questionAnswer(params, signal) {
106
107
  return this.fetchJson("/lemur/v3/generate/question-answer", {
107
108
  method: "POST",
108
109
  body: JSON.stringify(params),
110
+ signal,
109
111
  });
110
112
  }
111
- actionItems(params) {
113
+ actionItems(params, signal) {
112
114
  return this.fetchJson("/lemur/v3/generate/action-items", {
113
115
  method: "POST",
114
116
  body: JSON.stringify(params),
117
+ signal,
115
118
  });
116
119
  }
117
- task(params) {
120
+ task(params, signal) {
118
121
  return this.fetchJson("/lemur/v3/generate/task", {
119
122
  method: "POST",
120
123
  body: JSON.stringify(params),
124
+ signal,
121
125
  });
122
126
  }
123
- getResponse(id) {
124
- return this.fetchJson(`/lemur/v3/${id}`);
127
+ getResponse(id, signal) {
128
+ return this.fetchJson(`/lemur/v3/${id}`, { signal });
125
129
  }
126
130
  /**
127
131
  * Delete the data for a previously submitted LeMUR request.
128
132
  * @param id - ID of the LeMUR request
133
+ * @param signal - Optional AbortSignal to cancel the request
129
134
  */
130
- purgeRequestData(id) {
135
+ purgeRequestData(id, signal) {
131
136
  return this.fetchJson(`/lemur/v3/${id}`, {
132
137
  method: "DELETE",
138
+ signal,
133
139
  });
134
140
  }
135
141
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "assemblyai",
3
- "version": "4.16.1",
3
+ "version": "4.17.0",
4
4
  "description": "The AssemblyAI JavaScript SDK provides an easy-to-use interface for interacting with the AssemblyAI API, which supports async and real-time transcription, as well as the latest LeMUR models.",
5
5
  "engines": {
6
6
  "node": ">=18"
@@ -13,62 +13,83 @@ import {
13
13
  import { BaseService } from "../base";
14
14
 
15
15
  export class LemurService extends BaseService {
16
- summary(params: LemurSummaryParams): Promise<LemurSummaryResponse> {
16
+ summary(
17
+ params: LemurSummaryParams,
18
+ signal?: AbortSignal,
19
+ ): Promise<LemurSummaryResponse> {
17
20
  return this.fetchJson<LemurSummaryResponse>("/lemur/v3/generate/summary", {
18
21
  method: "POST",
19
22
  body: JSON.stringify(params),
23
+ signal,
20
24
  });
21
25
  }
22
26
 
23
27
  questionAnswer(
24
28
  params: LemurQuestionAnswerParams,
29
+ signal?: AbortSignal,
25
30
  ): Promise<LemurQuestionAnswerResponse> {
26
31
  return this.fetchJson<LemurQuestionAnswerResponse>(
27
32
  "/lemur/v3/generate/question-answer",
28
33
  {
29
34
  method: "POST",
30
35
  body: JSON.stringify(params),
36
+ signal,
31
37
  },
32
38
  );
33
39
  }
34
40
 
35
41
  actionItems(
36
42
  params: LemurActionItemsParams,
43
+ signal?: AbortSignal,
37
44
  ): Promise<LemurActionItemsResponse> {
38
45
  return this.fetchJson<LemurActionItemsResponse>(
39
46
  "/lemur/v3/generate/action-items",
40
47
  {
41
48
  method: "POST",
42
49
  body: JSON.stringify(params),
50
+ signal,
43
51
  },
44
52
  );
45
53
  }
46
54
 
47
- task(params: LemurTaskParams): Promise<LemurTaskResponse> {
55
+ task(
56
+ params: LemurTaskParams,
57
+ signal?: AbortSignal,
58
+ ): Promise<LemurTaskResponse> {
48
59
  return this.fetchJson<LemurTaskResponse>("/lemur/v3/generate/task", {
49
60
  method: "POST",
50
61
  body: JSON.stringify(params),
62
+ signal,
51
63
  });
52
64
  }
53
65
 
54
66
  /**
55
67
  * Retrieve a LeMUR response that was previously generated.
56
68
  * @param id - The ID of the LeMUR request you previously made. This would be found in the response of the original request.
69
+ * @param signal - Optional AbortSignal to cancel the request
57
70
  * @returns The LeMUR response.
58
71
  */
59
- getResponse<T extends LemurResponse>(id: string): Promise<T>;
60
- getResponse(id: string): Promise<LemurResponse>;
61
- getResponse(id: string): Promise<LemurResponse> {
62
- return this.fetchJson<LemurResponse>(`/lemur/v3/${id}`);
72
+ getResponse<T extends LemurResponse>(
73
+ id: string,
74
+ signal?: AbortSignal,
75
+ ): Promise<T>;
76
+ getResponse(id: string, signal?: AbortSignal): Promise<LemurResponse>;
77
+ getResponse(id: string, signal?: AbortSignal): Promise<LemurResponse> {
78
+ return this.fetchJson<LemurResponse>(`/lemur/v3/${id}`, { signal });
63
79
  }
64
80
 
65
81
  /**
66
82
  * Delete the data for a previously submitted LeMUR request.
67
83
  * @param id - ID of the LeMUR request
84
+ * @param signal - Optional AbortSignal to cancel the request
68
85
  */
69
- purgeRequestData(id: string): Promise<PurgeLemurRequestDataResponse> {
86
+ purgeRequestData(
87
+ id: string,
88
+ signal?: AbortSignal,
89
+ ): Promise<PurgeLemurRequestDataResponse> {
70
90
  return this.fetchJson<PurgeLemurRequestDataResponse>(`/lemur/v3/${id}`, {
71
91
  method: "DELETE",
92
+ signal,
72
93
  });
73
94
  }
74
95
  }
@@ -118,7 +118,10 @@ export class StreamingTranscriber {
118
118
  }
119
119
 
120
120
  if (this.params.filterProfanity) {
121
- searchParams.set("filter_profanity", this.params.filterProfanity.toString());
121
+ searchParams.set(
122
+ "filter_profanity",
123
+ this.params.filterProfanity.toString(),
124
+ );
122
125
  }
123
126
 
124
127
  url.search = searchParams.toString();