org-core-js 0.0.1
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/README.md +446 -0
- package/babel.config.json +13 -0
- package/cjs/core/driverCore.js +37 -0
- package/cjs/core/drivers/bull.js +56 -0
- package/cjs/core/drivers/fogu.js +14 -0
- package/cjs/core/drivers/mq.js +50 -0
- package/cjs/core/drivers/nats.js +161 -0
- package/cjs/core/drivers/osone.js +14 -0
- package/cjs/core/drivers/rabbitmq.js +68 -0
- package/cjs/core/drivers/redis.js +68 -0
- package/cjs/core/drivers/socket.js +36 -0
- package/cjs/core/entityCore.js +22 -0
- package/cjs/core/eventCore.js +26 -0
- package/cjs/core/index.js +477 -0
- package/cjs/core/libCore.js +22 -0
- package/cjs/core/repositoryCore.js +30 -0
- package/cjs/core/serverCore.js +142 -0
- package/cjs/core/serviceCore.js +26 -0
- package/cjs/core/utilCore.js +22 -0
- package/cjs/core/workerCore.js +27 -0
- package/cjs/fileCore.js +27 -0
- package/cjs/forawait.js +55 -0
- package/cjs/index.js +117 -0
- package/cjs/package.json +3 -0
- package/esm/core/driverCore.js +33 -0
- package/esm/core/drivers/bull.js +49 -0
- package/esm/core/drivers/fogu.js +12 -0
- package/esm/core/drivers/nats.js +160 -0
- package/esm/core/drivers/rabbitmq.js +64 -0
- package/esm/core/drivers/redis.js +71 -0
- package/esm/core/drivers/socket.js +28 -0
- package/esm/core/entityCore.js +12 -0
- package/esm/core/eventCore.js +17 -0
- package/esm/core/index.js +440 -0
- package/esm/core/libCore.js +13 -0
- package/esm/core/repositoryCore.js +25 -0
- package/esm/core/serverCore.js +155 -0
- package/esm/core/serviceCore.js +17 -0
- package/esm/core/utilCore.js +12 -0
- package/esm/core/workerCore.js +20 -0
- package/esm/fileCore.js +19 -0
- package/esm/forawait.js +48 -0
- package/esm/index.js +128 -0
- package/esm/package.json +3 -0
- package/lib/index.html +1021 -0
- package/package.json +73 -0
- package/src/app/events/test/app.js +13 -0
- package/src/app/events/test/ws.js +14 -0
- package/src/app/services/test/app.js +14 -0
- package/src/app/services/test/app1.js +11 -0
- package/src/core/entities/user.js +14 -0
- package/src/core/libs/hash.js +10 -0
- package/src/core/utils/auth.js +19 -0
- package/src/index.js +11 -0
- package/src/infra/db/index.js +7 -0
- package/src/infra/repositories/test/app.js +6 -0
- package/src/infra/web/http.js +15 -0
- package/src/infra/web/routers/auth.js +30 -0
- package/src/infra/web/routers/test.js +26 -0
- package/src/infra/web/ws/test.js +35 -0
- package/src/infra/workers/test/test.md +14 -0
- package/src/start.js +39 -0
- package/test/core.test.js +46 -0
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _nats = require("nats");
|
|
8
|
+
var _default = async config => {
|
|
9
|
+
let nc = await (0, _nats.connect)(config);
|
|
10
|
+
const sc = (0, _nats.StringCodec)();
|
|
11
|
+
const js = nc.jetstream();
|
|
12
|
+
const stores = {};
|
|
13
|
+
|
|
14
|
+
// create an entry - this is similar to a put, but will fail if the
|
|
15
|
+
// key exists
|
|
16
|
+
|
|
17
|
+
return {
|
|
18
|
+
store: {
|
|
19
|
+
kv(kv) {
|
|
20
|
+
return {
|
|
21
|
+
async create(name, data) {
|
|
22
|
+
let input = data;
|
|
23
|
+
if (typeof input == 'object') {
|
|
24
|
+
input = JSON.stringify(input);
|
|
25
|
+
}
|
|
26
|
+
const e = await stores[kv].get(name);
|
|
27
|
+
let value = new TextDecoder().decode(e?.value);
|
|
28
|
+
if (e && value) return;
|
|
29
|
+
await stores[kv].create(name, sc.encode(input));
|
|
30
|
+
},
|
|
31
|
+
async del(name) {
|
|
32
|
+
await stores[kv].delete(name);
|
|
33
|
+
},
|
|
34
|
+
async set(name, data) {
|
|
35
|
+
let input = data;
|
|
36
|
+
if (typeof input == 'object') {
|
|
37
|
+
input = JSON.stringify(input);
|
|
38
|
+
}
|
|
39
|
+
await stores[kv].put(name, sc.encode(input));
|
|
40
|
+
},
|
|
41
|
+
async get(name) {
|
|
42
|
+
const e = await stores[kv].get(name);
|
|
43
|
+
let value = new TextDecoder().decode(e?.value);
|
|
44
|
+
try {
|
|
45
|
+
value = JSON.parse(value);
|
|
46
|
+
} catch (error) {
|
|
47
|
+
value = new TextDecoder().decode(e?.value);
|
|
48
|
+
}
|
|
49
|
+
return value;
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
},
|
|
53
|
+
async createKV(name, fn, config = {
|
|
54
|
+
history: 5
|
|
55
|
+
}) {
|
|
56
|
+
stores[name] = await js.views.kv(name, config);
|
|
57
|
+
const watch = await stores[name].watch();
|
|
58
|
+
(async () => {
|
|
59
|
+
for await (const e of watch) {
|
|
60
|
+
if (!fn) return;
|
|
61
|
+
await fn(e);
|
|
62
|
+
}
|
|
63
|
+
})().then();
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
async close() {
|
|
67
|
+
return nc.drain();
|
|
68
|
+
},
|
|
69
|
+
sub({
|
|
70
|
+
topic
|
|
71
|
+
}, fn, config = {}) {
|
|
72
|
+
//{ queue: queue || '' }
|
|
73
|
+
(async sub => {
|
|
74
|
+
for await (const m of sub) {
|
|
75
|
+
let input = new TextDecoder().decode(m.data);
|
|
76
|
+
try {
|
|
77
|
+
input = JSON.parse(input);
|
|
78
|
+
} catch (error) {
|
|
79
|
+
input = new TextDecoder().decode(m.data);
|
|
80
|
+
}
|
|
81
|
+
try {
|
|
82
|
+
await fn(input);
|
|
83
|
+
} catch (error) {}
|
|
84
|
+
}
|
|
85
|
+
})(nc.subscribe(topic, config));
|
|
86
|
+
},
|
|
87
|
+
pub({
|
|
88
|
+
topic
|
|
89
|
+
}, data) {
|
|
90
|
+
let input = data;
|
|
91
|
+
if (typeof input == 'object') {
|
|
92
|
+
input = JSON.stringify(input);
|
|
93
|
+
}
|
|
94
|
+
nc.publish(topic, sc.encode(Buffer.from(input)));
|
|
95
|
+
},
|
|
96
|
+
async connect() {
|
|
97
|
+
nc = await (0, _nats.connect)({
|
|
98
|
+
servers
|
|
99
|
+
});
|
|
100
|
+
},
|
|
101
|
+
service(name, fn, auth = null, config = {}) {
|
|
102
|
+
(async sub => {
|
|
103
|
+
for await (const m of sub) {
|
|
104
|
+
const headers = m.headers;
|
|
105
|
+
if (auth) {
|
|
106
|
+
try {
|
|
107
|
+
const ok = await auth({
|
|
108
|
+
get(name) {
|
|
109
|
+
return headers?.get(name);
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
if (!ok) {
|
|
113
|
+
return m.respond(sc.encode(Buffer.from(JSON.stringify({
|
|
114
|
+
error: "dd",
|
|
115
|
+
data: null
|
|
116
|
+
}))));
|
|
117
|
+
}
|
|
118
|
+
} catch (error) {
|
|
119
|
+
return m.respond(sc.encode(Buffer.from(JSON.stringify({
|
|
120
|
+
error: "dd",
|
|
121
|
+
data: null
|
|
122
|
+
}))));
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
let input = new TextDecoder().decode(m.data);
|
|
126
|
+
try {
|
|
127
|
+
input = JSON.parse(input);
|
|
128
|
+
} catch (error) {
|
|
129
|
+
input = new TextDecoder().decode(m.data);
|
|
130
|
+
}
|
|
131
|
+
const res = await fn(input);
|
|
132
|
+
if (m.respond(sc.encode(Buffer.from(JSON.stringify(res || {}))))) {
|
|
133
|
+
// console.info(`[time] handled #${sub.getProcessed()}`);
|
|
134
|
+
} else {
|
|
135
|
+
// console.log(`[time] #${sub.getProcessed()} ignored - no reply subject`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
})(nc.subscribe("service:" + name, config));
|
|
139
|
+
},
|
|
140
|
+
async command(name, data = {}, _headers = {}, config = {}) {
|
|
141
|
+
const h = (0, _nats.headers)();
|
|
142
|
+
Object.entries(_headers).forEach(([key, value]) => {
|
|
143
|
+
h.append(key, value);
|
|
144
|
+
});
|
|
145
|
+
let input = data;
|
|
146
|
+
if (typeof input == 'object') {
|
|
147
|
+
input = JSON.stringify(input);
|
|
148
|
+
}
|
|
149
|
+
const res = await nc.request("service:" + name, sc.encode(Buffer.from(input)), {
|
|
150
|
+
timeout: config.timeout || 5000,
|
|
151
|
+
headers: h
|
|
152
|
+
});
|
|
153
|
+
let output = new TextDecoder().decode(res.data);
|
|
154
|
+
try {
|
|
155
|
+
output = JSON.parse(output);
|
|
156
|
+
} catch (error) {}
|
|
157
|
+
return output;
|
|
158
|
+
}
|
|
159
|
+
};
|
|
160
|
+
};
|
|
161
|
+
exports.default = _default;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _osone = require("osone");
|
|
8
|
+
var _default = async config => {
|
|
9
|
+
// Ou criar uma nova instância
|
|
10
|
+
const osone = (0, _osone.New)();
|
|
11
|
+
await osone.connect(config.url);
|
|
12
|
+
return osone;
|
|
13
|
+
};
|
|
14
|
+
exports.default = _default;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _amqplib = _interopRequireDefault(require("amqplib"));
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
|
+
let client;
|
|
10
|
+
var _default = async config => {
|
|
11
|
+
client = await _amqplib.default.connect(config.url || 'amqp://localhost');
|
|
12
|
+
client = await client.createChannel();
|
|
13
|
+
return {
|
|
14
|
+
async connect() {
|
|
15
|
+
client = await _amqplib.default.connect(config.url || 'amqp://localhost');
|
|
16
|
+
client = await client.createChannel();
|
|
17
|
+
},
|
|
18
|
+
async close() {},
|
|
19
|
+
async send(queue, data) {
|
|
20
|
+
let input = data;
|
|
21
|
+
await client.assertQueue(queue);
|
|
22
|
+
if (typeof data == 'object') {
|
|
23
|
+
input = JSON.stringify(input);
|
|
24
|
+
}
|
|
25
|
+
return client.sendToQueue(queue, Buffer.from(input));
|
|
26
|
+
},
|
|
27
|
+
async sub({
|
|
28
|
+
queue,
|
|
29
|
+
topic,
|
|
30
|
+
pattern = '',
|
|
31
|
+
exchangeType = 'topic'
|
|
32
|
+
}, fn = console.log) {
|
|
33
|
+
await client.assertQueue(queue);
|
|
34
|
+
if (topic && exchangeType) {
|
|
35
|
+
await client.assertExchange(topic, exchangeType);
|
|
36
|
+
await client.bindQueue(queue, topic, pattern);
|
|
37
|
+
}
|
|
38
|
+
client.consume(queue, async msg => {
|
|
39
|
+
if (msg !== null) {
|
|
40
|
+
let input = msg.content.toString();
|
|
41
|
+
try {
|
|
42
|
+
input = JSON.parse(input);
|
|
43
|
+
} catch (error) {}
|
|
44
|
+
await fn({
|
|
45
|
+
data: input,
|
|
46
|
+
ack: () => client.ack(msg)
|
|
47
|
+
});
|
|
48
|
+
//ch1.ack(msg);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
},
|
|
52
|
+
async pub({
|
|
53
|
+
routingKey = '',
|
|
54
|
+
topic = 'my-topic',
|
|
55
|
+
exchangeType = 'topic'
|
|
56
|
+
}, data) {
|
|
57
|
+
await client.assertExchange(topic, exchangeType);
|
|
58
|
+
let input = data;
|
|
59
|
+
if (typeof data == 'object') {
|
|
60
|
+
input = JSON.stringify(input);
|
|
61
|
+
}
|
|
62
|
+
return client.publish(topic, routingKey, Buffer.from(input), {
|
|
63
|
+
persistent: true
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
exports.default = _default;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _redis = require("redis");
|
|
8
|
+
var _default = async config => {
|
|
9
|
+
let clientPub = null;
|
|
10
|
+
let clientSub = null;
|
|
11
|
+
clientPub = (0, _redis.createClient)(config);
|
|
12
|
+
clientPub.on('error', err => console.log('Redis Client Error', err));
|
|
13
|
+
clientSub = clientPub.duplicate();
|
|
14
|
+
await clientPub.connect();
|
|
15
|
+
await clientSub.connect();
|
|
16
|
+
return {
|
|
17
|
+
client: clientPub,
|
|
18
|
+
async connect() {
|
|
19
|
+
clientPub = (0, _redis.createClient)(config);
|
|
20
|
+
clientPub.on('error', err => console.log('Redis Client Error', err));
|
|
21
|
+
clientSub = clientPub.duplicate();
|
|
22
|
+
await clientPub.connect();
|
|
23
|
+
await clientSub.connect();
|
|
24
|
+
this.client = clientPub;
|
|
25
|
+
},
|
|
26
|
+
async close() {
|
|
27
|
+
await client.disconnect();
|
|
28
|
+
await clientSub.disconnect();
|
|
29
|
+
await clientPub.disconnect();
|
|
30
|
+
},
|
|
31
|
+
async set(key, value) {
|
|
32
|
+
let input = value;
|
|
33
|
+
try {
|
|
34
|
+
input = JSON.stringify(input);
|
|
35
|
+
} catch (error) {}
|
|
36
|
+
await clientPub.set(key, input);
|
|
37
|
+
},
|
|
38
|
+
async get(key) {
|
|
39
|
+
const res = await clientPub.get(key);
|
|
40
|
+
let data = res;
|
|
41
|
+
try {
|
|
42
|
+
data = JSON.parse(res);
|
|
43
|
+
} catch (error) {}
|
|
44
|
+
return data;
|
|
45
|
+
},
|
|
46
|
+
async pub({
|
|
47
|
+
topic
|
|
48
|
+
}, data) {
|
|
49
|
+
let input = data;
|
|
50
|
+
try {
|
|
51
|
+
input = JSON.stringify(input);
|
|
52
|
+
} catch (error) {}
|
|
53
|
+
await clientPub.publish(topic, input);
|
|
54
|
+
},
|
|
55
|
+
async sub({
|
|
56
|
+
topic
|
|
57
|
+
}, cb = console.log) {
|
|
58
|
+
clientSub.subscribe(topic, async input => {
|
|
59
|
+
let data = input;
|
|
60
|
+
try {
|
|
61
|
+
data = JSON.parse(input);
|
|
62
|
+
} catch (error) {}
|
|
63
|
+
await cb(data);
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
exports.default = _default;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _socket = require("socket.io-client");
|
|
8
|
+
var _default = ({}) => ({
|
|
9
|
+
client: null,
|
|
10
|
+
async close() {},
|
|
11
|
+
async connect({
|
|
12
|
+
url,
|
|
13
|
+
config = {}
|
|
14
|
+
}) {
|
|
15
|
+
this.client = (0, _socket.io)(url, config);
|
|
16
|
+
},
|
|
17
|
+
async req(event, input) {
|
|
18
|
+
return new Promise((resolve, reject) => {
|
|
19
|
+
this.client.emit(event, input, (error, res) => {
|
|
20
|
+
if (error) reject(error);
|
|
21
|
+
resolve(res);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
},
|
|
25
|
+
async pub({
|
|
26
|
+
topic
|
|
27
|
+
}, data) {
|
|
28
|
+
await this.client.emit(topic, input);
|
|
29
|
+
},
|
|
30
|
+
async sub({
|
|
31
|
+
topic
|
|
32
|
+
}, cb = console.log) {
|
|
33
|
+
this.client.on(topic, cb);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
exports.default = _default;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _default = ({
|
|
8
|
+
core
|
|
9
|
+
}) => {
|
|
10
|
+
return async ({
|
|
11
|
+
path = '/src/core/entities'
|
|
12
|
+
}, obj = {}) => {
|
|
13
|
+
const paths = core.fileCore.paths(path);
|
|
14
|
+
await core.forawait.generate(paths, async (path_file = '') => {
|
|
15
|
+
if (!(path_file.includes('.js') || path_file.includes('.ts'))) return;
|
|
16
|
+
await core.import.entity(path + '/' + path_file, {
|
|
17
|
+
file: path_file
|
|
18
|
+
}, obj);
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
};
|
|
22
|
+
exports.default = _default;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _default = ({
|
|
8
|
+
core
|
|
9
|
+
}) => {
|
|
10
|
+
return async ({
|
|
11
|
+
path = '/src/app/events'
|
|
12
|
+
}, obj = {}) => {
|
|
13
|
+
const paths = core.fileCore.paths(path);
|
|
14
|
+
await core.forawait.generate(paths, async path_ => {
|
|
15
|
+
const path_files = core.fileCore.paths(path + '/' + path_);
|
|
16
|
+
await core.forawait.generate(path_files, async (path_file = '') => {
|
|
17
|
+
if (!(path_file.includes('.js') || path_file.includes('.ts'))) return;
|
|
18
|
+
await core.import.event(path + '/' + path_ + '/' + path_file, {
|
|
19
|
+
path: path_,
|
|
20
|
+
file: path_file
|
|
21
|
+
}, obj);
|
|
22
|
+
});
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
exports.default = _default;
|