{"version":3,"sources":["jsdelivr-header.js","/npm/@putout/plugin-apply-starts-with@1.1.0/lib/apply-starts-with.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,aAEA,MAAM,SAAC,SAAQ,MAAE,OAAS,QAAQ,WAC5B,gBACF,gBAAe,gBACf,gBAAe,oBACf,qBACA,OAEE,QAAC,SAAW,SAYlB,SAAS,YAAW,IAAC,GAAM,GACvB,MAAM,KAAC,GAAQ,EACT,EAAU,EAAK,MAAM,iBAAiB,GAE5C,IAAK,EACD,OAAO,EAEX,MAAM,EAAc,EAAQ,KAAK,KAEjC,OAAI,oBAAoB,GACb,YAAY,EAAK,GAExB,gBAAgB,GACT,YAAY,EAAK,KAExB,gBAAgB,EAAY,KACrB,YAAY,EAAK,EAAY,GAG5C,CAEA,SAAS,YAAY,EAAM,GACvB,MAAM,KAAC,EAAI,MAAE,GAAS,EAEtB,QAAK,QAAQ,EAAM,IAGZ,gBAAgB,EAC3B,CAEA,SAAS,YAAY,EAAM,GACvB,IAAK,MAAM,KAAQ,EAAO,WACtB,GAAK,oBAAoB,EAAK,OAG9B,OAAO,YAAY,EAAM,EAAK,OAGlC,OAAO,CACX,CAjDA,OAAO,QAAQ,OAAS,IAAM,8CAE9B,OAAO,QAAQ,MAAQ,KAAM,CACzB,oBAAqB,aAGzB,OAAO,QAAQ,QAAU,KAAM,CAC3B,oBAAqB","file":"/npm/@putout/plugin-apply-starts-with@1.1.0/lib/apply-starts-with.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@putout/plugin-apply-starts-with@1.1.0/lib/apply-starts-with.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\n\nconst {operator, types} = require('putout');\nconst {\n    isStringLiteral,\n    isObjectPattern,\n    isAssignmentPattern,\n} = types;\n\nconst {compare} = operator;\n\nmodule.exports.report = () => `Use '.startsWith()' instead of '.indexOf()'`;\n\nmodule.exports.match = () => ({\n    '!__a.indexOf(__b)': checkIndex,\n});\n\nmodule.exports.replace = () => ({\n    '!__a.indexOf(__b)': '__a.startsWith(__b)',\n});\n\nfunction checkIndex({__a}, path) {\n    const {name} = __a;\n    const binding = path.scope.getAllBindings()[name];\n    \n    if (!binding)\n        return false;\n    \n    const bindingNode = binding.path.node;\n    \n    if (isAssignmentPattern(bindingNode))\n        return checkAssign(__a, bindingNode);\n    \n    if (isObjectPattern(bindingNode))\n        return checkObject(__a, bindingNode);\n    \n    if (isObjectPattern(bindingNode.id))\n        return checkObject(__a, bindingNode.id);\n    \n    return false;\n}\n\nfunction checkAssign(node, assign) {\n    const {left, right} = assign;\n    \n    if (!compare(node, left))\n        return false;\n    \n    return isStringLiteral(right);\n}\n\nfunction checkObject(node, object) {\n    for (const prop of object.properties) {\n        if (!isAssignmentPattern(prop.value))\n            continue;\n        \n        return checkAssign(node, prop.value);\n    }\n    \n    return false;\n}\n"]}