@solidxai/core 0.1.13-beta.7 → 0.1.13-beta.8

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 (257) hide show
  1. package/.claude/settings.local.json +16 -0
  2. package/CHANGELOG.md +548 -0
  3. package/CLAUDE.md +26 -0
  4. package/dist/constants/draft-publish-fields.d.ts +2 -0
  5. package/dist/constants/draft-publish-fields.d.ts.map +1 -0
  6. package/dist/constants/draft-publish-fields.js +5 -0
  7. package/dist/constants/draft-publish-fields.js.map +1 -0
  8. package/dist/constants/media-file-types.d.ts +9 -0
  9. package/dist/constants/media-file-types.d.ts.map +1 -1
  10. package/dist/constants/media-file-types.js +27 -1
  11. package/dist/constants/media-file-types.js.map +1 -1
  12. package/dist/controllers/action-metadata.controller.d.ts +1 -1
  13. package/dist/controllers/action-metadata.controller.js +1 -1
  14. package/dist/controllers/agent-event.controller.d.ts +1 -1
  15. package/dist/controllers/agent-event.controller.js +1 -1
  16. package/dist/controllers/agent-session.controller.d.ts +1 -1
  17. package/dist/controllers/agent-session.controller.js +1 -1
  18. package/dist/controllers/dashboard-user-layout.controller.d.ts +1 -1
  19. package/dist/controllers/dashboard-user-layout.controller.js +1 -1
  20. package/dist/controllers/email-template.controller.d.ts +1 -1
  21. package/dist/controllers/email-template.controller.js +1 -1
  22. package/dist/controllers/export-template.controller.d.ts +1 -1
  23. package/dist/controllers/export-template.controller.d.ts.map +1 -1
  24. package/dist/controllers/export-template.controller.js +6 -4
  25. package/dist/controllers/export-template.controller.js.map +1 -1
  26. package/dist/controllers/export-transaction.controller.d.ts +1 -1
  27. package/dist/controllers/export-transaction.controller.js +1 -1
  28. package/dist/controllers/import-transaction-error-log.controller.d.ts +1 -1
  29. package/dist/controllers/import-transaction-error-log.controller.js +1 -1
  30. package/dist/controllers/import-transaction.controller.d.ts +1 -1
  31. package/dist/controllers/import-transaction.controller.d.ts.map +1 -1
  32. package/dist/controllers/import-transaction.controller.js +7 -7
  33. package/dist/controllers/import-transaction.controller.js.map +1 -1
  34. package/dist/controllers/list-of-values.controller.d.ts +1 -1
  35. package/dist/controllers/list-of-values.controller.js +1 -1
  36. package/dist/controllers/locale.controller.d.ts +1 -1
  37. package/dist/controllers/locale.controller.js +1 -1
  38. package/dist/controllers/mcp-audit-log.controller.d.ts +1 -1
  39. package/dist/controllers/mcp-audit-log.controller.js +1 -1
  40. package/dist/controllers/media.controller.d.ts +1 -1
  41. package/dist/controllers/media.controller.d.ts.map +1 -1
  42. package/dist/controllers/media.controller.js +12 -7
  43. package/dist/controllers/media.controller.js.map +1 -1
  44. package/dist/controllers/menu-item-metadata.controller.d.ts +1 -1
  45. package/dist/controllers/menu-item-metadata.controller.js +1 -1
  46. package/dist/controllers/model-sequence.controller.d.ts +1 -1
  47. package/dist/controllers/model-sequence.controller.js +1 -1
  48. package/dist/controllers/module-package.controller.d.ts.map +1 -1
  49. package/dist/controllers/module-package.controller.js +2 -3
  50. package/dist/controllers/module-package.controller.js.map +1 -1
  51. package/dist/controllers/mq-message-queue.controller.d.ts +1 -1
  52. package/dist/controllers/mq-message-queue.controller.js +1 -1
  53. package/dist/controllers/mq-message.controller.d.ts +1 -1
  54. package/dist/controllers/mq-message.controller.js +1 -1
  55. package/dist/controllers/permission-metadata.controller.d.ts +1 -1
  56. package/dist/controllers/permission-metadata.controller.js +1 -1
  57. package/dist/controllers/role-metadata.controller.d.ts +1 -1
  58. package/dist/controllers/role-metadata.controller.js +1 -1
  59. package/dist/controllers/saved-filters.controller.d.ts +1 -1
  60. package/dist/controllers/saved-filters.controller.js +1 -1
  61. package/dist/controllers/scheduled-job.controller.d.ts +1 -1
  62. package/dist/controllers/scheduled-job.controller.js +1 -1
  63. package/dist/controllers/security-rule.controller.d.ts +1 -1
  64. package/dist/controllers/security-rule.controller.js +1 -1
  65. package/dist/controllers/sms-template.controller.d.ts +1 -1
  66. package/dist/controllers/sms-template.controller.js +1 -1
  67. package/dist/controllers/user-activity-history.controller.d.ts +1 -1
  68. package/dist/controllers/user-activity-history.controller.js +1 -1
  69. package/dist/controllers/user-view-metadata.controller.d.ts +1 -1
  70. package/dist/controllers/user-view-metadata.controller.js +1 -1
  71. package/dist/controllers/user.controller.d.ts +2 -2
  72. package/dist/controllers/user.controller.js +2 -2
  73. package/dist/controllers/view-metadata.controller.d.ts +2 -2
  74. package/dist/controllers/view-metadata.controller.js +1 -1
  75. package/dist/controllers/workflow-definition.controller.d.ts +1 -1
  76. package/dist/controllers/workflow-definition.controller.js +1 -1
  77. package/dist/controllers/workflow-execution-artifact.controller.d.ts +1 -1
  78. package/dist/controllers/workflow-execution-artifact.controller.js +1 -1
  79. package/dist/controllers/workflow-execution-log.controller.d.ts +1 -1
  80. package/dist/controllers/workflow-execution-log.controller.js +1 -1
  81. package/dist/controllers/workflow-execution.controller.d.ts +1 -1
  82. package/dist/controllers/workflow-execution.controller.js +1 -1
  83. package/dist/controllers/workflow-secret.controller.d.ts +1 -1
  84. package/dist/controllers/workflow-secret.controller.js +1 -1
  85. package/dist/controllers/workflow-step-execution.controller.d.ts +1 -1
  86. package/dist/controllers/workflow-step-execution.controller.js +1 -1
  87. package/dist/controllers/workflow-trigger-execution.controller.d.ts +1 -1
  88. package/dist/controllers/workflow-trigger-execution.controller.js +1 -1
  89. package/dist/dtos/basic-filters.dto.d.ts +0 -1
  90. package/dist/dtos/basic-filters.dto.d.ts.map +1 -1
  91. package/dist/dtos/basic-filters.dto.js +1 -6
  92. package/dist/dtos/basic-filters.dto.js.map +1 -1
  93. package/dist/entities/common.entity.d.ts +4 -0
  94. package/dist/entities/common.entity.d.ts.map +1 -1
  95. package/dist/entities/common.entity.js +25 -1
  96. package/dist/entities/common.entity.js.map +1 -1
  97. package/dist/entities/user.entity.js +2 -2
  98. package/dist/entities/user.entity.js.map +1 -1
  99. package/dist/factories/mail.factory.d.ts.map +1 -1
  100. package/dist/factories/mail.factory.js +4 -0
  101. package/dist/factories/mail.factory.js.map +1 -1
  102. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.d.ts +1 -0
  103. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.d.ts.map +1 -1
  104. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.js +18 -11
  105. package/dist/helpers/field-crud-managers/MediaFieldCrudManager.js.map +1 -1
  106. package/dist/helpers/file-download.helper.d.ts +9 -0
  107. package/dist/helpers/file-download.helper.d.ts.map +1 -0
  108. package/dist/helpers/file-download.helper.js +14 -0
  109. package/dist/helpers/file-download.helper.js.map +1 -0
  110. package/dist/helpers/model-metadata-helper.service.d.ts.map +1 -1
  111. package/dist/helpers/model-metadata-helper.service.js +30 -1
  112. package/dist/helpers/model-metadata-helper.service.js.map +1 -1
  113. package/dist/helpers/solid-registry.js +1 -1
  114. package/dist/helpers/solid-registry.js.map +1 -1
  115. package/dist/index.d.ts +2 -0
  116. package/dist/index.d.ts.map +1 -1
  117. package/dist/index.js +2 -0
  118. package/dist/index.js.map +1 -1
  119. package/dist/seeders/module-test-data.service.d.ts +3 -1
  120. package/dist/seeders/module-test-data.service.d.ts.map +1 -1
  121. package/dist/seeders/module-test-data.service.js +8 -2
  122. package/dist/seeders/module-test-data.service.js.map +1 -1
  123. package/dist/seeders/seed-data/solid-core-metadata.json +2 -0
  124. package/dist/services/authentication.service.d.ts +4 -1
  125. package/dist/services/authentication.service.d.ts.map +1 -1
  126. package/dist/services/authentication.service.js +52 -4
  127. package/dist/services/authentication.service.js.map +1 -1
  128. package/dist/services/chatter-message.service.d.ts +1 -0
  129. package/dist/services/chatter-message.service.d.ts.map +1 -1
  130. package/dist/services/chatter-message.service.js +8 -0
  131. package/dist/services/chatter-message.service.js.map +1 -1
  132. package/dist/services/crud-helper.service.d.ts +5 -2
  133. package/dist/services/crud-helper.service.d.ts.map +1 -1
  134. package/dist/services/crud-helper.service.js +30 -32
  135. package/dist/services/crud-helper.service.js.map +1 -1
  136. package/dist/services/crud.service.d.ts +11 -1
  137. package/dist/services/crud.service.d.ts.map +1 -1
  138. package/dist/services/crud.service.js +79 -66
  139. package/dist/services/crud.service.js.map +1 -1
  140. package/dist/services/datasource-introspection.service.d.ts.map +1 -1
  141. package/dist/services/datasource-introspection.service.js.map +1 -1
  142. package/dist/services/draft-publish-helper.service.d.ts +52 -0
  143. package/dist/services/draft-publish-helper.service.d.ts.map +1 -0
  144. package/dist/services/draft-publish-helper.service.js +368 -0
  145. package/dist/services/draft-publish-helper.service.js.map +1 -0
  146. package/dist/services/internationalisation-helper.service.d.ts +19 -0
  147. package/dist/services/internationalisation-helper.service.d.ts.map +1 -0
  148. package/dist/services/internationalisation-helper.service.js +107 -0
  149. package/dist/services/internationalisation-helper.service.js.map +1 -0
  150. package/dist/services/locale.service.d.ts +1 -1
  151. package/dist/services/media.service.d.ts +2 -1
  152. package/dist/services/media.service.d.ts.map +1 -1
  153. package/dist/services/media.service.js +28 -2
  154. package/dist/services/media.service.js.map +1 -1
  155. package/dist/services/metadata-validation.service.d.ts +7 -0
  156. package/dist/services/metadata-validation.service.d.ts.map +1 -0
  157. package/dist/services/metadata-validation.service.js +42 -0
  158. package/dist/services/metadata-validation.service.js.map +1 -0
  159. package/dist/services/model-metadata.service.d.ts.map +1 -1
  160. package/dist/services/model-metadata.service.js +2 -1
  161. package/dist/services/model-metadata.service.js.map +1 -1
  162. package/dist/services/object.utils.d.ts +2 -0
  163. package/dist/services/object.utils.d.ts.map +1 -0
  164. package/dist/services/object.utils.js +11 -0
  165. package/dist/services/object.utils.js.map +1 -0
  166. package/dist/services/settings/default-settings-provider.service.d.ts +6 -6
  167. package/dist/services/settings/default-settings-provider.service.js +3 -3
  168. package/dist/services/settings/default-settings-provider.service.js.map +1 -1
  169. package/dist/services/user.service.d.ts +2 -2
  170. package/dist/services/user.service.d.ts.map +1 -1
  171. package/dist/services/user.service.js +9 -3
  172. package/dist/services/user.service.js.map +1 -1
  173. package/dist/services/view-metadata.service.d.ts +1 -2
  174. package/dist/services/view-metadata.service.d.ts.map +1 -1
  175. package/dist/services/view-metadata.service.js +3 -55
  176. package/dist/services/view-metadata.service.js.map +1 -1
  177. package/dist/services/workflow-definition.service.d.ts +1 -1
  178. package/dist/solid-core.module.d.ts.map +1 -1
  179. package/dist/solid-core.module.js +10 -1
  180. package/dist/solid-core.module.js.map +1 -1
  181. package/package.json +1 -1
  182. package/src/constants/draft-publish-fields.ts +5 -0
  183. package/src/constants/media-file-types.ts +50 -0
  184. package/src/controllers/export-template.controller.ts +5 -3
  185. package/src/controllers/import-transaction.controller.ts +6 -6
  186. package/src/controllers/media.controller.ts +17 -6
  187. package/src/controllers/module-package.controller.ts +2 -3
  188. package/src/dtos/basic-filters.dto.ts +0 -4
  189. package/src/entities/common.entity.ts +20 -0
  190. package/src/entities/user.entity.ts +2 -2
  191. package/src/factories/mail.factory.ts +7 -1
  192. package/src/helpers/field-crud-managers/MediaFieldCrudManager.ts +26 -12
  193. package/src/helpers/file-download.helper.ts +31 -0
  194. package/src/helpers/model-metadata-helper.service.ts +32 -1
  195. package/src/helpers/solid-registry.ts +1 -1
  196. package/src/index.ts +2 -0
  197. package/src/seeders/module-test-data.service.ts +6 -0
  198. package/src/seeders/seed-data/solid-core-metadata.json +2 -0
  199. package/src/services/1.js +6 -0
  200. package/src/services/authentication.service.ts +76 -5
  201. package/src/services/chatter-message.service.ts +16 -0
  202. package/src/services/crud-helper.service.ts +16 -34
  203. package/src/services/crud.service.ts +98 -103
  204. package/src/services/datasource-introspection.service.ts +5 -0
  205. package/src/services/draft-publish-helper.service.ts +529 -0
  206. package/src/services/internationalisation-helper.service.ts +148 -0
  207. package/src/services/media.service.ts +48 -3
  208. package/src/services/metadata-validation.service.ts +39 -0
  209. package/src/services/model-metadata.service.ts +4 -1
  210. package/src/services/object.utils.ts +10 -0
  211. package/src/services/settings/default-settings-provider.service.ts +3 -3
  212. package/src/services/user.service.ts +18 -3
  213. package/src/services/view-metadata.service.ts +5 -145
  214. package/src/solid-core.module.ts +16 -3
  215. package/dist-tests/api/authenticate.spec.js +0 -119
  216. package/dist-tests/api/authenticate.spec.js.map +0 -1
  217. package/dist-tests/api/crud-service.findOne.cityMaster.spec.js +0 -97
  218. package/dist-tests/api/crud-service.findOne.cityMaster.spec.js.map +0 -1
  219. package/dist-tests/api/ping.spec.js +0 -21
  220. package/dist-tests/api/ping.spec.js.map +0 -1
  221. package/dist-tests/helpers/auth.js +0 -41
  222. package/dist-tests/helpers/auth.js.map +0 -1
  223. package/dist-tests/helpers/env.js +0 -11
  224. package/dist-tests/helpers/env.js.map +0 -1
  225. package/docs/agent-builder/notebook-lm-prompt-for-agent-builder.md +0 -136
  226. package/docs/agent-builder/team-ready-note-agent-builder.md +0 -305
  227. package/docs/agent-hub-grooming.md +0 -301
  228. package/docs/dashboards/AGENTIC_DASHBOARD_IMPLEMENTATION_PLAN.md +0 -438
  229. package/docs/dashboards/dashboard-curl-smoke-tests.txt +0 -146
  230. package/docs/dashboards/delete-legacy-dashboard-metadata.sql +0 -172
  231. package/docs/datasource-introspection-ddl-analysis.md +0 -326
  232. package/docs/datasource-introspection-implementation-plan.md +0 -306
  233. package/docs/grouping-enhancements.md +0 -89
  234. package/docs/java-spring/README.md +0 -3
  235. package/docs/java-spring/solid-core-module-deep-dive-report.md +0 -1317
  236. package/docs/module-package-import-handoff.md +0 -691
  237. package/docs/seed-changes.md +0 -65
  238. package/docs/test-data-workflow.md +0 -200
  239. package/docs/type-declaration-import-issue.md +0 -24
  240. package/docs/workflow/business-automation-example-notes.md +0 -309
  241. package/docs/workflow/control-flow-node-addition-sop.md +0 -324
  242. package/docs/workflow/data-engineering-pipeline-example-notes.md +0 -330
  243. package/docs/workflow/foreach-example-notes.md +0 -187
  244. package/docs/workflow/hello-world-example-notes.md +0 -271
  245. package/docs/workflow/kestra-concepts-plugins-blueprints.md +0 -315
  246. package/docs/workflow/loop-until-example-notes.md +0 -198
  247. package/docs/workflow/microservices-and-apis-example-notes.md +0 -264
  248. package/docs/workflow/samples.md +0 -25
  249. package/docs/workflow/what-is-kestra.md +0 -79
  250. package/docs/workflow/workflow-core-module-handoff-summary.md +0 -191
  251. package/docs/workflow/workflow-module-brd.md +0 -185
  252. package/docs/workflow/workflow-module-domain-model.md +0 -252
  253. package/docs/workflow/workflow-module-metadata-dsl.md +0 -302
  254. package/docs/workflow/workflow-module-technical-spec.md +0 -293
  255. package/docs/workflow/workflow-node-type-contracts.md +0 -635
  256. package/docs/workflow/workflow-node-ui-metadata-contract.md +0 -1262
  257. package/docs/workflow/workflow-solidx-model-field-spec.md +0 -284
