@solidstarters/solid-core 1.2.155 → 1.2.157

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 (161) hide show
  1. package/dist/config/common.config.d.ts +2 -0
  2. package/dist/config/common.config.d.ts.map +1 -1
  3. package/dist/config/common.config.js +1 -0
  4. package/dist/config/common.config.js.map +1 -1
  5. package/dist/decorators/whatsapp-provider.decorator.d.ts +3 -0
  6. package/dist/decorators/whatsapp-provider.decorator.d.ts.map +1 -0
  7. package/dist/decorators/whatsapp-provider.decorator.js +11 -0
  8. package/dist/decorators/whatsapp-provider.decorator.js.map +1 -0
  9. package/dist/dtos/create-list-of-values.dto.d.ts +2 -0
  10. package/dist/dtos/create-list-of-values.dto.d.ts.map +1 -1
  11. package/dist/dtos/create-list-of-values.dto.js +12 -1
  12. package/dist/dtos/create-list-of-values.dto.js.map +1 -1
  13. package/dist/dtos/update-list-of-values.dto.d.ts +2 -0
  14. package/dist/dtos/update-list-of-values.dto.d.ts.map +1 -1
  15. package/dist/dtos/update-list-of-values.dto.js +12 -1
  16. package/dist/dtos/update-list-of-values.dto.js.map +1 -1
  17. package/dist/entities/list-of-values.entity.d.ts +2 -0
  18. package/dist/entities/list-of-values.entity.d.ts.map +1 -1
  19. package/dist/entities/list-of-values.entity.js +7 -1
  20. package/dist/entities/list-of-values.entity.js.map +1 -1
  21. package/dist/factories/whatsapp.factory.d.ts +14 -0
  22. package/dist/factories/whatsapp.factory.d.ts.map +1 -0
  23. package/dist/factories/whatsapp.factory.js +53 -0
  24. package/dist/factories/whatsapp.factory.js.map +1 -0
  25. package/dist/helpers/solid-registry.d.ts +3 -0
  26. package/dist/helpers/solid-registry.d.ts.map +1 -1
  27. package/dist/helpers/solid-registry.js +7 -0
  28. package/dist/helpers/solid-registry.js.map +1 -1
  29. package/dist/index.d.ts +3 -3
  30. package/dist/index.d.ts.map +1 -1
  31. package/dist/index.js +3 -3
  32. package/dist/index.js.map +1 -1
  33. package/dist/interfaces.d.ts +3 -0
  34. package/dist/interfaces.d.ts.map +1 -1
  35. package/dist/interfaces.js.map +1 -1
  36. package/dist/jobs/database/{whatsapp-publisher-database.service.d.ts → msg91-whatsapp-publisher-database.service.d.ts} +2 -2
  37. package/dist/jobs/database/msg91-whatsapp-publisher-database.service.d.ts.map +1 -0
  38. package/dist/jobs/database/{whatsapp-publisher-database.service.js → msg91-whatsapp-publisher-database.service.js} +8 -8
  39. package/dist/jobs/database/msg91-whatsapp-publisher-database.service.js.map +1 -0
  40. package/dist/jobs/database/{whatsapp-queue-options-database.d.ts → msg91-whatsapp-queue-options-database.d.ts} +1 -1
  41. package/dist/jobs/database/msg91-whatsapp-queue-options-database.d.ts.map +1 -0
  42. package/dist/jobs/database/{whatsapp-queue-options-database.js → msg91-whatsapp-queue-options-database.js} +2 -2
  43. package/dist/jobs/database/msg91-whatsapp-queue-options-database.js.map +1 -0
  44. package/dist/jobs/database/{whatsapp-subscriber-database.service.d.ts → msg91-whatsapp-subscriber-database.service.d.ts} +2 -2
  45. package/dist/jobs/database/msg91-whatsapp-subscriber-database.service.d.ts.map +1 -0
  46. package/dist/jobs/database/{whatsapp-subscriber-database.service.js → msg91-whatsapp-subscriber-database.service.js} +9 -9
  47. package/dist/jobs/database/msg91-whatsapp-subscriber-database.service.js.map +1 -0
  48. package/dist/jobs/database/three60-whatsapp-publisher-database.service.d.ts +11 -0
  49. package/dist/jobs/database/three60-whatsapp-publisher-database.service.d.ts.map +1 -0
  50. package/dist/jobs/database/three60-whatsapp-publisher-database.service.js +39 -0
  51. package/dist/jobs/database/three60-whatsapp-publisher-database.service.js.map +1 -0
  52. package/dist/jobs/database/three60-whatsapp-queue-options-database.d.ts +8 -0
  53. package/dist/jobs/database/three60-whatsapp-queue-options-database.d.ts.map +1 -0
  54. package/dist/jobs/database/three60-whatsapp-queue-options-database.js +10 -0
  55. package/dist/jobs/database/three60-whatsapp-queue-options-database.js.map +1 -0
  56. package/dist/jobs/database/three60-whatsapp-subscriber-database.service.d.ts +17 -0
  57. package/dist/jobs/database/three60-whatsapp-subscriber-database.service.d.ts.map +1 -0
  58. package/dist/jobs/database/three60-whatsapp-subscriber-database.service.js +48 -0
  59. package/dist/jobs/database/three60-whatsapp-subscriber-database.service.js.map +1 -0
  60. package/dist/jobs/{whatsapp-publisher.service.d.ts → msg91-whatsapp-publisher.service.d.ts} +2 -2
  61. package/dist/jobs/msg91-whatsapp-publisher.service.d.ts.map +1 -0
  62. package/dist/jobs/{whatsapp-publisher.service.js → msg91-whatsapp-publisher.service.js} +8 -8
  63. package/dist/jobs/msg91-whatsapp-publisher.service.js.map +1 -0
  64. package/dist/jobs/{whatsapp-queue-options.d.ts → msg91-whatsapp-queue-options.d.ts} +1 -1
  65. package/dist/jobs/msg91-whatsapp-queue-options.d.ts.map +1 -0
  66. package/dist/jobs/msg91-whatsapp-queue-options.js +10 -0
  67. package/dist/jobs/msg91-whatsapp-queue-options.js.map +1 -0
  68. package/dist/jobs/{whatsapp-subscriber.service.d.ts → msg91-whatsapp-subscriber.service.d.ts} +2 -2
  69. package/dist/jobs/msg91-whatsapp-subscriber.service.d.ts.map +1 -0
  70. package/dist/jobs/{whatsapp-subscriber.service.js → msg91-whatsapp-subscriber.service.js} +9 -9
  71. package/dist/jobs/msg91-whatsapp-subscriber.service.js.map +1 -0
  72. package/dist/jobs/three60-whatsapp-publisher.service.d.ts +11 -0
  73. package/dist/jobs/three60-whatsapp-publisher.service.d.ts.map +1 -0
  74. package/dist/jobs/three60-whatsapp-publisher.service.js +39 -0
  75. package/dist/jobs/three60-whatsapp-publisher.service.js.map +1 -0
  76. package/dist/jobs/three60-whatsapp-queue-options.d.ts +8 -0
  77. package/dist/jobs/three60-whatsapp-queue-options.d.ts.map +1 -0
  78. package/dist/jobs/{whatsapp-queue-options.js → three60-whatsapp-queue-options.js} +3 -3
  79. package/dist/jobs/three60-whatsapp-queue-options.js.map +1 -0
  80. package/dist/jobs/three60-whatsapp-subscriber.service.d.ts +15 -0
  81. package/dist/jobs/three60-whatsapp-subscriber.service.d.ts.map +1 -0
  82. package/dist/jobs/three60-whatsapp-subscriber.service.js +45 -0
  83. package/dist/jobs/three60-whatsapp-subscriber.service.js.map +1 -0
  84. package/dist/mappers/list-of-values-mapper.d.ts +5 -0
  85. package/dist/mappers/list-of-values-mapper.d.ts.map +1 -0
  86. package/dist/mappers/list-of-values-mapper.js +28 -0
  87. package/dist/mappers/list-of-values-mapper.js.map +1 -0
  88. package/dist/seeders/module-metadata-seeder.service.js +1 -1
  89. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  90. package/dist/seeders/seed-data/solid-core-metadata.json +27 -137
  91. package/dist/services/chatter-message.service.d.ts.map +1 -1
  92. package/dist/services/chatter-message.service.js +6 -0
  93. package/dist/services/chatter-message.service.js.map +1 -1
  94. package/dist/services/list-of-values-metadata.service.d.ts +34 -0
  95. package/dist/services/list-of-values-metadata.service.d.ts.map +1 -0
  96. package/dist/services/list-of-values-metadata.service.js +213 -0
  97. package/dist/services/list-of-values-metadata.service.js.map +1 -0
  98. package/dist/services/solid-introspect.service.d.ts +1 -0
  99. package/dist/services/solid-introspect.service.d.ts.map +1 -1
  100. package/dist/services/solid-introspect.service.js +14 -0
  101. package/dist/services/solid-introspect.service.js.map +1 -1
  102. package/dist/services/whatsapp/Msg91WhatsappService.d.ts +8 -6
  103. package/dist/services/whatsapp/Msg91WhatsappService.d.ts.map +1 -1
  104. package/dist/services/whatsapp/Msg91WhatsappService.js +24 -7
  105. package/dist/services/whatsapp/Msg91WhatsappService.js.map +1 -1
  106. package/dist/services/whatsapp/Three60WhatsappService.d.ts +18 -0
  107. package/dist/services/whatsapp/Three60WhatsappService.d.ts.map +1 -0
  108. package/dist/services/whatsapp/Three60WhatsappService.js +61 -0
  109. package/dist/services/whatsapp/Three60WhatsappService.js.map +1 -0
  110. package/dist/solid-core.module.d.ts.map +1 -1
  111. package/dist/solid-core.module.js +26 -8
  112. package/dist/solid-core.module.js.map +1 -1
  113. package/dist/subscribers/list-of-values-metadata.subscriber.d.ts +18 -0
  114. package/dist/subscribers/list-of-values-metadata.subscriber.d.ts.map +1 -0
  115. package/dist/subscribers/list-of-values-metadata.subscriber.js +101 -0
  116. package/dist/subscribers/list-of-values-metadata.subscriber.js.map +1 -0
  117. package/dist/tsconfig.tsbuildinfo +1 -1
  118. package/package.json +1 -1
  119. package/src/config/common.config.ts +1 -0
  120. package/src/decorators/whatsapp-provider.decorator.ts +7 -0
  121. package/src/dtos/create-list-of-values.dto.ts +7 -0
  122. package/src/dtos/update-list-of-values.dto.ts +8 -1
  123. package/src/entities/list-of-values.entity.ts +5 -1
  124. package/src/factories/whatsapp.factory.ts +41 -0
  125. package/src/helpers/solid-registry.ts +9 -0
  126. package/src/index.ts +3 -3
  127. package/src/interfaces.ts +12 -2
  128. package/src/jobs/database/{whatsapp-publisher-database.service.ts → msg91-whatsapp-publisher-database.service.ts} +2 -2
  129. package/src/jobs/database/{whatsapp-queue-options-database.ts → msg91-whatsapp-queue-options-database.ts} +1 -1
  130. package/src/jobs/database/{whatsapp-subscriber-database.service.ts → msg91-whatsapp-subscriber-database.service.ts} +3 -4
  131. package/src/jobs/database/three60-whatsapp-publisher-database.service.ts +23 -0
  132. package/src/jobs/database/three60-whatsapp-queue-options-database.ts +9 -0
  133. package/src/jobs/database/three60-whatsapp-subscriber-database.service.ts +32 -0
  134. package/src/jobs/{whatsapp-publisher.service.ts → msg91-whatsapp-publisher.service.ts} +2 -2
  135. package/src/jobs/msg91-whatsapp-queue-options.ts +12 -0
  136. package/src/jobs/{whatsapp-subscriber.service.ts → msg91-whatsapp-subscriber.service.ts} +3 -3
  137. package/src/jobs/three60-whatsapp-publisher.service.ts +23 -0
  138. package/src/jobs/{whatsapp-queue-options.ts → three60-whatsapp-queue-options.ts} +2 -2
  139. package/src/jobs/three60-whatsapp-subscriber.service.ts +30 -0
  140. package/src/mappers/list-of-values-mapper.ts +17 -0
  141. package/src/seeders/module-metadata-seeder.service.ts +1 -1
  142. package/src/seeders/seed-data/solid-core-metadata.json +27 -137
  143. package/src/services/chatter-message.service.ts +6 -0
  144. package/src/services/list-of-values-metadata.service.ts +219 -0
  145. package/src/services/solid-introspect.service.ts +22 -0
  146. package/src/services/whatsapp/Msg91WhatsappService.ts +34 -10
  147. package/src/services/whatsapp/Three60WhatsappService.ts +52 -0
  148. package/src/solid-core.module.ts +26 -8
  149. package/src/subscribers/list-of-values-metadata.subscriber.ts +115 -0
  150. package/dist/jobs/database/whatsapp-publisher-database.service.d.ts.map +0 -1
  151. package/dist/jobs/database/whatsapp-publisher-database.service.js.map +0 -1
  152. package/dist/jobs/database/whatsapp-queue-options-database.d.ts.map +0 -1
  153. package/dist/jobs/database/whatsapp-queue-options-database.js.map +0 -1
  154. package/dist/jobs/database/whatsapp-subscriber-database.service.d.ts.map +0 -1
  155. package/dist/jobs/database/whatsapp-subscriber-database.service.js.map +0 -1
  156. package/dist/jobs/whatsapp-publisher.service.d.ts.map +0 -1
  157. package/dist/jobs/whatsapp-publisher.service.js.map +0 -1
  158. package/dist/jobs/whatsapp-queue-options.d.ts.map +0 -1
  159. package/dist/jobs/whatsapp-queue-options.js.map +0 -1
  160. package/dist/jobs/whatsapp-subscriber.service.d.ts.map +0 -1
  161. package/dist/jobs/whatsapp-subscriber.service.js.map +0 -1
