fkg 1.0.0 → 1.0.2

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/lib/index.js CHANGED
@@ -1,6 +1,58 @@
1
- class key {
2
- connect(port,host){
3
-
1
+ 'use strict';
2
+ const {str,obj,arr} = require('./utils/type');
3
+ const {isDir,isFile,link,addDir,addJson,readJson,delFile} = require('./utils/fs');
4
+ class fkg {
5
+ constructor(arg) {
6
+ this.is = {};
7
+ this.data = {};
8
+ this.dirs = {};
9
+ this.dir = null;
10
+ if(arg&&obj(arg)) {
11
+ if(arg.dir&&isDir(arg.dir)){
12
+ this.dir = link(arg.dir,'./data');
13
+ if(!isDir(this.dir)) addDir(this.dir);
14
+ }
15
+ if(arg.dbName&&arr(arg.dbName)&&arr.length>0){
16
+ for (let i = 0;i < arg.dbName.length;i++) {
17
+ const n = arg.dbName[i];
18
+ this.data[n] = {};
19
+ if(this.dir) {
20
+ this.dirs[n] = link(this.dir,'./'+n);
21
+ if(!isDir(this.dirs[n])) addDir(this.dirs[n]);
22
+ }
23
+ };
24
+ }
25
+ }
26
+ }
27
+ table(n) {
28
+ if(!n||!str(n)) return;
29
+ if(!this.data[n]) this.data[n] = {};
30
+ const that = this;
31
+ return {
32
+ list(){
33
+ return that.data[n];
34
+ },
35
+ get(id){
36
+ if(that.dir&&!that.data[n][id]) {
37
+ const url = link(that.dirs[n],'./'+id);
38
+ if(isFile(url)){
39
+ const res = readJson(url);
40
+ if(res) that.data[n][id] = res;
41
+ }
42
+ }
43
+ return that.data[n][id];
44
+ },
45
+ set(id,d){
46
+ that.data[n][id] = d;
47
+ if(that.dir) addJson(link(that.dirs[n],'./'+id),d);
48
+ return true;
49
+ },
50
+ del(id){
51
+ delete that.data[n][id];
52
+ if(that.dir) delFile(link(that.dirs[n],'./'+id));
53
+ return true;
54
+ }
55
+ }
4
56
  }
5
57
  }
6
- module.exports = key;
58
+ module.exports = fkg;
@@ -0,0 +1,135 @@
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
+ readJson(url){
37
+ try {
38
+ return JSON.parse(fs.readFileSync(url));
39
+ } catch (error) {
40
+ return null
41
+ }
42
+ },
43
+ readFile(url) {
44
+ return new Promise((resolve) => {
45
+ fs.readFile(url, 'utf8', (err, data) => {
46
+ if (err) {
47
+ resolve(null);
48
+ }else{
49
+ resolve(data) ;
50
+ }
51
+ });
52
+ })
53
+ },
54
+ readdirSync(url){
55
+ return fs.readdirSync(url);
56
+ },
57
+ dirFile(paths) {
58
+ let obj = {};
59
+ obj[paths] = 'dir';
60
+ const arrFile = (url) => {
61
+ const item = fs.readdirSync(url);
62
+ if (item.length > 0) {
63
+ let dir = [];
64
+ item.forEach(e => {
65
+ const ets = path.resolve(url, e);
66
+ if (isDir(ets)) {
67
+ dir.push(ets);
68
+ obj[ets] = 'dir';
69
+ } else {
70
+ obj[ets] = 'file';
71
+ }
72
+ });
73
+ for (let i = 0; i < dir.length; i++) {
74
+ arrFile(dir[i]);
75
+ };
76
+ }
77
+ }
78
+ arrFile(paths);
79
+ return obj;
80
+ },
81
+ addDir(url) {
82
+ try {
83
+ fs.mkdirSync(url);
84
+ return true;
85
+ } catch (error) {
86
+ return false
87
+ }
88
+ },
89
+ mkdirSync(url) {
90
+ return fs.mkdirSync(url);
91
+ },
92
+ delFile(url) {
93
+ try {
94
+ fs.unlinkSync(url);
95
+ return true
96
+ } catch (error) {
97
+ return false
98
+ }
99
+ },
100
+ getSize(obj) {
101
+ let size = 0;
102
+ for (const key in obj) {
103
+ if (obj[key] === 'file') {
104
+ size += fs.statSync(key).size;
105
+ }
106
+ }
107
+ return size
108
+ },
109
+ copyFile(old, news, def) {
110
+ return new Promise((resolve) => {
111
+ // 创建可读流来读取源文件
112
+ const oldStream = fs.createReadStream(old);
113
+ // 创建可写流来写入目标文件
114
+ const newStream = fs.createWriteStream(news);
115
+ // 使用管道将源文件的流复制到目标文件流中
116
+ oldStream.pipe(newStream);
117
+ // 处理错误和结束事件
118
+ oldStream.on('data', (data) => {
119
+ if (def) def(data.length);
120
+ })
121
+ oldStream.on('error', () => {
122
+ newStream.close();
123
+ resolve(false);
124
+ });
125
+ newStream.on('error', () => {
126
+ oldStream.close();
127
+ resolve(false);
128
+ });
129
+ // 当源文件流结束时,表示复制完成,可以处理结束事件
130
+ oldStream.on('end', () => {
131
+ resolve(true);
132
+ });
133
+ })
134
+ }
135
+ }
@@ -0,0 +1,45 @@
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
+ }
package/package.json CHANGED
@@ -1,14 +1,12 @@
1
- {
2
- "name": "fkg",
3
- "version": "1.0.0",
4
- "description": "Read and set memory key!",
5
- "main": "lib/index.js",
6
- "scripts": {
7
- "test": "echo \"Error: no test specified\" && exit 1"
8
- },
9
- "keywords": [
10
- "key"
11
- ],
12
- "author": "weduu",
13
- "license": "MIT"
14
- }
1
+ {
2
+ "name": "fkg",
3
+ "version": "1.0.2",
4
+ "description": "Read and set memory key!",
5
+ "main": "lib/index.js",
6
+ "keywords": [
7
+ "key",
8
+ "cache"
9
+ ],
10
+ "author": "weduu",
11
+ "license": "MIT"
12
+ }