@mux/ai 0.16.1 → 0.17.1
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/dist/{index-CuBu_u5-.d.ts → index-3G00N5QH.d.ts} +26 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +331 -300
- package/dist/index.js.map +1 -1
- package/dist/primitives/index.d.ts +1 -1
- package/dist/primitives/index.js +153 -6
- package/dist/primitives/index.js.map +1 -1
- package/dist/workflows/index.js +328 -299
- package/dist/workflows/index.js.map +1 -1
- package/package.json +2 -2
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { D as DEFAULT_STORYBOARD_WIDTH, H as HeatmapOptions, a as HeatmapResponse, T as ThumbnailOptions, b as TranscriptFetchOptions, c as TranscriptResult, V as VTTCue, d as VTTCueBudgetChunkingOptions, e as VTTDurationChunk, f as VTTDurationChunkingOptions, g as buildTranscriptUrl, h as buildVttFromCueBlocks, j as buildVttFromTranslatedCueBlocks, k as chunkByTokens, l as chunkText, m as chunkVTTCues, n as chunkVTTCuesByBudget, o as chunkVTTCuesByDuration, p as concatenateVttSegments, q as estimateTokenCount, r as extractTextFromVTT, s as extractTimestampedTranscript, t as fetchTranscriptForAsset, u as findCaptionTrack, v as getHeatmapForAsset, w as getHeatmapForPlaybackId, x as getHeatmapForVideo, y as getReadyTextTracks, z as
|
|
1
|
+
export { D as DEFAULT_STORYBOARD_WIDTH, H as HeatmapOptions, a as HeatmapResponse, L as LOW_CONFIDENCE_THRESHOLD, T as ThumbnailOptions, b as TranscriptFetchOptions, c as TranscriptResult, V as VTTCue, d as VTTCueBudgetChunkingOptions, e as VTTDurationChunk, f as VTTDurationChunkingOptions, g as buildTranscriptUrl, h as buildVttFromCueBlocks, j as buildVttFromTranslatedCueBlocks, k as chunkByTokens, l as chunkText, m as chunkVTTCues, n as chunkVTTCuesByBudget, o as chunkVTTCuesByDuration, p as concatenateVttSegments, q as estimateTokenCount, r as extractTextFromVTT, s as extractTimestampedTranscript, t as fetchTranscriptForAsset, u as findCaptionTrack, v as getHeatmapForAsset, w as getHeatmapForPlaybackId, x as getHeatmapForVideo, y as getReadyTextTracks, z as getReliableLanguageCode, A as getStoryboardUrl, B as getThumbnailUrls, C as parseVTTCues, E as replaceCueText, F as secondsToTimestamp, G as splitVttPreambleAndCueBlocks, I as vttTimestampToSeconds } from '../index-3G00N5QH.js';
|
|
2
2
|
export { o as CompletedShotsResult, p as ErroredShotsResult, H as Hotspot, q as HotspotOptions, r as HotspotResponse, s as PendingShotsResult, t as Shot, u as ShotRequestOptions, v as ShotsResult, w as WaitForShotsOptions, x as getHotspotsForAsset, y as getHotspotsForPlaybackId, z as getHotspotsForVideo, B as getShotsForAsset, D as requestShotsForAsset, F as waitForShotsForAsset } from '../shots-BFYOfBgN.js';
|
|
3
3
|
import '@mux/mux-node';
|
package/dist/primitives/index.js
CHANGED
|
@@ -30,6 +30,10 @@ var EnvSchema = z.object({
|
|
|
30
30
|
"Override for Mux image base URL (defaults to https://image.mux.com).",
|
|
31
31
|
"Mux image URL override"
|
|
32
32
|
),
|
|
33
|
+
MUX_STREAM_URL_OVERRIDE: optionalString(
|
|
34
|
+
"Override for Mux stream base URL (defaults to https://stream.mux.com).",
|
|
35
|
+
"Mux stream URL override"
|
|
36
|
+
),
|
|
33
37
|
// Test-only helpers (used by this repo's integration tests)
|
|
34
38
|
MUX_TEST_ASSET_ID: optionalString("Mux asset ID used by integration tests.", "Mux test asset id"),
|
|
35
39
|
MUX_TEST_ASSET_ID_CHAPTERS: optionalString("Mux asset ID used by integration tests for chapters.", "Mux test asset id for chapters"),
|
|
@@ -749,22 +753,24 @@ async function waitForShotsForAsset(assetId, options = {}) {
|
|
|
749
753
|
);
|
|
750
754
|
}
|
|
751
755
|
|
|
752
|
-
// src/lib/mux-
|
|
756
|
+
// src/lib/mux-url.ts
|
|
753
757
|
var DEFAULT_MUX_IMAGE_ORIGIN = "https://image.mux.com";
|
|
754
|
-
|
|
758
|
+
var DEFAULT_MUX_STREAM_ORIGIN = "https://stream.mux.com";
|
|
759
|
+
function normalizeOrigin(value, envVarName) {
|
|
755
760
|
const trimmed = value.trim();
|
|
756
761
|
const candidate = trimmed.includes("://") ? trimmed : `https://${trimmed}`;
|
|
762
|
+
const exampleHostname = envVarName === "MUX_IMAGE_URL_OVERRIDE" ? "image.example.mux.com" : "stream.example.mux.com";
|
|
757
763
|
let parsed;
|
|
758
764
|
try {
|
|
759
765
|
parsed = new URL(candidate);
|
|
760
766
|
} catch {
|
|
761
767
|
throw new Error(
|
|
762
|
-
`Invalid
|
|
768
|
+
`Invalid ${envVarName}. Provide a hostname (e.g. "${exampleHostname}") or a URL origin (e.g. "https://${exampleHostname}").`
|
|
763
769
|
);
|
|
764
770
|
}
|
|
765
771
|
if (parsed.username || parsed.password || parsed.search || parsed.hash || parsed.pathname && parsed.pathname !== "/") {
|
|
766
772
|
throw new Error(
|
|
767
|
-
|
|
773
|
+
`Invalid ${envVarName}. Only a hostname/origin is allowed (no credentials, query params, hash fragments, or path).`
|
|
768
774
|
);
|
|
769
775
|
}
|
|
770
776
|
return parsed.origin;
|
|
@@ -774,7 +780,14 @@ function getMuxImageOrigin() {
|
|
|
774
780
|
if (!override) {
|
|
775
781
|
return DEFAULT_MUX_IMAGE_ORIGIN;
|
|
776
782
|
}
|
|
777
|
-
return
|
|
783
|
+
return normalizeOrigin(override, "MUX_IMAGE_URL_OVERRIDE");
|
|
784
|
+
}
|
|
785
|
+
function getMuxStreamOrigin() {
|
|
786
|
+
const override = env_default.MUX_STREAM_URL_OVERRIDE;
|
|
787
|
+
if (!override) {
|
|
788
|
+
return DEFAULT_MUX_STREAM_ORIGIN;
|
|
789
|
+
}
|
|
790
|
+
return normalizeOrigin(override, "MUX_STREAM_URL_OVERRIDE");
|
|
778
791
|
}
|
|
779
792
|
function getMuxImageBaseUrl(playbackId, assetType) {
|
|
780
793
|
const origin = getMuxImageOrigin();
|
|
@@ -1108,6 +1121,127 @@ async function getThumbnailUrls(playbackId, duration, options = {}) {
|
|
|
1108
1121
|
return Promise.all(urlPromises);
|
|
1109
1122
|
}
|
|
1110
1123
|
|
|
1124
|
+
// src/lib/language-codes.ts
|
|
1125
|
+
var ISO639_1_TO_3 = {
|
|
1126
|
+
// Major world languages
|
|
1127
|
+
en: "eng",
|
|
1128
|
+
// English
|
|
1129
|
+
es: "spa",
|
|
1130
|
+
// Spanish
|
|
1131
|
+
fr: "fra",
|
|
1132
|
+
// French
|
|
1133
|
+
de: "deu",
|
|
1134
|
+
// German
|
|
1135
|
+
it: "ita",
|
|
1136
|
+
// Italian
|
|
1137
|
+
pt: "por",
|
|
1138
|
+
// Portuguese
|
|
1139
|
+
ru: "rus",
|
|
1140
|
+
// Russian
|
|
1141
|
+
zh: "zho",
|
|
1142
|
+
// Chinese
|
|
1143
|
+
ja: "jpn",
|
|
1144
|
+
// Japanese
|
|
1145
|
+
ko: "kor",
|
|
1146
|
+
// Korean
|
|
1147
|
+
ar: "ara",
|
|
1148
|
+
// Arabic
|
|
1149
|
+
hi: "hin",
|
|
1150
|
+
// Hindi
|
|
1151
|
+
// European languages
|
|
1152
|
+
nl: "nld",
|
|
1153
|
+
// Dutch
|
|
1154
|
+
pl: "pol",
|
|
1155
|
+
// Polish
|
|
1156
|
+
sv: "swe",
|
|
1157
|
+
// Swedish
|
|
1158
|
+
da: "dan",
|
|
1159
|
+
// Danish
|
|
1160
|
+
no: "nor",
|
|
1161
|
+
// Norwegian
|
|
1162
|
+
fi: "fin",
|
|
1163
|
+
// Finnish
|
|
1164
|
+
el: "ell",
|
|
1165
|
+
// Greek
|
|
1166
|
+
cs: "ces",
|
|
1167
|
+
// Czech
|
|
1168
|
+
hu: "hun",
|
|
1169
|
+
// Hungarian
|
|
1170
|
+
ro: "ron",
|
|
1171
|
+
// Romanian
|
|
1172
|
+
bg: "bul",
|
|
1173
|
+
// Bulgarian
|
|
1174
|
+
hr: "hrv",
|
|
1175
|
+
// Croatian
|
|
1176
|
+
sk: "slk",
|
|
1177
|
+
// Slovak
|
|
1178
|
+
sl: "slv",
|
|
1179
|
+
// Slovenian
|
|
1180
|
+
uk: "ukr",
|
|
1181
|
+
// Ukrainian
|
|
1182
|
+
tr: "tur",
|
|
1183
|
+
// Turkish
|
|
1184
|
+
// Asian languages
|
|
1185
|
+
th: "tha",
|
|
1186
|
+
// Thai
|
|
1187
|
+
vi: "vie",
|
|
1188
|
+
// Vietnamese
|
|
1189
|
+
id: "ind",
|
|
1190
|
+
// Indonesian
|
|
1191
|
+
ms: "msa",
|
|
1192
|
+
// Malay
|
|
1193
|
+
tl: "tgl",
|
|
1194
|
+
// Tagalog/Filipino
|
|
1195
|
+
// Other languages
|
|
1196
|
+
he: "heb",
|
|
1197
|
+
// Hebrew
|
|
1198
|
+
fa: "fas",
|
|
1199
|
+
// Persian/Farsi
|
|
1200
|
+
bn: "ben",
|
|
1201
|
+
// Bengali
|
|
1202
|
+
ta: "tam",
|
|
1203
|
+
// Tamil
|
|
1204
|
+
te: "tel",
|
|
1205
|
+
// Telugu
|
|
1206
|
+
mr: "mar",
|
|
1207
|
+
// Marathi
|
|
1208
|
+
gu: "guj",
|
|
1209
|
+
// Gujarati
|
|
1210
|
+
kn: "kan",
|
|
1211
|
+
// Kannada
|
|
1212
|
+
ml: "mal",
|
|
1213
|
+
// Malayalam
|
|
1214
|
+
pa: "pan",
|
|
1215
|
+
// Punjabi
|
|
1216
|
+
ur: "urd",
|
|
1217
|
+
// Urdu
|
|
1218
|
+
sw: "swa",
|
|
1219
|
+
// Swahili
|
|
1220
|
+
af: "afr",
|
|
1221
|
+
// Afrikaans
|
|
1222
|
+
ca: "cat",
|
|
1223
|
+
// Catalan
|
|
1224
|
+
eu: "eus",
|
|
1225
|
+
// Basque
|
|
1226
|
+
gl: "glg",
|
|
1227
|
+
// Galician
|
|
1228
|
+
is: "isl",
|
|
1229
|
+
// Icelandic
|
|
1230
|
+
et: "est",
|
|
1231
|
+
// Estonian
|
|
1232
|
+
lv: "lav",
|
|
1233
|
+
// Latvian
|
|
1234
|
+
lt: "lit"
|
|
1235
|
+
// Lithuanian
|
|
1236
|
+
};
|
|
1237
|
+
var ISO639_3_TO_1 = Object.fromEntries(
|
|
1238
|
+
Object.entries(ISO639_1_TO_3).map(([iso1, iso3]) => [iso3, iso1])
|
|
1239
|
+
);
|
|
1240
|
+
var UNDETERMINED_LANGUAGE_CODES = /* @__PURE__ */ new Set(["und", "mul", "mis", "zxx"]);
|
|
1241
|
+
function isUndeterminedLanguageCode(code) {
|
|
1242
|
+
return UNDETERMINED_LANGUAGE_CODES.has(code.toLowerCase().trim());
|
|
1243
|
+
}
|
|
1244
|
+
|
|
1111
1245
|
// src/lib/mux-assets.ts
|
|
1112
1246
|
function isAudioOnlyAsset(asset) {
|
|
1113
1247
|
const hasAudioTrack = asset.tracks?.some((track) => track.type === "audio") ?? false;
|
|
@@ -1141,6 +1275,17 @@ function findCaptionTrack(asset, languageCode) {
|
|
|
1141
1275
|
}
|
|
1142
1276
|
return void 0;
|
|
1143
1277
|
}
|
|
1278
|
+
var LOW_CONFIDENCE_THRESHOLD = 0.5;
|
|
1279
|
+
function getReliableLanguageCode(track, confidenceThreshold = LOW_CONFIDENCE_THRESHOLD) {
|
|
1280
|
+
if (!track?.language_code)
|
|
1281
|
+
return void 0;
|
|
1282
|
+
if (isUndeterminedLanguageCode(track.language_code))
|
|
1283
|
+
return void 0;
|
|
1284
|
+
if (track.auto_language_confidence !== void 0 && track.auto_language_confidence < confidenceThreshold) {
|
|
1285
|
+
return void 0;
|
|
1286
|
+
}
|
|
1287
|
+
return track.language_code;
|
|
1288
|
+
}
|
|
1144
1289
|
function normalizeLineEndings(value) {
|
|
1145
1290
|
return value.replace(/\r\n/g, "\n");
|
|
1146
1291
|
}
|
|
@@ -1408,7 +1553,7 @@ function concatenateVttSegments(segments, preamble = "WEBVTT") {
|
|
|
1408
1553
|
}
|
|
1409
1554
|
async function buildTranscriptUrl(playbackId, trackId, shouldSign = false, credentials) {
|
|
1410
1555
|
"use step";
|
|
1411
|
-
const baseUrl =
|
|
1556
|
+
const baseUrl = `${getMuxStreamOrigin()}/${playbackId}/text/${trackId}.vtt`;
|
|
1412
1557
|
if (shouldSign) {
|
|
1413
1558
|
return signUrl(baseUrl, playbackId, "video", void 0, credentials);
|
|
1414
1559
|
}
|
|
@@ -1465,6 +1610,7 @@ async function fetchTranscriptForAsset(asset, playbackId, options = {}) {
|
|
|
1465
1610
|
}
|
|
1466
1611
|
export {
|
|
1467
1612
|
DEFAULT_STORYBOARD_WIDTH,
|
|
1613
|
+
LOW_CONFIDENCE_THRESHOLD,
|
|
1468
1614
|
buildTranscriptUrl,
|
|
1469
1615
|
buildVttFromCueBlocks,
|
|
1470
1616
|
buildVttFromTranslatedCueBlocks,
|
|
@@ -1486,6 +1632,7 @@ export {
|
|
|
1486
1632
|
getHotspotsForPlaybackId,
|
|
1487
1633
|
getHotspotsForVideo,
|
|
1488
1634
|
getReadyTextTracks,
|
|
1635
|
+
getReliableLanguageCode,
|
|
1489
1636
|
getShotsForAsset,
|
|
1490
1637
|
getStoryboardUrl,
|
|
1491
1638
|
getThumbnailUrls,
|