@@ -0,0 +1,213 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ var __metadata = (this && this.__metadata) || function (k, v) {
42
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
43
+ };
44
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
45
+ return function (target, key) { decorator(target, key, paramIndex); }
46
+ };
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.ListOfValuesMetadataService = void 0;
49
+ const common_1 = require("@nestjs/common");
50
+ const core_1 = require("@nestjs/core");
51
+ const typeorm_1 = require("@nestjs/typeorm");
52
+ const typeorm_2 = require("typeorm");
53
+ const config_1 = require("@nestjs/config");
54
+ const crud_helper_service_1 = require("./crud-helper.service");
55
+ const crud_service_1 = require("./crud.service");
56
+ const file_service_1 = require("./file.service");
57
+ const model_metadata_service_1 = require("./model-metadata.service");
58
+ const module_metadata_service_1 = require("./module-metadata.service");
59
+ const fs = __importStar(require("fs/promises"));
60
+ const module_metadata_helper_service_1 = require("../helpers/module-metadata-helper.service");
61
+ const list_of_values_entity_1 = require("../entities/list-of-values.entity");
62
+ const list_of_values_mapper_1 = require("../mappers/list-of-values-mapper");
63
+ let ListOfValuesMetadataService = class ListOfValuesMetadataService extends crud_service_1.CRUDService {
64
+ constructor(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, listOfValuesMapper, entityManager, repo, moduleRef, moduleMetadataHelperService) {
65
+ super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'listOfValues', 'solid-core', moduleRef);
66
+ this.modelMetadataService = modelMetadataService;
67
+ this.moduleMetadataService = moduleMetadataService;
68
+ this.configService = configService;
69
+ this.fileService = fileService;
70
+ this.discoveryService = discoveryService;
71
+ this.crudHelperService = crudHelperService;
72
+ this.listOfValuesMapper = listOfValuesMapper;
73
+ this.entityManager = entityManager;
74
+ this.repo = repo;
75
+ this.moduleRef = moduleRef;
76
+ this.moduleMetadataHelperService = moduleMetadataHelperService;
77
+ this.logger = new common_1.Logger(this.constructor.name);
78
+ }
79
+ async saveListofValuesToConfig(entity) {
80
+ if (!entity) {
81
+ this.logger.debug('No entity found in the ListofValuesSubscriber saveListofvalueToConfig method');
82
+ return;
83
+ }
84
+ const listofvalue = entity;
85
+ const moduleMetadata = entity.module;
86
+ if (!moduleMetadata) {
87
+ throw new Error(`Module metadata not found for listofvalue id ${entity.id}`);
88
+ }
89
+ const { filePath, metaData } = await this.getConfigFileDetails(moduleMetadata.name);
90
+ if (!filePath || !metaData) {
91
+ throw new Error(`Configuration details not found for module: ${moduleMetadata.name}`);
92
+ }
93
+ await this.writeToConfig(metaData, listofvalue, filePath);
94
+ }
95
+ async updateListofValuesToConfig(oldentity, entity) {
96
+ if (!entity) {
97
+ this.logger.debug('No entity found in the ListofValuesSubscriber saveListofvalueToConfig method');
98
+ return;
99
+ }
100
+ const oldlistofvalue = oldentity;
101
+ const listofvalue = entity;
102
+ const moduleMetadata = entity.module;
103
+ if (!moduleMetadata) {
104
+ throw new Error(`Module metadata not found for listofvalue id ${entity.id}`);
105
+ }
106
+ const { filePath, metaData } = await this.getConfigFileDetails(moduleMetadata.name);
107
+ if (!filePath || !metaData) {
108
+ throw new Error(`Configuration details not found for module: ${moduleMetadata.name}`);
109
+ }
110
+ await this.updateToConfig(metaData, oldlistofvalue, listofvalue, filePath);
111
+ }
112
+ async deleteListOfValuesFromConfig(entity) {
113
+ if (!entity) {
114
+ this.logger.debug('No entity found in the ListofValuesSubscriber saveListofvalueToConfig method');
115
+ return;
116
+ }
117
+ const listofvalue = entity;
118
+ const moduleMetadata = entity.module;
119
+ if (!moduleMetadata) {
120
+ throw new Error(`Module metadata not found for listofvalue id ${entity.id}`);
121
+ }
122
+ const { filePath, metaData } = await this.getConfigFileDetails(moduleMetadata.name);
123
+ if (!filePath || !metaData) {
124
+ throw new Error(`Configuration details not found for module: ${moduleMetadata.name}`);
125
+ }
126
+ await this.deleteFromConfig(metaData, listofvalue, filePath);
127
+ }
128
+ async getConfigFileDetails(moduleName) {
129
+ const filePath = await this.moduleMetadataHelperService.getModuleMetadataFilePath(moduleName);
130
+ try {
131
+ await fs.access(filePath);
132
+ }
133
+ catch (error) {
134
+ throw new Error(`Configuration file not found for module: ${moduleName}`);
135
+ }
136
+ const metaData = await this.moduleMetadataHelperService.getModuleMetadataConfiguration(filePath);
137
+ return { filePath, metaData };
138
+ }
139
+ async writeToConfig(metaData, listofvalues, filePath) {
140
+ const dto = await this.listOfValuesMapper.toDto(listofvalues);
141
+ if (!Array.isArray(metaData.listOfValues)) {
142
+ metaData.listOfValues = [];
143
+ }
144
+ const existingIndex = metaData.listOfValues.findIndex((item) => item.type === dto.type &&
145
+ item.value === dto.value &&
146
+ item.module === dto.module);
147
+ if (existingIndex !== -1) {
148
+ metaData.listOfValues[existingIndex] = dto;
149
+ }
150
+ else {
151
+ if (metaData.listOfValues.length === 0) {
152
+ metaData.listOfValues.push(dto);
153
+ }
154
+ else {
155
+ metaData.listOfValues.unshift(dto);
156
+ }
157
+ }
158
+ const updatedContent = JSON.stringify(metaData, null, 2);
159
+ await fs.writeFile(filePath, updatedContent);
160
+ }
161
+ async updateToConfig(metaData, oldlistofvalues, listofvalues, filePath) {
162
+ const newvalue = await this.listOfValuesMapper.toDto(listofvalues);
163
+ const oldvalue = await this.listOfValuesMapper.toDto(oldlistofvalues);
164
+ if (!Array.isArray(metaData.listOfValues)) {
165
+ metaData.listOfValues = [];
166
+ }
167
+ const searchType = oldvalue.type || newvalue.type;
168
+ const searchValue = oldvalue.value || newvalue.value;
169
+ const searchModule = oldvalue.module || newvalue.module;
170
+ const existingIndex = metaData.listOfValues.findIndex((item) => item.type === searchType && item.value === searchValue && item.module === searchModule);
171
+ if (existingIndex !== -1) {
172
+ metaData.listOfValues[existingIndex] = newvalue;
173
+ }
174
+ const updatedContent = JSON.stringify(metaData, null, 2);
175
+ await fs.writeFile(filePath, updatedContent);
176
+ }
177
+ async deleteFromConfig(metaData, listofvalues, filePath) {
178
+ const dto = await this.listOfValuesMapper.toDto(listofvalues);
179
+ if (!Array.isArray(metaData.listOfValues)) {
180
+ metaData.listOfValues = [];
181
+ }
182
+ const existingIndex = metaData.listOfValues.findIndex((item) => item.type === dto.type &&
183
+ item.value === dto.value &&
184
+ item.module === dto.module);
185
+ if (existingIndex !== -1) {
186
+ metaData.listOfValues.splice(existingIndex, 1);
187
+ this.logger.debug(`Deleted LOV ${dto.type}:${dto.value} (module ${dto.module}) from config`);
188
+ }
189
+ else {
190
+ this.logger.warn(`LOV ${dto.type}:${dto.value} (module ${dto.module}) not found in config during delete`);
191
+ }
192
+ const updatedContent = JSON.stringify(metaData, null, 2);
193
+ await fs.writeFile(filePath, updatedContent);
194
+ }
195
+ };
196
+ exports.ListOfValuesMetadataService = ListOfValuesMetadataService;
197
+ exports.ListOfValuesMetadataService = ListOfValuesMetadataService = __decorate([
198
+ (0, common_1.Injectable)(),
199
+ __param(7, (0, typeorm_1.InjectEntityManager)()),
200
+ __param(8, (0, typeorm_1.InjectRepository)(list_of_values_entity_1.ListOfValues, 'default')),
201
+ __metadata("design:paramtypes", [model_metadata_service_1.ModelMetadataService,
202
+ module_metadata_service_1.ModuleMetadataService,
203
+ config_1.ConfigService,
204
+ file_service_1.FileService,
205
+ core_1.DiscoveryService,
206
+ crud_helper_service_1.CrudHelperService,
207
+ list_of_values_mapper_1.ListOfValuesMapper,
208
+ typeorm_2.EntityManager,
209
+ typeorm_2.Repository,
210
+ core_1.ModuleRef,
211
+ module_metadata_helper_service_1.ModuleMetadataHelperService])
212
+ ], ListOfValuesMetadataService);
213
+ //# sourceMappingURL=list-of-values-metadata.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-of-values-metadata.service.js","sourceRoot":"","sources":["../../src/services/list-of-values-metadata.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable, Logger } from '@nestjs/common';\nimport { DiscoveryService, ModuleRef } from \"@nestjs/core\";\nimport { InjectEntityManager, InjectRepository } from '@nestjs/typeorm';\nimport { EntityManager, Repository } from 'typeorm';\n\nimport { ConfigService } from '@nestjs/config';\nimport { CrudHelperService } from 'src/services/crud-helper.service';\nimport { CRUDService } from 'src/services/crud.service';\nimport { FileService } from 'src/services/file.service';\nimport { ModelMetadataService } from 'src/services/model-metadata.service';\nimport { ModuleMetadataService } from 'src/services/module-metadata.service';\n\n\nimport * as fs from 'fs/promises'; // Use the Promise-based version of fs for async/await\nimport { ModuleMetadataHelperService } from 'src/helpers/module-metadata-helper.service';\n\nimport { ListOfValues } from 'src/entities/list-of-values.entity';\nimport { ListOfValuesMapper } from 'src/mappers/list-of-values-mapper';\n\n\n\n@Injectable()\nexport class ListOfValuesMetadataService extends CRUDService<ListOfValues> {\n private readonly logger = new Logger(this.constructor.name);\n constructor(\n readonly modelMetadataService: ModelMetadataService,\n readonly moduleMetadataService: ModuleMetadataService,\n readonly configService: ConfigService,\n readonly fileService: FileService,\n readonly discoveryService: DiscoveryService,\n readonly crudHelperService: CrudHelperService,\n readonly listOfValuesMapper: ListOfValuesMapper,\n @InjectEntityManager()\n readonly entityManager: EntityManager,\n @InjectRepository(ListOfValues, 'default')\n readonly repo: Repository<ListOfValues>,\n readonly moduleRef: ModuleRef,\n readonly moduleMetadataHelperService: ModuleMetadataHelperService,\n\n ) {\n super(modelMetadataService, moduleMetadataService, configService, fileService, discoveryService, crudHelperService, entityManager, repo, 'listOfValues', 'solid-core', moduleRef);\n }\n\n async saveListofValuesToConfig(entity: ListOfValues) {\n if (!entity) {\n this.logger.debug('No entity found in the ListofValuesSubscriber saveListofvalueToConfig method');\n return;\n }\n\n // Validate list of value details\n const listofvalue = entity as ListOfValues;\n const moduleMetadata = entity.module;\n if (!moduleMetadata) {\n throw new Error(`Module metadata not found for listofvalue id ${entity.id}`);\n }\n\n // Get config file details\n const { filePath, metaData } = await this.getConfigFileDetails(moduleMetadata.name); // sting expected module name\n if (!filePath || !metaData) {\n throw new Error(`Configuration details not found for module: ${moduleMetadata.name}`);\n }\n\n // Write the listofvalue to the config file\n await this.writeToConfig(metaData, listofvalue, filePath);\n }\n\n async updateListofValuesToConfig(oldentity: ListOfValues, entity: ListOfValues) {\n if (!entity) {\n this.logger.debug('No entity found in the ListofValuesSubscriber saveListofvalueToConfig method');\n return;\n }\n\n // Validate list of value details\n const oldlistofvalue = oldentity as ListOfValues;\n const listofvalue = entity as ListOfValues;\n const moduleMetadata = entity.module;\n if (!moduleMetadata) {\n throw new Error(`Module metadata not found for listofvalue id ${entity.id}`);\n }\n\n // Get config file details\n const { filePath, metaData } = await this.getConfigFileDetails(moduleMetadata.name); // sting expected module name\n if (!filePath || !metaData) {\n throw new Error(`Configuration details not found for module: ${moduleMetadata.name}`);\n }\n\n // Write the listofvalue to the config file\n await this.updateToConfig(metaData, oldlistofvalue, listofvalue, filePath);\n }\n\n async deleteListOfValuesFromConfig(entity: ListOfValues) {\n if (!entity) {\n this.logger.debug('No entity found in the ListofValuesSubscriber saveListofvalueToConfig method');\n return;\n }\n\n // Validate list of value details\n const listofvalue = entity as ListOfValues;\n const moduleMetadata = entity.module;\n if (!moduleMetadata) {\n throw new Error(`Module metadata not found for listofvalue id ${entity.id}`);\n }\n\n // Get config file details\n const { filePath, metaData } = await this.getConfigFileDetails(moduleMetadata.name); // sting expected module name\n if (!filePath || !metaData) {\n throw new Error(`Configuration details not found for module: ${moduleMetadata.name}`);\n }\n\n // delete the listofvalue to the config file\n await this.deleteFromConfig(metaData, listofvalue, filePath);\n }\n\n\n\n private async getConfigFileDetails(moduleName: string): Promise<{ filePath: string; metaData: any }> {\n const filePath = await this.moduleMetadataHelperService.getModuleMetadataFilePath(moduleName);\n try {\n await fs.access(filePath);\n } catch (error) {\n throw new Error(`Configuration file not found for module: ${moduleName}`);\n }\n const metaData = await this.moduleMetadataHelperService.getModuleMetadataConfiguration(filePath);\n return { filePath, metaData };\n }\n\n private async writeToConfig(metaData: any, listofvalues: ListOfValues, filePath: string) {\n const dto = await this.listOfValuesMapper.toDto(listofvalues);\n\n if (!Array.isArray(metaData.listOfValues)) {\n metaData.listOfValues = [];\n }\n\n // Match by type + value + module\n const existingIndex = metaData.listOfValues.findIndex(\n (item: { type: string; value: string; module: number }) =>\n item.type === dto.type &&\n item.value === dto.value &&\n item.module === dto.module\n );\n\n if (existingIndex !== -1) {\n // Replace existing entry\n metaData.listOfValues[existingIndex] = dto;\n } else {\n // Insert new entry\n // metaData.listOfValues.unshift(dto);\n\n if (metaData.listOfValues.length === 0) {\n // Case 1: Empty array → add first item\n metaData.listOfValues.push(dto);\n } else {\n // Case 2: Insert new item right after index 0\n metaData.listOfValues.unshift(dto);\n }\n\n }\n\n const updatedContent = JSON.stringify(metaData, null, 2);\n await fs.writeFile(filePath, updatedContent);\n }\n\n private async updateToConfig(metaData: any, oldlistofvalues: ListOfValues, listofvalues: ListOfValues, filePath: string) {\n const newvalue = await this.listOfValuesMapper.toDto(listofvalues);\n const oldvalue = await this.listOfValuesMapper.toDto(oldlistofvalues);\n\n if (!Array.isArray(metaData.listOfValues)) {\n metaData.listOfValues = [];\n }\n\n const searchType = oldvalue.type || newvalue.type;\n const searchValue = oldvalue.value || newvalue.value;\n const searchModule = oldvalue.module || newvalue.module;\n\n const existingIndex = metaData.listOfValues.findIndex(\n (item: { type: string; value: string; module: number }) =>\n item.type === searchType && item.value === searchValue && item.module === searchModule\n );\n if (existingIndex !== -1) {\n // Replace existing match\n metaData.listOfValues[existingIndex] = newvalue;\n }\n\n const updatedContent = JSON.stringify(metaData, null, 2);\n await fs.writeFile(filePath, updatedContent);\n }\n\n\n private async deleteFromConfig(metaData: any, listofvalues: ListOfValues, filePath: string) {\n const dto = await this.listOfValuesMapper.toDto(listofvalues);\n\n if (!Array.isArray(metaData.listOfValues)) {\n metaData.listOfValues = [];\n }\n\n // Match by type + value + module\n const existingIndex = metaData.listOfValues.findIndex(\n (item: { type: string; value: string; module: number }) =>\n item.type === dto.type &&\n item.value === dto.value &&\n item.module === dto.module\n );\n\n if (existingIndex !== -1) {\n // Remove the item\n metaData.listOfValues.splice(existingIndex, 1);\n this.logger.debug(`Deleted LOV ${dto.type}:${dto.value} (module ${dto.module}) from config`);\n } else {\n this.logger.warn(\n `LOV ${dto.type}:${dto.value} (module ${dto.module}) not found in config during delete`\n );\n }\n const updatedContent = JSON.stringify(metaData, null, 2);\n await fs.writeFile(filePath, updatedContent);\n\n }\n\n\n}"]}
@@ -19,6 +19,7 @@ export declare class SolidIntrospectService implements OnApplicationBootstrap {
19
19
  private isScheduledJobProvider;
20
20
  private isSolidDatabaseModule;
21
21
  private isMailProvider;
22
+ private isWhatsappProvider;
22
23
  private isModule;
23
24
  getCRUDService(modelSingularName: string): CRUDService<any>;
24
25
  getProvider(providerName: string): InstanceWrapper<any>;
@@ -1 +1 @@
1
- {"version":3,"file":"solid-introspect.service.d.ts","sourceRoot":"","sources":["../../src/services/solid-introspect.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAIzE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAM7C,qBACa,sBAAuB,YAAW,sBAAsB;IAEjE,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAHb,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,aAAa;IAG/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2C;IAClE,sBAAsB;IAkGtB,+BAA+B,CAAC,eAAe,EAAE,eAAe,CAAC,GAAG,CAAC;IAWrE,OAAO,CAAC,QAAQ;IAWhB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,oCAAoC;IAU5C,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,QAAQ;IAuBhB,cAAc,CAAC,iBAAiB,EAAE,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC;IAK3D,WAAW,CAAC,YAAY,EAAE,MAAM;CAGjC"}
1
+ {"version":3,"file":"solid-introspect.service.d.ts","sourceRoot":"","sources":["../../src/services/solid-introspect.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAIzE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAO7C,qBACa,sBAAuB,YAAW,sBAAsB;IAEjE,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,aAAa;gBAHb,gBAAgB,EAAE,gBAAgB,EAClC,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,eAAe,EAChC,aAAa,EAAE,aAAa;IAG/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2C;IAClE,sBAAsB;IA2GtB,+BAA+B,CAAC,eAAe,EAAE,eAAe,CAAC,GAAG,CAAC;IAWrE,OAAO,CAAC,QAAQ;IAWhB,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,oCAAoC;IAU5C,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,QAAQ;IAuBhB,cAAc,CAAC,iBAAiB,EAAE,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC;IAK3D,WAAW,CAAC,YAAY,EAAE,MAAM;CAGjC"}
@@ -22,6 +22,7 @@ const scheduled_job_provider_decorator_1 = require("../decorators/scheduled-job-
22
22
  const dashboard_selection_provider_decorator_1 = require("../decorators/dashboard-selection-provider.decorator");
23
23
  const dashboard_question_data_provider_decorator_1 = require("../decorators/dashboard-question-data-provider.decorator");
24
24
  const mail_provider_decorator_1 = require("../decorators/mail-provider.decorator");
25
+ const whatsapp_provider_decorator_1 = require("../decorators/whatsapp-provider.decorator");
25
26
  let SolidIntrospectService = SolidIntrospectService_1 = class SolidIntrospectService {
26
27
  constructor(discoveryService, reflector, metadataScanner, solidRegistry) {
27
28
  this.discoveryService = discoveryService;
@@ -94,6 +95,12 @@ let SolidIntrospectService = SolidIntrospectService_1 = class SolidIntrospectSer
94
95
  mailProviders.forEach((mailProvider) => {
95
96
  this.solidRegistry.registerMailProvider(mailProvider);
96
97
  });
98
+ const whatsappProviders = this.discoveryService
99
+ .getProviders()
100
+ .filter((provider) => this.isWhatsappProvider(provider));
101
+ whatsappProviders.forEach((whatsappProvider) => {
102
+ this.solidRegistry.registerWhatsappProvider(whatsappProvider);
103
+ });
97
104
  }
98
105
  isDashboardQuestionDataProvider(providerWrapper) {
99
106
  const { instance } = providerWrapper;
@@ -155,6 +162,13 @@ let SolidIntrospectService = SolidIntrospectService_1 = class SolidIntrospectSer
155
162
  const isMailProvider = this.reflector.get(mail_provider_decorator_1.IS_MAIL_PROVIDER, instance.constructor);
156
163
  return !!isMailProvider;
157
164
  }
165
+ isWhatsappProvider(provider) {
166
+ const { instance } = provider;
167
+ if (!instance)
168
+ return false;
169
+ const isWhatsappProvider = this.reflector.get(whatsapp_provider_decorator_1.IS_WA_PROVIDER, instance.constructor);
170
+ return !!isWhatsappProvider;
171
+ }
158
172
  isModule(provider) {
159
173
  const metatype = provider.metatype;
160
174
  if (metatype && typeof metatype === 'function' && Reflect.getMetadata('imports', metatype)) {
@@ -1 +1 @@
1
- {"version":3,"file":"solid-introspect.service.js","sourceRoot":"","sources":["../../src/services/solid-introspect.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { classify } from '@angular-devkit/core/src/utils/strings';\nimport { Injectable, Logger, OnApplicationBootstrap } from '@nestjs/common';\nimport { DiscoveryService, MetadataScanner, Reflector } from '@nestjs/core';\nimport { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper';\nimport { IS_COMPUTED_FIELD_PROVIDER } from 'src/decorators/computed-field-provider.decorator';\nimport { IS_SELECTION_PROVIDER } from 'src/decorators/selection-provider.decorator';\nimport { IS_SOLID_DATABASE_MODULE } from 'src/decorators/solid-database-module.decorator';\nimport { SolidRegistry } from 'src/helpers/solid-registry';\nimport { CRUDService } from './crud.service';\nimport { IS_SCHEDULED_JOB_PROVIDER } from 'src/decorators/scheduled-job-provider.decorator';\nimport { IS_DASHBOARD_VARIABLE_SELECTION_PROVIDER } from 'src/decorators/dashboard-selection-provider.decorator';\nimport { IS_DASHBOARD_QUESTION_DATA_PROVIDER } from 'src/decorators/dashboard-question-data-provider.decorator';\nimport { IS_MAIL_PROVIDER } from 'src/decorators/mail-provider.decorator';\n\n@Injectable()\nexport class SolidIntrospectService implements OnApplicationBootstrap {\n constructor(\n private readonly discoveryService: DiscoveryService,\n private readonly reflector: Reflector,\n private readonly metadataScanner: MetadataScanner,\n private readonly solidRegistry: SolidRegistry,\n ) { }\n\n private readonly logger = new Logger(SolidIntrospectService.name);\n onApplicationBootstrap() {\n this.logger.log('Introspecting the application for Solid metadata');\n\n // Register all seeders\n const seeders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isSeeder(provider));\n seeders.forEach((seeder) => {\n this.solidRegistry.registerSeeder(seeder);\n });\n\n // TODO: Scan the filesystem and populate the solid metadata\n\n // Register all ISelectionProvider implementations\n const selectionProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isSelectionProvider(provider));\n\n selectionProviders.forEach((selectionProvider) => {\n this.solidRegistry.registerSelectionProvider(selectionProvider);\n });\n\n // Register all IDashboardSelectionProvider implementations\n const dashboardVariableSelectionProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isDashboardVariableSelectionProvider(provider));\n\n dashboardVariableSelectionProviders.forEach((dashboardSelectionProvider) => {\n this.solidRegistry.registerDashboardVariableSelectionProvider(dashboardSelectionProvider);\n });\n\n // Register all IDashboardSelectionProvider implementations\n const dashboardQuestionDataProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isDashboardQuestionDataProvider(provider));\n\n dashboardQuestionDataProviders.forEach((provider) => {\n this.solidRegistry.registerDashboardQuestionDataProvider(provider);\n });\n\n\n // Register all IComputedProvider implementations\n const computedFieldProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isComputedFieldProvider(provider));\n\n computedFieldProviders.forEach((computedFieldProvider) => {\n // @ts-ignore\n this.solidRegistry.registerComputedFieldProvider(computedFieldProvider);\n });\n\n // Register all ISolidDatabaseModules implementations\n const solidDatabaseModules = this.discoveryService\n .getProviders()\n .filter((provider) => this.isSolidDatabaseModule(provider));\n\n solidDatabaseModules.forEach((solidDatabaseModule) => {\n this.solidRegistry.registerSolidDatabaseModule(solidDatabaseModule);\n });\n\n // keep track of all the controllers & respective methods. \n const allControllers = this.discoveryService\n .getControllers()\n .map((controller) => {\n const { instance } = controller;\n return {\n name: controller.name,\n methods: this.metadataScanner.getAllMethodNames(Object.getPrototypeOf(instance))\n };\n });\n\n this.solidRegistry.registerControllers(new Set(allControllers));\n\n // Register all modules\n const allModules = this.discoveryService\n .getProviders()\n .filter((provider) => this.isModule(provider));\n this.solidRegistry.registerModules(allModules);\n\n // Register all IScheduledJob implementations\n const scheduledJobProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isScheduledJobProvider(provider));\n\n scheduledJobProviders.forEach((scheduledJobProvider) => {\n this.solidRegistry.registerScheduledJobProvider(scheduledJobProvider);\n });\n\n // Register all IMail implementations\n const mailProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isMailProvider(provider));\n\n mailProviders.forEach((mailProvider) => {\n this.solidRegistry.registerMailProvider(mailProvider);\n });\n }\n\n isDashboardQuestionDataProvider(providerWrapper: InstanceWrapper<any>) {\n const { instance } = providerWrapper;\n if (!instance) return false;\n const provider = this.reflector.get<boolean>(\n IS_DASHBOARD_QUESTION_DATA_PROVIDER,\n instance.constructor,\n );\n return !!provider;\n }\n\n // This method identifies a provider as a seeder if it has a seed method i.e duck typing\n private isSeeder(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const seedMethod = this.metadataScanner\n .getAllMethodNames(Object.getPrototypeOf(instance))\n .find((methodName) => methodName === 'seed');\n if (!seedMethod) return false;\n return true;\n }\n\n private isSelectionProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isSelectionProvider = this.reflector.get<boolean>(\n IS_SELECTION_PROVIDER,\n instance.constructor,\n );\n\n return !!isSelectionProvider;\n }\n\n private isDashboardVariableSelectionProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n const isDashboardSelectionProvider = this.reflector.get<boolean>(\n IS_DASHBOARD_VARIABLE_SELECTION_PROVIDER,\n instance.constructor,\n );\n return !!isDashboardSelectionProvider;\n }\n\n private isComputedFieldProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isComputedFieldProvider = this.reflector.get<boolean>(\n IS_COMPUTED_FIELD_PROVIDER,\n instance.constructor,\n );\n\n return !!isComputedFieldProvider;\n }\n\n private isScheduledJobProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isScheduledJobProvider = this.reflector.get<boolean>(\n IS_SCHEDULED_JOB_PROVIDER,\n instance.constructor,\n );\n\n return !!isScheduledJobProvider;\n }\n\n private isSolidDatabaseModule(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isSolidDatabaseModule = this.reflector.get<boolean>(\n IS_SOLID_DATABASE_MODULE,\n instance.constructor,\n );\n\n return !!isSolidDatabaseModule;\n }\n\n private isMailProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isMailProvider = this.reflector.get<boolean>(\n IS_MAIL_PROVIDER,\n instance.constructor,\n );\n\n return !!isMailProvider;\n }\n\n private isModule(provider: InstanceWrapper): boolean {\n const metatype = provider.metatype;\n // Check if it's a Static Module (Class-Based)\n if (metatype && typeof metatype === 'function' && Reflect.getMetadata('imports', metatype)) {\n return true;\n }\n\n // Ensure provider.instance is an object before checking for 'module'\n if (provider.instance && typeof provider.instance === 'object') {\n // Check if it's a Dynamic Module (Object-Based)\n if ('module' in provider.instance && typeof provider.instance.module === 'function') {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Given a model singular name this will return the crud service instance.\n * @param modelSingularName \n * @returns \n */\n getCRUDService(modelSingularName: string): CRUDService<any> {\n const provider = this.getProvider(`${classify(modelSingularName)}Service`);\n return provider?.instance as CRUDService<any>;\n }\n\n getProvider(providerName: string) {\n return this.discoveryService.getProviders().find((provider) => provider.name === providerName);\n }\n}\n"]}
1
+ {"version":3,"file":"solid-introspect.service.js","sourceRoot":"","sources":["../../src/services/solid-introspect.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { classify } from '@angular-devkit/core/src/utils/strings';\nimport { Injectable, Logger, OnApplicationBootstrap } from '@nestjs/common';\nimport { DiscoveryService, MetadataScanner, Reflector } from '@nestjs/core';\nimport { InstanceWrapper } from '@nestjs/core/injector/instance-wrapper';\nimport { IS_COMPUTED_FIELD_PROVIDER } from 'src/decorators/computed-field-provider.decorator';\nimport { IS_SELECTION_PROVIDER } from 'src/decorators/selection-provider.decorator';\nimport { IS_SOLID_DATABASE_MODULE } from 'src/decorators/solid-database-module.decorator';\nimport { SolidRegistry } from 'src/helpers/solid-registry';\nimport { CRUDService } from './crud.service';\nimport { IS_SCHEDULED_JOB_PROVIDER } from 'src/decorators/scheduled-job-provider.decorator';\nimport { IS_DASHBOARD_VARIABLE_SELECTION_PROVIDER } from 'src/decorators/dashboard-selection-provider.decorator';\nimport { IS_DASHBOARD_QUESTION_DATA_PROVIDER } from 'src/decorators/dashboard-question-data-provider.decorator';\nimport { IS_MAIL_PROVIDER } from 'src/decorators/mail-provider.decorator';\nimport { IS_WA_PROVIDER } from 'src/decorators/whatsapp-provider.decorator';\n\n@Injectable()\nexport class SolidIntrospectService implements OnApplicationBootstrap {\n constructor(\n private readonly discoveryService: DiscoveryService,\n private readonly reflector: Reflector,\n private readonly metadataScanner: MetadataScanner,\n private readonly solidRegistry: SolidRegistry,\n ) { }\n\n private readonly logger = new Logger(SolidIntrospectService.name);\n onApplicationBootstrap() {\n this.logger.log('Introspecting the application for Solid metadata');\n\n // Register all seeders\n const seeders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isSeeder(provider));\n seeders.forEach((seeder) => {\n this.solidRegistry.registerSeeder(seeder);\n });\n\n // TODO: Scan the filesystem and populate the solid metadata\n\n // Register all ISelectionProvider implementations\n const selectionProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isSelectionProvider(provider));\n\n selectionProviders.forEach((selectionProvider) => {\n this.solidRegistry.registerSelectionProvider(selectionProvider);\n });\n\n // Register all IDashboardSelectionProvider implementations\n const dashboardVariableSelectionProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isDashboardVariableSelectionProvider(provider));\n\n dashboardVariableSelectionProviders.forEach((dashboardSelectionProvider) => {\n this.solidRegistry.registerDashboardVariableSelectionProvider(dashboardSelectionProvider);\n });\n\n // Register all IDashboardSelectionProvider implementations\n const dashboardQuestionDataProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isDashboardQuestionDataProvider(provider));\n\n dashboardQuestionDataProviders.forEach((provider) => {\n this.solidRegistry.registerDashboardQuestionDataProvider(provider);\n });\n\n\n // Register all IComputedProvider implementations\n const computedFieldProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isComputedFieldProvider(provider));\n\n computedFieldProviders.forEach((computedFieldProvider) => {\n // @ts-ignore\n this.solidRegistry.registerComputedFieldProvider(computedFieldProvider);\n });\n\n // Register all ISolidDatabaseModules implementations\n const solidDatabaseModules = this.discoveryService\n .getProviders()\n .filter((provider) => this.isSolidDatabaseModule(provider));\n\n solidDatabaseModules.forEach((solidDatabaseModule) => {\n this.solidRegistry.registerSolidDatabaseModule(solidDatabaseModule);\n });\n\n // keep track of all the controllers & respective methods. \n const allControllers = this.discoveryService\n .getControllers()\n .map((controller) => {\n const { instance } = controller;\n return {\n name: controller.name,\n methods: this.metadataScanner.getAllMethodNames(Object.getPrototypeOf(instance))\n };\n });\n\n this.solidRegistry.registerControllers(new Set(allControllers));\n\n // Register all modules\n const allModules = this.discoveryService\n .getProviders()\n .filter((provider) => this.isModule(provider));\n this.solidRegistry.registerModules(allModules);\n\n // Register all IScheduledJob implementations\n const scheduledJobProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isScheduledJobProvider(provider));\n\n scheduledJobProviders.forEach((scheduledJobProvider) => {\n this.solidRegistry.registerScheduledJobProvider(scheduledJobProvider);\n });\n\n // Register all IMail implementations\n const mailProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isMailProvider(provider));\n\n mailProviders.forEach((mailProvider) => {\n this.solidRegistry.registerMailProvider(mailProvider);\n });\n\n // Register all IMail implementations\n const whatsappProviders = this.discoveryService\n .getProviders()\n .filter((provider) => this.isWhatsappProvider(provider));\n\n whatsappProviders.forEach((whatsappProvider) => {\n this.solidRegistry.registerWhatsappProvider(whatsappProvider);\n });\n }\n\n isDashboardQuestionDataProvider(providerWrapper: InstanceWrapper<any>) {\n const { instance } = providerWrapper;\n if (!instance) return false;\n const provider = this.reflector.get<boolean>(\n IS_DASHBOARD_QUESTION_DATA_PROVIDER,\n instance.constructor,\n );\n return !!provider;\n }\n\n // This method identifies a provider as a seeder if it has a seed method i.e duck typing\n private isSeeder(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const seedMethod = this.metadataScanner\n .getAllMethodNames(Object.getPrototypeOf(instance))\n .find((methodName) => methodName === 'seed');\n if (!seedMethod) return false;\n return true;\n }\n\n private isSelectionProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isSelectionProvider = this.reflector.get<boolean>(\n IS_SELECTION_PROVIDER,\n instance.constructor,\n );\n\n return !!isSelectionProvider;\n }\n\n private isDashboardVariableSelectionProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n const isDashboardSelectionProvider = this.reflector.get<boolean>(\n IS_DASHBOARD_VARIABLE_SELECTION_PROVIDER,\n instance.constructor,\n );\n return !!isDashboardSelectionProvider;\n }\n\n private isComputedFieldProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isComputedFieldProvider = this.reflector.get<boolean>(\n IS_COMPUTED_FIELD_PROVIDER,\n instance.constructor,\n );\n\n return !!isComputedFieldProvider;\n }\n\n private isScheduledJobProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isScheduledJobProvider = this.reflector.get<boolean>(\n IS_SCHEDULED_JOB_PROVIDER,\n instance.constructor,\n );\n\n return !!isScheduledJobProvider;\n }\n\n private isSolidDatabaseModule(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isSolidDatabaseModule = this.reflector.get<boolean>(\n IS_SOLID_DATABASE_MODULE,\n instance.constructor,\n );\n\n return !!isSolidDatabaseModule;\n }\n\n private isMailProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isMailProvider = this.reflector.get<boolean>(\n IS_MAIL_PROVIDER,\n instance.constructor,\n );\n\n return !!isMailProvider;\n }\n\n private isWhatsappProvider(provider: InstanceWrapper) {\n const { instance } = provider;\n if (!instance) return false;\n\n const isWhatsappProvider = this.reflector.get<boolean>(\n IS_WA_PROVIDER,\n instance.constructor,\n );\n\n return !!isWhatsappProvider;\n }\n\n private isModule(provider: InstanceWrapper): boolean {\n const metatype = provider.metatype;\n // Check if it's a Static Module (Class-Based)\n if (metatype && typeof metatype === 'function' && Reflect.getMetadata('imports', metatype)) {\n return true;\n }\n\n // Ensure provider.instance is an object before checking for 'module'\n if (provider.instance && typeof provider.instance === 'object') {\n // Check if it's a Dynamic Module (Object-Based)\n if ('module' in provider.instance && typeof provider.instance.module === 'function') {\n return true;\n }\n }\n\n return false;\n }\n\n /**\n * Given a model singular name this will return the crud service instance.\n * @param modelSingularName \n * @returns \n */\n getCRUDService(modelSingularName: string): CRUDService<any> {\n const provider = this.getProvider(`${classify(modelSingularName)}Service`);\n return provider?.instance as CRUDService<any>;\n }\n\n getProvider(providerName: string) {\n return this.discoveryService.getProviders().find((provider) => provider.name === providerName);\n }\n}\n"]}
@@ -3,9 +3,7 @@ import { Logger } from '@nestjs/common';
3
3
  import { ConfigType } from '@nestjs/config';
4
4
  import commonConfig from 'src/config/common.config';
5
5
  import { QueueMessage } from 'src/interfaces/mq';
6
- import { SmsTemplateService } from '../sms-template.service';
7
- import { Msg91BaseSMSService } from '../sms/Msg91BaseSMSService';
8
- import { ISMS } from "../../interfaces";
6
+ import { IWhatsAppTransport } from "../../interfaces";
9
7
  import { PublisherFactory } from '../queues/publisher-factory.service';
10
8
  declare enum Msg91WhatsappParameterHeaderType {
11
9
  image = 0,
@@ -18,11 +16,15 @@ export interface Msg91WhatsappParameter {
18
16
  };
19
17
  body: string[];
20
18
  }
21
- export declare class Msg91WhatsappService extends Msg91BaseSMSService implements ISMS {
19
+ export declare class Msg91WhatsappService implements IWhatsAppTransport {
20
+ private readonly commonConfiguration;
21
+ private readonly publisherFactory;
22
22
  private readonly httpService;
23
23
  readonly logger: Logger;
24
- constructor(commonConfiguration: ConfigType<typeof commonConfig>, publisherFactory: PublisherFactory<any>, smsTemplateService: SmsTemplateService, httpService: HttpService);
25
- sendSMSSynchronously(message: QueueMessage<any>): Promise<void>;
24
+ constructor(commonConfiguration: ConfigType<typeof commonConfig>, publisherFactory: PublisherFactory<any>, httpService: HttpService);
25
+ sendWhatsAppMessage(to: string, templateId: string, parameters: any, parentEntity?: any, parentEntityId?: any): Promise<any>;
26
+ private sendWhatsAppMessageAsynchronously;
27
+ sendWhatsAppMessageSynchronously(message: QueueMessage<any>): Promise<void>;
26
28
  private createWhatsappRequest;
27
29
  private createWhatsappToAndComponents;
28
30
  private createWhatsappComponents;
@@ -1 +1 @@
1
- {"version":3,"file":"Msg91WhatsappService.d.ts","sourceRoot":"","sources":["../../../src/services/whatsapp/Msg91WhatsappService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAsB,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,YAAY,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAEvE,aAAK,gCAAgC;IACnC,KAAK,IAAA;IACL,IAAI,IAAA;CACL;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,gCAAgC,CAAC;QACvC,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AA+BD,qBACa,oBAAqB,SAAQ,mBAAoB,YAAW,IAAI;IASzE,OAAO,CAAC,QAAQ,CAAC,WAAW;IAR9B,QAAQ,CAAC,MAAM,SAAyC;gBAItD,mBAAmB,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,EAEpD,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,CAAC,EACvC,kBAAkB,EAAE,kBAAkB,EACrB,WAAW,EAAE,WAAW;IAKrC,oBAAoB,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAarE,OAAO,CAAC,qBAAqB;IA4B7B,OAAO,CAAC,6BAA6B;IAUrC,OAAO,CAAC,wBAAwB;IAmBhC,OAAO,CAAC,sBAAsB;CAY/B"}
1
+ {"version":3,"file":"Msg91WhatsappService.d.ts","sourceRoot":"","sources":["../../../src/services/whatsapp/Msg91WhatsappService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAsB,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,YAAY,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAGvE,aAAK,gCAAgC;IACnC,KAAK,IAAA;IACL,IAAI,IAAA;CACL;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,gCAAgC,CAAC;QACvC,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AA+BD,qBAEa,oBAAqB,YAAW,kBAAkB;IAK3D,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IAEpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAP9B,QAAQ,CAAC,MAAM,SAAyC;gBAIrC,mBAAmB,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,EAEpD,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,CAAC,EACvC,WAAW,EAAE,WAAW;IAGrC,mBAAmB,CACvB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,GAAG,EACf,YAAY,CAAC,EAAE,GAAG,EAClB,cAAc,CAAC,EAAE,GAAG,GACnB,OAAO,CAAC,GAAG,CAAC;YAeD,iCAAiC;IAMzC,gCAAgC,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAajF,OAAO,CAAC,qBAAqB;IA4B7B,OAAO,CAAC,6BAA6B;IAUrC,OAAO,CAAC,wBAAwB;IAmBhC,OAAO,CAAC,sBAAsB;CAY/B"}
@@ -20,21 +20,38 @@ exports.Msg91WhatsappService = void 0;
20
20
  const axios_1 = require("@nestjs/axios");
21
21
  const common_1 = require("@nestjs/common");
22
22
  const common_config_1 = __importDefault(require("../../config/common.config"));
23
- const sms_template_service_1 = require("../sms-template.service");
24
- const Msg91BaseSMSService_1 = require("../sms/Msg91BaseSMSService");
25
23
  const publisher_factory_service_1 = require("../queues/publisher-factory.service");
24
+ const whatsapp_provider_decorator_1 = require("../../decorators/whatsapp-provider.decorator");
26
25
  var Msg91WhatsappParameterHeaderType;
27
26
  (function (Msg91WhatsappParameterHeaderType) {
28
27
  Msg91WhatsappParameterHeaderType[Msg91WhatsappParameterHeaderType["image"] = 0] = "image";
29
28
  Msg91WhatsappParameterHeaderType[Msg91WhatsappParameterHeaderType["text"] = 1] = "text";
30
29
  })(Msg91WhatsappParameterHeaderType || (Msg91WhatsappParameterHeaderType = {}));
31
- let Msg91WhatsappService = Msg91WhatsappService_1 = class Msg91WhatsappService extends Msg91BaseSMSService_1.Msg91BaseSMSService {
32
- constructor(commonConfiguration, publisherFactory, smsTemplateService, httpService) {
33
- super(commonConfiguration, 'WhatsappQueuePublisher', publisherFactory, smsTemplateService);
30
+ let Msg91WhatsappService = Msg91WhatsappService_1 = class Msg91WhatsappService {
31
+ constructor(commonConfiguration, publisherFactory, httpService) {
32
+ this.commonConfiguration = commonConfiguration;
33
+ this.publisherFactory = publisherFactory;
34
34
  this.httpService = httpService;
35
35
  this.logger = new common_1.Logger(Msg91WhatsappService_1.name);
36
36
  }
37
- async sendSMSSynchronously(message) {
37
+ async sendWhatsAppMessage(to, templateId, parameters, parentEntity, parentEntityId) {
38
+ const message = {
39
+ payload: {
40
+ to,
41
+ templateId,
42
+ ...parameters,
43
+ },
44
+ parentEntity,
45
+ parentEntityId,
46
+ };
47
+ return this.sendWhatsAppMessageAsynchronously(message);
48
+ }
49
+ async sendWhatsAppMessageAsynchronously(message) {
50
+ const { to, templateId } = message.payload;
51
+ this.logger.debug(`Queueing WhatsApp message to ${to} with template ${templateId}`);
52
+ return this.publisherFactory.publish(message, 'Msg91WhatsappQueuePublisher');
53
+ }
54
+ async sendWhatsAppMessageSynchronously(message) {
38
55
  const body = this.createWhatsappRequest(message);
39
56
  const headers = { authkey: this.commonConfiguration.msg91Whatsapp.apiKey };
40
57
  await this.httpService.axiosRef.post(`${this.commonConfiguration.msg91Whatsapp.url}`, body, { headers });
@@ -95,9 +112,9 @@ let Msg91WhatsappService = Msg91WhatsappService_1 = class Msg91WhatsappService e
95
112
  exports.Msg91WhatsappService = Msg91WhatsappService;
96
113
  exports.Msg91WhatsappService = Msg91WhatsappService = Msg91WhatsappService_1 = __decorate([
97
114
  (0, common_1.Injectable)(),
115
+ (0, whatsapp_provider_decorator_1.WhatsAppProvider)(),
98
116
  __param(0, (0, common_1.Inject)(common_config_1.default.KEY)),
99
117
  __metadata("design:paramtypes", [void 0, publisher_factory_service_1.PublisherFactory,
100
- sms_template_service_1.SmsTemplateService,
101
118
  axios_1.HttpService])
102
119
  ], Msg91WhatsappService);
103
120
  //# sourceMappingURL=Msg91WhatsappService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Msg91WhatsappService.js","sourceRoot":"","sources":["../../../src/services/whatsapp/Msg91WhatsappService.ts"],"names":[],"mappings":"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","sourcesContent":["import { HttpService } from '@nestjs/axios';\nimport { Inject, Injectable, Logger } from '@nestjs/common';\nimport { ConfigType } from '@nestjs/config';\nimport commonConfig from 'src/config/common.config';\nimport { QueueMessage } from 'src/interfaces/mq';\nimport { SmsTemplateService } from '../sms-template.service';\nimport { Msg91BaseSMSService } from '../sms/Msg91BaseSMSService';\nimport { ISMS } from \"../../interfaces\";\nimport { PublisherFactory } from '../queues/publisher-factory.service';\n\nenum Msg91WhatsappParameterHeaderType {\n image,\n text,\n}\n\nexport interface Msg91WhatsappParameter {\n header?: {\n type: Msg91WhatsappParameterHeaderType;\n value: string;\n };\n body: string[];\n}\n\ninterface WhatsappRequest {\n integrated_number: string;\n content_type: string;\n payload: WhatsappPayload;\n}\n\ninterface WhatsappPayload {\n messaging_product: string;\n type: string;\n template: WhatsappTemplate;\n}\n\ninterface WhatsappTemplate {\n name: string;\n language: WhatsappLanguage;\n namespace: string;\n to_and_components: WhatsappToAndComponents[];\n}\n\ninterface WhatsappLanguage {\n code: string;\n policy: string;\n}\n\ninterface WhatsappToAndComponents {\n to: string[];\n components: any;\n}\n\n@Injectable()\nexport class Msg91WhatsappService extends Msg91BaseSMSService implements ISMS {\n readonly logger = new Logger(Msg91WhatsappService.name);\n\n constructor(\n @Inject(commonConfig.KEY)\n commonConfiguration: ConfigType<typeof commonConfig>,\n // whatsappPublisher: WhatsappQueuePublisher,\n publisherFactory: PublisherFactory<any>,\n smsTemplateService: SmsTemplateService,\n private readonly httpService: HttpService,\n ) {\n super(commonConfiguration, 'WhatsappQueuePublisher', publisherFactory, smsTemplateService);\n }\n\n async sendSMSSynchronously(message: QueueMessage<any>): Promise<void> {\n const body = this.createWhatsappRequest(message);\n const headers = { authkey: this.commonConfiguration.msg91Whatsapp.apiKey };\n await this.httpService.axiosRef.post(\n `${this.commonConfiguration.msg91Whatsapp.url}`,\n body,\n { headers },\n );\n this.logger.debug(\n `Sending Whatsapp message for CP registration with body ${JSON.stringify(body)} and url ${this.commonConfiguration.msg91Whatsapp.url}`,\n );\n }\n\n private createWhatsappRequest(message: QueueMessage<any>): WhatsappRequest {\n const { to, templateId, ...parameters } = message.payload;\n const whatsappToAndComponents = this.createWhatsappToAndComponents(\n to,\n parameters,\n );\n const whatsappLanguage = {\n code: 'en',\n policy: 'deterministic',\n };\n const whatsappTemplate = this.createWhatsappTemplate(\n templateId,\n whatsappToAndComponents,\n whatsappLanguage,\n );\n const whatsappPayload = {\n messaging_product: 'whatsapp',\n type: 'template',\n template: whatsappTemplate,\n };\n return {\n integrated_number:\n this.commonConfiguration.msg91Whatsapp.integratedNumber,\n content_type: 'template',\n payload: whatsappPayload,\n };\n }\n\n private createWhatsappToAndComponents(\n to: string,\n parameters: Msg91WhatsappParameter,\n ): WhatsappToAndComponents {\n return {\n to: [to],\n components: this.createWhatsappComponents(parameters),\n };\n }\n\n private createWhatsappComponents(parameters: Msg91WhatsappParameter): any {\n const components = {};\n if (parameters.header) {\n components['header_1'] = {\n type: parameters.header.type,\n value: parameters.header.value,\n };\n }\n if (parameters.body && parameters.body.length > 0) {\n parameters.body.forEach((elem, index) => {\n components[`body_${index + 1}`] = {\n type: 'text',\n value: elem,\n };\n });\n }\n return components;\n }\n\n private createWhatsappTemplate(\n templateName: string,\n toAndComponents: WhatsappToAndComponents,\n language: WhatsappLanguage,\n ): WhatsappTemplate {\n return {\n name: templateName,\n language: language,\n namespace: null,\n to_and_components: [toAndComponents],\n };\n }\n}\n"]}
1
+ {"version":3,"file":"Msg91WhatsappService.js","sourceRoot":"","sources":["../../../src/services/whatsapp/Msg91WhatsappService.ts"],"names":[],"mappings":"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","sourcesContent":["import { HttpService } from '@nestjs/axios';\nimport { Inject, Injectable, Logger } from '@nestjs/common';\nimport { ConfigType } from '@nestjs/config';\nimport commonConfig from 'src/config/common.config';\nimport { QueueMessage } from 'src/interfaces/mq';\nimport { IWhatsAppTransport } from \"../../interfaces\";\nimport { PublisherFactory } from '../queues/publisher-factory.service';\nimport { WhatsAppProvider } from 'src/decorators/whatsapp-provider.decorator';\n\nenum Msg91WhatsappParameterHeaderType {\n image,\n text,\n}\n\nexport interface Msg91WhatsappParameter {\n header?: {\n type: Msg91WhatsappParameterHeaderType;\n value: string;\n };\n body: string[];\n}\n\ninterface WhatsappRequest {\n integrated_number: string;\n content_type: string;\n payload: WhatsappPayload;\n}\n\ninterface WhatsappPayload {\n messaging_product: string;\n type: string;\n template: WhatsappTemplate;\n}\n\ninterface WhatsappTemplate {\n name: string;\n language: WhatsappLanguage;\n namespace: string;\n to_and_components: WhatsappToAndComponents[];\n}\n\ninterface WhatsappLanguage {\n code: string;\n policy: string;\n}\n\ninterface WhatsappToAndComponents {\n to: string[];\n components: any;\n}\n\n@Injectable()\n@WhatsAppProvider()\nexport class Msg91WhatsappService implements IWhatsAppTransport {\n readonly logger = new Logger(Msg91WhatsappService.name);\n\n constructor(\n @Inject(commonConfig.KEY)\n private readonly commonConfiguration: ConfigType<typeof commonConfig>,\n // whatsappPublisher: WhatsappQueuePublisher,\n private readonly publisherFactory: PublisherFactory<any>,\n private readonly httpService: HttpService,\n ) {}\n\n async sendWhatsAppMessage(\n to: string,\n templateId: string,\n parameters: any,\n parentEntity?: any,\n parentEntityId?: any\n ): Promise<any> {\n const message = {\n payload: {\n to,\n templateId,\n ...parameters,\n },\n parentEntity,\n parentEntityId,\n };\n\n // All messages are always queued as per requirement\n return this.sendWhatsAppMessageAsynchronously(message);\n }\n\n private async sendWhatsAppMessageAsynchronously(message: any): Promise<any> {\n const { to, templateId } = message.payload;\n this.logger.debug(`Queueing WhatsApp message to ${to} with template ${templateId}`);\n return this.publisherFactory.publish(message, 'Msg91WhatsappQueuePublisher');\n }\n\n async sendWhatsAppMessageSynchronously(message: QueueMessage<any>): Promise<void> {\n const body = this.createWhatsappRequest(message);\n const headers = { authkey: this.commonConfiguration.msg91Whatsapp.apiKey };\n await this.httpService.axiosRef.post(\n `${this.commonConfiguration.msg91Whatsapp.url}`,\n body,\n { headers },\n );\n this.logger.debug(\n `Sending Whatsapp message for CP registration with body ${JSON.stringify(body)} and url ${this.commonConfiguration.msg91Whatsapp.url}`,\n );\n }\n\n private createWhatsappRequest(message: QueueMessage<any>): WhatsappRequest {\n const { to, templateId, ...parameters } = message.payload;\n const whatsappToAndComponents = this.createWhatsappToAndComponents(\n to,\n parameters,\n );\n const whatsappLanguage = {\n code: 'en',\n policy: 'deterministic',\n };\n const whatsappTemplate = this.createWhatsappTemplate(\n templateId,\n whatsappToAndComponents,\n whatsappLanguage,\n );\n const whatsappPayload = {\n messaging_product: 'whatsapp',\n type: 'template',\n template: whatsappTemplate,\n };\n return {\n integrated_number:\n this.commonConfiguration.msg91Whatsapp.integratedNumber,\n content_type: 'template',\n payload: whatsappPayload,\n };\n }\n\n private createWhatsappToAndComponents(\n to: string,\n parameters: Msg91WhatsappParameter,\n ): WhatsappToAndComponents {\n return {\n to: [to],\n components: this.createWhatsappComponents(parameters),\n };\n }\n\n private createWhatsappComponents(parameters: Msg91WhatsappParameter): any {\n const components = {};\n if (parameters.header) {\n components['header_1'] = {\n type: parameters.header.type,\n value: parameters.header.value,\n };\n }\n if (parameters.body && parameters.body.length > 0) {\n parameters.body.forEach((elem, index) => {\n components[`body_${index + 1}`] = {\n type: 'text',\n value: elem,\n };\n });\n }\n return components;\n }\n\n private createWhatsappTemplate(\n templateName: string,\n toAndComponents: WhatsappToAndComponents,\n language: WhatsappLanguage,\n ): WhatsappTemplate {\n return {\n name: templateName,\n language: language,\n namespace: null,\n to_and_components: [toAndComponents],\n };\n }\n}\n"]}
@@ -0,0 +1,18 @@
1
+ import { HttpService } from '@nestjs/axios';
2
+ import { Logger } from '@nestjs/common';
3
+ import { ConfigType } from '@nestjs/config';
4
+ import commonConfig from 'src/config/common.config';
5
+ import { QueueMessage } from 'src/interfaces/mq';
6
+ import { IWhatsAppTransport } from "../../interfaces";
7
+ import { PublisherFactory } from '../queues/publisher-factory.service';
8
+ export declare class Three60WhatsappService implements IWhatsAppTransport {
9
+ private readonly commonConfiguration;
10
+ private readonly publisherFactory;
11
+ private readonly httpService;
12
+ readonly logger: Logger;
13
+ constructor(commonConfiguration: ConfigType<typeof commonConfig>, publisherFactory: PublisherFactory<any>, httpService: HttpService);
14
+ sendWhatsAppMessage(to: string, templateId: string, parameters: any, parentEntity?: any, parentEntityId?: any): Promise<any>;
15
+ private sendWhatsAppMessageAsynchronously;
16
+ sendWhatsAppMessageSynchronously(message: QueueMessage<any>): Promise<void>;
17
+ }
18
+ //# sourceMappingURL=Three60WhatsappService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Three60WhatsappService.d.ts","sourceRoot":"","sources":["../../../src/services/whatsapp/Three60WhatsappService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAsB,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,YAAY,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC;AAGvE,qBAEa,sBAAuB,YAAW,kBAAkB;IAK7D,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAN9B,QAAQ,CAAC,MAAM,SAA2C;gBAIvC,mBAAmB,EAAE,UAAU,CAAC,OAAO,YAAY,CAAC,EACpD,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,CAAC,EACvC,WAAW,EAAE,WAAW;IAGrC,mBAAmB,CACvB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,GAAG,EACf,YAAY,CAAC,EAAE,GAAG,EAClB,cAAc,CAAC,EAAE,GAAG,GACnB,OAAO,CAAC,GAAG,CAAC;YAeD,iCAAiC;IAMzC,gCAAgC,CAAC,OAAO,EAAE,YAAY,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAGlF"}
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
12
+ return function (target, key) { decorator(target, key, paramIndex); }
13
+ };
14
+ var __importDefault = (this && this.__importDefault) || function (mod) {
15
+ return (mod && mod.__esModule) ? mod : { "default": mod };
16
+ };
17
+ var Three60WhatsappService_1;
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.Three60WhatsappService = void 0;
20
+ const axios_1 = require("@nestjs/axios");
21
+ const common_1 = require("@nestjs/common");
22
+ const common_config_1 = __importDefault(require("../../config/common.config"));
23
+ const publisher_factory_service_1 = require("../queues/publisher-factory.service");
24
+ const whatsapp_provider_decorator_1 = require("../../decorators/whatsapp-provider.decorator");
25
+ let Three60WhatsappService = Three60WhatsappService_1 = class Three60WhatsappService {
26
+ constructor(commonConfiguration, publisherFactory, httpService) {
27
+ this.commonConfiguration = commonConfiguration;
28
+ this.publisherFactory = publisherFactory;
29
+ this.httpService = httpService;
30
+ this.logger = new common_1.Logger(Three60WhatsappService_1.name);
31
+ }
32
+ async sendWhatsAppMessage(to, templateId, parameters, parentEntity, parentEntityId) {
33
+ const message = {
34
+ payload: {
35
+ to,
36
+ templateId,
37
+ ...parameters,
38
+ },
39
+ parentEntity,
40
+ parentEntityId,
41
+ };
42
+ return this.sendWhatsAppMessageAsynchronously(message);
43
+ }
44
+ async sendWhatsAppMessageAsynchronously(message) {
45
+ const { to, templateId } = message.payload;
46
+ this.logger.debug(`Queueing WhatsApp message to ${to} with template ${templateId}`);
47
+ return this.publisherFactory.publish(message, 'Three60WhatsappQueuePublisher');
48
+ }
49
+ async sendWhatsAppMessageSynchronously(message) {
50
+ throw new Error(`Currently not implemented.`);
51
+ }
52
+ };
53
+ exports.Three60WhatsappService = Three60WhatsappService;
54
+ exports.Three60WhatsappService = Three60WhatsappService = Three60WhatsappService_1 = __decorate([
55
+ (0, common_1.Injectable)(),
56
+ (0, whatsapp_provider_decorator_1.WhatsAppProvider)(),
57
+ __param(0, (0, common_1.Inject)(common_config_1.default.KEY)),
58
+ __metadata("design:paramtypes", [void 0, publisher_factory_service_1.PublisherFactory,
59
+ axios_1.HttpService])
60
+ ], Three60WhatsappService);
61
+ //# sourceMappingURL=Three60WhatsappService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Three60WhatsappService.js","sourceRoot":"","sources":["../../../src/services/whatsapp/Three60WhatsappService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,yCAA4C;AAC5C,2CAA4D;AAE5D,+EAAoD;AAGpD,mFAAuE;AACvE,8FAA8E;AAIvE,IAAM,sBAAsB,8BAA5B,MAAM,sBAAsB;IAGjC,YAEE,mBAAqE,EACpD,gBAAuC,EACvC,WAAwB;QAFxB,wBAAmB,GAAnB,mBAAmB,CAAiC;QACpD,qBAAgB,GAAhB,gBAAgB,CAAuB;QACvC,gBAAW,GAAX,WAAW,CAAa;QANlC,WAAM,GAAG,IAAI,eAAM,CAAC,wBAAsB,CAAC,IAAI,CAAC,CAAC;IAOtD,CAAC;IAEL,KAAK,CAAC,mBAAmB,CACvB,EAAU,EACV,UAAkB,EAClB,UAAe,EACf,YAAkB,EAClB,cAAoB;QAEpB,MAAM,OAAO,GAAG;YACd,OAAO,EAAE;gBACP,EAAE;gBACF,UAAU;gBACV,GAAG,UAAU;aACd;YACD,YAAY;YACZ,cAAc;SACf,CAAC;QAGF,OAAO,IAAI,CAAC,iCAAiC,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC;IAEO,KAAK,CAAC,iCAAiC,CAAC,OAAY;QAC1D,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;QAC3C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,kBAAkB,UAAU,EAAE,CAAC,CAAC;QACpF,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,OAAO,EAAE,+BAA+B,CAAC,CAAC;IACjF,CAAC;IAED,KAAK,CAAC,gCAAgC,CAAC,OAA0B;QAC/D,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;CACF,CAAA;AAxCY,wDAAsB;iCAAtB,sBAAsB;IAFlC,IAAA,mBAAU,GAAE;IACZ,IAAA,8CAAgB,GAAE;IAKd,WAAA,IAAA,eAAM,EAAC,uBAAY,CAAC,GAAG,CAAC,CAAA;6CAEU,4CAAgB;QACrB,mBAAW;GAPhC,sBAAsB,CAwClC","sourcesContent":["import { HttpService } from '@nestjs/axios';\nimport { Inject, Injectable, Logger } from '@nestjs/common';\nimport { ConfigType } from '@nestjs/config';\nimport commonConfig from 'src/config/common.config';\nimport { QueueMessage } from 'src/interfaces/mq';\nimport { IWhatsAppTransport } from \"../../interfaces\";\nimport { PublisherFactory } from '../queues/publisher-factory.service';\nimport { WhatsAppProvider } from 'src/decorators/whatsapp-provider.decorator';\n\n@Injectable()\n@WhatsAppProvider()\nexport class Three60WhatsappService implements IWhatsAppTransport {\n readonly logger = new Logger(Three60WhatsappService.name);\n\n constructor(\n @Inject(commonConfig.KEY)\n private readonly commonConfiguration: ConfigType<typeof commonConfig>,\n private readonly publisherFactory: PublisherFactory<any>,\n private readonly httpService: HttpService,\n ) { }\n\n async sendWhatsAppMessage(\n to: string,\n templateId: string,\n parameters: any,\n parentEntity?: any,\n parentEntityId?: any\n ): Promise<any> {\n const message = {\n payload: {\n to,\n templateId,\n ...parameters,\n },\n parentEntity,\n parentEntityId,\n };\n\n // All messages are always queued as per requirement\n return this.sendWhatsAppMessageAsynchronously(message);\n }\n\n private async sendWhatsAppMessageAsynchronously(message: any): Promise<any> {\n const { to, templateId } = message.payload;\n this.logger.debug(`Queueing WhatsApp message to ${to} with template ${templateId}`);\n return this.publisherFactory.publish(message, 'Three60WhatsappQueuePublisher');\n }\n\n async sendWhatsAppMessageSynchronously(message: QueueMessage<any>): Promise<void> {\n throw new Error(`Currently not implemented.`);\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"solid-core.module.d.ts","sourceRoot":"","sources":["../src/solid-core.module.ts"],"names":[],"mappings":"AAqRA,qBA4Wa,eAAe;CAAI"}
1
+ {"version":3,"file":"solid-core.module.d.ts","sourceRoot":"","sources":["../src/solid-core.module.ts"],"names":[],"mappings":"AA6RA,qBAsXa,eAAe;CAAI"}