@bee.js/node 0.0.51 → 0.0.52

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/index.js CHANGED
@@ -1,15 +1,15 @@
1
- module.exports = {
2
- load: require('./lib/beeHive/load'),
3
- create: require('./lib/beeHive/create'),
4
- start: require('./lib/beeHive/start'),
5
- routes: require('./lib/beeHive/routes'),
6
- route: require('./lib/WEB/route'),
7
- freeRoute: require('./lib/WEB/freeRoute'),
8
- request: require('./beeRequest'),
9
- hive: require('./beehive'),
10
- tools: require('./tools/beeTools'),
11
- security: require('./security'),
12
- services: require('./services'),
13
- //scheduler: require('./security'), //TODO
14
- status: (req, res)=>res.status(200).send(`${global.configs.name || 'Bee.js'} running version: ${global.configs.version}`)
1
+ module.exports = {
2
+ load: require('./lib/beeHive/load'),
3
+ create: require('./lib/beeHive/create'),
4
+ start: require('./lib/beeHive/start'),
5
+ routes: require('./lib/beeHive/routes'),
6
+ route: require('./lib/WEB/route'),
7
+ freeRoute: require('./lib/WEB/freeRoute'),
8
+ request: require('./beeRequest'),
9
+ hive: require('./beehive'),
10
+ tools: require('./tools/beeTools'),
11
+ security: require('./security'),
12
+ services: require('./services'),
13
+ //scheduler: require('./security'), //TODO
14
+ status: (req, res)=>res.status(200).send(`${global.configs.name || 'Bee.js'} running version: ${global.configs.version}`)
15
15
  }
package/lib/DBA/beeDBA.js CHANGED
@@ -1,133 +1,133 @@
1
- const beeORM = require("../ORM/beeORM");
2
- const beeHive = require("../../beehive");
3
-
4
- const fieldType = {
5
- mysql: function (field) {
6
- let type = field.type.split(" ")[0].trim();
7
-
8
- switch (type) {
9
- case "integer":
10
- case "int":
11
- type = "int";
12
- break;
13
- case "decimal":
14
- type = `decimal(${(field.length || 10.1)
15
- .toString()
16
- .replace(".", ",")})`;
17
- break;
18
-
19
- case "string":
20
- case "varchar":
21
- type = `varchar(${field.length || 45})`;
22
- break;
23
- case "uuid":
24
- case "guid":
25
- type = `binary(16)`;
26
- field.ai = false;
27
- break;
28
- case "char":
29
- type = `char(${field.length || 5})`;
30
- break;
31
- case "file":
32
- type = "blob";
33
- break;
34
- }
35
- return (
36
- type +
37
- (!field.null ? " NOT NULL" : "") +
38
- (field.ai ? " AUTO_INCREMENT" : "") +
39
- (field.default !== undefined ? ` DEFAULT ${field.default}` : "") +
40
- (field.default !== undefined && field.onUpdate
41
- ? ` ON UPDATE ${field.default}`
42
- : "")
43
- );
44
- },
45
- };
46
-
47
- module.exports.actions = {
48
- mysql: {
49
- MODEL_STATEMENT_EXECUTE: async function (req, res) {
50
- let hive = beeHive();
51
- let data = await hive.dbExec(req.body.statement_execute);
52
-
53
- res.status(200).send({ data: data });
54
- },
55
-
56
- MODEL_CREATE_DB: function (req, res) {
57
- let configsDB = global.configs.databases.default;
58
- let models = global.models;
59
- let SQL = ["", ""];
60
-
61
- //TODO create db with user permissions
62
-
63
- Object.keys(models).map((model) => {
64
- if (!req.body.models[model]._checked) return;
65
-
66
- SQL[0] += this.MODEL_CREATE_TABLE(models[model], configsDB);
67
- SQL[1] += models[model].relations
68
- ? this.MODEL_CREATE_CONSTRAINT(models[model], configsDB)
69
- : "";
70
- });
71
-
72
- res.status(200).send({ data: SQL.join("") });
73
- },
74
-
75
- MODEL_CREATE_TABLE: function (model, configsDB) {
76
- let q = beeORM.quote;
77
- let SQL = "";
78
-
79
- SQL = `CREATE TABLE IF NOT EXISTS ${q(model.table)} (`;
80
-
81
- for (let field in model.schema)
82
- SQL += `\n ${q(field)} ${fieldType[configsDB.drive](
83
- model.schema[field]
84
- )},`; // TODO criar funcao para relacionamentos.
85
-
86
- SQL = SQL.slice(0, SQL.length - 1);
87
-
88
- if (model.indexes) {
89
- if (model.indexes.keys)
90
- SQL += `,\n PRIMARY KEY (${q(model.indexes.keys)})`;
91
-
92
- //TODO fazer uniques e cia. colocar em funcao.
93
- }
94
-
95
- SQL += `\n) ENGINE=${configsDB.engine} DEFAULT CHARSET=${configsDB.charset};\n\n`;
96
-
97
- return SQL;
98
- },
99
-
100
- MODEL_CREATE_CONSTRAINT: function (model, configsDB) {
101
- let q = beeORM.quote;
102
- let SQL = "\n\n\n";
103
-
104
- SQL += `/*----- Constraints for table ${q(model.table)} -----*/\n`;
105
-
106
- for (let field in model.relations)
107
- SQL += `\n\n ALTER TABLE ${q(model.table)}\n ADD CONSTRAINT ${q(
108
- `FK_${model.relations[field].split(".")[0]}_X_${
109
- model.table
110
- }_${field}`.slice(0, 64)
111
- )}
112
- FOREIGN KEY (${field})
113
- REFERENCES ${
114
- model.relations[field].split(".")[0]
115
- } (${field})
116
- ${"ON DELETE CASCADE"}
117
- ${"ON UPDATE CASCADE"};
118
- \n\n`;
119
-
120
- //SQL += `-- COMMIT; \n\n`
121
-
122
- return SQL;
123
- },
124
- },
125
-
126
- mssql: {
127
- // TODO next version
128
- },
129
-
130
- mongoDB: {
131
- // TODO next version
132
- },
133
- };
1
+ const beeORM = require("../ORM/beeORM");
2
+ const beeHive = require("../../beehive");
3
+
4
+ const fieldType = {
5
+ mysql: function (field) {
6
+ let type = field.type.split(" ")[0].trim();
7
+
8
+ switch (type) {
9
+ case "integer":
10
+ case "int":
11
+ type = "int";
12
+ break;
13
+ case "decimal":
14
+ type = `decimal(${(field.length || 10.1)
15
+ .toString()
16
+ .replace(".", ",")})`;
17
+ break;
18
+
19
+ case "string":
20
+ case "varchar":
21
+ type = `varchar(${field.length || 45})`;
22
+ break;
23
+ case "uuid":
24
+ case "guid":
25
+ type = `binary(16)`;
26
+ field.ai = false;
27
+ break;
28
+ case "char":
29
+ type = `char(${field.length || 5})`;
30
+ break;
31
+ case "file":
32
+ type = "blob";
33
+ break;
34
+ }
35
+ return (
36
+ type +
37
+ (!field.null ? " NOT NULL" : "") +
38
+ (field.ai ? " AUTO_INCREMENT" : "") +
39
+ (field.default !== undefined ? ` DEFAULT ${field.default}` : "") +
40
+ (field.default !== undefined && field.onUpdate
41
+ ? ` ON UPDATE ${field.default}`
42
+ : "")
43
+ );
44
+ },
45
+ };
46
+
47
+ module.exports.actions = {
48
+ mysql: {
49
+ MODEL_STATEMENT_EXECUTE: async function (req, res) {
50
+ let hive = beeHive();
51
+ let data = await hive.dbExec(req.body.statement_execute);
52
+
53
+ res.status(200).send({ data: data });
54
+ },
55
+
56
+ MODEL_CREATE_DB: function (req, res) {
57
+ let configsDB = global.configs.databases.default;
58
+ let models = global.models;
59
+ let SQL = ["", ""];
60
+
61
+ //TODO create db with user permissions
62
+
63
+ Object.keys(models).map((model) => {
64
+ if (!req.body.models[model]._checked) return;
65
+
66
+ SQL[0] += this.MODEL_CREATE_TABLE(models[model], configsDB);
67
+ SQL[1] += models[model].relations
68
+ ? this.MODEL_CREATE_CONSTRAINT(models[model], configsDB)
69
+ : "";
70
+ });
71
+
72
+ res.status(200).send({ data: SQL.join("") });
73
+ },
74
+
75
+ MODEL_CREATE_TABLE: function (model, configsDB) {
76
+ let q = beeORM.quote;
77
+ let SQL = "";
78
+
79
+ SQL = `CREATE TABLE IF NOT EXISTS ${q(model.table)} (`;
80
+
81
+ for (let field in model.schema)
82
+ SQL += `\n ${q(field)} ${fieldType[configsDB.drive](
83
+ model.schema[field]
84
+ )},`; // TODO criar funcao para relacionamentos.
85
+
86
+ SQL = SQL.slice(0, SQL.length - 1);
87
+
88
+ if (model.indexes) {
89
+ if (model.indexes.keys)
90
+ SQL += `,\n PRIMARY KEY (${q(model.indexes.keys)})`;
91
+
92
+ //TODO fazer uniques e cia. colocar em funcao.
93
+ }
94
+
95
+ SQL += `\n) ENGINE=${configsDB.engine} DEFAULT CHARSET=${configsDB.charset};\n\n`;
96
+
97
+ return SQL;
98
+ },
99
+
100
+ MODEL_CREATE_CONSTRAINT: function (model, configsDB) {
101
+ let q = beeORM.quote;
102
+ let SQL = "\n\n\n";
103
+
104
+ SQL += `/*----- Constraints for table ${q(model.table)} -----*/\n`;
105
+
106
+ for (let field in model.relations)
107
+ SQL += `\n\n ALTER TABLE ${q(model.table)}\n ADD CONSTRAINT ${q(
108
+ `FK_${model.relations[field].split(".")[0]}_X_${
109
+ model.table
110
+ }_${field}`.slice(0, 64)
111
+ )}
112
+ FOREIGN KEY (${field})
113
+ REFERENCES ${
114
+ model.relations[field].split(".")[0]
115
+ } (${field})
116
+ ${"ON DELETE CASCADE"}
117
+ ${"ON UPDATE CASCADE"};
118
+ \n\n`;
119
+
120
+ //SQL += `-- COMMIT; \n\n`
121
+
122
+ return SQL;
123
+ },
124
+ },
125
+
126
+ mssql: {
127
+ // TODO next version
128
+ },
129
+
130
+ mongoDB: {
131
+ // TODO next version
132
+ },
133
+ };
package/lib/DEV/beeDEV.js CHANGED
@@ -1,42 +1,42 @@
1
- const log = require('../beeHive/log')
2
- const beeDBA = require('../DBA/beeDBA')
3
- const glob = require('glob')
4
- const fs = require('fs')
5
-
6
- module.exports = async function(req, res, next) {
7
- if(!global.configs.dev) return res.send(null)
8
-
9
- res.header("Access-Control-Allow-Origin", "*")
10
- res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept")
11
-
12
- var result = {}
13
-
14
- switch(req.params.action) {
15
- case 'MODEL_STATEMENT_EXECUTE':
16
- result = await beeDBA.actions[global.configs.databases.default.type || 'mysql'][req.params.action](req, res, next)
17
- break
18
-
19
- case 'MODEL_CREATE_DB':
20
- result = beeDBA.actions[global.configs.databases.default.type || 'mysql'][req.params.action](req, res, next)
21
- break
22
-
23
- case 'PATHS':
24
- return glob("**/*", {},
25
- function (err, files) {
26
- res.send({ data: files })
27
- })
28
-
29
- case 'PATH_DATA':
30
- return fs.readFile(`${require.main.path}/${req.body.path}`,
31
- function (err, data) {
32
- res.send({ data: { path_data: Buffer.from(data).toString(), path: req.body.path } })
33
- })
34
-
35
- default:
36
- result = {...global.configs, env : process.env}
37
- log('# Started a remote connection.')
38
- break
39
- }
40
-
41
- res.send(result)
1
+ const log = require('../beeHive/log')
2
+ const beeDBA = require('../DBA/beeDBA')
3
+ const glob = require('glob')
4
+ const fs = require('fs')
5
+
6
+ module.exports = async function(req, res, next) {
7
+ if(!global.configs.dev) return res.send(null)
8
+
9
+ res.header("Access-Control-Allow-Origin", "*")
10
+ res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept")
11
+
12
+ var result = {}
13
+
14
+ switch(req.params.action) {
15
+ case 'MODEL_STATEMENT_EXECUTE':
16
+ result = await beeDBA.actions[global.configs.databases.default.type || 'mysql'][req.params.action](req, res, next)
17
+ break
18
+
19
+ case 'MODEL_CREATE_DB':
20
+ result = beeDBA.actions[global.configs.databases.default.type || 'mysql'][req.params.action](req, res, next)
21
+ break
22
+
23
+ case 'PATHS':
24
+ return glob("**/*", {},
25
+ function (err, files) {
26
+ res.send({ data: files })
27
+ })
28
+
29
+ case 'PATH_DATA':
30
+ return fs.readFile(`${require.main.path}/${req.body.path}`,
31
+ function (err, data) {
32
+ res.send({ data: { path_data: Buffer.from(data).toString(), path: req.body.path } })
33
+ })
34
+
35
+ default:
36
+ result = {...global.configs, env : process.env}
37
+ log('# Started a remote connection.')
38
+ break
39
+ }
40
+
41
+ res.send(result)
42
42
  }
package/lib/JWT/beeJWT.js CHANGED
@@ -1,71 +1,71 @@
1
- const CryptoJS = require("crypto-js");
2
- const log = require("../beeHive/log");
3
-
4
- function base64url(source) {
5
- encodedSource = CryptoJS.enc.Base64.stringify(source);
6
- encodedSource = encodedSource.replace(/=+$/, "");
7
- encodedSource = encodedSource.replace(/\+/g, "-");
8
- encodedSource = encodedSource.replace(/\//g, "_");
9
-
10
- return encodedSource;
11
- }
12
-
13
- module.exports = function token(_payload = null, header = {}) {
14
- if (_payload) {
15
- let { jwt, ...payload } = _payload;
16
-
17
- if (!global.configs.jwt && !global.configs.jwt.secret)
18
- return log("ERROR: no jwt.secret defined in configs.");
19
-
20
- let secret = global.configs.jwt.secret;
21
- let iat = new Date().getTime();
22
- let exp = new Date().getTime() + 60 * 1000;
23
-
24
- header = {
25
- ...header,
26
- typ: header.typ || "JWT",
27
- alg: header.alg || "HS256",
28
- };
29
-
30
- payload = { ...payload, iat: iat, exp: exp };
31
-
32
- header = base64url(CryptoJS.enc.Utf8.parse(JSON.stringify(header)));
33
- payload = base64url(CryptoJS.enc.Utf8.parse(JSON.stringify(payload)));
34
-
35
- const signature = base64url(
36
- CryptoJS.HmacSHA256(`${header}.${payload}`, secret)
37
- );
38
- const token = `${header}.${payload}.${signature}`;
39
-
40
- this.data.jwt =
41
- this.data.jwt && typeof this.data.jwt !== "object"
42
- ? [this.data.jwt]
43
- : this.data.jwt;
44
-
45
- this.data.jwt = !this.data.jwt ? token : this.data.jwt.concat(token);
46
-
47
- this.counters.jwt = (this.counters.jwt || 0) + 1;
48
-
49
- log("JWT created: " + this.data.jwt);
50
-
51
- return this;
52
- }
53
-
54
- return {
55
- ...this,
56
- verify: function (token) {
57
- const secret = global.configs.jwt.secret;
58
- const array = token.split(".");
59
- const header = array[0];
60
- const payload = array[1];
61
-
62
- const signature = base64url(
63
- CryptoJS.HmacSHA256(`${header}.${payload}`, secret)
64
- );
65
-
66
- return token === `${header}.${payload}.${signature}`
67
- ? new Buffer.from(payload, "base64").toString("ascii")
68
- : false;
69
- },
70
- };
71
- };
1
+ const CryptoJS = require("crypto-js");
2
+ const log = require("../beeHive/log");
3
+
4
+ function base64url(source) {
5
+ encodedSource = CryptoJS.enc.Base64.stringify(source);
6
+ encodedSource = encodedSource.replace(/=+$/, "");
7
+ encodedSource = encodedSource.replace(/\+/g, "-");
8
+ encodedSource = encodedSource.replace(/\//g, "_");
9
+
10
+ return encodedSource;
11
+ }
12
+
13
+ module.exports = function token(_payload = null, header = {}) {
14
+ if (_payload) {
15
+ let { jwt, ...payload } = _payload;
16
+
17
+ if (!global.configs.jwt && !global.configs.jwt.secret)
18
+ return log("ERROR: no jwt.secret defined in configs.");
19
+
20
+ let secret = global.configs.jwt.secret;
21
+ let iat = new Date().getTime();
22
+ let exp = new Date().getTime() + 60 * 1000;
23
+
24
+ header = {
25
+ ...header,
26
+ typ: header.typ || "JWT",
27
+ alg: header.alg || "HS256",
28
+ };
29
+
30
+ payload = { ...payload, iat: iat, exp: exp };
31
+
32
+ header = base64url(CryptoJS.enc.Utf8.parse(JSON.stringify(header)));
33
+ payload = base64url(CryptoJS.enc.Utf8.parse(JSON.stringify(payload)));
34
+
35
+ const signature = base64url(
36
+ CryptoJS.HmacSHA256(`${header}.${payload}`, secret)
37
+ );
38
+ const token = `${header}.${payload}.${signature}`;
39
+
40
+ this.data.jwt =
41
+ this.data.jwt && typeof this.data.jwt !== "object"
42
+ ? [this.data.jwt]
43
+ : this.data.jwt;
44
+
45
+ this.data.jwt = !this.data.jwt ? token : this.data.jwt.concat(token);
46
+
47
+ this.counters.jwt = (this.counters.jwt || 0) + 1;
48
+
49
+ log("JWT created: " + this.data.jwt);
50
+
51
+ return this;
52
+ }
53
+
54
+ return {
55
+ ...this,
56
+ verify: function (token) {
57
+ const secret = global.configs.jwt.secret;
58
+ const array = token.split(".");
59
+ const header = array[0];
60
+ const payload = array[1];
61
+
62
+ const signature = base64url(
63
+ CryptoJS.HmacSHA256(`${header}.${payload}`, secret)
64
+ );
65
+
66
+ return token === `${header}.${payload}.${signature}`
67
+ ? new Buffer.from(payload, "base64").toString("ascii")
68
+ : false;
69
+ },
70
+ };
71
+ };