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.
Files changed (63) hide show
  1. package/README.md +446 -0
  2. package/babel.config.json +13 -0
  3. package/cjs/core/driverCore.js +37 -0
  4. package/cjs/core/drivers/bull.js +56 -0
  5. package/cjs/core/drivers/fogu.js +14 -0
  6. package/cjs/core/drivers/mq.js +50 -0
  7. package/cjs/core/drivers/nats.js +161 -0
  8. package/cjs/core/drivers/osone.js +14 -0
  9. package/cjs/core/drivers/rabbitmq.js +68 -0
  10. package/cjs/core/drivers/redis.js +68 -0
  11. package/cjs/core/drivers/socket.js +36 -0
  12. package/cjs/core/entityCore.js +22 -0
  13. package/cjs/core/eventCore.js +26 -0
  14. package/cjs/core/index.js +477 -0
  15. package/cjs/core/libCore.js +22 -0
  16. package/cjs/core/repositoryCore.js +30 -0
  17. package/cjs/core/serverCore.js +142 -0
  18. package/cjs/core/serviceCore.js +26 -0
  19. package/cjs/core/utilCore.js +22 -0
  20. package/cjs/core/workerCore.js +27 -0
  21. package/cjs/fileCore.js +27 -0
  22. package/cjs/forawait.js +55 -0
  23. package/cjs/index.js +117 -0
  24. package/cjs/package.json +3 -0
  25. package/esm/core/driverCore.js +33 -0
  26. package/esm/core/drivers/bull.js +49 -0
  27. package/esm/core/drivers/fogu.js +12 -0
  28. package/esm/core/drivers/nats.js +160 -0
  29. package/esm/core/drivers/rabbitmq.js +64 -0
  30. package/esm/core/drivers/redis.js +71 -0
  31. package/esm/core/drivers/socket.js +28 -0
  32. package/esm/core/entityCore.js +12 -0
  33. package/esm/core/eventCore.js +17 -0
  34. package/esm/core/index.js +440 -0
  35. package/esm/core/libCore.js +13 -0
  36. package/esm/core/repositoryCore.js +25 -0
  37. package/esm/core/serverCore.js +155 -0
  38. package/esm/core/serviceCore.js +17 -0
  39. package/esm/core/utilCore.js +12 -0
  40. package/esm/core/workerCore.js +20 -0
  41. package/esm/fileCore.js +19 -0
  42. package/esm/forawait.js +48 -0
  43. package/esm/index.js +128 -0
  44. package/esm/package.json +3 -0
  45. package/lib/index.html +1021 -0
  46. package/package.json +73 -0
  47. package/src/app/events/test/app.js +13 -0
  48. package/src/app/events/test/ws.js +14 -0
  49. package/src/app/services/test/app.js +14 -0
  50. package/src/app/services/test/app1.js +11 -0
  51. package/src/core/entities/user.js +14 -0
  52. package/src/core/libs/hash.js +10 -0
  53. package/src/core/utils/auth.js +19 -0
  54. package/src/index.js +11 -0
  55. package/src/infra/db/index.js +7 -0
  56. package/src/infra/repositories/test/app.js +6 -0
  57. package/src/infra/web/http.js +15 -0
  58. package/src/infra/web/routers/auth.js +30 -0
  59. package/src/infra/web/routers/test.js +26 -0
  60. package/src/infra/web/ws/test.js +35 -0
  61. package/src/infra/workers/test/test.md +14 -0
  62. package/src/start.js +39 -0
  63. package/test/core.test.js +46 -0
