Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

babel-private-properties

Package Overview
Dependencies
Maintainers
1
Versions
4
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

babel-private-properties

A babel plugin which will convert all private properties (identifiers) to md5 hashes.

  • 0.0.3-0
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
1
Maintainers
1
Weekly downloads
 
Created
Source

npm version

babel-private-properties

When building a library it is common practice to mark properties as private by prefixing them with an underscore.

This plugin replaces any properties that are prefixed with an underscore with hashes of their names to make it even clearer that these properties are intended for internal use only. You can provide a custom salt making it possible to generate different hashes for each build.

Install

npm install --save-dev babel-private-properties

Example

Transforms

function HelloLib(name) {
    // don't want users to access this directly
    this._name = name;
}

// don't want users to call this directly
HelloLib.prototype._getName = function() {
    return this._name;
};

// This method is public and should be called externally
HelloLib.prototype.sayHello = function() {
    var name = this._getName();
    console.log("Hello "+name+"!");
};

module.exports = HelloLib;

to

function HelloLib(name) {
    // don't want users to access this directly
    this._9acade405c8dd987b11389613578be32 = name;
}

// don't want users to call this directly
HelloLib.prototype._411c21a26f496f81c64d325c9ac50f93 = function () {
    return this._9acade405c8dd987b11389613578be32;
};

// This method is public and should be called externally
HelloLib.prototype.sayHello = function () {
    var name = this._411c21a26f496f81c64d325c9ac50f93();
    console.log("Hello " + name + "!");
};

module.exports = HelloLib;

Usage

.babelrc
{
  "plugins": ["babel-private-properties"]
}

Set plugin options using an array of [pluginName, optionsObject].

{
  "plugins": [["babel-private-properties", {
    "prefix": "_",
    "salt": "salt"
  }]]
}
webpack.config.js
'module': {
  'loaders': [{
    'loader': 'babel-loader',
    'test': /\.js$/,
    'exclude': /node_modules/,
    'query': {
      'plugins': ['babel-private-properties']
    }
  }]
}

Vary Hashes Per Build

If you supply the config with webpack you can change the salt dynamically.

'module': {
  'loaders': [{
    'loader': 'babel-loader',
    'test': /\.js$/,
    'exclude': /node_modules/,
    'query': {
      'plugins': [["babel-private-properties", {
        "prefix": "_",
        "salt": Math.random() // Each build will have unique private property names
      }]]
    }
  }]
}

Keywords

FAQs

Package last updated on 13 May 2016

Did you know?

Socket

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
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc