# all files / red/runtime/nodes/registry/ index.js

92.59% Statements 25/27
100% Branches 2/2
85.71% Functions 6/7
92.59% Lines 25/27

    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
    88

    1×
    1×
    1×

    1×
    1×
    1×
    1×

    1×

    1×
    12×
    12×
    12×
    12×

    1×

    1×
    2×
    1×

    1×
    3×
    2×
    2×
    1×
    1×

    1×

    1×

     /**
     * Copyright JS Foundation and other contributors, http://js.foundation
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     * http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     **/

    var when = require("when");
    var fs = require("fs");
    var path = require("path");

    var events = require("../../events");
    var registry = require("./registry");
    var loader = require("./loader");
    var installer = require("./installer");

    var settings;

    function init(runtime) {
        settings = runtime.settings;
        installer.init(runtime.settings);
        loader.init(runtime);
        registry.init(settings,loader);
    }

    function load() {
        registry.load();
        return installer.checkPrereq().then(loader.load);
    }

    function addModule(module) {
        return loader.addModule(module).then(function() {
            return registry.getModuleInfo(module);
        });
    }

    function enableNodeSet(typeOrId) {
        return registry.enableNodeSet(typeOrId).then(function() {
            var nodeSet = registry.getNodeInfo(typeOrId);
            if (!nodeSet.loaded) {
                return loader.loadNodeSet(registry.getFullNodeInfo(typeOrId)).then(function() {
                    return registry.getNodeInfo(typeOrId);
                });
            }
            return when.resolve(nodeSet);
        });
    }

    module.exports = {
        init:init,
        load:load,
        clear: registry.clear,
        registerType: registry.registerNodeConstructor,

        get: registry.getNodeConstructor,
        getNodeInfo: registry.getNodeInfo,
        getNodeList: registry.getNodeList,

        getModuleInfo: registry.getModuleInfo,
        getModuleList: registry.getModuleList,

        getNodeConfigs: registry.getAllNodeConfigs,
        getNodeConfig: registry.getNodeConfig,
        getNodeIconPath: registry.getNodeIconPath,

        enableNode: enableNodeSet,
        disableNode: registry.disableNodeSet,

        addModule: addModule,
        removeModule: registry.removeModule,

        installModule: installer.installModule,
        uninstallModule: installer.uninstallModule,

        cleanModuleList: registry.cleanModuleList,

        paletteEditorEnabled: installer.paletteEditorEnabled
    };