fkg 1.1.1 → 1.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/fkg +2 -0
- package/index.js +3 -0
- package/lib/client/index.js +4 -0
- package/lib/comm.js +18 -0
- package/lib/json/command.json +1 -0
- package/lib/order/add.js +67 -0
- package/lib/order/init.js +52 -0
- package/lib/order/user.js +15 -0
- package/lib/utils/input.js +35 -0
- package/lib/utils/logs.js +43 -0
- package/package.json +31 -14
- package/README.md +0 -67
- package/lib/index.js +0 -92
- package/lib/utils/fs.js +0 -146
- package/lib/utils/type.js +0 -45
package/bin/fkg
ADDED
package/index.js
ADDED
package/lib/comm.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
fkgConmm();
|
|
3
|
+
async function fkgConmm() {
|
|
4
|
+
const arg = process.argv;
|
|
5
|
+
const {version} = require('../package.json');
|
|
6
|
+
if (arg.length < 3) console.log(version);
|
|
7
|
+
if (arg.length > 2) {
|
|
8
|
+
const arr = require('./json/command.json');
|
|
9
|
+
const name = arg[2].toLowerCase(); // 字母转小写
|
|
10
|
+
if (name=='-v') {
|
|
11
|
+
console.log(version);
|
|
12
|
+
} else if(arr.includes(name)){
|
|
13
|
+
await require('./order/'+name)(arg.slice(3));
|
|
14
|
+
}else {
|
|
15
|
+
console.log(`Command '${name}' doesn't exist!`);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
["init","user","run"]
|
package/lib/order/add.js
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
const {md5} = require('rrid');
|
|
3
|
+
const oss = require('oss-sdk');
|
|
4
|
+
const logs = require('../utils/logs');
|
|
5
|
+
const input = require('../utils/input');
|
|
6
|
+
module.exports = async(arg)=>{
|
|
7
|
+
let code;
|
|
8
|
+
if(arg[0]) {
|
|
9
|
+
code = arg[0];
|
|
10
|
+
}else{
|
|
11
|
+
const arr = await input('Enter security code:');
|
|
12
|
+
if(arr.length===0){
|
|
13
|
+
logs.r('Unknown error');
|
|
14
|
+
return;
|
|
15
|
+
}else{
|
|
16
|
+
code = arr[0];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
const file = oss.file(process.cwd());
|
|
20
|
+
let data = await file.get('config');
|
|
21
|
+
if(data===null){
|
|
22
|
+
logs.r('Configuration file missing')
|
|
23
|
+
}else{
|
|
24
|
+
try{
|
|
25
|
+
data = JSON.parse(data);
|
|
26
|
+
}catch(err){
|
|
27
|
+
logs.r(err);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if(!data.addTime||!data.key) {
|
|
31
|
+
logs.r('bad configuration file')
|
|
32
|
+
}else{
|
|
33
|
+
try{
|
|
34
|
+
const keys = md5(data.addTime+code+data.addTime);
|
|
35
|
+
if(keys===data.key){
|
|
36
|
+
// Add administrator
|
|
37
|
+
const user = await input('Account Name:','Account Password:');
|
|
38
|
+
if(!user[0]||!user[1]){
|
|
39
|
+
logs.g('Account password cannot be empty');
|
|
40
|
+
}else{
|
|
41
|
+
const dirs = oss.dir(process.cwd());
|
|
42
|
+
if(await dirs.ok('account')){
|
|
43
|
+
const info = {};
|
|
44
|
+
info.database = [];
|
|
45
|
+
info.addTime = Date.now();
|
|
46
|
+
data.key = md5(info.addTime+user[0]+user[1]+data.addTime);
|
|
47
|
+
const addRes = await file.add('account/'+md5(user[0]),JSON.stringify(info));
|
|
48
|
+
if(addRes){
|
|
49
|
+
logs.g('Added successfully');
|
|
50
|
+
logs.y('Please remember your account password');
|
|
51
|
+
}else{
|
|
52
|
+
logs.r('Failed to add');
|
|
53
|
+
logs.r('Unknown error');
|
|
54
|
+
}
|
|
55
|
+
}else{
|
|
56
|
+
logs.r('Important folder lost');
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}else{
|
|
60
|
+
logs.r('Wrong security code');
|
|
61
|
+
}
|
|
62
|
+
}catch(err){
|
|
63
|
+
logs.r(err);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
const {md5} = require('rrid');
|
|
3
|
+
const oss = require('oss-sdk');
|
|
4
|
+
const logs = require('../utils/logs');
|
|
5
|
+
module.exports = async(arg)=>{
|
|
6
|
+
const dbPath = process.cwd();
|
|
7
|
+
const dbDir = oss.dir(dbPath);
|
|
8
|
+
if(await dbDir.ok()){
|
|
9
|
+
const list = await dbDir.list();
|
|
10
|
+
if(list.length===0){
|
|
11
|
+
// Initialization started
|
|
12
|
+
logs.g('The security code must consist of no less than 8 strings');
|
|
13
|
+
const input = require('../utils/input')
|
|
14
|
+
const arr = await input('ecurity code :','Confirm code :');
|
|
15
|
+
if(arr.length===2){
|
|
16
|
+
if(arr[0].length<8){
|
|
17
|
+
logs.r('The security code contains less than 8 strings');
|
|
18
|
+
}else{
|
|
19
|
+
if(arr[0]===arr[1]){
|
|
20
|
+
const addres = dbDir.add('cache','account','database');
|
|
21
|
+
if(addres){
|
|
22
|
+
// Configuration file creation
|
|
23
|
+
const data = {};
|
|
24
|
+
data.addTime = Date.now();
|
|
25
|
+
data.key = md5(data.addTime+arr[0]+data.addTime);
|
|
26
|
+
const file = oss.file(dbPath);
|
|
27
|
+
const fileRes = await file.add('config',JSON.stringify(data));
|
|
28
|
+
if(fileRes){
|
|
29
|
+
logs.g('Initialization completed');
|
|
30
|
+
logs.g('Remember the security code');
|
|
31
|
+
}else{
|
|
32
|
+
logs.g('Unknown error');
|
|
33
|
+
await dbDir.clear();
|
|
34
|
+
}
|
|
35
|
+
}else{
|
|
36
|
+
logs.r('Failed to create file');
|
|
37
|
+
await dbDir.clear();
|
|
38
|
+
}
|
|
39
|
+
}else{
|
|
40
|
+
logs.r('Inconsistent content input')
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}else{
|
|
44
|
+
logs.r('Unknown error')
|
|
45
|
+
}
|
|
46
|
+
}else{
|
|
47
|
+
logs.r('Not an empty directory');
|
|
48
|
+
}
|
|
49
|
+
}else{
|
|
50
|
+
logs.r('Directory does not exist');
|
|
51
|
+
}
|
|
52
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
const logs = require('../utils/logs');
|
|
3
|
+
module.exports = (arg)=>{
|
|
4
|
+
if(arg[0]===undefined) {
|
|
5
|
+
logs.r('Please enter parameters');
|
|
6
|
+
}else if(arg[0]==='add'){
|
|
7
|
+
//Add Account
|
|
8
|
+
require('./add')(arg.slice(1))
|
|
9
|
+
}else if(arg[0]==='dele') {
|
|
10
|
+
//Dele Account
|
|
11
|
+
}else if(arg[0]==='edit') {
|
|
12
|
+
//Edit Account
|
|
13
|
+
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
const logs = require('./logs')
|
|
2
|
+
const readline = require('readline');
|
|
3
|
+
module.exports = (...arg) => {
|
|
4
|
+
let arr = [];
|
|
5
|
+
return new Promise(async (resolve) => {
|
|
6
|
+
if (arg.length > 0) {
|
|
7
|
+
try{
|
|
8
|
+
const ps = readline.createInterface({
|
|
9
|
+
input: process.stdin, // 输入源:终端标准输入
|
|
10
|
+
output: process.stdout // 输出源:终端标准输出
|
|
11
|
+
});
|
|
12
|
+
process.stdin.setEncoding('utf8');
|
|
13
|
+
const inputs = (text)=>{
|
|
14
|
+
return new Promise((resolves) => {
|
|
15
|
+
ps.question('\033[33m'+text, (answer) => {
|
|
16
|
+
console.log('\033[0m');
|
|
17
|
+
resolves(answer);
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
for (let i = 0; i < arg.length; i++) {
|
|
22
|
+
arr.push(await inputs(arg[i]));
|
|
23
|
+
if(arg.length-1===i) ps.close();
|
|
24
|
+
}
|
|
25
|
+
resolve(arr);
|
|
26
|
+
}catch(err){
|
|
27
|
+
logs.r(err);
|
|
28
|
+
resolve(arr);
|
|
29
|
+
}
|
|
30
|
+
} else {
|
|
31
|
+
resolve(arr);
|
|
32
|
+
logs.r('Please enter parameters');
|
|
33
|
+
}
|
|
34
|
+
})
|
|
35
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
const logs = (d)=> {console.log(d);}
|
|
2
|
+
module.exports = {
|
|
3
|
+
b(...d){
|
|
4
|
+
for (var i = 0; i < d.length; i++) {
|
|
5
|
+
logs('\033[30m'+d[i]+'\033[0m');
|
|
6
|
+
}
|
|
7
|
+
},
|
|
8
|
+
r(...d){
|
|
9
|
+
for (var i = 0; i < d.length; i++) {
|
|
10
|
+
logs('\033[31m'+d[i]+'\033[0m');
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
g(...d){
|
|
14
|
+
for (var i = 0; i < d.length; i++) {
|
|
15
|
+
logs('\033[32m'+d[i]+'\033[0m');
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
y(...d){
|
|
19
|
+
for (var i = 0; i < d.length; i++) {
|
|
20
|
+
logs('\033[33m'+d[i]+'\033[0m');
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
blue(...d){
|
|
24
|
+
for (var i = 0; i < d.length; i++) {
|
|
25
|
+
logs('\033[34m'+d[i]+'\033[0m');
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
p(...d){
|
|
29
|
+
for (var i = 0; i < d.length; i++) {
|
|
30
|
+
logs('\033[35m'+d[i]+'\033[0m');
|
|
31
|
+
}
|
|
32
|
+
},
|
|
33
|
+
sblue(...d){
|
|
34
|
+
for (var i = 0; i < d.length; i++) {
|
|
35
|
+
logs('\033[36m'+d[i]+'\033[0m');
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
w(...d){
|
|
39
|
+
for (var i = 0; i < d.length; i++) {
|
|
40
|
+
logs('\033[37m'+d[i]+'\033[0m');
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
package/package.json
CHANGED
|
@@ -1,15 +1,32 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
2
|
+
"name": "fkg",
|
|
3
|
+
"version": "1.1.3",
|
|
4
|
+
"description": "Read and set memory key!",
|
|
5
|
+
"main": "lib/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"fkg": "bin/fkg"
|
|
8
|
+
},
|
|
9
|
+
"keywords": [
|
|
10
|
+
"db",
|
|
11
|
+
"key",
|
|
12
|
+
"disk",
|
|
13
|
+
"data",
|
|
14
|
+
"cache",
|
|
15
|
+
"database"
|
|
16
|
+
],
|
|
17
|
+
"author": "weduu",
|
|
18
|
+
"license": "MIT",
|
|
19
|
+
"engines": {
|
|
20
|
+
"node": ">=v22.22.1"
|
|
21
|
+
},
|
|
22
|
+
"files": [
|
|
23
|
+
"lib/",
|
|
24
|
+
"bin/",
|
|
25
|
+
"index.js",
|
|
26
|
+
"README.md"
|
|
27
|
+
],
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"oss-sdk": "^1.0.3",
|
|
30
|
+
"rrid": "^1.0.6"
|
|
31
|
+
}
|
|
32
|
+
}
|
package/README.md
DELETED
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
## Quickstart
|
|
2
|
-
====================
|
|
3
|
-
|
|
4
|
-
### To Create cache service...
|
|
5
|
-
======================================
|
|
6
|
-
|
|
7
|
-
**1. Install**
|
|
8
|
-
|
|
9
|
-
```shell
|
|
10
|
-
npm install fkg
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
**2. Create server**
|
|
15
|
-
|
|
16
|
-
```javascript
|
|
17
|
-
const fkg = require('fkg');
|
|
18
|
-
const dir = 'C:\\work'; //数据储存位置,为空时不进行本地存储
|
|
19
|
-
const key = 'f31d0353cdf'; //key不为空时,数据会被加密储存
|
|
20
|
-
// const db = new fkg();
|
|
21
|
-
// const db = new fkg(dir);
|
|
22
|
-
const db = new fkg({dir,key});
|
|
23
|
-
const user = db.io('user');
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
**3. Add user data**
|
|
27
|
-
|
|
28
|
-
```javascript
|
|
29
|
-
uset.add('id_1',{account:"wabngwu",password:"******"}); //数据储存在本地
|
|
30
|
-
user.set('id_2',{account:"zhangsan",password:"******"}); //数据储存在缓存
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
**5. Get user data**
|
|
34
|
-
|
|
35
|
-
```javascript
|
|
36
|
-
user.list(); //获取本地和缓存数据键值
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
**6. Get list data**
|
|
40
|
-
|
|
41
|
-
```javascript
|
|
42
|
-
user.get('id_1');
|
|
43
|
-
user.get('id_2');
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
**7. Delete user data**
|
|
47
|
-
|
|
48
|
-
```javascript
|
|
49
|
-
user.del('id_1');
|
|
50
|
-
user.del('id_2');
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
**8. Clear Data Table**
|
|
54
|
-
|
|
55
|
-
```javascript
|
|
56
|
-
user.clear();
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
**9. Close server**
|
|
60
|
-
|
|
61
|
-
```javascript
|
|
62
|
-
db.close();
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
package/lib/index.js
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
const {
|
|
3
|
-
link,
|
|
4
|
-
isDir,
|
|
5
|
-
isFile,
|
|
6
|
-
addDir,
|
|
7
|
-
addJson,
|
|
8
|
-
delFile,
|
|
9
|
-
readJson,
|
|
10
|
-
readdirSync
|
|
11
|
-
} = require('./utils/fs');
|
|
12
|
-
const {md5,ekey,dkey} = require('rrid');
|
|
13
|
-
const {str,obj} = require('./utils/type');
|
|
14
|
-
class fkg {
|
|
15
|
-
constructor(arg) {
|
|
16
|
-
this.close();
|
|
17
|
-
if(arg) {
|
|
18
|
-
if(str(arg)&&isDir(arg)) this.dir = link(arg,'./data');
|
|
19
|
-
if(obj(arg)){
|
|
20
|
-
if(arg.dir&&isDir(arg.dir)) this.dir = link(arg.dir,'./data');
|
|
21
|
-
if(arg.key&&str(arg.key)) this.key = md5(arg.key+'fkg');
|
|
22
|
-
}
|
|
23
|
-
if(this.dir&&!isDir(this.dir)) addDir(this.dir);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
close(){
|
|
27
|
-
this.data = {};
|
|
28
|
-
this.dirs = {};
|
|
29
|
-
this.dir = null;
|
|
30
|
-
}
|
|
31
|
-
io(n) {
|
|
32
|
-
const that = this;
|
|
33
|
-
if(!n||!str(n)) return;
|
|
34
|
-
if(!that.data[n]) that.data[n] = {};
|
|
35
|
-
return {
|
|
36
|
-
set(id,data){
|
|
37
|
-
if(!id||!str(id)||!data) return false;
|
|
38
|
-
that.data[n][id] = data;
|
|
39
|
-
return true;
|
|
40
|
-
},
|
|
41
|
-
add(id,data){
|
|
42
|
-
if(!id||!str(id)||!data||!that.dir) return false;
|
|
43
|
-
if(!that.dirs[n]) {
|
|
44
|
-
that.dirs[n] = link(that.dir,'./'+n);
|
|
45
|
-
if(!isDir(that.dirs[n])) addDir(that.dirs[n]);
|
|
46
|
-
}
|
|
47
|
-
if(that.key) data = ekey(JSON.stringify(data),that.key+id);
|
|
48
|
-
return addJson(link(that.dirs[n],'./'+id),data);
|
|
49
|
-
},
|
|
50
|
-
get(id){
|
|
51
|
-
if(!id||!str(id)) return null;
|
|
52
|
-
let ids = that.data[n][id];
|
|
53
|
-
if(!ids&&that.dirs[n]){
|
|
54
|
-
const url = link(that.dirs[n],'./'+id);
|
|
55
|
-
if(isFile(url)){
|
|
56
|
-
ids = readJson(url);
|
|
57
|
-
if(ids&&that.key) ids = JSON.parse(dkey(ids,that.key+id));
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
return ids;
|
|
61
|
-
},
|
|
62
|
-
list(){
|
|
63
|
-
let arr = Object.keys(that.data[n]);
|
|
64
|
-
if(that.dirs[n]) arr = [...arr,...readdirSync(that.dirs[n])];
|
|
65
|
-
return arr;
|
|
66
|
-
},
|
|
67
|
-
del(id){
|
|
68
|
-
if(!id||!str(id)) return false;
|
|
69
|
-
let res = true;
|
|
70
|
-
if(that.dirs[n]){
|
|
71
|
-
const url = link(that.dirs[n],'./'+id);
|
|
72
|
-
if(isFile(url)) res = delFile(url);
|
|
73
|
-
if(!res) return res;
|
|
74
|
-
}
|
|
75
|
-
delete that.data[n][id];
|
|
76
|
-
return res;
|
|
77
|
-
},
|
|
78
|
-
clear(){
|
|
79
|
-
if(that.dirs[n]){
|
|
80
|
-
let list = readdirSync(that.dirs[n]);
|
|
81
|
-
for (let i = 0;i < list.length;i++) {
|
|
82
|
-
delFile(link(that.dirs[n],'./'+list[i]));
|
|
83
|
-
};
|
|
84
|
-
list = null;
|
|
85
|
-
}
|
|
86
|
-
delete that.data[n];
|
|
87
|
-
return true;
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
module.exports = fkg;
|
package/lib/utils/fs.js
DELETED
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
const fs = require('fs');
|
|
2
|
-
const path = require('path');
|
|
3
|
-
const isDir = (url) => {
|
|
4
|
-
if (fs.existsSync(url)) {
|
|
5
|
-
const stat = fs.statSync(url);
|
|
6
|
-
return stat.isDirectory();
|
|
7
|
-
} else {
|
|
8
|
-
return false;
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
const addFile = (url, data)=>{
|
|
12
|
-
try {
|
|
13
|
-
fs.writeFileSync(url, data,{encoding:'utf8'});
|
|
14
|
-
return true;
|
|
15
|
-
} catch (err) {
|
|
16
|
-
return false;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
module.exports = {
|
|
20
|
-
isDir,
|
|
21
|
-
addFile,
|
|
22
|
-
link(...args){
|
|
23
|
-
return path.resolve(...args)
|
|
24
|
-
},
|
|
25
|
-
isFile(url) {
|
|
26
|
-
if (fs.existsSync(url)) {
|
|
27
|
-
const stats = fs.statSync(url);
|
|
28
|
-
return stats.isFile();
|
|
29
|
-
} else {
|
|
30
|
-
return false;
|
|
31
|
-
}
|
|
32
|
-
},
|
|
33
|
-
addJson(url,data){
|
|
34
|
-
return addFile(url,JSON.stringify(data));
|
|
35
|
-
},
|
|
36
|
-
file(url){
|
|
37
|
-
try {
|
|
38
|
-
return fs.statSync(url)
|
|
39
|
-
} catch (error) {
|
|
40
|
-
return false
|
|
41
|
-
}
|
|
42
|
-
},
|
|
43
|
-
readJson(url){
|
|
44
|
-
try {
|
|
45
|
-
return JSON.parse(fs.readFileSync(url));
|
|
46
|
-
} catch (error) {
|
|
47
|
-
return null
|
|
48
|
-
}
|
|
49
|
-
},
|
|
50
|
-
readFile(url) {
|
|
51
|
-
return new Promise((resolve) => {
|
|
52
|
-
fs.readFile(url, 'utf8', (err, data) => {
|
|
53
|
-
if (err) {
|
|
54
|
-
resolve(null);
|
|
55
|
-
}else{
|
|
56
|
-
resolve(data) ;
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
})
|
|
60
|
-
},
|
|
61
|
-
readdirSync(url){
|
|
62
|
-
try {
|
|
63
|
-
return fs.readdirSync(url);
|
|
64
|
-
} catch (error) {
|
|
65
|
-
return []
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
|
-
dirFile(paths) {
|
|
69
|
-
let obj = {};
|
|
70
|
-
obj[paths] = 'dir';
|
|
71
|
-
const arrFile = (url) => {
|
|
72
|
-
const item = fs.readdirSync(url);
|
|
73
|
-
if (item.length > 0) {
|
|
74
|
-
let dir = [];
|
|
75
|
-
item.forEach(e => {
|
|
76
|
-
const ets = path.resolve(url, e);
|
|
77
|
-
if (isDir(ets)) {
|
|
78
|
-
dir.push(ets);
|
|
79
|
-
obj[ets] = 'dir';
|
|
80
|
-
} else {
|
|
81
|
-
obj[ets] = 'file';
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
for (let i = 0; i < dir.length; i++) {
|
|
85
|
-
arrFile(dir[i]);
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
arrFile(paths);
|
|
90
|
-
return obj;
|
|
91
|
-
},
|
|
92
|
-
addDir(url) {
|
|
93
|
-
try {
|
|
94
|
-
fs.mkdirSync(url);
|
|
95
|
-
return true;
|
|
96
|
-
} catch (error) {
|
|
97
|
-
return false
|
|
98
|
-
}
|
|
99
|
-
},
|
|
100
|
-
mkdirSync(url) {
|
|
101
|
-
return fs.mkdirSync(url);
|
|
102
|
-
},
|
|
103
|
-
delFile(url) {
|
|
104
|
-
try {
|
|
105
|
-
fs.unlinkSync(url);
|
|
106
|
-
return true
|
|
107
|
-
} catch (error) {
|
|
108
|
-
return false
|
|
109
|
-
}
|
|
110
|
-
},
|
|
111
|
-
getSize(obj) {
|
|
112
|
-
let size = 0;
|
|
113
|
-
for (const key in obj) {
|
|
114
|
-
if (obj[key] === 'file') {
|
|
115
|
-
size += fs.statSync(key).size;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
return size
|
|
119
|
-
},
|
|
120
|
-
copyFile(old, news, def) {
|
|
121
|
-
return new Promise((resolve) => {
|
|
122
|
-
// 创建可读流来读取源文件
|
|
123
|
-
const oldStream = fs.createReadStream(old);
|
|
124
|
-
// 创建可写流来写入目标文件
|
|
125
|
-
const newStream = fs.createWriteStream(news);
|
|
126
|
-
// 使用管道将源文件的流复制到目标文件流中
|
|
127
|
-
oldStream.pipe(newStream);
|
|
128
|
-
// 处理错误和结束事件
|
|
129
|
-
oldStream.on('data', (data) => {
|
|
130
|
-
if (def) def(data.length);
|
|
131
|
-
})
|
|
132
|
-
oldStream.on('error', () => {
|
|
133
|
-
newStream.close();
|
|
134
|
-
resolve(false);
|
|
135
|
-
});
|
|
136
|
-
newStream.on('error', () => {
|
|
137
|
-
oldStream.close();
|
|
138
|
-
resolve(false);
|
|
139
|
-
});
|
|
140
|
-
// 当源文件流结束时,表示复制完成,可以处理结束事件
|
|
141
|
-
oldStream.on('end', () => {
|
|
142
|
-
resolve(true);
|
|
143
|
-
});
|
|
144
|
-
})
|
|
145
|
-
}
|
|
146
|
-
}
|
package/lib/utils/type.js
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
const conf = {
|
|
3
|
-
n:/^[1-9]\d*$/,
|
|
4
|
-
ip:/^((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$|^([\da-fA-F]{1,4}:){6}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$|^::([\da-fA-F]{1,4}:){0,4}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$|^([\da-fA-F]{1,4}:):([\da-fA-F]{1,4}:){0,3}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$|^([\da-fA-F]{1,4}:){2}:([\da-fA-F]{1,4}:){0,2}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$|^([\da-fA-F]{1,4}:){3}:([\da-fA-F]{1,4}:){0,1}((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$|^([\da-fA-F]{1,4}:){4}:((25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(25[0-5]|2[0-4]\d|[01]?\d\d?)$|^([\da-fA-F]{1,4}:){7}[\da-fA-F]{1,4}$|^:((:[\da-fA-F]{1,4}){1,6}|:)$|^[\da-fA-F]{1,4}:((:[\da-fA-F]{1,4}){1,5}|:)$|^([\da-fA-F]{1,4}:){2}((:[\da-fA-F]{1,4}){1,4}|:)$|^([\da-fA-F]{1,4}:){3}((:[\da-fA-F]{1,4}){1,3}|:)$|^([\da-fA-F]{1,4}:){4}((:[\da-fA-F]{1,4}){1,2}|:)$|^([\da-fA-F]{1,4}:){5}:([\da-fA-F]{1,4})?$|^([\da-fA-F]{1,4}:){6}:$/,
|
|
5
|
-
domain:/^([a-zA-Z0-9]([a-zA-Z0-9-_]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,11}$/, //域名
|
|
6
|
-
};
|
|
7
|
-
module.exports = {
|
|
8
|
-
ip(d){
|
|
9
|
-
// 验证ipv4 ipv6
|
|
10
|
-
return conf.ip.test(d);
|
|
11
|
-
},
|
|
12
|
-
domain(d){
|
|
13
|
-
// 验证域名
|
|
14
|
-
return conf.domain.test(d);
|
|
15
|
-
},
|
|
16
|
-
host(d){
|
|
17
|
-
// 验证主机host
|
|
18
|
-
return d=='localhost'||conf.ip.test(d)||conf.domain.test(d);
|
|
19
|
-
},
|
|
20
|
-
number(d) {
|
|
21
|
-
return typeof d=='number'&&conf.n.test(d);
|
|
22
|
-
},
|
|
23
|
-
port(d){
|
|
24
|
-
return 0<=d&&d<=65536&&conf.n.test(d);
|
|
25
|
-
},
|
|
26
|
-
str(d){
|
|
27
|
-
return typeof(d)=='string';
|
|
28
|
-
},
|
|
29
|
-
arr(d){
|
|
30
|
-
return Object.prototype.toString.call(d) === '[object Array]';
|
|
31
|
-
},
|
|
32
|
-
def(d){
|
|
33
|
-
return typeof d === 'function';
|
|
34
|
-
},
|
|
35
|
-
reg(d){
|
|
36
|
-
try {
|
|
37
|
-
return Object.prototype.toString.call(d) === '[object RegExp]';
|
|
38
|
-
} catch (error) {
|
|
39
|
-
return false;
|
|
40
|
-
}
|
|
41
|
-
},
|
|
42
|
-
obj(d){
|
|
43
|
-
return Object.prototype.toString.call(d) === '[object Object]';
|
|
44
|
-
}
|
|
45
|
-
}
|