UNPKG

3.71 kBJavaScriptView Raw
1let fs = require("fs-extra");
2let nodepath = require("path");
3let explore = require("./explore.js");
4var mimeTypes = require("mime-types");
5
6let checkFileType = url => {
7 return new Promise((resolve, reject) => {
8 fs.stat(url, (err, stats) => {
9 if (err) {
10 reject(err);
11 return;
12 }
13 let mime = mimeTypes.lookup(url);
14
15 if (stats.isDirectory()) {
16 resolve({ type: "dir", path: url });
17 } else if (stats.isFile()) {
18 resolve({
19 type: "file",
20 path: url,
21 size: stats.size,
22 mime
23 });
24 } else {
25 resolve({
26 type: "other",
27 path: url,
28 size: stats.size,
29 mime
30 });
31 }
32 });
33 });
34};
35
36let readDir = path => {
37 return new Promise((resolve, reject) => {
38 let out = [];
39 fs.readdir(path, (err, dirs) => {
40 if (err) {
41 reject(err);
42 return;
43 }
44 dirs.forEach((ph, ind) => {
45 out.push(nodepath.join(path, ph));
46 });
47 resolve(out);
48 });
49 });
50};
51
52let taskObject = (obj, { filter, callback, fail, exclude, include }) => {
53 return new Promise((resolve, reject) => {
54 let exp = new explore();
55 exp
56 .setCallback(() => {
57 if (typeof callback === "function") {
58 callback();
59 }
60 })
61 .setError(err => {
62 if (typeof fail === "function") {
63 fail(err);
64 }
65 })
66 .parse((val, lastVal) => {
67 //lastVal是解析过的val,resolve数组就继续下一次的运行,否则开始回溯,val为当前的内容,可以为字符串等等。
68 return new Promise(function(resolve, reject) {
69 // checkFileType(val)
70 // .then(data => {
71 // let { type, path, size, mime } = data;
72 // if (url !== path) {
73 // if (Array.isArray(exclude)) {
74 // for (let val of exclude) {
75 // if (typeof val === "string" && path.indexOf(val) !== -1) {
76 // resolve();
77 // return;
78 // } else if (typeof val === "object" && val.test(path)) {
79 // //not t reg,after
80 // resolve();
81 // return;
82 // }
83 // }
84 // }
85 // if (Array.isArray(include)) {
86 // for (let val of include) {
87 // if (typeof val === "string" && path.indexOf(val) === -1) {
88 // //empty and reture
89 // resolve();
90 // return;
91 // } else if (typeof val === "object" && !val.test(path)) {
92 // resolve();
93 // return;
94 // }
95 // }
96 // }
97 // }
98 // if (typeof filter === "function") {
99 // filter(data);
100 // }
101 // if (type === "dir") {
102 // readDir(path)
103 // .then(arr => {
104 // resolve(arr);
105 // })
106 // .catch(err => {
107 // console.log(err);
108 // resolve();
109 // });
110 // } else {
111 // resolve();
112 // }
113 // })
114 // .catch(err => {
115 // resolve();
116 // });
117 });
118 })
119 .run({ input: obj });
120 });
121};
122
123module.exports = taskObject;
124
125// fsReadFiles(nodepath.join(__dirname,'../routes'));