@@ -1,6 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.INLINE_SAFE_EXTENSIONS = exports.EXT_TO_MEDIA_TYPE = exports.DANGEROUS_EXTENSIONS = void 0;
3
+ exports.INLINE_SAFE_EXTENSIONS = exports.EXT_TO_MEDIA_TYPE = exports.DANGEROUS_MIME_TYPES = exports.DANGEROUS_EXTENSIONS = void 0;
4
+ exports.getLowercaseFileExtension = getLowercaseFileExtension;
5
+ exports.getUploadedFileName = getUploadedFileName;
6
+ exports.isDangerousMediaFile = isDangerousMediaFile;
4
7
  const IMAGE_EXTENSIONS = ['png', 'jpg', 'jpeg', 'webp', 'gif', 'bmp', 'tiff', 'heic', 'heif'];
5
8
  const AUDIO_EXTENSIONS = ['mp3', 'wav', 'ogg', 'aac', 'm4a', 'flac', 'webm'];
6
9
  const VIDEO_EXTENSIONS = ['mp4', 'mov', 'avi', 'mkv', 'mpeg', 'mpg', '3gp', '3g2', 'webm', 'ogg'];
@@ -11,6 +14,29 @@ exports.DANGEROUS_EXTENSIONS = new Set([
11
14
  'js', 'mjs', 'php', 'phtml', 'jsp', 'asp', 'aspx',
12
15
  'exe', 'sh', 'bat', 'cmd', 'ps1', 'jar', 'dll',
13
16
  ]);
