/**
 * Minified by jsDelivr using Terser v5.39.0.
 * Original file: /npm/@putout/plugin-remove-nested-blocks@9.1.0/lib/remove-nested-blocks.js
 *
 * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files
 */
import{types,operator}from"putout";const{isReturnStatement:isReturnStatement,isExportNamedDeclaration:isExportNamedDeclaration,isIdentifier:isIdentifier}=types,{replaceWithMultiple:replaceWithMultiple}=operator,{keys:keys}=Object;export const report=()=>"Avoid nested blocks";export const fix=t=>{replaceWithMultiple(t,t.node.body)};export const include=()=>["BlockStatement"];export const filter=t=>{const e=t.getPrevSibling();if(isExportNamedDeclaration(e))return!1;if(isReturnWithoutArg(t))return!1;if(isImportAssert(t))return!1;const{parentPath:r}=t,{bindings:n}=t.scope,i=r.isSwitchCase(),s=keys(n).length;return!(!i||s)||!i&&(!(!r.isBlockStatement()&&!r.isProgram())&&(!isIntersect(r,n)||1===t.container.length))};function isReturnWithoutArg(t){const e=t.getPrevSibling();return!!isReturnStatement(e)&&!e.node.argument}const isIntersect=(t,e)=>{for(const r of keys(e))if(t.scope.hasBinding(r))return!0;return!1};function isImportAssert(t){const e=t.getPrevSibling();return!!e.isExpressionStatement()&&isIdentifier(e.node.expression,{name:"assert"})}
//# sourceMappingURL=/sm/06862d9a34dcf5171e74c9ed4bfac51fd48a1600b32961e9c9081040a77142cd.map