@solidstarters/solid-core 1.2.204 → 1.2.206

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 (500) hide show
  1. package/dist/commands/info.command.d.ts +19 -0
  2. package/dist/commands/info.command.d.ts.map +1 -0
  3. package/dist/commands/info.command.js +98 -0
  4. package/dist/commands/info.command.js.map +1 -0
  5. package/dist/commands/mcp.command.d.ts.map +1 -1
  6. package/dist/commands/mcp.command.js +2 -10
  7. package/dist/commands/mcp.command.js.map +1 -1
  8. package/dist/commands/seed.command.d.ts.map +1 -1
  9. package/dist/commands/seed.command.js +2 -11
  10. package/dist/commands/seed.command.js.map +1 -1
  11. package/dist/controllers/email-template.controller.d.ts +3 -1
  12. package/dist/controllers/email-template.controller.d.ts.map +1 -1
  13. package/dist/controllers/email-template.controller.js +7 -4
  14. package/dist/controllers/email-template.controller.js.map +1 -1
  15. package/dist/controllers/google-authentication.controller.d.ts +4 -5
  16. package/dist/controllers/google-authentication.controller.d.ts.map +1 -1
  17. package/dist/controllers/google-authentication.controller.js +21 -14
  18. package/dist/controllers/google-authentication.controller.js.map +1 -1
  19. package/dist/controllers/otp-authentication.controller.d.ts +10 -0
  20. package/dist/controllers/otp-authentication.controller.d.ts.map +1 -1
  21. package/dist/controllers/otp-authentication.controller.js +1 -1
  22. package/dist/controllers/setting.controller.d.ts +2 -34
  23. package/dist/controllers/setting.controller.d.ts.map +1 -1
  24. package/dist/controllers/setting.controller.js +4 -130
  25. package/dist/controllers/setting.controller.js.map +1 -1
  26. package/dist/decorators/settings-provider.decorator.d.ts +3 -0
  27. package/dist/decorators/settings-provider.decorator.d.ts.map +1 -0
  28. package/dist/decorators/settings-provider.decorator.js +8 -0
  29. package/dist/decorators/settings-provider.decorator.js.map +1 -0
  30. package/dist/decorators/solid-password.decorator.d.ts.map +1 -1
  31. package/dist/decorators/solid-password.decorator.js +3 -3
  32. package/dist/decorators/solid-password.decorator.js.map +1 -1
  33. package/dist/dtos/create-role-metadata.dto.d.ts +3 -4
  34. package/dist/dtos/create-role-metadata.dto.d.ts.map +1 -1
  35. package/dist/dtos/create-role-metadata.dto.js +4 -51
  36. package/dist/dtos/create-role-metadata.dto.js.map +1 -1
  37. package/dist/dtos/create-setting.dto.d.ts +3 -0
  38. package/dist/dtos/create-setting.dto.d.ts.map +1 -1
  39. package/dist/dtos/create-setting.dto.js +20 -2
  40. package/dist/dtos/create-setting.dto.js.map +1 -1
  41. package/dist/dtos/update-setting.dto.d.ts +3 -0
  42. package/dist/dtos/update-setting.dto.d.ts.map +1 -1
  43. package/dist/dtos/update-setting.dto.js +19 -1
  44. package/dist/dtos/update-setting.dto.js.map +1 -1
  45. package/dist/entities/setting.entity.d.ts +3 -0
  46. package/dist/entities/setting.entity.d.ts.map +1 -1
  47. package/dist/entities/setting.entity.js +13 -1
  48. package/dist/entities/setting.entity.js.map +1 -1
  49. package/dist/factories/mail.factory.d.ts +3 -4
  50. package/dist/factories/mail.factory.d.ts.map +1 -1
  51. package/dist/factories/mail.factory.js +6 -12
  52. package/dist/factories/mail.factory.js.map +1 -1
  53. package/dist/factories/sms.factory.d.ts +3 -4
  54. package/dist/factories/sms.factory.d.ts.map +1 -1
  55. package/dist/factories/sms.factory.js +6 -12
  56. package/dist/factories/sms.factory.js.map +1 -1
  57. package/dist/factories/whatsapp.factory.d.ts +3 -4
  58. package/dist/factories/whatsapp.factory.d.ts.map +1 -1
  59. package/dist/factories/whatsapp.factory.js +6 -12
  60. package/dist/factories/whatsapp.factory.js.map +1 -1
  61. package/dist/guards/access-token.guard.d.ts +3 -4
  62. package/dist/guards/access-token.guard.d.ts.map +1 -1
  63. package/dist/guards/access-token.guard.js +14 -9
  64. package/dist/guards/access-token.guard.js.map +1 -1
  65. package/dist/helpers/cors.helper.d.ts +1 -2
  66. package/dist/helpers/cors.helper.d.ts.map +1 -1
  67. package/dist/helpers/cors.helper.js +2 -2
  68. package/dist/helpers/cors.helper.js.map +1 -1
  69. package/dist/helpers/error-mapper.service.d.ts.map +1 -1
  70. package/dist/helpers/error-mapper.service.js.map +1 -1
  71. package/dist/helpers/google-oauth.helper.d.ts +7 -3
  72. package/dist/helpers/google-oauth.helper.d.ts.map +1 -1
  73. package/dist/helpers/google-oauth.helper.js +1 -2
  74. package/dist/helpers/google-oauth.helper.js.map +1 -1
  75. package/dist/helpers/module.helper.js +0 -2
  76. package/dist/helpers/module.helper.js.map +1 -1
  77. package/dist/helpers/solid-registry.d.ts +8 -3
  78. package/dist/helpers/solid-registry.d.ts.map +1 -1
  79. package/dist/helpers/solid-registry.js +32 -9
  80. package/dist/helpers/solid-registry.js.map +1 -1
  81. package/dist/index.d.ts +2 -4
  82. package/dist/index.d.ts.map +1 -1
  83. package/dist/index.js +3 -6
  84. package/dist/index.js.map +1 -1
  85. package/dist/interfaces.d.ts +21 -0
  86. package/dist/interfaces.d.ts.map +1 -1
  87. package/dist/interfaces.js +8 -1
  88. package/dist/interfaces.js.map +1 -1
  89. package/dist/passport-strategies/google-oauth.strategy.d.ts +1 -4
  90. package/dist/passport-strategies/google-oauth.strategy.d.ts.map +1 -1
  91. package/dist/passport-strategies/google-oauth.strategy.js +12 -12
  92. package/dist/passport-strategies/google-oauth.strategy.js.map +1 -1
  93. package/dist/seeders/email-template-seeder.service.d.ts +3 -4
  94. package/dist/seeders/email-template-seeder.service.d.ts.map +1 -1
  95. package/dist/seeders/email-template-seeder.service.js +7 -12
  96. package/dist/seeders/email-template-seeder.service.js.map +1 -1
  97. package/dist/seeders/module-metadata-seeder.service.d.ts +1 -5
  98. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  99. package/dist/seeders/module-metadata-seeder.service.js +23 -23
  100. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  101. package/dist/seeders/seed-data/solid-core-metadata.json +98 -4
  102. package/dist/seeders/sms-template-seeder.service.d.ts +3 -4
  103. package/dist/seeders/sms-template-seeder.service.d.ts.map +1 -1
  104. package/dist/seeders/sms-template-seeder.service.js +7 -12
  105. package/dist/seeders/sms-template-seeder.service.js.map +1 -1
  106. package/dist/services/action-metadata.service.d.ts +2 -13
  107. package/dist/services/action-metadata.service.d.ts.map +1 -1
  108. package/dist/services/action-metadata.service.js +4 -22
  109. package/dist/services/action-metadata.service.js.map +1 -1
  110. package/dist/services/ai-interaction.service.d.ts +2 -13
  111. package/dist/services/ai-interaction.service.d.ts.map +1 -1
  112. package/dist/services/ai-interaction.service.js +6 -24
  113. package/dist/services/ai-interaction.service.js.map +1 -1
  114. package/dist/services/authentication.service.d.ts +14 -10
  115. package/dist/services/authentication.service.d.ts.map +1 -1
  116. package/dist/services/authentication.service.js +159 -114
  117. package/dist/services/authentication.service.js.map +1 -1
  118. package/dist/services/bcrypt.service.d.ts +3 -5
  119. package/dist/services/bcrypt.service.d.ts.map +1 -1
  120. package/dist/services/bcrypt.service.js +10 -14
  121. package/dist/services/bcrypt.service.js.map +1 -1
  122. package/dist/services/chatter-message-details.service.d.ts +2 -13
  123. package/dist/services/chatter-message-details.service.d.ts.map +1 -1
  124. package/dist/services/chatter-message-details.service.js +4 -22
  125. package/dist/services/chatter-message-details.service.js.map +1 -1
  126. package/dist/services/chatter-message.service.d.ts +2 -13
  127. package/dist/services/chatter-message.service.d.ts.map +1 -1
  128. package/dist/services/chatter-message.service.js +5 -23
  129. package/dist/services/chatter-message.service.js.map +1 -1
  130. package/dist/services/crud.service.d.ts +12 -12
  131. package/dist/services/crud.service.d.ts.map +1 -1
  132. package/dist/services/crud.service.js +25 -17
  133. package/dist/services/crud.service.js.map +1 -1
  134. package/dist/services/dashboard-question-sql-dataset-config.service.d.ts +2 -13
  135. package/dist/services/dashboard-question-sql-dataset-config.service.d.ts.map +1 -1
  136. package/dist/services/dashboard-question-sql-dataset-config.service.js +4 -21
  137. package/dist/services/dashboard-question-sql-dataset-config.service.js.map +1 -1
  138. package/dist/services/dashboard-question.service.d.ts +2 -13
  139. package/dist/services/dashboard-question.service.d.ts.map +1 -1
  140. package/dist/services/dashboard-question.service.js +4 -21
  141. package/dist/services/dashboard-question.service.js.map +1 -1
  142. package/dist/services/dashboard-variable.service.d.ts +2 -13
  143. package/dist/services/dashboard-variable.service.d.ts.map +1 -1
  144. package/dist/services/dashboard-variable.service.js +4 -21
  145. package/dist/services/dashboard-variable.service.js.map +1 -1
  146. package/dist/services/dashboard.service.d.ts +2 -13
  147. package/dist/services/dashboard.service.d.ts.map +1 -1
  148. package/dist/services/dashboard.service.js +4 -21
  149. package/dist/services/dashboard.service.js.map +1 -1
  150. package/dist/services/email-template.service.d.ts +2 -13
  151. package/dist/services/email-template.service.d.ts.map +1 -1
  152. package/dist/services/email-template.service.js +4 -22
  153. package/dist/services/email-template.service.js.map +1 -1
  154. package/dist/services/export-template.service.d.ts +2 -13
  155. package/dist/services/export-template.service.d.ts.map +1 -1
  156. package/dist/services/export-template.service.js +4 -21
  157. package/dist/services/export-template.service.js.map +1 -1
  158. package/dist/services/export-transaction.service.d.ts +2 -13
  159. package/dist/services/export-transaction.service.d.ts.map +1 -1
  160. package/dist/services/export-transaction.service.js +4 -21
  161. package/dist/services/export-transaction.service.js.map +1 -1
  162. package/dist/services/field-metadata.service.d.ts +11 -0
  163. package/dist/services/field-metadata.service.d.ts.map +1 -1
  164. package/dist/services/field-metadata.service.js +3 -0
  165. package/dist/services/field-metadata.service.js.map +1 -1
  166. package/dist/services/file/file-service.interface.d.ts +22 -0
  167. package/dist/services/file/file-service.interface.d.ts.map +1 -0
  168. package/dist/services/file/file-service.interface.js +5 -0
  169. package/dist/services/file/file-service.interface.js.map +1 -0
  170. package/dist/services/file.service.d.ts +1 -4
  171. package/dist/services/file.service.d.ts.map +1 -1
  172. package/dist/services/file.service.js +11 -12
  173. package/dist/services/file.service.js.map +1 -1
  174. package/dist/services/genai/r2r-helper.service.d.ts +3 -1
  175. package/dist/services/genai/r2r-helper.service.d.ts.map +1 -1
  176. package/dist/services/genai/r2r-helper.service.js +11 -7
  177. package/dist/services/genai/r2r-helper.service.js.map +1 -1
  178. package/dist/services/import-transaction-error-log.service.d.ts +2 -13
  179. package/dist/services/import-transaction-error-log.service.d.ts.map +1 -1
  180. package/dist/services/import-transaction-error-log.service.js +4 -22
  181. package/dist/services/import-transaction-error-log.service.js.map +1 -1
  182. package/dist/services/import-transaction.service.d.ts +2 -13
  183. package/dist/services/import-transaction.service.d.ts.map +1 -1
  184. package/dist/services/import-transaction.service.js +4 -22
  185. package/dist/services/import-transaction.service.js.map +1 -1
  186. package/dist/services/list-of-values.service.d.ts +2 -13
  187. package/dist/services/list-of-values.service.d.ts.map +1 -1
  188. package/dist/services/list-of-values.service.js +4 -22
  189. package/dist/services/list-of-values.service.js.map +1 -1
  190. package/dist/services/locale.service.d.ts +2 -13
  191. package/dist/services/locale.service.d.ts.map +1 -1
  192. package/dist/services/locale.service.js +4 -22
  193. package/dist/services/locale.service.js.map +1 -1
  194. package/dist/services/mail/elastic-email.service.d.ts +4 -5
  195. package/dist/services/mail/elastic-email.service.d.ts.map +1 -1
  196. package/dist/services/mail/elastic-email.service.js +10 -13
  197. package/dist/services/mail/elastic-email.service.js.map +1 -1
  198. package/dist/services/mail/smtp-email.service.d.ts +3 -4
  199. package/dist/services/mail/smtp-email.service.d.ts.map +1 -1
  200. package/dist/services/mail/smtp-email.service.js +19 -17
  201. package/dist/services/mail/smtp-email.service.js.map +1 -1
  202. package/dist/services/media-storage-provider-metadata.service.d.ts +11 -0
  203. package/dist/services/media-storage-provider-metadata.service.d.ts.map +1 -1
  204. package/dist/services/media-storage-provider-metadata.service.js +3 -0
  205. package/dist/services/media-storage-provider-metadata.service.js.map +1 -1
  206. package/dist/services/media.service.d.ts +2 -9
  207. package/dist/services/media.service.d.ts.map +1 -1
  208. package/dist/services/media.service.js +17 -28
  209. package/dist/services/media.service.js.map +1 -1
  210. package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts +2 -4
  211. package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts.map +1 -1
  212. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js +2 -11
  213. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js.map +1 -1
  214. package/dist/services/mediaStorageProviders/file-storage-provider.d.ts +3 -1
  215. package/dist/services/mediaStorageProviders/file-storage-provider.d.ts.map +1 -1
  216. package/dist/services/mediaStorageProviders/file-storage-provider.js +16 -12
  217. package/dist/services/mediaStorageProviders/file-storage-provider.js.map +1 -1
  218. package/dist/services/mediaStorageProviders/index.d.ts +1 -1
  219. package/dist/services/mediaStorageProviders/index.d.ts.map +1 -1
  220. package/dist/services/mediaStorageProviders/index.js +1 -1
  221. package/dist/services/mediaStorageProviders/index.js.map +1 -1
  222. package/dist/services/menu-item-metadata.service.d.ts +2 -13
  223. package/dist/services/menu-item-metadata.service.d.ts.map +1 -1
  224. package/dist/services/menu-item-metadata.service.js +4 -22
  225. package/dist/services/menu-item-metadata.service.js.map +1 -1
  226. package/dist/services/model-metadata.service.d.ts +11 -0
  227. package/dist/services/model-metadata.service.d.ts.map +1 -1
  228. package/dist/services/model-metadata.service.js +3 -0
  229. package/dist/services/model-metadata.service.js.map +1 -1
  230. package/dist/services/model-sequence.service.d.ts +2 -13
  231. package/dist/services/model-sequence.service.d.ts.map +1 -1
  232. package/dist/services/model-sequence.service.js +4 -21
  233. package/dist/services/model-sequence.service.js.map +1 -1
  234. package/dist/services/module-metadata.service.d.ts +14 -1
  235. package/dist/services/module-metadata.service.d.ts.map +1 -1
  236. package/dist/services/module-metadata.service.js +13 -6
  237. package/dist/services/module-metadata.service.js.map +1 -1
  238. package/dist/services/mq-message-queue.service.d.ts +2 -13
  239. package/dist/services/mq-message-queue.service.d.ts.map +1 -1
  240. package/dist/services/mq-message-queue.service.js +4 -22
  241. package/dist/services/mq-message-queue.service.js.map +1 -1
  242. package/dist/services/mq-message.service.d.ts +2 -13
  243. package/dist/services/mq-message.service.d.ts.map +1 -1
  244. package/dist/services/mq-message.service.js +4 -22
  245. package/dist/services/mq-message.service.js.map +1 -1
  246. package/dist/services/permission-metadata.service.d.ts +2 -13
  247. package/dist/services/permission-metadata.service.d.ts.map +1 -1
  248. package/dist/services/permission-metadata.service.js +4 -22
  249. package/dist/services/permission-metadata.service.js.map +1 -1
  250. package/dist/services/role-metadata.service.d.ts +2 -13
  251. package/dist/services/role-metadata.service.d.ts.map +1 -1
  252. package/dist/services/role-metadata.service.js +4 -23
  253. package/dist/services/role-metadata.service.js.map +1 -1
  254. package/dist/services/saved-filters.service.d.ts +2 -13
  255. package/dist/services/saved-filters.service.d.ts.map +1 -1
  256. package/dist/services/saved-filters.service.js +4 -21
  257. package/dist/services/saved-filters.service.js.map +1 -1
  258. package/dist/services/scheduled-job.service.d.ts +2 -13
  259. package/dist/services/scheduled-job.service.d.ts.map +1 -1
  260. package/dist/services/scheduled-job.service.js +4 -22
  261. package/dist/services/scheduled-job.service.js.map +1 -1
  262. package/dist/services/security-rule.service.d.ts +2 -13
  263. package/dist/services/security-rule.service.d.ts.map +1 -1
  264. package/dist/services/security-rule.service.js +5 -23
  265. package/dist/services/security-rule.service.js.map +1 -1
  266. package/dist/services/setting.service.d.ts +23 -30
  267. package/dist/services/setting.service.d.ts.map +1 -1
  268. package/dist/services/setting.service.js +147 -196
  269. package/dist/services/setting.service.js.map +1 -1
  270. package/dist/services/settings/default-settings-provider.service.d.ts +1058 -0
  271. package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -0
  272. package/dist/services/settings/default-settings-provider.service.js +139 -0
  273. package/dist/services/settings/default-settings-provider.service.js.map +1 -0
  274. package/dist/services/short-url/tiny-url.service.d.ts +3 -4
  275. package/dist/services/short-url/tiny-url.service.d.ts.map +1 -1
  276. package/dist/services/short-url/tiny-url.service.js +10 -13
  277. package/dist/services/short-url/tiny-url.service.js.map +1 -1
  278. package/dist/services/sms/Msg91BaseSMSService.d.ts +3 -4
  279. package/dist/services/sms/Msg91BaseSMSService.d.ts.map +1 -1
  280. package/dist/services/sms/Msg91BaseSMSService.js +3 -3
  281. package/dist/services/sms/Msg91BaseSMSService.js.map +1 -1
  282. package/dist/services/sms/Msg91OTPService.d.ts +2 -3
  283. package/dist/services/sms/Msg91OTPService.d.ts.map +1 -1
  284. package/dist/services/sms/Msg91OTPService.js +7 -13
  285. package/dist/services/sms/Msg91OTPService.js.map +1 -1
  286. package/dist/services/sms/Msg91SMSService.d.ts +2 -3
  287. package/dist/services/sms/Msg91SMSService.d.ts.map +1 -1
  288. package/dist/services/sms/Msg91SMSService.js +7 -13
  289. package/dist/services/sms/Msg91SMSService.js.map +1 -1
  290. package/dist/services/sms/TwilioSMSService.d.ts +3 -4
  291. package/dist/services/sms/TwilioSMSService.d.ts.map +1 -1
  292. package/dist/services/sms/TwilioSMSService.js +13 -16
  293. package/dist/services/sms/TwilioSMSService.js.map +1 -1
  294. package/dist/services/sms-template.service.d.ts +2 -13
  295. package/dist/services/sms-template.service.d.ts.map +1 -1
  296. package/dist/services/sms-template.service.js +4 -22
  297. package/dist/services/sms-template.service.js.map +1 -1
  298. package/dist/services/solid-introspect.service.d.ts +4 -1
  299. package/dist/services/solid-introspect.service.d.ts.map +1 -1
  300. package/dist/services/solid-introspect.service.js +33 -47
  301. package/dist/services/solid-introspect.service.js.map +1 -1
  302. package/dist/services/textract.service.d.ts +1 -4
  303. package/dist/services/textract.service.d.ts.map +1 -1
  304. package/dist/services/textract.service.js +14 -18
  305. package/dist/services/textract.service.js.map +1 -1
  306. package/dist/services/user-activity-history.service.d.ts +2 -13
  307. package/dist/services/user-activity-history.service.d.ts.map +1 -1
  308. package/dist/services/user-activity-history.service.js +4 -22
  309. package/dist/services/user-activity-history.service.js.map +1 -1
  310. package/dist/services/user-view-metadata.service.d.ts +2 -13
  311. package/dist/services/user-view-metadata.service.d.ts.map +1 -1
  312. package/dist/services/user-view-metadata.service.js +4 -22
  313. package/dist/services/user-view-metadata.service.js.map +1 -1
  314. package/dist/services/user.service.d.ts +2 -15
  315. package/dist/services/user.service.d.ts.map +1 -1
  316. package/dist/services/user.service.js +7 -28
  317. package/dist/services/user.service.js.map +1 -1
  318. package/dist/services/view-metadata.service.d.ts +2 -13
  319. package/dist/services/view-metadata.service.d.ts.map +1 -1
  320. package/dist/services/view-metadata.service.js +5 -23
  321. package/dist/services/view-metadata.service.js.map +1 -1
  322. package/dist/services/whatsapp/Msg91WhatsappService.d.ts +3 -4
  323. package/dist/services/whatsapp/Msg91WhatsappService.d.ts.map +1 -1
  324. package/dist/services/whatsapp/Msg91WhatsappService.js +12 -18
  325. package/dist/services/whatsapp/Msg91WhatsappService.js.map +1 -1
  326. package/dist/services/whatsapp/Three60WhatsappService.d.ts +1 -4
  327. package/dist/services/whatsapp/Three60WhatsappService.d.ts.map +1 -1
  328. package/dist/services/whatsapp/Three60WhatsappService.js +2 -11
  329. package/dist/services/whatsapp/Three60WhatsappService.js.map +1 -1
  330. package/dist/solid-core.module.d.ts.map +1 -1
  331. package/dist/solid-core.module.js +9 -47
  332. package/dist/solid-core.module.js.map +1 -1
  333. package/dist/transformers/typeorm/local-date-time-transformer.d.ts.map +1 -1
  334. package/dist/transformers/typeorm/local-date-time-transformer.js +4 -2
  335. package/dist/transformers/typeorm/local-date-time-transformer.js.map +1 -1
  336. package/dist/tsconfig.tsbuildinfo +1 -1
  337. package/package.json +1 -1
  338. package/src/commands/info.command.ts +101 -0
  339. package/src/commands/mcp.command.ts +3 -17
  340. package/src/commands/seed.command.ts +4 -16
  341. package/src/controllers/email-template.controller.ts +9 -4
  342. package/src/controllers/google-authentication.controller.ts +19 -12
  343. package/src/controllers/setting.controller.ts +6 -81
  344. package/src/decorators/settings-provider.decorator.ts +7 -0
  345. package/src/decorators/solid-password.decorator.ts +43 -43
  346. package/src/dtos/create-role-metadata.dto.ts +4 -81
  347. package/src/dtos/create-setting.dto.ts +14 -1
  348. package/src/dtos/update-setting.dto.ts +14 -0
  349. package/src/entities/setting.entity.ts +15 -1
  350. package/src/factories/mail.factory.ts +4 -4
  351. package/src/factories/sms.factory.ts +9 -7
  352. package/src/factories/whatsapp.factory.ts +4 -4
  353. package/src/guards/access-token.guard.ts +12 -5
  354. package/src/helpers/cors.helper.ts +3 -3
  355. package/src/helpers/error-mapper.service.ts +0 -1
  356. package/src/helpers/google-oauth.helper.ts +11 -7
  357. package/src/helpers/module.helper.ts +2 -2
  358. package/src/helpers/solid-registry.ts +45 -16
  359. package/src/index.ts +2 -4
  360. package/src/interfaces.ts +29 -0
  361. package/src/passport-strategies/google-oauth.strategy.ts +11 -8
  362. package/src/seeders/email-template-seeder.service.ts +6 -4
  363. package/src/seeders/module-metadata-seeder.service.ts +40 -28
  364. package/src/seeders/seed-data/solid-core-metadata.json +99 -5
  365. package/src/seeders/sms-template-seeder.service.ts +6 -4
  366. package/src/services/action-metadata.service.ts +4 -16
  367. package/src/services/ai-interaction.service.ts +6 -17
  368. package/src/services/authentication.service.ts +173 -111
  369. package/src/services/bcrypt.service.ts +9 -9
  370. package/src/services/chatter-message-details.service.ts +5 -17
  371. package/src/services/chatter-message.service.ts +2 -14
  372. package/src/services/crud.service.ts +36 -28
  373. package/src/services/dashboard-question-sql-dataset-config.service.ts +4 -15
  374. package/src/services/dashboard-question.service.ts +4 -17
  375. package/src/services/dashboard-variable.service.ts +4 -16
  376. package/src/services/dashboard.service.ts +2 -13
  377. package/src/services/email-template.service.ts +3 -15
  378. package/src/services/export-template.service.ts +4 -18
  379. package/src/services/export-transaction.service.ts +4 -19
  380. package/src/services/field-metadata.service.ts +5 -1
  381. package/src/services/file/file-service.interface.ts +74 -0
  382. package/src/services/file.service.ts +10 -7
  383. package/src/services/genai/r2r-helper.service.ts +10 -6
  384. package/src/services/import-transaction-error-log.service.ts +5 -17
  385. package/src/services/import-transaction.service.ts +3 -15
  386. package/src/services/list-of-values.service.ts +3 -16
  387. package/src/services/locale.service.ts +3 -15
  388. package/src/services/mail/elastic-email.service.ts +7 -7
  389. package/src/services/mail/smtp-email.service.ts +19 -11
  390. package/src/services/media-storage-provider-metadata.service.ts +4 -0
  391. package/src/services/media.service.ts +39 -22
  392. package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +0 -3
  393. package/src/services/mediaStorageProviders/file-storage-provider.ts +24 -12
  394. package/src/services/mediaStorageProviders/index.ts +1 -1
  395. package/src/services/menu-item-metadata.service.ts +5 -17
  396. package/src/services/model-metadata.service.ts +4 -0
  397. package/src/services/model-sequence.service.ts +4 -15
  398. package/src/services/module-metadata.service.ts +13 -4
  399. package/src/services/mq-message-queue.service.ts +5 -17
  400. package/src/services/mq-message.service.ts +5 -17
  401. package/src/services/permission-metadata.service.ts +4 -16
  402. package/src/services/role-metadata.service.ts +3 -16
  403. package/src/services/saved-filters.service.ts +2 -13
  404. package/src/services/scheduled-job.service.ts +3 -15
  405. package/src/services/security-rule.service.ts +4 -16
  406. package/src/services/setting.service.ts +223 -212
  407. package/src/services/settings/default-settings-provider.service.ts +157 -0
  408. package/src/services/short-url/tiny-url.service.ts +9 -7
  409. package/src/services/sms/Msg91BaseSMSService.ts +6 -4
  410. package/src/services/sms/Msg91OTPService.ts +7 -7
  411. package/src/services/sms/Msg91SMSService.ts +7 -6
  412. package/src/services/sms/TwilioSMSService.ts +18 -19
  413. package/src/services/sms-template.service.ts +3 -15
  414. package/src/services/solid-introspect.service.ts +45 -66
  415. package/src/services/textract.service.ts +13 -10
  416. package/src/services/user-activity-history.service.ts +5 -17
  417. package/src/services/user-view-metadata.service.ts +5 -17
  418. package/src/services/user.service.ts +7 -22
  419. package/src/services/view-metadata.service.ts +3 -15
  420. package/src/services/whatsapp/Msg91WhatsappService.ts +10 -11
  421. package/src/services/whatsapp/Three60WhatsappService.ts +0 -3
  422. package/src/solid-core.module.ts +17 -49
  423. package/src/transformers/typeorm/local-date-time-transformer.ts +10 -5
  424. package/dist/config/app-builder.config.d.ts +0 -11
  425. package/dist/config/app-builder.config.d.ts.map +0 -1
  426. package/dist/config/app-builder.config.js +0 -13
  427. package/dist/config/app-builder.config.js.map +0 -1
  428. package/dist/config/common.config.d.ts +0 -96
  429. package/dist/config/common.config.d.ts.map +0 -1
  430. package/dist/config/common.config.js +0 -51
  431. package/dist/config/common.config.js.map +0 -1
  432. package/dist/config/iam.config.d.ts +0 -56
  433. package/dist/config/iam.config.d.ts.map +0 -1
  434. package/dist/config/iam.config.js +0 -35
  435. package/dist/config/iam.config.js.map +0 -1
  436. package/dist/config/jwt.config.d.ts +0 -14
  437. package/dist/config/jwt.config.d.ts.map +0 -1
  438. package/dist/config/jwt.config.js +0 -15
  439. package/dist/config/jwt.config.js.map +0 -1
  440. package/dist/services/genai/mcp-handlers/solid-add-button-to-form-view-mcp-handler.service.d.ts +0 -16
  441. package/dist/services/genai/mcp-handlers/solid-add-button-to-form-view-mcp-handler.service.d.ts.map +0 -1
  442. package/dist/services/genai/mcp-handlers/solid-add-button-to-form-view-mcp-handler.service.js +0 -151
  443. package/dist/services/genai/mcp-handlers/solid-add-button-to-form-view-mcp-handler.service.js.map +0 -1
  444. package/dist/services/genai/mcp-handlers/solid-add-controller-handler-method-mcp-handler.service.d.ts +0 -17
  445. package/dist/services/genai/mcp-handlers/solid-add-controller-handler-method-mcp-handler.service.d.ts.map +0 -1
  446. package/dist/services/genai/mcp-handlers/solid-add-controller-handler-method-mcp-handler.service.js +0 -80
  447. package/dist/services/genai/mcp-handlers/solid-add-controller-handler-method-mcp-handler.service.js.map +0 -1
  448. package/dist/services/genai/mcp-handlers/solid-add-custom-service-method-mcp-handler.service.d.ts +0 -16
  449. package/dist/services/genai/mcp-handlers/solid-add-custom-service-method-mcp-handler.service.d.ts.map +0 -1
  450. package/dist/services/genai/mcp-handlers/solid-add-custom-service-method-mcp-handler.service.js +0 -74
  451. package/dist/services/genai/mcp-handlers/solid-add-custom-service-method-mcp-handler.service.js.map +0 -1
  452. package/dist/services/genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.d.ts +0 -12
  453. package/dist/services/genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.d.ts.map +0 -1
  454. package/dist/services/genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.js +0 -47
  455. package/dist/services/genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.js.map +0 -1
  456. package/dist/services/genai/mcp-handlers/solid-add-header-button-or-row-button-to-list-view-mcp-handler.service.d.ts +0 -16
  457. package/dist/services/genai/mcp-handlers/solid-add-header-button-or-row-button-to-list-view-mcp-handler.service.d.ts.map +0 -1
  458. package/dist/services/genai/mcp-handlers/solid-add-header-button-or-row-button-to-list-view-mcp-handler.service.js +0 -151
  459. package/dist/services/genai/mcp-handlers/solid-add-header-button-or-row-button-to-list-view-mcp-handler.service.js.map +0 -1
  460. package/dist/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.d.ts +0 -16
  461. package/dist/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.d.ts.map +0 -1
  462. package/dist/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.js +0 -75
  463. package/dist/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.js.map +0 -1
  464. package/dist/services/genai/mcp-handlers/solid-create-custom-form-view-widget-mcp-handler.service.d.ts +0 -14
  465. package/dist/services/genai/mcp-handlers/solid-create-custom-form-view-widget-mcp-handler.service.d.ts.map +0 -1
  466. package/dist/services/genai/mcp-handlers/solid-create-custom-form-view-widget-mcp-handler.service.js +0 -73
  467. package/dist/services/genai/mcp-handlers/solid-create-custom-form-view-widget-mcp-handler.service.js.map +0 -1
  468. package/dist/services/genai/mcp-handlers/solid-create-model-with-fields-mcp-handler.service.d.ts +0 -14
  469. package/dist/services/genai/mcp-handlers/solid-create-model-with-fields-mcp-handler.service.d.ts.map +0 -1
  470. package/dist/services/genai/mcp-handlers/solid-create-model-with-fields-mcp-handler.service.js +0 -45
  471. package/dist/services/genai/mcp-handlers/solid-create-model-with-fields-mcp-handler.service.js.map +0 -1
  472. package/dist/services/genai/mcp-handlers/solid-create-module-mcp-handler.service.d.ts +0 -14
  473. package/dist/services/genai/mcp-handlers/solid-create-module-mcp-handler.service.d.ts.map +0 -1
  474. package/dist/services/genai/mcp-handlers/solid-create-module-mcp-handler.service.js +0 -51
  475. package/dist/services/genai/mcp-handlers/solid-create-module-mcp-handler.service.js.map +0 -1
  476. package/dist/services/genai/mcp-handlers/solid-update-layout-mcp-handler.service.d.ts +0 -12
  477. package/dist/services/genai/mcp-handlers/solid-update-layout-mcp-handler.service.d.ts.map +0 -1
  478. package/dist/services/genai/mcp-handlers/solid-update-layout-mcp-handler.service.js +0 -38
  479. package/dist/services/genai/mcp-handlers/solid-update-layout-mcp-handler.service.js.map +0 -1
  480. package/dist/services/media-storage-provider-metadata-seeder.service.d.ts +0 -8
  481. package/dist/services/media-storage-provider-metadata-seeder.service.d.ts.map +0 -1
  482. package/dist/services/media-storage-provider-metadata-seeder.service.js +0 -43
  483. package/dist/services/media-storage-provider-metadata-seeder.service.js.map +0 -1
  484. package/src/config/app-builder.config.ts +0 -12
  485. package/src/config/common.config.ts +0 -55
  486. package/src/config/iam.config.ts +0 -32
  487. package/src/config/jwt.config.ts +0 -13
  488. package/src/services/export_issues.txt +0 -10
  489. package/src/services/genai/mcp-handlers/solid-add-button-to-form-view-mcp-handler.service.ts +0 -137
  490. package/src/services/genai/mcp-handlers/solid-add-controller-handler-method-mcp-handler.service.ts +0 -81
  491. package/src/services/genai/mcp-handlers/solid-add-custom-service-method-mcp-handler.service.ts +0 -69
  492. package/src/services/genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.ts +0 -68
  493. package/src/services/genai/mcp-handlers/solid-add-header-button-or-row-button-to-list-view-mcp-handler.service.ts +0 -141
  494. package/src/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.ts +0 -71
  495. package/src/services/genai/mcp-handlers/solid-create-custom-form-view-widget-mcp-handler.service.ts +0 -72
  496. package/src/services/genai/mcp-handlers/solid-create-model-with-fields-mcp-handler.service.ts +0 -45
  497. package/src/services/genai/mcp-handlers/solid-create-module-mcp-handler.service.ts +0 -58
  498. package/src/services/genai/mcp-handlers/solid-update-layout-mcp-handler.service.ts +0 -40
  499. package/src/services/groupBy.json +0 -92
  500. package/src/services/media-storage-provider-metadata-seeder.service.ts +0 -33