17
+ exports.DANGEROUS_MIME_TYPES = new Set([
18
+ 'image/svg+xml', 'text/html', 'application/xhtml+xml',
19
+ ]);
20
+ function getLowercaseFileExtension(fileName) {
21
+ if (!fileName) {
22
+ return undefined;
23
+ }
24
+ const lastDotIndex = fileName.lastIndexOf('.');
25
+ if (lastDotIndex < 0 || lastDotIndex === fileName.length - 1) {
26
+ return undefined;
27
+ }
28
+ return fileName.slice(lastDotIndex + 1).toLowerCase();
29
+ }
30
+ function getUploadedFileName(file) {
31
+ return file?.originalname ?? file?.filename ?? '';
32
+ }
33
+ function isDangerousMediaFile(file) {
34
+ const ext = getLowercaseFileExtension(getUploadedFileName(file));
35
+ if (ext && exports.DANGEROUS_EXTENSIONS.has(ext)) {
36
+ return true;
37
+ }
38
+ return exports.DANGEROUS_MIME_TYPES.has((file?.mimetype || '').toLowerCase().trim());
39
+ }
14
40
  exports.EXT_TO_MEDIA_TYPE = {
15
41
  ...Object.fromEntries(IMAGE_EXTENSIONS.map((ext) => [ext, 'image'])),
16
42
  ...Object.fromEntries(AUDIO_EXTENSIONS.map((ext) => [ext, 'audio'])),
@@ -1 +1 @@
1
- {"version":3,"file":"media-file-types.js","sourceRoot":"","sources":["../../src/constants/media-file-types.ts"],"names":[],"mappings":";;;AAEA,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC9F,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAC7E,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AAClG,MAAM,mBAAmB,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC1H,MAAM,aAAa,GAAG,KAAK,CAAC;AAOf,QAAA,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACxC,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK;IACpC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM;IACjD,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;CACjD,CAAC,CAAC;AASU,QAAA,iBAAiB,GAAkC;IAC5D,GAAG,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,OAAgB,CAAC,CAAC,CAAC;IAC7E,GAAG,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,OAAgB,CAAC,CAAC,CAAC;IAC7E,GAAG,MAAM,CAAC,WAAW,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,OAAgB,CAAC,CAAC,CAAC;IAC7E,GAAG,MAAM,CAAC,WAAW,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,MAAe,CAAC,CAAC,CAAC;IAC/E,CAAC,aAAa,CAAC,EAAE,KAAK;CACzB,CAAC;AAMW,QAAA,sBAAsB,GAAG,IAAI,GAAG,CAAS;IAClD,GAAG,gBAAgB;IACnB,GAAG,gBAAgB;IACnB,GAAG,gBAAgB;IACnB,aAAa;CAChB,CAAC,CAAC","sourcesContent":["export type MediaCategory = 'image' | 'audio' | 'video' | 'file' | 'pdf';\n\nconst IMAGE_EXTENSIONS = ['png', 'jpg', 'jpeg', 'webp', 'gif', 'bmp', 'tiff', 'heic', 'heif'];\nconst AUDIO_EXTENSIONS = ['mp3', 'wav', 'ogg', 'aac', 'm4a', 'flac', 'webm'];\nconst VIDEO_EXTENSIONS = ['mp4', 'mov', 'avi', 'mkv', 'mpeg', 'mpg', '3gp', '3g2', 'webm', 'ogg'];\nconst DOCUMENT_EXTENSIONS = ['txt', 'md', 'csv', 'json', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'zip', 'rar', '7z'];\nconst PDF_EXTENSION = 'pdf';\n\n/**\n * Extensions that must never be accepted as media uploads, regardless of declared mimetype or\n * admin-configured mediaTypes allowlist. Checked before any other resolution so a spoofed\n * Content-Type (e.g. application/octet-stream on an .html file) can't bypass this.\n */\nexport const DANGEROUS_EXTENSIONS = new Set([\n 'html', 'htm', 'xhtml', 'svg', 'xml',\n 'js', 'mjs', 'php', 'phtml', 'jsp', 'asp', 'aspx',\n 'exe', 'sh', 'bat', 'cmd', 'ps1', 'jar', 'dll',\n]);\n\n/**\n * Single source of truth for extension -> coarse media category. Shared by upload-time\n * validation (MediaFieldCrudManager) and serve-time header hardening (ServeStaticModule), so\n * both agree on which extensions belong to which category and neither drifts out of sync.\n * webm/ogg are shared between AUDIO_EXTENSIONS and VIDEO_EXTENSIONS - last one wins here, they\n * default to 'video' since that's the more common upload case.\n */\nexport const EXT_TO_MEDIA_TYPE: Record<string, MediaCategory> = {\n ...Object.fromEntries(IMAGE_EXTENSIONS.map((ext) => [ext, 'image' as const])),\n ...Object.fromEntries(AUDIO_EXTENSIONS.map((ext) => [ext, 'audio' as const])),\n ...Object.fromEntries(VIDEO_EXTENSIONS.map((ext) => [ext, 'video' as const])),\n ...Object.fromEntries(DOCUMENT_EXTENSIONS.map((ext) => [ext, 'file' as const])),\n [PDF_EXTENSION]: 'pdf',\n};\n\n/**\n * Extensions safe to serve inline with their natural Content-Type; everything else served from\n * media-files-storage is forced to application/octet-stream + Content-Disposition: attachment.\n */\nexport const INLINE_SAFE_EXTENSIONS = new Set<string>([\n ...IMAGE_EXTENSIONS,\n ...AUDIO_EXTENSIONS,\n ...VIDEO_EXTENSIONS,\n PDF_EXTENSION,\n]);\n"]}
1
+ {"version":3,"file":"media-file-types.js","sourceRoot":"","sources":["../../src/constants/media-file-types.ts"],"names":[],"mappings":"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","sourcesContent":["export type MediaCategory = 'image' | 'audio' | 'video' | 'file' | 'pdf';\n\nconst IMAGE_EXTENSIONS = ['png', 'jpg', 'jpeg', 'webp', 'gif', 'bmp', 'tiff', 'heic', 'heif'];\nconst AUDIO_EXTENSIONS = ['mp3', 'wav', 'ogg', 'aac', 'm4a', 'flac', 'webm'];\nconst VIDEO_EXTENSIONS = ['mp4', 'mov', 'avi', 'mkv', 'mpeg', 'mpg', '3gp', '3g2', 'webm', 'ogg'];\nconst DOCUMENT_EXTENSIONS = ['txt', 'md', 'csv', 'json', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'zip', 'rar', '7z'];\nconst PDF_EXTENSION = 'pdf';\n\n/**\n * Extensions that must never be accepted as media uploads, regardless of declared mimetype or\n * admin-configured mediaTypes allowlist. Checked before any other resolution so a spoofed\n * Content-Type (e.g. application/octet-stream on an .html file) can't bypass this.\n */\nexport const DANGEROUS_EXTENSIONS = new Set([\n 'html', 'htm', 'xhtml', 'svg', 'xml',\n 'js', 'mjs', 'php', 'phtml', 'jsp', 'asp', 'aspx',\n 'exe', 'sh', 'bat', 'cmd', 'ps1', 'jar', 'dll',\n]);\n\n\n/**\n * Mimetypes that are never safe to accept, regardless of extension. These render as active\n * content in a browser (svg can carry <script>), so they are rejected even when the filename\n * looks harmless. Kept alongside DANGEROUS_EXTENSIONS so upload paths check both.\n */\nexport const DANGEROUS_MIME_TYPES = new Set([\n 'image/svg+xml', 'text/html', 'application/xhtml+xml',\n]);\n\nexport function getLowercaseFileExtension(fileName?: string | null): string | undefined {\n if (!fileName) {\n return undefined;\n }\n\n const lastDotIndex = fileName.lastIndexOf('.');\n if (lastDotIndex < 0 || lastDotIndex === fileName.length - 1) {\n return undefined;\n }\n\n return fileName.slice(lastDotIndex + 1).toLowerCase();\n}\n\n/** Minimal shape of an uploaded file, so this module stays free of framework imports. */\nexport interface UploadedFileLike {\n mimetype?: string;\n originalname?: string;\n filename?: string;\n}\n\n/** originalname is the client-supplied name; filename is multer's on-disk name. */\nexport function getUploadedFileName(file?: UploadedFileLike | null): string {\n return file?.originalname ?? file?.filename ?? '';\n}\n\n/**\n * Single predicate for \"must never be stored\". Shared by every upload entry point\n * (MediaFieldCrudManager, chatter attachments) so the rules can't drift between them.\n * Extension is checked before mimetype so a spoofed Content-Type (e.g.\n * application/octet-stream on an .html file) can't bypass it.\n */\nexport function isDangerousMediaFile(file?: UploadedFileLike | null): boolean {\n const ext = getLowercaseFileExtension(getUploadedFileName(file));\n if (ext && DANGEROUS_EXTENSIONS.has(ext)) {\n return true;\n }\n\n return DANGEROUS_MIME_TYPES.has((file?.mimetype || '').toLowerCase().trim());\n}\n\n/**\n * Single source of truth for extension -> coarse media category. Shared by upload-time\n * validation (MediaFieldCrudManager) and serve-time header hardening (ServeStaticModule), so\n * both agree on which extensions belong to which category and neither drifts out of sync.\n * webm/ogg are shared between AUDIO_EXTENSIONS and VIDEO_EXTENSIONS - last one wins here, they\n * default to 'video' since that's the more common upload case.\n */\nexport const EXT_TO_MEDIA_TYPE: Record<string, MediaCategory> = {\n ...Object.fromEntries(IMAGE_EXTENSIONS.map((ext) => [ext, 'image' as const])),\n ...Object.fromEntries(AUDIO_EXTENSIONS.map((ext) => [ext, 'audio' as const])),\n ...Object.fromEntries(VIDEO_EXTENSIONS.map((ext) => [ext, 'video' as const])),\n ...Object.fromEntries(DOCUMENT_EXTENSIONS.map((ext) => [ext, 'file' as const])),\n [PDF_EXTENSION]: 'pdf',\n};\n\n/**\n * Extensions safe to serve inline with their natural Content-Type; everything else served from\n * media-files-storage is forced to application/octet-stream + Content-Disposition: attachment.\n */\nexport const INLINE_SAFE_EXTENSIONS = new Set<string>([\n ...IMAGE_EXTENSIONS,\n ...AUDIO_EXTENSIONS,\n ...VIDEO_EXTENSIONS,\n PDF_EXTENSION,\n]);\n"]}
@@ -11,6 +11,6 @@ export declare class ActionMetadataController {
11
11
  findMany(query: any, solidRequestContext: SolidRequestContextDto): Promise<any>;
12
12
  findOne(id: string, query: any, solidRequestContext: SolidRequestContextDto): Promise<import("..").ActionMetadata>;
13
13
  deleteMany(ids: number[], solidRequestContext: SolidRequestContextDto): Promise<any>;
14
- delete(id: number, solidRequestContext: SolidRequestContextDto): Promise<import("..").ActionMetadata>;
14
+ delete(id: number, solidRequestContext: SolidRequestContextDto): Promise<import("..").ActionMetadata[]>;
15
15
  }
16
16
  //# sourceMappingURL=action-metadata.controller.d.ts.map
@@ -129,7 +129,7 @@ __decorate([
129
129
  __decorate([
130
130
  (0, swagger_1.ApiBearerAuth)("jwt"),
131
131
  (0, common_1.Delete)(':id'),
132
- openapi.ApiResponse({ status: 200, type: require("../entities/action-metadata.entity").ActionMetadata }),
132
+ openapi.ApiResponse({ status: 200, type: [require("../entities/action-metadata.entity").ActionMetadata] }),
133
133
  __param(0, (0, common_1.Param)('id')),
134
134
  __param(1, (0, solid_request_context_decorator_1.SolidRequestContextDecorator)()),
135
135
  __metadata("design:type", Function),
@@ -11,6 +11,6 @@ export declare class AgentEventController {
11
11
  findMany(query: any): Promise<any>;
12
12
  findOne(id: string, query: any): Promise<import("..").AgentEvent>;
13
13
  deleteMany(ids: number[]): Promise<any>;
14
- delete(id: number): Promise<import("..").AgentEvent>;
14
+ delete(id: number): Promise<import("..").AgentEvent[]>;
15
15
  }
16
16
  //# sourceMappingURL=agent-event.controller.d.ts.map
@@ -133,7 +133,7 @@ __decorate([
133
133
  __decorate([
134
134
  (0, swagger_1.ApiBearerAuth)('jwt'),
135
135
  (0, common_1.Delete)(':id'),
136
- openapi.ApiResponse({ status: 200, type: require("../entities/agent-event.entity").AgentEvent }),
136
+ openapi.ApiResponse({ status: 200, type: [require("../entities/agent-event.entity").AgentEvent] }),
137
137
  __param(0, (0, common_1.Param)('id')),
138
138
  __metadata("design:type", Function),
139
139
  __metadata("design:paramtypes", [Number]),
@@ -11,6 +11,6 @@ export declare class AgentSessionController {
11
11
  findMany(query: any): Promise<any>;
12
12
  findOne(id: string, query: any): Promise<import("..").AgentSession>;
13
13
  deleteMany(ids: number[]): Promise<any>;
14
- delete(id: number): Promise<import("..").AgentSession>;
14
+ delete(id: number): Promise<import("..").AgentSession[]>;
15
15
  }
16
16
  //# sourceMappingURL=agent-session.controller.d.ts.map
@@ -133,7 +133,7 @@ __decorate([
133
133
  __decorate([
134
134
  (0, swagger_1.ApiBearerAuth)('jwt'),
135
135
  (0, common_1.Delete)(':id'),
136
- openapi.ApiResponse({ status: 200, type: require("../entities/agent-session.entity").AgentSession }),
136
+ openapi.ApiResponse({ status: 200, type: [require("../entities/agent-session.entity").AgentSession] }),
137
137
  __param(0, (0, common_1.Param)('id')),
138
138
  __metadata("design:type", Function),
139
139
  __metadata("design:paramtypes", [Number]),
@@ -19,6 +19,6 @@ export declare class DashboardUserLayoutController {
19
19
  findMany(query: any): Promise<any>;
20
20
  findOne(id: string, query: any): Promise<import("..").DashboardUserLayout>;
21
21
  deleteMany(ids: number[]): Promise<any>;
22
- delete(id: number): Promise<import("..").DashboardUserLayout>;
22
+ delete(id: number): Promise<import("..").DashboardUserLayout[]>;
23
23
  }
24
24
  //# sourceMappingURL=dashboard-user-layout.controller.d.ts.map
@@ -165,7 +165,7 @@ __decorate([
165
165
  __decorate([
166
166
  (0, swagger_1.ApiBearerAuth)("jwt"),
167
167
  (0, common_1.Delete)(':id'),
168
- openapi.ApiResponse({ status: 200, type: require("../entities/dashboard-user-layout.entity").DashboardUserLayout }),
168
+ openapi.ApiResponse({ status: 200, type: [require("../entities/dashboard-user-layout.entity").DashboardUserLayout] }),
169
169
  __param(0, (0, common_1.Param)('id')),
170
170
  __metadata("design:type", Function),
171
171
  __metadata("design:paramtypes", [Number]),
@@ -12,7 +12,7 @@ export declare class EmailTemplateController {
12
12
  findMany(query: any): Promise<any>;
13
13
  findOne(id: string, query: any): Promise<import("..").EmailTemplate>;
14
14
  deleteMany(ids: number[]): Promise<any>;
15
- delete(id: number): Promise<import("..").EmailTemplate>;
15
+ delete(id: number): Promise<import("..").EmailTemplate[]>;
16
16
  generateMailgenTemplate(templateType: string): any;
17
17
  }
18
18
  //# sourceMappingURL=email-template.controller.d.ts.map
@@ -190,7 +190,7 @@ __decorate([
190
190
  __decorate([
191
191
  (0, swagger_1.ApiBearerAuth)("jwt"),
192
192
  (0, common_1.Delete)(':id'),
193
- openapi.ApiResponse({ status: 200, type: require("../entities/email-template.entity").EmailTemplate }),
193
+ openapi.ApiResponse({ status: 200, type: [require("../entities/email-template.entity").EmailTemplate] }),
194
194
  __param(0, (0, common_1.Param)('id')),
195
195
  __metadata("design:type", Function),
196
196
  __metadata("design:paramtypes", [Number]),
@@ -14,7 +14,7 @@ export declare class ExportTemplateController {
14
14
  findMany(query: any): Promise<any>;
15
15
  findOne(id: string, query: any): Promise<import("..").ExportTemplate>;
16
16
  deleteMany(ids: number[]): Promise<any>;
17
- delete(id: number): Promise<import("..").ExportTemplate>;
17
+ delete(id: number): Promise<import("..").ExportTemplate[]>;
18
18
  startExportSync(dto: StartExportSyncDto, res: Response, activeUser: ActiveUserData): Promise<void>;
19
19
  startExportAsync(dto: StartExportSyncDto): Promise<import("..").ExportTransaction>;
20
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"export-template.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/export-template.controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAE3E,qBAEa,wBAAwB;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,qBAAqB;IAK3D,MAAM,CAAS,SAAS,EAAE,uBAAuB,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAOrG,UAAU,CAAS,UAAU,EAAE,uBAAuB,EAAE,EAAmB,UAAU,GAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAO;IAQnH,MAAM,CAAc,EAAE,EAAE,MAAM,EAAU,SAAS,EAAE,uBAAuB,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAO9H,aAAa,CAAc,EAAE,EAAE,MAAM,EAAU,SAAS,EAAE,uBAAuB,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAgB/H,QAAQ,CAAU,KAAK,EAAE,GAAG;IAM5B,OAAO,CAAc,EAAE,EAAE,MAAM,EAAW,KAAK,EAAE,GAAG;IAKpD,UAAU,CAAS,GAAG,EAAE,MAAM,EAAE;IAMhC,MAAM,CAAc,EAAE,EAAE,MAAM;IAM9B,eAAe,CAAS,GAAG,EAAE,kBAAkB,EAAS,GAAG,EAAE,QAAQ,EAAiB,UAAU,EAAE,cAAc;IAsBhH,gBAAgB,CAAS,GAAG,EAAE,kBAAkB;CAUvD"}
1
+ {"version":3,"file":"export-template.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/export-template.controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAC5E,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAG3E,qBAEa,wBAAwB;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,qBAAqB;IAK3D,MAAM,CAAS,SAAS,EAAE,uBAAuB,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAOrG,UAAU,CAAS,UAAU,EAAE,uBAAuB,EAAE,EAAmB,UAAU,GAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAO;IAQnH,MAAM,CAAc,EAAE,EAAE,MAAM,EAAU,SAAS,EAAE,uBAAuB,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAO9H,aAAa,CAAc,EAAE,EAAE,MAAM,EAAU,SAAS,EAAE,uBAAuB,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAgB/H,QAAQ,CAAU,KAAK,EAAE,GAAG;IAM5B,OAAO,CAAc,EAAE,EAAE,MAAM,EAAW,KAAK,EAAE,GAAG;IAKpD,UAAU,CAAS,GAAG,EAAE,MAAM,EAAE;IAMhC,MAAM,CAAc,EAAE,EAAE,MAAM;IAM9B,eAAe,CAAS,GAAG,EAAE,kBAAkB,EAAS,GAAG,EAAE,QAAQ,EAAiB,UAAU,EAAE,cAAc;IAuBhH,gBAAgB,CAAS,GAAG,EAAE,kBAAkB;CAUvD"}
@@ -22,6 +22,7 @@ const create_export_template_dto_1 = require("../dtos/create-export-template.dto
22
22
  const update_export_template_dto_1 = require("../dtos/update-export-template.dto");
23
23
  const export_dto_1 = require("../dtos/export.dto");
24
24
  const active_user_decorator_1 = require("../decorators/active-user.decorator");
25
+ const file_download_helper_1 = require("../helpers/file-download.helper");
25
26
  let ExportTemplateController = class ExportTemplateController {
26
27
  constructor(service) {
27
28
  this.service = service;
@@ -61,9 +62,10 @@ let ExportTemplateController = class ExportTemplateController {
61
62
  if (exportFileInfo.exportStream === null) {
62
63
  throw new common_1.InternalServerErrorException("Export stream is null");
63
64
  }
64
- res.setHeader('Content-Disposition', `attachment; filename="${exportFileInfo.fileName}"`);
65
- res.setHeader('Content-Type', exportFileInfo.mimeType);
66
- res.setHeader('Access-Control-Expose-Headers', 'Content-Disposition, Content-Type');
65
+ (0, file_download_helper_1.setFileDownloadHeaders)(res, {
66
+ fileName: exportFileInfo.fileName,
67
+ mimeType: exportFileInfo.mimeType,
68
+ });
67
69
  exportFileInfo.exportStream.pipe(res);
68
70
  }
69
71
  async startExportAsync(dto) {
@@ -163,7 +165,7 @@ __decorate([
163
165
  __decorate([
164
166
  (0, swagger_1.ApiBearerAuth)("jwt"),
165
167
  (0, common_1.Delete)(':id'),
166
- openapi.ApiResponse({ status: 200, type: require("../entities/export-template.entity").ExportTemplate }),
168
+ openapi.ApiResponse({ status: 200, type: [require("../entities/export-template.entity").ExportTemplate] }),
167
169
  __param(0, (0, common_1.Param)('id')),
168
170
  __metadata("design:type", Function),
169
171
  __metadata("design:paramtypes", [Number]),
@@ -1 +1 @@
1
- {"version":3,"file":"export-template.controller.js","sourceRoot":"","sources":["../../src/controllers/export-template.controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Controller, Post, Body, Param, UploadedFiles, UseInterceptors, Put, Get, Query, Delete, Patch, Res, InternalServerErrorException } from '@nestjs/common';\nimport { AnyFilesInterceptor } from \"@nestjs/platform-express\";\nimport { ApiBearerAuth, ApiQuery, ApiTags } from '@nestjs/swagger';\nimport { ExportTemplateService } from '../services/export-template.service';\nimport { CreateExportTemplateDto } from '../dtos/create-export-template.dto';\nimport { UpdateExportTemplateDto } from '../dtos/update-export-template.dto';\nimport { Response } from 'express';\nimport { StartExportSyncDto } from 'src/dtos/export.dto';\nimport { ActiveUser } from 'src/decorators/active-user.decorator';\nimport { ActiveUserData } from 'src/interfaces/active-user-data.interface';\n\n@ApiTags('Solid Core') \n@Controller('export-template') //FIXME: Change this to the model plural name \nexport class ExportTemplateController { \n constructor(private readonly service: ExportTemplateService) {}\n\n @ApiBearerAuth(\"jwt\")\n @Post()\n @UseInterceptors(AnyFilesInterceptor())\n create(@Body() createDto: CreateExportTemplateDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.create(createDto, files);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('/bulk')\n @UseInterceptors(AnyFilesInterceptor())\n insertMany(@Body() createDtos: CreateExportTemplateDto[], @UploadedFiles() filesArray: Express.Multer.File[][] = []) {\n return this.service.insertMany(createDtos, filesArray);\n }\n\n\n @ApiBearerAuth(\"jwt\")\n @Put(':id')\n @UseInterceptors(AnyFilesInterceptor())\n update(@Param('id') id: number, @Body() updateDto: UpdateExportTemplateDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.update(id, updateDto, files);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Patch(':id')\n @UseInterceptors(AnyFilesInterceptor())\n partialUpdate(@Param('id') id: number, @Body() updateDto: UpdateExportTemplateDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.update(id, updateDto, files, true);\n }\n \n @ApiBearerAuth(\"jwt\")\n @ApiQuery({ name: 'showSoftDeleted', required: false, type: Boolean })\n @ApiQuery({ name: 'showOnlySoftDeleted', required: false, type: Boolean })\n @ApiQuery({ name: 'limit', required: false, type: Number })\n @ApiQuery({ name: 'offset', required: false, type: Number })\n @ApiQuery({ name: 'fields', required: false, type: Array })\n @ApiQuery({ name: 'sort', required: false, type: Array }) \n @ApiQuery({ name: 'groupBy', required: false, type: Array })\n @ApiQuery({ name: 'populate', required: false, type: Array })\n @ApiQuery({ name: 'populateMedia', required: false, type: Array })\n @ApiQuery({ name: 'filters', required: false, type: Array })\n @Get()\n async findMany(@Query() query: any) { \n return this.service.find(query); \n }\n\n @ApiBearerAuth(\"jwt\")\n @Get(':id')\n async findOne(@Param('id') id: string, @Query() query: any) {\n return this.service.findOne(+id, query);\n }\n\n @Delete('/bulk')\n async deleteMany(@Body() ids: number[]) {\n return this.service.deleteMany(ids);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Delete(':id')\n async delete(@Param('id') id: number) {\n return this.service.delete(id);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('/startExport/sync')\n async startExportSync(@Body() dto: StartExportSyncDto, @Res() res: Response, @ActiveUser() activeUser: ActiveUserData) {\n const { filters, ...rest } = dto;\n let updateDto = { ...rest };\n // Check if templateName is present → create template\n if (updateDto?.templateName) {\n const newTemplate = await this.service.create(updateDto, []);\n updateDto = { ...updateDto, id: newTemplate.id };\n }\n const exportFileInfo = await this.service.startExportSync(updateDto, filters, activeUser);\n if (exportFileInfo.exportStream === null) {\n throw new InternalServerErrorException(\"Export stream is null\");\n }\n // ✅ Set response headers for streaming\n res.setHeader('Content-Disposition', `attachment; filename=\"${exportFileInfo.fileName}\"`);\n res.setHeader('Content-Type', exportFileInfo.mimeType);\n res.setHeader('Access-Control-Expose-Headers', 'Content-Disposition, Content-Type');\n // Pipe the strea to the response as an excel file\n exportFileInfo.exportStream.pipe(res);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('/startExport/async')\n async startExportAsync(@Body() dto: StartExportSyncDto) {\n const { filters, ...rest } = dto;\n let updateDto = { ...rest };\n if (updateDto.templateName) {\n const newTemplate = await this.service.create(updateDto, []);\n updateDto = { ...updateDto, id: newTemplate.id };\n }\n return this.service.startExportAsync(updateDto, filters);\n }\n\n}\n"]}
1
+ {"version":3,"file":"export-template.controller.js","sourceRoot":"","sources":["../../src/controllers/export-template.controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Controller, Post, Body, Param, UploadedFiles, UseInterceptors, Put, Get, Query, Delete, Patch, Res, InternalServerErrorException } from '@nestjs/common';\nimport { AnyFilesInterceptor } from \"@nestjs/platform-express\";\nimport { ApiBearerAuth, ApiQuery, ApiTags } from '@nestjs/swagger';\nimport { ExportTemplateService } from '../services/export-template.service';\nimport { CreateExportTemplateDto } from '../dtos/create-export-template.dto';\nimport { UpdateExportTemplateDto } from '../dtos/update-export-template.dto';\nimport { Response } from 'express';\nimport { StartExportSyncDto } from 'src/dtos/export.dto';\nimport { ActiveUser } from 'src/decorators/active-user.decorator';\nimport { ActiveUserData } from 'src/interfaces/active-user-data.interface';\nimport { setFileDownloadHeaders } from 'src/helpers/file-download.helper';\n\n@ApiTags('Solid Core') \n@Controller('export-template') //FIXME: Change this to the model plural name \nexport class ExportTemplateController { \n constructor(private readonly service: ExportTemplateService) {}\n\n @ApiBearerAuth(\"jwt\")\n @Post()\n @UseInterceptors(AnyFilesInterceptor())\n create(@Body() createDto: CreateExportTemplateDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.create(createDto, files);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('/bulk')\n @UseInterceptors(AnyFilesInterceptor())\n insertMany(@Body() createDtos: CreateExportTemplateDto[], @UploadedFiles() filesArray: Express.Multer.File[][] = []) {\n return this.service.insertMany(createDtos, filesArray);\n }\n\n\n @ApiBearerAuth(\"jwt\")\n @Put(':id')\n @UseInterceptors(AnyFilesInterceptor())\n update(@Param('id') id: number, @Body() updateDto: UpdateExportTemplateDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.update(id, updateDto, files);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Patch(':id')\n @UseInterceptors(AnyFilesInterceptor())\n partialUpdate(@Param('id') id: number, @Body() updateDto: UpdateExportTemplateDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.update(id, updateDto, files, true);\n }\n \n @ApiBearerAuth(\"jwt\")\n @ApiQuery({ name: 'showSoftDeleted', required: false, type: Boolean })\n @ApiQuery({ name: 'showOnlySoftDeleted', required: false, type: Boolean })\n @ApiQuery({ name: 'limit', required: false, type: Number })\n @ApiQuery({ name: 'offset', required: false, type: Number })\n @ApiQuery({ name: 'fields', required: false, type: Array })\n @ApiQuery({ name: 'sort', required: false, type: Array }) \n @ApiQuery({ name: 'groupBy', required: false, type: Array })\n @ApiQuery({ name: 'populate', required: false, type: Array })\n @ApiQuery({ name: 'populateMedia', required: false, type: Array })\n @ApiQuery({ name: 'filters', required: false, type: Array })\n @Get()\n async findMany(@Query() query: any) { \n return this.service.find(query); \n }\n\n @ApiBearerAuth(\"jwt\")\n @Get(':id')\n async findOne(@Param('id') id: string, @Query() query: any) {\n return this.service.findOne(+id, query);\n }\n\n @Delete('/bulk')\n async deleteMany(@Body() ids: number[]) {\n return this.service.deleteMany(ids);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Delete(':id')\n async delete(@Param('id') id: number) {\n return this.service.delete(id);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('/startExport/sync')\n async startExportSync(@Body() dto: StartExportSyncDto, @Res() res: Response, @ActiveUser() activeUser: ActiveUserData) {\n const { filters, ...rest } = dto;\n let updateDto = { ...rest };\n // Check if templateName is present → create template\n if (updateDto?.templateName) {\n const newTemplate = await this.service.create(updateDto, []);\n updateDto = { ...updateDto, id: newTemplate.id };\n }\n const exportFileInfo = await this.service.startExportSync(updateDto, filters, activeUser);\n if (exportFileInfo.exportStream === null) {\n throw new InternalServerErrorException(\"Export stream is null\");\n }\n // ✅ Set response headers for streaming\n setFileDownloadHeaders(res, {\n fileName: exportFileInfo.fileName,\n mimeType: exportFileInfo.mimeType,\n });\n // Pipe the strea to the response as an excel file\n exportFileInfo.exportStream.pipe(res);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('/startExport/async')\n async startExportAsync(@Body() dto: StartExportSyncDto) {\n const { filters, ...rest } = dto;\n let updateDto = { ...rest };\n if (updateDto.templateName) {\n const newTemplate = await this.service.create(updateDto, []);\n updateDto = { ...updateDto, id: newTemplate.id };\n }\n return this.service.startExportAsync(updateDto, filters);\n }\n\n}\n"]}
@@ -11,6 +11,6 @@ export declare class ExportTransactionController {
11
11
  findMany(query: any): Promise<any>;
12
12
  findOne(id: string, query: any): Promise<import("..").ExportTransaction>;
13
13
  deleteMany(ids: number[]): Promise<any>;
14
- delete(id: number): Promise<import("..").ExportTransaction>;
14
+ delete(id: number): Promise<import("..").ExportTransaction[]>;
15
15
  }
16
16
  //# sourceMappingURL=export-transaction.controller.d.ts.map
@@ -136,7 +136,7 @@ __decorate([
136
136
  __decorate([
137
137
  (0, swagger_1.ApiBearerAuth)("jwt"),
138
138
  (0, common_1.Delete)(':id'),
139
- openapi.ApiResponse({ status: 200, type: require("../entities/export-transaction.entity").ExportTransaction }),
139
+ openapi.ApiResponse({ status: 200, type: [require("../entities/export-transaction.entity").ExportTransaction] }),
140
140
  __param(0, (0, common_1.Param)('id')),
141
141
  __metadata("design:type", Function),
142
142
  __metadata("design:paramtypes", [Number]),
@@ -19,6 +19,6 @@ export declare class ImportTransactionErrorLogController {
19
19
  findMany(query: any): Promise<any>;
20
20
  findOne(id: string, query: any): Promise<import("..").ImportTransactionErrorLog>;
21
21
  deleteMany(ids: number[]): Promise<any>;
22
- delete(id: number): Promise<import("..").ImportTransactionErrorLog>;
22
+ delete(id: number): Promise<import("..").ImportTransactionErrorLog[]>;
23
23
  }
24
24
  //# sourceMappingURL=import-transaction-error-log.controller.d.ts.map
@@ -165,7 +165,7 @@ __decorate([
165
165
  __decorate([
166
166
  (0, swagger_1.ApiBearerAuth)("jwt"),
167
167
  (0, common_1.Delete)(':id'),
168
- openapi.ApiResponse({ status: 200, type: require("../entities/import-transaction-error-log.entity").ImportTransactionErrorLog }),
168
+ openapi.ApiResponse({ status: 200, type: [require("../entities/import-transaction-error-log.entity").ImportTransactionErrorLog] }),
169
169
  __param(0, (0, common_1.Param)('id')),
170
170
  __metadata("design:type", Function),
171
171
  __metadata("design:paramtypes", [Number]),
@@ -27,6 +27,6 @@ export declare class ImportTransactionController {
27
27
  startImportSync(id: string, activeUser: ActiveUserData): Promise<import("../services/import-transaction.service").ImportSyncResult>;
28
28
  startImportAsync(id: string): Promise<void>;
29
29
  deleteMany(ids: number[]): Promise<any>;
30
- delete(id: number): Promise<import("..").ImportTransaction>;
30
+ delete(id: number): Promise<import("..").ImportTransaction[]>;
31
31
  }
32
32
  //# sourceMappingURL=import-transaction.controller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"import-transaction.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/import-transaction.controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAChG,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAO3E,qBAEa,2BAA2B;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,wBAAwB;IAIxD,iBAAiB,CAA2B,eAAe,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM,EAAS,GAAG,EAAE,QAAQ;IAgB1H,qBAAqB,CAA2B,eAAe,EAAE,MAAM;IAQ7E,MAAM,CAAS,SAAS,EAAE,0BAA0B,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAOxG,UAAU,CAAS,UAAU,EAAE,0BAA0B,EAAE,EAAmB,UAAU,GAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAO;IAQtH,MAAM,CAAc,EAAE,EAAE,MAAM,EAAU,SAAS,EAAE,0BAA0B,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAOjI,aAAa,CAAc,EAAE,EAAE,MAAM,EAAU,SAAS,EAAE,0BAA0B,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAMlI,WAAW,CAAS,GAAG,EAAE,MAAM,EAAE;;;;IAMjC,OAAO,CAAc,EAAE,EAAE,MAAM;;;;IAe/B,QAAQ,CAAU,KAAK,EAAE,GAAG;IAM5B,OAAO,CAAc,EAAE,EAAE,MAAM,EAAW,KAAK,EAAE,GAAG;IAMpD,oBAAoB,CAAc,EAAE,EAAE,MAAM;IAM5C,2BAA2B,CAAc,EAAE,EAAE,MAAM,EAAS,GAAG,EAAE,QAAQ;IAezE,eAAe,CAAc,EAAE,EAAE,MAAM,EAAgB,UAAU,EAAE,cAAc;IAOjF,gBAAgB,CAAc,EAAE,EAAE,MAAM;IAMxC,UAAU,CAAS,GAAG,EAAE,MAAM,EAAE;IAMhC,MAAM,CAAc,EAAE,EAAE,MAAM;CAIrC"}
1
+ {"version":3,"file":"import-transaction.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/import-transaction.controller.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,wBAAwB,EAAE,MAAM,wCAAwC,CAAC;AAChG,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AACnF,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,OAAO,EAAE,cAAc,EAAE,MAAM,2CAA2C,CAAC;AAQ3E,qBAEa,2BAA2B;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,wBAAwB;IAIxD,iBAAiB,CAA2B,eAAe,EAAE,MAAM,EAAmB,MAAM,EAAE,MAAM,EAAS,GAAG,EAAE,QAAQ;IAiB1H,qBAAqB,CAA2B,eAAe,EAAE,MAAM;IAQ7E,MAAM,CAAS,SAAS,EAAE,0BAA0B,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAOxG,UAAU,CAAS,UAAU,EAAE,0BAA0B,EAAE,EAAmB,UAAU,GAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAO;IAQtH,MAAM,CAAc,EAAE,EAAE,MAAM,EAAU,SAAS,EAAE,0BAA0B,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAOjI,aAAa,CAAc,EAAE,EAAE,MAAM,EAAU,SAAS,EAAE,0BAA0B,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;IAMlI,WAAW,CAAS,GAAG,EAAE,MAAM,EAAE;;;;IAMjC,OAAO,CAAc,EAAE,EAAE,MAAM;;;;IAe/B,QAAQ,CAAU,KAAK,EAAE,GAAG;IAM5B,OAAO,CAAc,EAAE,EAAE,MAAM,EAAW,KAAK,EAAE,GAAG;IAMpD,oBAAoB,CAAc,EAAE,EAAE,MAAM;IAM5C,2BAA2B,CAAc,EAAE,EAAE,MAAM,EAAS,GAAG,EAAE,QAAQ;IAazE,eAAe,CAAc,EAAE,EAAE,MAAM,EAAgB,UAAU,EAAE,cAAc;IAOjF,gBAAgB,CAAc,EAAE,EAAE,MAAM;IAMxC,UAAU,CAAS,GAAG,EAAE,MAAM,EAAE;IAMhC,MAAM,CAAc,EAAE,EAAE,MAAM;CAIrC"}
@@ -21,6 +21,7 @@ const import_transaction_service_1 = require("../services/import-transaction.ser
21
21
  const create_import_transaction_dto_1 = require("../dtos/create-import-transaction.dto");
22
22
  const update_import_transaction_dto_1 = require("../dtos/update-import-transaction.dto");
23
23
  const active_user_decorator_1 = require("../decorators/active-user.decorator");
24
+ const file_download_helper_1 = require("../helpers/file-download.helper");
24
25
  var ShowSoftDeleted;
25
26
  (function (ShowSoftDeleted) {
26
27
  ShowSoftDeleted["INCLUSIVE"] = "inclusive";
@@ -35,9 +36,10 @@ let ImportTransactionController = class ImportTransactionController {
35
36
  if (importTemplateFileInfo.stream === null) {
36
37
  throw new common_1.InternalServerErrorException("Sample Import template stream is null");
37
38
  }
38
- res.setHeader('Content-Disposition', `attachment; filename="${importTemplateFileInfo.fileName}"`);
39
- res.setHeader('Content-Type', importTemplateFileInfo.mimeType);
40
- res.setHeader('Access-Control-Expose-Headers', 'Content-Disposition, Content-Type');
39
+ (0, file_download_helper_1.setFileDownloadHeaders)(res, {
40
+ fileName: importTemplateFileInfo.fileName,
41
+ mimeType: importTemplateFileInfo.mimeType,
42
+ });
41
43
  importTemplateFileInfo.stream.pipe(res);
42
44
  }
43
45
  async getImportInstructions(modelMetadataId) {
@@ -75,9 +77,7 @@ let ImportTransactionController = class ImportTransactionController {
75
77
  if (stream === null) {
76
78
  throw new common_1.InternalServerErrorException("Failed records stream is null");
77
79
  }
78
- res.setHeader('Content-Disposition', `attachment; filename="${fileName}"`);
79
- res.setHeader('Content-Type', mimeType);
80
- res.setHeader('Access-Control-Expose-Headers', 'Content-Disposition, Content-Type');
80
+ (0, file_download_helper_1.setFileDownloadHeaders)(res, { fileName, mimeType });
81
81
  stream.pipe(res);
82
82
  }
83
83
  async startImportSync(id, activeUser) {
@@ -257,7 +257,7 @@ __decorate([
257
257
  __decorate([
258
258
  (0, swagger_1.ApiBearerAuth)("jwt"),
259
259
  (0, common_1.Delete)(':id'),
260
- openapi.ApiResponse({ status: 200, type: require("../entities/import-transaction.entity").ImportTransaction }),
260
+ openapi.ApiResponse({ status: 200, type: [require("../entities/import-transaction.entity").ImportTransaction] }),
261
261
  __param(0, (0, common_1.Param)('id')),
262
262
  __metadata("design:type", Function),
263
263
  __metadata("design:paramtypes", [Number]),
@@ -1 +1 @@
1
- {"version":3,"file":"import-transaction.controller.js","sourceRoot":"","sources":["../../src/controllers/import-transaction.controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Controller, Post, Body, Param, UploadedFiles, UseInterceptors, Put, Get, Query, Delete, Patch, InternalServerErrorException, Res } from '@nestjs/common';\nimport { AnyFilesInterceptor } from \"@nestjs/platform-express\";\nimport { ApiBearerAuth, ApiQuery, ApiTags } from '@nestjs/swagger';\nimport { ImportFormat, ImportTransactionService } from '../services/import-transaction.service';\nimport { CreateImportTransactionDto } from '../dtos/create-import-transaction.dto';\nimport { UpdateImportTransactionDto } from '../dtos/update-import-transaction.dto';\nimport { Response } from 'express';\nimport { ActiveUser } from 'src/decorators/active-user.decorator';\nimport { ActiveUserData } from 'src/interfaces/active-user-data.interface';\n\nenum ShowSoftDeleted {\n INCLUSIVE = \"inclusive\",\n EXCLUSIVE = \"exclusive\",\n}\n\n@ApiTags('Solid Core')\n@Controller('import-transaction')\nexport class ImportTransactionController {\n constructor(private readonly service: ImportTransactionService) {}\n\n @ApiBearerAuth(\"jwt\")\n @Get('/import-template/:modelMetadataId/:format')\n async getImportTemplate(@Param('modelMetadataId') modelMetadataId: number, @Param('format') format: string, @Res() res: Response) {\n const importTemplateFileInfo = await this.service.getImportTemplate(+modelMetadataId, format as ImportFormat);\n if (importTemplateFileInfo.stream === null) {\n throw new InternalServerErrorException(\"Sample Import template stream is null\");\n }\n\n // ✅ Set response headers for streaming\n res.setHeader('Content-Disposition', `attachment; filename=\"${importTemplateFileInfo.fileName}\"`);\n res.setHeader('Content-Type', importTemplateFileInfo.mimeType);\n res.setHeader('Access-Control-Expose-Headers', 'Content-Disposition, Content-Type');\n // Pipe the stream to the response as an excel file\n importTemplateFileInfo.stream.pipe(res);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Get('/import-instructions/:modelMetadataId')\n async getImportInstructions(@Param('modelMetadataId') modelMetadataId: number) {\n // return this.service.getImportInstructions(modelMetadataId);\n return this.service.getImportInstructions(modelMetadataId);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post()\n @UseInterceptors(AnyFilesInterceptor())\n create(@Body() createDto: CreateImportTransactionDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.create(createDto, files);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('/bulk')\n @UseInterceptors(AnyFilesInterceptor())\n insertMany(@Body() createDtos: CreateImportTransactionDto[], @UploadedFiles() filesArray: Express.Multer.File[][] = []) {\n return this.service.insertMany(createDtos, filesArray);\n }\n\n\n @ApiBearerAuth(\"jwt\")\n @Put(':id')\n @UseInterceptors(AnyFilesInterceptor())\n update(@Param('id') id: number, @Body() updateDto: UpdateImportTransactionDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.update(id, updateDto, files);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Patch(':id')\n @UseInterceptors(AnyFilesInterceptor())\n partialUpdate(@Param('id') id: number, @Body() updateDto: UpdateImportTransactionDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.update(id, updateDto, files, true);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('/bulk-recover')\n async recoverMany(@Body() ids: number[]) {\n return this.service.recoverMany(ids);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Get('/recover/:id')\n async recover(@Param('id') id: number) {\n return this.service.recover(id);\n }\n \n @ApiBearerAuth(\"jwt\")\n @ApiQuery({ name: 'showSoftDeleted', required: false, enum: ShowSoftDeleted })\n @ApiQuery({ name: 'limit', required: false, type: Number })\n @ApiQuery({ name: 'offset', required: false, type: Number })\n @ApiQuery({ name: 'fields', required: false, type: Array })\n @ApiQuery({ name: 'sort', required: false, type: Array }) \n @ApiQuery({ name: 'groupBy', required: false, type: Array })\n @ApiQuery({ name: 'populate', required: false, type: Array })\n @ApiQuery({ name: 'populateMedia', required: false, type: Array })\n @ApiQuery({ name: 'filters', required: false, type: Array })\n @Get()\n async findMany(@Query() query: any) { \n return this.service.find(query); \n }\n\n @ApiBearerAuth(\"jwt\")\n @Get(':id')\n async findOne(@Param('id') id: string, @Query() query: any) {\n return this.service.findOne(+id, query);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Get(':id/import-mapping-info')\n async getImportMappingInfo(@Param('id') id: string) {\n return this.service.getImportMappingInfo(+id);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Get(':id/export-failed-import-records')\n async exportFailedImportedImports(@Param('id') id: string, @Res() res: Response) {\n const {stream, fileName, mimeType} = await this.service.exportFailedImportedImports(+id);\n if (stream === null) {\n throw new InternalServerErrorException(\"Failed records stream is null\");\n }\n // ✅ Set response headers for streaming\n res.setHeader('Content-Disposition', `attachment; filename=\"${fileName}\"`);\n res.setHeader('Content-Type', mimeType);\n res.setHeader('Access-Control-Expose-Headers', 'Content-Disposition, Content-Type');\n // Pipe the strea to the response as an excel file\n stream.pipe(res);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post(':id/start-import/sync')\n async startImportSync(@Param('id') id: string, @ActiveUser() activeUser: ActiveUserData) {\n console.log(\"Active User in startImportSync:\", activeUser);\n return this.service.startImportSync(+id, activeUser);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post(':id/start-import/async')\n async startImportAsync(@Param('id') id: string) {\n return this.service.startImportAsync(+id);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Delete('/bulk')\n async deleteMany(@Body() ids: number[]) {\n return this.service.deleteMany(ids);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Delete(':id')\n async delete(@Param('id') id: number) {\n return this.service.delete(id);\n }\n\n}\n"]}
1
+ {"version":3,"file":"import-transaction.controller.js","sourceRoot":"","sources":["../../src/controllers/import-transaction.controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { Controller, Post, Body, Param, UploadedFiles, UseInterceptors, Put, Get, Query, Delete, Patch, InternalServerErrorException, Res } from '@nestjs/common';\nimport { AnyFilesInterceptor } from \"@nestjs/platform-express\";\nimport { ApiBearerAuth, ApiQuery, ApiTags } from '@nestjs/swagger';\nimport { ImportFormat, ImportTransactionService } from '../services/import-transaction.service';\nimport { CreateImportTransactionDto } from '../dtos/create-import-transaction.dto';\nimport { UpdateImportTransactionDto } from '../dtos/update-import-transaction.dto';\nimport { Response } from 'express';\nimport { ActiveUser } from 'src/decorators/active-user.decorator';\nimport { ActiveUserData } from 'src/interfaces/active-user-data.interface';\nimport { setFileDownloadHeaders } from 'src/helpers/file-download.helper';\n\nenum ShowSoftDeleted {\n INCLUSIVE = \"inclusive\",\n EXCLUSIVE = \"exclusive\",\n}\n\n@ApiTags('Solid Core')\n@Controller('import-transaction')\nexport class ImportTransactionController {\n constructor(private readonly service: ImportTransactionService) {}\n\n @ApiBearerAuth(\"jwt\")\n @Get('/import-template/:modelMetadataId/:format')\n async getImportTemplate(@Param('modelMetadataId') modelMetadataId: number, @Param('format') format: string, @Res() res: Response) {\n const importTemplateFileInfo = await this.service.getImportTemplate(+modelMetadataId, format as ImportFormat);\n if (importTemplateFileInfo.stream === null) {\n throw new InternalServerErrorException(\"Sample Import template stream is null\");\n }\n\n // ✅ Set response headers for streaming\n setFileDownloadHeaders(res, {\n fileName: importTemplateFileInfo.fileName,\n mimeType: importTemplateFileInfo.mimeType,\n });\n // Pipe the stream to the response as an excel file\n importTemplateFileInfo.stream.pipe(res);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Get('/import-instructions/:modelMetadataId')\n async getImportInstructions(@Param('modelMetadataId') modelMetadataId: number) {\n // return this.service.getImportInstructions(modelMetadataId);\n return this.service.getImportInstructions(modelMetadataId);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post()\n @UseInterceptors(AnyFilesInterceptor())\n create(@Body() createDto: CreateImportTransactionDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.create(createDto, files);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('/bulk')\n @UseInterceptors(AnyFilesInterceptor())\n insertMany(@Body() createDtos: CreateImportTransactionDto[], @UploadedFiles() filesArray: Express.Multer.File[][] = []) {\n return this.service.insertMany(createDtos, filesArray);\n }\n\n\n @ApiBearerAuth(\"jwt\")\n @Put(':id')\n @UseInterceptors(AnyFilesInterceptor())\n update(@Param('id') id: number, @Body() updateDto: UpdateImportTransactionDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.update(id, updateDto, files);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Patch(':id')\n @UseInterceptors(AnyFilesInterceptor())\n partialUpdate(@Param('id') id: number, @Body() updateDto: UpdateImportTransactionDto, @UploadedFiles() files: Array<Express.Multer.File>) {\n return this.service.update(id, updateDto, files, true);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post('/bulk-recover')\n async recoverMany(@Body() ids: number[]) {\n return this.service.recoverMany(ids);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Get('/recover/:id')\n async recover(@Param('id') id: number) {\n return this.service.recover(id);\n }\n \n @ApiBearerAuth(\"jwt\")\n @ApiQuery({ name: 'showSoftDeleted', required: false, enum: ShowSoftDeleted })\n @ApiQuery({ name: 'limit', required: false, type: Number })\n @ApiQuery({ name: 'offset', required: false, type: Number })\n @ApiQuery({ name: 'fields', required: false, type: Array })\n @ApiQuery({ name: 'sort', required: false, type: Array }) \n @ApiQuery({ name: 'groupBy', required: false, type: Array })\n @ApiQuery({ name: 'populate', required: false, type: Array })\n @ApiQuery({ name: 'populateMedia', required: false, type: Array })\n @ApiQuery({ name: 'filters', required: false, type: Array })\n @Get()\n async findMany(@Query() query: any) { \n return this.service.find(query); \n }\n\n @ApiBearerAuth(\"jwt\")\n @Get(':id')\n async findOne(@Param('id') id: string, @Query() query: any) {\n return this.service.findOne(+id, query);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Get(':id/import-mapping-info')\n async getImportMappingInfo(@Param('id') id: string) {\n return this.service.getImportMappingInfo(+id);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Get(':id/export-failed-import-records')\n async exportFailedImportedImports(@Param('id') id: string, @Res() res: Response) {\n const {stream, fileName, mimeType} = await this.service.exportFailedImportedImports(+id);\n if (stream === null) {\n throw new InternalServerErrorException(\"Failed records stream is null\");\n }\n // ✅ Set response headers for streaming\n setFileDownloadHeaders(res, { fileName, mimeType });\n // Pipe the strea to the response as an excel file\n stream.pipe(res);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post(':id/start-import/sync')\n async startImportSync(@Param('id') id: string, @ActiveUser() activeUser: ActiveUserData) {\n console.log(\"Active User in startImportSync:\", activeUser);\n return this.service.startImportSync(+id, activeUser);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Post(':id/start-import/async')\n async startImportAsync(@Param('id') id: string) {\n return this.service.startImportAsync(+id);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Delete('/bulk')\n async deleteMany(@Body() ids: number[]) {\n return this.service.deleteMany(ids);\n }\n\n @ApiBearerAuth(\"jwt\")\n @Delete(':id')\n async delete(@Param('id') id: number) {\n return this.service.delete(id);\n }\n\n}\n"]}
@@ -19,6 +19,6 @@ export declare class ListOfValuesController {
19
19
  findMany(query: any): Promise<any>;
20
20
  findOne(id: string, query: any): Promise<import("..").ListOfValues>;
21
21
  deleteMany(ids: number[]): Promise<any>;
22
- delete(id: number): Promise<import("..").ListOfValues>;
22
+ delete(id: number): Promise<import("..").ListOfValues[]>;
23
23
  }
24
24
  //# sourceMappingURL=list-of-values.controller.d.ts.map
@@ -165,7 +165,7 @@ __decorate([
165
165
  __decorate([
166
166
  (0, swagger_1.ApiBearerAuth)("jwt"),
167
167
  (0, common_1.Delete)(':id'),
168
- openapi.ApiResponse({ status: 200, type: require("../entities/list-of-values.entity").ListOfValues }),
168
+ openapi.ApiResponse({ status: 200, type: [require("../entities/list-of-values.entity").ListOfValues] }),
169
169
  __param(0, (0, common_1.Param)('id')),
170
170
  __metadata("design:type", Function),
171
171
  __metadata("design:paramtypes", [Number]),
@@ -19,6 +19,6 @@ export declare class LocaleController {
19
19
  findMany(query: any): Promise<any>;
20
20
  findOne(id: string, query: any): Promise<import("..").Locale>;
21
21
  deleteMany(ids: number[]): Promise<any>;
22
- delete(id: number): Promise<import("..").Locale>;
22
+ delete(id: number): Promise<import("..").Locale[]>;
23
23
  }
24
24
  //# sourceMappingURL=locale.controller.d.ts.map
@@ -165,7 +165,7 @@ __decorate([
165
165
  __decorate([
166
166
  (0, swagger_1.ApiBearerAuth)("jwt"),
167
167
  (0, common_1.Delete)(':id'),
168
- openapi.ApiResponse({ status: 200, type: require("../entities/locale.entity").Locale }),
168
+ openapi.ApiResponse({ status: 200, type: [require("../entities/locale.entity").Locale] }),
169
169
  __param(0, (0, common_1.Param)('id')),
170
170
  __metadata("design:type", Function),
171
171
  __metadata("design:paramtypes", [Number]),
@@ -11,6 +11,6 @@ export declare class McpAuditLogController {
11
11
  findMany(query: any): Promise<any>;
12
12
  findOne(id: string, query: any): Promise<import("..").McpAuditLog>;
13
13
  deleteMany(ids: number[]): Promise<any>;
14
- delete(id: number): Promise<import("..").McpAuditLog>;
14
+ delete(id: number): Promise<import("..").McpAuditLog[]>;
15
15
  }
16
16
  //# sourceMappingURL=mcp-audit-log.controller.d.ts.map
@@ -133,7 +133,7 @@ __decorate([
133
133
  __decorate([
134
134
  (0, swagger_1.ApiBearerAuth)('jwt'),
135
135
  (0, common_1.Delete)(':id'),
136
- openapi.ApiResponse({ status: 200, type: require("../entities/mcp-audit-log.entity").McpAuditLog }),
136
+ openapi.ApiResponse({ status: 200, type: [require("../entities/mcp-audit-log.entity").McpAuditLog] }),
137
137
  __param(0, (0, common_1.Param)('id')),
138
138
  __metadata("design:type", Function),
139
139
  __metadata("design:paramtypes", [Number]),
@@ -23,6 +23,6 @@ export declare class MediaController {
23
23
  download(id: string, disposition: string, res: Response, solidRequestContext: SolidRequestContextDto): Promise<void>;
24
24
  findOne(id: string, query: any, solidRequestContext: SolidRequestContextDto): Promise<import("..").Media>;
25
25
  deleteMany(ids: number[], solidRequestContext: SolidRequestContextDto): Promise<any>;
26
- delete(id: number, solidRequestContext: SolidRequestContextDto): Promise<import("..").Media>;
26
+ delete(id: number, solidRequestContext: SolidRequestContextDto): Promise<import("..").Media[]>;
27
27
  }
28
28
  //# sourceMappingURL=media.controller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"media.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/media.controller.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAOnC,qBAIa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,YAAY;IAKlD,MAAM,CAAS,SAAS,EAAE,cAAc,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAkC,mBAAmB,EAAE,sBAAsB;IAOzK,UAAU,CAAS,UAAU,EAAE,cAAc,EAAE,EAAmB,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAO,EAAkC,mBAAmB,EAAE,sBAAsB;IAQvL,MAAM,CAAc,EAAE,EAAE,MAAM,EAAU,SAAS,EAAE,cAAc,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAkC,mBAAmB,EAAE,sBAAsB;IAOlM,aAAa,CAAc,EAAE,EAAE,MAAM,EAAU,SAAS,EAAE,cAAc,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAkC,mBAAmB,EAAE,sBAAsB;IASzM,MAAM,CAAkB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAU,SAAS,EAAE,cAAc,EAAkC,mBAAmB,EAAE,sBAAsB;IAQnK,WAAW,CAAS,GAAG,EAAE,MAAM,EAAE,EAAkC,mBAAmB,EAAE,sBAAsB;;;;IAM9G,OAAO,CAAc,EAAE,EAAE,MAAM,EAAkC,mBAAmB,EAAE,sBAAsB;;;;IAe5G,QAAQ,CAAU,KAAK,EAAE,GAAG,EAAkC,mBAAmB,EAAE,sBAAsB;IAQzG,QAAQ,CAAc,EAAE,EAAE,MAAM,EAAwB,WAAW,EAAE,MAAM,EAAS,GAAG,EAAE,QAAQ,EAAkC,mBAAmB,EAAE,sBAAsB;IAc9K,OAAO,CAAc,EAAE,EAAE,MAAM,EAAW,KAAK,EAAE,GAAG,EAAkC,mBAAmB,EAAE,sBAAsB;IAMjI,UAAU,CAAS,GAAG,EAAE,MAAM,EAAE,EAAkC,mBAAmB,EAAE,sBAAsB;IAM7G,MAAM,CAAc,EAAE,EAAE,MAAM,EAAkC,mBAAmB,EAAE,sBAAsB;CAKlH"}
1
+ {"version":3,"file":"media.controller.d.ts","sourceRoot":"","sources":["../../src/controllers/media.controller.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AASnC,qBAIa,eAAe;IACd,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,YAAY;IAKlD,MAAM,CAAS,SAAS,EAAE,cAAc,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAkC,mBAAmB,EAAE,sBAAsB;IAOzK,UAAU,CAAS,UAAU,EAAE,cAAc,EAAE,EAAmB,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAO,EAAkC,mBAAmB,EAAE,sBAAsB;IAQvL,MAAM,CAAc,EAAE,EAAE,MAAM,EAAU,SAAS,EAAE,cAAc,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAkC,mBAAmB,EAAE,sBAAsB;IAOlM,aAAa,CAAc,EAAE,EAAE,MAAM,EAAU,SAAS,EAAE,cAAc,EAAmB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAkC,mBAAmB,EAAE,sBAAsB;IASzM,MAAM,CAAkB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAU,SAAS,EAAE,cAAc,EAAkC,mBAAmB,EAAE,sBAAsB;IAQnK,WAAW,CAAS,GAAG,EAAE,MAAM,EAAE,EAAkC,mBAAmB,EAAE,sBAAsB;;;;IAM9G,OAAO,CAAc,EAAE,EAAE,MAAM,EAAkC,mBAAmB,EAAE,sBAAsB;;;;IAe5G,QAAQ,CAAU,KAAK,EAAE,GAAG,EAAkC,mBAAmB,EAAE,sBAAsB;IAQzG,QAAQ,CAAc,EAAE,EAAE,MAAM,EAAwB,WAAW,EAAE,MAAM,EAAS,GAAG,EAAE,QAAQ,EAAkC,mBAAmB,EAAE,sBAAsB;IAuB9K,OAAO,CAAc,EAAE,EAAE,MAAM,EAAW,KAAK,EAAE,GAAG,EAAkC,mBAAmB,EAAE,sBAAsB;IAMjI,UAAU,CAAS,GAAG,EAAE,MAAM,EAAE,EAAkC,mBAAmB,EAAE,sBAAsB;IAM7G,MAAM,CAAc,EAAE,EAAE,MAAM,EAAkC,mBAAmB,EAAE,sBAAsB;CAKlH"}
@@ -24,6 +24,8 @@ const solid_request_context_decorator_1 = require("../decorators/solid-request-c
24
24
  const solid_request_context_dto_1 = require("../dtos/solid-request-context.dto");
25
25
  const update_media_dto_1 = require("../dtos/update-media.dto");
26
26
  const media_service_1 = require("../services/media.service");
27
+ const media_file_types_1 = require("../constants/media-file-types");
28
+ const file_download_helper_1 = require("../helpers/file-download.helper");
27
29
  var ShowSoftDeleted;
28
30
  (function (ShowSoftDeleted) {
29
31
  ShowSoftDeleted["INCLUSIVE"] = "inclusive";
@@ -60,11 +62,14 @@ let MediaController = class MediaController {
60
62
  async download(id, disposition, res, solidRequestContext) {
61
63
  const media = await this.service.findOne(+id, {}, solidRequestContext);
62
64
  const { stream, fileName, mimeType } = await this.service.fileDownloadStream(media);
63
- const contentDisposition = disposition === 'attachment' ? 'attachment' : 'inline';
64
- res.setHeader('Content-Disposition', `${contentDisposition}; filename="${fileName}"`);
65
- res.setHeader('Content-Type', mimeType);
66
- res.setHeader('Cross-Origin-Resource-Policy', 'cross-origin');
67
- res.setHeader('Access-Control-Expose-Headers', 'Content-Disposition, Content-Type');
65
+ const isInlineSafe = media_file_types_1.INLINE_SAFE_EXTENSIONS.has((0, media_file_types_1.getLowercaseFileExtension)(fileName) ?? '');
66
+ const requestedInline = disposition !== 'attachment';
67
+ (0, file_download_helper_1.setFileDownloadHeaders)(res, {
68
+ fileName,
69
+ mimeType: isInlineSafe ? mimeType : 'application/octet-stream',
70
+ disposition: requestedInline && isInlineSafe ? 'inline' : 'attachment',
71
+ crossOriginResourcePolicy: true,
72
+ });
68
73
  stream.pipe(res);
69
74
  }
70
75
  async findOne(id, query, solidRequestContext) {
@@ -182,7 +187,7 @@ __decorate([
182
187
  __decorate([
183
188
  (0, auth_decorator_1.Auth)(auth_type_enum_1.AuthType.MediaSignedUrl),
184
189
  (0, swagger_1.ApiQuery)({ name: 'token', required: true, type: String, description: "Short-lived signed token obtained from a private Media record's URL - not entered manually." }),
185
- (0, swagger_1.ApiQuery)({ name: 'disposition', required: false, enum: ['inline', 'attachment'], description: "'inline' (default) renders/previews in the browser, matching public media. Pass 'attachment' to force a browser download (e.g. from a download button)." }),
190
+ (0, swagger_1.ApiQuery)({ name: 'disposition', required: false, enum: ['inline', 'attachment'], description: "'inline' (default) renders/previews in the browser, matching public media - it applies only to types safe to render inline (images, audio, video, pdf); anything else is always downloaded. Pass 'attachment' to force a browser download (e.g. from a download button)." }),
186
191
  (0, common_1.Get)(':id/download'),
187
192
  openapi.ApiResponse({ status: 200 }),
188
193
  __param(0, (0, common_1.Param)('id')),
@@ -217,7 +222,7 @@ __decorate([
217
222
  __decorate([
218
223
  (0, swagger_1.ApiBearerAuth)("jwt"),
219
224
  (0, common_1.Delete)(':id'),
220
- openapi.ApiResponse({ status: 200, type: require("../entities/media.entity").Media }),
225
+ openapi.ApiResponse({ status: 200, type: [require("../entities/media.entity").Media] }),
221
226
  __param(0, (0, common_1.Param)('id')),
222
227
  __param(1, (0, solid_request_context_decorator_1.SolidRequestContextDecorator)()),
223
228
  __metadata("design:type", Function),