microboard-temp 0.5.67 → 0.5.69
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/cjs/browser.js +49 -27
- package/dist/cjs/index.js +49 -27
- package/dist/cjs/node.js +49 -27
- package/dist/esm/browser.js +49 -27
- package/dist/esm/index.js +49 -27
- package/dist/esm/node.js +49 -27
- package/dist/types/api/MediaHelpers.d.ts +1 -0
- package/package.json +1 -1
package/dist/cjs/browser.js
CHANGED
|
@@ -41394,6 +41394,52 @@ var prepareImage = (inp, accessToken, boardId) => resizeAndConvertToPng(inp).the
|
|
|
41394
41394
|
});
|
|
41395
41395
|
});
|
|
41396
41396
|
|
|
41397
|
+
// src/api/MediaHelpers.ts
|
|
41398
|
+
var uploadMediaToStorage = async (hash, videoBlob, accessToken, boardId, type) => {
|
|
41399
|
+
try {
|
|
41400
|
+
const generateUrlResponse = await fetch(`${window.location.origin}/api/v1/media/generate-upload-url`, {
|
|
41401
|
+
method: "POST",
|
|
41402
|
+
headers: {
|
|
41403
|
+
"Content-Type": "application/json",
|
|
41404
|
+
Authorization: `Bearer ${accessToken}`
|
|
41405
|
+
},
|
|
41406
|
+
body: JSON.stringify({
|
|
41407
|
+
fileSize: videoBlob.size,
|
|
41408
|
+
boardId,
|
|
41409
|
+
hash
|
|
41410
|
+
})
|
|
41411
|
+
});
|
|
41412
|
+
if (!generateUrlResponse.ok) {
|
|
41413
|
+
conf.hooks.onUploadMediaError(generateUrlResponse, type);
|
|
41414
|
+
throw new Error(`Failed to get presigned URL. Status: ${generateUrlResponse.status}`);
|
|
41415
|
+
}
|
|
41416
|
+
const data = await generateUrlResponse.json();
|
|
41417
|
+
if (data.mediaUrl) {
|
|
41418
|
+
console.log("Media already exists, skipping upload.");
|
|
41419
|
+
return data.mediaUrl;
|
|
41420
|
+
}
|
|
41421
|
+
const { uploadUrl, promisedMediaUrl } = data;
|
|
41422
|
+
if (!uploadUrl || !promisedMediaUrl) {
|
|
41423
|
+
throw new Error("Server did not provide an uploadUrl or promisedMediaUrl in the response.");
|
|
41424
|
+
}
|
|
41425
|
+
const uploadResponse = await fetch(uploadUrl, {
|
|
41426
|
+
method: "PUT",
|
|
41427
|
+
headers: {
|
|
41428
|
+
"Content-Type": videoBlob.type
|
|
41429
|
+
},
|
|
41430
|
+
body: videoBlob
|
|
41431
|
+
});
|
|
41432
|
+
if (!uploadResponse.ok) {
|
|
41433
|
+
console.error("Direct upload to storage failed:", uploadResponse.status, uploadResponse.statusText);
|
|
41434
|
+
throw new Error(`Direct upload to storage failed. Status: ${uploadResponse.status}`);
|
|
41435
|
+
}
|
|
41436
|
+
return promisedMediaUrl;
|
|
41437
|
+
} catch (error) {
|
|
41438
|
+
console.error("Media upload process error:", error);
|
|
41439
|
+
throw error;
|
|
41440
|
+
}
|
|
41441
|
+
};
|
|
41442
|
+
|
|
41397
41443
|
// src/Items/Video/VideoHelpers.ts
|
|
41398
41444
|
var uploadVideoToStorage = async (hash, videoBlob, accessToken, boardId) => {
|
|
41399
41445
|
return new Promise((resolve2, reject) => {
|
|
@@ -41456,7 +41502,7 @@ var prepareVideo = (file, accessToken, boardId) => {
|
|
|
41456
41502
|
video.onseeked = null;
|
|
41457
41503
|
prepareImage(captureFrame(0.1, video)?.src, accessToken, boardId).then((imageData) => {
|
|
41458
41504
|
fileTosha256(file).then((hash) => {
|
|
41459
|
-
|
|
41505
|
+
uploadMediaToStorage(hash, file, accessToken, boardId, "video").then((url) => {
|
|
41460
41506
|
resolve2({
|
|
41461
41507
|
url,
|
|
41462
41508
|
previewUrl: imageData.storageLink
|
|
@@ -41654,7 +41700,7 @@ class AudioItem extends BaseItem {
|
|
|
41654
41700
|
this.transformation.deserialize(data.transformation);
|
|
41655
41701
|
}
|
|
41656
41702
|
if (data.url) {
|
|
41657
|
-
this.
|
|
41703
|
+
this.url = data.url;
|
|
41658
41704
|
}
|
|
41659
41705
|
if (data.extension) {
|
|
41660
41706
|
this.extension = data.extension;
|
|
@@ -41757,37 +41803,13 @@ class AudioItem extends BaseItem {
|
|
|
41757
41803
|
}
|
|
41758
41804
|
}
|
|
41759
41805
|
// src/Items/Audio/AudioHelpers.ts
|
|
41760
|
-
var uploadAudioToStorage = async (hash, audioBlob, accessToken, boardId) => {
|
|
41761
|
-
return new Promise((resolve2, reject) => {
|
|
41762
|
-
fetch(`${window.location.origin}/api/v1/media/audio/${boardId}`, {
|
|
41763
|
-
method: "POST",
|
|
41764
|
-
headers: {
|
|
41765
|
-
"Content-Type": audioBlob.type,
|
|
41766
|
-
"x-audio-id": hash,
|
|
41767
|
-
Authorization: `Bearer ${accessToken}`
|
|
41768
|
-
},
|
|
41769
|
-
body: audioBlob
|
|
41770
|
-
}).then(async (response) => {
|
|
41771
|
-
if (response.status !== 200) {
|
|
41772
|
-
return conf.hooks.onUploadMediaError(response, "audio");
|
|
41773
|
-
}
|
|
41774
|
-
return response.json();
|
|
41775
|
-
}).then((data) => {
|
|
41776
|
-
console.log(data);
|
|
41777
|
-
resolve2(data.src);
|
|
41778
|
-
}).catch((error) => {
|
|
41779
|
-
console.error("Media storage error:", error);
|
|
41780
|
-
reject(error);
|
|
41781
|
-
});
|
|
41782
|
-
});
|
|
41783
|
-
};
|
|
41784
41806
|
var prepareAudio = (file, accessToken, boardId) => {
|
|
41785
41807
|
return new Promise((resolve2, reject) => {
|
|
41786
41808
|
const audio = document.createElement("audio");
|
|
41787
41809
|
audio.src = URL.createObjectURL(file);
|
|
41788
41810
|
audio.onloadedmetadata = () => {
|
|
41789
41811
|
fileTosha256(file).then((hash) => {
|
|
41790
|
-
|
|
41812
|
+
uploadMediaToStorage(hash, file, accessToken, boardId, "audio").then((url) => {
|
|
41791
41813
|
resolve2(url);
|
|
41792
41814
|
}).catch(reject);
|
|
41793
41815
|
}).catch(() => {
|
package/dist/cjs/index.js
CHANGED
|
@@ -41394,6 +41394,52 @@ var prepareImage = (inp, accessToken, boardId) => resizeAndConvertToPng(inp).the
|
|
|
41394
41394
|
});
|
|
41395
41395
|
});
|
|
41396
41396
|
|
|
41397
|
+
// src/api/MediaHelpers.ts
|
|
41398
|
+
var uploadMediaToStorage = async (hash, videoBlob, accessToken, boardId, type) => {
|
|
41399
|
+
try {
|
|
41400
|
+
const generateUrlResponse = await fetch(`${window.location.origin}/api/v1/media/generate-upload-url`, {
|
|
41401
|
+
method: "POST",
|
|
41402
|
+
headers: {
|
|
41403
|
+
"Content-Type": "application/json",
|
|
41404
|
+
Authorization: `Bearer ${accessToken}`
|
|
41405
|
+
},
|
|
41406
|
+
body: JSON.stringify({
|
|
41407
|
+
fileSize: videoBlob.size,
|
|
41408
|
+
boardId,
|
|
41409
|
+
hash
|
|
41410
|
+
})
|
|
41411
|
+
});
|
|
41412
|
+
if (!generateUrlResponse.ok) {
|
|
41413
|
+
conf.hooks.onUploadMediaError(generateUrlResponse, type);
|
|
41414
|
+
throw new Error(`Failed to get presigned URL. Status: ${generateUrlResponse.status}`);
|
|
41415
|
+
}
|
|
41416
|
+
const data = await generateUrlResponse.json();
|
|
41417
|
+
if (data.mediaUrl) {
|
|
41418
|
+
console.log("Media already exists, skipping upload.");
|
|
41419
|
+
return data.mediaUrl;
|
|
41420
|
+
}
|
|
41421
|
+
const { uploadUrl, promisedMediaUrl } = data;
|
|
41422
|
+
if (!uploadUrl || !promisedMediaUrl) {
|
|
41423
|
+
throw new Error("Server did not provide an uploadUrl or promisedMediaUrl in the response.");
|
|
41424
|
+
}
|
|
41425
|
+
const uploadResponse = await fetch(uploadUrl, {
|
|
41426
|
+
method: "PUT",
|
|
41427
|
+
headers: {
|
|
41428
|
+
"Content-Type": videoBlob.type
|
|
41429
|
+
},
|
|
41430
|
+
body: videoBlob
|
|
41431
|
+
});
|
|
41432
|
+
if (!uploadResponse.ok) {
|
|
41433
|
+
console.error("Direct upload to storage failed:", uploadResponse.status, uploadResponse.statusText);
|
|
41434
|
+
throw new Error(`Direct upload to storage failed. Status: ${uploadResponse.status}`);
|
|
41435
|
+
}
|
|
41436
|
+
return promisedMediaUrl;
|
|
41437
|
+
} catch (error) {
|
|
41438
|
+
console.error("Media upload process error:", error);
|
|
41439
|
+
throw error;
|
|
41440
|
+
}
|
|
41441
|
+
};
|
|
41442
|
+
|
|
41397
41443
|
// src/Items/Video/VideoHelpers.ts
|
|
41398
41444
|
var uploadVideoToStorage = async (hash, videoBlob, accessToken, boardId) => {
|
|
41399
41445
|
return new Promise((resolve2, reject) => {
|
|
@@ -41456,7 +41502,7 @@ var prepareVideo = (file, accessToken, boardId) => {
|
|
|
41456
41502
|
video.onseeked = null;
|
|
41457
41503
|
prepareImage(captureFrame(0.1, video)?.src, accessToken, boardId).then((imageData) => {
|
|
41458
41504
|
fileTosha256(file).then((hash) => {
|
|
41459
|
-
|
|
41505
|
+
uploadMediaToStorage(hash, file, accessToken, boardId, "video").then((url) => {
|
|
41460
41506
|
resolve2({
|
|
41461
41507
|
url,
|
|
41462
41508
|
previewUrl: imageData.storageLink
|
|
@@ -41654,7 +41700,7 @@ class AudioItem extends BaseItem {
|
|
|
41654
41700
|
this.transformation.deserialize(data.transformation);
|
|
41655
41701
|
}
|
|
41656
41702
|
if (data.url) {
|
|
41657
|
-
this.
|
|
41703
|
+
this.url = data.url;
|
|
41658
41704
|
}
|
|
41659
41705
|
if (data.extension) {
|
|
41660
41706
|
this.extension = data.extension;
|
|
@@ -41757,37 +41803,13 @@ class AudioItem extends BaseItem {
|
|
|
41757
41803
|
}
|
|
41758
41804
|
}
|
|
41759
41805
|
// src/Items/Audio/AudioHelpers.ts
|
|
41760
|
-
var uploadAudioToStorage = async (hash, audioBlob, accessToken, boardId) => {
|
|
41761
|
-
return new Promise((resolve2, reject) => {
|
|
41762
|
-
fetch(`${window.location.origin}/api/v1/media/audio/${boardId}`, {
|
|
41763
|
-
method: "POST",
|
|
41764
|
-
headers: {
|
|
41765
|
-
"Content-Type": audioBlob.type,
|
|
41766
|
-
"x-audio-id": hash,
|
|
41767
|
-
Authorization: `Bearer ${accessToken}`
|
|
41768
|
-
},
|
|
41769
|
-
body: audioBlob
|
|
41770
|
-
}).then(async (response) => {
|
|
41771
|
-
if (response.status !== 200) {
|
|
41772
|
-
return conf.hooks.onUploadMediaError(response, "audio");
|
|
41773
|
-
}
|
|
41774
|
-
return response.json();
|
|
41775
|
-
}).then((data) => {
|
|
41776
|
-
console.log(data);
|
|
41777
|
-
resolve2(data.src);
|
|
41778
|
-
}).catch((error) => {
|
|
41779
|
-
console.error("Media storage error:", error);
|
|
41780
|
-
reject(error);
|
|
41781
|
-
});
|
|
41782
|
-
});
|
|
41783
|
-
};
|
|
41784
41806
|
var prepareAudio = (file, accessToken, boardId) => {
|
|
41785
41807
|
return new Promise((resolve2, reject) => {
|
|
41786
41808
|
const audio = document.createElement("audio");
|
|
41787
41809
|
audio.src = URL.createObjectURL(file);
|
|
41788
41810
|
audio.onloadedmetadata = () => {
|
|
41789
41811
|
fileTosha256(file).then((hash) => {
|
|
41790
|
-
|
|
41812
|
+
uploadMediaToStorage(hash, file, accessToken, boardId, "audio").then((url) => {
|
|
41791
41813
|
resolve2(url);
|
|
41792
41814
|
}).catch(reject);
|
|
41793
41815
|
}).catch(() => {
|
package/dist/cjs/node.js
CHANGED
|
@@ -43867,6 +43867,52 @@ var prepareImage = (inp, accessToken, boardId) => resizeAndConvertToPng(inp).the
|
|
|
43867
43867
|
});
|
|
43868
43868
|
});
|
|
43869
43869
|
|
|
43870
|
+
// src/api/MediaHelpers.ts
|
|
43871
|
+
var uploadMediaToStorage = async (hash, videoBlob, accessToken, boardId, type) => {
|
|
43872
|
+
try {
|
|
43873
|
+
const generateUrlResponse = await fetch(`${window.location.origin}/api/v1/media/generate-upload-url`, {
|
|
43874
|
+
method: "POST",
|
|
43875
|
+
headers: {
|
|
43876
|
+
"Content-Type": "application/json",
|
|
43877
|
+
Authorization: `Bearer ${accessToken}`
|
|
43878
|
+
},
|
|
43879
|
+
body: JSON.stringify({
|
|
43880
|
+
fileSize: videoBlob.size,
|
|
43881
|
+
boardId,
|
|
43882
|
+
hash
|
|
43883
|
+
})
|
|
43884
|
+
});
|
|
43885
|
+
if (!generateUrlResponse.ok) {
|
|
43886
|
+
conf.hooks.onUploadMediaError(generateUrlResponse, type);
|
|
43887
|
+
throw new Error(`Failed to get presigned URL. Status: ${generateUrlResponse.status}`);
|
|
43888
|
+
}
|
|
43889
|
+
const data = await generateUrlResponse.json();
|
|
43890
|
+
if (data.mediaUrl) {
|
|
43891
|
+
console.log("Media already exists, skipping upload.");
|
|
43892
|
+
return data.mediaUrl;
|
|
43893
|
+
}
|
|
43894
|
+
const { uploadUrl, promisedMediaUrl } = data;
|
|
43895
|
+
if (!uploadUrl || !promisedMediaUrl) {
|
|
43896
|
+
throw new Error("Server did not provide an uploadUrl or promisedMediaUrl in the response.");
|
|
43897
|
+
}
|
|
43898
|
+
const uploadResponse = await fetch(uploadUrl, {
|
|
43899
|
+
method: "PUT",
|
|
43900
|
+
headers: {
|
|
43901
|
+
"Content-Type": videoBlob.type
|
|
43902
|
+
},
|
|
43903
|
+
body: videoBlob
|
|
43904
|
+
});
|
|
43905
|
+
if (!uploadResponse.ok) {
|
|
43906
|
+
console.error("Direct upload to storage failed:", uploadResponse.status, uploadResponse.statusText);
|
|
43907
|
+
throw new Error(`Direct upload to storage failed. Status: ${uploadResponse.status}`);
|
|
43908
|
+
}
|
|
43909
|
+
return promisedMediaUrl;
|
|
43910
|
+
} catch (error) {
|
|
43911
|
+
console.error("Media upload process error:", error);
|
|
43912
|
+
throw error;
|
|
43913
|
+
}
|
|
43914
|
+
};
|
|
43915
|
+
|
|
43870
43916
|
// src/Items/Video/VideoHelpers.ts
|
|
43871
43917
|
var uploadVideoToStorage = async (hash, videoBlob, accessToken, boardId) => {
|
|
43872
43918
|
return new Promise((resolve2, reject) => {
|
|
@@ -43929,7 +43975,7 @@ var prepareVideo = (file, accessToken, boardId) => {
|
|
|
43929
43975
|
video.onseeked = null;
|
|
43930
43976
|
prepareImage(captureFrame(0.1, video)?.src, accessToken, boardId).then((imageData) => {
|
|
43931
43977
|
fileTosha256(file).then((hash) => {
|
|
43932
|
-
|
|
43978
|
+
uploadMediaToStorage(hash, file, accessToken, boardId, "video").then((url) => {
|
|
43933
43979
|
resolve2({
|
|
43934
43980
|
url,
|
|
43935
43981
|
previewUrl: imageData.storageLink
|
|
@@ -44127,7 +44173,7 @@ class AudioItem extends BaseItem {
|
|
|
44127
44173
|
this.transformation.deserialize(data.transformation);
|
|
44128
44174
|
}
|
|
44129
44175
|
if (data.url) {
|
|
44130
|
-
this.
|
|
44176
|
+
this.url = data.url;
|
|
44131
44177
|
}
|
|
44132
44178
|
if (data.extension) {
|
|
44133
44179
|
this.extension = data.extension;
|
|
@@ -44230,37 +44276,13 @@ class AudioItem extends BaseItem {
|
|
|
44230
44276
|
}
|
|
44231
44277
|
}
|
|
44232
44278
|
// src/Items/Audio/AudioHelpers.ts
|
|
44233
|
-
var uploadAudioToStorage = async (hash, audioBlob, accessToken, boardId) => {
|
|
44234
|
-
return new Promise((resolve2, reject) => {
|
|
44235
|
-
fetch(`${window.location.origin}/api/v1/media/audio/${boardId}`, {
|
|
44236
|
-
method: "POST",
|
|
44237
|
-
headers: {
|
|
44238
|
-
"Content-Type": audioBlob.type,
|
|
44239
|
-
"x-audio-id": hash,
|
|
44240
|
-
Authorization: `Bearer ${accessToken}`
|
|
44241
|
-
},
|
|
44242
|
-
body: audioBlob
|
|
44243
|
-
}).then(async (response) => {
|
|
44244
|
-
if (response.status !== 200) {
|
|
44245
|
-
return conf.hooks.onUploadMediaError(response, "audio");
|
|
44246
|
-
}
|
|
44247
|
-
return response.json();
|
|
44248
|
-
}).then((data) => {
|
|
44249
|
-
console.log(data);
|
|
44250
|
-
resolve2(data.src);
|
|
44251
|
-
}).catch((error) => {
|
|
44252
|
-
console.error("Media storage error:", error);
|
|
44253
|
-
reject(error);
|
|
44254
|
-
});
|
|
44255
|
-
});
|
|
44256
|
-
};
|
|
44257
44279
|
var prepareAudio = (file, accessToken, boardId) => {
|
|
44258
44280
|
return new Promise((resolve2, reject) => {
|
|
44259
44281
|
const audio = document.createElement("audio");
|
|
44260
44282
|
audio.src = URL.createObjectURL(file);
|
|
44261
44283
|
audio.onloadedmetadata = () => {
|
|
44262
44284
|
fileTosha256(file).then((hash) => {
|
|
44263
|
-
|
|
44285
|
+
uploadMediaToStorage(hash, file, accessToken, boardId, "audio").then((url) => {
|
|
44264
44286
|
resolve2(url);
|
|
44265
44287
|
}).catch(reject);
|
|
44266
44288
|
}).catch(() => {
|
package/dist/esm/browser.js
CHANGED
|
@@ -41240,6 +41240,52 @@ var prepareImage = (inp, accessToken, boardId) => resizeAndConvertToPng(inp).the
|
|
|
41240
41240
|
});
|
|
41241
41241
|
});
|
|
41242
41242
|
|
|
41243
|
+
// src/api/MediaHelpers.ts
|
|
41244
|
+
var uploadMediaToStorage = async (hash, videoBlob, accessToken, boardId, type) => {
|
|
41245
|
+
try {
|
|
41246
|
+
const generateUrlResponse = await fetch(`${window.location.origin}/api/v1/media/generate-upload-url`, {
|
|
41247
|
+
method: "POST",
|
|
41248
|
+
headers: {
|
|
41249
|
+
"Content-Type": "application/json",
|
|
41250
|
+
Authorization: `Bearer ${accessToken}`
|
|
41251
|
+
},
|
|
41252
|
+
body: JSON.stringify({
|
|
41253
|
+
fileSize: videoBlob.size,
|
|
41254
|
+
boardId,
|
|
41255
|
+
hash
|
|
41256
|
+
})
|
|
41257
|
+
});
|
|
41258
|
+
if (!generateUrlResponse.ok) {
|
|
41259
|
+
conf.hooks.onUploadMediaError(generateUrlResponse, type);
|
|
41260
|
+
throw new Error(`Failed to get presigned URL. Status: ${generateUrlResponse.status}`);
|
|
41261
|
+
}
|
|
41262
|
+
const data = await generateUrlResponse.json();
|
|
41263
|
+
if (data.mediaUrl) {
|
|
41264
|
+
console.log("Media already exists, skipping upload.");
|
|
41265
|
+
return data.mediaUrl;
|
|
41266
|
+
}
|
|
41267
|
+
const { uploadUrl, promisedMediaUrl } = data;
|
|
41268
|
+
if (!uploadUrl || !promisedMediaUrl) {
|
|
41269
|
+
throw new Error("Server did not provide an uploadUrl or promisedMediaUrl in the response.");
|
|
41270
|
+
}
|
|
41271
|
+
const uploadResponse = await fetch(uploadUrl, {
|
|
41272
|
+
method: "PUT",
|
|
41273
|
+
headers: {
|
|
41274
|
+
"Content-Type": videoBlob.type
|
|
41275
|
+
},
|
|
41276
|
+
body: videoBlob
|
|
41277
|
+
});
|
|
41278
|
+
if (!uploadResponse.ok) {
|
|
41279
|
+
console.error("Direct upload to storage failed:", uploadResponse.status, uploadResponse.statusText);
|
|
41280
|
+
throw new Error(`Direct upload to storage failed. Status: ${uploadResponse.status}`);
|
|
41281
|
+
}
|
|
41282
|
+
return promisedMediaUrl;
|
|
41283
|
+
} catch (error) {
|
|
41284
|
+
console.error("Media upload process error:", error);
|
|
41285
|
+
throw error;
|
|
41286
|
+
}
|
|
41287
|
+
};
|
|
41288
|
+
|
|
41243
41289
|
// src/Items/Video/VideoHelpers.ts
|
|
41244
41290
|
var uploadVideoToStorage = async (hash, videoBlob, accessToken, boardId) => {
|
|
41245
41291
|
return new Promise((resolve2, reject) => {
|
|
@@ -41302,7 +41348,7 @@ var prepareVideo = (file, accessToken, boardId) => {
|
|
|
41302
41348
|
video.onseeked = null;
|
|
41303
41349
|
prepareImage(captureFrame(0.1, video)?.src, accessToken, boardId).then((imageData) => {
|
|
41304
41350
|
fileTosha256(file).then((hash) => {
|
|
41305
|
-
|
|
41351
|
+
uploadMediaToStorage(hash, file, accessToken, boardId, "video").then((url) => {
|
|
41306
41352
|
resolve2({
|
|
41307
41353
|
url,
|
|
41308
41354
|
previewUrl: imageData.storageLink
|
|
@@ -41500,7 +41546,7 @@ class AudioItem extends BaseItem {
|
|
|
41500
41546
|
this.transformation.deserialize(data.transformation);
|
|
41501
41547
|
}
|
|
41502
41548
|
if (data.url) {
|
|
41503
|
-
this.
|
|
41549
|
+
this.url = data.url;
|
|
41504
41550
|
}
|
|
41505
41551
|
if (data.extension) {
|
|
41506
41552
|
this.extension = data.extension;
|
|
@@ -41603,37 +41649,13 @@ class AudioItem extends BaseItem {
|
|
|
41603
41649
|
}
|
|
41604
41650
|
}
|
|
41605
41651
|
// src/Items/Audio/AudioHelpers.ts
|
|
41606
|
-
var uploadAudioToStorage = async (hash, audioBlob, accessToken, boardId) => {
|
|
41607
|
-
return new Promise((resolve2, reject) => {
|
|
41608
|
-
fetch(`${window.location.origin}/api/v1/media/audio/${boardId}`, {
|
|
41609
|
-
method: "POST",
|
|
41610
|
-
headers: {
|
|
41611
|
-
"Content-Type": audioBlob.type,
|
|
41612
|
-
"x-audio-id": hash,
|
|
41613
|
-
Authorization: `Bearer ${accessToken}`
|
|
41614
|
-
},
|
|
41615
|
-
body: audioBlob
|
|
41616
|
-
}).then(async (response) => {
|
|
41617
|
-
if (response.status !== 200) {
|
|
41618
|
-
return conf.hooks.onUploadMediaError(response, "audio");
|
|
41619
|
-
}
|
|
41620
|
-
return response.json();
|
|
41621
|
-
}).then((data) => {
|
|
41622
|
-
console.log(data);
|
|
41623
|
-
resolve2(data.src);
|
|
41624
|
-
}).catch((error) => {
|
|
41625
|
-
console.error("Media storage error:", error);
|
|
41626
|
-
reject(error);
|
|
41627
|
-
});
|
|
41628
|
-
});
|
|
41629
|
-
};
|
|
41630
41652
|
var prepareAudio = (file, accessToken, boardId) => {
|
|
41631
41653
|
return new Promise((resolve2, reject) => {
|
|
41632
41654
|
const audio = document.createElement("audio");
|
|
41633
41655
|
audio.src = URL.createObjectURL(file);
|
|
41634
41656
|
audio.onloadedmetadata = () => {
|
|
41635
41657
|
fileTosha256(file).then((hash) => {
|
|
41636
|
-
|
|
41658
|
+
uploadMediaToStorage(hash, file, accessToken, boardId, "audio").then((url) => {
|
|
41637
41659
|
resolve2(url);
|
|
41638
41660
|
}).catch(reject);
|
|
41639
41661
|
}).catch(() => {
|
package/dist/esm/index.js
CHANGED
|
@@ -41233,6 +41233,52 @@ var prepareImage = (inp, accessToken, boardId) => resizeAndConvertToPng(inp).the
|
|
|
41233
41233
|
});
|
|
41234
41234
|
});
|
|
41235
41235
|
|
|
41236
|
+
// src/api/MediaHelpers.ts
|
|
41237
|
+
var uploadMediaToStorage = async (hash, videoBlob, accessToken, boardId, type) => {
|
|
41238
|
+
try {
|
|
41239
|
+
const generateUrlResponse = await fetch(`${window.location.origin}/api/v1/media/generate-upload-url`, {
|
|
41240
|
+
method: "POST",
|
|
41241
|
+
headers: {
|
|
41242
|
+
"Content-Type": "application/json",
|
|
41243
|
+
Authorization: `Bearer ${accessToken}`
|
|
41244
|
+
},
|
|
41245
|
+
body: JSON.stringify({
|
|
41246
|
+
fileSize: videoBlob.size,
|
|
41247
|
+
boardId,
|
|
41248
|
+
hash
|
|
41249
|
+
})
|
|
41250
|
+
});
|
|
41251
|
+
if (!generateUrlResponse.ok) {
|
|
41252
|
+
conf.hooks.onUploadMediaError(generateUrlResponse, type);
|
|
41253
|
+
throw new Error(`Failed to get presigned URL. Status: ${generateUrlResponse.status}`);
|
|
41254
|
+
}
|
|
41255
|
+
const data = await generateUrlResponse.json();
|
|
41256
|
+
if (data.mediaUrl) {
|
|
41257
|
+
console.log("Media already exists, skipping upload.");
|
|
41258
|
+
return data.mediaUrl;
|
|
41259
|
+
}
|
|
41260
|
+
const { uploadUrl, promisedMediaUrl } = data;
|
|
41261
|
+
if (!uploadUrl || !promisedMediaUrl) {
|
|
41262
|
+
throw new Error("Server did not provide an uploadUrl or promisedMediaUrl in the response.");
|
|
41263
|
+
}
|
|
41264
|
+
const uploadResponse = await fetch(uploadUrl, {
|
|
41265
|
+
method: "PUT",
|
|
41266
|
+
headers: {
|
|
41267
|
+
"Content-Type": videoBlob.type
|
|
41268
|
+
},
|
|
41269
|
+
body: videoBlob
|
|
41270
|
+
});
|
|
41271
|
+
if (!uploadResponse.ok) {
|
|
41272
|
+
console.error("Direct upload to storage failed:", uploadResponse.status, uploadResponse.statusText);
|
|
41273
|
+
throw new Error(`Direct upload to storage failed. Status: ${uploadResponse.status}`);
|
|
41274
|
+
}
|
|
41275
|
+
return promisedMediaUrl;
|
|
41276
|
+
} catch (error) {
|
|
41277
|
+
console.error("Media upload process error:", error);
|
|
41278
|
+
throw error;
|
|
41279
|
+
}
|
|
41280
|
+
};
|
|
41281
|
+
|
|
41236
41282
|
// src/Items/Video/VideoHelpers.ts
|
|
41237
41283
|
var uploadVideoToStorage = async (hash, videoBlob, accessToken, boardId) => {
|
|
41238
41284
|
return new Promise((resolve2, reject) => {
|
|
@@ -41295,7 +41341,7 @@ var prepareVideo = (file, accessToken, boardId) => {
|
|
|
41295
41341
|
video.onseeked = null;
|
|
41296
41342
|
prepareImage(captureFrame(0.1, video)?.src, accessToken, boardId).then((imageData) => {
|
|
41297
41343
|
fileTosha256(file).then((hash) => {
|
|
41298
|
-
|
|
41344
|
+
uploadMediaToStorage(hash, file, accessToken, boardId, "video").then((url) => {
|
|
41299
41345
|
resolve2({
|
|
41300
41346
|
url,
|
|
41301
41347
|
previewUrl: imageData.storageLink
|
|
@@ -41493,7 +41539,7 @@ class AudioItem extends BaseItem {
|
|
|
41493
41539
|
this.transformation.deserialize(data.transformation);
|
|
41494
41540
|
}
|
|
41495
41541
|
if (data.url) {
|
|
41496
|
-
this.
|
|
41542
|
+
this.url = data.url;
|
|
41497
41543
|
}
|
|
41498
41544
|
if (data.extension) {
|
|
41499
41545
|
this.extension = data.extension;
|
|
@@ -41596,37 +41642,13 @@ class AudioItem extends BaseItem {
|
|
|
41596
41642
|
}
|
|
41597
41643
|
}
|
|
41598
41644
|
// src/Items/Audio/AudioHelpers.ts
|
|
41599
|
-
var uploadAudioToStorage = async (hash, audioBlob, accessToken, boardId) => {
|
|
41600
|
-
return new Promise((resolve2, reject) => {
|
|
41601
|
-
fetch(`${window.location.origin}/api/v1/media/audio/${boardId}`, {
|
|
41602
|
-
method: "POST",
|
|
41603
|
-
headers: {
|
|
41604
|
-
"Content-Type": audioBlob.type,
|
|
41605
|
-
"x-audio-id": hash,
|
|
41606
|
-
Authorization: `Bearer ${accessToken}`
|
|
41607
|
-
},
|
|
41608
|
-
body: audioBlob
|
|
41609
|
-
}).then(async (response) => {
|
|
41610
|
-
if (response.status !== 200) {
|
|
41611
|
-
return conf.hooks.onUploadMediaError(response, "audio");
|
|
41612
|
-
}
|
|
41613
|
-
return response.json();
|
|
41614
|
-
}).then((data) => {
|
|
41615
|
-
console.log(data);
|
|
41616
|
-
resolve2(data.src);
|
|
41617
|
-
}).catch((error) => {
|
|
41618
|
-
console.error("Media storage error:", error);
|
|
41619
|
-
reject(error);
|
|
41620
|
-
});
|
|
41621
|
-
});
|
|
41622
|
-
};
|
|
41623
41645
|
var prepareAudio = (file, accessToken, boardId) => {
|
|
41624
41646
|
return new Promise((resolve2, reject) => {
|
|
41625
41647
|
const audio = document.createElement("audio");
|
|
41626
41648
|
audio.src = URL.createObjectURL(file);
|
|
41627
41649
|
audio.onloadedmetadata = () => {
|
|
41628
41650
|
fileTosha256(file).then((hash) => {
|
|
41629
|
-
|
|
41651
|
+
uploadMediaToStorage(hash, file, accessToken, boardId, "audio").then((url) => {
|
|
41630
41652
|
resolve2(url);
|
|
41631
41653
|
}).catch(reject);
|
|
41632
41654
|
}).catch(() => {
|
package/dist/esm/node.js
CHANGED
|
@@ -43701,6 +43701,52 @@ var prepareImage = (inp, accessToken, boardId) => resizeAndConvertToPng(inp).the
|
|
|
43701
43701
|
});
|
|
43702
43702
|
});
|
|
43703
43703
|
|
|
43704
|
+
// src/api/MediaHelpers.ts
|
|
43705
|
+
var uploadMediaToStorage = async (hash, videoBlob, accessToken, boardId, type) => {
|
|
43706
|
+
try {
|
|
43707
|
+
const generateUrlResponse = await fetch(`${window.location.origin}/api/v1/media/generate-upload-url`, {
|
|
43708
|
+
method: "POST",
|
|
43709
|
+
headers: {
|
|
43710
|
+
"Content-Type": "application/json",
|
|
43711
|
+
Authorization: `Bearer ${accessToken}`
|
|
43712
|
+
},
|
|
43713
|
+
body: JSON.stringify({
|
|
43714
|
+
fileSize: videoBlob.size,
|
|
43715
|
+
boardId,
|
|
43716
|
+
hash
|
|
43717
|
+
})
|
|
43718
|
+
});
|
|
43719
|
+
if (!generateUrlResponse.ok) {
|
|
43720
|
+
conf.hooks.onUploadMediaError(generateUrlResponse, type);
|
|
43721
|
+
throw new Error(`Failed to get presigned URL. Status: ${generateUrlResponse.status}`);
|
|
43722
|
+
}
|
|
43723
|
+
const data = await generateUrlResponse.json();
|
|
43724
|
+
if (data.mediaUrl) {
|
|
43725
|
+
console.log("Media already exists, skipping upload.");
|
|
43726
|
+
return data.mediaUrl;
|
|
43727
|
+
}
|
|
43728
|
+
const { uploadUrl, promisedMediaUrl } = data;
|
|
43729
|
+
if (!uploadUrl || !promisedMediaUrl) {
|
|
43730
|
+
throw new Error("Server did not provide an uploadUrl or promisedMediaUrl in the response.");
|
|
43731
|
+
}
|
|
43732
|
+
const uploadResponse = await fetch(uploadUrl, {
|
|
43733
|
+
method: "PUT",
|
|
43734
|
+
headers: {
|
|
43735
|
+
"Content-Type": videoBlob.type
|
|
43736
|
+
},
|
|
43737
|
+
body: videoBlob
|
|
43738
|
+
});
|
|
43739
|
+
if (!uploadResponse.ok) {
|
|
43740
|
+
console.error("Direct upload to storage failed:", uploadResponse.status, uploadResponse.statusText);
|
|
43741
|
+
throw new Error(`Direct upload to storage failed. Status: ${uploadResponse.status}`);
|
|
43742
|
+
}
|
|
43743
|
+
return promisedMediaUrl;
|
|
43744
|
+
} catch (error) {
|
|
43745
|
+
console.error("Media upload process error:", error);
|
|
43746
|
+
throw error;
|
|
43747
|
+
}
|
|
43748
|
+
};
|
|
43749
|
+
|
|
43704
43750
|
// src/Items/Video/VideoHelpers.ts
|
|
43705
43751
|
var uploadVideoToStorage = async (hash, videoBlob, accessToken, boardId) => {
|
|
43706
43752
|
return new Promise((resolve2, reject) => {
|
|
@@ -43763,7 +43809,7 @@ var prepareVideo = (file, accessToken, boardId) => {
|
|
|
43763
43809
|
video.onseeked = null;
|
|
43764
43810
|
prepareImage(captureFrame(0.1, video)?.src, accessToken, boardId).then((imageData) => {
|
|
43765
43811
|
fileTosha256(file).then((hash) => {
|
|
43766
|
-
|
|
43812
|
+
uploadMediaToStorage(hash, file, accessToken, boardId, "video").then((url) => {
|
|
43767
43813
|
resolve2({
|
|
43768
43814
|
url,
|
|
43769
43815
|
previewUrl: imageData.storageLink
|
|
@@ -43961,7 +44007,7 @@ class AudioItem extends BaseItem {
|
|
|
43961
44007
|
this.transformation.deserialize(data.transformation);
|
|
43962
44008
|
}
|
|
43963
44009
|
if (data.url) {
|
|
43964
|
-
this.
|
|
44010
|
+
this.url = data.url;
|
|
43965
44011
|
}
|
|
43966
44012
|
if (data.extension) {
|
|
43967
44013
|
this.extension = data.extension;
|
|
@@ -44064,37 +44110,13 @@ class AudioItem extends BaseItem {
|
|
|
44064
44110
|
}
|
|
44065
44111
|
}
|
|
44066
44112
|
// src/Items/Audio/AudioHelpers.ts
|
|
44067
|
-
var uploadAudioToStorage = async (hash, audioBlob, accessToken, boardId) => {
|
|
44068
|
-
return new Promise((resolve2, reject) => {
|
|
44069
|
-
fetch(`${window.location.origin}/api/v1/media/audio/${boardId}`, {
|
|
44070
|
-
method: "POST",
|
|
44071
|
-
headers: {
|
|
44072
|
-
"Content-Type": audioBlob.type,
|
|
44073
|
-
"x-audio-id": hash,
|
|
44074
|
-
Authorization: `Bearer ${accessToken}`
|
|
44075
|
-
},
|
|
44076
|
-
body: audioBlob
|
|
44077
|
-
}).then(async (response) => {
|
|
44078
|
-
if (response.status !== 200) {
|
|
44079
|
-
return conf.hooks.onUploadMediaError(response, "audio");
|
|
44080
|
-
}
|
|
44081
|
-
return response.json();
|
|
44082
|
-
}).then((data) => {
|
|
44083
|
-
console.log(data);
|
|
44084
|
-
resolve2(data.src);
|
|
44085
|
-
}).catch((error) => {
|
|
44086
|
-
console.error("Media storage error:", error);
|
|
44087
|
-
reject(error);
|
|
44088
|
-
});
|
|
44089
|
-
});
|
|
44090
|
-
};
|
|
44091
44113
|
var prepareAudio = (file, accessToken, boardId) => {
|
|
44092
44114
|
return new Promise((resolve2, reject) => {
|
|
44093
44115
|
const audio = document.createElement("audio");
|
|
44094
44116
|
audio.src = URL.createObjectURL(file);
|
|
44095
44117
|
audio.onloadedmetadata = () => {
|
|
44096
44118
|
fileTosha256(file).then((hash) => {
|
|
44097
|
-
|
|
44119
|
+
uploadMediaToStorage(hash, file, accessToken, boardId, "audio").then((url) => {
|
|
44098
44120
|
resolve2(url);
|
|
44099
44121
|
}).catch(reject);
|
|
44100
44122
|
}).catch(() => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const uploadMediaToStorage: (hash: string, videoBlob: Blob, accessToken: string | null, boardId: string, type: "video" | "audio" | "image") => Promise<string>;
|