Socket
Socket
Sign inDemoInstall

hermes-profile-transformer

Package Overview
Dependencies
1
Maintainers
4
Versions
8
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    hermes-profile-transformer

The Hermes runtime, used by React Native for Android, is able to output [Chrome Trace Events](https://docs.google.com/document/d/1CvAClvFfyA5R-PhYUmn5OOQtYMH4h6I0nSsKchNAySU/preview) in JSON Object Format.


Version published
Weekly downloads
1.5M
increased by3.1%
Maintainers
4
Install size
572 kB
Created
Weekly downloads
 

Package description

What is hermes-profile-transformer?

The hermes-profile-transformer package is designed to convert Hermes sampling profiler output to Chrome's trace event format. This allows developers to visualize and analyze performance metrics of React Native applications that use the Hermes JavaScript engine in Chrome DevTools.

What are hermes-profile-transformer's main functionalities?

Transform Hermes profile to Chrome format

This feature allows you to convert a profile file from Hermes format to a format that is compatible with Chrome DevTools. The code sample demonstrates reading a Hermes profile from a file, transforming it, and then writing the transformed profile to a new file.

const { hermesToChrome } = require('hermes-profile-transformer');
const fs = require('fs');

const hermesProfile = JSON.parse(fs.readFileSync('path-to-hermes-profile.json', 'utf-8'));
const events = hermesToChrome(hermesProfile);
fs.writeFileSync('path-to-chrome-profile.json', JSON.stringify(events), 'utf-8');

Other packages similar to hermes-profile-transformer

Readme

Source

Hermes Profile Transformer

npm node-current npm bundle size NPM npm type definitions

Visualize Facebook's Hermes JavaScript runtime profile traces in Chrome Developer Tools.

Demo Profile

Overview

The Hermes runtime, used by React Native for Android, is able to output Chrome Trace Events in JSON Object Format.

This TypeScript package converts Hermes CPU profiles to Chrome Developer Tools compatible JSON Array Format, and enriches it with line and column numbers and event categories from JavaScript source maps.

Usage

If you're using hermes-profile-transformer to debug React Native Android applications, you can use the React Native CLI react-native profile-hermes command, which uses this package to convert the downloaded Hermes profiles automatically.

As a standalone package

const transformer = require('hermes-profile-transformer').default;
const { writeFileSync } = require('fs');

const hermesCpuProfilePath = './testprofile.cpuprofile';
const sourceMapPath = './index.map';
const sourceMapBundleFileName = 'index.bundle.js';

transformer(
  // profile path is required
  hermesCpuProfilePath,
  // source maps are optional
  sourceMap,
  sourceMapBundleFileName
)
  .then(events => {
    // write converted trace to a file
    return writeFileSync(
      './chrome-supported.json',
      JSON.stringify(events, null, 2),
      'utf-8'
    );
  })
  .catch(err => {
    console.log(err);
  });

Creating Hermes CPU Profiles

Opening converted profiles in Chrome Developer Tools

Open Developer Tools in Chrome, navigate to the Performance tab, and use the Load profile... feature.

Loading the Profile

API

transformer(profilePath: string, sourceMapPath?: string, bundleFileName?: string)

Parameters
ParameterTypeRequiredDescription
profilePathstringYesPath to a JSON-formatted .cpuprofile file created by the Hermes runtime
sourceMapPathstringNoPath to a source-map compatible Source Map file
bundleFileNamestringNoIf sourceMapPath is provided, you need to also provide the name of the JavaScript bundle file that the source map applies to. This file does not need to exist on disk.
Returns

Promise<DurationEvent[]>, where DurationEvent is as defined in EventInterfaces.ts.

Resources

LICENSE

MIT

Keywords

FAQs

Last updated on 20 Aug 2020

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc