@solidstarters/solid-core 1.2.204 → 1.2.207

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 (542) 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 +3 -12
  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/controllers/test.controller.d.ts.map +1 -1
  27. package/dist/controllers/test.controller.js.map +1 -1
  28. package/dist/decorators/settings-provider.decorator.d.ts +3 -0
  29. package/dist/decorators/settings-provider.decorator.d.ts.map +1 -0
  30. package/dist/decorators/settings-provider.decorator.js +8 -0
  31. package/dist/decorators/settings-provider.decorator.js.map +1 -0
  32. package/dist/decorators/solid-password.decorator.d.ts.map +1 -1
  33. package/dist/decorators/solid-password.decorator.js +3 -3
  34. package/dist/decorators/solid-password.decorator.js.map +1 -1
  35. package/dist/dtos/create-role-metadata.dto.d.ts +3 -4
  36. package/dist/dtos/create-role-metadata.dto.d.ts.map +1 -1
  37. package/dist/dtos/create-role-metadata.dto.js +4 -51
  38. package/dist/dtos/create-role-metadata.dto.js.map +1 -1
  39. package/dist/dtos/create-scheduled-job.dto.d.ts +1 -0
  40. package/dist/dtos/create-scheduled-job.dto.d.ts.map +1 -1
  41. package/dist/dtos/create-scheduled-job.dto.js +7 -1
  42. package/dist/dtos/create-scheduled-job.dto.js.map +1 -1
  43. package/dist/dtos/create-setting.dto.d.ts +3 -0
  44. package/dist/dtos/create-setting.dto.d.ts.map +1 -1
  45. package/dist/dtos/create-setting.dto.js +20 -2
  46. package/dist/dtos/create-setting.dto.js.map +1 -1
  47. package/dist/dtos/update-scheduled-job.dto.d.ts +1 -0
  48. package/dist/dtos/update-scheduled-job.dto.d.ts.map +1 -1
  49. package/dist/dtos/update-scheduled-job.dto.js +7 -1
  50. package/dist/dtos/update-scheduled-job.dto.js.map +1 -1
  51. package/dist/dtos/update-setting.dto.d.ts +3 -0
  52. package/dist/dtos/update-setting.dto.d.ts.map +1 -1
  53. package/dist/dtos/update-setting.dto.js +19 -1
  54. package/dist/dtos/update-setting.dto.js.map +1 -1
  55. package/dist/entities/scheduled-job.entity.d.ts +1 -0
  56. package/dist/entities/scheduled-job.entity.d.ts.map +1 -1
  57. package/dist/entities/scheduled-job.entity.js +5 -1
  58. package/dist/entities/scheduled-job.entity.js.map +1 -1
  59. package/dist/entities/setting.entity.d.ts +3 -0
  60. package/dist/entities/setting.entity.d.ts.map +1 -1
  61. package/dist/entities/setting.entity.js +13 -1
  62. package/dist/entities/setting.entity.js.map +1 -1
  63. package/dist/factories/mail.factory.d.ts +3 -4
  64. package/dist/factories/mail.factory.d.ts.map +1 -1
  65. package/dist/factories/mail.factory.js +6 -12
  66. package/dist/factories/mail.factory.js.map +1 -1
  67. package/dist/factories/sms.factory.d.ts +3 -4
  68. package/dist/factories/sms.factory.d.ts.map +1 -1
  69. package/dist/factories/sms.factory.js +6 -12
  70. package/dist/factories/sms.factory.js.map +1 -1
  71. package/dist/factories/whatsapp.factory.d.ts +3 -4
  72. package/dist/factories/whatsapp.factory.d.ts.map +1 -1
  73. package/dist/factories/whatsapp.factory.js +6 -12
  74. package/dist/factories/whatsapp.factory.js.map +1 -1
  75. package/dist/guards/access-token.guard.d.ts +3 -4
  76. package/dist/guards/access-token.guard.d.ts.map +1 -1
  77. package/dist/guards/access-token.guard.js +14 -9
  78. package/dist/guards/access-token.guard.js.map +1 -1
  79. package/dist/helpers/command.service.d.ts +5 -1
  80. package/dist/helpers/command.service.d.ts.map +1 -1
  81. package/dist/helpers/command.service.js +26 -11
  82. package/dist/helpers/command.service.js.map +1 -1
  83. package/dist/helpers/cors.helper.d.ts +1 -2
  84. package/dist/helpers/cors.helper.d.ts.map +1 -1
  85. package/dist/helpers/cors.helper.js +2 -2
  86. package/dist/helpers/cors.helper.js.map +1 -1
  87. package/dist/helpers/error-mapper.service.d.ts.map +1 -1
  88. package/dist/helpers/error-mapper.service.js.map +1 -1
  89. package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.js +2 -2
  90. package/dist/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.js.map +1 -1
  91. package/dist/helpers/google-oauth.helper.d.ts +7 -3
  92. package/dist/helpers/google-oauth.helper.d.ts.map +1 -1
  93. package/dist/helpers/google-oauth.helper.js +1 -2
  94. package/dist/helpers/google-oauth.helper.js.map +1 -1
  95. package/dist/helpers/module.helper.js +0 -2
  96. package/dist/helpers/module.helper.js.map +1 -1
  97. package/dist/helpers/schematic.service.d.ts +3 -2
  98. package/dist/helpers/schematic.service.d.ts.map +1 -1
  99. package/dist/helpers/schematic.service.js +32 -27
  100. package/dist/helpers/schematic.service.js.map +1 -1
  101. package/dist/helpers/solid-registry.d.ts +8 -3
  102. package/dist/helpers/solid-registry.d.ts.map +1 -1
  103. package/dist/helpers/solid-registry.js +32 -9
  104. package/dist/helpers/solid-registry.js.map +1 -1
  105. package/dist/index.d.ts +2 -4
  106. package/dist/index.d.ts.map +1 -1
  107. package/dist/index.js +3 -6
  108. package/dist/index.js.map +1 -1
  109. package/dist/interfaces.d.ts +21 -0
  110. package/dist/interfaces.d.ts.map +1 -1
  111. package/dist/interfaces.js +8 -1
  112. package/dist/interfaces.js.map +1 -1
  113. package/dist/passport-strategies/google-oauth.strategy.d.ts +1 -4
  114. package/dist/passport-strategies/google-oauth.strategy.d.ts.map +1 -1
  115. package/dist/passport-strategies/google-oauth.strategy.js +12 -12
  116. package/dist/passport-strategies/google-oauth.strategy.js.map +1 -1
  117. package/dist/repository/scheduled-job.repository.d.ts.map +1 -1
  118. package/dist/repository/scheduled-job.repository.js +1 -0
  119. package/dist/repository/scheduled-job.repository.js.map +1 -1
  120. package/dist/seeders/email-template-seeder.service.d.ts +3 -4
  121. package/dist/seeders/email-template-seeder.service.d.ts.map +1 -1
  122. package/dist/seeders/email-template-seeder.service.js +7 -12
  123. package/dist/seeders/email-template-seeder.service.js.map +1 -1
  124. package/dist/seeders/module-metadata-seeder.service.d.ts +1 -5
  125. package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
  126. package/dist/seeders/module-metadata-seeder.service.js +24 -24
  127. package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
  128. package/dist/seeders/seed-data/solid-core-metadata.json +119 -5
  129. package/dist/seeders/sms-template-seeder.service.d.ts +3 -4
  130. package/dist/seeders/sms-template-seeder.service.d.ts.map +1 -1
  131. package/dist/seeders/sms-template-seeder.service.js +7 -12
  132. package/dist/seeders/sms-template-seeder.service.js.map +1 -1
  133. package/dist/seeders/system-fields-seeder.service.d.ts.map +1 -1
  134. package/dist/seeders/system-fields-seeder.service.js +3 -0
  135. package/dist/seeders/system-fields-seeder.service.js.map +1 -1
  136. package/dist/services/action-metadata.service.d.ts +2 -13
  137. package/dist/services/action-metadata.service.d.ts.map +1 -1
  138. package/dist/services/action-metadata.service.js +4 -22
  139. package/dist/services/action-metadata.service.js.map +1 -1
  140. package/dist/services/ai-interaction.service.d.ts +2 -13
  141. package/dist/services/ai-interaction.service.d.ts.map +1 -1
  142. package/dist/services/ai-interaction.service.js +6 -24
  143. package/dist/services/ai-interaction.service.js.map +1 -1
  144. package/dist/services/authentication.service.d.ts +14 -10
  145. package/dist/services/authentication.service.d.ts.map +1 -1
  146. package/dist/services/authentication.service.js +158 -116
  147. package/dist/services/authentication.service.js.map +1 -1
  148. package/dist/services/bcrypt.service.d.ts +3 -5
  149. package/dist/services/bcrypt.service.d.ts.map +1 -1
  150. package/dist/services/bcrypt.service.js +10 -14
  151. package/dist/services/bcrypt.service.js.map +1 -1
  152. package/dist/services/chatter-message-details.service.d.ts +2 -13
  153. package/dist/services/chatter-message-details.service.d.ts.map +1 -1
  154. package/dist/services/chatter-message-details.service.js +4 -22
  155. package/dist/services/chatter-message-details.service.js.map +1 -1
  156. package/dist/services/chatter-message.service.d.ts +2 -13
  157. package/dist/services/chatter-message.service.d.ts.map +1 -1
  158. package/dist/services/chatter-message.service.js +5 -23
  159. package/dist/services/chatter-message.service.js.map +1 -1
  160. package/dist/services/crud.service.d.ts +12 -12
  161. package/dist/services/crud.service.d.ts.map +1 -1
  162. package/dist/services/crud.service.js +25 -17
  163. package/dist/services/crud.service.js.map +1 -1
  164. package/dist/services/dashboard-question-sql-dataset-config.service.d.ts +2 -13
  165. package/dist/services/dashboard-question-sql-dataset-config.service.d.ts.map +1 -1
  166. package/dist/services/dashboard-question-sql-dataset-config.service.js +4 -21
  167. package/dist/services/dashboard-question-sql-dataset-config.service.js.map +1 -1
  168. package/dist/services/dashboard-question.service.d.ts +2 -13
  169. package/dist/services/dashboard-question.service.d.ts.map +1 -1
  170. package/dist/services/dashboard-question.service.js +4 -21
  171. package/dist/services/dashboard-question.service.js.map +1 -1
  172. package/dist/services/dashboard-variable.service.d.ts +2 -13
  173. package/dist/services/dashboard-variable.service.d.ts.map +1 -1
  174. package/dist/services/dashboard-variable.service.js +4 -21
  175. package/dist/services/dashboard-variable.service.js.map +1 -1
  176. package/dist/services/dashboard.service.d.ts +2 -13
  177. package/dist/services/dashboard.service.d.ts.map +1 -1
  178. package/dist/services/dashboard.service.js +4 -21
  179. package/dist/services/dashboard.service.js.map +1 -1
  180. package/dist/services/email-template.service.d.ts +2 -13
  181. package/dist/services/email-template.service.d.ts.map +1 -1
  182. package/dist/services/email-template.service.js +4 -22
  183. package/dist/services/email-template.service.js.map +1 -1
  184. package/dist/services/export-template.service.d.ts +2 -13
  185. package/dist/services/export-template.service.d.ts.map +1 -1
  186. package/dist/services/export-template.service.js +4 -21
  187. package/dist/services/export-template.service.js.map +1 -1
  188. package/dist/services/export-transaction.service.d.ts +2 -13
  189. package/dist/services/export-transaction.service.d.ts.map +1 -1
  190. package/dist/services/export-transaction.service.js +4 -21
  191. package/dist/services/export-transaction.service.js.map +1 -1
  192. package/dist/services/field-metadata.service.d.ts +11 -0
  193. package/dist/services/field-metadata.service.d.ts.map +1 -1
  194. package/dist/services/field-metadata.service.js +3 -0
  195. package/dist/services/field-metadata.service.js.map +1 -1
  196. package/dist/services/file.service.d.ts +1 -4
  197. package/dist/services/file.service.d.ts.map +1 -1
  198. package/dist/services/file.service.js +12 -13
  199. package/dist/services/file.service.js.map +1 -1
  200. package/dist/services/genai/r2r-helper.service.d.ts +3 -1
  201. package/dist/services/genai/r2r-helper.service.d.ts.map +1 -1
  202. package/dist/services/genai/r2r-helper.service.js +11 -7
  203. package/dist/services/genai/r2r-helper.service.js.map +1 -1
  204. package/dist/services/import-transaction-error-log.service.d.ts +2 -13
  205. package/dist/services/import-transaction-error-log.service.d.ts.map +1 -1
  206. package/dist/services/import-transaction-error-log.service.js +4 -22
  207. package/dist/services/import-transaction-error-log.service.js.map +1 -1
  208. package/dist/services/import-transaction.service.d.ts +2 -13
  209. package/dist/services/import-transaction.service.d.ts.map +1 -1
  210. package/dist/services/import-transaction.service.js +4 -22
  211. package/dist/services/import-transaction.service.js.map +1 -1
  212. package/dist/services/list-of-values.service.d.ts +2 -13
  213. package/dist/services/list-of-values.service.d.ts.map +1 -1
  214. package/dist/services/list-of-values.service.js +4 -22
  215. package/dist/services/list-of-values.service.js.map +1 -1
  216. package/dist/services/locale.service.d.ts +2 -13
  217. package/dist/services/locale.service.d.ts.map +1 -1
  218. package/dist/services/locale.service.js +4 -22
  219. package/dist/services/locale.service.js.map +1 -1
  220. package/dist/services/mail/elastic-email.service.d.ts +4 -5
  221. package/dist/services/mail/elastic-email.service.d.ts.map +1 -1
  222. package/dist/services/mail/elastic-email.service.js +10 -13
  223. package/dist/services/mail/elastic-email.service.js.map +1 -1
  224. package/dist/services/mail/smtp-email.service.d.ts +3 -4
  225. package/dist/services/mail/smtp-email.service.d.ts.map +1 -1
  226. package/dist/services/mail/smtp-email.service.js +19 -17
  227. package/dist/services/mail/smtp-email.service.js.map +1 -1
  228. package/dist/services/media-storage-provider-metadata.service.d.ts +11 -0
  229. package/dist/services/media-storage-provider-metadata.service.d.ts.map +1 -1
  230. package/dist/services/media-storage-provider-metadata.service.js +3 -0
  231. package/dist/services/media-storage-provider-metadata.service.js.map +1 -1
  232. package/dist/services/media.service.d.ts +2 -9
  233. package/dist/services/media.service.d.ts.map +1 -1
  234. package/dist/services/media.service.js +17 -28
  235. package/dist/services/media.service.js.map +1 -1
  236. package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts +2 -4
  237. package/dist/services/mediaStorageProviders/file-s3-storage-provider.d.ts.map +1 -1
  238. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js +2 -11
  239. package/dist/services/mediaStorageProviders/file-s3-storage-provider.js.map +1 -1
  240. package/dist/services/mediaStorageProviders/file-storage-provider.d.ts +3 -1
  241. package/dist/services/mediaStorageProviders/file-storage-provider.d.ts.map +1 -1
  242. package/dist/services/mediaStorageProviders/file-storage-provider.js +16 -12
  243. package/dist/services/mediaStorageProviders/file-storage-provider.js.map +1 -1
  244. package/dist/services/mediaStorageProviders/index.d.ts +1 -1
  245. package/dist/services/mediaStorageProviders/index.d.ts.map +1 -1
  246. package/dist/services/mediaStorageProviders/index.js +1 -1
  247. package/dist/services/mediaStorageProviders/index.js.map +1 -1
  248. package/dist/services/menu-item-metadata.service.d.ts +2 -13
  249. package/dist/services/menu-item-metadata.service.d.ts.map +1 -1
  250. package/dist/services/menu-item-metadata.service.js +4 -22
  251. package/dist/services/menu-item-metadata.service.js.map +1 -1
  252. package/dist/services/model-metadata.service.d.ts +11 -0
  253. package/dist/services/model-metadata.service.d.ts.map +1 -1
  254. package/dist/services/model-metadata.service.js +3 -0
  255. package/dist/services/model-metadata.service.js.map +1 -1
  256. package/dist/services/model-sequence.service.d.ts +2 -13
  257. package/dist/services/model-sequence.service.d.ts.map +1 -1
  258. package/dist/services/model-sequence.service.js +4 -21
  259. package/dist/services/model-sequence.service.js.map +1 -1
  260. package/dist/services/module-metadata.service.d.ts +14 -1
  261. package/dist/services/module-metadata.service.d.ts.map +1 -1
  262. package/dist/services/module-metadata.service.js +13 -6
  263. package/dist/services/module-metadata.service.js.map +1 -1
  264. package/dist/services/mq-message-queue.service.d.ts +2 -13
  265. package/dist/services/mq-message-queue.service.d.ts.map +1 -1
  266. package/dist/services/mq-message-queue.service.js +4 -22
  267. package/dist/services/mq-message-queue.service.js.map +1 -1
  268. package/dist/services/mq-message.service.d.ts +2 -13
  269. package/dist/services/mq-message.service.d.ts.map +1 -1
  270. package/dist/services/mq-message.service.js +4 -22
  271. package/dist/services/mq-message.service.js.map +1 -1
  272. package/dist/services/permission-metadata.service.d.ts +2 -13
  273. package/dist/services/permission-metadata.service.d.ts.map +1 -1
  274. package/dist/services/permission-metadata.service.js +4 -22
  275. package/dist/services/permission-metadata.service.js.map +1 -1
  276. package/dist/services/role-metadata.service.d.ts +2 -13
  277. package/dist/services/role-metadata.service.d.ts.map +1 -1
  278. package/dist/services/role-metadata.service.js +4 -23
  279. package/dist/services/role-metadata.service.js.map +1 -1
  280. package/dist/services/saved-filters.service.d.ts +2 -13
  281. package/dist/services/saved-filters.service.d.ts.map +1 -1
  282. package/dist/services/saved-filters.service.js +4 -21
  283. package/dist/services/saved-filters.service.js.map +1 -1
  284. package/dist/services/scheduled-job.service.d.ts +2 -13
  285. package/dist/services/scheduled-job.service.d.ts.map +1 -1
  286. package/dist/services/scheduled-job.service.js +4 -22
  287. package/dist/services/scheduled-job.service.js.map +1 -1
  288. package/dist/services/scheduled-jobs/scheduler.service.d.ts +1 -0
  289. package/dist/services/scheduled-jobs/scheduler.service.d.ts.map +1 -1
  290. package/dist/services/scheduled-jobs/scheduler.service.js +29 -0
  291. package/dist/services/scheduled-jobs/scheduler.service.js.map +1 -1
  292. package/dist/services/security-rule.service.d.ts +2 -13
  293. package/dist/services/security-rule.service.d.ts.map +1 -1
  294. package/dist/services/security-rule.service.js +5 -23
  295. package/dist/services/security-rule.service.js.map +1 -1
  296. package/dist/services/setting.service.d.ts +23 -30
  297. package/dist/services/setting.service.d.ts.map +1 -1
  298. package/dist/services/setting.service.js +147 -196
  299. package/dist/services/setting.service.js.map +1 -1
  300. package/dist/services/settings/default-settings-provider.service.d.ts +1058 -0
  301. package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -0
  302. package/dist/services/settings/default-settings-provider.service.js +139 -0
  303. package/dist/services/settings/default-settings-provider.service.js.map +1 -0
  304. package/dist/services/short-url/tiny-url.service.d.ts +3 -4
  305. package/dist/services/short-url/tiny-url.service.d.ts.map +1 -1
  306. package/dist/services/short-url/tiny-url.service.js +10 -13
  307. package/dist/services/short-url/tiny-url.service.js.map +1 -1
  308. package/dist/services/sms/Msg91BaseSMSService.d.ts +3 -4
  309. package/dist/services/sms/Msg91BaseSMSService.d.ts.map +1 -1
  310. package/dist/services/sms/Msg91BaseSMSService.js +3 -3
  311. package/dist/services/sms/Msg91BaseSMSService.js.map +1 -1
  312. package/dist/services/sms/Msg91OTPService.d.ts +2 -3
  313. package/dist/services/sms/Msg91OTPService.d.ts.map +1 -1
  314. package/dist/services/sms/Msg91OTPService.js +7 -13
  315. package/dist/services/sms/Msg91OTPService.js.map +1 -1
  316. package/dist/services/sms/Msg91SMSService.d.ts +2 -3
  317. package/dist/services/sms/Msg91SMSService.d.ts.map +1 -1
  318. package/dist/services/sms/Msg91SMSService.js +7 -13
  319. package/dist/services/sms/Msg91SMSService.js.map +1 -1
  320. package/dist/services/sms/TwilioSMSService.d.ts +3 -4
  321. package/dist/services/sms/TwilioSMSService.d.ts.map +1 -1
  322. package/dist/services/sms/TwilioSMSService.js +13 -16
  323. package/dist/services/sms/TwilioSMSService.js.map +1 -1
  324. package/dist/services/sms-template.service.d.ts +2 -13
  325. package/dist/services/sms-template.service.d.ts.map +1 -1
  326. package/dist/services/sms-template.service.js +4 -22
  327. package/dist/services/sms-template.service.js.map +1 -1
  328. package/dist/services/solid-introspect.service.d.ts +4 -1
  329. package/dist/services/solid-introspect.service.d.ts.map +1 -1
  330. package/dist/services/solid-introspect.service.js +33 -47
  331. package/dist/services/solid-introspect.service.js.map +1 -1
  332. package/dist/services/textract.service.d.ts +1 -4
  333. package/dist/services/textract.service.d.ts.map +1 -1
  334. package/dist/services/textract.service.js +14 -18
  335. package/dist/services/textract.service.js.map +1 -1
  336. package/dist/services/user-activity-history.service.d.ts +2 -13
  337. package/dist/services/user-activity-history.service.d.ts.map +1 -1
  338. package/dist/services/user-activity-history.service.js +4 -22
  339. package/dist/services/user-activity-history.service.js.map +1 -1
  340. package/dist/services/user-view-metadata.service.d.ts +2 -13
  341. package/dist/services/user-view-metadata.service.d.ts.map +1 -1
  342. package/dist/services/user-view-metadata.service.js +4 -22
  343. package/dist/services/user-view-metadata.service.js.map +1 -1
  344. package/dist/services/user.service.d.ts +2 -15
  345. package/dist/services/user.service.d.ts.map +1 -1
  346. package/dist/services/user.service.js +7 -28
  347. package/dist/services/user.service.js.map +1 -1
  348. package/dist/services/view-metadata.service.d.ts +2 -13
  349. package/dist/services/view-metadata.service.d.ts.map +1 -1
  350. package/dist/services/view-metadata.service.js +5 -23
  351. package/dist/services/view-metadata.service.js.map +1 -1
  352. package/dist/services/whatsapp/Msg91WhatsappService.d.ts +3 -4
  353. package/dist/services/whatsapp/Msg91WhatsappService.d.ts.map +1 -1
  354. package/dist/services/whatsapp/Msg91WhatsappService.js +12 -18
  355. package/dist/services/whatsapp/Msg91WhatsappService.js.map +1 -1
  356. package/dist/services/whatsapp/Three60WhatsappService.d.ts +1 -4
  357. package/dist/services/whatsapp/Three60WhatsappService.d.ts.map +1 -1
  358. package/dist/services/whatsapp/Three60WhatsappService.js +2 -11
  359. package/dist/services/whatsapp/Three60WhatsappService.js.map +1 -1
  360. package/dist/solid-core.module.d.ts.map +1 -1
  361. package/dist/solid-core.module.js +9 -47
  362. package/dist/solid-core.module.js.map +1 -1
  363. package/dist/transformers/typeorm/local-date-time-transformer.d.ts.map +1 -1
  364. package/dist/transformers/typeorm/local-date-time-transformer.js +4 -2
  365. package/dist/transformers/typeorm/local-date-time-transformer.js.map +1 -1
  366. package/dist/tsconfig.tsbuildinfo +1 -1
  367. package/docs/type-declaration-import-issue.md +24 -0
  368. package/package.json +2 -1
  369. package/src/commands/info.command.ts +101 -0
  370. package/src/commands/mcp.command.ts +3 -17
  371. package/src/commands/seed.command.ts +5 -17
  372. package/src/controllers/email-template.controller.ts +9 -4
  373. package/src/controllers/google-authentication.controller.ts +19 -12
  374. package/src/controllers/setting.controller.ts +6 -81
  375. package/src/controllers/test.controller.ts +0 -18
  376. package/src/decorators/settings-provider.decorator.ts +7 -0
  377. package/src/decorators/solid-password.decorator.ts +43 -43
  378. package/src/dtos/create-role-metadata.dto.ts +4 -81
  379. package/src/dtos/create-scheduled-job.dto.ts +4 -0
  380. package/src/dtos/create-setting.dto.ts +14 -1
  381. package/src/dtos/update-scheduled-job.dto.ts +4 -0
  382. package/src/dtos/update-setting.dto.ts +14 -0
  383. package/src/entities/scheduled-job.entity.ts +2 -0
  384. package/src/entities/setting.entity.ts +15 -1
  385. package/src/factories/mail.factory.ts +4 -4
  386. package/src/factories/sms.factory.ts +9 -7
  387. package/src/factories/whatsapp.factory.ts +4 -4
  388. package/src/guards/access-token.guard.ts +12 -5
  389. package/src/helpers/command.service.ts +44 -12
  390. package/src/helpers/cors.helper.ts +3 -3
  391. package/src/helpers/error-mapper.service.ts +0 -1
  392. package/src/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.ts +2 -2
  393. package/src/helpers/google-oauth.helper.ts +11 -7
  394. package/src/helpers/module.helper.ts +2 -2
  395. package/src/helpers/schematic.service.ts +41 -35
  396. package/src/helpers/solid-registry.ts +45 -16
  397. package/src/index.ts +2 -4
  398. package/src/interfaces.ts +29 -0
  399. package/src/passport-strategies/google-oauth.strategy.ts +11 -8
  400. package/src/repository/scheduled-job.repository.ts +1 -0
  401. package/src/seeders/email-template-seeder.service.ts +6 -4
  402. package/src/seeders/module-metadata-seeder.service.ts +41 -29
  403. package/src/seeders/seed-data/solid-core-metadata.json +120 -6
  404. package/src/seeders/sms-template-seeder.service.ts +6 -4
  405. package/src/seeders/system-fields-seeder.service.ts +3 -0
  406. package/src/services/action-metadata.service.ts +4 -16
  407. package/src/services/ai-interaction.service.ts +6 -17
  408. package/src/services/authentication.service.ts +175 -113
  409. package/src/services/bcrypt.service.ts +9 -9
  410. package/src/services/chatter-message-details.service.ts +5 -17
  411. package/src/services/chatter-message.service.ts +2 -14
  412. package/src/services/crud.service.ts +36 -28
  413. package/src/services/dashboard-question-sql-dataset-config.service.ts +4 -15
  414. package/src/services/dashboard-question.service.ts +4 -17
  415. package/src/services/dashboard-variable.service.ts +4 -16
  416. package/src/services/dashboard.service.ts +2 -13
  417. package/src/services/email-template.service.ts +3 -15
  418. package/src/services/export-template.service.ts +4 -18
  419. package/src/services/export-transaction.service.ts +4 -19
  420. package/src/services/field-metadata.service.ts +5 -1
  421. package/src/services/file.service.ts +14 -12
  422. package/src/services/genai/r2r-helper.service.ts +10 -6
  423. package/src/services/import-transaction-error-log.service.ts +5 -17
  424. package/src/services/import-transaction.service.ts +3 -15
  425. package/src/services/list-of-values.service.ts +3 -16
  426. package/src/services/locale.service.ts +3 -15
  427. package/src/services/mail/elastic-email.service.ts +7 -7
  428. package/src/services/mail/smtp-email.service.ts +19 -11
  429. package/src/services/media-storage-provider-metadata.service.ts +4 -0
  430. package/src/services/media.service.ts +39 -22
  431. package/src/services/mediaStorageProviders/file-s3-storage-provider.ts +0 -3
  432. package/src/services/mediaStorageProviders/file-storage-provider.ts +24 -12
  433. package/src/services/mediaStorageProviders/index.ts +1 -1
  434. package/src/services/menu-item-metadata.service.ts +5 -17
  435. package/src/services/model-metadata.service.ts +4 -0
  436. package/src/services/model-sequence.service.ts +4 -15
  437. package/src/services/module-metadata.service.ts +13 -4
  438. package/src/services/mq-message-queue.service.ts +5 -17
  439. package/src/services/mq-message.service.ts +5 -17
  440. package/src/services/permission-metadata.service.ts +4 -16
  441. package/src/services/role-metadata.service.ts +3 -16
  442. package/src/services/saved-filters.service.ts +2 -13
  443. package/src/services/scheduled-job.service.ts +3 -15
  444. package/src/services/scheduled-jobs/scheduler.service.ts +40 -3
  445. package/src/services/security-rule.service.ts +4 -16
  446. package/src/services/setting.service.ts +223 -212
  447. package/src/services/settings/default-settings-provider.service.ts +157 -0
  448. package/src/services/short-url/tiny-url.service.ts +9 -7
  449. package/src/services/sms/Msg91BaseSMSService.ts +6 -4
  450. package/src/services/sms/Msg91OTPService.ts +7 -7
  451. package/src/services/sms/Msg91SMSService.ts +7 -6
  452. package/src/services/sms/TwilioSMSService.ts +18 -19
  453. package/src/services/sms-template.service.ts +3 -15
  454. package/src/services/solid-introspect.service.ts +45 -66
  455. package/src/services/textract.service.ts +13 -10
  456. package/src/services/user-activity-history.service.ts +5 -17
  457. package/src/services/user-view-metadata.service.ts +5 -17
  458. package/src/services/user.service.ts +7 -22
  459. package/src/services/view-metadata.service.ts +3 -15
  460. package/src/services/whatsapp/Msg91WhatsappService.ts +10 -11
  461. package/src/services/whatsapp/Three60WhatsappService.ts +0 -3
  462. package/src/solid-core.module.ts +17 -49
  463. package/src/transformers/typeorm/local-date-time-transformer.ts +10 -5
  464. package/# Password field.md +0 -8
  465. package/dist/config/app-builder.config.d.ts +0 -11
  466. package/dist/config/app-builder.config.d.ts.map +0 -1
  467. package/dist/config/app-builder.config.js +0 -13
  468. package/dist/config/app-builder.config.js.map +0 -1
  469. package/dist/config/common.config.d.ts +0 -96
  470. package/dist/config/common.config.d.ts.map +0 -1
  471. package/dist/config/common.config.js +0 -51
  472. package/dist/config/common.config.js.map +0 -1
  473. package/dist/config/iam.config.d.ts +0 -56
  474. package/dist/config/iam.config.d.ts.map +0 -1
  475. package/dist/config/iam.config.js +0 -35
  476. package/dist/config/iam.config.js.map +0 -1
  477. package/dist/config/jwt.config.d.ts +0 -14
  478. package/dist/config/jwt.config.d.ts.map +0 -1
  479. package/dist/config/jwt.config.js +0 -15
  480. package/dist/config/jwt.config.js.map +0 -1
  481. package/dist/services/genai/mcp-handlers/solid-add-button-to-form-view-mcp-handler.service.d.ts +0 -16
  482. package/dist/services/genai/mcp-handlers/solid-add-button-to-form-view-mcp-handler.service.d.ts.map +0 -1
  483. package/dist/services/genai/mcp-handlers/solid-add-button-to-form-view-mcp-handler.service.js +0 -151
  484. package/dist/services/genai/mcp-handlers/solid-add-button-to-form-view-mcp-handler.service.js.map +0 -1
  485. package/dist/services/genai/mcp-handlers/solid-add-controller-handler-method-mcp-handler.service.d.ts +0 -17
  486. package/dist/services/genai/mcp-handlers/solid-add-controller-handler-method-mcp-handler.service.d.ts.map +0 -1
  487. package/dist/services/genai/mcp-handlers/solid-add-controller-handler-method-mcp-handler.service.js +0 -80
  488. package/dist/services/genai/mcp-handlers/solid-add-controller-handler-method-mcp-handler.service.js.map +0 -1
  489. package/dist/services/genai/mcp-handlers/solid-add-custom-service-method-mcp-handler.service.d.ts +0 -16
  490. package/dist/services/genai/mcp-handlers/solid-add-custom-service-method-mcp-handler.service.d.ts.map +0 -1
  491. package/dist/services/genai/mcp-handlers/solid-add-custom-service-method-mcp-handler.service.js +0 -74
  492. package/dist/services/genai/mcp-handlers/solid-add-custom-service-method-mcp-handler.service.js.map +0 -1
  493. package/dist/services/genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.d.ts +0 -12
  494. package/dist/services/genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.d.ts.map +0 -1
  495. package/dist/services/genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.js +0 -47
  496. package/dist/services/genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.js.map +0 -1
  497. package/dist/services/genai/mcp-handlers/solid-add-header-button-or-row-button-to-list-view-mcp-handler.service.d.ts +0 -16
  498. package/dist/services/genai/mcp-handlers/solid-add-header-button-or-row-button-to-list-view-mcp-handler.service.d.ts.map +0 -1
  499. package/dist/services/genai/mcp-handlers/solid-add-header-button-or-row-button-to-list-view-mcp-handler.service.js +0 -151
  500. package/dist/services/genai/mcp-handlers/solid-add-header-button-or-row-button-to-list-view-mcp-handler.service.js.map +0 -1
  501. package/dist/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.d.ts +0 -16
  502. package/dist/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.d.ts.map +0 -1
  503. package/dist/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.js +0 -75
  504. package/dist/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.js.map +0 -1
  505. package/dist/services/genai/mcp-handlers/solid-create-custom-form-view-widget-mcp-handler.service.d.ts +0 -14
  506. package/dist/services/genai/mcp-handlers/solid-create-custom-form-view-widget-mcp-handler.service.d.ts.map +0 -1
  507. package/dist/services/genai/mcp-handlers/solid-create-custom-form-view-widget-mcp-handler.service.js +0 -73
  508. package/dist/services/genai/mcp-handlers/solid-create-custom-form-view-widget-mcp-handler.service.js.map +0 -1
  509. package/dist/services/genai/mcp-handlers/solid-create-model-with-fields-mcp-handler.service.d.ts +0 -14
  510. package/dist/services/genai/mcp-handlers/solid-create-model-with-fields-mcp-handler.service.d.ts.map +0 -1
  511. package/dist/services/genai/mcp-handlers/solid-create-model-with-fields-mcp-handler.service.js +0 -45
  512. package/dist/services/genai/mcp-handlers/solid-create-model-with-fields-mcp-handler.service.js.map +0 -1
  513. package/dist/services/genai/mcp-handlers/solid-create-module-mcp-handler.service.d.ts +0 -14
  514. package/dist/services/genai/mcp-handlers/solid-create-module-mcp-handler.service.d.ts.map +0 -1
  515. package/dist/services/genai/mcp-handlers/solid-create-module-mcp-handler.service.js +0 -51
  516. package/dist/services/genai/mcp-handlers/solid-create-module-mcp-handler.service.js.map +0 -1
  517. package/dist/services/genai/mcp-handlers/solid-update-layout-mcp-handler.service.d.ts +0 -12
  518. package/dist/services/genai/mcp-handlers/solid-update-layout-mcp-handler.service.d.ts.map +0 -1
  519. package/dist/services/genai/mcp-handlers/solid-update-layout-mcp-handler.service.js +0 -38
  520. package/dist/services/genai/mcp-handlers/solid-update-layout-mcp-handler.service.js.map +0 -1
  521. package/dist/services/media-storage-provider-metadata-seeder.service.d.ts +0 -8
  522. package/dist/services/media-storage-provider-metadata-seeder.service.d.ts.map +0 -1
  523. package/dist/services/media-storage-provider-metadata-seeder.service.js +0 -43
  524. package/dist/services/media-storage-provider-metadata-seeder.service.js.map +0 -1
  525. package/sql-server-changes.txt +0 -88
  526. package/src/config/app-builder.config.ts +0 -12
  527. package/src/config/common.config.ts +0 -55
  528. package/src/config/iam.config.ts +0 -32
  529. package/src/config/jwt.config.ts +0 -13
  530. package/src/services/export_issues.txt +0 -10
  531. package/src/services/genai/mcp-handlers/solid-add-button-to-form-view-mcp-handler.service.ts +0 -137
  532. package/src/services/genai/mcp-handlers/solid-add-controller-handler-method-mcp-handler.service.ts +0 -81
  533. package/src/services/genai/mcp-handlers/solid-add-custom-service-method-mcp-handler.service.ts +0 -69
  534. package/src/services/genai/mcp-handlers/solid-add-fields-to-model-mcp-handler.service.ts +0 -68
  535. package/src/services/genai/mcp-handlers/solid-add-header-button-or-row-button-to-list-view-mcp-handler.service.ts +0 -141
  536. package/src/services/genai/mcp-handlers/solid-create-computed-provider-mcp-handler.service.ts +0 -71
  537. package/src/services/genai/mcp-handlers/solid-create-custom-form-view-widget-mcp-handler.service.ts +0 -72
  538. package/src/services/genai/mcp-handlers/solid-create-model-with-fields-mcp-handler.service.ts +0 -45
  539. package/src/services/genai/mcp-handlers/solid-create-module-mcp-handler.service.ts +0 -58
  540. package/src/services/genai/mcp-handlers/solid-update-layout-mcp-handler.service.ts +0 -40
  541. package/src/services/groupBy.json +0 -92
  542. package/src/services/media-storage-provider-metadata-seeder.service.ts +0 -33
