PHP WebShell

Текущая директория: /opt/BitGoJS/modules/abstract-lightning/src/lightning

Просмотр файла: signableJson.ts

export type Signable = boolean | number | string | SignableRecord | SignableArray;

export interface SignableRecord {
  [key: string]: Signable;
}

export interface SignableArray {
  [key: number]: Signable;
}

/**
 * Recursively canonicalizes an object by sorting its keys.
 *
 * @param obj - The object to be canonicalized. It can be a boolean, number, string,
 *              a record of signable values, or an array of signable values.
 * @returns The canonicalized object with sorted keys.
 * @throws Will throw an error if the object type is invalid.
 */
export function canonicalizeObject(obj: Signable): Signable {
  if (typeof obj === 'boolean' || typeof obj === 'number' || typeof obj === 'string') {
    return obj;
  }

  if (Array.isArray(obj)) {
    return obj.map(canonicalizeObject);
  }

  if (obj !== null && typeof obj === 'object') {
    return Object.keys(obj)
      .sort()
      .reduce((result: Record<string, Signable>, key) => {
        result[key] = canonicalizeObject((obj as { [key: string]: Signable })[key]);
        return result;
      }, {});
  }

  throw new Error('Invalid object type');
}

Выполнить команду


Для локальной разработки. Не используйте в интернете!