GithubHelp home page GithubHelp logo

nohchi93 / console.js Goto Github PK

View Code? Open in Web Editor NEW

This project forked from htmlacademy/console.js

0.0 0.0 0.0 4.58 MB

http://htmlacademy.github.io/console.js/

Shell 0.87% JavaScript 79.74% HTML 14.03% SCSS 5.36%

console.js's Introduction

console.js Build Status

Chrome-like in-browser console

Available methods:

  • log
  • info — same as log
  • dir
  • error
  • warn — same as error
  • logHTML — same as log, but strings won't be escaped

Usage

Manual setting

Connect script https://htmlacademy.github.io/console.js/latest/js/index.js, style file https://htmlacademy.github.io/console.js/latest/css/style.css on page, create new Console instance by passing output container and optional config

<head>
  <link rel="stylesheet" href="//htmlacademy.github.io/console.js/latest/css/style.css">
</head>
<body>
  <div class="console-container"></div>
  <script src="//htmlacademy.github.io/console.js/latest/js/index.js"></script>

  <script>
    const params = {
      expandDepth: 1,
      common: {
        excludeProperties: [`__proto__`],
        maxFieldsInHead: 5,
        minFieldsToAutoexpand: 5,
        maxFieldsToAutoexpand: 15
      }
    };
    var jsConsole = new Console(document.querySelector('.console-container'), params);

    jsConsole.log("Here is console.log!");

    // console.log = jsConsole.log.bind(jsConsole);
    // console.dir = jsConsole.dir.bind(jsConsole);
    // ...
    // console.log(123);
    // or use Console.prototype.extend()
    // jsConsole.extend(console);
    // console.log(123);
  </script>
</body>

Silent

Connect script https://htmlacademy.github.io/console.js/latest/js/index-silent.js on page

Script will automatically create console container and extend native browser window.console

<script src="//htmlacademy.github.io/console.js/latest/js/index-silent.js"></script>

<script>
 console.log(123);
</script>

Presets

Use predefined configurations by connecting scripts on page

Available presets

You can use both to enable autoexpanding with defined behaviour.

Connecting presets on page

<script src="//htmlacademy.github.io/console.js/latest/js/presets/preset-1.js"></script>
<script src="//htmlacademy.github.io/console.js/latest/js/presets/preset-2.js"></script>
<script src="//htmlacademy.github.io/console.js/latest/js/index-silent.js"></script>

Lower connected preset script has higher priority than others. Will be merged with lodash.mergeWith using concatinating arrays

Console constructor

const jsConsole = new Console(DOMElement, config);

Parameters

DOMElement — container to append console DOM element within.

config — object containing settings

You can specify 3 types of views here: object, function and array. And common, that has lower priority than concrete. Will be merged into concrete one with lodash.mergeWith using concatinating arrays

  • expandDepth — depth on which fields of this root object will be expanded. Default: 0.
  • maxFieldsInHead — max length of properties in preview (head). If has more, ... at the end will be showed. Default: 5.
  • minFieldsToAutoexpand — min length of fields in view type to auto expand. Default: 0.
  • maxFieldsToAutoexpand — max length respectively. Default: Positive infinity.
  • excludeViewTypesFromAutoexpand — array of view types that don't need to be expanded inside that root view type.
  • showGetters — specifies if get and set methods will be showed in expanded object body. Default: true.
  • showMethodBodyOnly — if function is a method of any type of object — shows only body of this function (in opened object).
  • excludePropertiesFromAutoexpand — properties in view type which wouldn't be auto expanded.
  • removeProperties — array of properties to remove from view.

Specific properties for array:

  • countEntriesWithoutKeys — useful only if maxFieldsInHead given. Specifies if indexed properties should be counted in preview (head). Default: false.

Specific properties for function:

  • nowrapOnLog — specifies if functions bodies will be collapsed. Default: false.

Example:

{
  object: {
    expandDepth: 2,
    minFieldsToAutoexpand: 1, // will expand if object has 1 or more enumerable fields
    excludeViewTypesFromAutoexpand: [`function`, `array`] // will not expanded inside object,
    showMethodBodyOnly: true // show method's body only (if object was opened)
  },
  function: {
    expandDepth: 1 // will expand only itself (in dir mode only),
    nowrapOnLog: true // On log will collapse function body
  },
  array: {
    expandDepth: 2, // expand 2 levels
    minFieldsToAutoexpand: 4, // if there is 4 enum fields in array
    excludeViewTypesFromAutoexpand: [`object`] // objects inside array won't be expanded
    countEntriesWithoutKeys: true
  },
  common: {
    expandDepth: 1,
    maxFieldsInHead: 6, // object and array will have up to 6 properties in their previews (headers)
    maxFieldsToAutoexpand: 10 // if there's more than 10 properties in obj of any type, it won't be expanded
  }
}

Config merge example

Common merge

This config:

{
  object: {
    maxFieldsToAutoexpand: 10,
    excludeViewTypesFromAutoexpand: [`object`]
  },
  common: {
    expandDepth: 1
    maxFieldsToAutoexpand: 15,
    excludeViewTypesFromAutoexpand: [`array`]
  }
};

will be transformed into this on application start:

{
  object: {
    maxFieldsToAutoexpand: 10,
    expandDepth: 1,
    excludeViewTypesFromAutoexpand: [`object`, `array`]
  }
}

Presets merge

Using lodash.mergeWith to merge objects and concat arrays inside them

You have 2 preset files:

<script src="//htmlacademy.github.io/console.js/latest/js/presets/preset-1.js"></script>
<script src="//htmlacademy.github.io/console.js/latest/js/presets/preset-2.js"></script>
<script src="//htmlacademy.github.io/console.js/latest/js/index-silent.js"></script>

preset-1.js contains:

{
  object: {
    maxFieldsToAutoexpand: 5,
    excludeViewTypesFromAutoexpand: [`object`]
  },
  common: {
    excludeViewTypesFromAutoexpand: [`function`]
  }
}

preset-2.js contains:

{
  object: {
    maxFieldsToAutoexpand: 10
  },
  common: {
    expandDepth: 1
    excludeViewTypesFromAutoexpand: [`array`]
  }
}

result will be:

{
  object: {
    maxFieldsToAutoexpand: 10,
    excludeViewTypesFromAutoexpand: [`object`]
  },
  common: {
    expandDepth: 1
    excludeViewTypesFromAutoexpand: [`array`, `function`]
  }
}

console.js's People

Contributors

nikolayemrikh avatar rewoop avatar nakleikoff avatar kaineer avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.