@wabot-dev/framework 0.1.0-beta.1 → 0.1.0-beta.10

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 (88) hide show
  1. package/dist/src/ai/deepseek/DeepSeekChatBotAdapter.js +12 -13
  2. package/dist/src/ai/openia/OpenaiChatBotAdapter.js +9 -7
  3. package/dist/src/channels/cmd/@cmd.js +0 -4
  4. package/dist/src/channels/cmd/CmdChannel.js +0 -4
  5. package/dist/src/channels/express/ExpressProvider.js +46 -0
  6. package/dist/src/channels/http/HttpServerProvider.js +31 -0
  7. package/dist/src/channels/{socket-io → socket}/@socket.js +0 -4
  8. package/dist/src/channels/{socket-io → socket}/SocketChannel.js +12 -11
  9. package/dist/src/channels/socket/SocketServerProvider.js +50 -0
  10. package/dist/src/channels/telegram/@telegram.js +0 -4
  11. package/dist/src/channels/telegram/TelegramChannel.js +0 -4
  12. package/dist/src/channels/wabot/WabotDevConnection.js +57 -0
  13. package/dist/src/channels/{whatsapp/WhatsAppDevSocketContracts.js → wabot/WabotDevSocketContracts.js} +3 -3
  14. package/dist/src/channels/whatsapp/@whatsapp.js +0 -4
  15. package/dist/src/channels/whatsapp/EnvWhatsAppRepository.js +49 -0
  16. package/dist/src/channels/whatsapp/PgWhatsAppRepository.js +41 -0
  17. package/dist/src/channels/whatsapp/WhatsApp.js +32 -0
  18. package/dist/src/channels/whatsapp/WhatsAppChannel.js +33 -32
  19. package/dist/src/channels/whatsapp/{WhatsAppConnection.js → WhatsAppReceiver.js} +4 -6
  20. package/dist/src/channels/whatsapp/WhatsAppReceiverByDevConnection.js +32 -0
  21. package/dist/src/channels/whatsapp/WhatsAppReceiverByWebHook.js +63 -0
  22. package/dist/src/channels/whatsapp/WhatsAppRepository.js +10 -0
  23. package/dist/src/channels/whatsapp/WhatsAppSender.js +93 -17
  24. package/dist/src/channels/whatsapp/WhatsAppSenderByCloudApi.js +124 -0
  25. package/dist/src/channels/whatsapp/WhatsAppSenderByDevConnection.js +61 -0
  26. package/dist/src/chatbot/ChatBotAdapter.js +1 -5
  27. package/dist/src/chatbot/metadata/@chatBot.js +0 -5
  28. package/dist/src/chatbot/metadata/ChatBotMetadataStore.js +0 -5
  29. package/dist/src/controller/metadata/ControllerMetadataStore.js +0 -2
  30. package/dist/src/controller/metadata/controller/@chatController.js +0 -2
  31. package/dist/src/core/IMessageContext.js +0 -2
  32. package/dist/src/env/WabotEnv.js +6 -0
  33. package/dist/src/index.d.ts +421 -201
  34. package/dist/src/index.js +55 -28
  35. package/dist/src/mindset/MindsetOperator.js +1 -3
  36. package/dist/src/mindset/metadata/MindsetMetadataStore.js +0 -2
  37. package/dist/src/mindset/metadata/mindsets/@mindset.js +0 -2
  38. package/dist/src/mindset/metadata/modules/@mindsetModule.js +0 -2
  39. package/dist/src/pre-made/module/authentication/requests/SendOneTimePasswordRequest.js +0 -2
  40. package/dist/src/pre-made/module/authentication/requests/ValidateOneTimePasswordRequest.js +0 -2
  41. package/dist/src/pre-made/module/html/HtmlModule.js +70 -0
  42. package/dist/src/pre-made/module/register-user/requests/RegisterUserWithEmailRequest.js +0 -2
  43. package/dist/src/pre-made/repository/chat/pg/PgChatMemory.js +1 -7
  44. package/dist/src/pre-made/repository/chat/pg/PgChatRepository.js +0 -5
  45. package/dist/src/pre-made/repository/user/pg/PgUserRepository.js +0 -5
  46. package/dist/src/repository/pg/PgCrudRepository.js +7 -1
  47. package/dist/src/rest-controller/metadata/@get.js +19 -0
  48. package/dist/src/rest-controller/metadata/@post.js +19 -0
  49. package/dist/src/rest-controller/metadata/@restController.js +15 -0
  50. package/dist/src/rest-controller/metadata/RestControllerMetadataStore.js +37 -0
  51. package/dist/src/rest-controller/runRestControllers.js +74 -0
  52. package/dist/src/server/prepareChatContainer.js +4 -4
  53. package/dist/src/server/runChannel.js +2 -10
  54. package/dist/src/server/runServer.js +0 -43
  55. package/dist/src/validation/metadata/@isBoolean.js +17 -0
  56. package/dist/src/validation/metadata/@isDate.js +17 -0
  57. package/dist/src/validation/metadata/@isNotEmpty.js +17 -0
  58. package/dist/src/validation/metadata/@isNumber.js +17 -0
  59. package/dist/src/validation/metadata/@isOptional.js +17 -0
  60. package/dist/src/validation/metadata/@isPresent.js +17 -0
  61. package/dist/src/validation/metadata/@isString.js +17 -0
  62. package/dist/src/validation/metadata/@max.js +18 -0
  63. package/dist/src/validation/metadata/@min.js +18 -0
  64. package/dist/src/validation/metadata/@validable.js +14 -0
  65. package/dist/src/validation/metadata/ValidationMetadataStore.js +55 -0
  66. package/dist/src/validation/validateModel2.js +11 -0
  67. package/dist/src/validation/validators/validateIsBoolean.js +12 -0
  68. package/dist/src/validation/validators/validateIsDate.js +16 -0
  69. package/dist/src/validation/validators/validateIsNotEmpty.js +12 -0
  70. package/dist/src/validation/validators/validateIsNumber.js +12 -0
  71. package/dist/src/validation/validators/validateIsOptional.js +5 -0
  72. package/dist/src/validation/validators/validateIsPresent.js +12 -0
  73. package/dist/src/validation/validators/validateIsString.js +12 -0
  74. package/dist/src/validation/validators/validateMax.js +17 -0
  75. package/dist/src/validation/validators/validateMin.js +17 -0
  76. package/dist/src/validation/validators/validateModel.js +47 -0
  77. package/package.json +4 -6
  78. package/dist/src/channels/whatsapp/WhatsAppDevConnection.js +0 -69
  79. package/dist/src/channels/whatsapp/WhatsAppProdConnection.js +0 -39
  80. package/dist/src/controller/express/Express.js +0 -5
  81. package/dist/src/controller/socket.io/SocketIO.js +0 -5
  82. package/dist/src/mindset/metadata/params/@isOptional.js +0 -21
  83. package/dist/src/pre-made/repository/chat/sqlite/SqliteChatMemory.js +0 -23
  84. package/dist/src/pre-made/repository/chat/sqlite/SqliteChatRepository.js +0 -30
  85. package/dist/src/pre-made/repository/user/sqlite/SqliteUserRepository.js +0 -23
  86. package/dist/src/repository/sqlite/SqliteCrudRepository.js +0 -85
  87. package/dist/src/repository/sqlite/SqlitePersistentMapper.js +0 -17
  88. /package/dist/src/channels/{socket-io → socket}/SocketChannelConfig.js +0 -0
