wrap-iife 
You can immediately invoke function expressions, but not function declarations. A common technique to create an immediately-invoked function expression (IIFE) is to wrap a function declaration in parentheses. The opening parentheses causes the contained function to be parsed as an expression, rather than a declaration.
// function expression could be unwrapped
var x = function () { return { y: 1 };}();
// function declaration must be wrapped
function () { /* side effects */ }(); // SyntaxErrorRule Details 
This rule requires all immediately-invoked function expressions to be wrapped in parentheses.
Options 
This rule has two options, a string option and an object option.
String option:
- "outside"enforces always wrapping the call expression. The default is- "outside".
- "inside"enforces always wrapping the function expression.
- "any"enforces always wrapping, but allows either style.
Object option:
- "functionPrototypeMethods": trueadditionally enforces wrapping function expressions invoked using- .calland- .apply. The default is- false.
outside 
Examples of incorrect code for the default "outside" option:
/*eslint @stylistic/wrap-iife: ["error", "outside"]*/
var x = function () { return { y: 1 };}(); // unwrapped
var x = (function () { return { y: 1 };})(); // wrapped function expressionExamples of correct code for the default "outside" option:
/*eslint @stylistic/wrap-iife: ["error", "outside"]*/
var x = (function () { return { y: 1 };}()); // wrapped call expressioninside 
Examples of incorrect code for the "inside" option:
/*eslint @stylistic/wrap-iife: ["error", "inside"]*/
var x = function () { return { y: 1 };}(); // unwrapped
var x = (function () { return { y: 1 };}()); // wrapped call expressionExamples of correct code for the "inside" option:
/*eslint @stylistic/wrap-iife: ["error", "inside"]*/
var x = (function () { return { y: 1 };})(); // wrapped function expressionany 
Examples of incorrect code for the "any" option:
/*eslint @stylistic/wrap-iife: ["error", "any"]*/
var x = function () { return { y: 1 };}(); // unwrappedExamples of correct code for the "any" option:
/*eslint @stylistic/wrap-iife: ["error", "any"]*/
var x = (function () { return { y: 1 };}()); // wrapped call expression
var x = (function () { return { y: 1 };})(); // wrapped function expressionfunctionPrototypeMethods 
Examples of incorrect code for this rule with the "inside", { "functionPrototypeMethods": true } options:
/* eslint @stylistic/wrap-iife: [2, "inside", { functionPrototypeMethods: true }] */
var x = function(){ foo(); }()
var x = (function(){ foo(); }())
var x = function(){ foo(); }.call(bar)
var x = (function(){ foo(); }.call(bar))Examples of correct code for this rule with the "inside", { "functionPrototypeMethods": true } options:
/* eslint @stylistic/wrap-iife: [2, "inside", { functionPrototypeMethods: true }] */
var x = (function(){ foo(); })()
var x = (function(){ foo(); }).call(bar)