bin/lmd_builder.js
function brakeSandboxes(ast) {
        var map = getSandboxMap(ast),
            isSandboxVariableWiped = false;

        return walker.with_walkers({
            // lookup for modules
            // looking for this pattern
            // [ 'call',
            //  [ 'function', null, [ 'sb' ], [ [Object] ] ],
            //  [ [ 'name', 'sandbox' ] ] ]
            "call" : function (content) {
                if (this[2] &&
                    this[2].length > 0 &&
                    this[2][0][0] === "name" &&
                    this[2][0][1] === "sandbox" &&
                    this[1] &&
                    this[1][0] === "function"
                    ) {
                    // 1. remove sandbox argument
                    this[2] = [];
                    // 2. break sandbox in each module
                    return breakSandbox(this, map);
                }
            },
            // wipe sandobx variable
            "var": function () {
                if (isSandboxVariableWiped) {
                    return;
                }

                for (var i = 0, c = this[1].length, varItem; i < c; i++) {
                    varItem = this[1][i];
                    if (varItem[0] === 'sandbox') {
                        isSandboxVariableWiped = true;
                        this[1].splice(i, 1);

                        return this;
                    }
                }
            }
        }, function () {
            return walker.walk(ast);
        });
    }
function brakeSandboxes(ast) {
        var map = getSandboxMap(ast),
            isSandboxVariableWiped = false;

        return walker.with_walkers({
            // lookup for modules
            // looking for this pattern
            // [ 'call',
            //  [ 'function', null, [ 'sb' ], [ [Object] ] ],
            //  [ [ 'name', 'sandbox' ] ] ]
            "call" : function (content) {
                if (this[2] &&
                    this[2].length > 0 &&
                    this[2][0][0] === "name" &&
                    this[2][0][1] === "sandbox" &&
                    this[1] &&
                    this[1][0] === "function"
                    ) {
                    // 1. remove sandbox argument
                    this[2] = [];
                    // 2. break sandbox in each module
                    return breakSandbox(this, map);
                }
            },
            // wipe sandobx variable
            "var": function () {
                if (isSandboxVariableWiped) {
                    return;
                }

                for (var i = 0, c = this[1].length, varItem; i < c; i++) {
                    varItem = this[1][i];
                    if (varItem[0] === 'sandbox') {
                        isSandboxVariableWiped = true;
                        this[1].splice(i, 1);

                        return this;
                    }
                }
            }
        }, function () {
            return walker.walk(ast);
        });
    }
function brakeSandboxes ( ast ) { var map = getSandboxMap ( ast ) , isSandboxVariableWiped = false ; return walker . with_walkers ( { // lookup for modules // looking for this pattern // [ 'call', //  [ 'function', null, [ 'sb' ], [ [Object] ] ], //  [ [ 'name', 'sandbox' ] ] ] "call" : function ( content ) { if ( this [ 2 ] && this [ 2 ] . length > 0 && this [ 2 ] [ 0 ] [ 0 ] === "name" && this [ 2 ] [ 0 ] [ 1 ] === "sandbox" && this [ 1 ] && this [ 1 ] [ 0 ] === "function" ) { // 1. remove sandbox argument this [ 2 ] = [ ] ; // 2. break sandbox in each module return breakSandbox ( this , map ) ; } } , // wipe sandobx variable "var" : function ( ) { if ( isSandboxVariableWiped ) { return ; } for ( var i = 0 , c = this [ 1 ] . length , varItem ; i < c ; i ++ ) { varItem = this [ 1 ] [ i ] ; if ( varItem [ 0 ] === 'sandbox' ) { isSandboxVariableWiped = true ; this [ 1 ] . splice ( i , 1 ) ; return this ; } } } } , function ( ) { return walker . walk ( ast ) ; } ) ; }
Brake sandbox: Using UglifyJS AST and sandbox variable in lmd.js file
replace all sb.smth with actual value of sandbox[smth]
than delete sandbox variable from lmd.js and all modules

@param {Object} ast

@returns {Object} toplevel AST
Brake sandbox : Using UglifyJS AST and sandbox variable in lmd . js file replace all sb . smth with actual value of sandbox [ smth ] than delete sandbox variable from lmd . js and all modules