@@ -1 +1 @@
1
- {"version":3,"file":"access-token.guard.d.ts","sourceRoot":"","sources":["../../src/guards/access-token.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,gBAAgB,EAIjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAGzC,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAExC,qBACa,gBAAiB,YAAW,WAAW;IAEhD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAE3B,OAAO,CAAC,QAAQ,CAAC,gBAAgB;IACjC,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAJH,UAAU,EAAE,UAAU,EAEtB,gBAAgB,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,EAC9C,kBAAkB,EAAE,yBAAyB,EAC7C,GAAG,EAAE,UAAU;IAG5B,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IA2B9D,OAAO,CAAC,sBAAsB;CAM/B"}
1
+ {"version":3,"file":"access-token.guard.d.ts","sourceRoot":"","sources":["../../src/guards/access-token.guard.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,gBAAgB,EAIjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,OAAO,EAAE,yBAAyB,EAAE,MAAM,yCAAyC,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,qBACa,gBAAiB,YAAW,WAAW;IAEhD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAHH,UAAU,EAAE,UAAU,EACtB,kBAAkB,EAAE,yBAAyB,EAC7C,cAAc,EAAE,cAAc,EAC9B,GAAG,EAAE,UAAU;IAG5B,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC;IAmC9D,OAAO,CAAC,sBAAsB;CAM/B"}
@@ -8,22 +8,19 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
8
8
  var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
- var __param = (this && this.__param) || function (paramIndex, decorator) {
12
- return function (target, key) { decorator(target, key, paramIndex); }
13
- };
14
11
  Object.defineProperty(exports, "__esModule", { value: true });
15
12
  exports.AccessTokenGuard = void 0;
16
13
  const common_1 = require("@nestjs/common");
17
14
  const jwt_1 = require("@nestjs/jwt");
18
- const jwt_config_1 = require("../config/jwt.config");
19
15
  const constants_1 = require("../constants");
20
16
  const permission_metadata_service_1 = require("../services/permission-metadata.service");
21
17
  const nestjs_cls_1 = require("nestjs-cls");
18
+ const setting_service_1 = require("../services/setting.service");
22
19
  let AccessTokenGuard = class AccessTokenGuard {
23
- constructor(jwtService, jwtConfiguration, permissionsService, cls) {
20
+ constructor(jwtService, permissionsService, settingService, cls) {
24
21
  this.jwtService = jwtService;
25
- this.jwtConfiguration = jwtConfiguration;
26
22
  this.permissionsService = permissionsService;
23
+ this.settingService = settingService;
27
24
  this.cls = cls;
28
25
  }
29
26
  async canActivate(context) {
@@ -33,7 +30,14 @@ let AccessTokenGuard = class AccessTokenGuard {
33
30
  throw new common_1.UnauthorizedException();
34
31
  }
35
32
  try {
36
- const payload = await this.jwtService.verifyAsync(token, this.jwtConfiguration);
33
+ const jwtConfiguration = {
34
+ secret: this.settingService.getConfigValue("secret"),
35
+ audience: this.settingService.getConfigValue("audience"),
36
+ issuer: this.settingService.getConfigValue("issuer"),
37
+ accessTokenTtl: this.settingService.getConfigValue("accessTokenTtl"),
38
+ refreshTokenTtl: this.settingService.getConfigValue("refreshTokenTtl")
39
+ };
40
+ const payload = await this.jwtService.verifyAsync(token, jwtConfiguration);
37
41
  const permissions = await this.permissionsService.findAllUsingRoles(payload.roles);
38
42
  payload.permissions = permissions.map((permission) => permission.name);
39
43
  request[constants_1.REQUEST_USER_KEY] = payload;
@@ -52,8 +56,9 @@ let AccessTokenGuard = class AccessTokenGuard {
52
56
  exports.AccessTokenGuard = AccessTokenGuard;
53
57
  exports.AccessTokenGuard = AccessTokenGuard = __decorate([
54
58
  (0, common_1.Injectable)(),
55
- __param(1, (0, common_1.Inject)(jwt_config_1.jwtConfig.KEY)),
56
- __metadata("design:paramtypes", [jwt_1.JwtService, void 0, permission_metadata_service_1.PermissionMetadataService,
59
+ __metadata("design:paramtypes", [jwt_1.JwtService,
60
+ permission_metadata_service_1.PermissionMetadataService,
61
+ setting_service_1.SettingService,
57
62
  nestjs_cls_1.ClsService])
58
63
  ], AccessTokenGuard);
59
64
  //# sourceMappingURL=access-token.guard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"access-token.guard.js","sourceRoot":"","sources":["../../src/guards/access-token.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAMwB;AAExB,qCAAyC;AAGzC,qDAAkD;AAClD,4CAAgD;AAChD,yFAAoF;AACpF,2CAAwC;AAGjC,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAC3B,YACmB,UAAsB,EAEtB,gBAA8C,EAC9C,kBAA6C,EAC7C,GAAe;QAJf,eAAU,GAAV,UAAU,CAAY;QAEtB,qBAAgB,GAAhB,gBAAgB,CAA8B;QAC9C,uBAAkB,GAAlB,kBAAkB,CAA2B;QAC7C,QAAG,GAAH,GAAG,CAAY;IAC9B,CAAC;IAEL,KAAK,CAAC,WAAW,CAAC,OAAyB;QAEzC,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,8BAAqB,EAAE,CAAC;QACpC,CAAC;QACD,IAAI,CAAC;YACH,MAAM,OAAO,GAAmB,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAC/D,KAAK,EACL,IAAI,CAAC,gBAAgB,CACtB,CAAC;YAGF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACnF,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAEvE,OAAO,CAAC,4BAAgB,CAAC,GAAG,OAAO,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,4BAAgB,EAAE,OAAO,CAAC,CAAC;QAG1C,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,8BAAqB,EAAE,CAAC;QACpC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,sBAAsB,CAAC,OAAgB;QAG7C,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACnE,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAA;AA1CY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;IAIR,WAAA,IAAA,eAAM,EAAC,sBAAS,CAAC,GAAG,CAAC,CAAA;qCADO,gBAAU,UAGF,uDAAyB;QACxC,uBAAU;GANvB,gBAAgB,CA0C5B","sourcesContent":["import {\n CanActivate,\n ExecutionContext,\n Inject,\n Injectable,\n UnauthorizedException,\n} from '@nestjs/common';\nimport { ConfigType } from '@nestjs/config';\nimport { JwtService } from '@nestjs/jwt';\nimport { Request } from 'express';\nimport { ActiveUserData } from '../interfaces/active-user-data.interface';\nimport { jwtConfig } from 'src/config/jwt.config';\nimport { REQUEST_USER_KEY } from \"../constants\";\nimport { PermissionMetadataService } from '../services/permission-metadata.service';\nimport { ClsService } from 'nestjs-cls';\n\n@Injectable()\nexport class AccessTokenGuard implements CanActivate {\n constructor(\n private readonly jwtService: JwtService,\n @Inject(jwtConfig.KEY)\n private readonly jwtConfiguration: ConfigType<typeof jwtConfig>,\n private readonly permissionsService: PermissionMetadataService,\n private readonly cls: ClsService\n ) { }\n\n async canActivate(context: ExecutionContext): Promise<boolean> {\n // 💡 NOTE: For GraphQL applications, you'd have to use the wrapper GqlExecutionContext here instead.\n const request = context.switchToHttp().getRequest();\n const token = this.extractTokenFromHeader(request);\n if (!token) {\n throw new UnauthorizedException();\n }\n try {\n const payload: ActiveUserData = await this.jwtService.verifyAsync(\n token,\n this.jwtConfiguration,\n );\n\n // Load permissions given the user. \n const permissions = await this.permissionsService.findAllUsingRoles(payload.roles);\n payload.permissions = permissions.map((permission) => permission.name);\n\n request[REQUEST_USER_KEY] = payload;\n this.cls.set(REQUEST_USER_KEY, payload);\n // console.log(`About to set payload in the request user key:`);\n // console.log(payload);\n } catch {\n throw new UnauthorizedException();\n }\n return true;\n }\n\n private extractTokenFromHeader(request: Request): string | undefined {\n // Since token is included in the Authorization header something like \n // Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjEsImVtYWlsIjoidXNlcjFAbmVzdGpzLmNvbSIsImlhdCI6MTcwMDk5NTk1MywiZXhwIjoxNzAwOTk5NTUzLCJhdWQiOiJsb2NhbGhvc3Q6MzAwMCIsImlzcyI6ImxvY2FsaG9zdDozMDAwIn0.303Y04SZjKqoPjJRq4hXHcarHeZYS878gPGWmw2SoUc\n const [_, token] = request.headers.authorization?.split(' ') ?? [];\n return token;\n }\n}\n"]}
1
+ {"version":3,"file":"access-token.guard.js","sourceRoot":"","sources":["../../src/guards/access-token.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,2CAMwB;AACxB,qCAAyC;AAGzC,4CAAgD;AAChD,yFAAoF;AACpF,2CAAwC;AACxC,iEAA6D;AAGtD,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;IAC3B,YACmB,UAAsB,EACtB,kBAA6C,EAC7C,cAA8B,EAC9B,GAAe;QAHf,eAAU,GAAV,UAAU,CAAY;QACtB,uBAAkB,GAAlB,kBAAkB,CAA2B;QAC7C,mBAAc,GAAd,cAAc,CAAgB;QAC9B,QAAG,GAAH,GAAG,CAAY;IAC9B,CAAC;IAEL,KAAK,CAAC,WAAW,CAAC,OAAyB;QAEzC,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,8BAAqB,EAAE,CAAC;QACpC,CAAC;QACD,IAAI,CAAC;YAEH,MAAM,gBAAgB,GAAG;gBACvB,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAmB,QAAQ,CAAC;gBACtE,QAAQ,EAAE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAmB,UAAU,CAAC;gBAC1E,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAmB,QAAQ,CAAC;gBACtE,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAmB,gBAAgB,CAAC;gBACtF,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAmB,iBAAiB,CAAC;aACzF,CAAA;YACD,MAAM,OAAO,GAAmB,MAAM,IAAI,CAAC,UAAU,CAAC,WAAW,CAC/D,KAAK,EACL,gBAAgB,CACjB,CAAC;YAGF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACnF,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAEvE,OAAO,CAAC,4BAAgB,CAAC,GAAG,OAAO,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,4BAAgB,EAAE,OAAO,CAAC,CAAC;QAG1C,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,8BAAqB,EAAE,CAAC;QACpC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,sBAAsB,CAAC,OAAgB;QAG7C,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACnE,OAAO,KAAK,CAAC;IACf,CAAC;CACF,CAAA;AAjDY,4CAAgB;2BAAhB,gBAAgB;IAD5B,IAAA,mBAAU,GAAE;qCAGoB,gBAAU;QACF,uDAAyB;QAC7B,gCAAc;QACzB,uBAAU;GALvB,gBAAgB,CAiD5B","sourcesContent":["import type { SolidCoreSetting } from \"src/services/settings/default-settings-provider.service\";\nimport {\n CanActivate,\n ExecutionContext,\n Inject,\n Injectable,\n UnauthorizedException,\n} from '@nestjs/common';\nimport { JwtService } from '@nestjs/jwt';\nimport { Request } from 'express';\nimport { ActiveUserData } from '../interfaces/active-user-data.interface';\nimport { REQUEST_USER_KEY } from \"../constants\";\nimport { PermissionMetadataService } from '../services/permission-metadata.service';\nimport { ClsService } from 'nestjs-cls';\nimport { SettingService } from '../services/setting.service';\n\n@Injectable()\nexport class AccessTokenGuard implements CanActivate {\n constructor(\n private readonly jwtService: JwtService,\n private readonly permissionsService: PermissionMetadataService,\n private readonly settingService: SettingService,\n private readonly cls: ClsService\n ) { }\n\n async canActivate(context: ExecutionContext): Promise<boolean> {\n // 💡 NOTE: For GraphQL applications, you'd have to use the wrapper GqlExecutionContext here instead.\n const request = context.switchToHttp().getRequest();\n const token = this.extractTokenFromHeader(request);\n if (!token) {\n throw new UnauthorizedException();\n }\n try {\n\n const jwtConfiguration = {\n secret: this.settingService.getConfigValue<SolidCoreSetting>(\"secret\"),\n audience: this.settingService.getConfigValue<SolidCoreSetting>(\"audience\"),\n issuer: this.settingService.getConfigValue<SolidCoreSetting>(\"issuer\"),\n accessTokenTtl: this.settingService.getConfigValue<SolidCoreSetting>(\"accessTokenTtl\"),\n refreshTokenTtl: this.settingService.getConfigValue<SolidCoreSetting>(\"refreshTokenTtl\")\n }\n const payload: ActiveUserData = await this.jwtService.verifyAsync(\n token,\n jwtConfiguration\n );\n\n // Load permissions given the user. \n const permissions = await this.permissionsService.findAllUsingRoles(payload.roles);\n payload.permissions = permissions.map((permission) => permission.name);\n\n request[REQUEST_USER_KEY] = payload;\n this.cls.set(REQUEST_USER_KEY, payload);\n // console.log(`About to set payload in the request user key:`);\n // console.log(payload);\n } catch {\n throw new UnauthorizedException();\n }\n return true;\n }\n\n private extractTokenFromHeader(request: Request): string | undefined {\n // Since token is included in the Authorization header something like \n // Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOjEsImVtYWlsIjoidXNlcjFAbmVzdGpzLmNvbSIsImlhdCI6MTcwMDk5NTk1MywiZXhwIjoxNzAwOTk5NTUzLCJhdWQiOiJsb2NhbGhvc3Q6MzAwMCIsImlzcyI6ImxvY2FsaG9zdDozMDAwIn0.303Y04SZjKqoPjJRq4hXHcarHeZYS878gPGWmw2SoUc\n const [_, token] = request.headers.authorization?.split(' ') ?? [];\n return token;\n }\n}\n"]}
@@ -1,5 +1,9 @@
1
+ export type CommandWithArgs = {
2
+ command: string;
3
+ args: string[];
4
+ };
1
5
  export declare class CommandService {
2
6
  private readonly logger;
3
- executeCommand(command: string): Promise<string>;
7
+ executeCommandWithArgs(commandWithArgs: CommandWithArgs): Promise<string>;
4
8
  }
5
9
  //# sourceMappingURL=command.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"command.service.d.ts","sourceRoot":"","sources":["../../src/helpers/command.service.ts"],"names":[],"mappings":"AAGA,qBACa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAEpD,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAkBvD"}
1
+ {"version":3,"file":"command.service.d.ts","sourceRoot":"","sources":["../../src/helpers/command.service.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAAC;AAEF,qBACa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAKpD,sBAAsB,CAAC,eAAe,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;CA0ChF"}
@@ -14,18 +14,33 @@ let CommandService = CommandService_1 = class CommandService {
14
14
  constructor() {
15
15
  this.logger = new common_1.Logger(CommandService_1.name);
16
16
  }
17
- async executeCommand(command) {
18
- this.logger.debug(`Executing command :${command}`);
17
+ async executeCommandWithArgs(commandWithArgs) {
18
+ const { command, args } = commandWithArgs;
19
+ this.logger.debug(`Executing command: ${command} ${args.join(' ')}`);
19
20
  return new Promise((resolve, reject) => {
20
- (0, child_process_1.exec)(command, (error, stdout, stderr) => {
21
- if (error) {
22
- this.logger.error(`Error executing command :${command}`, error);
23
- reject(error);
24
- return;
25
- }
26
- if (stderr) {
27
- this.logger.error(`Error executing command :${command}`, stderr);
28
- reject(stderr);
21
+ const isWindows = process.platform === 'win32';
22
+ const spawnCommand = isWindows ? command : command;
23
+ const spawnArgs = args;
24
+ const child = (0, child_process_1.spawn)(spawnCommand, spawnArgs, {
25
+ shell: isWindows,
26
+ stdio: ['pipe', 'pipe', 'pipe'],
27
+ });
28
+ let stdout = '';
29
+ let stderr = '';
30
+ child.stdout.on('data', (data) => {
31
+ stdout += data.toString();
32
+ });
33
+ child.stderr.on('data', (data) => {
34
+ stderr += data.toString();
35
+ });
36
+ child.on('error', (error) => {
37
+ this.logger.error(`Error executing command: ${command}`, error);
38
+ reject(error);
39
+ });
40
+ child.on('close', (code) => {
41
+ if (code !== 0) {
42
+ this.logger.error(`Command failed with code ${code}: ${command}`, stderr);
43
+ reject(new Error(stderr || `Command failed with exit code ${code}`));
29
44
  return;
30
45
  }
31
46
  resolve(stdout);
@@ -1 +1 @@
1
- {"version":3,"file":"command.service.js","sourceRoot":"","sources":["../../src/helpers/command.service.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAoD;AACpD,iDAAqC;AAG9B,IAAM,cAAc,sBAApB,MAAM,cAAc;IAApB;QACY,WAAM,GAAG,IAAI,eAAM,CAAC,gBAAc,CAAC,IAAI,CAAC,CAAC;IAoB5D,CAAC;IAlBC,KAAK,CAAC,cAAc,CAAC,OAAe;QAClC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;QACnD,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC7C,IAAA,oBAAI,EAAC,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;gBACtC,IAAI,KAAK,EAAE,CAAC;oBACV,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;oBAChE,MAAM,CAAC,KAAK,CAAC,CAAC;oBACd,OAAO;gBACT,CAAC;gBACD,IAAI,MAAM,EAAE,CAAC;oBACX,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;oBACjE,MAAM,CAAC,MAAM,CAAC,CAAC;oBACf,OAAO;gBACT,CAAC;gBACD,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AArBY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;GACA,cAAc,CAqB1B","sourcesContent":["import { Injectable, Logger } from '@nestjs/common';\nimport { exec } from 'child_process';\n\n@Injectable()\nexport class CommandService {\n private readonly logger = new Logger(CommandService.name);\n\n async executeCommand(command: string): Promise<string> {\n this.logger.debug(`Executing command :${command}`);\n return new Promise<string>((resolve, reject) => {\n exec(command, (error, stdout, stderr) => {\n if (error) {\n this.logger.error(`Error executing command :${command}`, error);\n reject(error);\n return;\n }\n if (stderr) {\n this.logger.error(`Error executing command :${command}`, stderr);\n reject(stderr);\n return;\n }\n resolve(stdout);\n });\n });\n }\n}\n"]}
1
+ {"version":3,"file":"command.service.js","sourceRoot":"","sources":["../../src/helpers/command.service.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAoD;AACpD,iDAAsC;AAQ/B,IAAM,cAAc,sBAApB,MAAM,cAAc;IAApB;QACY,WAAM,GAAG,IAAI,eAAM,CAAC,gBAAc,CAAC,IAAI,CAAC,CAAC;IA+C5D,CAAC;IA1CC,KAAK,CAAC,sBAAsB,CAAC,eAAgC;QAC3D,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,eAAe,CAAC;QAC1C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAErE,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC;YAG/C,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;YACnD,MAAM,SAAS,GAAG,IAAI,CAAC;YAEvB,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,YAAY,EAAE,SAAS,EAAE;gBAC3C,KAAK,EAAE,SAAS;gBAChB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;aAChC,CAAC,CAAC;YAEH,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,MAAM,GAAG,EAAE,CAAC;YAEhB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC/B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBAC/B,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;gBAChE,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBACzB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;oBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,IAAI,KAAK,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;oBAC1E,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,iCAAiC,IAAI,EAAE,CAAC,CAAC,CAAC;oBACrE,OAAO;gBACT,CAAC;gBACD,OAAO,CAAC,MAAM,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF,CAAA;AAhDY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;GACA,cAAc,CAgD1B","sourcesContent":["import { Injectable, Logger } from '@nestjs/common';\nimport { spawn } from 'child_process';\n\nexport type CommandWithArgs = {\n command: string;\n args: string[];\n};\n\n@Injectable()\nexport class CommandService {\n private readonly logger = new Logger(CommandService.name);\n\n /**\n * Execute a command with arguments array (cross-platform compatible)\n */\n async executeCommandWithArgs(commandWithArgs: CommandWithArgs): Promise<string> {\n const { command, args } = commandWithArgs;\n this.logger.debug(`Executing command: ${command} ${args.join(' ')}`);\n\n return new Promise<string>((resolve, reject) => {\n const isWindows = process.platform === 'win32';\n\n // On Windows, we need to use cmd /c for commands that might be .cmd files (like npm scripts)\n const spawnCommand = isWindows ? command : command;\n const spawnArgs = args;\n\n const child = spawn(spawnCommand, spawnArgs, {\n shell: isWindows, // Use shell on Windows to handle .cmd files\n stdio: ['pipe', 'pipe', 'pipe'],\n });\n\n let stdout = '';\n let stderr = '';\n\n child.stdout.on('data', (data) => {\n stdout += data.toString();\n });\n\n child.stderr.on('data', (data) => {\n stderr += data.toString();\n });\n\n child.on('error', (error) => {\n this.logger.error(`Error executing command: ${command}`, error);\n reject(error);\n });\n\n child.on('close', (code) => {\n if (code !== 0) {\n this.logger.error(`Command failed with code ${code}: ${command}`, stderr);\n reject(new Error(stderr || `Command failed with exit code ${code}`));\n return;\n }\n resolve(stdout);\n });\n });\n }\n}\n"]}
@@ -1,4 +1,3 @@
1
1
  import { CorsOptions } from 'cors';
2
- import { ConfigService } from '@nestjs/config';
3
- export declare function buildDefaultCorsOptions(configService: ConfigService): CorsOptions;
2
+ export declare function buildDefaultCorsOptions(): CorsOptions;
4
3
  //# sourceMappingURL=cors.helper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cors.helper.d.ts","sourceRoot":"","sources":["../../src/helpers/cors.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG/C,wBAAgB,uBAAuB,CAAC,aAAa,EAAE,aAAa,GAAG,WAAW,CA6BjF"}
1
+ {"version":3,"file":"cors.helper.d.ts","sourceRoot":"","sources":["../../src/helpers/cors.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAGnC,wBAAgB,uBAAuB,IAAI,WAAW,CA8BrD"}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.buildDefaultCorsOptions = buildDefaultCorsOptions;
4
- function buildDefaultCorsOptions(configService) {
5
- const rawOrigins = configService.get('SECURITY_CORS_ORIGINS') ?? '*';
4
+ function buildDefaultCorsOptions() {
5
+ const rawOrigins = process.env.SECURITY_CORS_ORIGINS ?? '*';
6
6
  const allowed = rawOrigins.split(',').map(s => s.trim()).filter(Boolean);
7
7
  const escapeRx = (s) => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
8
8
  const patternToRegex = (pattern) => {
@@ -1 +1 @@
1
- {"version":3,"file":"cors.helper.js","sourceRoot":"","sources":["../../src/helpers/cors.helper.ts"],"names":[],"mappings":";;AAIA,0DA6BC;AA7BD,SAAgB,uBAAuB,CAAC,aAA4B;IAClE,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAS,uBAAuB,CAAC,IAAI,GAAG,CAAC;IAC7E,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEzE,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IACzE,MAAM,cAAc,GAAG,CAAC,OAAe,EAAU,EAAE;QACjD,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;QACpD,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,OAAO,CAAC;QACxD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;aAC9B,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;aAC5B,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC3B,OAAO,IAAI,MAAM,CAAC,IAAI,UAAU,GAAG,OAAO,aAAa,EAAE,GAAG,CAAC,CAAC;IAChE,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,CAAC,MAAc,EAAE,EAAE,CACnC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAE9D,OAAO;QACL,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;YACrB,IAAI,CAAC,MAAM;gBAAE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACnC,IAAI,SAAS,CAAC,MAAM,CAAC;gBAAE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC7C,OAAO,EAAE,CAAC,IAAI,KAAK,CAAC,UAAU,MAAM,sBAAsB,CAAC,EAAE,KAAK,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC;QAC7D,cAAc,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;QACjD,WAAW,EAAE,IAAI;KAClB,CAAC;AACJ,CAAC","sourcesContent":["import { CorsOptions } from 'cors';\nimport { ConfigService } from '@nestjs/config';\n\n/** Build CorsOptions from env; supports wildcards like https://*.example.com */\nexport function buildDefaultCorsOptions(configService: ConfigService): CorsOptions {\n const rawOrigins = configService.get<string>('SECURITY_CORS_ORIGINS') ?? '*';\n const allowed = rawOrigins.split(',').map(s => s.trim()).filter(Boolean);\n\n const escapeRx = (s: string) => s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n const patternToRegex = (pattern: string): RegExp => {\n const hasScheme = /^https?:\\/\\//i.test(pattern);\n const schemePart = hasScheme ? '' : 'https?:\\\\/\\\\/';\n if (pattern === '*' || pattern === '.*') return /^.*$/i;\n const escaped = escapeRx(pattern)\n .replace(/^https?:\\/\\//i, '') // strip scheme if present\n .replace(/\\*/g, '[^.]+'); // * => one subdomain segment\n return new RegExp(`^${schemePart}${escaped}(?::\\\\d+)?$`, 'i');\n };\n\n const matchers = allowed.map(patternToRegex);\n const isAllowed = (origin: string) =>\n matchers.length > 0 && matchers.some(rx => rx.test(origin));\n\n return {\n origin: (origin, cb) => {\n if (!origin) return cb(null, true); // allow no-origin (CLI/mobile/internal)\n if (isAllowed(origin)) return cb(null, true);\n return cb(new Error(`Origin ${origin} not allowed by CORS`), false);\n },\n methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'],\n allowedHeaders: ['Content-Type', 'Authorization'],\n credentials: true,\n };\n}"]}
1
+ {"version":3,"file":"cors.helper.js","sourceRoot":"","sources":["../../src/helpers/cors.helper.ts"],"names":[],"mappings":";;AAGA,0DA8BC;AA9BD,SAAgB,uBAAuB;IACrC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,GAAG,CAAC;IAE5D,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEzE,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IACzE,MAAM,cAAc,GAAG,CAAC,OAAe,EAAU,EAAE;QACjD,MAAM,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChD,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC;QACpD,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,OAAO,CAAC;QACxD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;aAC9B,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;aAC5B,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAC3B,OAAO,IAAI,MAAM,CAAC,IAAI,UAAU,GAAG,OAAO,aAAa,EAAE,GAAG,CAAC,CAAC;IAChE,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,CAAC,MAAc,EAAE,EAAE,CACnC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAE9D,OAAO;QACL,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;YACrB,IAAI,CAAC,MAAM;gBAAE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACnC,IAAI,SAAS,CAAC,MAAM,CAAC;gBAAE,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC7C,OAAO,EAAE,CAAC,IAAI,KAAK,CAAC,UAAU,MAAM,sBAAsB,CAAC,EAAE,KAAK,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC;QAC7D,cAAc,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;QACjD,WAAW,EAAE,IAAI;KAClB,CAAC;AACJ,CAAC","sourcesContent":["import { CorsOptions } from 'cors';\n\n/** Build CorsOptions from env; supports wildcards like https://*.example.com */\nexport function buildDefaultCorsOptions(): CorsOptions {\n const rawOrigins = process.env.SECURITY_CORS_ORIGINS ?? '*';\n\n const allowed = rawOrigins.split(',').map(s => s.trim()).filter(Boolean);\n\n const escapeRx = (s: string) => s.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n const patternToRegex = (pattern: string): RegExp => {\n const hasScheme = /^https?:\\/\\//i.test(pattern);\n const schemePart = hasScheme ? '' : 'https?:\\\\/\\\\/';\n if (pattern === '*' || pattern === '.*') return /^.*$/i;\n const escaped = escapeRx(pattern)\n .replace(/^https?:\\/\\//i, '') // strip scheme if present\n .replace(/\\*/g, '[^.]+'); // * => one subdomain segment\n return new RegExp(`^${schemePart}${escaped}(?::\\\\d+)?$`, 'i');\n };\n\n const matchers = allowed.map(patternToRegex);\n const isAllowed = (origin: string) =>\n matchers.length > 0 && matchers.some(rx => rx.test(origin));\n\n return {\n origin: (origin, cb) => {\n if (!origin) return cb(null, true); // allow no-origin (CLI/mobile/internal)\n if (isAllowed(origin)) return cb(null, true);\n return cb(new Error(`Origin ${origin} not allowed by CORS`), false);\n },\n methods: ['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'],\n allowedHeaders: ['Content-Type', 'Authorization'],\n credentials: true,\n };\n}"]}
@@ -1 +1 @@
1
- {"version":3,"file":"error-mapper.service.d.ts","sourceRoot":"","sources":["../../src/helpers/error-mapper.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAA4C,MAAM,gBAAgB,CAAC;AACrF,qBACa,kBAAkB;IAGf,OAAO,CAAC,QAAQ,CAAC,aAAa;IAF1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;gBAEjC,aAAa,EAAE,aAAa;IAGzD,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS;IAMrC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS;IAMtD,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM;IAMnC,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM;IAMtC,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,iBAAiB;IAgBzB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,gBAAgB;IAyBxB,OAAO,CAAC,iBAAiB;CAO5B"}
1
+ {"version":3,"file":"error-mapper.service.d.ts","sourceRoot":"","sources":["../../src/helpers/error-mapper.service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAA4C,MAAM,gBAAgB,CAAC;AACrF,qBACa,kBAAkB;IAGf,OAAO,CAAC,QAAQ,CAAC,aAAa;IAF1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuC;gBAEjC,aAAa,EAAE,aAAa;IAGzD,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS;IAMrC,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS;IAMtD,UAAU,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM;IAMnC,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,MAAM;IAMtC,OAAO,CAAC,SAAS;IAajB,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,iBAAiB;IAezB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,gBAAgB;IAyBxB,OAAO,CAAC,iBAAiB;CAO5B"}
@@ -1 +1 @@
1
- {"version":3,"file":"error-mapper.service.js","sourceRoot":"","sources":["../../src/helpers/error-mapper.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable, Logger } from '@nestjs/common';\nimport { SolidRegistry } from 'src/helpers/solid-registry';\nimport { ErrorCode, ErrorMeta, ErrorRule, IErrorCodeProvider } from 'src/interfaces';\n@Injectable()\nexport class ErrorMapperService {\n private readonly logger = new Logger(ErrorMapperService.name);\n\n constructor(private readonly solidRegistry: SolidRegistry) { }\n\n /** Map an exception object (or string) to a canonical ErrorCode */\n mapException(exc: unknown): ErrorCode {\n const combined = this.combineErrorText(exc);\n return this.matchCode(combined);\n }\n\n /** Map plain message/trace to ErrorCode */\n mapMessage(message: string, trace?: string): ErrorCode {\n const combined = `${message ?? ''}\\n${trace ?? ''}`.toLowerCase();\n return this.matchCode(combined);\n }\n\n /** Get static message for a given code */\n getMessage(code: ErrorCode): string {\n const meta = this.lookupMeta(code);\n return (meta ?? { message: 'An unexpected error occurred.' }).message;\n }\n\n /** Get default HTTP status for a code (falls back to 500) */\n getHttpStatus(code: ErrorCode): number {\n const meta = this.lookupMeta(code);\n return meta?.httpStatus ?? 500;\n }\n\n // ---- internal helpers ----\n private matchCode(combined: string): ErrorCode {\n const rules = this.getAllRulesSorted();\n for (const rule of rules) {\n try {\n if (rule.match(combined)) return rule.code;\n } catch (e) {\n // Defensive: bad provider shouldn't crash mapping\n this.logger.warn(`Error rule threw in match(): code=${rule.code} provider? — ${e}`);\n }\n }\n return 'solidx-unknown-error';\n }\n\n private lookupMeta(code: ErrorCode): ErrorMeta | undefined {\n // Prefer the first rule with that code\n const rules = this.getAllRulesSorted();\n const rule = rules.find((r) => r.code === code);\n if (rule?.meta) return rule.meta;\n\n // Optional: ask providers directly if they implement resolve()\n const providers = this.getProviders();\n for (const p of providers) {\n if (p.resolve) {\n const meta = p.resolve(code);\n if (meta) return meta;\n }\n }\n return undefined;\n }\n\n private getAllRulesSorted(): ReadonlyArray<ErrorRule> {\n const providers = this.getProviders();\n const all: ErrorRule[] = [];\n for (const p of providers) {\n try {\n const rules = p.rules() ?? [];\n // Optional: namespace collision check can be added here if desired\n all.push(...rules);\n } catch (e) {\n this.logger.warn(`ErrorCodeProvider.rules() failed for ${p.name?.()}: ${e}`);\n }\n }\n // Sort by priority desc; default 0\n return all.sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));\n }\n\n private getProviders(): IErrorCodeProvider[] {\n // convert InstanceWrapper → instance\n return this.solidRegistry\n .getErrorCodeProviders()\n .map((w) => w.instance)\n .filter(Boolean) as IErrorCodeProvider[];\n }\n\n private combineErrorText(exc: unknown): string {\n if (typeof exc === 'string') return exc.toLowerCase();\n\n if (exc instanceof Error) {\n const message = exc.message ?? '';\n const stack = exc.stack ?? '';\n return `${message}\\n${stack}`.toLowerCase();\n }\n\n if (exc && typeof exc === 'object') {\n try {\n const obj = exc as Record<string, unknown>;\n const msg = String(obj.message ?? (obj as any)['Message'] ?? '');\n const name = String(obj.name ?? (obj as any)['__type'] ?? '');\n const stack = String((obj as any).stack ?? '');\n const json = this.safeJsonStringify(obj);\n return `${name}\\n${msg}\\n${stack}\\n${json}`.toLowerCase();\n } catch {\n // ignore\n }\n }\n\n return String(exc ?? '').toLowerCase();\n }\n\n private safeJsonStringify(obj: unknown): string {\n try {\n return JSON.stringify(obj);\n } catch {\n return '';\n }\n }\n}"]}
1
+ {"version":3,"file":"error-mapper.service.js","sourceRoot":"","sources":["../../src/helpers/error-mapper.service.ts"],"names":[],"mappings":"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","sourcesContent":["import { Injectable, Logger } from '@nestjs/common';\nimport { SolidRegistry } from 'src/helpers/solid-registry';\nimport { ErrorCode, ErrorMeta, ErrorRule, IErrorCodeProvider } from 'src/interfaces';\n@Injectable()\nexport class ErrorMapperService {\n private readonly logger = new Logger(ErrorMapperService.name);\n\n constructor(private readonly solidRegistry: SolidRegistry) { }\n\n /** Map an exception object (or string) to a canonical ErrorCode */\n mapException(exc: unknown): ErrorCode {\n const combined = this.combineErrorText(exc);\n return this.matchCode(combined);\n }\n\n /** Map plain message/trace to ErrorCode */\n mapMessage(message: string, trace?: string): ErrorCode {\n const combined = `${message ?? ''}\\n${trace ?? ''}`.toLowerCase();\n return this.matchCode(combined);\n }\n\n /** Get static message for a given code */\n getMessage(code: ErrorCode): string {\n const meta = this.lookupMeta(code);\n return (meta ?? { message: 'An unexpected error occurred.' }).message;\n }\n\n /** Get default HTTP status for a code (falls back to 500) */\n getHttpStatus(code: ErrorCode): number {\n const meta = this.lookupMeta(code);\n return meta?.httpStatus ?? 500;\n }\n\n // ---- internal helpers ----\n private matchCode(combined: string): ErrorCode {\n const rules = this.getAllRulesSorted();\n for (const rule of rules) {\n try {\n if (rule.match(combined)) return rule.code;\n } catch (e) {\n // Defensive: bad provider shouldn't crash mapping\n this.logger.warn(`Error rule threw in match(): code=${rule.code} provider? — ${e}`);\n }\n }\n return 'solidx-unknown-error';\n }\n\n private lookupMeta(code: ErrorCode): ErrorMeta | undefined {\n // Prefer the first rule with that code\n const rules = this.getAllRulesSorted();\n const rule = rules.find((r) => r.code === code);\n if (rule?.meta) return rule.meta;\n\n // Optional: ask providers directly if they implement resolve()\n const providers = this.getProviders();\n for (const p of providers) {\n if (p.resolve) {\n const meta = p.resolve(code);\n if (meta) return meta;\n }\n }\n return undefined;\n }\n\n private getAllRulesSorted(): ReadonlyArray<ErrorRule> {\n const providers = this.getProviders();\n const all: ErrorRule[] = [];\n for (const p of providers) {\n try {\n const rules = p.rules() ?? [];\n all.push(...rules);\n } catch (e) {\n this.logger.warn(`ErrorCodeProvider.rules() failed for ${p.name?.()}: ${e}`);\n }\n }\n // Sort by priority desc; default 0\n return all.sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));\n }\n\n private getProviders(): IErrorCodeProvider[] {\n // convert InstanceWrapper → instance\n return this.solidRegistry\n .getErrorCodeProviders()\n .map((w) => w.instance)\n .filter(Boolean) as IErrorCodeProvider[];\n }\n\n private combineErrorText(exc: unknown): string {\n if (typeof exc === 'string') return exc.toLowerCase();\n\n if (exc instanceof Error) {\n const message = exc.message ?? '';\n const stack = exc.stack ?? '';\n return `${message}\\n${stack}`.toLowerCase();\n }\n\n if (exc && typeof exc === 'object') {\n try {\n const obj = exc as Record<string, unknown>;\n const msg = String(obj.message ?? (obj as any)['Message'] ?? '');\n const name = String(obj.name ?? (obj as any)['__type'] ?? '');\n const stack = String((obj as any).stack ?? '');\n const json = this.safeJsonStringify(obj);\n return `${name}\\n${msg}\\n${stack}\\n${json}`.toLowerCase();\n } catch {\n // ignore\n }\n }\n\n return String(exc ?? '').toLowerCase();\n }\n\n private safeJsonStringify(obj: unknown): string {\n try {\n return JSON.stringify(obj);\n } catch {\n return '';\n }\n }\n}"]}
@@ -52,13 +52,13 @@ class ManyToOneRelationFieldCrudManager {
52
52
  if ((0, class_validator_1.isNotEmpty)(fieldId)) {
53
53
  dto[this.options.fieldName] = await this.options.entityManager.getRepository(coModelEntityName).findOneBy({ id: fieldId });
54
54
  if (this.options.required && (0, class_validator_1.isEmpty)(dto[this.options.fieldName])) {
55
- throw new Error(`ManyToOneRelationFieldCrudManager: Record with id: ${fieldId} not found in ${this.options.relationCoModelSingularName}`);
55
+ throw new Error(`Field ${this.options.fieldName} resolution failed. Record with id: ${fieldId} not found in ${this.options.relationCoModelSingularName}`);
56
56
  }
57
57
  }
58
58
  else {
59
59
  dto[this.options.fieldName] = await this.options.entityManager.getRepository(coModelEntityName).findOneBy({ [this.options.relationCoModelUserKeyFieldName]: fieldUserKeyValue });
60
60
  if (this.options.required && (0, class_validator_1.isEmpty)(dto[this.options.fieldName])) {
61
- throw new Error(`ManyToOneRelationFieldCrudManager: Record with userKey: ${this.options.relationCoModelUserKeyFieldName}: ${fieldUserKeyValue} not found in ${this.options.relationCoModelSingularName}`);
61
+ throw new Error(`Field ${this.options.fieldName} resolution failed. Record with userKey: ${this.options.relationCoModelUserKeyFieldName}: ${fieldUserKeyValue} not found in ${this.options.relationCoModelSingularName}`);
62
62
  }
63
63
  }
64
64
  return dto;
@@ -1 +1 @@
1
- {"version":3,"file":"ManyToOneRelationFieldCrudManager.js","sourceRoot":"","sources":["../../../src/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { classify } from \"@angular-devkit/core/src/utils/strings\";\nimport { BadRequestException } from \"@nestjs/common\";\nimport { isEmpty, isNotEmpty, isString } from \"class-validator\";\nimport { FieldCrudManager, ValidationError } from \"src/interfaces\";\nimport { IsParsableInt } from \"src/validators/is-parsable-int\";\nimport { EntityManager } from \"typeorm\";\n\nexport interface ManyToOneRelationFieldOptions {\n // Add options for relation field\n required: boolean | undefined | null;\n relationCoModelSingularName: string | undefined | null;\n fieldName: string | undefined | null;\n // modelUserKeyFieldName: string | undefined | null;\n modelSingularName: string | undefined | null;\n entityManager: EntityManager;\n relationCoModelUserKeyFieldName: string | undefined | null; \n}\n\n// This implementation is meant to be used for many-to-one relation field\nexport class ManyToOneRelationFieldCrudManager implements FieldCrudManager {\n private idFieldName: string;\n private userKeyFieldName: string;\n constructor(private readonly options: ManyToOneRelationFieldOptions) {\n // this.options = options;\n this.idFieldName = `${options.fieldName}Id`;\n this.userKeyFieldName = `${options.fieldName}UserKey`;\n }\n validate(dto: any) {\n const fieldId: number = dto[this.idFieldName];\n const fieldUserKey: string = dto[this.userKeyFieldName];\n return this.applyValidations(fieldId, fieldUserKey);\n }\n\n private applyValidations(fieldId: any, fieldUserKey: string): ValidationError[] {\n const errors: ValidationError[] = [];\n this.isApplyRequiredValidation() && isEmpty(fieldId) && isEmpty(fieldUserKey) ? errors.push({ field: this.options.fieldName, error: `Field: ${this.options.fieldName} is required. Either pass ${this.idFieldName} or ${this.userKeyFieldName}.` }) : \"no errors\";\n if (isNotEmpty(fieldId)) {\n errors.push(...this.applyIdFormatValidations(fieldId));\n }\n if (isNotEmpty(fieldUserKey)) {\n errors.push(...this.applyUserKeyFormatValidations(fieldUserKey));\n }\n return errors;\n }\n\n private applyIdFormatValidations(fieldId: any): ValidationError[] { //FIXME fieldId is any because it can be string or number. Keeping it any for compatibility with isParsableInt. \n const errors: ValidationError[] = [];\n !IsParsableInt(fieldId) ? errors.push({ field: this.options.fieldName, error: 'Field is not a integer' }) : \"no errors\";\n return errors;\n }\n\n private applyUserKeyFormatValidations(fieldUserKey: string): ValidationError[] {\n const errors: ValidationError[] = [];\n !isString(fieldUserKey) ? errors.push({ field: this.options.fieldName, error: 'Field is not a string' }) : \"no errors\";\n if (isEmpty(this.options.relationCoModelUserKeyFieldName)) {\n errors.push({ field: this.options.fieldName, error: `UserKey field name is not defined in the model ${this.options.relationCoModelSingularName}` });\n }\n return errors;\n }\n\n async transformForCreate(dto: any): Promise<any> {\n const fieldId: number = dto[this.idFieldName];\n const fieldUserKeyValue: string = dto[this.userKeyFieldName];\n\n // Avoid transforming if both fieldId and fieldUserKey is empty\n if ((isEmpty(fieldId)) && isEmpty(fieldUserKeyValue)) return dto;\n\n if (!this.options.relationCoModelSingularName) {\n throw new BadRequestException(`ManyToOneRelationFieldCrudManager: relationCoModelSingularName is not defined in the field: ${this.options.fieldName}`);\n }\n // // Load the related entity from the database, using the repository of the related entity\n //const entityTarget = this.getRelatedEntityTarget(classify(this.options.relationCoModelSingularName));\n const coModelEntityName = classify(this.options.relationCoModelSingularName);\n\n //Load the related entity from the database, using the repository of the related entity\n //const entityTarget = this.getRelatedEntityTarget(classify(this.options.relationCoModelSingularName));\n if (isNotEmpty(fieldId)) {\n dto[this.options.fieldName] = await this.options.entityManager.getRepository(coModelEntityName).findOneBy({ id: fieldId });\n if (this.options.required && isEmpty(dto[this.options.fieldName])) {\n throw new Error(`ManyToOneRelationFieldCrudManager: Record with id: ${fieldId} not found in ${this.options.relationCoModelSingularName}`);\n }\n }\n else {\n dto[this.options.fieldName] = await this.options.entityManager.getRepository(coModelEntityName).findOneBy({ [this.options.relationCoModelUserKeyFieldName]: fieldUserKeyValue });\n if (this.options.required && isEmpty(dto[this.options.fieldName])) {\n throw new Error(`ManyToOneRelationFieldCrudManager: Record with userKey: ${this.options.relationCoModelUserKeyFieldName}: ${fieldUserKeyValue} not found in ${this.options.relationCoModelSingularName}`);\n }\n }\n\n\n return dto;\n }\n\n private isApplyRequiredValidation(): boolean {\n return this.options.required;\n }\n\n // Returns the entity target class from the entity name\n // private getRelatedEntityTarget(relatedEntityName: string): any {\n // const entityMetadatas = this.options.entityManager.connection.entityMetadatas;\n // const relatedEntityMetadata = entityMetadatas.find(em => em.name === relatedEntityName);\n // return relatedEntityMetadata.target;\n // }\n\n}"]}
1
+ {"version":3,"file":"ManyToOneRelationFieldCrudManager.js","sourceRoot":"","sources":["../../../src/helpers/field-crud-managers/ManyToOneRelationFieldCrudManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { classify } from \"@angular-devkit/core/src/utils/strings\";\nimport { BadRequestException } from \"@nestjs/common\";\nimport { isEmpty, isNotEmpty, isString } from \"class-validator\";\nimport { FieldCrudManager, ValidationError } from \"src/interfaces\";\nimport { IsParsableInt } from \"src/validators/is-parsable-int\";\nimport { EntityManager } from \"typeorm\";\n\nexport interface ManyToOneRelationFieldOptions {\n // Add options for relation field\n required: boolean | undefined | null;\n relationCoModelSingularName: string | undefined | null;\n fieldName: string | undefined | null;\n // modelUserKeyFieldName: string | undefined | null;\n modelSingularName: string | undefined | null;\n entityManager: EntityManager;\n relationCoModelUserKeyFieldName: string | undefined | null; \n}\n\n// This implementation is meant to be used for many-to-one relation field\nexport class ManyToOneRelationFieldCrudManager implements FieldCrudManager {\n private idFieldName: string;\n private userKeyFieldName: string;\n constructor(private readonly options: ManyToOneRelationFieldOptions) {\n // this.options = options;\n this.idFieldName = `${options.fieldName}Id`;\n this.userKeyFieldName = `${options.fieldName}UserKey`;\n }\n validate(dto: any) {\n const fieldId: number = dto[this.idFieldName];\n const fieldUserKey: string = dto[this.userKeyFieldName];\n return this.applyValidations(fieldId, fieldUserKey);\n }\n\n private applyValidations(fieldId: any, fieldUserKey: string): ValidationError[] {\n const errors: ValidationError[] = [];\n this.isApplyRequiredValidation() && isEmpty(fieldId) && isEmpty(fieldUserKey) ? errors.push({ field: this.options.fieldName, error: `Field: ${this.options.fieldName} is required. Either pass ${this.idFieldName} or ${this.userKeyFieldName}.` }) : \"no errors\";\n if (isNotEmpty(fieldId)) {\n errors.push(...this.applyIdFormatValidations(fieldId));\n }\n if (isNotEmpty(fieldUserKey)) {\n errors.push(...this.applyUserKeyFormatValidations(fieldUserKey));\n }\n return errors;\n }\n\n private applyIdFormatValidations(fieldId: any): ValidationError[] { //FIXME fieldId is any because it can be string or number. Keeping it any for compatibility with isParsableInt. \n const errors: ValidationError[] = [];\n !IsParsableInt(fieldId) ? errors.push({ field: this.options.fieldName, error: 'Field is not a integer' }) : \"no errors\";\n return errors;\n }\n\n private applyUserKeyFormatValidations(fieldUserKey: string): ValidationError[] {\n const errors: ValidationError[] = [];\n !isString(fieldUserKey) ? errors.push({ field: this.options.fieldName, error: 'Field is not a string' }) : \"no errors\";\n if (isEmpty(this.options.relationCoModelUserKeyFieldName)) {\n errors.push({ field: this.options.fieldName, error: `UserKey field name is not defined in the model ${this.options.relationCoModelSingularName}` });\n }\n return errors;\n }\n\n async transformForCreate(dto: any): Promise<any> {\n const fieldId: number = dto[this.idFieldName];\n const fieldUserKeyValue: string = dto[this.userKeyFieldName];\n\n // Avoid transforming if both fieldId and fieldUserKey is empty\n if ((isEmpty(fieldId)) && isEmpty(fieldUserKeyValue)) return dto;\n\n if (!this.options.relationCoModelSingularName) {\n throw new BadRequestException(`ManyToOneRelationFieldCrudManager: relationCoModelSingularName is not defined in the field: ${this.options.fieldName}`);\n }\n // // Load the related entity from the database, using the repository of the related entity\n //const entityTarget = this.getRelatedEntityTarget(classify(this.options.relationCoModelSingularName));\n const coModelEntityName = classify(this.options.relationCoModelSingularName);\n\n //Load the related entity from the database, using the repository of the related entity\n //const entityTarget = this.getRelatedEntityTarget(classify(this.options.relationCoModelSingularName));\n if (isNotEmpty(fieldId)) {\n dto[this.options.fieldName] = await this.options.entityManager.getRepository(coModelEntityName).findOneBy({ id: fieldId });\n if (this.options.required && isEmpty(dto[this.options.fieldName])) {\n throw new Error(`Field ${this.options.fieldName} resolution failed. Record with id: ${fieldId} not found in ${this.options.relationCoModelSingularName}`);\n }\n }\n else {\n dto[this.options.fieldName] = await this.options.entityManager.getRepository(coModelEntityName).findOneBy({ [this.options.relationCoModelUserKeyFieldName]: fieldUserKeyValue });\n if (this.options.required && isEmpty(dto[this.options.fieldName])) {\n throw new Error(`Field ${this.options.fieldName} resolution failed. Record with userKey: ${this.options.relationCoModelUserKeyFieldName}: ${fieldUserKeyValue} not found in ${this.options.relationCoModelSingularName}`);\n }\n }\n\n\n return dto;\n }\n\n private isApplyRequiredValidation(): boolean {\n return this.options.required;\n }\n\n // Returns the entity target class from the entity name\n // private getRelatedEntityTarget(relatedEntityName: string): any {\n // const entityMetadatas = this.options.entityManager.connection.entityMetadatas;\n // const relatedEntityMetadata = entityMetadatas.find(em => em.name === relatedEntityName);\n // return relatedEntityMetadata.target;\n // }\n\n}"]}
@@ -1,4 +1,8 @@
1
- import { ConfigType } from "@nestjs/config";
2
- import { iamConfig } from "src/config/iam.config";
3
- export declare function isGoogleOAuthConfigured(iamConfiguration: ConfigType<typeof iamConfig>): boolean;
1
+ export type GoogleAuthConfiguration = {
2
+ clientID: String;
3
+ clientSecret: String;
4
+ callbackURL: String;
5
+ redirectURL: String;
6
+ };
7
+ export declare function isGoogleOAuthConfigured(googleOauthConfig: GoogleAuthConfiguration): boolean;
4
8
  //# sourceMappingURL=google-oauth.helper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"google-oauth.helper.d.ts","sourceRoot":"","sources":["../../src/helpers/google-oauth.helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,wBAAgB,uBAAuB,CAAC,gBAAgB,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,GAAG,OAAO,CAK7F"}
1
+ {"version":3,"file":"google-oauth.helper.d.ts","sourceRoot":"","sources":["../../src/helpers/google-oauth.helper.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,wBAAgB,uBAAuB,CAAC,iBAAiB,EAAE,uBAAuB,GAAG,OAAO,CAI3F"}
@@ -1,8 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isGoogleOAuthConfigured = isGoogleOAuthConfigured;
4
- function isGoogleOAuthConfigured(iamConfiguration) {
5
- const googleOauthConfig = iamConfiguration.googleOauth;
4
+ function isGoogleOAuthConfigured(googleOauthConfig) {
6
5
  return !!googleOauthConfig.clientID
7
6
  && !!googleOauthConfig.clientSecret && !!googleOauthConfig.callbackURL && !!googleOauthConfig.redirectURL;
8
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"google-oauth.helper.js","sourceRoot":"","sources":["../../src/helpers/google-oauth.helper.ts"],"names":[],"mappings":";;AAGA,0DAKG;AALH,SAAgB,uBAAuB,CAAC,gBAA8C;IAClF,MAAM,iBAAiB,GAAG,gBAAgB,CAAC,WAAW,CAAC;IAEvD,OAAO,CAAC,CAAC,iBAAiB,CAAC,QAAQ;WAChC,CAAC,CAAC,iBAAiB,CAAC,YAAY,IAAI,CAAC,CAAC,iBAAiB,CAAC,WAAW,IAAI,CAAC,CAAC,iBAAiB,CAAC,WAAW,CAAC;AAC5G,CAAC","sourcesContent":["import { ConfigType } from \"@nestjs/config\";\nimport { iamConfig } from \"src/config/iam.config\";\n\nexport function isGoogleOAuthConfigured(iamConfiguration: ConfigType<typeof iamConfig>): boolean {\n const googleOauthConfig = iamConfiguration.googleOauth;\n \n return !!googleOauthConfig.clientID \n && !!googleOauthConfig.clientSecret && !!googleOauthConfig.callbackURL && !!googleOauthConfig.redirectURL;\n }\n"]}
1
+ {"version":3,"file":"google-oauth.helper.js","sourceRoot":"","sources":["../../src/helpers/google-oauth.helper.ts"],"names":[],"mappings":";;AAQA,0DAIC;AAJD,SAAgB,uBAAuB,CAAC,iBAA0C;IAEhF,OAAO,CAAC,CAAC,iBAAiB,CAAC,QAAQ;WAC9B,CAAC,CAAC,iBAAiB,CAAC,YAAY,IAAI,CAAC,CAAC,iBAAiB,CAAC,WAAW,IAAI,CAAC,CAAC,iBAAiB,CAAC,WAAW,CAAC;AAC9G,CAAC","sourcesContent":["\nexport type GoogleAuthConfiguration = {\n clientID: String,\n clientSecret: String,\n callbackURL: String,\n redirectURL: String\n}\n\nexport function isGoogleOAuthConfigured(googleOauthConfig: GoogleAuthConfiguration): boolean {\n\n return !!googleOauthConfig.clientID\n && !!googleOauthConfig.clientSecret && !!googleOauthConfig.callbackURL && !!googleOauthConfig.redirectURL;\n}\n"]}
@@ -54,7 +54,6 @@ const getDynamicModuleNames = () => {
54
54
  return files.length > 0;
55
55
  })
56
56
  .map(dirent => dirent.name);
57
- console.log(`Dynamic Modules Are:`, enabledModules);
58
57
  return enabledModules;
59
58
  };
60
59
  exports.getDynamicModuleNames = getDynamicModuleNames;
@@ -78,7 +77,6 @@ const getDynamicModuleNamesBasedOnMetadata = () => {
78
77
  return !!stats && stats.isFile();
79
78
  })
80
79
  .map(dirent => dirent.name);
81
- console.log(`Src Based Dynamic Modules Are:`, enabledModules);
82
80
  return enabledModules;
83
81
  };
84
82
  exports.getDynamicModuleNamesBasedOnMetadata = getDynamicModuleNamesBasedOnMetadata;
@@ -1 +1 @@
1
- {"version":3,"file":"module.helper.js","sourceRoot":"","sources":["../../src/helpers/module.helper.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from '@nestjs/common';\nimport * as fs from 'fs'; // Use the Promise-based version of fs for async/await\nimport * as path from 'path'; // To handle file paths\n\nconst logger = new Logger('module.helper');\n\nexport const getDynamicModuleNames = (): string[] => {\n const dynamicModulesToExclude = process.env.SOLID_DYNAMIC_MODULES_TO_EXCLUDE?.split(',') || [];\n\n // Adjust if 'src' is in a different location\n const srcPath = path.join(process.cwd(), 'src');\n const coreModuleNames = getCoreModuleNames();\n const allExcludedModules = [...new Set([...coreModuleNames, ...dynamicModulesToExclude])];\n\n const directories = fs.readdirSync(srcPath, { withFileTypes: true });\n // const enabledModules = directories\n // .filter(d => d.isDirectory() && !allExcludedModules.includes(d.name))\n // .map(d => d.name);\n\n const enabledModules = directories\n .filter(dirent => {\n const isValidDirectory = dirent.isDirectory() && !allExcludedModules.includes(dirent.name);\n\n if (!isValidDirectory) return false;\n\n // return true\n const fullPath = path.join(srcPath, dirent.name);\n const files = fs.readdirSync(fullPath);\n // skip if empty directory\n return files.length > 0;\n })\n .map(dirent => dirent.name);\n\n // logger.debug(`Enabled dynamic modules:`, enabledModules);\n console.log(`Dynamic Modules Are:`, enabledModules);\n\n return enabledModules;\n}\n\nexport const getDynamicModuleNamesBasedOnMetadata = (): string[] => {\n const dynamicModulesToExclude = process.env.SOLID_DYNAMIC_MODULES_TO_EXCLUDE?.split(',') || [];\n\n // Find a path that is ../${srcPath}/module-metadata save it in a variable.\n // const srcPath = path.join(process.cwd(), 'src');\n const moduleMetadataPath = path.join(process.cwd(), 'module-metadata');\n const coreModuleNames = getCoreModuleNames();\n const allExcludedModules = [...new Set([...coreModuleNames, ...dynamicModulesToExclude])];\n\n // if module-metadata path does not exist, return empty array\n if (!fs.existsSync(moduleMetadataPath)) {\n logger.warn(`Module metadata path does not exist: ${moduleMetadataPath}`);\n return [];\n }\n\n const moduleMetadataDirectories = fs.readdirSync(moduleMetadataPath, { withFileTypes: true });\n const enabledModules = moduleMetadataDirectories\n .filter(dirent => {\n const isValidDirectory = dirent.isDirectory() && !allExcludedModules.includes(dirent.name);\n\n if (!isValidDirectory) return false;\n\n const fullPath = path.join(moduleMetadataPath, dirent.name, `${dirent.name}-metadata.json`);\n\n const stats = fs.statSync(fullPath, { throwIfNoEntry: false });\n return !!stats && stats.isFile();\n })\n .map(dirent => dirent.name);\n\n // logger.debug(`Enabled dynamic modules basis src:`, enabledModules);\n console.log(`Src Based Dynamic Modules Are:`, enabledModules);\n return enabledModules;\n}\n\nexport const getCoreModuleNames = (): string[] => {\n // return ['iam', 'common', 'queues', 'app-builder'];\n return ['solid-core'];\n}"]}
1
+ {"version":3,"file":"module.helper.js","sourceRoot":"","sources":["../../src/helpers/module.helper.ts"],"names":[],"mappings":"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","sourcesContent":["import { Logger } from '@nestjs/common';\nimport * as fs from 'fs'; // Use the Promise-based version of fs for async/await\nimport * as path from 'path'; // To handle file paths\n\nconst logger = new Logger('module.helper');\n\nexport const getDynamicModuleNames = (): string[] => {\n const dynamicModulesToExclude = process.env.SOLID_DYNAMIC_MODULES_TO_EXCLUDE?.split(',') || [];\n\n // Adjust if 'src' is in a different location\n const srcPath = path.join(process.cwd(), 'src');\n const coreModuleNames = getCoreModuleNames();\n const allExcludedModules = [...new Set([...coreModuleNames, ...dynamicModulesToExclude])];\n\n const directories = fs.readdirSync(srcPath, { withFileTypes: true });\n // const enabledModules = directories\n // .filter(d => d.isDirectory() && !allExcludedModules.includes(d.name))\n // .map(d => d.name);\n\n const enabledModules = directories\n .filter(dirent => {\n const isValidDirectory = dirent.isDirectory() && !allExcludedModules.includes(dirent.name);\n\n if (!isValidDirectory) return false;\n\n // return true\n const fullPath = path.join(srcPath, dirent.name);\n const files = fs.readdirSync(fullPath);\n // skip if empty directory\n return files.length > 0;\n })\n .map(dirent => dirent.name);\n\n // logger.debug(`Enabled dynamic modules:`, enabledModules);\n // console.log(`Dynamic Modules Are:`, enabledModules);\n\n return enabledModules;\n}\n\nexport const getDynamicModuleNamesBasedOnMetadata = (): string[] => {\n const dynamicModulesToExclude = process.env.SOLID_DYNAMIC_MODULES_TO_EXCLUDE?.split(',') || [];\n\n // Find a path that is ../${srcPath}/module-metadata save it in a variable.\n // const srcPath = path.join(process.cwd(), 'src');\n const moduleMetadataPath = path.join(process.cwd(), 'module-metadata');\n const coreModuleNames = getCoreModuleNames();\n const allExcludedModules = [...new Set([...coreModuleNames, ...dynamicModulesToExclude])];\n\n // if module-metadata path does not exist, return empty array\n if (!fs.existsSync(moduleMetadataPath)) {\n logger.warn(`Module metadata path does not exist: ${moduleMetadataPath}`);\n return [];\n }\n\n const moduleMetadataDirectories = fs.readdirSync(moduleMetadataPath, { withFileTypes: true });\n const enabledModules = moduleMetadataDirectories\n .filter(dirent => {\n const isValidDirectory = dirent.isDirectory() && !allExcludedModules.includes(dirent.name);\n\n if (!isValidDirectory) return false;\n\n const fullPath = path.join(moduleMetadataPath, dirent.name, `${dirent.name}-metadata.json`);\n\n const stats = fs.statSync(fullPath, { throwIfNoEntry: false });\n return !!stats && stats.isFile();\n })\n .map(dirent => dirent.name);\n\n // logger.debug(`Enabled dynamic modules basis src:`, enabledModules);\n // console.log(`Src Based Dynamic Modules Are:`, enabledModules);\n return enabledModules;\n}\n\nexport const getCoreModuleNames = (): string[] => {\n // return ['iam', 'common', 'queues', 'app-builder'];\n return ['solid-core'];\n}"]}
@@ -27,11 +27,12 @@ export declare class SchematicService {
27
27
  private readonly solidRegistry;
28
28
  private readonly logger;
29
29
  private readonly SCHEMATIC_PROJECT;
30
+ private readonly SCHEMATICS_COMMAND;
30
31
  constructor(commandService: CommandService, solidRegistry: SolidRegistry);
31
32
  executeSchematicCommand(command: string, options: GenerateModuleOptions | ModelAndFieldGenerationOptions, debug?: boolean): Promise<string>;
32
33
  private generateSchematicCommand;
33
- private buildFieldGenerationCommand;
34
- private buildModelGenerationCommand;
34
+ private buildFieldGenerationArgs;
35
+ private buildModelGenerationArgs;
35
36
  }
36
37
  export {};
37
38
  //# sourceMappingURL=schematic.service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schematic.service.d.ts","sourceRoot":"","sources":["../../src/helpers/schematic.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAC/C,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAGF,KAAK,8BAA8B,GAAG;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB,CAAC;AACF,eAAO,MAAM,qBAAqB,kBAAkB,CAAC;AACrD,eAAO,MAAM,qBAAqB,kBAAkB,CAAC;AAGrD,qBACa,gBAAgB;IAGf,OAAO,CAAC,QAAQ,CAAC,cAAc;IAAkB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAF3F,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAC5D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAuC;gBAC5C,cAAc,EAAE,cAAc,EAAmB,aAAa,EAAE,aAAa;IAEpG,uBAAuB,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,qBAAqB,GAAG,8BAA8B,EAC/D,KAAK,UAAQ,GACZ,OAAO,CAAC,MAAM,CAAC;IAMlB,OAAO,CAAC,wBAAwB;IA0BhC,OAAO,CAAC,2BAA2B;IAWnC,OAAO,CAAC,2BAA2B;CA6CpC"}
1
+ {"version":3,"file":"schematic.service.d.ts","sourceRoot":"","sources":["../../src/helpers/schematic.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,cAAc,EAAmB,MAAM,mBAAmB,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAC/C,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAGF,KAAK,8BAA8B,GAAG;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,aAAa,EAAE,CAAC;CACzB,CAAC;AACF,eAAO,MAAM,qBAAqB,kBAAkB,CAAC;AACrD,eAAO,MAAM,qBAAqB,kBAAkB,CAAC;AAGrD,qBACa,gBAAgB;IAKf,OAAO,CAAC,QAAQ,CAAC,cAAc;IAAkB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAJ3F,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAC5D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAuC;IACzE,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAgB;gBAEtB,cAAc,EAAE,cAAc,EAAmB,aAAa,EAAE,aAAa;IAEpG,uBAAuB,CAC3B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,qBAAqB,GAAG,8BAA8B,EAC/D,KAAK,UAAQ,GACZ,OAAO,CAAC,MAAM,CAAC;IAKlB,OAAO,CAAC,wBAAwB;IA4BhC,OAAO,CAAC,wBAAwB;IAWhC,OAAO,CAAC,wBAAwB;CAgDjC"}
@@ -24,74 +24,79 @@ let SchematicService = SchematicService_1 = class SchematicService {
24
24
  this.solidRegistry = solidRegistry;
25
25
  this.logger = new common_1.Logger(SchematicService_1.name);
26
26
  this.SCHEMATIC_PROJECT = '@solidstarters/solid-code-builder';
27
+ this.SCHEMATICS_COMMAND = 'schematics';
27
28
  }
28
29
  async executeSchematicCommand(command, options, debug = false) {
29
- return await this.commandService.executeCommand(this.generateSchematicCommand(command, options, debug));
30
+ const commandWithArgs = this.generateSchematicCommand(command, options, debug);
31
+ return await this.commandService.executeCommandWithArgs(commandWithArgs);
30
32
  }
31
33
  generateSchematicCommand(command, options, debug) {
32
- const baseCommand = `schematics ${this.SCHEMATIC_PROJECT}:${command} --debug=${debug}`;
34
+ const schematicName = `${this.SCHEMATIC_PROJECT}:${command}`;
35
+ const baseArgs = [schematicName, `--debug=${debug}`];
33
36
  if (command === exports.REMOVE_FIELDS_COMMAND ||
34
37
  command === exports.REFRESH_MODEL_COMMAND) {
35
38
  const { fields, ...modelSpecificOptions } = options;
36
- const modelCommand = this.buildModelGenerationCommand(baseCommand, modelSpecificOptions);
37
- const fieldCommand = this.buildFieldGenerationCommand(fields);
38
- const schematicCommand = modelCommand + ' ' + fieldCommand;
39
- this.logger.debug('schematicCommand', schematicCommand);
40
- return schematicCommand;
39
+ const modelArgs = this.buildModelGenerationArgs(modelSpecificOptions);
40
+ const fieldArgs = this.buildFieldGenerationArgs(fields);
41
+ const args = [...baseArgs, ...modelArgs, ...fieldArgs];
42
+ this.logger.debug('schematicCommand args', args);
43
+ return { command: this.SCHEMATICS_COMMAND, args };
41
44
  }
42
45
  else if (command === exports.ADD_MODULE_COMMAND) {
43
46
  const moduleOptions = options;
44
- const schematicCommand = ` ${baseCommand} --module=${moduleOptions.module}`;
45
- this.logger.debug('schematicCommand', schematicCommand);
46
- return schematicCommand;
47
+ const args = [...baseArgs, `--module=${moduleOptions.module}`];
48
+ this.logger.debug('schematicCommand args', args);
49
+ return { command: this.SCHEMATICS_COMMAND, args };
47
50
  }
48
51
  else {
49
52
  throw new Error('Schematic command not supported.');
50
53
  }
51
54
  }
52
- buildFieldGenerationCommand(fields) {
55
+ buildFieldGenerationArgs(fields) {
53
56
  return fields
54
57
  .filter((field) => {
55
58
  return !this.solidRegistry.getCommonEntityKeys().map(key => key.toString()).includes(field.name);
56
59
  })
57
60
  .map((field) => {
58
- return `--fields='${JSON.stringify(field).replace(/'/g, "\\'")}'`;
59
- })
60
- .join(' ');
61
+ return `--fields=${JSON.stringify(field)}`;
62
+ });
61
63
  }
62
- buildModelGenerationCommand(baseCommand, modelSpecificOptions) {
63
- let modelCommand = `${baseCommand} --module=${modelSpecificOptions.module} --model=${modelSpecificOptions.model}`;
64
+ buildModelGenerationArgs(modelSpecificOptions) {
65
+ const args = [
66
+ `--module=${modelSpecificOptions.module}`,
67
+ `--model=${modelSpecificOptions.model}`,
68
+ ];
64
69
  if (modelSpecificOptions.moduleDisplayName) {
65
- modelCommand += ` --module-display-name=${(0, lodash_1.snakeCase)(modelSpecificOptions.moduleDisplayName)}`;
70
+ args.push(`--module-display-name=${(0, lodash_1.snakeCase)(modelSpecificOptions.moduleDisplayName)}`);
66
71
  }
67
72
  if (modelSpecificOptions.table) {
68
- modelCommand += ` --table=${modelSpecificOptions.table}`;
73
+ args.push(`--table=${modelSpecificOptions.table}`);
69
74
  }
70
75
  if (modelSpecificOptions.dataSource) {
71
- modelCommand += ` --data-source=${modelSpecificOptions.dataSource}`;
76
+ args.push(`--data-source=${modelSpecificOptions.dataSource}`);
72
77
  }
73
78
  if (modelSpecificOptions.modelEnableSoftDelete) {
74
- modelCommand += ` --model-enable-soft-delete=${modelSpecificOptions.modelEnableSoftDelete}`;
79
+ args.push(`--model-enable-soft-delete=${modelSpecificOptions.modelEnableSoftDelete}`);
75
80
  }
76
81
  if (modelSpecificOptions.parentModel) {
77
- modelCommand += ` --parent-model=${modelSpecificOptions.parentModel}`;
82
+ args.push(`--parent-model=${modelSpecificOptions.parentModel}`);
78
83
  }
79
84
  if (modelSpecificOptions.parentModule) {
80
- modelCommand += ` --parent-module=${modelSpecificOptions.parentModule}`;
85
+ args.push(`--parent-module=${modelSpecificOptions.parentModule}`);
81
86
  }
82
87
  if (modelSpecificOptions.draftPublishWorkflowEnabled) {
83
- modelCommand += ` --draft-publish-workflow-enabled=${modelSpecificOptions.draftPublishWorkflowEnabled}`;
88
+ args.push(`--draft-publish-workflow-enabled=${modelSpecificOptions.draftPublishWorkflowEnabled}`);
84
89
  }
85
90
  if (modelSpecificOptions.isLegacyTable) {
86
- modelCommand += ` --is-legacy-table=${modelSpecificOptions.isLegacyTable}`;
91
+ args.push(`--is-legacy-table=${modelSpecificOptions.isLegacyTable}`);
87
92
  }
88
93
  if (modelSpecificOptions.isLegacyTableWithId) {
89
- modelCommand += ` --is-legacy-table-with-id=${modelSpecificOptions.isLegacyTableWithId}`;
94
+ args.push(`--is-legacy-table-with-id=${modelSpecificOptions.isLegacyTableWithId}`);
90
95
  }
91
96
  if (modelSpecificOptions.dataSourceType) {
92
- modelCommand += ` --data-source-type=${modelSpecificOptions.dataSourceType}`;
97
+ args.push(`--data-source-type=${modelSpecificOptions.dataSourceType}`);
93
98
  }
94
- return modelCommand;
99
+ return args;
95
100
  }
96
101
  };
97
102
  exports.SchematicService = SchematicService;