{"version":3,"sources":["jsdelivr-header.js","/npm/webpack-iconfont-plugin-nodejs@1.0.18/src/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,MAAM,OAAS,QAAQ,WACjB,KAAO,QAAQ,QACf,GAAK,QAAQ,MACb,SAAW,QAAQ,cACnB,WAAa,QAAQ,gBAC3B,IAAI,UAAY,QAAQ,aACpB,OAAS,QAAQ,UAErB,OAAO,QAAU,MACb,WAAA,CAAY,EAAU,CAAC,GACnB,MAAM,EAAW,CAAC,OAAQ,cAAe,aAEzC,IAAK,IAAI,KAAK,EACV,IAAK,EAAQ,GACT,MAAM,IAAI,MAAM,YAAY,aAGpC,KAAK,QAAU,OAAO,OAAO,CAAC,EAAG,GAEjC,KAAK,QAAU,KAAK,QAAQ,KAAK,MACjC,KAAK,MAAQ,KAAK,MAAM,KAAK,KACjC,CAEA,SAAA,CAAU,EAAU,GAChB,OAAO,EAAS,MACV,EAAS,MAAM,GAAO,SAAS,KAAK,EAAS,MAAM,GAAQ,+BAC3D,EAAS,OAAO,KAAK,EAAU,EACzC,CAEA,KAAA,CAAM,GAG2B,gBAAzB,QAAQ,IAAI,eAAuD,IAAzB,QAAQ,IAAI,WAEtD,KAAK,UACL,KAAK,QAEb,CAEA,KAAA,CAAM,GACF,OAAO,OACH,SAAS,SAAS,KAAK,SAClB,MAAK,GAAU,WAAW,KAC1B,MAAK,IACF,QAAQ,IAAI,iCAAmC,EAAI,WAAW,OAAS,eAChE,KAEV,MAAM,QAAQ,MAAM,KAAK,WAC9B,GAAS,GAAY,EAAS,IAEtC,CAEA,OAAA,CAAQ,EAAU,GACd,KAAK,MAAM,EACf,CAEA,KAAA,GACI,IAAI,EAAiB,UAAU,SAAS,IAAK,KAAK,MAAM,KAAK,OACzD,EAAO,GAAG,OAAO,KAAK,QAAQ,MAGlC,GAAoB,IAAhB,EAAK,OAAc,CACnB,IAAI,EAAM,KAAK,QAAQ,EAAK,IAAI,QAAQ,QAAS,IACjD,GAAI,GAAG,WAAW,IAAQ,GAAG,SAAS,GAAK,cAMvC,YALA,GAAG,MAAM,GAAK,CAAC,EAAO,KACd,EAAS,OAAS,GAA4B,SAAvB,EAAS,OAAO,IACvC,GACJ,GAIZ,CAGA,OAAO,GAAM,MAAK,IACd,EAAM,KAAI,IACN,GAAG,MAAM,GAAM,CAAC,EAAO,KACnB,GAAe,GAClB,GACJ,GAET","file":"/npm/webpack-iconfont-plugin-nodejs@1.0.18/src/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/webpack-iconfont-plugin-nodejs@1.0.18/src/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","const nodify = require('nodeify');\r\nconst path = require('path');\r\nconst fs = require('fs');\r\nconst generate = require('./generate')\r\nconst writeFiles = require('./writeFiles')\r\nvar thro_debs = require('thro-debs')\r\nvar globby = require('globby');\r\n\r\nmodule.exports = class IconfontPlugin {\r\n    constructor(options = {}) {\r\n        const required = ['svgs', 'fontsOutput', 'cssOutput'];\r\n\r\n        for (let r of required) {\r\n            if (!options[r]) {\r\n                throw new Error(`Require '${r}' option`);\r\n            }\r\n        }\r\n        this.options = Object.assign({}, options);\r\n\r\n        this.compile = this.compile.bind(this);\r\n        this.watch = this.watch.bind(this);\r\n    }\r\n\r\n    getBinder(compiler, event) {\r\n        return compiler.hooks\r\n            ? compiler.hooks[event].tapAsync.bind(compiler.hooks[event], 'webpackIconfontPluginNodejs')\r\n            : compiler.plugin.bind(compiler, event)\r\n    }\r\n\r\n    apply(compiler) {\r\n        // 生成的字体和css会被作为源码被提交，故npm run build时不需再次生成。\r\n        // 而生成的字体和css在npm run dev时也会被webpack监听（watch），所以只需在svg变动时，重新生成字体和css即可\r\n        if (process.env.NODE_ENV === 'development' || process.env.NODE_ENV === undefined) {\r\n            //this.getBinder(compiler, 'run')(this.compile);\r\n            this.compile()\r\n            this.watch();\r\n        }\r\n    }\r\n\r\n    build(callback) {\r\n        return nodify(\r\n            generate.byGlobby(this.options)\r\n                .then(result => writeFiles(result))\r\n                .then(ret => {\r\n                    console.log('Font+css have been built with ' + ret.glyphDatas.length + ' svg-icons.');\r\n                    return ret\r\n                })\r\n                .catch(console.error.bind(console)),\r\n            error => callback && callback(error)\r\n        );\r\n    }\r\n\r\n    compile(compiler, callback) {\r\n        this.build(callback)\r\n    }\r\n\r\n    watch() {\r\n        var comileDebounce = thro_debs.debounce(800, this.build.bind(this));\r\n        var svgs = [].concat(this.options.svgs);\r\n\r\n        // 只有一个文件夹时，监视文件夹。支持新增。/ab/c/*.svg\r\n        if (svgs.length === 1) {\r\n            var dir = path.dirname(svgs[0]).replace('*.svg', '');\r\n            if (fs.existsSync(dir) && fs.statSync(dir).isDirectory()) {\r\n                fs.watch(dir, (event, filename) => {\r\n                    if (filename.length > 4 && filename.slice(-4) === '.svg') {\r\n                        comileDebounce()\r\n                    }\r\n                });\r\n                return\r\n            }\r\n        }\r\n\r\n        // 监视每个文件。/ab/c/**/*.svg\r\n        globby(svgs).then(files => {\r\n            files.map(file => {\r\n                fs.watch(file, (event, filename) => {\r\n                    comileDebounce()\r\n                })\r\n            })\r\n        })\r\n    }\r\n\r\n}\r\n"]}