@elevenlabs/elevenlabs-js 2.10.0 → 2.11.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.
- package/Client.js +2 -2
- package/api/resources/music/client/Client.d.ts +6 -0
- package/api/resources/music/client/Client.js +67 -0
- package/api/{types → resources/music/client/requests}/BodyComposeMusicWithADetailedResponseV1MusicDetailedPost.d.ts +5 -1
- package/api/resources/music/client/requests/index.d.ts +1 -0
- package/api/resources/music/types/MusicComposeDetailedRequestOutputFormat.d.ts +28 -0
- package/api/resources/music/types/MusicComposeDetailedRequestOutputFormat.js +27 -0
- package/api/resources/music/types/index.d.ts +1 -0
- package/api/resources/music/types/index.js +1 -0
- package/api/types/User.d.ts +3 -1
- package/api/types/index.d.ts +0 -1
- package/api/types/index.js +0 -1
- package/dist/Client.js +2 -2
- package/dist/api/resources/music/client/Client.d.ts +6 -0
- package/dist/api/resources/music/client/Client.js +67 -0
- package/dist/api/{types → resources/music/client/requests}/BodyComposeMusicWithADetailedResponseV1MusicDetailedPost.d.ts +5 -1
- package/dist/api/resources/music/client/requests/index.d.ts +1 -0
- package/dist/api/resources/music/types/MusicComposeDetailedRequestOutputFormat.d.ts +28 -0
- package/dist/api/resources/music/types/MusicComposeDetailedRequestOutputFormat.js +27 -0
- package/dist/api/resources/music/types/index.d.ts +1 -0
- package/dist/api/resources/music/types/index.js +1 -0
- package/dist/api/types/User.d.ts +3 -1
- package/dist/api/types/index.d.ts +0 -1
- package/dist/api/types/index.js +0 -1
- package/dist/serialization/{types → resources/music/client/requests}/BodyComposeMusicWithADetailedResponseV1MusicDetailedPost.d.ts +5 -5
- package/dist/serialization/{types → resources/music/client/requests}/BodyComposeMusicWithADetailedResponseV1MusicDetailedPost.js +2 -2
- package/dist/serialization/resources/music/client/requests/index.d.ts +1 -0
- package/dist/serialization/resources/music/client/requests/index.js +3 -1
- package/dist/serialization/resources/music/types/MusicComposeDetailedRequestOutputFormat.d.ts +10 -0
- package/dist/serialization/resources/music/types/MusicComposeDetailedRequestOutputFormat.js +61 -0
- package/dist/serialization/resources/music/types/index.d.ts +1 -0
- package/dist/serialization/resources/music/types/index.js +1 -0
- package/dist/serialization/types/User.d.ts +1 -0
- package/dist/serialization/types/User.js +1 -0
- package/dist/serialization/types/index.d.ts +0 -1
- package/dist/serialization/types/index.js +0 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/wrapper/ElevenLabsClient.d.ts +3 -0
- package/dist/wrapper/ElevenLabsClient.js +8 -0
- package/dist/wrapper/index.d.ts +1 -0
- package/dist/wrapper/index.js +3 -1
- package/dist/wrapper/music.d.ts +43 -0
- package/dist/wrapper/music.js +162 -0
- package/package.json +1 -1
- package/serialization/{types → resources/music/client/requests}/BodyComposeMusicWithADetailedResponseV1MusicDetailedPost.d.ts +5 -5
- package/serialization/{types → resources/music/client/requests}/BodyComposeMusicWithADetailedResponseV1MusicDetailedPost.js +2 -2
- package/serialization/resources/music/client/requests/index.d.ts +1 -0
- package/serialization/resources/music/client/requests/index.js +3 -1
- package/serialization/resources/music/types/MusicComposeDetailedRequestOutputFormat.d.ts +10 -0
- package/serialization/resources/music/types/MusicComposeDetailedRequestOutputFormat.js +61 -0
- package/serialization/resources/music/types/index.d.ts +1 -0
- package/serialization/resources/music/types/index.js +1 -0
- package/serialization/types/User.d.ts +1 -0
- package/serialization/types/User.js +1 -0
- package/serialization/types/index.d.ts +0 -1
- package/serialization/types/index.js +0 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/wrapper/ElevenLabsClient.d.ts +3 -0
- package/wrapper/ElevenLabsClient.js +8 -0
- package/wrapper/index.d.ts +1 -0
- package/wrapper/index.js +3 -1
- package/wrapper/music.d.ts +43 -0
- package/wrapper/music.js +162 -0
- /package/api/{types → resources/music/client/requests}/BodyComposeMusicWithADetailedResponseV1MusicDetailedPost.js +0 -0
- /package/dist/api/{types → resources/music/client/requests}/BodyComposeMusicWithADetailedResponseV1MusicDetailedPost.js +0 -0
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const SDK_VERSION = "v2.
|
|
1
|
+
export declare const SDK_VERSION = "v2.11.0";
|
package/dist/version.js
CHANGED
|
@@ -2,6 +2,7 @@ import { ElevenLabsClient as FernClient } from "../Client";
|
|
|
2
2
|
import type * as ElevenLabs from "../api";
|
|
3
3
|
import type * as core from "../core";
|
|
4
4
|
import { WebhooksClient } from "./webhooks";
|
|
5
|
+
import { Music } from "./music";
|
|
5
6
|
export declare namespace ElevenLabsClient {
|
|
6
7
|
interface Options extends FernClient.Options {
|
|
7
8
|
/**
|
|
@@ -18,6 +19,8 @@ export declare namespace ElevenLabsClient {
|
|
|
18
19
|
}
|
|
19
20
|
export declare class ElevenLabsClient extends FernClient {
|
|
20
21
|
private _customWebhooks;
|
|
22
|
+
private _customMusic;
|
|
21
23
|
constructor(options?: ElevenLabsClient.Options);
|
|
22
24
|
get webhooks(): WebhooksClient;
|
|
25
|
+
get music(): Music;
|
|
23
26
|
}
|
|
@@ -37,6 +37,7 @@ exports.ElevenLabsClient = void 0;
|
|
|
37
37
|
const Client_1 = require("../Client");
|
|
38
38
|
const errors = __importStar(require("../errors"));
|
|
39
39
|
const webhooks_1 = require("./webhooks");
|
|
40
|
+
const music_1 = require("./music");
|
|
40
41
|
class ElevenLabsClient extends Client_1.ElevenLabsClient {
|
|
41
42
|
constructor(options = {}) {
|
|
42
43
|
var _a;
|
|
@@ -55,5 +56,12 @@ class ElevenLabsClient extends Client_1.ElevenLabsClient {
|
|
|
55
56
|
}
|
|
56
57
|
return this._customWebhooks;
|
|
57
58
|
}
|
|
59
|
+
// @ts-expect-error - Intentionally overriding parent getter with custom Music wrapper
|
|
60
|
+
get music() {
|
|
61
|
+
if (!this._customMusic) {
|
|
62
|
+
this._customMusic = new music_1.Music(this._options);
|
|
63
|
+
}
|
|
64
|
+
return this._customMusic;
|
|
65
|
+
}
|
|
58
66
|
}
|
|
59
67
|
exports.ElevenLabsClient = ElevenLabsClient;
|
package/dist/wrapper/index.d.ts
CHANGED
package/dist/wrapper/index.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.stream = exports.play = exports.ElevenLabsClient = void 0;
|
|
3
|
+
exports.stream = exports.play = exports.Music = exports.ElevenLabsClient = void 0;
|
|
4
4
|
var ElevenLabsClient_1 = require("./ElevenLabsClient");
|
|
5
5
|
Object.defineProperty(exports, "ElevenLabsClient", { enumerable: true, get: function () { return ElevenLabsClient_1.ElevenLabsClient; } });
|
|
6
|
+
var music_1 = require("./music");
|
|
7
|
+
Object.defineProperty(exports, "Music", { enumerable: true, get: function () { return music_1.Music; } });
|
|
6
8
|
var play_1 = require("./play");
|
|
7
9
|
Object.defineProperty(exports, "play", { enumerable: true, get: function () { return play_1.play; } });
|
|
8
10
|
var stream_1 = require("./stream");
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Music as GeneratedMusic } from "../api/resources/music/client/Client";
|
|
2
|
+
import type * as ElevenLabs from "../api";
|
|
3
|
+
import type { CompositionPlan } from "../api/resources/music/resources/compositionPlan/client/Client";
|
|
4
|
+
export declare namespace Music {
|
|
5
|
+
interface Options extends GeneratedMusic.Options {
|
|
6
|
+
}
|
|
7
|
+
interface RequestOptions extends GeneratedMusic.RequestOptions {
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export interface SongMetadata {
|
|
11
|
+
title: string;
|
|
12
|
+
description: string;
|
|
13
|
+
genres: string[];
|
|
14
|
+
languages: string[];
|
|
15
|
+
is_explicit: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface MultipartResponse {
|
|
18
|
+
json: {
|
|
19
|
+
compositionPlan: CompositionPlan;
|
|
20
|
+
songMetadata: SongMetadata;
|
|
21
|
+
};
|
|
22
|
+
audio: Buffer;
|
|
23
|
+
filename: string;
|
|
24
|
+
}
|
|
25
|
+
export declare class Music extends GeneratedMusic {
|
|
26
|
+
constructor(options?: Music.Options);
|
|
27
|
+
/**
|
|
28
|
+
* Compose a song from a prompt or a composition plan with detailed response parsing.
|
|
29
|
+
* This method calls the original composeDetailed and then parses the stream response.
|
|
30
|
+
* @throws {@link ElevenLabs.UnprocessableEntityError}
|
|
31
|
+
*/
|
|
32
|
+
composeDetailed(request?: ElevenLabs.BodyComposeMusicWithADetailedResponseV1MusicDetailedPost, requestOptions?: Music.RequestOptions): Promise<MultipartResponse>;
|
|
33
|
+
/**
|
|
34
|
+
* Reads a ReadableStream containing multipart data and parses it into JSON and audio parts
|
|
35
|
+
* @param stream - ReadableStream from ElevenLabs music API response
|
|
36
|
+
* @returns Object containing parsed JSON metadata, audio Buffer, and filename
|
|
37
|
+
*/
|
|
38
|
+
private parseMultipart;
|
|
39
|
+
/**
|
|
40
|
+
* Converts snake_case keys to camelCase recursively
|
|
41
|
+
*/
|
|
42
|
+
private toCamelCase;
|
|
43
|
+
}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.Music = void 0;
|
|
13
|
+
const Client_1 = require("../api/resources/music/client/Client");
|
|
14
|
+
class Music extends Client_1.Music {
|
|
15
|
+
constructor(options = {}) {
|
|
16
|
+
super(options);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Compose a song from a prompt or a composition plan with detailed response parsing.
|
|
20
|
+
* This method calls the original composeDetailed and then parses the stream response.
|
|
21
|
+
* @throws {@link ElevenLabs.UnprocessableEntityError}
|
|
22
|
+
*/
|
|
23
|
+
// @ts-expect-error - Intentionally overriding parent method with different return type
|
|
24
|
+
composeDetailed() {
|
|
25
|
+
const _super = Object.create(null, {
|
|
26
|
+
composeDetailed: { get: () => super.composeDetailed }
|
|
27
|
+
});
|
|
28
|
+
return __awaiter(this, arguments, void 0, function* (request = {}, requestOptions) {
|
|
29
|
+
// Call the parent method to get the stream
|
|
30
|
+
const response = yield _super.composeDetailed.call(this, request, requestOptions);
|
|
31
|
+
// Parse the stream using your existing parsing method
|
|
32
|
+
const parsedResponse = yield this.parseMultipart(response);
|
|
33
|
+
return parsedResponse;
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Reads a ReadableStream containing multipart data and parses it into JSON and audio parts
|
|
38
|
+
* @param stream - ReadableStream from ElevenLabs music API response
|
|
39
|
+
* @returns Object containing parsed JSON metadata, audio Buffer, and filename
|
|
40
|
+
*/
|
|
41
|
+
parseMultipart(stream) {
|
|
42
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
43
|
+
// Read the stream and collect all chunks
|
|
44
|
+
const reader = stream.getReader();
|
|
45
|
+
const chunks = [];
|
|
46
|
+
let done = false;
|
|
47
|
+
while (!done) {
|
|
48
|
+
const result = yield reader.read();
|
|
49
|
+
done = result.done;
|
|
50
|
+
if (result.value) {
|
|
51
|
+
chunks.push(result.value);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// Combine all chunks into a single buffer
|
|
55
|
+
const totalLength = chunks.reduce((acc, chunk) => acc + chunk.length, 0);
|
|
56
|
+
const responseBytes = new Uint8Array(totalLength);
|
|
57
|
+
let offset = 0;
|
|
58
|
+
for (const chunk of chunks) {
|
|
59
|
+
responseBytes.set(chunk, offset);
|
|
60
|
+
offset += chunk.length;
|
|
61
|
+
}
|
|
62
|
+
// Parse the multipart content
|
|
63
|
+
const responseText = new TextDecoder().decode(responseBytes);
|
|
64
|
+
const lines = responseText.split('\n');
|
|
65
|
+
const boundary = lines[0].trim();
|
|
66
|
+
// Find the JSON part (should be early in the response)
|
|
67
|
+
let jsonData = null;
|
|
68
|
+
let filename = 'generated_music.mp3';
|
|
69
|
+
// Parse JSON from the text representation
|
|
70
|
+
for (let i = 0; i < Math.min(10, lines.length); i++) {
|
|
71
|
+
if (lines[i].includes('Content-Type: application/json') && i + 2 < lines.length) {
|
|
72
|
+
const jsonLine = lines[i + 2];
|
|
73
|
+
if (jsonLine.trim() && jsonLine.startsWith('{')) {
|
|
74
|
+
try {
|
|
75
|
+
const rawJson = JSON.parse(jsonLine);
|
|
76
|
+
// Convert snake_case keys to camelCase
|
|
77
|
+
jsonData = this.toCamelCase(rawJson);
|
|
78
|
+
console.log('✓ Successfully parsed JSON metadata');
|
|
79
|
+
}
|
|
80
|
+
catch (e) {
|
|
81
|
+
console.warn('Failed to parse JSON:', e);
|
|
82
|
+
}
|
|
83
|
+
break;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// Extract filename from headers
|
|
88
|
+
for (let i = 0; i < Math.min(20, lines.length); i++) {
|
|
89
|
+
if (lines[i].includes('filename=')) {
|
|
90
|
+
const match = lines[i].match(/filename="([^"]+)"/);
|
|
91
|
+
if (match) {
|
|
92
|
+
filename = match[1];
|
|
93
|
+
break;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// Find where the audio data starts (after the second boundary and headers)
|
|
98
|
+
const boundaryBytes = new TextEncoder().encode(boundary);
|
|
99
|
+
let firstBoundary = -1;
|
|
100
|
+
let secondBoundary = -1;
|
|
101
|
+
for (let i = 0; i <= responseBytes.length - boundaryBytes.length; i++) {
|
|
102
|
+
let match = true;
|
|
103
|
+
for (let j = 0; j < boundaryBytes.length; j++) {
|
|
104
|
+
if (responseBytes[i + j] !== boundaryBytes[j]) {
|
|
105
|
+
match = false;
|
|
106
|
+
break;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
if (match) {
|
|
110
|
+
if (firstBoundary === -1) {
|
|
111
|
+
firstBoundary = i;
|
|
112
|
+
}
|
|
113
|
+
else if (secondBoundary === -1) {
|
|
114
|
+
secondBoundary = i;
|
|
115
|
+
break;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
if (secondBoundary === -1) {
|
|
120
|
+
throw new Error('Could not find audio part boundary');
|
|
121
|
+
}
|
|
122
|
+
// Find the start of audio data (after headers and empty line)
|
|
123
|
+
let audioStart = secondBoundary + boundaryBytes.length;
|
|
124
|
+
// Skip past the headers to find the empty line
|
|
125
|
+
while (audioStart < responseBytes.length - 1) {
|
|
126
|
+
if (responseBytes[audioStart] === 0x0A && responseBytes[audioStart + 1] === 0x0A) {
|
|
127
|
+
// Found \n\n - audio starts after this
|
|
128
|
+
audioStart += 2;
|
|
129
|
+
break;
|
|
130
|
+
}
|
|
131
|
+
audioStart++;
|
|
132
|
+
}
|
|
133
|
+
// Audio goes until the end (or until we find another boundary, but usually it's the end)
|
|
134
|
+
const audioBuffer = Buffer.from(responseBytes.slice(audioStart));
|
|
135
|
+
if (!jsonData) {
|
|
136
|
+
throw new Error('Could not parse JSON data');
|
|
137
|
+
}
|
|
138
|
+
return {
|
|
139
|
+
json: jsonData,
|
|
140
|
+
audio: audioBuffer,
|
|
141
|
+
filename: filename
|
|
142
|
+
};
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Converts snake_case keys to camelCase recursively
|
|
147
|
+
*/
|
|
148
|
+
toCamelCase(obj) {
|
|
149
|
+
if (Array.isArray(obj)) {
|
|
150
|
+
return obj.map((item) => this.toCamelCase(item));
|
|
151
|
+
}
|
|
152
|
+
else if (obj !== null && typeof obj === 'object') {
|
|
153
|
+
return Object.keys(obj).reduce((result, key) => {
|
|
154
|
+
const camelKey = key.replace(/_([a-z])/g, (_, letter) => letter.toUpperCase());
|
|
155
|
+
result[camelKey] = this.toCamelCase(obj[key]);
|
|
156
|
+
return result;
|
|
157
|
+
}, {});
|
|
158
|
+
}
|
|
159
|
+
return obj;
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
exports.Music = Music;
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* This file was auto-generated by Fern from our API Definition.
|
|
3
3
|
*/
|
|
4
|
-
import * as serializers from "
|
|
5
|
-
import * as ElevenLabs from "
|
|
6
|
-
import * as core from "
|
|
7
|
-
import { MusicPrompt } from "
|
|
8
|
-
export declare const BodyComposeMusicWithADetailedResponseV1MusicDetailedPost: core.serialization.
|
|
4
|
+
import * as serializers from "../../../../index";
|
|
5
|
+
import * as ElevenLabs from "../../../../../api/index";
|
|
6
|
+
import * as core from "../../../../../core";
|
|
7
|
+
import { MusicPrompt } from "../../../../types/MusicPrompt";
|
|
8
|
+
export declare const BodyComposeMusicWithADetailedResponseV1MusicDetailedPost: core.serialization.Schema<serializers.BodyComposeMusicWithADetailedResponseV1MusicDetailedPost.Raw, Omit<ElevenLabs.BodyComposeMusicWithADetailedResponseV1MusicDetailedPost, "outputFormat">>;
|
|
9
9
|
export declare namespace BodyComposeMusicWithADetailedResponseV1MusicDetailedPost {
|
|
10
10
|
interface Raw {
|
|
11
11
|
prompt?: string | null;
|
|
@@ -37,8 +37,8 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
37
37
|
})();
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.BodyComposeMusicWithADetailedResponseV1MusicDetailedPost = void 0;
|
|
40
|
-
const core = __importStar(require("
|
|
41
|
-
const MusicPrompt_1 = require("
|
|
40
|
+
const core = __importStar(require("../../../../../core"));
|
|
41
|
+
const MusicPrompt_1 = require("../../../../types/MusicPrompt");
|
|
42
42
|
exports.BodyComposeMusicWithADetailedResponseV1MusicDetailedPost = core.serialization.object({
|
|
43
43
|
prompt: core.serialization.string().optional(),
|
|
44
44
|
musicPrompt: core.serialization.property("music_prompt", MusicPrompt_1.MusicPrompt.optional()),
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
export { BodyComposeMusicV1MusicPost } from "./BodyComposeMusicV1MusicPost";
|
|
2
|
+
export { BodyComposeMusicWithADetailedResponseV1MusicDetailedPost } from "./BodyComposeMusicWithADetailedResponseV1MusicDetailedPost";
|
|
2
3
|
export { BodyStreamComposedMusicV1MusicStreamPost } from "./BodyStreamComposedMusicV1MusicStreamPost";
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.BodyStreamComposedMusicV1MusicStreamPost = exports.BodyComposeMusicV1MusicPost = void 0;
|
|
3
|
+
exports.BodyStreamComposedMusicV1MusicStreamPost = exports.BodyComposeMusicWithADetailedResponseV1MusicDetailedPost = exports.BodyComposeMusicV1MusicPost = void 0;
|
|
4
4
|
var BodyComposeMusicV1MusicPost_1 = require("./BodyComposeMusicV1MusicPost");
|
|
5
5
|
Object.defineProperty(exports, "BodyComposeMusicV1MusicPost", { enumerable: true, get: function () { return BodyComposeMusicV1MusicPost_1.BodyComposeMusicV1MusicPost; } });
|
|
6
|
+
var BodyComposeMusicWithADetailedResponseV1MusicDetailedPost_1 = require("./BodyComposeMusicWithADetailedResponseV1MusicDetailedPost");
|
|
7
|
+
Object.defineProperty(exports, "BodyComposeMusicWithADetailedResponseV1MusicDetailedPost", { enumerable: true, get: function () { return BodyComposeMusicWithADetailedResponseV1MusicDetailedPost_1.BodyComposeMusicWithADetailedResponseV1MusicDetailedPost; } });
|
|
6
8
|
var BodyStreamComposedMusicV1MusicStreamPost_1 = require("./BodyStreamComposedMusicV1MusicStreamPost");
|
|
7
9
|
Object.defineProperty(exports, "BodyStreamComposedMusicV1MusicStreamPost", { enumerable: true, get: function () { return BodyStreamComposedMusicV1MusicStreamPost_1.BodyStreamComposedMusicV1MusicStreamPost; } });
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file was auto-generated by Fern from our API Definition.
|
|
3
|
+
*/
|
|
4
|
+
import * as serializers from "../../../index";
|
|
5
|
+
import * as ElevenLabs from "../../../../api/index";
|
|
6
|
+
import * as core from "../../../../core";
|
|
7
|
+
export declare const MusicComposeDetailedRequestOutputFormat: core.serialization.Schema<serializers.MusicComposeDetailedRequestOutputFormat.Raw, ElevenLabs.MusicComposeDetailedRequestOutputFormat>;
|
|
8
|
+
export declare namespace MusicComposeDetailedRequestOutputFormat {
|
|
9
|
+
type Raw = "mp3_22050_32" | "mp3_44100_32" | "mp3_44100_64" | "mp3_44100_96" | "mp3_44100_128" | "mp3_44100_192" | "pcm_8000" | "pcm_16000" | "pcm_22050" | "pcm_24000" | "pcm_44100" | "pcm_48000" | "ulaw_8000" | "alaw_8000" | "opus_48000_32" | "opus_48000_64" | "opus_48000_96" | "opus_48000_128" | "opus_48000_192";
|
|
10
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* This file was auto-generated by Fern from our API Definition.
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.MusicComposeDetailedRequestOutputFormat = void 0;
|
|
40
|
+
const core = __importStar(require("../../../../core"));
|
|
41
|
+
exports.MusicComposeDetailedRequestOutputFormat = core.serialization.enum_([
|
|
42
|
+
"mp3_22050_32",
|
|
43
|
+
"mp3_44100_32",
|
|
44
|
+
"mp3_44100_64",
|
|
45
|
+
"mp3_44100_96",
|
|
46
|
+
"mp3_44100_128",
|
|
47
|
+
"mp3_44100_192",
|
|
48
|
+
"pcm_8000",
|
|
49
|
+
"pcm_16000",
|
|
50
|
+
"pcm_22050",
|
|
51
|
+
"pcm_24000",
|
|
52
|
+
"pcm_44100",
|
|
53
|
+
"pcm_48000",
|
|
54
|
+
"ulaw_8000",
|
|
55
|
+
"alaw_8000",
|
|
56
|
+
"opus_48000_32",
|
|
57
|
+
"opus_48000_64",
|
|
58
|
+
"opus_48000_96",
|
|
59
|
+
"opus_48000_128",
|
|
60
|
+
"opus_48000_192",
|
|
61
|
+
]);
|
|
@@ -15,4 +15,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./MusicComposeRequestOutputFormat"), exports);
|
|
18
|
+
__exportStar(require("./MusicComposeDetailedRequestOutputFormat"), exports);
|
|
18
19
|
__exportStar(require("./MusicStreamRequestOutputFormat"), exports);
|
|
@@ -54,4 +54,5 @@ exports.User = core.serialization.object({
|
|
|
54
54
|
xiApiKeyPreview: core.serialization.property("xi_api_key_preview", core.serialization.string().optional()),
|
|
55
55
|
referralLinkCode: core.serialization.property("referral_link_code", core.serialization.string().optional()),
|
|
56
56
|
partnerstackPartnerDefaultLink: core.serialization.property("partnerstack_partner_default_link", core.serialization.string().optional()),
|
|
57
|
+
createdAt: core.serialization.property("created_at", core.serialization.number()),
|
|
57
58
|
});
|
|
@@ -45,7 +45,6 @@ export * from "./BatchCallDetailedResponse";
|
|
|
45
45
|
export * from "./BatchCallRecipientStatus";
|
|
46
46
|
export * from "./BatchCallResponse";
|
|
47
47
|
export * from "./BatchCallStatus";
|
|
48
|
-
export * from "./BodyComposeMusicWithADetailedResponseV1MusicDetailedPost";
|
|
49
48
|
export * from "./CreatePreviouslyGeneratedVoiceRequest";
|
|
50
49
|
export * from "./BodyGenerateARandomVoiceV1VoiceGenerationGenerateVoicePostGender";
|
|
51
50
|
export * from "./BodyGenerateARandomVoiceV1VoiceGenerationGenerateVoicePostAge";
|
|
@@ -61,7 +61,6 @@ __exportStar(require("./BatchCallDetailedResponse"), exports);
|
|
|
61
61
|
__exportStar(require("./BatchCallRecipientStatus"), exports);
|
|
62
62
|
__exportStar(require("./BatchCallResponse"), exports);
|
|
63
63
|
__exportStar(require("./BatchCallStatus"), exports);
|
|
64
|
-
__exportStar(require("./BodyComposeMusicWithADetailedResponseV1MusicDetailedPost"), exports);
|
|
65
64
|
__exportStar(require("./CreatePreviouslyGeneratedVoiceRequest"), exports);
|
|
66
65
|
__exportStar(require("./BodyGenerateARandomVoiceV1VoiceGenerationGenerateVoicePostGender"), exports);
|
|
67
66
|
__exportStar(require("./BodyGenerateARandomVoiceV1VoiceGenerationGenerateVoicePostAge"), exports);
|
package/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const SDK_VERSION = "v2.
|
|
1
|
+
export declare const SDK_VERSION = "v2.11.0";
|
package/version.js
CHANGED
|
@@ -2,6 +2,7 @@ import { ElevenLabsClient as FernClient } from "../Client";
|
|
|
2
2
|
import type * as ElevenLabs from "../api";
|
|
3
3
|
import type * as core from "../core";
|
|
4
4
|
import { WebhooksClient } from "./webhooks";
|
|
5
|
+
import { Music } from "./music";
|
|
5
6
|
export declare namespace ElevenLabsClient {
|
|
6
7
|
interface Options extends FernClient.Options {
|
|
7
8
|
/**
|
|
@@ -18,6 +19,8 @@ export declare namespace ElevenLabsClient {
|
|
|
18
19
|
}
|
|
19
20
|
export declare class ElevenLabsClient extends FernClient {
|
|
20
21
|
private _customWebhooks;
|
|
22
|
+
private _customMusic;
|
|
21
23
|
constructor(options?: ElevenLabsClient.Options);
|
|
22
24
|
get webhooks(): WebhooksClient;
|
|
25
|
+
get music(): Music;
|
|
23
26
|
}
|
|
@@ -37,6 +37,7 @@ exports.ElevenLabsClient = void 0;
|
|
|
37
37
|
const Client_1 = require("../Client");
|
|
38
38
|
const errors = __importStar(require("../errors"));
|
|
39
39
|
const webhooks_1 = require("./webhooks");
|
|
40
|
+
const music_1 = require("./music");
|
|
40
41
|
class ElevenLabsClient extends Client_1.ElevenLabsClient {
|
|
41
42
|
constructor(options = {}) {
|
|
42
43
|
var _a;
|
|
@@ -55,5 +56,12 @@ class ElevenLabsClient extends Client_1.ElevenLabsClient {
|
|
|
55
56
|
}
|
|
56
57
|
return this._customWebhooks;
|
|
57
58
|
}
|
|
59
|
+
// @ts-expect-error - Intentionally overriding parent getter with custom Music wrapper
|
|
60
|
+
get music() {
|
|
61
|
+
if (!this._customMusic) {
|
|
62
|
+
this._customMusic = new music_1.Music(this._options);
|
|
63
|
+
}
|
|
64
|
+
return this._customMusic;
|
|
65
|
+
}
|
|
58
66
|
}
|
|
59
67
|
exports.ElevenLabsClient = ElevenLabsClient;
|
package/wrapper/index.d.ts
CHANGED
package/wrapper/index.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.stream = exports.play = exports.ElevenLabsClient = void 0;
|
|
3
|
+
exports.stream = exports.play = exports.Music = exports.ElevenLabsClient = void 0;
|
|
4
4
|
var ElevenLabsClient_1 = require("./ElevenLabsClient");
|
|
5
5
|
Object.defineProperty(exports, "ElevenLabsClient", { enumerable: true, get: function () { return ElevenLabsClient_1.ElevenLabsClient; } });
|
|
6
|
+
var music_1 = require("./music");
|
|
7
|
+
Object.defineProperty(exports, "Music", { enumerable: true, get: function () { return music_1.Music; } });
|
|
6
8
|
var play_1 = require("./play");
|
|
7
9
|
Object.defineProperty(exports, "play", { enumerable: true, get: function () { return play_1.play; } });
|
|
8
10
|
var stream_1 = require("./stream");
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Music as GeneratedMusic } from "../api/resources/music/client/Client";
|
|
2
|
+
import type * as ElevenLabs from "../api";
|
|
3
|
+
import type { CompositionPlan } from "../api/resources/music/resources/compositionPlan/client/Client";
|
|
4
|
+
export declare namespace Music {
|
|
5
|
+
interface Options extends GeneratedMusic.Options {
|
|
6
|
+
}
|
|
7
|
+
interface RequestOptions extends GeneratedMusic.RequestOptions {
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export interface SongMetadata {
|
|
11
|
+
title: string;
|
|
12
|
+
description: string;
|
|
13
|
+
genres: string[];
|
|
14
|
+
languages: string[];
|
|
15
|
+
is_explicit: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface MultipartResponse {
|
|
18
|
+
json: {
|
|
19
|
+
compositionPlan: CompositionPlan;
|
|
20
|
+
songMetadata: SongMetadata;
|
|
21
|
+
};
|
|
22
|
+
audio: Buffer;
|
|
23
|
+
filename: string;
|
|
24
|
+
}
|
|
25
|
+
export declare class Music extends GeneratedMusic {
|
|
26
|
+
constructor(options?: Music.Options);
|
|
27
|
+
/**
|
|
28
|
+
* Compose a song from a prompt or a composition plan with detailed response parsing.
|
|
29
|
+
* This method calls the original composeDetailed and then parses the stream response.
|
|
30
|
+
* @throws {@link ElevenLabs.UnprocessableEntityError}
|
|
31
|
+
*/
|
|
32
|
+
composeDetailed(request?: ElevenLabs.BodyComposeMusicWithADetailedResponseV1MusicDetailedPost, requestOptions?: Music.RequestOptions): Promise<MultipartResponse>;
|
|
33
|
+
/**
|
|
34
|
+
* Reads a ReadableStream containing multipart data and parses it into JSON and audio parts
|
|
35
|
+
* @param stream - ReadableStream from ElevenLabs music API response
|
|
36
|
+
* @returns Object containing parsed JSON metadata, audio Buffer, and filename
|
|
37
|
+
*/
|
|
38
|
+
private parseMultipart;
|
|
39
|
+
/**
|
|
40
|
+
* Converts snake_case keys to camelCase recursively
|
|
41
|
+
*/
|
|
42
|
+
private toCamelCase;
|
|
43
|
+
}
|