Source: entities/fblob.js

export default class FBlob {
    constructor(row) {
        /** @type {string} */
        this.blobId = row.blobId;

        /**
         * can either contain the whole content (in e.g. string notes), only part (large text notes) or nothing at all (binary notes, images)
         * @type {string}
         */
        this.content = row.content;
        this.contentLength = row.contentLength;

        /** @type {string} */
        this.dateModified = row.dateModified;
        /** @type {string} */
        this.utcDateModified = row.utcDateModified;
    }

    /**
     * @returns {*}
     * @throws Error in case of invalid JSON */
    getJsonContent() {
        if (!this.content || !this.content.trim()) {
            return null;
        }

        return JSON.parse(this.content);
    }

    /** @returns {*|null} valid object or null if the content cannot be parsed as JSON */
    getJsonContentSafely() {
        try {
            return this.getJsonContent();
        }
        catch (e) {
            return null;
        }
    }
}