@@ -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/utils'
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.util(path + '/' + path_file, {
17
+ file: path_file
18
+ }, obj);
19
+ });
20
+ };
21
+ };
22
+ exports.default = _default;
@@ -0,0 +1,27 @@
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/infra/workers'
12
+ }, obj) => {
13
+ const paths = core.fileCore.paths(path);
14
+ if (!paths.length) return;
15
+ await core.forawait.generate(paths, async path_ => {
16
+ const path_files = core.fileCore.paths(path + '/' + path_);
17
+ await core.forawait.generate(path_files, async (path_file = '') => {
18
+ if (!(path_file.includes('.js') || path_file.includes('.ts'))) return;
19
+ await core.import.job(path + '/' + path_ + '/' + path_file, {
20
+ path: path_,
21
+ file: path_file
22
+ }, obj);
23
+ });
24
+ });
25
+ };
26
+ };
27
+ exports.default = _default;
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _fs = _interopRequireDefault(require("fs"));
8
+ var _path = _interopRequireDefault(require("path"));
9
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
10
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
11
+ var _default = exports.default = {
12
+ path: process.cwd(),
13
+ async import(file, obj = {}) {
14
+ return (await (specifier => new Promise(r => r(`${specifier}`)).then(s => _interopRequireWildcard(require(s))))('file://' + _path.default.resolve(this.path + file))).default(obj);
15
+ },
16
+ async importFile(file) {
17
+ return await (specifier => new Promise(r => r(`${specifier}`)).then(s => _interopRequireWildcard(require(s))))('file://' + _path.default.resolve(this.path + file));
18
+ },
19
+ exist(path_file) {
20
+ return _fs.default.existsSync(_path.default.resolve(this.path + path_file));
21
+ },
22
+ paths(paths) {
23
+ if (!this.exist(paths)) return [];
24
+ return _fs.default.readdirSync(_path.default.resolve(this.path + paths));
25
+ },
26
+ bin: _fs.default.existsSync(process.cwd() + '/esm') ? '/esm' : '/node_modules/create-org-app/esm'
27
+ };
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ var _default = exports.default = {
8
+ generator: function* generator(array) {
9
+ for (let index = 0; index < array.length; index++) {
10
+ yield array[index];
11
+ }
12
+ },
13
+ generator_fn: function* generator(data) {
14
+ if (Array.isArray(data)) {
15
+ for (let index = 0; index < data.length; index++) {
16
+ yield {
17
+ data: data[index],
18
+ index
19
+ };
20
+ }
21
+ } else {
22
+ data = Object.entries(data);
23
+ for (let index = 0; index < data.length; index++) {
24
+ yield {
25
+ data: data[index][1],
26
+ name: data[index][0]
27
+ };
28
+ }
29
+ }
30
+ },
31
+ generate: async function (data, fn, ops = {}, fun_error = console.log) {
32
+ let flag = false;
33
+ const fn_g = this.generator_fn(data);
34
+ while (!flag) {
35
+ const {
36
+ value,
37
+ done
38
+ } = fn_g.next();
39
+ if (value) {
40
+ try {
41
+ await fn(value.data, {
42
+ ...ops,
43
+ index: value.index,
44
+ name: value.name
45
+ });
46
+ } catch (error) {
47
+ try {
48
+ await fun_error(error);
49
+ } catch (error) {}
50
+ }
51
+ }
52
+ flag = done;
53
+ }
54
+ }
55
+ };
package/cjs/index.js ADDED
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.testApp = exports.app = void 0;
7
+ var _dotenv = _interopRequireDefault(require("dotenv"));
8
+ var _fileCore = _interopRequireDefault(require("./fileCore.js"));
9
+ var _index = _interopRequireDefault(require("./core/index.js"));
10
+ var _forawait = _interopRequireDefault(require("./forawait.js"));
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
+ _dotenv.default.config();
13
+ const app = exports.app = {
14
+ async run({
15
+ servers,
16
+ drivers,
17
+ bootFile = "/src/index.js"
18
+ }) {
19
+ const initBoot = await _fileCore.default.importFile(bootFile);
20
+ const {
21
+ bootstrap,
22
+ distroy
23
+ } = initBoot.default || initBoot;
24
+ const sys = (0, _index.default)({});
25
+ await sys.createLib({}, {});
26
+ await sys.createUtil({}, {});
27
+ await sys.createEntity({}, {});
28
+ await sys.createRepository({}, {});
29
+ await sys.createService({}, {});
30
+ await _forawait.default.generate(drivers, async driver => {
31
+ await sys.createDriver(driver);
32
+ });
33
+ await sys.createEvent({}, {});
34
+ await sys.createWorker({}, {});
35
+ await _forawait.default.generate(servers, async server => {
36
+ await sys.createServer(server);
37
+ });
38
+ process.on('uncaughtException', (error, origin) => {
39
+ console.log(`\n${origin} signal received. \n${error}`);
40
+ });
41
+ process.on('SIGINT', grafulShutdown('SIGINT'));
42
+ process.on('SIGTERM', grafulShutdown('SIGTERM'));
43
+ process.on('exit', async code => {
44
+ try {
45
+ await distroy({
46
+ sys: {
47
+ ...sys.core.import
48
+ },
49
+ core: {
50
+ ...sys.core.app
51
+ }
52
+ });
53
+ } catch (error) {}
54
+ console.log('exit signal received', code);
55
+ });
56
+ function grafulShutdown(event) {
57
+ return async code => {
58
+ console.log(`${event} received! with ${code}`);
59
+ try {
60
+ await distroy({
61
+ sys: {
62
+ ...sys.core.import
63
+ },
64
+ core: {
65
+ ...sys.core.app
66
+ }
67
+ });
68
+ } catch (error) {}
69
+ process.exit(0);
70
+ };
71
+ }
72
+ await bootstrap({
73
+ sys: {
74
+ ...sys.core.import
75
+ },
76
+ core: {
77
+ ...sys.core.app
78
+ }
79
+ });
80
+ }
81
+ };
82
+ const testApp = exports.testApp = {
83
+ async run({
84
+ db = {},
85
+ setDB = null
86
+ } = {}) {
87
+ const sys = (0, _index.default)({});
88
+ await sys.createLib({}, {});
89
+ await sys.createUtil({}, {});
90
+ await sys.createEntity({}, {});
91
+ await sys.createEvent({}, {});
92
+ await sys.createService({}, {});
93
+ process.env.DB_TEST = "True";
94
+ await sys.createRepository({}, {
95
+ db: db,
96
+ getDB: setDB
97
+ });
98
+ process.on('uncaughtException', (error, origin) => {
99
+ console.log(`\n${origin} signal received. \n${error}`);
100
+ });
101
+ process.on('SIGINT', grafulShutdown('SIGINT'));
102
+ process.on('SIGTERM', grafulShutdown('SIGTERM'));
103
+ process.on('exit', async code => {
104
+ console.log('exit signal received', code);
105
+ });
106
+ function grafulShutdown(event) {
107
+ return async code => {
108
+ console.log(`${event} received! with ${code}`);
109
+ };
110
+ }
111
+ return {
112
+ core: {
113
+ ...sys.core.app
114
+ }
115
+ };
116
+ }
117
+ };
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -0,0 +1,33 @@
1
+
2
+ export default ({ core }) => {
3
+ return {
4
+ async "nats"(driver) {
5
+ const file = core.fileCore.bin + '/core/drivers/nats.js'
6
+ await core.addMethodCore(driver, file)
7
+ },
8
+ async "redis"(driver) {
9
+ const file = core.fileCore.bin + '/core/drivers/redis.js'
10
+ await core.addMethodCore(driver, file)
11
+ },
12
+ async "bull"(driver) {
13
+ const file = core.fileCore.bin + '/core/drivers/bull.js'
14
+ await core.addMethodCore(driver, file)
15
+ },
16
+
17
+ async "socket"(driver) {
18
+ const file = core.fileCore.bin + '/core/drivers/socket.js'
19
+ await core.addMethodCore(driver, file)
20
+ },
21
+ async "rabbitmq"(driver) {
22
+ const file = core.fileCore.bin + '/core/drivers/rabbitmq.js'
23
+ await core.addMethodCore(driver, file)
24
+ },
25
+ async "fogu"(driver) {
26
+ const file = core.fileCore.bin + '/core/drivers/fogu.js'
27
+ await core.addMethodCore(driver, file)
28
+ }
29
+
30
+ }
31
+
32
+
33
+ }
@@ -0,0 +1,49 @@
1
+
2
+ import { Queue, Worker } from 'bullmq'
3
+ let url
4
+ const jobs = {}
5
+ export default async ({ connection = {
6
+ host: process.env.REDIS_HOST,
7
+ port: process.env.REDIS_PORT,
8
+ password: process.env.REDIS_PASSWORD
9
+ } }) => {
10
+ return {
11
+ async close() {
12
+
13
+ },
14
+ async connect({ url: url3 }) {
15
+ url = url3
16
+ },
17
+ job(name_job) {
18
+ return {
19
+ async cmd(name, data, config) {
20
+ await jobs[name_job].add(name, data);
21
+ }
22
+ }
23
+ },
24
+ addJob: ({ name }) => {
25
+ jobs[name] = new Queue(name, {
26
+ connection
27
+ });
28
+
29
+ },
30
+ worker: ({
31
+ name,
32
+ fn,
33
+ completed = job => {
34
+ console.log(`${job.id} has completed!`);
35
+ },
36
+ failed = (job, err) => {
37
+ console.log(`${job.id} has failed with ${err.message}`);
38
+ }
39
+
40
+ }) => {
41
+ const myWorker = new Worker(name, fn, {
42
+ connection
43
+ });
44
+ myWorker.on('completed', completed);
45
+ myWorker.on('failed', failed);
46
+
47
+ }
48
+ }
49
+ }
@@ -0,0 +1,12 @@
1
+ import { Fogu } from 'fmp-js';
2
+
3
+
4
+
5
+ export default async (config) => {
6
+ // Or create a new instance explicitly:
7
+ const client = new Fogu();
8
+ await client.connect(config.url)
9
+ return client
10
+
11
+ }
12
+
@@ -0,0 +1,160 @@
1
+ import { connect, StringCodec, headers, Empty } from "nats";
2
+ export default async (config) => {
3
+ let nc = await connect(config);
4
+ const sc = StringCodec();
5
+ const js = nc.jetstream();
6
+
7
+ const stores = {
8
+
9
+ }
10
+
11
+ // create an entry - this is similar to a put, but will fail if the
12
+ // key exists
13
+
14
+ return {
15
+ store: {
16
+ kv(kv) {
17
+ return {
18
+ async create(name, data) {
19
+ let input = data
20
+ if (typeof input == 'object') {
21
+ input = JSON.stringify(input)
22
+ }
23
+ const e = await stores[kv].get(name);
24
+ let value =new TextDecoder().decode(e?.value)
25
+ if (e && value) return
26
+ await stores[kv].create(name, sc.encode(input));
27
+ },
28
+ async del(name) {
29
+ await stores[kv].delete(name);
30
+ },
31
+ async set(name, data) {
32
+ let input = data
33
+ if (typeof input == 'object') {
34
+ input = JSON.stringify(input)
35
+ }
36
+ await stores[kv].put(name, sc.encode(input));
37
+ },
38
+ async get(name) {
39
+ const e = await stores[kv].get(name);
40
+ let value =new TextDecoder().decode(e?.value)
41
+ try {
42
+ value = JSON.parse(value)
43
+ } catch (error) {
44
+ value =new TextDecoder().decode(e?.value)
45
+ }
46
+
47
+ return value
48
+ }
49
+ }
50
+
51
+ },
52
+ async createKV(name, fn, config = { history: 5 }) {
53
+ stores[name] = await js.views.kv(name, config);
54
+ const watch = await stores[name].watch();
55
+ (async () => {
56
+ for await (const e of watch) {
57
+ if (!fn) return
58
+ await fn(e)
59
+ }
60
+ })().then();
61
+ }
62
+
63
+ },
64
+ async close() {
65
+ return nc.drain()
66
+ },
67
+ sub({ topic }, fn, config = {}) {
68
+ //{ queue: queue || '' }
69
+ (async (sub) => {
70
+ for await (const m of sub) {
71
+ let input =new TextDecoder().decode(m.data)
72
+ try {
73
+ input = JSON.parse(input)
74
+ } catch (error) {
75
+ input =new TextDecoder().decode(m.data)
76
+ }
77
+ try {
78
+ await fn(input)
79
+ } catch (error) {
80
+
81
+ }
82
+ }
83
+
84
+ })(nc.subscribe(topic, config));
85
+ },
86
+ pub({ topic }, data) {
87
+ let input = data
88
+ if (typeof input == 'object') {
89
+ input = JSON.stringify(input)
90
+ }
91
+ nc.publish(topic, sc.encode(Buffer.from(input)));
92
+ },
93
+ async connect() {
94
+ nc = await connect({ servers });
95
+ },
96
+ service(name, fn, auth = null, config = {}) {
97
+
98
+ (async (sub) => {
99
+ for await (const m of sub) {
100
+ const headers = m.headers
101
+
102
+ if (auth) {
103
+ try {
104
+ const ok = await auth({
105
+ get(name) {
106
+ return headers?.get(name)
107
+ }
108
+ })
109
+ if (!ok) {
110
+ return m.respond(sc.encode(Buffer.from(JSON.stringify({
111
+ error: "dd",
112
+ data: null
113
+ }))))
114
+ }
115
+ } catch (error) {
116
+ return m.respond(sc.encode(Buffer.from(JSON.stringify({
117
+ error: "dd",
118
+ data: null
119
+ }))))
120
+
121
+ }
122
+ }
123
+
124
+ let input =new TextDecoder().decode(m.data)
125
+ try {
126
+ input = JSON.parse(input)
127
+ } catch (error) {
128
+ input =new TextDecoder().decode(m.data)
129
+ }
130
+ const res = await fn(input)
131
+ if (m.respond(sc.encode(Buffer.from(JSON.stringify(res || {}))))) {
132
+ // console.info(`[time] handled #${sub.getProcessed()}`);
133
+ } else {
134
+ // console.log(`[time] #${sub.getProcessed()} ignored - no reply subject`);
135
+ }
136
+ }
137
+ })(nc.subscribe("service:" + name, config));
138
+ },
139
+ async command(name, data = {}, _headers = {}, config = {}) {
140
+ const h = headers();
141
+ Object.entries(_headers).forEach(([key, value]) => {
142
+ h.append(key, value);
143
+ });
144
+ let input = data
145
+ if (typeof input == 'object') {
146
+ input = JSON.stringify(input)
147
+ }
148
+ const res = await nc.request("service:" + name, sc.encode(Buffer.from(input)), { timeout: config.timeout || 5000, headers: h })
149
+
150
+ let output = new TextDecoder().decode(res.data)
151
+ try {
152
+ output = JSON.parse(output)
153
+ } catch (error) {
154
+
155
+ }
156
+ return output
157
+
158
+ }
159
+ }
160
+ }
@@ -0,0 +1,64 @@
1
+ import amqplib from 'amqplib';
2
+ let client
3
+ export default async (config) => {
4
+ client = await amqplib.connect(config.url || 'amqp://localhost');
5
+ client = await client.createChannel();
6
+ return {
7
+ async connect() {
8
+ client = await amqplib.connect(config.url || 'amqp://localhost');
9
+ client = await client.createChannel();
10
+ },
11
+
12
+ async close() {
13
+
14
+ },
15
+ async send(queue, data) {
16
+ let input = data
17
+ await client.assertQueue(queue);
18
+ if (typeof data == 'object') {
19
+ input = JSON.stringify(input)
20
+ }
21
+ return client.sendToQueue(queue, Buffer.from(input));
22
+ },
23
+ async sub({ queue, topic, pattern = '', exchangeType = 'topic' }, fn = console.log) {
24
+
25
+ await client.assertQueue(queue)
26
+ if (topic && exchangeType) {
27
+ await client.assertExchange(topic, exchangeType)
28
+ await client.bindQueue(queue, topic, pattern)
29
+ }
30
+ client.consume(queue, async (msg) => {
31
+ if (msg !== null) {
32
+ let input = msg.content.toString()
33
+ try {
34
+ input = JSON.parse(input)
35
+ } catch (error) {
36
+
37
+ }
38
+ await fn({ data: input, ack: () => client.ack(msg) })
39
+ //ch1.ack(msg);
40
+ }
41
+
42
+
43
+ })
44
+
45
+ },
46
+
47
+ async pub({ routingKey = '', topic = 'my-topic', exchangeType = 'topic' }, data) {
48
+ await client.assertExchange(topic, exchangeType)
49
+ let input = data
50
+ if (typeof data == 'object') {
51
+ input = JSON.stringify(input)
52
+ }
53
+ return client.publish(
54
+ topic,
55
+ routingKey,
56
+ Buffer.from(input),
57
+ {
58
+ persistent: true
59
+ }
60
+ )
61
+ },
62
+ }
63
+
64
+ }
@@ -0,0 +1,71 @@
1
+ import { createClient } from 'redis';
2
+ export default async (config) => {
3
+ let clientPub = null
4
+ let clientSub = null
5
+ clientPub = createClient(config);
6
+ clientPub.on('error', err => console.log('Redis Client Error', err));
7
+ clientSub = clientPub.duplicate();
8
+ await clientPub.connect();
9
+ await clientSub.connect();
10
+
11
+ return {
12
+ client: clientPub,
13
+ async connect() {
14
+ clientPub = createClient(config);
15
+ clientPub.on('error', err => console.log('Redis Client Error', err));
16
+ clientSub = clientPub.duplicate();
17
+ await clientPub.connect();
18
+ await clientSub.connect();
19
+
20
+ this.client = clientPub
21
+ },
22
+ async close() {
23
+ await client.disconnect();
24
+ await clientSub.disconnect();
25
+ await clientPub.disconnect();
26
+ },
27
+ async set(key, value) {
28
+ let input = value
29
+ try {
30
+ input = JSON.stringify(input)
31
+ } catch (error) {
32
+
33
+ }
34
+ await clientPub.set(key, input);
35
+
36
+ },
37
+ async get(key) {
38
+ const res = await clientPub.get(key);
39
+ let data = res
40
+ try {
41
+ data = JSON.parse(res)
42
+ } catch (error) {
43
+
44
+ }
45
+ return data
46
+ },
47
+ async pub({ topic }, data) {
48
+ let input = data
49
+ try {
50
+ input = JSON.stringify(input)
51
+ } catch (error) {
52
+
53
+ }
54
+ await clientPub.publish(topic, input);
55
+ },
56
+ async sub({ topic }, cb = console.log) {
57
+ clientSub.subscribe(topic, async (input) => {
58
+ let data = input
59
+ try {
60
+ data = JSON.parse(input)
61
+ } catch (error) {
62
+
63
+ }
64
+ await cb(data)
65
+ });
66
+ }
67
+
68
+ }
69
+ }
70
+
71
+
@@ -0,0 +1,28 @@
1
+
2
+ import { io } from "socket.io-client";
3
+ export default ({ }) => ({
4
+ client: null,
5
+ async close() {
6
+
7
+ },
8
+ async connect({ url, config = {} }) {
9
+ this.client = io(url, config);
10
+ },
11
+ async req(event, input) {
12
+ return new Promise((resolve, reject) => {
13
+ this.client.emit(event, input, (error, res) => {
14
+ if (error) reject(error)
15
+ resolve(res)
16
+ })
17
+ })
18
+ },
19
+ async pub({ topic }, data) {
20
+ await this.client.emit(topic, input);
21
+ },
22
+ async sub({ topic }, cb = console.log) {
23
+ this.client.on(topic, cb);
24
+ }
25
+
26
+ })
27
+
28
+
@@ -0,0 +1,12 @@
1
+
2
+ export default ({ core }) => {
3
+ return async ({ path = '/src/core/entities' }, obj = {}) => {
4
+ const paths = core.fileCore.paths(path)
5
+ await core.forawait.generate(paths, async (path_file = '') => {
6
+ if (!(path_file.includes('.js') || path_file.includes('.ts'))) return
7
+ await core.import.entity(path + '/' + path_file, {
8
+ file: path_file
9
+ }, obj)
10
+ })
11
+ }
12
+ }