function getModuleType (code) {
    var ast;

    if (typeof code === "object") {
        ast = code;
    } else {
        try {
            JSON.parse(code);
            return "json";
        } catch (e) {}

        try {
            ast = parser.parse(code);
        } catch (e) {
            return "string";
        }
    }

    // Empty module
    if (ast.length === 2 && !ast[1].length && ast[0] === 'toplevel') return "plain";

    // ["toplevel",[["defun","depA",["require"],[]]]]
    if (ast && ast.length === 2 &&
        ast[1] && ast[1].length === 1 &&
        ast[1][0][0] === "defun"
        ) {
        return "fd";
    }

    // ["toplevel",[["stat",["function",null,["require"],[]]]]]
    if (ast && ast.length === 2 &&
        ast[1] && ast[1].length === 1 &&
        ast[1][0][0] === "stat" &&
        ast[1][0][1] &&
        ast[1][0][1][0] === "function"
        ) {
        return "fe";
    }

    if (ast) {
        var isAmd = ast[1].every(function (ast) {
            return ast[0] === "stat" &&
                ast[1][0] === "call" &&
                ast[1][1][0] === "name" &&
                ast[1][1][1] === "define";
        });

        if (isAmd) {
            return "amd";
        }
    }

    return "plain";
}
function getModuleType (code) {
    var ast;

    if (typeof code === "object") {
        ast = code;
    } else {
        try {
            JSON.parse(code);
            return "json";
        } catch (e) {}

        try {
            ast = parser.parse(code);
        } catch (e) {
            return "string";
        }
    }

    // Empty module
    if (ast.length === 2 && !ast[1].length && ast[0] === 'toplevel') return "plain";

    // ["toplevel",[["defun","depA",["require"],[]]]]
    if (ast && ast.length === 2 &&
        ast[1] && ast[1].length === 1 &&
        ast[1][0][0] === "defun"
        ) {
        return "fd";
    }

    // ["toplevel",[["stat",["function",null,["require"],[]]]]]
    if (ast && ast.length === 2 &&
        ast[1] && ast[1].length === 1 &&
        ast[1][0][0] === "stat" &&
        ast[1][0][1] &&
        ast[1][0][1][0] === "function"
        ) {
        return "fe";
    }

    if (ast) {
        var isAmd = ast[1].every(function (ast) {
            return ast[0] === "stat" &&
                ast[1][0] === "call" &&
                ast[1][1][0] === "name" &&
                ast[1][1][1] === "define";
        });

        if (isAmd) {
            return "amd";
        }
    }

    return "plain";
}
function getModuleType ( code ) { var ast ; if ( typeof code === "object" ) { ast = code ; } else { try { JSON . parse ( code ) ; return "json" ; } catch ( e ) { } try { ast = parser . parse ( code ) ; } catch ( e ) { return "string" ; } } // Empty module if ( ast . length === 2 && ! ast [ 1 ] . length && ast [ 0 ] === 'toplevel' ) return "plain" ; // ["toplevel",[["defun","depA",["require"],[]]]] if ( ast && ast . length === 2 && ast [ 1 ] && ast [ 1 ] . length === 1 && ast [ 1 ] [ 0 ] [ 0 ] === "defun" ) { return "fd" ; } // ["toplevel",[["stat",["function",null,["require"],[]]]]] if ( ast && ast . length === 2 && ast [ 1 ] && ast [ 1 ] . length === 1 && ast [ 1 ] [ 0 ] [ 0 ] === "stat" && ast [ 1 ] [ 0 ] [ 1 ] && ast [ 1 ] [ 0 ] [ 1 ] [ 0 ] === "function" ) { return "fe" ; } if ( ast ) { var isAmd = ast [ 1 ] . every ( function ( ast ) { return ast [ 0 ] === "stat" && ast [ 1 ] [ 0 ] === "call" && ast [ 1 ] [ 1 ] [ 0 ] === "name" && ast [ 1 ] [ 1 ] [ 1 ] === "define" ; } ) ; if ( isAmd ) { return "amd" ; } } return "plain" ; }
Checks module type

@param {Object|String} code module AST or module Content

@return {String} df|fe|plain|amd
Checks module type