fkg 1.1.2 → 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 -18
- package/README.md +0 -57
- package/lib/index.js +0 -108
- 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,19 +1,32 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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,57 +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 db = fkg({
|
|
19
|
-
dir:'D:\\work', //数据储存位置,为空时不进行存储
|
|
20
|
-
key:'exgeg2233', //key不为空时,储存的数据会被加密
|
|
21
|
-
db:['user','name'] //db必须存在,且必须为数组
|
|
22
|
-
});
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
**3. Create user data**
|
|
26
|
-
```javascript
|
|
27
|
-
const data = {name:'xxx'};
|
|
28
|
-
db.user.add('id_1',data); //数据储存在本地
|
|
29
|
-
db.user.set('id_2',data); //数据储存在缓存
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
**5. Get user data**
|
|
33
|
-
|
|
34
|
-
```javascript
|
|
35
|
-
db.user.list(); //获取user表缓存和本地数据键值
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
**6. Get list data**
|
|
39
|
-
|
|
40
|
-
```javascript
|
|
41
|
-
db.user.get('id_1'); //获取user表中指定缓存
|
|
42
|
-
db.user.get('id_2'); //获取不到缓存,会获取本地数据
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
**7. Delete user data**
|
|
46
|
-
|
|
47
|
-
```javascript
|
|
48
|
-
db.user.clear(); //清空user表中所有的缓存
|
|
49
|
-
db.user.kill(); //清空user表中所有的本地数据
|
|
50
|
-
db.user.del('id_1'); //删除user表中指定缓存和本地数据
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
package/lib/index.js
DELETED
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
module.exports = (arg)=>{
|
|
3
|
-
const fs = require('./utils/fs');
|
|
4
|
-
const {md5,ekey,dkey} = require('rrid');
|
|
5
|
-
const {str,obj,arr} = require('./utils/type');
|
|
6
|
-
if(arg&&obj(arg)) {
|
|
7
|
-
let io = {};
|
|
8
|
-
let dirs = {};
|
|
9
|
-
let datas = {};
|
|
10
|
-
if(arg.dir&&fs.isDir(arg.dir)) {
|
|
11
|
-
arg.dir = fs.link(arg.dir,'./data');
|
|
12
|
-
if(!fs.isDir(arg.dir)) fs.addDir(arg.dir);
|
|
13
|
-
}else{
|
|
14
|
-
delete arg.dir;
|
|
15
|
-
}
|
|
16
|
-
if(arg.db&&arr(arg.db)){
|
|
17
|
-
if(arg.db.length>0){
|
|
18
|
-
for (let i = 0;i < arg.db.length;i++) {
|
|
19
|
-
const n = arg.db[i];
|
|
20
|
-
if(!str(n)){
|
|
21
|
-
console.log(`The db.${n} is not string`);
|
|
22
|
-
return;
|
|
23
|
-
}
|
|
24
|
-
if(arg.dir) {
|
|
25
|
-
dirs[n] = fs.link(arg.dir,'./'+n);
|
|
26
|
-
if(!fs.isDir(dirs[n])) fs.addDir(dirs[n]);
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
}else{
|
|
30
|
-
console.log("The length of 'db' is not 0");
|
|
31
|
-
return;
|
|
32
|
-
}
|
|
33
|
-
}else{
|
|
34
|
-
console.log('The db is array');
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
if(arg.key&&str(arg.key)) {
|
|
38
|
-
arg.key = md5(arg.key+'fkg');
|
|
39
|
-
}else{
|
|
40
|
-
delete arg.key;
|
|
41
|
-
}
|
|
42
|
-
const def = (n) => {
|
|
43
|
-
return {
|
|
44
|
-
set(id,data){
|
|
45
|
-
if(!id||!str(id)||!data) return false;
|
|
46
|
-
datas[n][id] = data;
|
|
47
|
-
return true;
|
|
48
|
-
},
|
|
49
|
-
add(id,data){
|
|
50
|
-
if(!id||!str(id)||!data||!arg.dir) return false;
|
|
51
|
-
if(arg.key) data = ekey(JSON.stringify(data),arg.key+id);
|
|
52
|
-
return fs.addJson(fs.link(dirs[n],'./'+id),data);
|
|
53
|
-
},
|
|
54
|
-
get(id){
|
|
55
|
-
if(!id||!str(id)) return null;
|
|
56
|
-
let ids = datas[n][id];
|
|
57
|
-
if(!ids&&arg.dir){
|
|
58
|
-
const url = fs.link(dirs[n],'./'+id);
|
|
59
|
-
if(fs.isFile(url)){
|
|
60
|
-
ids = fs.readJson(url);
|
|
61
|
-
if(ids&&arg.key) ids = JSON.parse(dkey(ids,arg.key+id));
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
return ids;
|
|
65
|
-
},
|
|
66
|
-
list(){
|
|
67
|
-
let arr = Object.keys(datas[n]);
|
|
68
|
-
if(arg.dir) arr = [...arr,...fs.readdirSync(dirs[n])];
|
|
69
|
-
return arr;
|
|
70
|
-
},
|
|
71
|
-
del(id){
|
|
72
|
-
let res = true;
|
|
73
|
-
if(!id||!str(id)) return false;
|
|
74
|
-
if(datas[n][id]) delete datas[n][id];
|
|
75
|
-
if(arg.dir){
|
|
76
|
-
const url = fs.link(dirs[n],'./'+id);
|
|
77
|
-
if(fs.isFile(url)) res = fs.delFile(url);
|
|
78
|
-
if(!res) return res;
|
|
79
|
-
}
|
|
80
|
-
return res;
|
|
81
|
-
},
|
|
82
|
-
clear(){
|
|
83
|
-
datas[n] = {}
|
|
84
|
-
return true;
|
|
85
|
-
},
|
|
86
|
-
kill(){
|
|
87
|
-
if(arg.dir){
|
|
88
|
-
const list = fs.readdirSync(dirs[n]);
|
|
89
|
-
for (let i = 0;i < list.length;i++) {
|
|
90
|
-
fs.delFile(fs.link(dirs[n],'./'+list[i]));
|
|
91
|
-
};
|
|
92
|
-
return true;
|
|
93
|
-
}else{
|
|
94
|
-
return false;
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
for (let i = 0;i < arg.db.length;i++) {
|
|
100
|
-
const n = arg.db[i];
|
|
101
|
-
datas[n] = {};
|
|
102
|
-
io[n] = def(n);
|
|
103
|
-
};
|
|
104
|
-
return io;
|
|
105
|
-
}else{
|
|
106
|
-
console.log('Missing parameters');
|
|
107
|
-
}
|
|
108
|
-
}
|
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
|
-
}
|