{"version":3,"sources":["jsdelivr-header.js","/npm/files-tree@1.0.8/index.js"],"names":[],"mappings":"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","file":"/npm/files-tree@1.0.8/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/files-tree@1.0.8/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","/**\r\n * Created by chenqifeng on 2017/2/28.\r\n */\r\n\r\nvar fs = require('fs');\r\nvar md5Ins = require('md5');\r\n\r\nfunction paramToArray(param) {\r\n    if (Array.isArray(param)) {\r\n        return param\r\n    } else if (typeof param === 'string') {\r\n        return [param]\r\n    } else {\r\n        return [];\r\n    }\r\n}\r\n\r\n/**\r\n * 文件路径下的所有文件（包括子文件夹）\r\n * @param path 文件路径\r\n * @param options\r\n * @returns {Array}\r\n */\r\nexports.allFile = function allFile(path, options) {\r\n    path = path || './';\r\n    options = options || {};\r\n    var\r\n        files,\r\n        list = [],\r\n        state,\r\n        p,\r\n        item,\r\n        ignore = paramToArray(options.ignore),\r\n        suffix = paramToArray(options.suffix),\r\n        fileContent = options.fileContent || false,\r\n        md5 = options.md5;\r\n    try {\r\n        files = fs.readdirSync(path)\r\n    } catch (e) {\r\n        files = [];\r\n        console.log('#----------------------------------------------------#\\n');\r\n        console.error('=====error path:=====> ' + path + '\\n');\r\n        console.log('#----------------------------------------------------#\\n');\r\n    }\r\n    files.forEach(function (i) {\r\n        p = path + (/\\/$/.test(path) ? '' : '/') + i;\r\n        state = fs.statSync(p);\r\n        if (ignore.indexOf(i) === -1 && (!suffix.length || state.isDirectory() || (/\\./.test(i) && suffix.indexOf(i.replace(/.*\\.(.*)$/,'$1')) >= 0))) {\r\n            item = {\r\n                path: p,\r\n                name: i,\r\n                size: state.size,\r\n                directory: state.isDirectory(),\r\n                file: state.isFile()\r\n            };\r\n            if(item.file && (md5 || fileContent)){\r\n\r\n                var content = fs.readFileSync(p);\r\n                md5 && (item.md5 = md5Ins(content));\r\n                fileContent && (item.content = content.toString());\r\n            }\r\n            if (item.file) {\r\n                list.push(item);\r\n            } else if (item.directory) {\r\n                list = list.concat(allFile(p,{fileContent:fileContent,md5:md5,ignore:ignore,suffix:suffix}));\r\n            }\r\n        }\r\n    });\r\n    return list;\r\n};\r\n\r\n\r\n/**\r\n * 文件路径下的所有文件树\r\n * @param path 文件路径\r\n * @param options\r\n * @returns {Array}\r\n */\r\nexports.tree = function tree(path, options) {\r\n    path = path || './';\r\n    options = options || {};\r\n    var files,\r\n        list = [],\r\n        state,\r\n        p,\r\n        item,\r\n        ignore = paramToArray(options.ignore),\r\n        suffix = paramToArray(options.suffix),\r\n        md5 = options.md5;\r\n    try {\r\n        files = fs.readdirSync(path)\r\n    } catch (e) {\r\n        files = [];\r\n        console.log('#----------------------------------------------------#\\n');\r\n        console.error('=====error path:=====> ' + path + '\\n');\r\n        console.log('#----------------------------------------------------#\\n');\r\n    }\r\n    files.forEach(function (i) {\r\n        p = path + (/\\/$/.test(path) ? '' : '/') + i;\r\n        state = fs.statSync(p);\r\n        if (ignore.indexOf(i) === -1 && (!suffix.length || state.isDirectory() || (/\\./.test(i) && suffix.indexOf(i.replace(/.*\\.(.*)$/,'$1')) >= 0))) {\r\n            item = {\r\n                path: p,\r\n                name: i,\r\n                size: state.size,\r\n                directory: state.isDirectory(),\r\n                file: state.isFile()\r\n            };\r\n            if(md5 && item.file){\r\n                item.md5 = md5Ins(fs.readFileSync(p));\r\n            }\r\n            list.push(item);\r\n            if (item.directory) {\r\n                item.list = tree(p,{ignore:ignore,suffix:suffix});\r\n            }\r\n        }\r\n    });\r\n    return list;\r\n};\r\n\r\n\r\n/**\r\n * 文件路径下的文件队列\r\n * @param path\r\n * @param options\r\n * @returns {Array}\r\n */\r\nexports.list = function (path, options) {\r\n    path = path || '';\r\n    options = options || {};\r\n    var\r\n        files,\r\n        list = [],\r\n        state,\r\n        item,\r\n        p,\r\n        ignore = paramToArray(options.ignore),\r\n        suffix = paramToArray(options.suffix),\r\n        md5 = options.md5;\r\n    try {\r\n        files = fs.readdirSync(path)\r\n    } catch (e) {\r\n        files = [];\r\n        console.log('#----------------------------------------------------#\\n');\r\n        console.error('=====error path:=====> ' + path + '\\n');\r\n        console.log('#----------------------------------------------------#\\n');\r\n    }\r\n    files.forEach(function (i) {\r\n        p = path + (/\\/$/.test(path) ? '' : '/') + i;\r\n        state = fs.statSync(p);\r\n        if (ignore.indexOf(i) === -1 && (!suffix.length || state.isDirectory() || (/\\./.test(i) && suffix.indexOf(i.replace(/.*\\.(.*)$/,'$1')) >= 0))) {\r\n            item = {\r\n                path: p,\r\n                name: i,\r\n                size: state.size,\r\n                directory: state.isDirectory(),\r\n                file: state.isFile()\r\n            };\r\n            if(md5 && item.file){\r\n                item.md5 = md5Ins(fs.readFileSync(p));\r\n            }\r\n            list.push(item);\r\n        }\r\n    });\r\n    return list;\r\n};\r\n"]}