# All files / web3-core/src index.js

92% Statements 23/25
87.5% Branches 7/8
80% Functions 4/5
92% Lines 23/25

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87

    1x
    1x

    1x

    4128x

    4128x

    4128x

    2835x

    4128x
    448x

    3680x
    3680x

    4124x
    4124x

    4124x

    4124x
    3758x
    199x
    195x
    195x

    4124x

    4124x

    5x
    5x

     /*
        This file is part of web3.js.

        web3.js is free software: you can redistribute it and/or modify
        it under the terms of the GNU Lesser General Public License as published by
        the Free Software Foundation, either version 3 of the License, or
        (at your option) any later version.

        web3.js is distributed in the hope that it will be useful,
        but WITHOUT ANY WARRANTY; without even the implied warranty of
        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
        GNU Lesser General Public License for more details.

        You should have received a copy of the GNU Lesser General Public License
        along with web3.js.  If not, see <http://www.gnu.org/licenses/>.
    */
    /**
     * @file index.js
     * @author Fabian Vogelsteller <fabian@ethereum.org>
     * @date 2017
     */

    "use strict";

    var requestManager = require('web3-core-requestmanager');
    var extend = require('./extend.js');

    module.exports = {
        packageInit: function (pkg, args) {
            args = Array.prototype.slice.call(args);

            Iif (!pkg) {
                throw new Error('You need to instantiate using the "new" keyword.');
            }

            // make property of pkg._provider, which can properly set providers
            Object.defineProperty(pkg, 'currentProvider', {
                get: function () {
                    return pkg._provider;
                },
                set: function (value) {
                    return pkg.setProvider(value);
                },
                enumerable: true,
                configurable: true
            });

            // inherit from web3 umbrella package
            if (args[0] && args[0]._requestManager) {
                pkg._requestManager = new requestManager.Manager(args[0].currentProvider);

            // set requestmanager on package
            } else {
                pkg._requestManager = new requestManager.Manager();
                pkg._requestManager.setProvider(args[0], args[1]);
            }

            // add givenProvider
            pkg.givenProvider = requestManager.Manager.givenProvider;
            pkg.providers = requestManager.Manager.providers;

             pkg._provider =  pkg._requestManager.provider;

            // add SETPROVIDER function (don't overwrite if already existing)
            if (!pkg.setProvider) {
                pkg.setProvider = function (provider, net) {
                    pkg._requestManager.setProvider(provider, net);
                    pkg._provider = pkg._requestManager.provider;
                    return true;
                };
            }

            // attach batch request creation
            pkg.BatchRequest = requestManager.BatchManager.bind(null, pkg._requestManager);

            // attach extend function
            pkg.extend = extend(pkg);
        },
        addProviders: function (pkg) {
            pkg.givenProvider = requestManager.Manager.givenProvider;
            pkg.providers = requestManager.Manager.providers;
        }
    };