@forge/bridge

5.15.2-next.0-experimental-5b726e65.16.0-next.1
out/events/serialiseBlob.js
~out/events/serialiseBlob.jsModified
+11
Index: package/out/events/serialiseBlob.js
===================================================================
--- package/out/events/serialiseBlob.js
+++ package/out/events/serialiseBlob.js
@@ -1,8 +1,9 @@
 "use strict";
 Object.defineProperty(exports, "__esModule", { value: true });
 exports.containsSerialisedBlobs = exports.containsBlobs = exports.deserialiseBlobsInPayload = exports.serialiseBlobsInPayload = void 0;
 const blobParser_1 = require("../utils/blobParser");
+// Copied from https://github.com/you-dont-need/You-Dont-Need-Lodash-Underscore?tab=readme-ov-file#_isplainobject
 const isPlainObject = (value) => {
     if (typeof value !== 'object' || value === null)
         return false;
     if (Object.prototype.toString.call(value) !== '[object Object]')
@@ -22,40 +23,50 @@
         type: blob.type
     };
 };
 const base64WithMetadataToBlob = (metadata) => {
+    // typecasting as Blob since base64ToBlob returns Blob | null but this is only null if data is undefined which it won't be here
     return (0, blobParser_1.base64ToBlob)(metadata.data, metadata.type);
 };
+// Recursively converts all Blobs in an object or array to base64 with metadata
 const serialiseBlobsInPayload = async (payload) => {
     if (payload instanceof Blob) {
+        // Convert blob to base64 with metadata and mark it as a serialized blob
         const blobData = await blobToBase64WithMetadata(payload);
         return {
             ...blobData,
+            // Custom property used to identify serialized blob data for deserialization
             __isBlobData: true
         };
     }
     if (Array.isArray(payload)) {
+        // Recursively process array elements
         return Promise.all(payload.map((item) => (0, exports.serialiseBlobsInPayload)(item)));
     }
     if (payload && isPlainObject(payload)) {
+        // Recursively process object properties
         const entries = await Promise.all(Object.entries(payload).map(async ([key, value]) => [key, await (0, exports.serialiseBlobsInPayload)(value)]));
         return Object.fromEntries(entries);
     }
     return payload;
 };
 exports.serialiseBlobsInPayload = serialiseBlobsInPayload;
+// Recursively converts all serialized blob data back to Blobs in an object or array
 const deserialiseBlobsInPayload = (payload) => {
     if (payload && isPlainObject(payload) && '__isBlobData' in payload) {
         const typedData = payload;
+        // Convert serialized blob data back to Blob
         return base64WithMetadataToBlob({
             data: typedData.data,
             type: typedData.type
         });
     }
     if (Array.isArray(payload)) {
+        // Recursively process array elements
         return payload.map((item) => (0, exports.deserialiseBlobsInPayload)(item));
     }
     if (payload && isPlainObject(payload)) {
+        // Recursively process object properties
         const result = {};
         for (const [key, value] of Object.entries(payload)) {
             result[key] = (0, exports.deserialiseBlobsInPayload)(value);
         }