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 ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ require('../lib/comm');
package/index.js ADDED
@@ -0,0 +1,3 @@
1
+ 'use strict';
2
+ const client = require('./lib/client');
3
+ module.exports = client;
@@ -0,0 +1,4 @@
1
+ 'use strict';
2
+ module.exports = {
3
+ console.log('100');
4
+ };
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"]
@@ -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
- "name": "fkg",
3
- "version": "1.1.2",
4
- "description": "Read and set memory key!",
5
- "main": "lib/index.js",
6
- "keywords": [
7
- "db",
8
- "key",
9
- "disk",
10
- "data",
11
- "cache",
12
- "database"
13
- ],
14
- "author": "weduu",
15
- "license": "MIT",
16
- "dependencies": {
17
- "rrid": "^1.0.6"
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
- }