baja/obj/byteUtil.js

/**
 * @copyright 2024 Tridium, Inc. All Rights Reserved.
 */

/*eslint-env browser */

define([], function () {
  'use strict';

  /**
   * @API Status: **Private**
   *
   * @since Niagara 4.14
   * @exports nmodule/bajaScript/baja/obj/byteUtil
   */
  const byteUtil = {};

  /**
   * Convert a base64 string to a byte array.
   *
   * @param {string} base64String base64-encoded data
   * @returns {Uint8Array} bytes of the input data
   */
  byteUtil.base64StringToByteArray = (base64String) => {
    if (!base64String) {
      return new Uint8Array();
    }
    let binaryString = atob(base64String);
    let len = binaryString.length;
    let uint8Array = new Uint8Array(len);
    for (let i = 0; i < len; i++) {
      uint8Array[i] = binaryString.charCodeAt(i);
    }
    return uint8Array;
  };

  /**
   * Convert a byte array to a base64-encoded string
   *
   * @param {Uint8Array} byteArray data bytes
   * @returns {string} encoded input data
   */
  byteUtil.byteArrayToBase64String = (byteArray) => {
    if (!byteArray) {
      return '';
    }
    let binary = '';
    let len = byteArray.byteLength;
    for (let i = 0; i < len; i++) {
      binary += String.fromCharCode(byteArray[i]);
    }
    return btoa(binary);
  };

  return byteUtil;
});