@@ -0,0 +1,19 @@
1
+ import { CommandRunner } from 'nest-commander';
2
+ import { SolidRegistry } from 'src/helpers/solid-registry';
3
+ import { SettingService } from 'src/services/setting.service';
4
+ interface InfoCommandOptions {
5
+ detailed?: boolean;
6
+ }
7
+ export declare class InfoCommand extends CommandRunner {
8
+ private readonly solidRegistry;
9
+ private readonly settingService;
10
+ private readonly logger;
11
+ constructor(solidRegistry: SolidRegistry, settingService: SettingService);
12
+ run(passedParam: string[], options?: InfoCommandOptions): Promise<void>;
13
+ private getRegistryDetails;
14
+ private getWrapperNames;
15
+ private getDataSources;
16
+ parseDetached(val: string): boolean;
17
+ }
18
+ export {};
19
+ //# sourceMappingURL=info.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.command.d.ts","sourceRoot":"","sources":["../../src/commands/info.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAKhE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,UAAU,kBAAkB;IACxB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,qBACa,WAAY,SAAQ,aAAa;IAItC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAJnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;gBAGlC,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,cAAc;IAK7C,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB7E,OAAO,CAAC,kBAAkB;IA0B1B,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,cAAc;IAkBtB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;CAItC"}
@@ -0,0 +1,98 @@
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 InfoCommand_1;
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.InfoCommand = void 0;
14
+ const common_1 = require("@nestjs/common");
15
+ const nest_commander_1 = require("nest-commander");
16
+ const module_helper_1 = require("../helpers/module.helper");
17
+ const solid_registry_1 = require("../helpers/solid-registry");
18
+ const setting_service_1 = require("../services/setting.service");
19
+ let InfoCommand = InfoCommand_1 = class InfoCommand extends nest_commander_1.CommandRunner {
20
+ constructor(solidRegistry, settingService) {
21
+ super();
22
+ this.solidRegistry = solidRegistry;
23
+ this.settingService = settingService;
24
+ this.logger = new common_1.Logger(InfoCommand_1.name);
25
+ }
26
+ async run(passedParam, options) {
27
+ const enabledModules = (0, module_helper_1.getDynamicModuleNames)();
28
+ const dataSources = this.getDataSources();
29
+ const output = {
30
+ modules: {
31
+ count: enabledModules.length,
32
+ names: enabledModules,
33
+ },
34
+ dataSources: {
35
+ count: dataSources.length,
36
+ items: dataSources,
37
+ },
38
+ };
39
+ if (options?.detailed) {
40
+ output.registry = this.getRegistryDetails();
41
+ }
42
+ console.log(JSON.stringify(output, null, 2));
43
+ }
44
+ getRegistryDetails() {
45
+ const info = {
46
+ settings: this.settingService.getAllSettings(),
47
+ seeders: this.getWrapperNames(this.solidRegistry.getSeeders()),
48
+ scheduledJobProviders: this.getWrapperNames(this.solidRegistry.getScheduledJobProviders()),
49
+ selectionProviders: this.getWrapperNames(this.solidRegistry.getSelectionProviders()),
50
+ computedFieldProviders: this.getWrapperNames(this.solidRegistry.getComputedFieldProviders()),
51
+ solidDatabaseModules: this.getWrapperNames(this.solidRegistry.getSolidDatabaseModules()),
52
+ dashboardVariableSelectionProviders: this.getWrapperNames(this.solidRegistry.getDashboardVariableSelectionProviders()),
53
+ dashboardQuestionDataProviders: this.getWrapperNames(this.solidRegistry.getDashboardQuestionDataProviders()),
54
+ mailProviders: this.getWrapperNames(this.solidRegistry.getMailProviders()),
55
+ whatsappProviders: this.getWrapperNames(this.solidRegistry.getWhatsappProviders()),
56
+ smsProviders: this.getWrapperNames(this.solidRegistry.getSmsProviders()),
57
+ securityRuleConfigProviders: this.getWrapperNames(this.solidRegistry.getSecurityRuleConfigProviders()),
58
+ errorCodeProviders: this.getWrapperNames(this.solidRegistry.getErrorCodeProviders()),
59
+ controllers: this.solidRegistry.getControllers().map((controller) => controller.name),
60
+ };
61
+ return info;
62
+ }
63
+ getWrapperNames(wrappers) {
64
+ return wrappers
65
+ .map((wrapper) => wrapper.name || wrapper.instance?.constructor?.name)
66
+ .filter((name) => !!name);
67
+ }
68
+ getDataSources() {
69
+ const fromRegistry = this.solidRegistry
70
+ .getSolidDatabaseModules()
71
+ .map((wrapper) => wrapper.instance)
72
+ .filter((module) => !!module)
73
+ .map((module) => ({
74
+ name: module.name?.(),
75
+ type: module.type?.() ?? null,
76
+ }))
77
+ .filter((item) => !!item.name);
78
+ return fromRegistry;
79
+ }
80
+ parseDetached(val) {
81
+ if (val === undefined)
82
+ return false;
83
+ return val === 'true' || val === '1';
84
+ }
85
+ };
86
+ exports.InfoCommand = InfoCommand;
87
+ __decorate([
88
+ (0, nest_commander_1.Option)({ flags: '-d, --detailed [boolean]', description: 'Print more details about the consuming project', required: false, defaultValue: false }),
89
+ __metadata("design:type", Function),
90
+ __metadata("design:paramtypes", [String]),
91
+ __metadata("design:returntype", Boolean)
92
+ ], InfoCommand.prototype, "parseDetached", null);
93
+ exports.InfoCommand = InfoCommand = InfoCommand_1 = __decorate([
94
+ (0, nest_commander_1.Command)({ name: 'info', description: 'Prints information about the consuming project' }),
95
+ __metadata("design:paramtypes", [solid_registry_1.SolidRegistry,
96
+ setting_service_1.SettingService])
97
+ ], InfoCommand);
98
+ //# sourceMappingURL=info.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.command.js","sourceRoot":"","sources":["../../src/commands/info.command.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from '@nestjs/common';\nimport { Command, CommandRunner, Option } from 'nest-commander';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport { ISolidDatabaseModule } from 'src/interfaces';\nimport { getDynamicModuleNames } from 'src/helpers/module.helper';\nimport { SolidRegistry } from 'src/helpers/solid-registry';\nimport { SettingService } from 'src/services/setting.service';\n\ninterface InfoCommandOptions {\n detailed?: boolean;\n}\n\n@Command({ name: 'info', description: 'Prints information about the consuming project' })\nexport class InfoCommand extends CommandRunner {\n private readonly logger = new Logger(InfoCommand.name);\n\n constructor(\n private readonly solidRegistry: SolidRegistry,\n private readonly settingService: SettingService,\n ) {\n super();\n }\n\n async run(passedParam: string[], options?: InfoCommandOptions): Promise<void> {\n const enabledModules = getDynamicModuleNames();\n const dataSources = this.getDataSources();\n\n const output: Record<string, any> = {\n modules: {\n count: enabledModules.length,\n names: enabledModules,\n },\n dataSources: {\n count: dataSources.length,\n items: dataSources,\n },\n };\n\n if (options?.detailed) {\n output.registry = this.getRegistryDetails();\n }\n\n console.log(JSON.stringify(output, null, 2));\n }\n\n private getRegistryDetails(): Record<string, unknown> {\n const info = {\n settings: this.settingService.getAllSettings(),\n seeders: this.getWrapperNames(this.solidRegistry.getSeeders()),\n scheduledJobProviders: this.getWrapperNames(this.solidRegistry.getScheduledJobProviders()),\n selectionProviders: this.getWrapperNames(this.solidRegistry.getSelectionProviders()),\n computedFieldProviders: this.getWrapperNames(this.solidRegistry.getComputedFieldProviders()),\n solidDatabaseModules: this.getWrapperNames(this.solidRegistry.getSolidDatabaseModules()),\n dashboardVariableSelectionProviders: this.getWrapperNames(this.solidRegistry.getDashboardVariableSelectionProviders()),\n dashboardQuestionDataProviders: this.getWrapperNames(this.solidRegistry.getDashboardQuestionDataProviders()),\n mailProviders: this.getWrapperNames(this.solidRegistry.getMailProviders()),\n whatsappProviders: this.getWrapperNames(this.solidRegistry.getWhatsappProviders()),\n smsProviders: this.getWrapperNames(this.solidRegistry.getSmsProviders()),\n securityRuleConfigProviders: this.getWrapperNames(this.solidRegistry.getSecurityRuleConfigProviders()),\n errorCodeProviders: this.getWrapperNames(this.solidRegistry.getErrorCodeProviders()),\n controllers: this.solidRegistry.getControllers().map((controller) => controller.name),\n // modules: this.getWrapperNames(this.solidRegistry.getModules()),\n // computedFieldMetadata: {\n // count: this.solidRegistry.getComputedFieldMetadata().length,\n // },\n // defaultLocale: this.solidRegistry.getDefaultLocale()?.locale ?? null,\n };\n\n return info;\n }\n\n private getWrapperNames(wrappers: Array<{ name?: string; instance?: any }>): string[] {\n return wrappers\n .map((wrapper) => wrapper.name || wrapper.instance?.constructor?.name)\n .filter((name): name is string => !!name);\n }\n\n private getDataSources(): Array<{ name: string; type: string | null }> {\n const fromRegistry = this.solidRegistry\n .getSolidDatabaseModules()\n .map((wrapper) => wrapper.instance as ISolidDatabaseModule)\n .filter((module): module is ISolidDatabaseModule => !!module)\n .map((module) => ({\n name: module.name?.(),\n type: module.type?.() ?? null,\n }))\n .filter((item) => !!item.name);\n\n\n return fromRegistry;\n\n }\n\n // Flags\n @Option({ flags: '-d, --detailed [boolean]', description: 'Print more details about the consuming project', required: false, defaultValue: false })\n parseDetached(val: string): boolean {\n if (val === undefined) return false;\n return val === 'true' || val === '1';\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.command.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAKhE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAI3D,UAAU,iBAAiB;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,qBAIa,UAAW,SAAQ,aAAa;IAIrC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAHlC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;gBAGjC,aAAa,EAAE,aAAa;IAK3C,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;YAoB/D,eAAe;YA0Ff,cAAc;IAyB5B,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,gBAAgB;IAgCxB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAUnC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAGrC"}
1
+ {"version":3,"file":"mcp.command.d.ts","sourceRoot":"","sources":["../../src/commands/mcp.command.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAKhE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAI3D,UAAU,iBAAiB;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,qBAIa,UAAW,SAAQ,aAAa;IAIrC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAHlC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+B;gBAGjC,aAAa,EAAE,aAAa;IAK3C,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;YAoB/D,eAAe;YA0Ff,cAAc;IAyB5B,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,gBAAgB;IAsBxB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAMnC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAGrC"}
@@ -179,21 +179,13 @@ let McpCommand = McpCommand_1 = class McpCommand extends nest_commander_1.Comman
179
179
  };
