assemblyai 4.4.6 → 4.4.7
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.
- package/CHANGELOG.md +6 -0
- package/dist/assemblyai.umd.js +49 -9
- package/dist/assemblyai.umd.min.js +1 -1
- package/dist/browser.mjs +43 -8
- package/dist/bun.mjs +43 -8
- package/dist/deno.mjs +43 -8
- package/dist/index.cjs +49 -9
- package/dist/index.mjs +49 -9
- package/dist/node.cjs +43 -8
- package/dist/node.mjs +43 -8
- package/dist/polyfills/fetch/default.d.ts +1 -0
- package/dist/polyfills/fetch/workerd.d.ts +1 -0
- package/dist/services/transcripts/index.d.ts +16 -3
- package/dist/types/transcripts/index.d.ts +9 -0
- package/dist/workerd.mjs +719 -0
- package/package.json +6 -2
- package/src/polyfills/fetch/default.ts +3 -0
- package/src/polyfills/fetch/workerd.ts +1 -0
- package/src/services/base.ts +7 -7
- package/src/services/transcripts/index.ts +35 -2
- package/src/types/transcripts/index.ts +10 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [4.4.7]
|
|
4
|
+
|
|
5
|
+
- Rename `TranscriptService.redactions` function to `TranscriptService.redactedAudio`.
|
|
6
|
+
- Add `TranscriptService.redactedAudioFile` function.
|
|
7
|
+
- Add `workerd` export to fix `cache` issue with `fetch` on Cloudflare Workers.
|
|
8
|
+
|
|
3
9
|
## [4.4.6]
|
|
4
10
|
|
|
5
11
|
- Fix Rollup exports so \_\_SDK_VERSION\_\_ is properly replaced with the version of the SDK.
|
package/dist/assemblyai.umd.js
CHANGED
|
@@ -48,6 +48,10 @@
|
|
|
48
48
|
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
49
49
|
};
|
|
50
50
|
|
|
51
|
+
const DEFAULT_FETCH_INIT = {
|
|
52
|
+
cache: "no-store",
|
|
53
|
+
};
|
|
54
|
+
|
|
51
55
|
const buildUserAgent = (userAgent) => defaultUserAgentString +
|
|
52
56
|
(userAgent === false
|
|
53
57
|
? ""
|
|
@@ -61,7 +65,7 @@
|
|
|
61
65
|
defaultUserAgentString += navigator.userAgent;
|
|
62
66
|
}
|
|
63
67
|
const defaultUserAgent = {
|
|
64
|
-
sdk: { name: "JavaScript", version: "4.4.
|
|
68
|
+
sdk: { name: "JavaScript", version: "4.4.7" },
|
|
65
69
|
};
|
|
66
70
|
if (typeof process !== "undefined") {
|
|
67
71
|
if (process.versions.node && defaultUserAgentString.indexOf("Node") === -1) {
|
|
@@ -102,10 +106,15 @@
|
|
|
102
106
|
}
|
|
103
107
|
fetch(input, init) {
|
|
104
108
|
return __awaiter(this, void 0, void 0, function* () {
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
+
init = Object.assign(Object.assign({}, DEFAULT_FETCH_INIT), init);
|
|
110
|
+
let headers = {
|
|
111
|
+
Authorization: this.params.apiKey,
|
|
112
|
+
"Content-Type": "application/json",
|
|
113
|
+
};
|
|
114
|
+
if (DEFAULT_FETCH_INIT === null || DEFAULT_FETCH_INIT === void 0 ? void 0 : DEFAULT_FETCH_INIT.headers)
|
|
115
|
+
headers = Object.assign(Object.assign({}, headers), DEFAULT_FETCH_INIT.headers);
|
|
116
|
+
if (init === null || init === void 0 ? void 0 : init.headers)
|
|
117
|
+
headers = Object.assign(Object.assign({}, headers), init.headers);
|
|
109
118
|
if (this.userAgent) {
|
|
110
119
|
headers["User-Agent"] = this.userAgent;
|
|
111
120
|
// chromium browsers have a bug where the user agent can't be modified
|
|
@@ -115,7 +124,6 @@
|
|
|
115
124
|
}
|
|
116
125
|
}
|
|
117
126
|
init.headers = headers;
|
|
118
|
-
init.cache = "no-store";
|
|
119
127
|
if (!input.startsWith("http"))
|
|
120
128
|
input = this.params.baseUrl + input;
|
|
121
129
|
const response = yield fetch(input, init);
|
|
@@ -126,7 +134,7 @@
|
|
|
126
134
|
try {
|
|
127
135
|
json = JSON.parse(text);
|
|
128
136
|
}
|
|
129
|
-
catch (
|
|
137
|
+
catch (_a) {
|
|
130
138
|
/* empty */
|
|
131
139
|
}
|
|
132
140
|
if (json === null || json === void 0 ? void 0 : json.error)
|
|
@@ -684,13 +692,45 @@
|
|
|
684
692
|
});
|
|
685
693
|
}
|
|
686
694
|
/**
|
|
687
|
-
* Retrieve
|
|
695
|
+
* Retrieve the redacted audio URL of a transcript.
|
|
688
696
|
* @param id - The identifier of the transcript.
|
|
689
|
-
* @returns A promise that resolves to the
|
|
697
|
+
* @returns A promise that resolves to the details of the redacted audio.
|
|
698
|
+
* @deprecated Use `redactedAudio` instead.
|
|
690
699
|
*/
|
|
691
700
|
redactions(id) {
|
|
701
|
+
return this.redactedAudio(id);
|
|
702
|
+
}
|
|
703
|
+
/**
|
|
704
|
+
* Retrieve the redacted audio URL of a transcript.
|
|
705
|
+
* @param id - The identifier of the transcript.
|
|
706
|
+
* @returns A promise that resolves to the details of the redacted audio.
|
|
707
|
+
*/
|
|
708
|
+
redactedAudio(id) {
|
|
692
709
|
return this.fetchJson(`/v2/transcript/${id}/redacted-audio`);
|
|
693
710
|
}
|
|
711
|
+
/**
|
|
712
|
+
* Retrieve the redacted audio file of a transcript.
|
|
713
|
+
* @param id - The identifier of the transcript.
|
|
714
|
+
* @returns A promise that resolves to the fetch HTTP response of the redacted audio file.
|
|
715
|
+
*/
|
|
716
|
+
redactedAudioFile(id) {
|
|
717
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
718
|
+
const { redacted_audio_url, status } = yield this.redactedAudio(id);
|
|
719
|
+
if (status !== "redacted_audio_ready") {
|
|
720
|
+
throw new Error(`Redacted audio status is ${status}`);
|
|
721
|
+
}
|
|
722
|
+
const response = yield fetch(redacted_audio_url);
|
|
723
|
+
if (!response.ok) {
|
|
724
|
+
throw new Error(`Failed to fetch redacted audio: ${response.statusText}`);
|
|
725
|
+
}
|
|
726
|
+
return {
|
|
727
|
+
arrayBuffer: response.arrayBuffer.bind(response),
|
|
728
|
+
blob: response.blob.bind(response),
|
|
729
|
+
body: response.body,
|
|
730
|
+
bodyUsed: response.bodyUsed,
|
|
731
|
+
};
|
|
732
|
+
});
|
|
733
|
+
}
|
|
694
734
|
}
|
|
695
735
|
function deprecateConformer2(params) {
|
|
696
736
|
if (!params)
|
|
@@ -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,n){return new(s||(s=Promise))((function(i,o){function r(e){try{c(n.next(e))}catch(e){o(e)}}function a(e){try{c(n.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(r,a)}c((n=n.apply(e,t||[])).next())}))}"function"==typeof SuppressedError&&SuppressedError;let s="";"undefined"!=typeof navigator&&navigator.userAgent&&(s+=navigator.userAgent);const n={sdk:{name:"JavaScript",version:"4.4.6"}};"undefined"!=typeof process&&(process.versions.node&&-1===s.indexOf("Node")&&(n.runtime_env={name:"Node",version:process.versions.node}),process.versions.bun&&-1===s.indexOf("Bun")&&(n.runtime_env={name:"Bun",version:process.versions.bun})),"undefined"!=typeof Deno&&process.versions.bun&&-1===s.indexOf("Deno")&&(n.runtime_env={name:"Deno",version:Deno.version.deno});class i{constructor(e){var t;this.params=e,!1===e.userAgent?this.userAgent=void 0:this.userAgent=(t=e.userAgent||{},s+(!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,s){return t(this,void 0,void 0,(function*(){var t;let n=null!==(t=(s=null!=s?s:{}).headers)&&void 0!==t?t:{};n=Object.assign({Authorization:this.params.apiKey,"Content-Type":"application/json"},s.headers),this.userAgent&&(n["User-Agent"]=this.userAgent,"undefined"!=typeof window&&"chrome"in window&&(n["AssemblyAI-Agent"]=this.userAgent)),s.headers=n,s.cache="no-store",e.startsWith("http")||(e=this.params.baseUrl+e);const i=yield fetch(e,s);if(i.status>=400){let e;const t=yield i.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: ${i.status} ${i.statusText}`)}return i}))}fetchJson(e,s){return t(this,void 0,void 0,(function*(){return(yield this.fetch(e,s)).json()}))}}class o extends i{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)})}purgeRequestData(e){return this.fetchJson(`/lemur/v3/${e}`,{method:"DELETE"})}}const{WritableStream:r}="undefined"!=typeof window?window:"undefined"!=typeof global?global:globalThis;var a,c;const l=null!==(c=null!==(a=null!==WebSocket&&void 0!==WebSocket?WebSocket:null===global||void 0===global?void 0:global.WebSocket)&&void 0!==a?a:null===window||void 0===window?void 0:window.WebSocket)&&void 0!==c?c:null===self||void 0===self?void 0:self.WebSocket,d=(e,t)=>t?new l(e,t):new l(e);var h;!function(e){e[e.BadSampleRate=4e3]="BadSampleRate",e[e.AuthFailed=4001]="AuthFailed",e[e.InsufficientFundsOrFreeAccount=4002]="InsufficientFundsOrFreeAccount",e[e.NonexistentSessionId=4004]="NonexistentSessionId",e[e.SessionExpired=4008]="SessionExpired",e[e.ClosedSession=4010]="ClosedSession",e[e.RateLimited=4029]="RateLimited",e[e.UniqueSessionViolation=4030]="UniqueSessionViolation",e[e.SessionTimeout=4031]="SessionTimeout",e[e.AudioTooShort=4032]="AudioTooShort",e[e.AudioTooLong=4033]="AudioTooLong",e[e.BadJson=4100]="BadJson",e[e.BadSchema=4101]="BadSchema",e[e.TooManyStreams=4102]="TooManyStreams",e[e.Reconnected=4103]="Reconnected",e[e.ReconnectAttemptsExhausted=1013]="ReconnectAttemptsExhausted"}(h||(h={}));const u={[h.BadSampleRate]:"Sample rate must be a positive integer",[h.AuthFailed]:"Not Authorized",[h.InsufficientFundsOrFreeAccount]:"Insufficient funds or you are using a free account. This feature is paid-only and requires you to add a credit card. Please visit https://assemblyai.com/dashboard/ to add a credit card to your account.",[h.NonexistentSessionId]:"Session ID does not exist",[h.SessionExpired]:"Session has expired",[h.ClosedSession]:"Session is closed",[h.RateLimited]:"Rate limited",[h.UniqueSessionViolation]:"Unique session violation",[h.SessionTimeout]:"Session Timeout",[h.AudioTooShort]:"Audio too short",[h.AudioTooLong]:"Audio too long",[h.BadJson]:"Bad JSON",[h.BadSchema]:"Bad schema",[h.TooManyStreams]:"Too many streams",[h.Reconnected]:"Reconnected",[h.ReconnectAttemptsExhausted]:"Reconnect attempts exhausted"};class p extends Error{}const f='{"terminate_session":true}';class m{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=d(t.toString()):this.socket=d(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,n;t||e in h&&(t=u[e]),null===(n=(s=this.listeners).close)||void 0===n||n.call(s,e,t)},this.socket.onerror=e=>{var t,s,n,i;e.error?null===(s=(t=this.listeners).error)||void 0===s||s.call(t,e.error):null===(i=(n=this.listeners).error)||void 0===i||i.call(n,new Error(e.message))},this.socket.onmessage=({data:t})=>{var s,n,i,o,r,a,c,l,d,h,u,f,m,v,y;const S=JSON.parse(t.toString());if("error"in S)null===(n=(s=this.listeners).error)||void 0===n||n.call(s,new p(S.error));else switch(S.message_type){case"SessionBegins":{const t={sessionId:S.session_id,expiresAt:new Date(S.expires_at)};e(t),null===(o=(i=this.listeners).open)||void 0===o||o.call(i,t);break}case"PartialTranscript":S.created=new Date(S.created),null===(a=(r=this.listeners).transcript)||void 0===a||a.call(r,S),null===(l=(c=this.listeners)["transcript.partial"])||void 0===l||l.call(c,S);break;case"FinalTranscript":S.created=new Date(S.created),null===(h=(d=this.listeners).transcript)||void 0===h||h.call(d,S),null===(f=(u=this.listeners)["transcript.final"])||void 0===f||f.call(u,S);break;case"SessionInformation":null===(v=(m=this.listeners).session_information)||void 0===v||v.call(m,S);break;case"SessionTerminated":null===(y=this.sessionTerminatedResolve)||void 0===y||y.call(this)}}}))}sendAudio(e){this.send(e)}stream(){return new r({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(f),yield e}else this.socket.send(f);(null===(t=this.socket)||void 0===t?void 0:t.removeAllListeners)&&this.socket.removeAllListeners(),this.socket.close()}this.listeners={},this.socket=void 0}))}}class v extends i{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 m(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 y(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 S extends i{constructor(e,t){super(e),this.files=t}transcribe(e,s){return t(this,void 0,void 0,(function*(){w(e);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(w(e),"audio"in e){const{audio:n}=e,i=function(e,t){var s={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(s[n]=e[n]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var i=0;for(n=Object.getOwnPropertySymbols(e);i<n.length;i++)t.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(e,n[i])&&(s[n[i]]=e[n[i]])}return s}(e,["audio"]);if("string"==typeof n){const e=y(n);t=null!==e?yield this.files.upload(e):n.startsWith("data:")?yield this.files.upload(n):n}else t=yield this.files.upload(n);s=Object.assign(Object.assign({},i),{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;w(e);const n=y(e.audio_url);if(null!==n){const t=yield this.files.upload(n);e.audio_url=t}const i=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(i.id,s):i}))}waitUntilReady(e,s){return t(this,void 0,void 0,(function*(){var t,n;const i=null!==(t=null==s?void 0:s.pollingInterval)&&void 0!==t?t:3e3,o=null!==(n=null==s?void 0:s.pollingTimeout)&&void 0!==n?n:-1,r=Date.now();for(;;){const t=yield this.get(e);if("completed"===t.status||"error"===t.status)return t;if(o>0&&Date.now()-r>o)throw new Error("Polling timeout");yield new Promise((e=>setTimeout(e,i)))}}))}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 n=`/v2/transcript/${e}/${t}`;if(s){const e=new URLSearchParams;e.set("chars_per_caption",s.toString()),n+=`?${e.toString()}`}const i=yield this.fetch(n);return yield i.text()}))}redactions(e){return this.fetchJson(`/v2/transcript/${e}/redacted-audio`)}}function w(e){e&&"conformer-2"===e.speech_model&&console.warn("The speech_model conformer-2 option is deprecated and will stop working in the near future. Use best or nano instead.")}class g extends i{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],n=atob(t[1]);let i=n.length;const o=new Uint8Array(i);for(;i--;)o[i]=n.charCodeAt(i);return new Blob([o],{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}))}}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 g(e),this.transcripts=new S(e,this.files),this.lemur=new o(e),this.realtime=new v(e)}},e.FileService=g,e.LemurService=o,e.RealtimeService=class extends m{},e.RealtimeServiceFactory=class extends v{},e.RealtimeTranscriber=m,e.RealtimeTranscriberFactory=v,e.TranscriptService=S}));
|
|
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,o){function r(e){try{d(i.next(e))}catch(e){o(e)}}function a(e){try{d(i.throw(e))}catch(e){o(e)}}function d(e){var t;e.done?n(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(r,a)}d((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.4.7"}};"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 o{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 r extends o{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)})}purgeRequestData(e){return this.fetchJson(`/lemur/v3/${e}`,{method:"DELETE"})}}const{WritableStream:a}="undefined"!=typeof window?window:"undefined"!=typeof global?global:globalThis;var d,c;const l=null!==(c=null!==(d=null!==WebSocket&&void 0!==WebSocket?WebSocket:null===global||void 0===global?void 0:global.WebSocket)&&void 0!==d?d:null===window||void 0===window?void 0:window.WebSocket)&&void 0!==c?c:null===self||void 0===self?void 0:self.WebSocket,u=(e,t)=>t?new l(e,t):new l(e);var h;!function(e){e[e.BadSampleRate=4e3]="BadSampleRate",e[e.AuthFailed=4001]="AuthFailed",e[e.InsufficientFundsOrFreeAccount=4002]="InsufficientFundsOrFreeAccount",e[e.NonexistentSessionId=4004]="NonexistentSessionId",e[e.SessionExpired=4008]="SessionExpired",e[e.ClosedSession=4010]="ClosedSession",e[e.RateLimited=4029]="RateLimited",e[e.UniqueSessionViolation=4030]="UniqueSessionViolation",e[e.SessionTimeout=4031]="SessionTimeout",e[e.AudioTooShort=4032]="AudioTooShort",e[e.AudioTooLong=4033]="AudioTooLong",e[e.BadJson=4100]="BadJson",e[e.BadSchema=4101]="BadSchema",e[e.TooManyStreams=4102]="TooManyStreams",e[e.Reconnected=4103]="Reconnected",e[e.ReconnectAttemptsExhausted=1013]="ReconnectAttemptsExhausted"}(h||(h={}));const f={[h.BadSampleRate]:"Sample rate must be a positive integer",[h.AuthFailed]:"Not Authorized",[h.InsufficientFundsOrFreeAccount]:"Insufficient funds or you are using a free account. This feature is paid-only and requires you to add a credit card. Please visit https://assemblyai.com/dashboard/ to add a credit card to your account.",[h.NonexistentSessionId]:"Session ID does not exist",[h.SessionExpired]:"Session has expired",[h.ClosedSession]:"Session is closed",[h.RateLimited]:"Rate limited",[h.UniqueSessionViolation]:"Unique session violation",[h.SessionTimeout]:"Session Timeout",[h.AudioTooShort]:"Audio too short",[h.AudioTooLong]:"Audio too long",[h.BadJson]:"Bad JSON",[h.BadSchema]:"Bad schema",[h.TooManyStreams]:"Too many streams",[h.Reconnected]:"Reconnected",[h.ReconnectAttemptsExhausted]:"Reconnect attempts exhausted"};class p extends Error{}const m='{"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=u(t.toString()):this.socket=u(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 h&&(t=f[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,o,r,a,d,c,l,u,h,f,m,v,y;const b=JSON.parse(t.toString());if("error"in b)null===(i=(s=this.listeners).error)||void 0===i||i.call(s,new p(b.error));else switch(b.message_type){case"SessionBegins":{const t={sessionId:b.session_id,expiresAt:new Date(b.expires_at)};e(t),null===(o=(n=this.listeners).open)||void 0===o||o.call(n,t);break}case"PartialTranscript":b.created=new Date(b.created),null===(a=(r=this.listeners).transcript)||void 0===a||a.call(r,b),null===(c=(d=this.listeners)["transcript.partial"])||void 0===c||c.call(d,b);break;case"FinalTranscript":b.created=new Date(b.created),null===(u=(l=this.listeners).transcript)||void 0===u||u.call(l,b),null===(f=(h=this.listeners)["transcript.final"])||void 0===f||f.call(h,b);break;case"SessionInformation":null===(v=(m=this.listeners).session_information)||void 0===v||v.call(m,b);break;case"SessionTerminated":null===(y=this.sessionTerminatedResolve)||void 0===y||y.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(m),yield e}else this.socket.send(m);(null===(t=this.socket)||void 0===t?void 0:t.removeAllListeners)&&this.socket.removeAllListeners(),this.socket.close()}this.listeners={},this.socket=void 0}))}}class y extends o{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 b(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 S extends o{constructor(e,t){super(e),this.files=t}transcribe(e,s){return t(this,void 0,void 0,(function*(){w(e);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(w(e),"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=b(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;w(e);const i=b(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,o=null!==(i=null==s?void 0:s.pollingTimeout)&&void 0!==i?i:-1,r=Date.now();for(;;){const t=yield this.get(e);if("completed"===t.status||"error"===t.status)return t;if(o>0&&Date.now()-r>o)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}}))}}function w(e){e&&"conformer-2"===e.speech_model&&console.warn("The speech_model conformer-2 option is deprecated and will stop working in the near future. Use best or nano instead.")}class g extends o{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 o=new Uint8Array(n);for(;n--;)o[n]=i.charCodeAt(n);return new Blob([o],{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}))}}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 g(e),this.transcripts=new S(e,this.files),this.lemur=new r(e),this.realtime=new y(e)}},e.FileService=g,e.LemurService=r,e.RealtimeService=class extends v{},e.RealtimeServiceFactory=class extends y{},e.RealtimeTranscriber=v,e.RealtimeTranscriberFactory=y,e.TranscriptService=S}));
|
package/dist/browser.mjs
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
const DEFAULT_FETCH_INIT = {
|
|
2
|
+
cache: "no-store",
|
|
3
|
+
};
|
|
4
|
+
|
|
1
5
|
const buildUserAgent = (userAgent) => defaultUserAgentString +
|
|
2
6
|
(userAgent === false
|
|
3
7
|
? ""
|
|
@@ -11,7 +15,7 @@ if (typeof navigator !== "undefined" && navigator.userAgent) {
|
|
|
11
15
|
defaultUserAgentString += navigator.userAgent;
|
|
12
16
|
}
|
|
13
17
|
const defaultUserAgent = {
|
|
14
|
-
sdk: { name: "JavaScript", version: "4.4.
|
|
18
|
+
sdk: { name: "JavaScript", version: "4.4.7" },
|
|
15
19
|
};
|
|
16
20
|
if (typeof process !== "undefined") {
|
|
17
21
|
if (process.versions.node && defaultUserAgentString.indexOf("Node") === -1) {
|
|
@@ -51,13 +55,15 @@ class BaseService {
|
|
|
51
55
|
}
|
|
52
56
|
}
|
|
53
57
|
async fetch(input, init) {
|
|
54
|
-
init = init
|
|
55
|
-
let headers =
|
|
56
|
-
headers = {
|
|
58
|
+
init = { ...DEFAULT_FETCH_INIT, ...init };
|
|
59
|
+
let headers = {
|
|
57
60
|
Authorization: this.params.apiKey,
|
|
58
61
|
"Content-Type": "application/json",
|
|
59
|
-
...init.headers,
|
|
60
62
|
};
|
|
63
|
+
if (DEFAULT_FETCH_INIT?.headers)
|
|
64
|
+
headers = { ...headers, ...DEFAULT_FETCH_INIT.headers };
|
|
65
|
+
if (init?.headers)
|
|
66
|
+
headers = { ...headers, ...init.headers };
|
|
61
67
|
if (this.userAgent) {
|
|
62
68
|
headers["User-Agent"] = this.userAgent;
|
|
63
69
|
// chromium browsers have a bug where the user agent can't be modified
|
|
@@ -67,7 +73,6 @@ class BaseService {
|
|
|
67
73
|
}
|
|
68
74
|
}
|
|
69
75
|
init.headers = headers;
|
|
70
|
-
init.cache = "no-store";
|
|
71
76
|
if (!input.startsWith("http"))
|
|
72
77
|
input = this.params.baseUrl + input;
|
|
73
78
|
const response = await fetch(input, init);
|
|
@@ -606,13 +611,43 @@ class TranscriptService extends BaseService {
|
|
|
606
611
|
return await response.text();
|
|
607
612
|
}
|
|
608
613
|
/**
|
|
609
|
-
* Retrieve
|
|
614
|
+
* Retrieve the redacted audio URL of a transcript.
|
|
610
615
|
* @param id - The identifier of the transcript.
|
|
611
|
-
* @returns A promise that resolves to the
|
|
616
|
+
* @returns A promise that resolves to the details of the redacted audio.
|
|
617
|
+
* @deprecated Use `redactedAudio` instead.
|
|
612
618
|
*/
|
|
613
619
|
redactions(id) {
|
|
620
|
+
return this.redactedAudio(id);
|
|
621
|
+
}
|
|
622
|
+
/**
|
|
623
|
+
* Retrieve the redacted audio URL of a transcript.
|
|
624
|
+
* @param id - The identifier of the transcript.
|
|
625
|
+
* @returns A promise that resolves to the details of the redacted audio.
|
|
626
|
+
*/
|
|
627
|
+
redactedAudio(id) {
|
|
614
628
|
return this.fetchJson(`/v2/transcript/${id}/redacted-audio`);
|
|
615
629
|
}
|
|
630
|
+
/**
|
|
631
|
+
* Retrieve the redacted audio file of a transcript.
|
|
632
|
+
* @param id - The identifier of the transcript.
|
|
633
|
+
* @returns A promise that resolves to the fetch HTTP response of the redacted audio file.
|
|
634
|
+
*/
|
|
635
|
+
async redactedAudioFile(id) {
|
|
636
|
+
const { redacted_audio_url, status } = await this.redactedAudio(id);
|
|
637
|
+
if (status !== "redacted_audio_ready") {
|
|
638
|
+
throw new Error(`Redacted audio status is ${status}`);
|
|
639
|
+
}
|
|
640
|
+
const response = await fetch(redacted_audio_url);
|
|
641
|
+
if (!response.ok) {
|
|
642
|
+
throw new Error(`Failed to fetch redacted audio: ${response.statusText}`);
|
|
643
|
+
}
|
|
644
|
+
return {
|
|
645
|
+
arrayBuffer: response.arrayBuffer.bind(response),
|
|
646
|
+
blob: response.blob.bind(response),
|
|
647
|
+
body: response.body,
|
|
648
|
+
bodyUsed: response.bodyUsed,
|
|
649
|
+
};
|
|
650
|
+
}
|
|
616
651
|
}
|
|
617
652
|
function deprecateConformer2(params) {
|
|
618
653
|
if (!params)
|
package/dist/bun.mjs
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import ws from 'ws';
|
|
2
2
|
|
|
3
|
+
const DEFAULT_FETCH_INIT = {
|
|
4
|
+
cache: "no-store",
|
|
5
|
+
};
|
|
6
|
+
|
|
3
7
|
const buildUserAgent = (userAgent) => defaultUserAgentString +
|
|
4
8
|
(userAgent === false
|
|
5
9
|
? ""
|
|
@@ -13,7 +17,7 @@ if (typeof navigator !== "undefined" && navigator.userAgent) {
|
|
|
13
17
|
defaultUserAgentString += navigator.userAgent;
|
|
14
18
|
}
|
|
15
19
|
const defaultUserAgent = {
|
|
16
|
-
sdk: { name: "JavaScript", version: "4.4.
|
|
20
|
+
sdk: { name: "JavaScript", version: "4.4.7" },
|
|
17
21
|
};
|
|
18
22
|
if (typeof process !== "undefined") {
|
|
19
23
|
if (process.versions.node && defaultUserAgentString.indexOf("Node") === -1) {
|
|
@@ -53,13 +57,15 @@ class BaseService {
|
|
|
53
57
|
}
|
|
54
58
|
}
|
|
55
59
|
async fetch(input, init) {
|
|
56
|
-
init = init
|
|
57
|
-
let headers =
|
|
58
|
-
headers = {
|
|
60
|
+
init = { ...DEFAULT_FETCH_INIT, ...init };
|
|
61
|
+
let headers = {
|
|
59
62
|
Authorization: this.params.apiKey,
|
|
60
63
|
"Content-Type": "application/json",
|
|
61
|
-
...init.headers,
|
|
62
64
|
};
|
|
65
|
+
if (DEFAULT_FETCH_INIT?.headers)
|
|
66
|
+
headers = { ...headers, ...DEFAULT_FETCH_INIT.headers };
|
|
67
|
+
if (init?.headers)
|
|
68
|
+
headers = { ...headers, ...init.headers };
|
|
63
69
|
if (this.userAgent) {
|
|
64
70
|
headers["User-Agent"] = this.userAgent;
|
|
65
71
|
// chromium browsers have a bug where the user agent can't be modified
|
|
@@ -69,7 +75,6 @@ class BaseService {
|
|
|
69
75
|
}
|
|
70
76
|
}
|
|
71
77
|
init.headers = headers;
|
|
72
|
-
init.cache = "no-store";
|
|
73
78
|
if (!input.startsWith("http"))
|
|
74
79
|
input = this.params.baseUrl + input;
|
|
75
80
|
const response = await fetch(input, init);
|
|
@@ -602,13 +607,43 @@ class TranscriptService extends BaseService {
|
|
|
602
607
|
return await response.text();
|
|
603
608
|
}
|
|
604
609
|
/**
|
|
605
|
-
* Retrieve
|
|
610
|
+
* Retrieve the redacted audio URL of a transcript.
|
|
606
611
|
* @param id - The identifier of the transcript.
|
|
607
|
-
* @returns A promise that resolves to the
|
|
612
|
+
* @returns A promise that resolves to the details of the redacted audio.
|
|
613
|
+
* @deprecated Use `redactedAudio` instead.
|
|
608
614
|
*/
|
|
609
615
|
redactions(id) {
|
|
616
|
+
return this.redactedAudio(id);
|
|
617
|
+
}
|
|
618
|
+
/**
|
|
619
|
+
* Retrieve the redacted audio URL of a transcript.
|
|
620
|
+
* @param id - The identifier of the transcript.
|
|
621
|
+
* @returns A promise that resolves to the details of the redacted audio.
|
|
622
|
+
*/
|
|
623
|
+
redactedAudio(id) {
|
|
610
624
|
return this.fetchJson(`/v2/transcript/${id}/redacted-audio`);
|
|
611
625
|
}
|
|
626
|
+
/**
|
|
627
|
+
* Retrieve the redacted audio file of a transcript.
|
|
628
|
+
* @param id - The identifier of the transcript.
|
|
629
|
+
* @returns A promise that resolves to the fetch HTTP response of the redacted audio file.
|
|
630
|
+
*/
|
|
631
|
+
async redactedAudioFile(id) {
|
|
632
|
+
const { redacted_audio_url, status } = await this.redactedAudio(id);
|
|
633
|
+
if (status !== "redacted_audio_ready") {
|
|
634
|
+
throw new Error(`Redacted audio status is ${status}`);
|
|
635
|
+
}
|
|
636
|
+
const response = await fetch(redacted_audio_url);
|
|
637
|
+
if (!response.ok) {
|
|
638
|
+
throw new Error(`Failed to fetch redacted audio: ${response.statusText}`);
|
|
639
|
+
}
|
|
640
|
+
return {
|
|
641
|
+
arrayBuffer: response.arrayBuffer.bind(response),
|
|
642
|
+
blob: response.blob.bind(response),
|
|
643
|
+
body: response.body,
|
|
644
|
+
bodyUsed: response.bodyUsed,
|
|
645
|
+
};
|
|
646
|
+
}
|
|
612
647
|
}
|
|
613
648
|
function deprecateConformer2(params) {
|
|
614
649
|
if (!params)
|
package/dist/deno.mjs
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
import ws from 'ws';
|
|
2
2
|
|
|
3
|
+
const DEFAULT_FETCH_INIT = {
|
|
4
|
+
cache: "no-store",
|
|
5
|
+
};
|
|
6
|
+
|
|
3
7
|
const buildUserAgent = (userAgent) => defaultUserAgentString +
|
|
4
8
|
(userAgent === false
|
|
5
9
|
? ""
|
|
@@ -13,7 +17,7 @@ if (typeof navigator !== "undefined" && navigator.userAgent) {
|
|
|
13
17
|
defaultUserAgentString += navigator.userAgent;
|
|
14
18
|
}
|
|
15
19
|
const defaultUserAgent = {
|
|
16
|
-
sdk: { name: "JavaScript", version: "4.4.
|
|
20
|
+
sdk: { name: "JavaScript", version: "4.4.7" },
|
|
17
21
|
};
|
|
18
22
|
if (typeof process !== "undefined") {
|
|
19
23
|
if (process.versions.node && defaultUserAgentString.indexOf("Node") === -1) {
|
|
@@ -53,13 +57,15 @@ class BaseService {
|
|
|
53
57
|
}
|
|
54
58
|
}
|
|
55
59
|
async fetch(input, init) {
|
|
56
|
-
init = init
|
|
57
|
-
let headers =
|
|
58
|
-
headers = {
|
|
60
|
+
init = { ...DEFAULT_FETCH_INIT, ...init };
|
|
61
|
+
let headers = {
|
|
59
62
|
Authorization: this.params.apiKey,
|
|
60
63
|
"Content-Type": "application/json",
|
|
61
|
-
...init.headers,
|
|
62
64
|
};
|
|
65
|
+
if (DEFAULT_FETCH_INIT?.headers)
|
|
66
|
+
headers = { ...headers, ...DEFAULT_FETCH_INIT.headers };
|
|
67
|
+
if (init?.headers)
|
|
68
|
+
headers = { ...headers, ...init.headers };
|
|
63
69
|
if (this.userAgent) {
|
|
64
70
|
headers["User-Agent"] = this.userAgent;
|
|
65
71
|
// chromium browsers have a bug where the user agent can't be modified
|
|
@@ -69,7 +75,6 @@ class BaseService {
|
|
|
69
75
|
}
|
|
70
76
|
}
|
|
71
77
|
init.headers = headers;
|
|
72
|
-
init.cache = "no-store";
|
|
73
78
|
if (!input.startsWith("http"))
|
|
74
79
|
input = this.params.baseUrl + input;
|
|
75
80
|
const response = await fetch(input, init);
|
|
@@ -602,13 +607,43 @@ class TranscriptService extends BaseService {
|
|
|
602
607
|
return await response.text();
|
|
603
608
|
}
|
|
604
609
|
/**
|
|
605
|
-
* Retrieve
|
|
610
|
+
* Retrieve the redacted audio URL of a transcript.
|
|
606
611
|
* @param id - The identifier of the transcript.
|
|
607
|
-
* @returns A promise that resolves to the
|
|
612
|
+
* @returns A promise that resolves to the details of the redacted audio.
|
|
613
|
+
* @deprecated Use `redactedAudio` instead.
|
|
608
614
|
*/
|
|
609
615
|
redactions(id) {
|
|
616
|
+
return this.redactedAudio(id);
|
|
617
|
+
}
|
|
618
|
+
/**
|
|
619
|
+
* Retrieve the redacted audio URL of a transcript.
|
|
620
|
+
* @param id - The identifier of the transcript.
|
|
621
|
+
* @returns A promise that resolves to the details of the redacted audio.
|
|
622
|
+
*/
|
|
623
|
+
redactedAudio(id) {
|
|
610
624
|
return this.fetchJson(`/v2/transcript/${id}/redacted-audio`);
|
|
611
625
|
}
|
|
626
|
+
/**
|
|
627
|
+
* Retrieve the redacted audio file of a transcript.
|
|
628
|
+
* @param id - The identifier of the transcript.
|
|
629
|
+
* @returns A promise that resolves to the fetch HTTP response of the redacted audio file.
|
|
630
|
+
*/
|
|
631
|
+
async redactedAudioFile(id) {
|
|
632
|
+
const { redacted_audio_url, status } = await this.redactedAudio(id);
|
|
633
|
+
if (status !== "redacted_audio_ready") {
|
|
634
|
+
throw new Error(`Redacted audio status is ${status}`);
|
|
635
|
+
}
|
|
636
|
+
const response = await fetch(redacted_audio_url);
|
|
637
|
+
if (!response.ok) {
|
|
638
|
+
throw new Error(`Failed to fetch redacted audio: ${response.statusText}`);
|
|
639
|
+
}
|
|
640
|
+
return {
|
|
641
|
+
arrayBuffer: response.arrayBuffer.bind(response),
|
|
642
|
+
blob: response.blob.bind(response),
|
|
643
|
+
body: response.body,
|
|
644
|
+
bodyUsed: response.bodyUsed,
|
|
645
|
+
};
|
|
646
|
+
}
|
|
612
647
|
}
|
|
613
648
|
function deprecateConformer2(params) {
|
|
614
649
|
if (!params)
|
package/dist/index.cjs
CHANGED
|
@@ -46,6 +46,10 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
|
|
|
46
46
|
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
47
47
|
};
|
|
48
48
|
|
|
49
|
+
const DEFAULT_FETCH_INIT = {
|
|
50
|
+
cache: "no-store",
|
|
51
|
+
};
|
|
52
|
+
|
|
49
53
|
const buildUserAgent = (userAgent) => defaultUserAgentString +
|
|
50
54
|
(userAgent === false
|
|
51
55
|
? ""
|
|
@@ -59,7 +63,7 @@ if (typeof navigator !== "undefined" && navigator.userAgent) {
|
|
|
59
63
|
defaultUserAgentString += navigator.userAgent;
|
|
60
64
|
}
|
|
61
65
|
const defaultUserAgent = {
|
|
62
|
-
sdk: { name: "JavaScript", version: "4.4.
|
|
66
|
+
sdk: { name: "JavaScript", version: "4.4.7" },
|
|
63
67
|
};
|
|
64
68
|
if (typeof process !== "undefined") {
|
|
65
69
|
if (process.versions.node && defaultUserAgentString.indexOf("Node") === -1) {
|
|
@@ -100,10 +104,15 @@ class BaseService {
|
|
|
100
104
|
}
|
|
101
105
|
fetch(input, init) {
|
|
102
106
|
return __awaiter(this, void 0, void 0, function* () {
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
+
init = Object.assign(Object.assign({}, DEFAULT_FETCH_INIT), init);
|
|
108
|
+
let headers = {
|
|
109
|
+
Authorization: this.params.apiKey,
|
|
110
|
+
"Content-Type": "application/json",
|
|
111
|
+
};
|
|
112
|
+
if (DEFAULT_FETCH_INIT === null || DEFAULT_FETCH_INIT === void 0 ? void 0 : DEFAULT_FETCH_INIT.headers)
|
|
113
|
+
headers = Object.assign(Object.assign({}, headers), DEFAULT_FETCH_INIT.headers);
|
|
114
|
+
if (init === null || init === void 0 ? void 0 : init.headers)
|
|
115
|
+
headers = Object.assign(Object.assign({}, headers), init.headers);
|
|
107
116
|
if (this.userAgent) {
|
|
108
117
|
headers["User-Agent"] = this.userAgent;
|
|
109
118
|
// chromium browsers have a bug where the user agent can't be modified
|
|
@@ -113,7 +122,6 @@ class BaseService {
|
|
|
113
122
|
}
|
|
114
123
|
}
|
|
115
124
|
init.headers = headers;
|
|
116
|
-
init.cache = "no-store";
|
|
117
125
|
if (!input.startsWith("http"))
|
|
118
126
|
input = this.params.baseUrl + input;
|
|
119
127
|
const response = yield fetch(input, init);
|
|
@@ -124,7 +132,7 @@ class BaseService {
|
|
|
124
132
|
try {
|
|
125
133
|
json = JSON.parse(text);
|
|
126
134
|
}
|
|
127
|
-
catch (
|
|
135
|
+
catch (_a) {
|
|
128
136
|
/* empty */
|
|
129
137
|
}
|
|
130
138
|
if (json === null || json === void 0 ? void 0 : json.error)
|
|
@@ -675,13 +683,45 @@ class TranscriptService extends BaseService {
|
|
|
675
683
|
});
|
|
676
684
|
}
|
|
677
685
|
/**
|
|
678
|
-
* Retrieve
|
|
686
|
+
* Retrieve the redacted audio URL of a transcript.
|
|
679
687
|
* @param id - The identifier of the transcript.
|
|
680
|
-
* @returns A promise that resolves to the
|
|
688
|
+
* @returns A promise that resolves to the details of the redacted audio.
|
|
689
|
+
* @deprecated Use `redactedAudio` instead.
|
|
681
690
|
*/
|
|
682
691
|
redactions(id) {
|
|
692
|
+
return this.redactedAudio(id);
|
|
693
|
+
}
|
|
694
|
+
/**
|
|
695
|
+
* Retrieve the redacted audio URL of a transcript.
|
|
696
|
+
* @param id - The identifier of the transcript.
|
|
697
|
+
* @returns A promise that resolves to the details of the redacted audio.
|
|
698
|
+
*/
|
|
699
|
+
redactedAudio(id) {
|
|
683
700
|
return this.fetchJson(`/v2/transcript/${id}/redacted-audio`);
|
|
684
701
|
}
|
|
702
|
+
/**
|
|
703
|
+
* Retrieve the redacted audio file of a transcript.
|
|
704
|
+
* @param id - The identifier of the transcript.
|
|
705
|
+
* @returns A promise that resolves to the fetch HTTP response of the redacted audio file.
|
|
706
|
+
*/
|
|
707
|
+
redactedAudioFile(id) {
|
|
708
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
709
|
+
const { redacted_audio_url, status } = yield this.redactedAudio(id);
|
|
710
|
+
if (status !== "redacted_audio_ready") {
|
|
711
|
+
throw new Error(`Redacted audio status is ${status}`);
|
|
712
|
+
}
|
|
713
|
+
const response = yield fetch(redacted_audio_url);
|
|
714
|
+
if (!response.ok) {
|
|
715
|
+
throw new Error(`Failed to fetch redacted audio: ${response.statusText}`);
|
|
716
|
+
}
|
|
717
|
+
return {
|
|
718
|
+
arrayBuffer: response.arrayBuffer.bind(response),
|
|
719
|
+
blob: response.blob.bind(response),
|
|
720
|
+
body: response.body,
|
|
721
|
+
bodyUsed: response.bodyUsed,
|
|
722
|
+
};
|
|
723
|
+
});
|
|
724
|
+
}
|
|
685
725
|
}
|
|
686
726
|
function deprecateConformer2(params) {
|
|
687
727
|
if (!params)
|
package/dist/index.mjs
CHANGED
|
@@ -44,6 +44,10 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
|
|
|
44
44
|
return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
|
|
45
45
|
};
|
|
46
46
|
|
|
47
|
+
const DEFAULT_FETCH_INIT = {
|
|
48
|
+
cache: "no-store",
|
|
49
|
+
};
|
|
50
|
+
|
|
47
51
|
const buildUserAgent = (userAgent) => defaultUserAgentString +
|
|
48
52
|
(userAgent === false
|
|
49
53
|
? ""
|
|
@@ -57,7 +61,7 @@ if (typeof navigator !== "undefined" && navigator.userAgent) {
|
|
|
57
61
|
defaultUserAgentString += navigator.userAgent;
|
|
58
62
|
}
|
|
59
63
|
const defaultUserAgent = {
|
|
60
|
-
sdk: { name: "JavaScript", version: "4.4.
|
|
64
|
+
sdk: { name: "JavaScript", version: "4.4.7" },
|
|
61
65
|
};
|
|
62
66
|
if (typeof process !== "undefined") {
|
|
63
67
|
if (process.versions.node && defaultUserAgentString.indexOf("Node") === -1) {
|
|
@@ -98,10 +102,15 @@ class BaseService {
|
|
|
98
102
|
}
|
|
99
103
|
fetch(input, init) {
|
|
100
104
|
return __awaiter(this, void 0, void 0, function* () {
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
+
init = Object.assign(Object.assign({}, DEFAULT_FETCH_INIT), init);
|
|
106
|
+
let headers = {
|
|
107
|
+
Authorization: this.params.apiKey,
|
|
108
|
+
"Content-Type": "application/json",
|
|
109
|
+
};
|
|
110
|
+
if (DEFAULT_FETCH_INIT === null || DEFAULT_FETCH_INIT === void 0 ? void 0 : DEFAULT_FETCH_INIT.headers)
|
|
111
|
+
headers = Object.assign(Object.assign({}, headers), DEFAULT_FETCH_INIT.headers);
|
|
112
|
+
if (init === null || init === void 0 ? void 0 : init.headers)
|
|
113
|
+
headers = Object.assign(Object.assign({}, headers), init.headers);
|
|
105
114
|
if (this.userAgent) {
|
|
106
115
|
headers["User-Agent"] = this.userAgent;
|
|
107
116
|
// chromium browsers have a bug where the user agent can't be modified
|
|
@@ -111,7 +120,6 @@ class BaseService {
|
|
|
111
120
|
}
|
|
112
121
|
}
|
|
113
122
|
init.headers = headers;
|
|
114
|
-
init.cache = "no-store";
|
|
115
123
|
if (!input.startsWith("http"))
|
|
116
124
|
input = this.params.baseUrl + input;
|
|
117
125
|
const response = yield fetch(input, init);
|
|
@@ -122,7 +130,7 @@ class BaseService {
|
|
|
122
130
|
try {
|
|
123
131
|
json = JSON.parse(text);
|
|
124
132
|
}
|
|
125
|
-
catch (
|
|
133
|
+
catch (_a) {
|
|
126
134
|
/* empty */
|
|
127
135
|
}
|
|
128
136
|
if (json === null || json === void 0 ? void 0 : json.error)
|
|
@@ -673,13 +681,45 @@ class TranscriptService extends BaseService {
|
|
|
673
681
|
});
|
|
674
682
|
}
|
|
675
683
|
/**
|
|
676
|
-
* Retrieve
|
|
684
|
+
* Retrieve the redacted audio URL of a transcript.
|
|
677
685
|
* @param id - The identifier of the transcript.
|
|
678
|
-
* @returns A promise that resolves to the
|
|
686
|
+
* @returns A promise that resolves to the details of the redacted audio.
|
|
687
|
+
* @deprecated Use `redactedAudio` instead.
|
|
679
688
|
*/
|
|
680
689
|
redactions(id) {
|
|
690
|
+
return this.redactedAudio(id);
|
|
691
|
+
}
|
|
692
|
+
/**
|
|
693
|
+
* Retrieve the redacted audio URL of a transcript.
|
|
694
|
+
* @param id - The identifier of the transcript.
|
|
695
|
+
* @returns A promise that resolves to the details of the redacted audio.
|
|
696
|
+
*/
|
|
697
|
+
redactedAudio(id) {
|
|
681
698
|
return this.fetchJson(`/v2/transcript/${id}/redacted-audio`);
|
|
682
699
|
}
|
|
700
|
+
/**
|
|
701
|
+
* Retrieve the redacted audio file of a transcript.
|
|
702
|
+
* @param id - The identifier of the transcript.
|
|
703
|
+
* @returns A promise that resolves to the fetch HTTP response of the redacted audio file.
|
|
704
|
+
*/
|
|
705
|
+
redactedAudioFile(id) {
|
|
706
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
707
|
+
const { redacted_audio_url, status } = yield this.redactedAudio(id);
|
|
708
|
+
if (status !== "redacted_audio_ready") {
|
|
709
|
+
throw new Error(`Redacted audio status is ${status}`);
|
|
710
|
+
}
|
|
711
|
+
const response = yield fetch(redacted_audio_url);
|
|
712
|
+
if (!response.ok) {
|
|
713
|
+
throw new Error(`Failed to fetch redacted audio: ${response.statusText}`);
|
|
714
|
+
}
|
|
715
|
+
return {
|
|
716
|
+
arrayBuffer: response.arrayBuffer.bind(response),
|
|
717
|
+
blob: response.blob.bind(response),
|
|
718
|
+
body: response.body,
|
|
719
|
+
bodyUsed: response.bodyUsed,
|
|
720
|
+
};
|
|
721
|
+
});
|
|
722
|
+
}
|
|
683
723
|
}
|
|
684
724
|
function deprecateConformer2(params) {
|
|
685
725
|
if (!params)
|