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 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,15 +1,32 @@
1
1
  {
2
- "name": "fkg",
3
- "version": "1.1.1",
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
- "dependencies": {
13
- "rrid": "^1.0.6"
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
- }