@@ -0,0 +1,17 @@
1
+ import { container } from '../../injection/index.js';
2
+ import { validateIsDate } from '../validators/validateIsDate.js';
3
+ import { ValidationMetadataStore } from './ValidationMetadataStore.js';
4
+
5
+ function isDate() {
6
+ return function (target, propertyKey) {
7
+ const propertyName = propertyKey.toString();
8
+ const store = container.resolve(ValidationMetadataStore);
9
+ store.saveValidatorMetadata({
10
+ modelConstructor: target.constructor,
11
+ propertyName,
12
+ validator: validateIsDate,
13
+ });
14
+ };
15
+ }
16
+
17
+ export { isDate };
@@ -0,0 +1,17 @@
1
+ import { container } from '../../injection/index.js';
2
+ import { ValidationMetadataStore } from './ValidationMetadataStore.js';
3
+ import { validateIsNotEmpty } from '../validators/validateIsNotEmpty.js';
4
+
5
+ function isNotEmpty() {
6
+ return function (target, propertyKey) {
7
+ const propertyName = propertyKey.toString();
8
+ const store = container.resolve(ValidationMetadataStore);
9
+ store.saveValidatorMetadata({
10
+ modelConstructor: target.constructor,
11
+ propertyName,
12
+ validator: validateIsNotEmpty,
13
+ });
14
+ };
15
+ }
16
+
17
+ export { isNotEmpty };
@@ -0,0 +1,17 @@
1
+ import { container } from '../../injection/index.js';
2
+ import { validateIsNumber } from '../validators/validateIsNumber.js';
3
+ import { ValidationMetadataStore } from './ValidationMetadataStore.js';
4
+
5
+ function isNumber() {
6
+ return function (target, propertyKey) {
7
+ const propertyName = propertyKey.toString();
8
+ const store = container.resolve(ValidationMetadataStore);
9
+ store.saveValidatorMetadata({
10
+ modelConstructor: target.constructor,
11
+ propertyName,
12
+ validator: validateIsNumber,
13
+ });
14
+ };
15
+ }
16
+
17
+ export { isNumber };
@@ -0,0 +1,17 @@
1
+ import { container } from '../../injection/index.js';
2
+ import { ValidationMetadataStore } from './ValidationMetadataStore.js';
3
+ import { _IS_OPTIONAL_DUMMY_VALIDATOR_ } from '../validators/validateIsOptional.js';
4
+
5
+ function isOptional() {
6
+ return function (target, propertyKey) {
7
+ const propertyName = propertyKey.toString();
8
+ const store = container.resolve(ValidationMetadataStore);
9
+ store.saveValidatorMetadata({
10
+ modelConstructor: target.constructor,
11
+ propertyName,
12
+ validator: _IS_OPTIONAL_DUMMY_VALIDATOR_,
13
+ });
14
+ };
15
+ }
16
+
17
+ export { isOptional };
@@ -0,0 +1,17 @@
1
+ import { container } from '../../injection/index.js';
2
+ import { ValidationMetadataStore } from './ValidationMetadataStore.js';
3
+ import { validateIsPresent } from '../validators/validateIsPresent.js';
4
+
5
+ function isPresent() {
6
+ return function (target, propertyKey) {
7
+ const propertyName = propertyKey.toString();
8
+ const store = container.resolve(ValidationMetadataStore);
9
+ store.saveValidatorMetadata({
10
+ modelConstructor: target.constructor,
11
+ propertyName,
12
+ validator: validateIsPresent,
13
+ });
14
+ };
15
+ }
16
+
17
+ export { isPresent };
@@ -0,0 +1,17 @@
1
+ import { container } from '../../injection/index.js';
2
+ import { ValidationMetadataStore } from './ValidationMetadataStore.js';
3
+ import { validateIsString } from '../validators/validateIsString.js';
4
+
5
+ function isString() {
6
+ return function (target, propertyKey) {
7
+ const propertyName = propertyKey.toString();
8
+ const store = container.resolve(ValidationMetadataStore);
9
+ store.saveValidatorMetadata({
10
+ modelConstructor: target.constructor,
11
+ propertyName,
12
+ validator: validateIsString,
13
+ });
14
+ };
15
+ }
16
+
17
+ export { isString };
@@ -0,0 +1,18 @@
1
+ import { container } from '../../injection/index.js';
2
+ import { ValidationMetadataStore } from './ValidationMetadataStore.js';
3
+ import { validateMax } from '../validators/validateMax.js';
4
+
5
+ function max(limit) {
6
+ return function (target, propertyKey) {
7
+ const propertyName = propertyKey.toString();
8
+ const store = container.resolve(ValidationMetadataStore);
9
+ store.saveValidatorMetadata({
10
+ modelConstructor: target.constructor,
11
+ propertyName,
12
+ validator: validateMax,
13
+ validatorOptions: { limit },
14
+ });
15
+ };
16
+ }
17
+
18
+ export { max };
@@ -0,0 +1,18 @@
1
+ import { container } from '../../injection/index.js';
2
+ import { ValidationMetadataStore } from './ValidationMetadataStore.js';
3
+ import { validateMin } from '../validators/validateMin.js';
4
+
5
+ function min(limit) {
6
+ return function (target, propertyKey) {
7
+ const propertyName = propertyKey.toString();
8
+ const store = container.resolve(ValidationMetadataStore);
9
+ store.saveValidatorMetadata({
10
+ modelConstructor: target.constructor,
11
+ propertyName,
12
+ validator: validateMin,
13
+ validatorOptions: { limit },
14
+ });
15
+ };
16
+ }
17
+
18
+ export { min };
@@ -0,0 +1,14 @@
1
+ import { container } from 'tsyringe';
2
+ import { ValidationMetadataStore } from './ValidationMetadataStore.js';
3
+ import { validateModel } from '../validators/validateModel.js';
4
+
5
+ function validable() {
6
+ return function (target) {
7
+ target.__validate__ = function (value) {
8
+ const info = container.resolve(ValidationMetadataStore).getModelValidatorsInfo(target);
9
+ return validateModel(value, info);
10
+ };
11
+ };
12
+ }
13
+
14
+ export { validable };
@@ -0,0 +1,55 @@
1
+ import { __decorate } from 'tslib';
2
+ import { singleton } from '../../injection/index.js';
3
+ import { _IS_OPTIONAL_DUMMY_VALIDATOR_ } from '../validators/validateIsOptional.js';
4
+
5
+ let ValidationMetadataStore = class ValidationMetadataStore {
6
+ validators = new Map();
7
+ saveValidatorMetadata(validatorMetadata) {
8
+ let modelValidators = this.validators.get(validatorMetadata.modelConstructor);
9
+ if (!modelValidators) {
10
+ this.validators.set(validatorMetadata.modelConstructor, (modelValidators = new Map()));
11
+ }
12
+ let propertyValidators = modelValidators.get(validatorMetadata.propertyName);
13
+ if (!propertyValidators) {
14
+ propertyValidators = [];
15
+ modelValidators.set(validatorMetadata.propertyName, propertyValidators);
16
+ }
17
+ propertyValidators.unshift(validatorMetadata);
18
+ }
19
+ getModelValidatorsInfo(modelConstructor) {
20
+ const modelValidators = {
21
+ modelConstructor: modelConstructor,
22
+ properties: {},
23
+ };
24
+ [...(this.validators.get(modelConstructor)?.values() ?? [])].forEach((propertyValidatorsMetadata) => {
25
+ const propertyName = propertyValidatorsMetadata.at(0)?.propertyName;
26
+ if (!propertyName) {
27
+ return;
28
+ }
29
+ let propertyInfo = modelValidators.properties[propertyName];
30
+ if (!propertyInfo) {
31
+ propertyInfo = {};
32
+ modelValidators.properties[propertyName] = propertyInfo;
33
+ }
34
+ let validators = propertyInfo.validators;
35
+ if (!validators) {
36
+ validators = [];
37
+ propertyInfo.validators = validators;
38
+ }
39
+ propertyValidatorsMetadata.forEach((propertyValidatorMetadata) => {
40
+ if (propertyValidatorMetadata.validator === _IS_OPTIONAL_DUMMY_VALIDATOR_) {
41
+ propertyInfo.isOptional = true;
42
+ }
43
+ else {
44
+ validators.push(propertyValidatorMetadata);
45
+ }
46
+ });
47
+ });
48
+ return modelValidators;
49
+ }
50
+ };
51
+ ValidationMetadataStore = __decorate([
52
+ singleton()
53
+ ], ValidationMetadataStore);
54
+
55
+ export { ValidationMetadataStore };
@@ -0,0 +1,11 @@
1
+ import { container } from '../injection/index.js';
2
+ import { ValidationMetadataStore } from './metadata/ValidationMetadataStore.js';
3
+ import { validateModel } from './validators/validateModel.js';
4
+
5
+ function validateModel2(value, modelConstructor) {
6
+ const metadataStore = container.resolve(ValidationMetadataStore);
7
+ const info = metadataStore.getModelValidatorsInfo(modelConstructor);
8
+ return validateModel(value, info);
9
+ }
10
+
11
+ export { validateModel2 };
@@ -0,0 +1,12 @@
1
+ function validateIsBoolean(value) {
2
+ if (typeof value !== 'boolean') {
3
+ return {
4
+ error: { description: `boolean value is required` },
5
+ };
6
+ }
7
+ return {
8
+ value,
9
+ };
10
+ }
11
+
12
+ export { validateIsBoolean };
@@ -0,0 +1,16 @@
1
+ function validateIsDate(value) {
2
+ const _value = new Date(value);
3
+ const time = _value.getTime();
4
+ if ((typeof value !== 'number' && typeof value !== 'string' && !(value instanceof Date)) ||
5
+ isNaN(time) ||
6
+ time < 0) {
7
+ return {
8
+ error: { description: `Date value is not valid` },
9
+ };
10
+ }
11
+ return {
12
+ value: _value,
13
+ };
14
+ }
15
+
16
+ export { validateIsDate };
@@ -0,0 +1,12 @@
1
+ function validateIsNotEmpty(value) {
2
+ if (value === '' || (Array.isArray(value) && value.length === 0)) {
3
+ return {
4
+ error: { description: `empty value not allowed` },
5
+ };
6
+ }
7
+ return {
8
+ value,
9
+ };
10
+ }
11
+
12
+ export { validateIsNotEmpty };
@@ -0,0 +1,12 @@
1
+ function validateIsNumber(value) {
2
+ if (typeof value !== 'number') {
3
+ return {
4
+ error: { description: `number value is required` },
5
+ };
6
+ }
7
+ return {
8
+ value,
9
+ };
10
+ }
11
+
12
+ export { validateIsNumber };
@@ -0,0 +1,5 @@
1
+ const _IS_OPTIONAL_DUMMY_VALIDATOR_ = (value) => {
2
+ return { value, errors: [] };
3
+ };
4
+
5
+ export { _IS_OPTIONAL_DUMMY_VALIDATOR_ };
@@ -0,0 +1,12 @@
1
+ function validateIsPresent(value) {
2
+ if (value == null) {
3
+ return {
4
+ error: { description: `not present` },
5
+ };
6
+ }
7
+ return {
8
+ value,
9
+ };
10
+ }
11
+
12
+ export { validateIsPresent };
@@ -0,0 +1,12 @@
1
+ function validateIsString(value) {
2
+ if (typeof value !== 'string') {
3
+ return {
4
+ error: { description: `string value is required` },
5
+ };
6
+ }
7
+ return {
8
+ value,
9
+ };
10
+ }
11
+
12
+ export { validateIsString };
@@ -0,0 +1,17 @@
1
+ function validateMax(value, options) {
2
+ if (value == null) {
3
+ return {
4
+ error: { description: `null or undefined value can't be validated with max` },
5
+ };
6
+ }
7
+ if (Number(value) > Number(options.limit)) {
8
+ return {
9
+ error: { description: `exceeds the established max limit` },
10
+ };
11
+ }
12
+ return {
13
+ value,
14
+ };
15
+ }
16
+
17
+ export { validateMax };
@@ -0,0 +1,17 @@
1
+ function validateMin(value, options) {
2
+ if (value == null) {
3
+ return {
4
+ error: { description: `null or undefined value can't be validated with min` },
5
+ };
6
+ }
7
+ if (Number(value) < Number(options.limit)) {
8
+ return {
9
+ error: { description: `exceeds the established min limit` },
10
+ };
11
+ }
12
+ return {
13
+ value,
14
+ };
15
+ }
16
+
17
+ export { validateMin };
@@ -0,0 +1,47 @@
1
+ function validateModel(value, info) {
2
+ const result = {};
3
+ if (typeof value !== 'object') {
4
+ result.error = {
5
+ model: [
6
+ {
7
+ description: `the value should be an object`,
8
+ },
9
+ ],
10
+ properties: [],
11
+ };
12
+ return result;
13
+ }
14
+ const validatedValue = new info.modelConstructor();
15
+ for (const propertyName in info.properties) {
16
+ const propertyInfo = info.properties[propertyName];
17
+ const propertyValidators = propertyInfo.validators ?? [];
18
+ validatedValue[propertyName] = value[propertyName] ?? validatedValue[propertyName];
19
+ if (validatedValue[propertyName] == null && propertyInfo.isOptional) {
20
+ validatedValue[propertyName] = null;
21
+ continue;
22
+ }
23
+ for (let propertyValidatorInfo of propertyValidators) {
24
+ const propertyValidatorResult = propertyValidatorInfo.validator(validatedValue[propertyName], propertyValidatorInfo.validatorOptions);
25
+ validatedValue[propertyName] = propertyValidatorResult.value;
26
+ if (propertyValidatorResult.error) {
27
+ let resultError = result.error;
28
+ if (!resultError) {
29
+ resultError = { model: [], properties: [] };
30
+ result.error = resultError;
31
+ }
32
+ let propertyErrors = resultError.properties.find((x) => x.name === propertyName);
33
+ if (!propertyErrors) {
34
+ propertyErrors = { name: propertyName, errors: [] };
35
+ resultError.properties.push(propertyErrors);
36
+ }
37
+ propertyErrors.errors.push(propertyValidatorResult.error);
38
+ }
39
+ }
40
+ }
41
+ if (!result.error) {
42
+ result.value = validatedValue;
43
+ }
44
+ return result;
45
+ }
46
+
47
+ export { validateModel };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wabot-dev/framework",
3
- "version": "0.1.0-beta.1",
3
+ "version": "0.1.0-beta.10",
4
4
  "description": "Framework for IA Chat Bots",