180
180
  exports.McpCommand = McpCommand;
181
181
  __decorate([
182
- (0, nest_commander_1.Option)({
183
- flags: '-d, --detached [boolean]',
184
- description: 'Run containers in detached mode (only for start, default: false)',
185
- required: false,
186
- }),
182
+ (0, nest_commander_1.Option)({ flags: '-d, --detached [boolean]', description: 'Run containers in detached mode (only for start, default: false)', required: false, }),
187
183
  __metadata("design:type", Function),
188
184
  __metadata("design:paramtypes", [String]),
189
185
  __metadata("design:returntype", Boolean)
190
186
  ], McpCommand.prototype, "parseDetached", null);
191
187
  __decorate([
192
- (0, nest_commander_1.Option)({
193
- flags: '-p, --repo-path [path]',
194
- description: 'Path to the SolidX MCP Server repo containing docker-compose.yml',
195
- required: false,
196
- }),
188
+ (0, nest_commander_1.Option)({ flags: '-p, --repo-path [path]', description: 'Path to the SolidX MCP Server repo containing docker-compose.yml', required: false, }),
197
189
  __metadata("design:type", Function),
198
190
  __metadata("design:paramtypes", [String]),
199
191
  __metadata("design:returntype", String)
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.command.js","sourceRoot":"","sources":["../../src/commands/mcp.command.ts"],"names":[],"mappings":"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","sourcesContent":["import { Command, CommandRunner, Option } from 'nest-commander';\nimport { Logger } from '@nestjs/common';\nimport { spawn } from 'child_process';\nimport * as path from 'path';\nimport * as fs from 'fs';\nimport { SolidRegistry } from 'src/helpers/solid-registry';\nimport { ISolidDatabaseModule } from 'src/interfaces';\nimport { DatasourceType } from 'src/dtos/create-model-metadata.dto';\n\ninterface McpCommandOptions {\n repoPath?: string;\n detached?: boolean;\n}\n\n@Command({\n name: 'mcp',\n description: 'Manage the SolidX MCP server and Celery worker docker containers (start/stop)',\n})\nexport class McpCommand extends CommandRunner {\n private readonly logger = new Logger(McpCommand.name);\n\n constructor(\n private readonly solidRegistry: SolidRegistry\n ) {\n super();\n }\n\n async run(passedParams: string[], options?: McpCommandOptions): Promise<void> {\n const mode = (passedParams[0] || 'start').toLowerCase();\n\n if (mode === 'stop') {\n await this.stopContainers(options);\n } else if (mode === 'start') {\n await this.startContainers(options);\n } else {\n this.logger.error(\n `Unknown mode \"${mode}\". Supported modes are: start, stop.\\n` +\n 'Examples:\\n' +\n ' solid mcp start -p ~/mcp/servers/solidx_mcp_server\\n' +\n ' solid mcp stop -p ~/mcp/servers/solidx_mcp_server\\n'\n );\n }\n }\n\n // ---------------------------------------------------------------\n // START\n // ---------------------------------------------------------------\n private async startContainers(options?: McpCommandOptions): Promise<void> {\n // 1. Validate license key\n const apiKey = process.env.MCP_API_KEY;\n\n // Form the Database url to be used by the MCP server based on the consuming projects details. \n const defaultDatabaseUser = process.env.DEFAULT_DATABASE_USER;\n const defaultDatabasePwd = process.env.DEFAULT_DATABASE_PASSWORD\n ? encodeURIComponent(process.env.DEFAULT_DATABASE_PASSWORD)\n : '';\n const defaultDatabaseHost = process.env.DEFAULT_DATABASE_HOST === 'localhost' ? 'host.docker.internal' : process.env.DEFAULT_DATABASE_HOST;\n const defaultDatabaseName = process.env.DEFAULT_DATABASE_NAME;\n const databaseDialect = process.env.DEFAULT_DATABASE_TYPE?.toLowerCase() === 'mssql' ? 'mssql+pyodbc' : 'postgresql';\n // const databaseUrl = `${databaseDialect}://${defaultDatabaseUser}:${defaultDatabasePwd}@${defaultDatabaseHost}/${defaultDatabaseName}`;\n\n const defaultDatasource: ISolidDatabaseModule = this.solidRegistry.getDefaultSolidDatabaseModule()\n\n let databaseUrl: string;\n if (defaultDatasource.type() === DatasourceType.mssql) {\n const base = `mssql+pyodbc://${defaultDatabaseUser}:${defaultDatabasePwd}@${defaultDatabaseHost}/${defaultDatabaseName}`;\n const driver = encodeURIComponent('ODBC Driver 18 for SQL Server');\n databaseUrl = `${base}?driver=${driver}&TrustServerCertificate=yes`;\n }\n if (defaultDatasource.type() === DatasourceType.postgres) {\n databaseUrl = `postgresql://${defaultDatabaseUser}:${defaultDatabasePwd}@${defaultDatabaseHost}/${defaultDatabaseName}`;\n }\n\n if (!apiKey || apiKey.trim() === '') {\n this.logger.error(\n '❌ MCP_API_KEY environment variable is missing.\\n' +\n 'Set it before running:\\n' +\n ' export MCP_API_KEY=\"your_license_key\"\\n'\n );\n return;\n }\n\n this.logger.log('✔ MCP_API_KEY found.');\n\n // 2. Resolve paths\n const repoPath = options?.repoPath ? this.resolvePath(options.repoPath) : process.cwd();\n const consumingProjectPath = path.resolve(process.cwd(), '..');\n const composeFile = path.join(repoPath, 'docker-compose.yml');\n\n if (!fs.existsSync(composeFile)) {\n this.logger.error(`docker-compose.yml not found at ${composeFile}`);\n return;\n }\n\n const detached = options?.detached ?? false;\n\n this.logger.log(`Mode: start`);\n this.logger.log(`Using repo path: ${repoPath}`);\n this.logger.log(`Detached mode: ${detached}`);\n this.logger.log(`Consuming project root: ${consumingProjectPath}`);\n\n // 3. Build docker compose args\n const cmd = 'docker';\n const args = ['compose', '-f', composeFile, 'up'];\n\n if (detached) {\n args.push('-d');\n }\n\n // Service names as defined in docker-compose.yml\n args.push('mcp_redis', 'mcp_server', 'mcp_celery_worker');\n\n const env: NodeJS.ProcessEnv = {\n ...process.env,\n MCP_API_KEY: apiKey,\n HOST_SOLIDX_CONSUMING_PROJECT_ROOT: consumingProjectPath,\n DATABASE_URL: databaseUrl,\n };\n\n this.logger.log(`Running: ${cmd} ${args.join(' ')}`);\n // const envLog = Object.entries(env)\n // .map(([key, value]) => `${key}=${value ?? ''}`)\n // .join('\\n');\n // this.logger.log(`Using env overrides:\\n${envLog}`);\n\n await this.runDockerCommand(cmd, args, repoPath, env);\n\n this.logger.log(\n detached\n ? 'MCP containers started in detached mode.'\n : 'MCP containers started in foreground.'\n );\n }\n\n // ---------------------------------------------------------------\n // STOP\n // ---------------------------------------------------------------\n private async stopContainers(options?: McpCommandOptions): Promise<void> {\n const repoPath = options?.repoPath ? this.resolvePath(options.repoPath) : process.cwd();\n const composeFile = path.join(repoPath, 'docker-compose.yml');\n\n if (!fs.existsSync(composeFile)) {\n this.logger.error(`docker-compose.yml not found at ${composeFile}`);\n return;\n }\n\n this.logger.log(`Mode: stop`);\n this.logger.log(`Using repo path: ${repoPath}`);\n\n const cmd = 'docker';\n const args = ['compose', '-f', composeFile, 'down'];\n\n this.logger.log(`Running: ${cmd} ${args.join(' ')}`);\n\n await this.runDockerCommand(cmd, args, repoPath, process.env);\n\n this.logger.log('MCP containers stopped (docker compose down).');\n }\n\n // ---------------------------------------------------------------\n // Helpers\n // ---------------------------------------------------------------\n private resolvePath(inputPath: string): string {\n if (inputPath.startsWith('~')) {\n return path.join(process.env.HOME!, inputPath.slice(1));\n }\n return path.resolve(inputPath);\n }\n\n private runDockerCommand(\n cmd: string,\n args: string[],\n cwd: string,\n env: NodeJS.ProcessEnv,\n ): Promise<void> {\n return new Promise((resolve, reject) => {\n const child = spawn(cmd, args, {\n cwd,\n env,\n stdio: 'inherit',\n });\n\n child.on('error', (err) => {\n this.logger.error(`Docker error: ${err.message}`);\n reject(err);\n });\n\n child.on('close', (code) => {\n if (code === 0) resolve();\n else reject(new Error(`Docker exited with code ${code}`));\n });\n });\n }\n\n // Flags\n\n @Option({\n flags: '-d, --detached [boolean]',\n description: 'Run containers in detached mode (only for start, default: false)',\n required: false,\n })\n parseDetached(val: string): boolean {\n if (val === undefined) return false;\n return val === 'true' || val === '1';\n }\n\n @Option({\n flags: '-p, --repo-path [path]',\n description: 'Path to the SolidX MCP Server repo containing docker-compose.yml',\n required: false,\n })\n parseRepoPath(val: string): string {\n return val;\n }\n}\n"]}
1
+ {"version":3,"file":"mcp.command.js","sourceRoot":"","sources":["../../src/commands/mcp.command.ts"],"names":[],"mappings":"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","sourcesContent":["import { Command, CommandRunner, Option } from 'nest-commander';\nimport { Logger } from '@nestjs/common';\nimport { spawn } from 'child_process';\nimport * as path from 'path';\nimport * as fs from 'fs';\nimport { SolidRegistry } from 'src/helpers/solid-registry';\nimport { ISolidDatabaseModule } from 'src/interfaces';\nimport { DatasourceType } from 'src/dtos/create-model-metadata.dto';\n\ninterface McpCommandOptions {\n repoPath?: string;\n detached?: boolean;\n}\n\n@Command({\n name: 'mcp',\n description: 'Manage the SolidX MCP server and Celery worker docker containers (start/stop)',\n})\nexport class McpCommand extends CommandRunner {\n private readonly logger = new Logger(McpCommand.name);\n\n constructor(\n private readonly solidRegistry: SolidRegistry\n ) {\n super();\n }\n\n async run(passedParams: string[], options?: McpCommandOptions): Promise<void> {\n const mode = (passedParams[0] || 'start').toLowerCase();\n\n if (mode === 'stop') {\n await this.stopContainers(options);\n } else if (mode === 'start') {\n await this.startContainers(options);\n } else {\n this.logger.error(\n `Unknown mode \"${mode}\". Supported modes are: start, stop.\\n` +\n 'Examples:\\n' +\n ' solid mcp start -p ~/mcp/servers/solidx_mcp_server\\n' +\n ' solid mcp stop -p ~/mcp/servers/solidx_mcp_server\\n'\n );\n }\n }\n\n // ---------------------------------------------------------------\n // START\n // ---------------------------------------------------------------\n private async startContainers(options?: McpCommandOptions): Promise<void> {\n // 1. Validate license key\n const apiKey = process.env.MCP_API_KEY;\n\n // Form the Database url to be used by the MCP server based on the consuming projects details. \n const defaultDatabaseUser = process.env.DEFAULT_DATABASE_USER;\n const defaultDatabasePwd = process.env.DEFAULT_DATABASE_PASSWORD\n ? encodeURIComponent(process.env.DEFAULT_DATABASE_PASSWORD)\n : '';\n const defaultDatabaseHost = process.env.DEFAULT_DATABASE_HOST === 'localhost' ? 'host.docker.internal' : process.env.DEFAULT_DATABASE_HOST;\n const defaultDatabaseName = process.env.DEFAULT_DATABASE_NAME;\n const databaseDialect = process.env.DEFAULT_DATABASE_TYPE?.toLowerCase() === 'mssql' ? 'mssql+pyodbc' : 'postgresql';\n // const databaseUrl = `${databaseDialect}://${defaultDatabaseUser}:${defaultDatabasePwd}@${defaultDatabaseHost}/${defaultDatabaseName}`;\n\n const defaultDatasource: ISolidDatabaseModule = this.solidRegistry.getDefaultSolidDatabaseModule()\n\n let databaseUrl: string;\n if (defaultDatasource.type() === DatasourceType.mssql) {\n const base = `mssql+pyodbc://${defaultDatabaseUser}:${defaultDatabasePwd}@${defaultDatabaseHost}/${defaultDatabaseName}`;\n const driver = encodeURIComponent('ODBC Driver 18 for SQL Server');\n databaseUrl = `${base}?driver=${driver}&TrustServerCertificate=yes`;\n }\n if (defaultDatasource.type() === DatasourceType.postgres) {\n databaseUrl = `postgresql://${defaultDatabaseUser}:${defaultDatabasePwd}@${defaultDatabaseHost}/${defaultDatabaseName}`;\n }\n\n if (!apiKey || apiKey.trim() === '') {\n this.logger.error(\n '❌ MCP_API_KEY environment variable is missing.\\n' +\n 'Set it before running:\\n' +\n ' export MCP_API_KEY=\"your_license_key\"\\n'\n );\n return;\n }\n\n this.logger.log('✔ MCP_API_KEY found.');\n\n // 2. Resolve paths\n const repoPath = options?.repoPath ? this.resolvePath(options.repoPath) : process.cwd();\n const consumingProjectPath = path.resolve(process.cwd(), '..');\n const composeFile = path.join(repoPath, 'docker-compose.yml');\n\n if (!fs.existsSync(composeFile)) {\n this.logger.error(`docker-compose.yml not found at ${composeFile}`);\n return;\n }\n\n const detached = options?.detached ?? false;\n\n this.logger.log(`Mode: start`);\n this.logger.log(`Using repo path: ${repoPath}`);\n this.logger.log(`Detached mode: ${detached}`);\n this.logger.log(`Consuming project root: ${consumingProjectPath}`);\n\n // 3. Build docker compose args\n const cmd = 'docker';\n const args = ['compose', '-f', composeFile, 'up'];\n\n if (detached) {\n args.push('-d');\n }\n\n // Service names as defined in docker-compose.yml\n args.push('mcp_redis', 'mcp_server', 'mcp_celery_worker');\n\n const env: NodeJS.ProcessEnv = {\n ...process.env,\n MCP_API_KEY: apiKey,\n HOST_SOLIDX_CONSUMING_PROJECT_ROOT: consumingProjectPath,\n DATABASE_URL: databaseUrl,\n };\n\n this.logger.log(`Running: ${cmd} ${args.join(' ')}`);\n // const envLog = Object.entries(env)\n // .map(([key, value]) => `${key}=${value ?? ''}`)\n // .join('\\n');\n // this.logger.log(`Using env overrides:\\n${envLog}`);\n\n await this.runDockerCommand(cmd, args, repoPath, env);\n\n this.logger.log(\n detached\n ? 'MCP containers started in detached mode.'\n : 'MCP containers started in foreground.'\n );\n }\n\n // ---------------------------------------------------------------\n // STOP\n // ---------------------------------------------------------------\n private async stopContainers(options?: McpCommandOptions): Promise<void> {\n const repoPath = options?.repoPath ? this.resolvePath(options.repoPath) : process.cwd();\n const composeFile = path.join(repoPath, 'docker-compose.yml');\n\n if (!fs.existsSync(composeFile)) {\n this.logger.error(`docker-compose.yml not found at ${composeFile}`);\n return;\n }\n\n this.logger.log(`Mode: stop`);\n this.logger.log(`Using repo path: ${repoPath}`);\n\n const cmd = 'docker';\n const args = ['compose', '-f', composeFile, 'down'];\n\n this.logger.log(`Running: ${cmd} ${args.join(' ')}`);\n\n await this.runDockerCommand(cmd, args, repoPath, process.env);\n\n this.logger.log('MCP containers stopped (docker compose down).');\n }\n\n // ---------------------------------------------------------------\n // Helpers\n // ---------------------------------------------------------------\n private resolvePath(inputPath: string): string {\n if (inputPath.startsWith('~')) {\n return path.join(process.env.HOME!, inputPath.slice(1));\n }\n return path.resolve(inputPath);\n }\n\n private runDockerCommand(cmd: string, args: string[], cwd: string, env: NodeJS.ProcessEnv): Promise<void> {\n return new Promise((resolve, reject) => {\n const child = spawn(cmd, args, {\n cwd,\n env,\n stdio: 'inherit',\n });\n\n child.on('error', (err) => {\n this.logger.error(`Docker error: ${err.message}`);\n reject(err);\n });\n\n child.on('close', (code) => {\n if (code === 0) resolve();\n else reject(new Error(`Docker exited with code ${code}`));\n });\n });\n }\n\n // Flags\n @Option({ flags: '-d, --detached [boolean]', description: 'Run containers in detached mode (only for start, default: false)', required: false, })\n parseDetached(val: string): boolean {\n if (val === undefined) return false;\n return val === 'true' || val === '1';\n }\n\n @Option({ flags: '-p, --repo-path [path]', description: 'Path to the SolidX MCP Server repo containing docker-compose.yml', required: false, })\n parseRepoPath(val: string): string {\n return val;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"seed.command.d.ts","sourceRoot":"","sources":["../../src/commands/seed.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,UAAU,kBAAkB;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBACa,WAAY,SAAQ,aAAa;IAGhC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAF1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;gBAE1B,aAAa,EAAE,aAAa;IAInD,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IA2C7E,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAU9B,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAGjC"}
1
+ {"version":3,"file":"seed.command.d.ts","sourceRoot":"","sources":["../../src/commands/seed.command.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,aAAa,EAAU,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,UAAU,kBAAkB;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBACa,WAAY,SAAQ,aAAa;IAGhC,OAAO,CAAC,QAAQ,CAAC,aAAa;IAF1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;gBAE1B,aAAa,EAAE,aAAa;IAInD,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoC7E,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAK9B,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;CAGjC"}
@@ -56,22 +56,13 @@ let SeedCommand = SeedCommand_1 = class SeedCommand extends nest_commander_1.Com
56
56
  };
57
57
  exports.SeedCommand = SeedCommand;
58
58
  __decorate([
59
- (0, nest_commander_1.Option)({
60
- flags: '-c, --conf [configuration json]',
61
- description: 'A configuration json, pass a valid json string.',
62
- required: false
63
- }),
59
+ (0, nest_commander_1.Option)({ flags: '-c, --conf [configuration json]', description: 'A configuration json, pass a valid json string.', required: false }),
64
60
  __metadata("design:type", Function),
65
61
  __metadata("design:paramtypes", [String]),
66
62
  __metadata("design:returntype", String)
67
63
  ], SeedCommand.prototype, "parseConf", null);
68
64
  __decorate([
69
- (0, nest_commander_1.Option)({
70
- flags: '-s, --seeder [seeder name]',
71
- description: 'The seeder to run.',
72
- required: true,
73
- defaultValue: 'ModuleMetadataSeederService'
74
- }),
65
+ (0, nest_commander_1.Option)({ flags: '-s, --seeder [seeder name]', description: 'The seeder to run.', required: true, defaultValue: 'ModuleMetadataSeederService' }),
75
66
  __metadata("design:type", Function),
76
67
  __metadata("design:paramtypes", [String]),
77
68
  __metadata("design:returntype", String)
@@ -1 +1 @@
1
- {"version":3,"file":"seed.command.js","sourceRoot":"","sources":["../../src/commands/seed.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAwC;AACxC,mDAAgE;AAChE,8DAA2D;AAQpD,IAAM,WAAW,mBAAjB,MAAM,WAAY,SAAQ,8BAAa;IAG5C,YAA6B,aAA4B;QACvD,KAAK,EAAE,CAAC;QADmB,kBAAa,GAAb,aAAa,CAAe;QAFxC,WAAM,GAAG,IAAI,eAAM,CAAC,aAAW,CAAC,IAAI,CAAC,CAAC;IAIvD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,WAAqB,EAAE,OAA4B;QAG3D,IAAI,UAAU,GAAQ,IAAI,CAAC;QAG3B,IAAI,OAAO,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACtC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACzE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;gBACxE,OAAO;YACT,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;QACpF,CAAC;QAID,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa;aAC9B,UAAU,EAAE;aACZ,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC;aAClD,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;aAChC,GAAG,EAAE,CAAC;QACT,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,OAAO,CAAC,MAAM,qDAAqD,CAAC,CAAC;YACzG,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,yCAAyC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QACpF,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAYD,SAAS,CAAC,GAAW;QACnB,OAAO,GAAG,CAAC;IACb,CAAC;IAQD,WAAW,CAAC,GAAW;QACrB,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAA;AA/DY,kCAAW;AAkDtB;IAVC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,iCAAiC;QACxC,WAAW,EAAE,iDAAiD;QAC9D,QAAQ,EAAE,KAAK;KAChB,CAAC;;;;4CAQD;AAQD;IANC,IAAA,uBAAM,EAAC;QACN,KAAK,EAAE,4BAA4B;QACnC,WAAW,EAAE,oBAAoB;QACjC,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,6BAA6B;KAC5C,CAAC;;;;8CAGD;sBA9DU,WAAW;IADvB,IAAA,wBAAO,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,sCAAsC,EAAE,CAAC;qCAIjC,8BAAa;GAH9C,WAAW,CA+DvB","sourcesContent":["import { Logger } from '@nestjs/common';\nimport { Command, CommandRunner, Option } from 'nest-commander';\nimport { SolidRegistry } from 'src/helpers/solid-registry';\n\ninterface SeedCommandOptions {\n conf?: string;\n seeder?: string;\n}\n\n@Command({ name: 'seed', description: 'Install seed data for a given module' })\nexport class SeedCommand extends CommandRunner {\n private readonly logger = new Logger(SeedCommand.name);\n\n constructor(private readonly solidRegistry: SolidRegistry) {\n super();\n }\n\n async run(passedParam: string[], options?: SeedCommandOptions): Promise<void> {\n // TODO: check if options.conf is non empty and a valid json string only is -c flag is passed.\n // TODO: convert to json object JSON.parse\n let parsedConf: any = null;\n\n // Parse conf only if provided\n if (options?.conf !== undefined) {\n try {\n parsedConf = JSON.parse(options.conf);\n this.logger.log(`Parsed conf: ${JSON.stringify(parsedConf, null, 2)}`);\n } catch (err) {\n this.logger.error('Failed to parse --conf. Please provide valid JSON.');\n return;\n }\n } else {\n this.logger.log('No --conf flag provided. Running with default seeder behavior.');\n }\n\n\n\n const seeder = this.solidRegistry\n .getSeeders()\n .filter((seeder) => seeder.name === options.seeder)\n .map((seeder) => seeder.instance)\n .pop();\n if (!seeder) {\n this.logger.error(`Seeder service ${options.seeder} not found. Does your service have a seed() method?`);\n return;\n }\n this.logger.log(`Running the seed() method for seeder :${seeder.constructor.name}`);\n await seeder.seed(parsedConf);\n }\n\n @Option({\n flags: '-c, --conf [configuration json]',\n description: 'A configuration json, pass a valid json string.',\n required: false\n })\n /**\n * TODO\n * This parameter will be useful, to support seeders with the same name in different modules\n * Currently the seeder service won't support seeder with same classname within a module\n **/\n parseConf(val: string): string {\n return val;\n }\n\n @Option({\n flags: '-s, --seeder [seeder name]',\n description: 'The seeder to run.',\n required: true,\n defaultValue: 'ModuleMetadataSeederService'\n })\n parseString(val: string): string {\n return val;\n }\n}\n"]}
1
+ {"version":3,"file":"seed.command.js","sourceRoot":"","sources":["../../src/commands/seed.command.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAwC;AACxC,mDAAgE;AAChE,8DAA2D;AAQpD,IAAM,WAAW,mBAAjB,MAAM,WAAY,SAAQ,8BAAa;IAG5C,YAA6B,aAA4B;QACvD,KAAK,EAAE,CAAC;QADmB,kBAAa,GAAb,aAAa,CAAe;QAFxC,WAAM,GAAG,IAAI,eAAM,CAAC,aAAW,CAAC,IAAI,CAAC,CAAC;IAIvD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,WAAqB,EAAE,OAA4B;QAG3D,IAAI,UAAU,GAAQ,IAAI,CAAC;QAG3B,IAAI,OAAO,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACtC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;YACzE,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;gBACxE,OAAO;YACT,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa;aAC9B,UAAU,EAAE;aACZ,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC;aAClD,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC;aAChC,GAAG,EAAE,CAAC;QACT,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,OAAO,CAAC,MAAM,qDAAqD,CAAC,CAAC;YACzG,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,yCAAyC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QACpF,MAAM,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAOD,SAAS,CAAC,GAAW;QACnB,OAAO,GAAG,CAAC;IACb,CAAC;IAGD,WAAW,CAAC,GAAW;QACrB,OAAO,GAAG,CAAC;IACb,CAAC;CACF,CAAA;AAnDY,kCAAW;AA2CtB;IADC,IAAA,uBAAM,EAAC,EAAE,KAAK,EAAE,iCAAiC,EAAE,WAAW,EAAE,iDAAiD,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;;;;4CAGrI;AAGD;IADC,IAAA,uBAAM,EAAC,EAAE,KAAK,EAAE,4BAA4B,EAAE,WAAW,EAAE,oBAAoB,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,6BAA6B,EAAE,CAAC;;;;8CAG/I;sBAlDU,WAAW;IADvB,IAAA,wBAAO,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,sCAAsC,EAAE,CAAC;qCAIjC,8BAAa;GAH9C,WAAW,CAmDvB","sourcesContent":["import { Logger } from '@nestjs/common';\nimport { Command, CommandRunner, Option } from 'nest-commander';\nimport { SolidRegistry } from 'src/helpers/solid-registry';\n\ninterface SeedCommandOptions {\n conf?: string;\n seeder?: string;\n}\n\n@Command({ name: 'seed', description: 'Install seed data for a given module' })\nexport class SeedCommand extends CommandRunner {\n private readonly logger = new Logger(SeedCommand.name);\n\n constructor(private readonly solidRegistry: SolidRegistry) {\n super();\n }\n\n async run(passedParam: string[], options?: SeedCommandOptions): Promise<void> {\n // check if options.conf is non empty and a valid json string only is -c flag is passed.\n // convert to json object JSON.parse\n let parsedConf: any = null;\n\n // Parse conf only if provided\n if (options?.conf !== undefined) {\n try {\n parsedConf = JSON.parse(options.conf);\n this.logger.log(`Parsed conf: ${JSON.stringify(parsedConf, null, 2)}`);\n } catch (err) {\n this.logger.error('Failed to parse --conf. Please provide valid JSON.');\n return;\n }\n } else {\n this.logger.log('No --conf flag provided. Running with default seeder behavior.');\n }\n\n const seeder = this.solidRegistry\n .getSeeders()\n .filter((seeder) => seeder.name === options.seeder)\n .map((seeder) => seeder.instance)\n .pop();\n if (!seeder) {\n this.logger.error(`Seeder service ${options.seeder} not found. Does your service have a seed() method?`);\n return;\n }\n this.logger.log(`Running the seed() method for seeder :${seeder.constructor.name}`);\n await seeder.seed(parsedConf);\n }\n\n /**\n * This parameter will be useful, to support seeders with the same name in different modules\n * Currently the seeder service won't support seeder with same classname within a module\n **/\n @Option({ flags: '-c, --conf [configuration json]', description: 'A configuration json, pass a valid json string.', required: false })\n parseConf(val: string): string {\n return val;\n }\n\n @Option({ flags: '-s, --seeder [seeder name]', description: 'The seeder to run.', required: true, defaultValue: 'ModuleMetadataSeederService' })\n parseString(val: string): string {\n return val;\n }\n}\n"]}
@@ -1,9 +1,11 @@
1
1
  import { CreateEmailTemplateDto } from '../dtos/create-email-template.dto';
2
2
  import { UpdateEmailTemplateDto } from '../dtos/update-email-template.dto';
3
3
  import { EmailTemplateService } from '../services/email-template.service';
4
+ import { SettingService } from '../services/setting.service';
4
5
  export declare class EmailTemplateController {
5
6
  private readonly service;
6
- constructor(service: EmailTemplateService);
7
+ private readonly settingService;
8
+ constructor(service: EmailTemplateService, settingService: SettingService);
7
9
  create(createDto: CreateEmailTemplateDto, files: Array<Express.Multer.File>): Promise<import("..").EmailTemplate>;
8
10
  insertMany(createDtos: CreateEmailTemplateDto[], filesArray?: Express.Multer.File[][]): Promise<import("..").EmailTemplate[]>;
9
11
  update(id: number, updateDto: UpdateEmailTemplateDto, files: Array<Express.Multer.File>): Promise<import("..").EmailTemplate>;
@@ -1 +1 @@
1
- {"version":3,"file":"email-template.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/email-template.controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAM1E,qBAEa,uBAAuB;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,oBAAoB;IAK1D,MAAM,CAAS,SAAS,EAAE,sBAAsB,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAOpG,UAAU,CAAS,UAAU,EAAE,sBAAsB,EAAE,EAAmB,UAAU,GAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAO;IAOlH,MAAM,CAAc,EAAE,EAAE,MAAM,EAAU,SAAS,EAAE,sBAAsB,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAgBvH,QAAQ,CAAU,KAAK,EAAE,GAAG;;;;;;;;;;;;;;;;;;;;IAM5B,OAAO,CAAc,EAAE,EAAE,MAAM,EAAW,KAAK,EAAE,GAAG;IAMpD,UAAU,CAAS,GAAG,EAAE,MAAM,EAAE;IAMhC,MAAM,CAAc,EAAE,EAAE,MAAM;IAOpC,uBAAuB,CAAwB,YAAY,EAAE,MAAM;CAuFpE"}
1
+ {"version":3,"file":"email-template.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/email-template.controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAO7D,qBAEa,uBAAuB;IAEhC,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,cAAc;gBADd,OAAO,EAAE,oBAAoB,EAC7B,cAAc,EAAE,cAAc;IAMjD,MAAM,CAAS,SAAS,EAAE,sBAAsB,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAOpG,UAAU,CAAS,UAAU,EAAE,sBAAsB,EAAE,EAAmB,UAAU,GAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAO;IAOlH,MAAM,CAAc,EAAE,EAAE,MAAM,EAAU,SAAS,EAAE,sBAAsB,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAgBvH,QAAQ,CAAU,KAAK,EAAE,GAAG;;;;;;;;;;;;;;;;;;;;IAM5B,OAAO,CAAc,EAAE,EAAE,MAAM,EAAW,KAAK,EAAE,GAAG;IAMpD,UAAU,CAAS,GAAG,EAAE,MAAM,EAAE;IAMhC,MAAM,CAAc,EAAE,EAAE,MAAM;IAOpC,uBAAuB,CAAwB,YAAY,EAAE,MAAM;CAuFpE"}
@@ -20,10 +20,12 @@ const swagger_1 = require("@nestjs/swagger");
20
20
  const create_email_template_dto_1 = require("../dtos/create-email-template.dto");
21
21
  const update_email_template_dto_1 = require("../dtos/update-email-template.dto");
22
22
  const email_template_service_1 = require("../services/email-template.service");
23
+ const setting_service_1 = require("../services/setting.service");
23
24
  const Mailgen = require("mailgen");
24
25
  let EmailTemplateController = class EmailTemplateController {
25
- constructor(service) {
26
+ constructor(service, settingService) {
26
27
  this.service = service;
28
+ this.settingService = settingService;
27
29
  }
28
30
  create(createDto, files) {
29
31
  return this.service.create(createDto, files);
@@ -47,8 +49,8 @@ let EmailTemplateController = class EmailTemplateController {
47
49
  return this.service.delete(id);
48
50
  }
49
51
  generateMailgenTemplate(templateType) {
50
- const appName = process.env.SOLID_APP_NAME;
51
- const appUrl = process.env.SOLID_APP_WEBSITE_URL;
52
+ const appName = this.settingService.getConfigValue('appTitle');
53
+ const appUrl = this.settingService.getConfigValue('solidAppWebsiteUrl');
52
54
  var mailGenerator = new Mailgen({
53
55
  theme: 'default',
54
56
  product: {
@@ -207,6 +209,7 @@ __decorate([
207
209
  exports.EmailTemplateController = EmailTemplateController = __decorate([
208
210
  (0, common_1.Controller)('email-template'),
209
211
  (0, swagger_1.ApiTags)("Solid Core"),
210
- __metadata("design:paramtypes", [email_template_service_1.EmailTemplateService])
212
+ __metadata("design:paramtypes", [email_template_service_1.EmailTemplateService,
213
+ setting_service_1.SettingService])
211
214
  ], EmailTemplateController);
212
215
  //# sourceMappingURL=email-template.controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"email-template.controller.js","sourceRoot":"","sources":["../../src/controllers/email-template.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAgI;AAChI,+DAA+D;AAC/D,6CAAmE;AACnE,iFAA2E;AAC3E,iFAA2E;AAC3E,+EAA0E;AAG1E,mCAAoC;AAK7B,IAAM,uBAAuB,GAA7B,MAAM,uBAAuB;IAClC,YAA6B,OAA6B;QAA7B,YAAO,GAAP,OAAO,CAAsB;IAAI,CAAC;IAK/D,MAAM,CAAS,SAAiC,EAAmB,KAAiC;QAClG,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IAKD,UAAU,CAAS,UAAoC,EAAmB,aAAsC,EAAE;QAChH,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACzD,CAAC;IAKD,MAAM,CAAc,EAAU,EAAU,SAAiC,EAAmB,KAAiC;QAC3H,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAcK,AAAN,KAAK,CAAC,QAAQ,CAAU,KAAU;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAIK,AAAN,KAAK,CAAC,OAAO,CAAc,EAAU,EAAW,KAAU;QACxD,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAIK,AAAN,KAAK,CAAC,UAAU,CAAS,GAAa;QACpC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAIK,AAAN,KAAK,CAAC,MAAM,CAAc,EAAU;QAClC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAKD,uBAAuB,CAAwB,YAAoB;QACjE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QAC3C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;QAGjD,IAAI,aAAa,GAAG,IAAI,OAAO,CAAC;YAC9B,KAAK,EAAE,SAAS;YAChB,OAAO,EAAE;gBAEP,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,MAAM;aAGb;SACF,CAAC,CAAC;QAEH,IAAI,KAAK,GAAG,IAAI,CAAC;QACjB,IAAI,YAAY,KAAK,iBAAiB,EAAE,CAAC;YACvC,KAAK,GAAG;gBACN,IAAI,EAAE;oBACJ,IAAI,EAAE,gBAAgB;oBACtB,KAAK,EAAE,cAAc,OAAO,6CAA6C;oBACzE,MAAM,EAAE;wBACN,YAAY,EAAE,uBAAuB,OAAO,iEAAiE;wBAC7G,MAAM,EAAE;4BACN,KAAK,EAAE,SAAS;4BAChB,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,IAAI;yBACX;qBACF;oBACD,KAAK,EAAE,6EAA6E;iBACrF;aACF,CAAC;QACJ,CAAC;QACD,IAAI,YAAY,KAAK,cAAc,EAAE,CAAC;YACpC,KAAK,GAAG;gBACN,IAAI,EAAE;oBACJ,IAAI,EAAE,gBAAgB;oBACtB,KAAK,EAAE,cAAc,OAAO,GAAG;oBAC/B,MAAM,EAAE;wBACN,YAAY,EAAE,YAAY,OAAO,sCAAsC;wBACvE,MAAM,EAAE;4BACN,KAAK,EAAE,SAAS;4BAChB,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,IAAI;yBACX;qBACF;oBACD,KAAK,EAAE,6EAA6E;iBACrF;aACF,CAAC;QACJ,CAAC;QACD,IAAI,YAAY,KAAK,iBAAiB,EAAE,CAAC;YACvC,KAAK,GAAG;gBACN,IAAI,EAAE;oBACJ,IAAI,EAAE,gBAAgB;oBACtB,KAAK,EAAE,cAAc,OAAO,GAAG;oBAC/B,MAAM,EAAE;wBACN,YAAY,EAAE,uGAAuG;wBACrH,MAAM,EAAE;4BACN,KAAK,EAAE,SAAS;4BAChB,IAAI,EAAE,gBAAgB;4BACtB,IAAI,EAAE,qBAAqB;yBAC5B;qBACF;oBACD,KAAK,EAAE,6EAA6E;iBACrF;aACF,CAAC;QACJ,CAAC;QAGD,IAAI,SAAS,GAAG,aAAa,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAc9C,OAAO,SAAS,CAAC;IACnB,CAAC;CAEF,CAAA;AApJY,0DAAuB;AAMlC;IAHC,IAAA,uBAAa,EAAC,KAAK,CAAC;IACpB,IAAA,aAAI,GAAE;IACN,IAAA,wBAAe,EAAC,IAAA,sCAAmB,GAAE,CAAC;;IAC/B,WAAA,IAAA,aAAI,GAAE,CAAA;IAAqC,WAAA,IAAA,sBAAa,GAAE,CAAA;;qCAAxC,kDAAsB,EAA0B,KAAK;;qDAE9E;AAKD;IAHC,IAAA,uBAAa,EAAC,KAAK,CAAC;IACpB,IAAA,aAAI,EAAC,OAAO,CAAC;IACb,IAAA,wBAAe,EAAC,IAAA,sCAAmB,GAAE,CAAC;;IAC3B,WAAA,IAAA,aAAI,GAAE,CAAA;IAAwC,WAAA,IAAA,sBAAa,GAAE,CAAA;;;;yDAExE;AAKD;IAHC,IAAA,uBAAa,EAAC,KAAK,CAAC;IACpB,IAAA,YAAG,EAAC,KAAK,CAAC;IACV,IAAA,wBAAe,EAAC,IAAA,sCAAmB,GAAE,CAAC;;IAC/B,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;IAAc,WAAA,IAAA,aAAI,GAAE,CAAA;IAAqC,WAAA,IAAA,sBAAa,GAAE,CAAA;;6CAAxC,kDAAsB,EAA0B,KAAK;;qDAEvG;AAcK;IAZL,IAAA,uBAAa,EAAC,KAAK,CAAC;IACpB,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACrE,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;IACzE,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC1D,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC3D,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC1D,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACxD,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC3D,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC5D,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACjE,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC3D,IAAA,YAAG,GAAE;;IACU,WAAA,IAAA,cAAK,GAAE,CAAA;;;;uDAEtB;AAIK;IAFL,IAAA,uBAAa,EAAC,KAAK,CAAC;IACpB,IAAA,YAAG,EAAC,KAAK,CAAC;;IACI,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;IAAc,WAAA,IAAA,cAAK,GAAE,CAAA;;;;sDAE9C;AAIK;IAFL,IAAA,uBAAa,EAAC,KAAK,CAAC;IACpB,IAAA,eAAM,EAAC,OAAO,CAAC;;IACE,WAAA,IAAA,aAAI,GAAE,CAAA;;;;yDAEvB;AAIK;IAFL,IAAA,uBAAa,EAAC,KAAK,CAAC;IACpB,IAAA,eAAM,EAAC,KAAK,CAAC;;IACA,WAAA,IAAA,cAAK,EAAC,IAAI,CAAC,CAAA;;;;qDAExB;AAKD;IAHC,IAAA,uBAAa,EAAC,KAAK,CAAC;IACpB,IAAA,YAAG,EAAC,gCAAgC,CAAC;IACrC,IAAA,eAAM,EAAC,cAAc,EAAE,WAAW,CAAC;;IACX,WAAA,IAAA,cAAK,EAAC,cAAc,CAAC,CAAA;;;;sEAqF7C;kCAlJU,uBAAuB;IAFnC,IAAA,mBAAU,EAAC,gBAAgB,CAAC;IAC5B,IAAA,iBAAO,EAAC,YAAY,CAAC;qCAEkB,6CAAoB;GAD/C,uBAAuB,CAoJnC","sourcesContent":["import { Body, Controller, Delete, Get, Header, Param, Post, Put, Query, UploadedFiles, UseInterceptors } from '@nestjs/common';\nimport { AnyFilesInterceptor } from '@nestjs/platform-express';\nimport { ApiBearerAuth, ApiQuery, ApiTags } from '@nestjs/swagger';\nimport { CreateEmailTemplateDto } from '../dtos/create-email-template.dto';\nimport { UpdateEmailTemplateDto } from '../dtos/update-email-template.dto';\nimport { EmailTemplateService } from '../services/email-template.service';\n\n// TODO: esInterop not working somehow, defaulted to using the require syntax to import Mailgen. Figure a better way to do this. \nimport Mailgen = require('mailgen');\n\n\n@Controller('email-template')\n@ApiTags(\"Solid Core\")\nexport class EmailTemplateController {\n constructor(private readonly service: EmailTemplateService) { }\n\n @ApiBearerAuth(\"jwt\")\n @Post()\n @UseInterceptors(AnyFilesInterceptor())\n create(@Body() createDto: CreateEmailTemplateDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.create(createDto, files);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('/bulk')\n @UseInterceptors(AnyFilesInterceptor())\n insertMany(@Body() createDtos: CreateEmailTemplateDto[], @UploadedFiles() filesArray: Express.Multer.File[][] = []) {\n return this.service.insertMany(createDtos, filesArray);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Put(':id')\n @UseInterceptors(AnyFilesInterceptor())\n update(@Param('id') id: number, @Body() updateDto: UpdateEmailTemplateDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.update(id, updateDto, files);\n }\n\n @ApiBearerAuth(\"jwt\")\n @ApiQuery({ name: 'showSoftDeleted', required: false, type: Boolean })\n @ApiQuery({ name: 'showOnlySoftDeleted', required: false, type: Boolean })\n @ApiQuery({ name: 'limit', required: false, type: Number })\n @ApiQuery({ name: 'offset', required: false, type: Number })\n @ApiQuery({ name: 'fields', required: false, type: Array })\n @ApiQuery({ name: 'sort', required: false, type: Array })\n @ApiQuery({ name: 'groupBy', required: false, type: Array })\n @ApiQuery({ name: 'populate', required: false, type: Array })\n @ApiQuery({ name: 'populateMedia', required: false, type: Array })\n @ApiQuery({ name: 'filters', required: false, type: Array })\n @Get()\n async findMany(@Query() query: any) {\n return this.service.find(query);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Get(':id')\n async findOne(@Param('id') id: string, @Query() query: any) {\n return this.service.findOne(+id, query);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Delete('/bulk')\n async deleteMany(@Body() ids: number[]) {\n return this.service.deleteMany(ids);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Delete(':id')\n async delete(@Param('id') id: number) {\n return this.service.delete(id);\n }\n \n @ApiBearerAuth(\"jwt\")\n @Get('mailgen-template/:templateType')\n @Header('content-type', 'text/html')\n generateMailgenTemplate(@Param('templateType') templateType: string) {\n const appName = process.env.SOLID_APP_NAME;\n const appUrl = process.env.SOLID_APP_WEBSITE_URL;\n\n // Configure mailgen by setting a theme and your product info\n var mailGenerator = new Mailgen({\n theme: 'default',\n product: {\n // Appears in header & footer of e-mails\n name: appName,\n link: appUrl\n // Optional product logo\n // logo: 'https://mailgen.js/img/logo.png'\n }\n });\n\n let email = null;\n if (templateType === 'otp-on-register') {\n email = {\n body: {\n name: 'John Appleseed',\n intro: `Welcome to ${appName}! We\\'re very excited to have you on board.`,\n action: {\n instructions: `To get started with ${appName}, please verify your account using the below verification code.`,\n button: {\n color: '#22BC66', // Optional action button color\n text: `321455`,\n link: null\n }\n },\n outro: 'Need help, or have questions? Just reply to this email, we\\'d love to help.'\n }\n };\n }\n if (templateType === 'otp-on-login') {\n email = {\n body: {\n name: 'John Appleseed',\n intro: `Welcome to ${appName}!`,\n action: {\n instructions: `Login to ${appName}, using the below verification code.`,\n button: {\n color: '#22BC66', // Optional action button color\n text: `321455`,\n link: null\n }\n },\n outro: 'Need help, or have questions? Just reply to this email, we\\'d love to help.'\n }\n };\n }\n if (templateType === 'forgot-password') {\n email = {\n body: {\n name: 'John Appleseed',\n intro: `Welcome to ${appName}!`,\n action: {\n instructions: `Click on the below link to reset your password. Please note that this link will expire in 10 minutes.`,\n button: {\n color: '#22BC66', // Optional action button color\n text: `Reset Password`,\n link: `https://example.com`\n }\n },\n outro: 'Need help, or have questions? Just reply to this email, we\\'d love to help.'\n }\n };\n }\n\n // Generate an HTML email with the provided contents\n var emailBody = mailGenerator.generate(email);\n\n // Generate the plaintext version of the e-mail (for clients that do not support HTML)\n // var emailText = mailGenerator.generatePlaintext(email);\n\n // Optionally, preview the generated HTML e-mail by writing it to a local file\n // require('fs').writeFileSync('preview.html', emailBody, 'utf8');\n\n // `emailBody` now contains the HTML body,\n // and `emailText` contains the textual version.\n //\n // It's up to you to send the e-mail.\n // Check out nodemailer to accomplish this:\n // https://nodemailer.com/\n return emailBody;\n }\n\n}\n"]}
1
+ {"version":3,"file":"email-template.controller.js","sourceRoot":"","sources":["../../src/controllers/email-template.controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Body, Controller, Delete, Get, Header, Param, Post, Put, Query, UploadedFiles, UseInterceptors } from '@nestjs/common';\nimport { AnyFilesInterceptor } from '@nestjs/platform-express';\nimport { ApiBearerAuth, ApiQuery, ApiTags } from '@nestjs/swagger';\nimport { CreateEmailTemplateDto } from '../dtos/create-email-template.dto';\nimport { UpdateEmailTemplateDto } from '../dtos/update-email-template.dto';\nimport { EmailTemplateService } from '../services/email-template.service';\nimport { SettingService } from '../services/setting.service';\nimport type { SolidCoreSetting } from \"src/services/settings/default-settings-provider.service\";\n\n// TODO: esInterop not working somehow, defaulted to using the require syntax to import Mailgen. Figure a better way to do this.\nimport Mailgen = require('mailgen');\n\n\n@Controller('email-template')\n@ApiTags(\"Solid Core\")\nexport class EmailTemplateController {\n constructor(\n private readonly service: EmailTemplateService,\n private readonly settingService: SettingService,\n ) { }\n\n @ApiBearerAuth(\"jwt\")\n @Post()\n @UseInterceptors(AnyFilesInterceptor())\n create(@Body() createDto: CreateEmailTemplateDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.create(createDto, files);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('/bulk')\n @UseInterceptors(AnyFilesInterceptor())\n insertMany(@Body() createDtos: CreateEmailTemplateDto[], @UploadedFiles() filesArray: Express.Multer.File[][] = []) {\n return this.service.insertMany(createDtos, filesArray);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Put(':id')\n @UseInterceptors(AnyFilesInterceptor())\n update(@Param('id') id: number, @Body() updateDto: UpdateEmailTemplateDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.update(id, updateDto, files);\n }\n\n @ApiBearerAuth(\"jwt\")\n @ApiQuery({ name: 'showSoftDeleted', required: false, type: Boolean })\n @ApiQuery({ name: 'showOnlySoftDeleted', required: false, type: Boolean })\n @ApiQuery({ name: 'limit', required: false, type: Number })\n @ApiQuery({ name: 'offset', required: false, type: Number })\n @ApiQuery({ name: 'fields', required: false, type: Array })\n @ApiQuery({ name: 'sort', required: false, type: Array })\n @ApiQuery({ name: 'groupBy', required: false, type: Array })\n @ApiQuery({ name: 'populate', required: false, type: Array })\n @ApiQuery({ name: 'populateMedia', required: false, type: Array })\n @ApiQuery({ name: 'filters', required: false, type: Array })\n @Get()\n async findMany(@Query() query: any) {\n return this.service.find(query);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Get(':id')\n async findOne(@Param('id') id: string, @Query() query: any) {\n return this.service.findOne(+id, query);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Delete('/bulk')\n async deleteMany(@Body() ids: number[]) {\n return this.service.deleteMany(ids);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Delete(':id')\n async delete(@Param('id') id: number) {\n return this.service.delete(id);\n }\n \n @ApiBearerAuth(\"jwt\")\n @Get('mailgen-template/:templateType')\n @Header('content-type', 'text/html')\n generateMailgenTemplate(@Param('templateType') templateType: string) {\n const appName = this.settingService.getConfigValue<SolidCoreSetting>('appTitle');\n const appUrl = this.settingService.getConfigValue<SolidCoreSetting>('solidAppWebsiteUrl');\n\n // Configure mailgen by setting a theme and your product info\n var mailGenerator = new Mailgen({\n theme: 'default',\n product: {\n // Appears in header & footer of e-mails\n name: appName,\n link: appUrl\n // Optional product logo\n // logo: 'https://mailgen.js/img/logo.png'\n }\n });\n\n let email = null;\n if (templateType === 'otp-on-register') {\n email = {\n body: {\n name: 'John Appleseed',\n intro: `Welcome to ${appName}! We\\'re very excited to have you on board.`,\n action: {\n instructions: `To get started with ${appName}, please verify your account using the below verification code.`,\n button: {\n color: '#22BC66', // Optional action button color\n text: `321455`,\n link: null\n }\n },\n outro: 'Need help, or have questions? Just reply to this email, we\\'d love to help.'\n }\n };\n }\n if (templateType === 'otp-on-login') {\n email = {\n body: {\n name: 'John Appleseed',\n intro: `Welcome to ${appName}!`,\n action: {\n instructions: `Login to ${appName}, using the below verification code.`,\n button: {\n color: '#22BC66', // Optional action button color\n text: `321455`,\n link: null\n }\n },\n outro: 'Need help, or have questions? Just reply to this email, we\\'d love to help.'\n }\n };\n }\n if (templateType === 'forgot-password') {\n email = {\n body: {\n name: 'John Appleseed',\n intro: `Welcome to ${appName}!`,\n action: {\n instructions: `Click on the below link to reset your password. Please note that this link will expire in 10 minutes.`,\n button: {\n color: '#22BC66', // Optional action button color\n text: `Reset Password`,\n link: `https://example.com`\n }\n },\n outro: 'Need help, or have questions? Just reply to this email, we\\'d love to help.'\n }\n };\n }\n\n // Generate an HTML email with the provided contents\n var emailBody = mailGenerator.generate(email);\n\n // Generate the plaintext version of the e-mail (for clients that do not support HTML)\n // var emailText = mailGenerator.generatePlaintext(email);\n\n // Optionally, preview the generated HTML e-mail by writing it to a local file\n // require('fs').writeFileSync('preview.html', emailBody, 'utf8');\n\n // `emailBody` now contains the HTML body,\n // and `emailText` contains the textual version.\n //\n // It's up to you to send the e-mail.\n // Check out nodemailer to accomplish this:\n // https://nodemailer.com/\n return emailBody;\n }\n\n}\n"]}
@@ -1,16 +1,15 @@
1
- import { ConfigType } from '@nestjs/config';
2
1
  import { Request, Response } from 'express';
3
- import { iamConfig } from '../config/iam.config';
4
2
  import { AuthenticationService } from '../services/authentication.service';
5
3
  import { UserService } from '../services/user.service';
4
+ import { SettingService } from 'src/services/setting.service';
6
5
  export declare class GoogleAuthenticationController {
7
- private iamConfiguration;
8
6
  private readonly userService;
7
+ private readonly settingService;
9
8
  private readonly authService;
10
- constructor(iamConfiguration: ConfigType<typeof iamConfig>, userService: UserService, authService: AuthenticationService);
9
+ constructor(userService: UserService, settingService: SettingService, authService: AuthenticationService);
11
10
  connect(): Promise<void>;
12
11
  private validateConfiguration;
13
- googleAuthCallback(req: Request, res: Response): void;
12
+ googleAuthCallback(req: Request, res: Response): Promise<void>;
14
13
  dummyGoogleAuthRedirect(accessCode: any): Promise<import("..").User>;
15
14
  googleAuth(accessCode: any): Promise<{
16
15
  accessToken: string;
@@ -1 +1 @@
1
- {"version":3,"file":"google-authentication.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/google-authentication.controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAKjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAIvD,qBAKa,8BAA8B;IAEZ,OAAO,CAAC,gBAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAFG,gBAAgB,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,EAC5D,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,qBAAqB;IAMjD,OAAO;IAIb,OAAO,CAAC,qBAAqB;IAS7B,kBAAkB,CAAQ,GAAG,EAAE,OAAO,EAAS,GAAG,EAAE,QAAQ;IA0BtD,uBAAuB,CAAsB,UAAU,KAAA;IAkBvD,UAAU,CAAsB,UAAU,KAAA;;;;;;;;;;;CAInD"}
1
+ {"version":3,"file":"google-authentication.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/google-authentication.controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAM5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAK9D,qBAKa,8BAA8B;IAEnC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAFX,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,cAAc,EAC9B,WAAW,EAAE,qBAAqB;IAMjD,OAAO;YAIC,qBAAqB;IAe7B,kBAAkB,CAAQ,GAAG,EAAE,OAAO,EAAS,GAAG,EAAE,QAAQ;IA0B5D,uBAAuB,CAAsB,UAAU,KAAA;IAkBvD,UAAU,CAAsB,UAAU,KAAA;;;;;;;;;;;CAInD"}
@@ -17,40 +17,47 @@ const openapi = require("@nestjs/swagger");
17
17
  const common_1 = require("@nestjs/common");
18
18
  const swagger_1 = require("@nestjs/swagger");
19
19
  const google_oauth_helper_1 = require("../helpers/google-oauth.helper");
20
- const iam_config_1 = require("../config/iam.config");
21
20
  const auth_decorator_1 = require("../decorators/auth.decorator");
22
21
  const public_decorator_1 = require("../decorators/public.decorator");
23
22
  const auth_type_enum_1 = require("../enums/auth-type.enum");
24
23
  const google_oauth_strategy_1 = require("../passport-strategies/google-oauth.strategy");
25
24
  const authentication_service_1 = require("../services/authentication.service");
26
25
  const user_service_1 = require("../services/user.service");
26
+ const setting_service_1 = require("../services/setting.service");
27
27
  let GoogleAuthenticationController = class GoogleAuthenticationController {
28
- constructor(iamConfiguration, userService, authService) {
29
- this.iamConfiguration = iamConfiguration;
28
+ constructor(userService, settingService, authService) {
30
29
  this.userService = userService;
30
+ this.settingService = settingService;
31
31
  this.authService = authService;
32
32
  }
33
33
  async connect() {
34
- this.validateConfiguration();
34
+ await this.validateConfiguration();
35
35
  }
36
- validateConfiguration() {
37
- if (!(0, google_oauth_helper_1.isGoogleOAuthConfigured)(this.iamConfiguration)) {
36
+ async validateConfiguration() {
37
+ const googleOauth = {
38
+ clientID: this.settingService.getConfigValue("clientID"),
39
+ clientSecret: this.settingService.getConfigValue("clientSecret"),
40
+ callbackURL: this.settingService.getConfigValue("callbackURL"),
41
+ redirectURL: this.settingService.getConfigValue("redirectURL"),
42
+ };
43
+ if (!(0, google_oauth_helper_1.isGoogleOAuthConfigured)(googleOauth)) {
38
44
  throw new common_1.InternalServerErrorException('Google OAuth is not configured');
39
45
  }
40
46
  }
41
- googleAuthCallback(req, res) {
42
- this.validateConfiguration();
47
+ async googleAuthCallback(req, res) {
48
+ await this.validateConfiguration();
43
49
  const user = req.user;
44
- return res.redirect(`${this.iamConfiguration.googleOauth.redirectURL}?accessCode=${user['accessCode']}`);
50
+ const googleOauthRedirectURL = await this.settingService.getConfigValue("redirectURL");
51
+ return res.redirect(`${googleOauthRedirectURL}?accessCode=${user['accessCode']}`);
45
52
  }
46
53
  async dummyGoogleAuthRedirect(accessCode) {
47
- this.validateConfiguration();
54
+ await this.validateConfiguration();
48
55
  const user = await this.userService.findOneByAccessCode(accessCode);
49
56
  delete user['password'];
50
57
  return user;
51
58
  }
52
59
  async googleAuth(accessCode) {
53
- this.validateConfiguration();
60
+ await this.validateConfiguration();
54
61
  return this.authService.signInUsingGoogle(accessCode);
55
62
  }
56
63
  };
@@ -73,7 +80,7 @@ __decorate([
73
80
  __param(1, (0, common_1.Res)()),
74
81
  __metadata("design:type", Function),
75
82
  __metadata("design:paramtypes", [Object, Object]),
76
- __metadata("design:returntype", void 0)
83
+ __metadata("design:returntype", Promise)
77
84
  ], GoogleAuthenticationController.prototype, "googleAuthCallback", null);
78
85
  __decorate([
79
86
  (0, public_decorator_1.Public)(),
@@ -98,8 +105,8 @@ exports.GoogleAuthenticationController = GoogleAuthenticationController = __deco
98
105
  (0, auth_decorator_1.Auth)(auth_type_enum_1.AuthType.None),
99
106
  (0, common_1.Controller)('iam/google'),
100
107
  (0, swagger_1.ApiTags)("Iam"),
101
- __param(0, (0, common_1.Inject)(iam_config_1.iamConfig.KEY)),
102
- __metadata("design:paramtypes", [void 0, user_service_1.UserService,
108
+ __metadata("design:paramtypes", [user_service_1.UserService,
109
+ setting_service_1.SettingService,
103
110
  authentication_service_1.AuthenticationService])
104
111
  ], GoogleAuthenticationController);
105
112
  //# sourceMappingURL=google-authentication.controller.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"google-authentication.controller.js","sourceRoot":"","sources":["../../src/controllers/google-authentication.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAmH;AAEnH,6CAAoD;AAEpD,wEAA0E;AAC1E,qDAAiD;AACjD,iEAAoD;AACpD,qEAAwD;AACxD,4DAAmD;AACnD,wFAAgF;AAChF,+EAA2E;AAC3E,2DAAuD;AAShD,IAAM,8BAA8B,GAApC,MAAM,8BAA8B;IACvC,YACmC,gBAA8C,EAC5D,WAAwB,EACxB,WAAkC;QAFpB,qBAAgB,GAAhB,gBAAgB,CAA8B;QAC5D,gBAAW,GAAX,WAAW,CAAa;QACxB,gBAAW,GAAX,WAAW,CAAuB;IACnD,CAAC;IAKC,AAAN,KAAK,CAAC,OAAO;QACT,IAAI,CAAC,qBAAqB,EAAE,CAAC;IACjC,CAAC;IAEO,qBAAqB;QACzB,IAAI,CAAC,IAAA,6CAAuB,EAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,qCAA4B,CAAC,gCAAgC,CAAC,CAAC;QAC7E,CAAC;IACL,CAAC;IAKD,kBAAkB,CAAQ,GAAY,EAAS,GAAa;QACxD,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QAYtB,OAAO,GAAG,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,WAAW,eAAe,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;IAC7G,CAAC;IAWK,AAAN,KAAK,CAAC,uBAAuB,CAAsB,UAAU;QACzD,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAEpE,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC;QAExB,OAAO,IAAI,CAAC;IAChB,CAAC;IAWK,AAAN,KAAK,CAAC,UAAU,CAAsB,UAAU;QAC5C,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAC1D,CAAC;CACJ,CAAA;AAvEY,wEAA8B;AAUjC;IAHL,IAAA,yBAAM,GAAE;IACR,IAAA,kBAAS,EAAC,wCAAgB,CAAC;IAC3B,IAAA,YAAG,EAAC,SAAS,CAAC;;;;;6DAGd;AAWD;IAHC,IAAA,yBAAM,GAAE;IACR,IAAA,YAAG,EAAC,kBAAkB,CAAC;IACvB,IAAA,kBAAS,EAAC,wCAAgB,CAAC;;IACR,WAAA,IAAA,YAAG,GAAE,CAAA;IAAgB,WAAA,IAAA,YAAG,GAAE,CAAA;;;;wEAe7C;AAWK;IAFL,IAAA,yBAAM,GAAE;IACR,IAAA,YAAG,EAAC,gBAAgB,CAAC;;IACS,WAAA,IAAA,cAAK,EAAC,YAAY,CAAC,CAAA;;;;6EAOjD;AAWK;IAHL,IAAA,yBAAM,GAAE;IACR,IAAA,YAAG,EAAC,cAAc,CAAC;IACnB,IAAA,kBAAQ,EAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;IAC7C,WAAA,IAAA,cAAK,EAAC,YAAY,CAAC,CAAA;;;;gEAGpC;yCAtEQ,8BAA8B;IAL1C,IAAA,qBAAI,EAAC,yBAAQ,CAAC,IAAI,CAAC;IACnB,IAAA,mBAAU,EAAC,YAAY,CAAC;IACxB,IAAA,iBAAO,EAAC,KAAK,CAAC;IAKN,WAAA,IAAA,eAAM,EAAC,sBAAS,CAAC,GAAG,CAAC,CAAA;6CACQ,0BAAW;QACX,8CAAqB;GAJ9C,8BAA8B,CAuE1C","sourcesContent":["import { Controller, Get, Inject, InternalServerErrorException, Query, Req, Res, UseGuards } from '@nestjs/common';\nimport { ConfigType } from '@nestjs/config';\nimport { ApiQuery, ApiTags } from '@nestjs/swagger';\nimport { Request, Response } from 'express';\nimport { isGoogleOAuthConfigured } from 'src/helpers/google-oauth.helper';\nimport { iamConfig } from '../config/iam.config';\nimport { Auth } from '../decorators/auth.decorator';\nimport { Public } from '../decorators/public.decorator';\nimport { AuthType } from '../enums/auth-type.enum';\nimport { GoogleOauthGuard } from '../passport-strategies/google-oauth.strategy';\nimport { AuthenticationService } from '../services/authentication.service';\nimport { UserService } from '../services/user.service';\n\n\n\n@Auth(AuthType.None)\n@Controller('iam/google')\n@ApiTags(\"Iam\")\n// @UseGuards(ThrottlerGuard)\n// @SkipThrottle({ login: false, short: false, burst: true, sustained: true }) //Enable the login throttle only \nexport class GoogleAuthenticationController {\n constructor(\n @Inject(iamConfig.KEY) private iamConfiguration: ConfigType<typeof iamConfig>,\n private readonly userService: UserService,\n private readonly authService: AuthenticationService,\n ) { }\n\n @Public()\n @UseGuards(GoogleOauthGuard)\n @Get('connect')\n async connect() {\n this.validateConfiguration();\n }\n\n private validateConfiguration() {\n if (!isGoogleOAuthConfigured(this.iamConfiguration)) {\n throw new InternalServerErrorException('Google OAuth is not configured');\n }\n }\n\n @Public()\n @Get('connect/callback')\n @UseGuards(GoogleOauthGuard)\n googleAuthCallback(@Req() req: Request, @Res() res: Response) {\n this.validateConfiguration();\n const user = req.user;\n\n // console.log(`Found user: ${JSON.stringify(user)}`);\n // const token = await this.authService.signIn(req.user);\n // res.cookie('access_token', token, {\n // maxAge: 2592000000,\n // sameSite: true,\n // secure: false,\n // });\n // return req.user;\n // return res;\n\n return res.redirect(`${this.iamConfiguration.googleOauth.redirectURL}?accessCode=${user['accessCode']}`);\n }\n\n /**\n * This is just a dummy endpoint where we are passing in the accessCode, this will be configured in the .env as an environment variable and \n * will be passed the accessCode, using the accessCode the UI code on this page will mostly invoke the /iam/google/auth endpoint which will finally generate the JWT token.\n * \n * @param accessCode \n * @returns \n */\n @Public()\n @Get('dummy-redirect')\n async dummyGoogleAuthRedirect(@Query('accessCode') accessCode) {\n this.validateConfiguration();\n const user = await this.userService.findOneByAccessCode(accessCode);\n\n delete user['password'];\n\n return user;\n }\n\n /**\n * Use this endpoint to authenticate using an accessCode with Google.\n * \n * @param accessCode \n * @returns \n */\n @Public()\n @Get('authenticate')\n @ApiQuery({ name: 'accessCode', required: true, type: String })\n async googleAuth(@Query('accessCode') accessCode) {\n this.validateConfiguration();\n return this.authService.signInUsingGoogle(accessCode);\n }\n}\n"]}
1
+ {"version":3,"file":"google-authentication.controller.js","sourceRoot":"","sources":["../../src/controllers/google-authentication.controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Controller, Get, Inject, InternalServerErrorException, Query, Req, Res, UseGuards } from '@nestjs/common';\nimport { ConfigType } from '@nestjs/config';\nimport { ApiQuery, ApiTags } from '@nestjs/swagger';\nimport { Request, Response } from 'express';\nimport { GoogleAuthConfiguration, isGoogleOAuthConfigured } from 'src/helpers/google-oauth.helper';\nimport { Auth } from '../decorators/auth.decorator';\nimport { Public } from '../decorators/public.decorator';\nimport { AuthType } from '../enums/auth-type.enum';\nimport { GoogleOauthGuard } from '../passport-strategies/google-oauth.strategy';\nimport { AuthenticationService } from '../services/authentication.service';\nimport { UserService } from '../services/user.service';\nimport { SettingService } from 'src/services/setting.service';\nimport type { SolidCoreSetting } from \"src/services/settings/default-settings-provider.service\";\n\n\n\n@Auth(AuthType.None)\n@Controller('iam/google')\n@ApiTags(\"Iam\")\n// @UseGuards(ThrottlerGuard)\n// @SkipThrottle({ login: false, short: false, burst: true, sustained: true }) //Enable the login throttle only \nexport class GoogleAuthenticationController {\n constructor(\n private readonly userService: UserService,\n private readonly settingService: SettingService,\n private readonly authService: AuthenticationService,\n ) { }\n\n @Public()\n @UseGuards(GoogleOauthGuard)\n @Get('connect')\n async connect() {\n await this.validateConfiguration();\n }\n\n private async validateConfiguration() {\n const googleOauth: GoogleAuthConfiguration = {\n clientID: this.settingService.getConfigValue<SolidCoreSetting>(\"clientID\"),\n clientSecret: this.settingService.getConfigValue<SolidCoreSetting>(\"clientSecret\"),\n callbackURL: this.settingService.getConfigValue<SolidCoreSetting>(\"callbackURL\"),\n redirectURL: this.settingService.getConfigValue<SolidCoreSetting>(\"redirectURL\"),\n }\n if (!isGoogleOAuthConfigured(googleOauth)) {\n throw new InternalServerErrorException('Google OAuth is not configured');\n }\n }\n\n @Public()\n @Get('connect/callback')\n @UseGuards(GoogleOauthGuard)\n async googleAuthCallback(@Req() req: Request, @Res() res: Response) {\n await this.validateConfiguration();\n const user = req.user;\n const googleOauthRedirectURL = await this.settingService.getConfigValue<SolidCoreSetting>(\"redirectURL\");\n // console.log(`Found user: ${JSON.stringify(user)}`);\n // const token = await this.authService.signIn(req.user);\n // res.cookie('access_token', token, {\n // maxAge: 2592000000,\n // sameSite: true,\n // secure: false,\n // });\n // return req.user;\n // return res;\n\n return res.redirect(`${googleOauthRedirectURL}?accessCode=${user['accessCode']}`);\n }\n\n /**\n * This is just a dummy endpoint where we are passing in the accessCode, this will be configured in the .env as an environment variable and \n * will be passed the accessCode, using the accessCode the UI code on this page will mostly invoke the /iam/google/auth endpoint which will finally generate the JWT token.\n * \n * @param accessCode \n * @returns \n */\n @Public()\n @Get('dummy-redirect')\n async dummyGoogleAuthRedirect(@Query('accessCode') accessCode) {\n await this.validateConfiguration();\n const user = await this.userService.findOneByAccessCode(accessCode);\n\n delete user['password'];\n\n return user;\n }\n\n /**\n * Use this endpoint to authenticate using an accessCode with Google.\n * \n * @param accessCode \n * @returns \n */\n @Public()\n @Get('authenticate')\n @ApiQuery({ name: 'accessCode', required: true, type: String })\n async googleAuth(@Query('accessCode') accessCode) {\n await this.validateConfiguration();\n return this.authService.signInUsingGoogle(accessCode);\n }\n}\n"]}
@@ -15,6 +15,16 @@ export declare class OTPAuthenticationController {
15
15
  }>;
16
16
  initiateLogin(signInDto: OTPSignInDto): Promise<{
17
17
  message: string;
18
+ user: {
19
+ email: string;
20
+ mobile?: undefined;
21
+ };
22
+ } | {
23
+ message: string;
24
+ user: {
25
+ mobile: string;
26
+ email?: undefined;
27
+ };
18
28
  }>;
19
29
  confirmLogin(response: Response, signInDto: OTPConfirmOTPDto): Promise<{
20
30
  accessToken: string;
@@ -1 +1 @@
1
- {"version":3,"file":"otp-authentication.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/otp-authentication.controller.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAI3E,qBAKa,2BAA2B;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,qBAAqB;IAI/D,oBAAoB,CAAS,SAAS,EAAE,YAAY;;;IAO9C,mBAAmB,CACO,QAAQ,EAAE,QAAQ,EACtC,SAAS,EAAE,gBAAgB;;;;IASvC,aAAa,CAAS,SAAS,EAAE,YAAY;;;IAOvC,YAAY,CACc,QAAQ,EAAE,QAAQ,EACtC,SAAS,EAAE,gBAAgB;;;;;;;;;;;;CAgB1C"}
1
+ {"version":3,"file":"otp-authentication.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/otp-authentication.controller.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAI3E,qBAKa,2BAA2B;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAAX,WAAW,EAAE,qBAAqB;IAI/D,oBAAoB,CAAS,SAAS,EAAE,YAAY;;;IAO9C,mBAAmB,CACO,QAAQ,EAAE,QAAQ,EACtC,SAAS,EAAE,gBAAgB;;;;IASvC,aAAa,CAAS,SAAS,EAAE,YAAY;;;;;;;;;;;;;IAOvC,YAAY,CACc,QAAQ,EAAE,QAAQ,EACtC,SAAS,EAAE,gBAAgB;;;;;;;;;;;;CAgB1C"}
@@ -64,7 +64,7 @@ __decorate([
64
64
  __decorate([
65
65
  (0, public_decorator_1.Public)(),
66
66
  (0, common_1.Post)('login/initiate'),
67
- openapi.ApiResponse({ status: 201 }),
67
+ openapi.ApiResponse({ status: 201, type: Object }),
68
68
  __param(0, (0, common_1.Body)()),
69
69
  __metadata("design:type", Function),
70
70
  __metadata("design:paramtypes", [otp_sign_in_dto_1.OTPSignInDto]),