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,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;