5
5
  "type": "module",
6
6
  "main": "dist/src/index.js",
@@ -16,7 +16,7 @@
16
16
  "fmt": "prettier --write .",
17
17
  "fmt:check": "prettier --check .",
18
18
  "types:check": "tsc --noEmit",
19
- "elia:dev": "yts --import ./dotenv.config.mjs ./test/elia/runElia.ts"
19
+ "elia:dev": "yts --import ./env.mjs ./test/elia/runElia.ts"
20
20
  },
21
21
  "devDependencies": {
22
22
  "@rollup/plugin-alias": "5.1.1",
@@ -24,6 +24,7 @@
24
24
  "@rollup/plugin-json": "6.1.0",
25
25
  "@rollup/plugin-node-resolve": "16.0.1",
26
26
  "@rollup/plugin-typescript": "12.1.2",
27
+ "@types/html-to-text": "^9.0.4",
27
28
  "@types/node": "22.14.1",
28
29
  "@types/react": "^19.1.2",
29
30
  "@yucacodes/ts": "^0.0.4",
@@ -39,20 +40,17 @@
39
40
  "@types/pg": "^8.11.14",
40
41
  "@yucacodes/ts": "^0.0.4",
41
42
  "body-parser": "^2.2.0",
42
- "class-transformer": "^0.5.1",
43
- "class-validator": "^0.14.1",
44
43
  "debug": "^4.4.0",
45
44
  "dotenv": "^16.5.0",
46
45
  "express": "^5.1.0",
47
46
  "grammy": "^1.36.0",
47
+ "html-to-text": "^9.0.5",
48
48
  "openai": "^4.93.0",
49
49
  "pg": "^8.15.6",
50
50
  "reflect-metadata": "^0.2.2",
51
51
  "short-uuid": "^5.2.0",
52
52
  "socket.io": "^4.8.1",
53
53
  "socket.io-client": "^4.8.1",
54
- "sqlite": "^5.1.1",
55
- "sqlite3": "^5.1.7",
56
54
  "tslib": "^2.8.1",
57
55
  "tsyringe": "^4.9.1",
58
56
  "uuid": "^11.1.0"
@@ -1,69 +0,0 @@
1
- import { __decorate, __metadata } from 'tslib';
2
- import { singleton } from '../../injection/index.js';
3
- import { Logger } from '../../logger/Logger.js';
4
- import { io } from 'socket.io-client';
5
- import { WhatsAppConnection } from './WhatsAppConnection.js';
6
- import { devWhatsappEmitEvent, devWhatsAppListentEvent } from './WhatsAppDevSocketContracts.js';
7
-
8
- let WhatsAppDevConnection = class WhatsAppDevConnection extends WhatsAppConnection {
9
- devProxy;
10
- devProxySocket;
11
- devToken;
12
- connected = false;
13
- constructor() {
14
- super(new Logger('wabot:whatsapp-dev-connection'));
15
- this.devProxy = process.env.WABOT_DEV_PROXY ?? 'https://proxy.wabot.dev';
16
- this.devToken = process.env.WABOT_DEV_TOKEN;
17
- this.devProxySocket = io(this.devProxy, { autoConnect: false });
18
- }
19
- async sendWhatsApp(businessNumber, to, chatMessage) {
20
- const req = {
21
- from: businessNumber,
22
- to,
23
- message: chatMessage,
24
- };
25
- await this.devProxySocket.emitWithAck(devWhatsappEmitEvent.DEV_SEND_WHATSAPP, req);
26
- }
27
- async sendWhatsAppTemplate(businessNumber, to, templateMessage) {
28
- const req = {
29
- from: businessNumber,
30
- to,
31
- message: templateMessage,
32
- };
33
- await this.devProxySocket.emitWithAck(devWhatsappEmitEvent.DEV_SEND_WHATSAPP_TEMPLATE, req);
34
- }
35
- connect() {
36
- if (this.connected) {
37
- return;
38
- }
39
- this.connected = true;
40
- this.devProxySocket.connect();
41
- this.devProxySocket.on('connect', async () => {
42
- if (!this.devToken) {
43
- return;
44
- }
45
- try {
46
- const req = {
47
- token: this.devToken,
48
- };
49
- const ack = await this.devProxySocket.emitWithAck(devWhatsappEmitEvent.DEV_CONNECTION, req);
50
- if (ack != 'OK') {
51
- return this.logger.debug('dev connection fails');
52
- }
53
- this.devProxySocket.on(devWhatsAppListentEvent.DEV_WATSAPP_WEBHOOK, async (payload) => {
54
- await this.handlePayload(payload);
55
- });
56
- return this.logger.debug('success dev connection');
57
- }
58
- catch (err) {
59
- this.logger.error(err);
60
- }
61
- });
62
- }
63
- };
64
- WhatsAppDevConnection = __decorate([
65
- singleton(),
66
- __metadata("design:paramtypes", [])
67
- ], WhatsAppDevConnection);
68
-
69
- export { WhatsAppDevConnection };
@@ -1,39 +0,0 @@
1
- import { __decorate, __param, __metadata } from 'tslib';
2
- import '../../controller/channel/ChatResolver.js';
3
- import '../../controller/channel/UserResolver.js';
4
- import { inject } from '../../injection/index.js';
5
- import '../../core/chat/repository/IChatRepository.js';
6
- import '../../core/user/IUserRepository.js';
7
- import '../../controller/metadata/ControllerMetadataStore.js';
8
- import { ExpressApp } from '../../controller/express/Express.js';
9
- import 'socket.io';
10
- import { singleton } from 'tsyringe';
11
-
12
- let WhatsAppProdConnection = class WhatsAppProdConnection {
13
- express;
14
- constructor(express) {
15
- this.express = express;
16
- this.express.get('/try-express', (req, res) => {
17
- res.status(200).json({ success: true });
18
- });
19
- }
20
- listenMessage(businessNumber, listener) {
21
- throw new Error('Method not implemented.');
22
- }
23
- sendWhatsApp(businessNumber, to, replyMessage) {
24
- throw new Error('Method not implemented.');
25
- }
26
- sendWhatsAppTemplate(businessNumber, to, templateMessage) {
27
- throw new Error('Method not implemented.');
28
- }
29
- connect() {
30
- throw new Error('Method not implemented.');
31
- }
32
- };
33
- WhatsAppProdConnection = __decorate([
34
- singleton(),
35
- __param(0, inject(ExpressApp)),
36
- __metadata("design:paramtypes", [Function])
37
- ], WhatsAppProdConnection);
38
-
39
- export { WhatsAppProdConnection };
@@ -1,5 +0,0 @@
1
- import 'express';
2
-
3
- const ExpressApp = Symbol.for('ExpressApp');
4
-
5
- export { ExpressApp };
@@ -1,5 +0,0 @@
1
- import 'socket.io';
2
-
3
- const SocketIoApp = Symbol.for('SocketIoApp');
4
-
5
- export { SocketIoApp };
@@ -1,21 +0,0 @@
1
- import 'reflect-metadata';
2
- import { MindsetMetadataStore } from '../MindsetMetadataStore.js';
3
- import { container } from '../../../injection/index.js';
4
- import { PARAM_DECORATION_IS_OPTIONAL } from './decoratorNames.js';
5
-
6
- function isOptional() {
7
- return (target, propertyKey) => {
8
- const paramName = propertyKey.toString();
9
- const paramType = Reflect.getMetadata('design:type', target, paramName);
10
- const store = container.resolve(MindsetMetadataStore);
11
- store.saveParamDecoration({
12
- decorationName: PARAM_DECORATION_IS_OPTIONAL,
13
- paramType: paramType,
14
- paramName: paramName,
15
- constructor: target.constructor,
16
- decorationConfig: {},
17
- });
18
- };
19
- }
20
-
21
- export { isOptional };
@@ -1,23 +0,0 @@
1
- import path from 'path';
2
- import { ChatItem } from '../../../../core/chat/ChatItem.js';
3
- import '../../../../core/chat/repository/IChatRepository.js';
4
- import '../../../../core/user/IUserRepository.js';
5
- import 'pg';
6
- import 'short-uuid';
7
- import { SqliteCrudRepository } from '../../../../repository/sqlite/SqliteCrudRepository.js';
8
- import { sqliteMapperFor } from '../../../../repository/sqlite/SqlitePersistentMapper.js';
9
-
10
- class SqliteChatMemory extends SqliteCrudRepository {
11
- constructor(chatId) {
12
- super('chat_item', SqliteChatMemory.getDbPath(chatId), sqliteMapperFor(ChatItem));
13
- }
14
- async findLastItems(count) {
15
- const allItems = await this.findAll();
16
- return allItems.slice(allItems.length - count, allItems.length);
17
- }
18
- static getDbPath(chatId) {
19
- return path.join(process.cwd(), '.sqlite', 'chat-memory', chatId + '.db');
20
- }
21
- }
22
-
23
- export { SqliteChatMemory };
@@ -1,30 +0,0 @@
1
- import '../../../../core/chat/repository/IChatRepository.js';
2
- import { Chat } from '../../../../core/chat/Chat.js';
3
- import '../../../../core/user/IUserRepository.js';
4
- import path from 'path';
5
- import { SqliteChatMemory } from './SqliteChatMemory.js';
6
- import 'pg';
7
- import 'short-uuid';
8
- import { SqliteCrudRepository } from '../../../../repository/sqlite/SqliteCrudRepository.js';
9
- import { sqliteMapperFor } from '../../../../repository/sqlite/SqlitePersistentMapper.js';
10
-
11
- class SqliteChatRepository extends SqliteCrudRepository {
12
- constructor() {
13
- super('chat', SqliteChatRepository.getDbPath(), sqliteMapperFor(Chat));
14
- }
15
- async findByConnection(query) {
16
- const allChats = await this.findAll();
17
- return allChats.find((chat) => chat.hasConnection(query)) ?? null;
18
- }
19
- async findMemory(chatId) {
20
- const chat = await this.find(chatId);
21
- if (!chat)
22
- return null;
23
- return new SqliteChatMemory(chatId);
24
- }
25
- static getDbPath() {
26
- return path.join(process.cwd(), '.sqlite', 'chat.db');
27
- }
28
- }
29
-
30
- export { SqliteChatRepository };