rollup-plugin-codefend
TypeScript icon, indicating that this package has built-in type declarations

2.0.3 • Public • Published

rollup-plugin-codefend

Rollup plugin for code obfuscation based on Codefend

Installation

npm install -D rollup-plugin-codefend

Usage

Step 1: Configuration

Add to your rollup.config.js:

Default options

import { codefend } from "rollup-plugin-codefend";

export default {
  input:...,
  output: ...,
  plugins: [codefend()],
};

Custom options

import { codefend } from "rollup-plugin-codefend";

export default {
  input: ...,
  output: ...,
  plugins: [
    codefend({
      /** stats: boolean
      * Displays detailed stats about the obfuscated words:
      * e.g:
      * Ignored node_modules (5 times)
      * Predefined l_Hello -> l_Hi (2 times)
      * Encrypted l_a -> Ox0 (15 times)
      */
      stats: true,


      /** prefix: string
      * the prefix of each variable generated.
      * note: the first letter of the prefix must be either an alphabet or "_" so that the variable generated be valid.
      */
      prefix: "Ox",

      /** predefinedWords: Array<{originalWord:string, targetWord:string}>
      * words that you want to obfuscate them in a static way (determined output)
      * {"originalWord":"l_secretVar" , "targetWord": "123456"}
      * note: the original word must have a prefix 'l_' to be detected in the first place so that it gets replaced.
      */
      predefinedWords: [
        {
          originalWord: "predefined_secretword",
          targetWord: "123456",
        },
      ],

      /** ignoredWords: Array<string>
      * Words that matches the pattern to be obfuscated but should be kept as is without being obfuscated.
      * useful for words that are being obfuscated and causing errors when running or building the code
      */
      ignoredWords: ["node_modules"],

      /** regexList: Array<{name:string,value:string,flag:string}>
       * Regex for detecting the words to be obfuscated
       */
      regexList: [
        {
          name: "main",
          value: "([a-zA-Z]+(_[a-zA-Z0-9]+)+)",
          flag: "g",
        },
      ],
    }),
  ],
};

Step 2: Naming convention

In your code, add prefixes to the words that you want Codefend to encrypt.

Make sure to read the Philosophy behind Codefend obfuscation First to understand why Codefend can work with any code written in any language.

//node js example
//as a starting point:  prefix the words that should be encrypted with l_

class l_Calculator {
  l_sum(l_a, l_b) {
    const l_results = l_a + l_b;
    console.log("node_modules");
    return l_results;
  }
}

//>>>>>>==== Will Become ======<<<<<<

class Ox0 {
  Ox1(Ox2, Ox3) {
    const Ox4 = Ox2 + Ox3;
    console.log("node_modules"); // will not be obfuscated as it is added to ignoredWords in Codefend options
    return Ox4;
  }
}
<!-- Html example, can work also with Angular,React,Vue,Svelte... in the same way -->

<html>
  <head>
    <style>
      .l_red {
        color: red;
      }
    </style>
  </head>
  <body>
    <div class="l_red">l_secret</div>
    <div class="l_red">Hello World</div>
  </body>
</html>

<!-- Will Become -->

<html>
  <head>
    <style>
      .Ox1 {
        color: red;
      }
    </style>
  </head>
  <body>
    <div class="Ox1">Ox0</div>
    <div class="Ox1">Hello World</div>
  </body>
</html>

Examples

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

License

MIT

Package Sidebar

Install

npm i rollup-plugin-codefend

Weekly Downloads

11

Version

2.0.3

License

MIT

Unpacked Size

24.7 kB

Total Files

9

Last publish

Collaborators

  • mounzz