@wave-av/sdk 2.0.1 → 2.0.3
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 +1 -1
- package/README.md +27 -23
- package/dist/audience.js +93 -0
- package/dist/audience.mjs +9 -0
- package/dist/camera-control.js +95 -0
- package/dist/camera-control.mjs +71 -0
- package/dist/captions-types.js +18 -0
- package/dist/captions-types.mjs +0 -0
- package/dist/captions.js +266 -0
- package/dist/captions.mjs +9 -0
- package/dist/chapters-types.js +18 -0
- package/dist/chapters-types.mjs +0 -0
- package/dist/chapters.js +280 -0
- package/dist/chapters.mjs +9 -0
- package/dist/chunk-362MRITF.mjs +46 -0
- package/dist/chunk-3ZLK4J3V.mjs +69 -0
- package/dist/chunk-4DG4OBRD.mjs +52 -0
- package/dist/chunk-4G7FMCMJ.mjs +68 -0
- package/dist/chunk-4KD5F6E3.mjs +0 -0
- package/dist/chunk-7M6XVUUK.mjs +241 -0
- package/dist/chunk-A344OOT7.mjs +243 -0
- package/dist/chunk-AI64YR5W.mjs +173 -0
- package/dist/chunk-C2GQ756E.mjs +57 -0
- package/dist/chunk-CO2VB72Z.mjs +255 -0
- package/dist/chunk-DWXWAILB.mjs +44 -0
- package/dist/chunk-FLEFYLDM.mjs +71 -0
- package/dist/chunk-H2YYTNUH.mjs +266 -0
- package/dist/chunk-IGDBED5P.mjs +246 -0
- package/dist/chunk-IL2SGWBC.mjs +0 -0
- package/dist/chunk-IVFZ5X4W.mjs +68 -0
- package/dist/chunk-JC32PG3T.mjs +114 -0
- package/dist/chunk-K5X42NLD.mjs +54 -0
- package/dist/chunk-KCEPNS2U.mjs +276 -0
- package/dist/chunk-LVOVF6XC.mjs +54 -0
- package/dist/chunk-M4Z33V3N.mjs +247 -0
- package/dist/chunk-M6FKIX75.mjs +0 -0
- package/dist/chunk-M744Z327.mjs +244 -0
- package/dist/chunk-MRFDPPFK.mjs +61 -0
- package/dist/chunk-MXU3Q23F.mjs +68 -0
- package/dist/chunk-NCVUZ746.mjs +60 -0
- package/dist/chunk-NLQVD2LF.mjs +210 -0
- package/dist/chunk-O6DOGYP5.mjs +238 -0
- package/dist/chunk-S25NY5GE.mjs +124 -0
- package/dist/chunk-TFHXBICQ.mjs +305 -0
- package/dist/chunk-TXWOA2VR.mjs +57 -0
- package/dist/chunk-UCDSNV22.mjs +63 -0
- package/dist/chunk-V5DWA5P4.mjs +279 -0
- package/dist/chunk-VLQQDYGP.mjs +173 -0
- package/dist/chunk-VPKZUXZW.mjs +53 -0
- package/dist/chunk-WS3PEFYJ.mjs +60 -0
- package/dist/chunk-XGAYMWRH.mjs +74 -0
- package/dist/chunk-XMM5J57W.mjs +0 -0
- package/dist/chunk-XWABBOSX.mjs +278 -0
- package/dist/chunk-Y6FXYEAI.mjs +10 -0
- package/dist/chunk-YBLXHI3M.mjs +257 -0
- package/dist/chunk-YEK26SSO.mjs +100 -0
- package/dist/chunk-YLCQKCZL.mjs +0 -0
- package/dist/chunk-YRKO4XI7.mjs +0 -0
- package/dist/chunk-ZJO7AP4Q.mjs +0 -0
- package/dist/client-types.js +18 -0
- package/dist/client-types.mjs +0 -0
- package/dist/client.js +311 -0
- package/dist/client.mjs +14 -0
- package/dist/clips-types.js +18 -0
- package/dist/clips-types.mjs +0 -0
- package/dist/clips.js +198 -0
- package/dist/clips.mjs +9 -0
- package/dist/cloud-switcher.js +80 -0
- package/dist/cloud-switcher.mjs +56 -0
- package/dist/collab-types.js +18 -0
- package/dist/collab-types.mjs +1 -0
- package/dist/collab.js +304 -0
- package/dist/collab.mjs +10 -0
- package/dist/connect.js +85 -0
- package/dist/connect.mjs +9 -0
- package/dist/creator.js +79 -0
- package/dist/creator.mjs +9 -0
- package/dist/desktop.js +77 -0
- package/dist/desktop.mjs +9 -0
- package/dist/distribution.js +88 -0
- package/dist/distribution.mjs +9 -0
- package/dist/drm.js +85 -0
- package/dist/drm.mjs +9 -0
- package/dist/edge.js +93 -0
- package/dist/edge.mjs +9 -0
- package/dist/editor-types.js +18 -0
- package/dist/editor-types.mjs +1 -0
- package/dist/editor.js +330 -0
- package/dist/editor.mjs +10 -0
- package/dist/fleet.js +149 -0
- package/dist/fleet.mjs +9 -0
- package/dist/ghost.js +139 -0
- package/dist/ghost.mjs +9 -0
- package/dist/index.js +0 -250
- package/dist/index.mjs +161 -5445
- package/dist/marketplace.js +82 -0
- package/dist/marketplace.mjs +9 -0
- package/dist/mesh.js +198 -0
- package/dist/mesh.mjs +9 -0
- package/dist/notifications.js +79 -0
- package/dist/notifications.mjs +9 -0
- package/dist/phone-types.js +18 -0
- package/dist/phone-types.mjs +0 -0
- package/dist/phone.js +269 -0
- package/dist/phone.mjs +9 -0
- package/dist/pipeline-types.js +18 -0
- package/dist/pipeline-types.mjs +0 -0
- package/dist/pipeline.js +263 -0
- package/dist/pipeline.mjs +9 -0
- package/dist/podcast.js +94 -0
- package/dist/podcast.mjs +9 -0
- package/dist/prism.js +82 -0
- package/dist/prism.mjs +9 -0
- package/dist/prompter.js +99 -0
- package/dist/prompter.mjs +76 -0
- package/dist/pulse.js +99 -0
- package/dist/pulse.mjs +9 -0
- package/dist/qr.js +71 -0
- package/dist/qr.mjs +9 -0
- package/dist/replay.js +62 -0
- package/dist/replay.mjs +38 -0
- package/dist/scene-types.js +18 -0
- package/dist/scene-types.mjs +1 -0
- package/dist/scene.js +271 -0
- package/dist/scene.mjs +10 -0
- package/dist/search-types.js +18 -0
- package/dist/search-types.mjs +1 -0
- package/dist/search.js +268 -0
- package/dist/search.mjs +10 -0
- package/dist/sentiment-types.js +18 -0
- package/dist/sentiment-types.mjs +0 -0
- package/dist/sentiment.js +235 -0
- package/dist/sentiment.mjs +9 -0
- package/dist/signage.js +93 -0
- package/dist/signage.mjs +9 -0
- package/dist/slides.js +78 -0
- package/dist/slides.mjs +9 -0
- package/dist/studio-ai-types.js +18 -0
- package/dist/studio-ai-types.mjs +1 -0
- package/dist/studio-ai.js +301 -0
- package/dist/studio-ai.mjs +10 -0
- package/dist/studio-types.js +18 -0
- package/dist/studio-types.mjs +1 -0
- package/dist/studio.js +303 -0
- package/dist/studio.mjs +10 -0
- package/dist/telemetry.js +124 -0
- package/dist/telemetry.mjs +15 -0
- package/dist/transcribe-types.js +18 -0
- package/dist/transcribe-types.mjs +1 -0
- package/dist/transcribe.js +282 -0
- package/dist/transcribe.mjs +10 -0
- package/dist/usb.js +69 -0
- package/dist/usb.mjs +9 -0
- package/dist/vault.js +96 -0
- package/dist/vault.mjs +9 -0
- package/dist/voice-types.js +18 -0
- package/dist/voice-types.mjs +0 -0
- package/dist/voice.js +272 -0
- package/dist/voice.mjs +9 -0
- package/dist/zoom.js +86 -0
- package/dist/zoom.mjs +9 -0
- package/package.json +5 -5
- package/dist/audience.d.ts +0 -104
- package/dist/audience.d.ts.map +0 -1
- package/dist/camera-control.d.ts +0 -54
- package/dist/camera-control.d.ts.map +0 -1
- package/dist/captions.d.ts +0 -362
- package/dist/captions.d.ts.map +0 -1
- package/dist/chapters.d.ts +0 -315
- package/dist/chapters.d.ts.map +0 -1
- package/dist/client.d.ts +0 -191
- package/dist/client.d.ts.map +0 -1
- package/dist/clips.d.ts +0 -258
- package/dist/clips.d.ts.map +0 -1
- package/dist/cloud-switcher.d.ts +0 -65
- package/dist/cloud-switcher.d.ts.map +0 -1
- package/dist/collab-types.d.ts +0 -204
- package/dist/collab-types.d.ts.map +0 -1
- package/dist/collab.d.ts +0 -226
- package/dist/collab.d.ts.map +0 -1
- package/dist/connect.d.ts +0 -88
- package/dist/connect.d.ts.map +0 -1
- package/dist/creator.d.ts +0 -109
- package/dist/creator.d.ts.map +0 -1
- package/dist/desktop.d.ts +0 -95
- package/dist/desktop.d.ts.map +0 -1
- package/dist/distribution.d.ts +0 -92
- package/dist/distribution.d.ts.map +0 -1
- package/dist/drm.d.ts +0 -87
- package/dist/drm.d.ts.map +0 -1
- package/dist/edge.d.ts +0 -112
- package/dist/edge.d.ts.map +0 -1
- package/dist/editor-types.d.ts +0 -236
- package/dist/editor-types.d.ts.map +0 -1
- package/dist/editor.d.ts +0 -206
- package/dist/editor.d.ts.map +0 -1
- package/dist/fleet.d.ts +0 -207
- package/dist/fleet.d.ts.map +0 -1
- package/dist/ghost.d.ts +0 -213
- package/dist/ghost.d.ts.map +0 -1
- package/dist/index.d.ts +0 -144
- package/dist/index.d.ts.map +0 -1
- package/dist/marketplace.d.ts +0 -90
- package/dist/marketplace.d.ts.map +0 -1
- package/dist/mesh.d.ts +0 -237
- package/dist/mesh.d.ts.map +0 -1
- package/dist/notifications.d.ts +0 -82
- package/dist/notifications.d.ts.map +0 -1
- package/dist/phone.d.ts +0 -369
- package/dist/phone.d.ts.map +0 -1
- package/dist/pipeline.d.ts +0 -409
- package/dist/pipeline.d.ts.map +0 -1
- package/dist/podcast.d.ts +0 -113
- package/dist/podcast.d.ts.map +0 -1
- package/dist/prism.d.ts +0 -132
- package/dist/prism.d.ts.map +0 -1
- package/dist/prompter.d.ts +0 -184
- package/dist/prompter.d.ts.map +0 -1
- package/dist/pulse.d.ts +0 -156
- package/dist/pulse.d.ts.map +0 -1
- package/dist/qr.d.ts +0 -82
- package/dist/qr.d.ts.map +0 -1
- package/dist/replay.d.ts +0 -52
- package/dist/replay.d.ts.map +0 -1
- package/dist/scene-types.d.ts +0 -190
- package/dist/scene-types.d.ts.map +0 -1
- package/dist/scene.d.ts +0 -213
- package/dist/scene.d.ts.map +0 -1
- package/dist/search-types.d.ts +0 -210
- package/dist/search-types.d.ts.map +0 -1
- package/dist/search.d.ts +0 -250
- package/dist/search.d.ts.map +0 -1
- package/dist/sentiment.d.ts +0 -378
- package/dist/sentiment.d.ts.map +0 -1
- package/dist/signage.d.ts +0 -101
- package/dist/signage.d.ts.map +0 -1
- package/dist/slides.d.ts +0 -68
- package/dist/slides.d.ts.map +0 -1
- package/dist/studio-ai-types.d.ts +0 -198
- package/dist/studio-ai-types.d.ts.map +0 -1
- package/dist/studio-ai.d.ts +0 -218
- package/dist/studio-ai.d.ts.map +0 -1
- package/dist/studio-types.d.ts +0 -267
- package/dist/studio-types.d.ts.map +0 -1
- package/dist/studio.d.ts +0 -234
- package/dist/studio.d.ts.map +0 -1
- package/dist/telemetry.d.ts +0 -76
- package/dist/telemetry.d.ts.map +0 -1
- package/dist/transcribe-types.d.ts +0 -153
- package/dist/transcribe-types.d.ts.map +0 -1
- package/dist/transcribe.d.ts +0 -218
- package/dist/transcribe.d.ts.map +0 -1
- package/dist/usb.d.ts +0 -64
- package/dist/usb.d.ts.map +0 -1
- package/dist/vault.d.ts +0 -121
- package/dist/vault.d.ts.map +0 -1
- package/dist/voice.d.ts +0 -307
- package/dist/voice.d.ts.map +0 -1
- package/dist/zoom.d.ts +0 -91
- package/dist/zoom.d.ts.map +0 -1
package/dist/voice.js
ADDED
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/voice.ts
|
|
21
|
+
var voice_exports = {};
|
|
22
|
+
__export(voice_exports, {
|
|
23
|
+
VoiceAPI: () => VoiceAPI,
|
|
24
|
+
createVoiceAPI: () => createVoiceAPI
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(voice_exports);
|
|
27
|
+
var VoiceAPI = class {
|
|
28
|
+
client;
|
|
29
|
+
basePath = "/v1/voice";
|
|
30
|
+
constructor(client) {
|
|
31
|
+
this.client = client;
|
|
32
|
+
}
|
|
33
|
+
// ==========================================================================
|
|
34
|
+
// Voices
|
|
35
|
+
// ==========================================================================
|
|
36
|
+
/**
|
|
37
|
+
* List available voices
|
|
38
|
+
*
|
|
39
|
+
* Requires: voice:read permission
|
|
40
|
+
*/
|
|
41
|
+
async listVoices(params) {
|
|
42
|
+
const queryParams = {
|
|
43
|
+
...params,
|
|
44
|
+
tags: params?.tags?.join(",")
|
|
45
|
+
};
|
|
46
|
+
return this.client.get(`${this.basePath}/voices`, {
|
|
47
|
+
params: queryParams
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Get a voice by ID
|
|
52
|
+
*
|
|
53
|
+
* Requires: voice:read permission
|
|
54
|
+
*/
|
|
55
|
+
async getVoice(voiceId) {
|
|
56
|
+
return this.client.get(`${this.basePath}/voices/${voiceId}`);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get default voice settings for a voice
|
|
60
|
+
*
|
|
61
|
+
* Requires: voice:read permission
|
|
62
|
+
*/
|
|
63
|
+
async getVoiceSettings(voiceId) {
|
|
64
|
+
return this.client.get(
|
|
65
|
+
`${this.basePath}/voices/${voiceId}/settings`
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Update voice settings for a cloned voice
|
|
70
|
+
*
|
|
71
|
+
* Requires: voice:update permission
|
|
72
|
+
*/
|
|
73
|
+
async updateVoiceSettings(voiceId, settings) {
|
|
74
|
+
return this.client.patch(
|
|
75
|
+
`${this.basePath}/voices/${voiceId}/settings`,
|
|
76
|
+
settings
|
|
77
|
+
);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Remove a cloned voice
|
|
81
|
+
*
|
|
82
|
+
* Requires: voice:remove permission (server-side RBAC enforced)
|
|
83
|
+
*/
|
|
84
|
+
async removeVoice(voiceId) {
|
|
85
|
+
await this.client.delete(
|
|
86
|
+
`${this.basePath}/voices/${voiceId}`,
|
|
87
|
+
{ method: "DELETE" }
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
// ==========================================================================
|
|
91
|
+
// Speech Synthesis
|
|
92
|
+
// ==========================================================================
|
|
93
|
+
/**
|
|
94
|
+
* Synthesize text to speech
|
|
95
|
+
*
|
|
96
|
+
* Requires: voice:synthesize permission
|
|
97
|
+
*/
|
|
98
|
+
async synthesize(request) {
|
|
99
|
+
return this.client.post(
|
|
100
|
+
`${this.basePath}/synthesize`,
|
|
101
|
+
request
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Get synthesis job status
|
|
106
|
+
*
|
|
107
|
+
* Requires: voice:read permission
|
|
108
|
+
*/
|
|
109
|
+
async getSynthesis(synthesisId) {
|
|
110
|
+
return this.client.get(
|
|
111
|
+
`${this.basePath}/synthesize/${synthesisId}`
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* List synthesis jobs
|
|
116
|
+
*
|
|
117
|
+
* Requires: voice:read permission
|
|
118
|
+
*/
|
|
119
|
+
async listSyntheses(params) {
|
|
120
|
+
return this.client.get(
|
|
121
|
+
`${this.basePath}/synthesize`,
|
|
122
|
+
{ params }
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Synthesize speech and stream the audio
|
|
127
|
+
*
|
|
128
|
+
* Requires: voice:synthesize permission
|
|
129
|
+
*
|
|
130
|
+
* @returns ReadableStream of audio data
|
|
131
|
+
*/
|
|
132
|
+
async synthesizeStream(request) {
|
|
133
|
+
const response = await fetch(
|
|
134
|
+
`${this.client["config"].baseUrl}${this.basePath}/synthesize/stream`,
|
|
135
|
+
{
|
|
136
|
+
method: "POST",
|
|
137
|
+
headers: {
|
|
138
|
+
"Authorization": `Bearer ${this.client["config"].apiKey}`,
|
|
139
|
+
"Content-Type": "application/json",
|
|
140
|
+
"Accept": "audio/mpeg"
|
|
141
|
+
},
|
|
142
|
+
body: JSON.stringify(request)
|
|
143
|
+
}
|
|
144
|
+
);
|
|
145
|
+
if (!response.ok) {
|
|
146
|
+
throw new Error(`Synthesis stream failed: ${response.statusText}`);
|
|
147
|
+
}
|
|
148
|
+
if (!response.body) {
|
|
149
|
+
throw new Error("No response body");
|
|
150
|
+
}
|
|
151
|
+
return response.body;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Wait for synthesis to complete
|
|
155
|
+
*/
|
|
156
|
+
async waitForSynthesis(synthesisId, options) {
|
|
157
|
+
const pollInterval = options?.pollInterval || 1e3;
|
|
158
|
+
const timeout = options?.timeout || 12e4;
|
|
159
|
+
const startTime = Date.now();
|
|
160
|
+
while (Date.now() - startTime < timeout) {
|
|
161
|
+
const synthesis = await this.getSynthesis(synthesisId);
|
|
162
|
+
if (options?.onProgress) {
|
|
163
|
+
options.onProgress(synthesis);
|
|
164
|
+
}
|
|
165
|
+
if (synthesis.status === "ready") {
|
|
166
|
+
return synthesis;
|
|
167
|
+
}
|
|
168
|
+
if (synthesis.status === "failed") {
|
|
169
|
+
throw new Error(`Synthesis failed: ${synthesis.error || "Unknown error"}`);
|
|
170
|
+
}
|
|
171
|
+
await new Promise((resolve) => setTimeout(resolve, pollInterval));
|
|
172
|
+
}
|
|
173
|
+
throw new Error(`Synthesis timed out after ${timeout}ms`);
|
|
174
|
+
}
|
|
175
|
+
// ==========================================================================
|
|
176
|
+
// Voice Cloning
|
|
177
|
+
// ==========================================================================
|
|
178
|
+
/**
|
|
179
|
+
* Start voice cloning job
|
|
180
|
+
*
|
|
181
|
+
* Requires: voice:clone permission
|
|
182
|
+
*/
|
|
183
|
+
async cloneVoice(request) {
|
|
184
|
+
return this.client.post(
|
|
185
|
+
`${this.basePath}/clone`,
|
|
186
|
+
request
|
|
187
|
+
);
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Get voice clone job status
|
|
191
|
+
*
|
|
192
|
+
* Requires: voice:read permission
|
|
193
|
+
*/
|
|
194
|
+
async getCloneJob(jobId) {
|
|
195
|
+
return this.client.get(
|
|
196
|
+
`${this.basePath}/clone/${jobId}`
|
|
197
|
+
);
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* List voice clone jobs
|
|
201
|
+
*
|
|
202
|
+
* Requires: voice:read permission
|
|
203
|
+
*/
|
|
204
|
+
async listCloneJobs(params) {
|
|
205
|
+
return this.client.get(
|
|
206
|
+
`${this.basePath}/clone`,
|
|
207
|
+
{ params }
|
|
208
|
+
);
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Cancel a voice clone job
|
|
212
|
+
*
|
|
213
|
+
* Requires: voice:clone permission
|
|
214
|
+
*/
|
|
215
|
+
async cancelCloneJob(jobId) {
|
|
216
|
+
return this.client.post(
|
|
217
|
+
`${this.basePath}/clone/${jobId}/cancel`
|
|
218
|
+
);
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Wait for voice cloning to complete
|
|
222
|
+
*/
|
|
223
|
+
async waitForClone(jobId, options) {
|
|
224
|
+
const pollInterval = options?.pollInterval || 5e3;
|
|
225
|
+
const timeout = options?.timeout || 36e5;
|
|
226
|
+
const startTime = Date.now();
|
|
227
|
+
while (Date.now() - startTime < timeout) {
|
|
228
|
+
const job = await this.getCloneJob(jobId);
|
|
229
|
+
if (options?.onProgress) {
|
|
230
|
+
options.onProgress(job);
|
|
231
|
+
}
|
|
232
|
+
if (job.status === "ready") {
|
|
233
|
+
return job;
|
|
234
|
+
}
|
|
235
|
+
if (job.status === "failed") {
|
|
236
|
+
throw new Error(`Voice cloning failed: ${job.error || "Unknown error"}`);
|
|
237
|
+
}
|
|
238
|
+
await new Promise((resolve) => setTimeout(resolve, pollInterval));
|
|
239
|
+
}
|
|
240
|
+
throw new Error(`Voice cloning timed out after ${timeout}ms`);
|
|
241
|
+
}
|
|
242
|
+
// ==========================================================================
|
|
243
|
+
// Utilities
|
|
244
|
+
// ==========================================================================
|
|
245
|
+
/**
|
|
246
|
+
* Estimate synthesis cost
|
|
247
|
+
*
|
|
248
|
+
* Requires: voice:read permission
|
|
249
|
+
*/
|
|
250
|
+
async estimateCost(text, voiceId) {
|
|
251
|
+
return this.client.post(`${this.basePath}/estimate`, {
|
|
252
|
+
text,
|
|
253
|
+
voice_id: voiceId
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Get supported languages
|
|
258
|
+
*
|
|
259
|
+
* Requires: voice:read permission
|
|
260
|
+
*/
|
|
261
|
+
async getSupportedLanguages() {
|
|
262
|
+
return this.client.get(`${this.basePath}/languages`);
|
|
263
|
+
}
|
|
264
|
+
};
|
|
265
|
+
function createVoiceAPI(client) {
|
|
266
|
+
return new VoiceAPI(client);
|
|
267
|
+
}
|
|
268
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
269
|
+
0 && (module.exports = {
|
|
270
|
+
VoiceAPI,
|
|
271
|
+
createVoiceAPI
|
|
272
|
+
});
|
package/dist/voice.mjs
ADDED
package/dist/zoom.js
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/zoom.ts
|
|
21
|
+
var zoom_exports = {};
|
|
22
|
+
__export(zoom_exports, {
|
|
23
|
+
ZoomAPI: () => ZoomAPI,
|
|
24
|
+
createZoomAPI: () => createZoomAPI
|
|
25
|
+
});
|
|
26
|
+
module.exports = __toCommonJS(zoom_exports);
|
|
27
|
+
var ZoomAPI = class {
|
|
28
|
+
client;
|
|
29
|
+
basePath = "/v1/zoom";
|
|
30
|
+
constructor(client) {
|
|
31
|
+
this.client = client;
|
|
32
|
+
}
|
|
33
|
+
async createMeeting(request) {
|
|
34
|
+
return this.client.post(`${this.basePath}/meetings`, request);
|
|
35
|
+
}
|
|
36
|
+
async getMeeting(meetingId) {
|
|
37
|
+
return this.client.get(`${this.basePath}/meetings/${meetingId}`);
|
|
38
|
+
}
|
|
39
|
+
async endMeeting(meetingId) {
|
|
40
|
+
await this.client.post(`${this.basePath}/meetings/${meetingId}/end`);
|
|
41
|
+
}
|
|
42
|
+
async listMeetings(params) {
|
|
43
|
+
return this.client.get(`${this.basePath}/meetings`, {
|
|
44
|
+
params
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
async listRooms(params) {
|
|
48
|
+
return this.client.get(`${this.basePath}/rooms`, {
|
|
49
|
+
params
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
async getRoomStatus(roomId) {
|
|
53
|
+
return this.client.get(`${this.basePath}/rooms/${roomId}`);
|
|
54
|
+
}
|
|
55
|
+
async getRecording(recordingId) {
|
|
56
|
+
return this.client.get(`${this.basePath}/recordings/${recordingId}`);
|
|
57
|
+
}
|
|
58
|
+
async listRecordings(meetingId, params) {
|
|
59
|
+
const path = meetingId ? `${this.basePath}/meetings/${meetingId}/recordings` : `${this.basePath}/recordings`;
|
|
60
|
+
return this.client.get(path, {
|
|
61
|
+
params
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
async startRTMS(meetingId, config) {
|
|
65
|
+
return this.client.post(
|
|
66
|
+
`${this.basePath}/meetings/${meetingId}/rtms/start`,
|
|
67
|
+
config
|
|
68
|
+
);
|
|
69
|
+
}
|
|
70
|
+
async stopRTMS(meetingId) {
|
|
71
|
+
return this.client.post(`${this.basePath}/meetings/${meetingId}/rtms/stop`);
|
|
72
|
+
}
|
|
73
|
+
async getRTMSStatus(meetingId) {
|
|
74
|
+
return this.client.get(
|
|
75
|
+
`${this.basePath}/meetings/${meetingId}/rtms`
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
function createZoomAPI(client) {
|
|
80
|
+
return new ZoomAPI(client);
|
|
81
|
+
}
|
|
82
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
83
|
+
0 && (module.exports = {
|
|
84
|
+
ZoomAPI,
|
|
85
|
+
createZoomAPI
|
|
86
|
+
});
|
package/dist/zoom.mjs
ADDED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wave-av/sdk",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.3",
|
|
4
4
|
"description": "Official WAVE SDK - 34 API modules covering streaming, production, device management, analytics, content, monetization, and more",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -266,18 +266,18 @@
|
|
|
266
266
|
},
|
|
267
267
|
"repository": {
|
|
268
268
|
"type": "git",
|
|
269
|
-
"url": "https://github.com/wave-av/
|
|
270
|
-
"directory": "
|
|
269
|
+
"url": "https://github.com/wave-av/sdk.git",
|
|
270
|
+
"directory": "."
|
|
271
271
|
},
|
|
272
272
|
"homepage": "https://docs.wave.online/sdk",
|
|
273
273
|
"bugs": {
|
|
274
|
-
"url": "https://github.com/wave-av/
|
|
274
|
+
"url": "https://github.com/wave-av/sdk/issues"
|
|
275
275
|
},
|
|
276
276
|
"engines": {
|
|
277
277
|
"node": ">=18.0.0"
|
|
278
278
|
},
|
|
279
279
|
"peerDependencies": {
|
|
280
|
-
"zod": "3.
|
|
280
|
+
"zod": "^3.22.0",
|
|
281
281
|
"@opentelemetry/api": "^1.7.0"
|
|
282
282
|
},
|
|
283
283
|
"peerDependenciesMeta": {
|
package/dist/audience.d.ts
DELETED
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WAVE SDK - Audience API
|
|
3
|
-
*
|
|
4
|
-
* Interactive audience engagement: polls, Q&A, reactions, and engagement metrics.
|
|
5
|
-
*/
|
|
6
|
-
import type { WaveClient } from "./client";
|
|
7
|
-
export type PollStatus = "draft" | "active" | "closed";
|
|
8
|
-
export interface Poll {
|
|
9
|
-
id: string;
|
|
10
|
-
stream_id: string;
|
|
11
|
-
question: string;
|
|
12
|
-
options: PollOption[];
|
|
13
|
-
status: PollStatus;
|
|
14
|
-
total_votes: number;
|
|
15
|
-
allow_multiple: boolean;
|
|
16
|
-
show_results: boolean;
|
|
17
|
-
duration_seconds?: number;
|
|
18
|
-
created_at: string;
|
|
19
|
-
updated_at: string;
|
|
20
|
-
}
|
|
21
|
-
export interface PollOption {
|
|
22
|
-
id: string;
|
|
23
|
-
text: string;
|
|
24
|
-
vote_count: number;
|
|
25
|
-
percentage: number;
|
|
26
|
-
}
|
|
27
|
-
export interface QASession {
|
|
28
|
-
id: string;
|
|
29
|
-
stream_id: string;
|
|
30
|
-
status: "active" | "paused" | "closed";
|
|
31
|
-
questions: Question[];
|
|
32
|
-
allow_anonymous: boolean;
|
|
33
|
-
moderated: boolean;
|
|
34
|
-
created_at: string;
|
|
35
|
-
}
|
|
36
|
-
export interface Question {
|
|
37
|
-
id: string;
|
|
38
|
-
session_id: string;
|
|
39
|
-
text: string;
|
|
40
|
-
author: string;
|
|
41
|
-
upvotes: number;
|
|
42
|
-
answered: boolean;
|
|
43
|
-
answer?: string;
|
|
44
|
-
pinned: boolean;
|
|
45
|
-
created_at: string;
|
|
46
|
-
}
|
|
47
|
-
export interface ReactionBurst {
|
|
48
|
-
stream_id: string;
|
|
49
|
-
type: "like" | "love" | "fire" | "clap" | "laugh" | "wow";
|
|
50
|
-
count: number;
|
|
51
|
-
timestamp: string;
|
|
52
|
-
}
|
|
53
|
-
export interface EngagementMetrics {
|
|
54
|
-
stream_id: string;
|
|
55
|
-
active_participants: number;
|
|
56
|
-
chat_rate_per_minute: number;
|
|
57
|
-
reaction_rate: number;
|
|
58
|
-
poll_participation_rate: number;
|
|
59
|
-
qa_questions: number;
|
|
60
|
-
peak_engagement_at: string;
|
|
61
|
-
}
|
|
62
|
-
export interface CreatePollRequest {
|
|
63
|
-
stream_id: string;
|
|
64
|
-
question: string;
|
|
65
|
-
options: string[];
|
|
66
|
-
allow_multiple?: boolean;
|
|
67
|
-
show_results?: boolean;
|
|
68
|
-
duration_seconds?: number;
|
|
69
|
-
}
|
|
70
|
-
export interface CreateQARequest {
|
|
71
|
-
stream_id: string;
|
|
72
|
-
allow_anonymous?: boolean;
|
|
73
|
-
moderated?: boolean;
|
|
74
|
-
}
|
|
75
|
-
/**
|
|
76
|
-
* Interactive audience engagement: live polls, Q&A sessions, and reactions.
|
|
77
|
-
*
|
|
78
|
-
* @example
|
|
79
|
-
* ```typescript
|
|
80
|
-
* const poll = await wave.audience.createPoll({ stream_id: id, question: "Best feature?", options: ["A", "B", "C"] });
|
|
81
|
-
* const metrics = await wave.audience.getEngagementMetrics(streamId);
|
|
82
|
-
* ```
|
|
83
|
-
*/
|
|
84
|
-
export declare class AudienceAPI {
|
|
85
|
-
private readonly client;
|
|
86
|
-
private readonly basePath;
|
|
87
|
-
constructor(client: WaveClient);
|
|
88
|
-
createPoll(request: CreatePollRequest): Promise<Poll>;
|
|
89
|
-
getPoll(pollId: string): Promise<Poll>;
|
|
90
|
-
closePoll(pollId: string): Promise<Poll>;
|
|
91
|
-
getPollResults(pollId: string): Promise<Poll>;
|
|
92
|
-
vote(pollId: string, optionIds: string[]): Promise<void>;
|
|
93
|
-
createQA(request: CreateQARequest): Promise<QASession>;
|
|
94
|
-
getQA(sessionId: string): Promise<QASession>;
|
|
95
|
-
closeQA(sessionId: string): Promise<QASession>;
|
|
96
|
-
submitQuestion(sessionId: string, text: string): Promise<Question>;
|
|
97
|
-
answerQuestion(sessionId: string, questionId: string, answer: string): Promise<Question>;
|
|
98
|
-
upvoteQuestion(sessionId: string, questionId: string): Promise<Question>;
|
|
99
|
-
pinQuestion(sessionId: string, questionId: string): Promise<Question>;
|
|
100
|
-
sendReaction(streamId: string, type: ReactionBurst["type"]): Promise<void>;
|
|
101
|
-
getReactionMetrics(streamId: string): Promise<ReactionBurst[]>;
|
|
102
|
-
getEngagementMetrics(streamId: string): Promise<EngagementMetrics>;
|
|
103
|
-
}
|
|
104
|
-
export declare function createAudienceAPI(client: WaveClient): AudienceAPI;
|
package/dist/audience.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"audience.d.ts","sourceRoot":"","sources":["../src/audience.ts"],"names":[],"mappings":"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"}
|
package/dist/camera-control.d.ts
DELETED
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* WAVE Camera Control SDK
|
|
3
|
-
*
|
|
4
|
-
* Discover and control cameras from any manufacturer.
|
|
5
|
-
*
|
|
6
|
-
* @packageDocumentation
|
|
7
|
-
*/
|
|
8
|
-
import type { WaveClient } from './client';
|
|
9
|
-
export interface ManagedCamera {
|
|
10
|
-
readonly id: string;
|
|
11
|
-
readonly name: string;
|
|
12
|
-
readonly manufacturer: 'blackmagic' | 'sony' | 'canon' | 'ptzoptics' | 'other';
|
|
13
|
-
readonly model: string | null;
|
|
14
|
-
readonly ipAddress: string;
|
|
15
|
-
readonly status: 'online' | 'offline' | 'error';
|
|
16
|
-
readonly controlProtocol: string;
|
|
17
|
-
}
|
|
18
|
-
export interface CameraPreset {
|
|
19
|
-
readonly id: string;
|
|
20
|
-
readonly name: string;
|
|
21
|
-
readonly slot: number;
|
|
22
|
-
}
|
|
23
|
-
export interface CameraControlParams {
|
|
24
|
-
readonly iris?: number;
|
|
25
|
-
readonly focus?: number;
|
|
26
|
-
readonly zoom?: number;
|
|
27
|
-
readonly whiteBalance?: {
|
|
28
|
-
temperature: number;
|
|
29
|
-
tint: number;
|
|
30
|
-
};
|
|
31
|
-
readonly gain?: number;
|
|
32
|
-
readonly shutter?: number;
|
|
33
|
-
readonly panTilt?: {
|
|
34
|
-
pan: number;
|
|
35
|
-
tilt: number;
|
|
36
|
-
speed: number;
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
export declare class CameraControlAPI {
|
|
40
|
-
private readonly client;
|
|
41
|
-
private readonly basePath;
|
|
42
|
-
constructor(client: WaveClient);
|
|
43
|
-
discover(): Promise<ManagedCamera[]>;
|
|
44
|
-
list(): Promise<ManagedCamera[]>;
|
|
45
|
-
get(cameraId: string): Promise<ManagedCamera>;
|
|
46
|
-
control(cameraId: string, params: CameraControlParams): Promise<void>;
|
|
47
|
-
autofocus(cameraId: string): Promise<void>;
|
|
48
|
-
savePreset(cameraId: string, name: string, slot: number): Promise<CameraPreset>;
|
|
49
|
-
recallPreset(cameraId: string, presetId: string): Promise<void>;
|
|
50
|
-
listPresets(cameraId: string): Promise<CameraPreset[]>;
|
|
51
|
-
startRecording(cameraId: string): Promise<void>;
|
|
52
|
-
stopRecording(cameraId: string): Promise<void>;
|
|
53
|
-
}
|
|
54
|
-
export declare function createCameraControlAPI(client: WaveClient): CameraControlAPI;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"camera-control.d.ts","sourceRoot":"","sources":["../src/camera-control.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,YAAY,EAAE,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,OAAO,CAAC;IAC/E,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;IAChD,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,YAAY,CAAC,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACjE;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAiB;gBAE9B,MAAM,EAAE,UAAU;IAIxB,QAAQ,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAIpC,IAAI,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAIhC,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAI7C,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8BrE,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1C,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAI/E,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/D,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAItD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAGrD;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,UAAU,GAAG,gBAAgB,CAE3E"}
|