@comet/cms-api 9.0.0-beta.2 → 9.0.0-beta.4

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 (689) hide show
  1. package/lib/access-log/access-log.interceptor.d.ts.map +1 -1
  2. package/lib/access-log/access-log.interceptor.js +6 -6
  3. package/lib/access-log/access-log.interceptor.js.map +1 -1
  4. package/lib/auth/guards/comet.guard.d.ts.map +1 -1
  5. package/lib/auth/guards/comet.guard.js +48 -58
  6. package/lib/auth/guards/comet.guard.js.map +1 -1
  7. package/lib/auth/resolver/auth.resolver.js +16 -31
  8. package/lib/auth/resolver/auth.resolver.js.map +1 -1
  9. package/lib/auth/services/basic.auth-service.d.ts.map +1 -1
  10. package/lib/auth/services/basic.auth-service.js +11 -7
  11. package/lib/auth/services/basic.auth-service.js.map +1 -1
  12. package/lib/auth/services/jwt.auth-service.d.ts.map +1 -1
  13. package/lib/auth/services/jwt.auth-service.js +51 -73
  14. package/lib/auth/services/jwt.auth-service.js.map +1 -1
  15. package/lib/auth/services/site-preview.auth-service.d.ts.map +1 -1
  16. package/lib/auth/services/site-preview.auth-service.js +23 -33
  17. package/lib/auth/services/site-preview.auth-service.js.map +1 -1
  18. package/lib/auth/util/auth-guard.providers.d.ts +2 -2
  19. package/lib/auth/util/auth-guard.providers.d.ts.map +1 -1
  20. package/lib/auth/util/auth-service.interface.d.ts +2 -2
  21. package/lib/auth/util/auth-service.interface.d.ts.map +1 -1
  22. package/lib/blob-storage/backends/azure/blob-storage-azure.storage.d.ts +3 -2
  23. package/lib/blob-storage/backends/azure/blob-storage-azure.storage.d.ts.map +1 -1
  24. package/lib/blob-storage/backends/azure/blob-storage-azure.storage.js +73 -94
  25. package/lib/blob-storage/backends/azure/blob-storage-azure.storage.js.map +1 -1
  26. package/lib/blob-storage/backends/blob-storage-backend.interface.d.ts +2 -1
  27. package/lib/blob-storage/backends/blob-storage-backend.interface.d.ts.map +1 -1
  28. package/lib/blob-storage/backends/blob-storage-backend.service.d.ts +5 -2
  29. package/lib/blob-storage/backends/blob-storage-backend.service.d.ts.map +1 -1
  30. package/lib/blob-storage/backends/blob-storage-backend.service.js +79 -79
  31. package/lib/blob-storage/backends/blob-storage-backend.service.js.map +1 -1
  32. package/lib/blob-storage/backends/file/blob-storage-file.storage.d.ts +3 -2
  33. package/lib/blob-storage/backends/file/blob-storage-file.storage.d.ts.map +1 -1
  34. package/lib/blob-storage/backends/file/blob-storage-file.storage.js +77 -95
  35. package/lib/blob-storage/backends/file/blob-storage-file.storage.js.map +1 -1
  36. package/lib/blob-storage/backends/s3/blob-storage-s3.config.d.ts +1 -1
  37. package/lib/blob-storage/backends/s3/blob-storage-s3.config.d.ts.map +1 -1
  38. package/lib/blob-storage/backends/s3/blob-storage-s3.storage.d.ts +3 -2
  39. package/lib/blob-storage/backends/s3/blob-storage-s3.storage.d.ts.map +1 -1
  40. package/lib/blob-storage/backends/s3/blob-storage-s3.storage.js +112 -116
  41. package/lib/blob-storage/backends/s3/blob-storage-s3.storage.js.map +1 -1
  42. package/lib/blob-storage/blob-storage.config.d.ts +3 -3
  43. package/lib/blob-storage/blob-storage.config.d.ts.map +1 -1
  44. package/lib/blob-storage/cache/dto/file-cache.interface.d.ts +1 -1
  45. package/lib/blob-storage/cache/dto/file-cache.interface.d.ts.map +1 -1
  46. package/lib/blob-storage/cache/scaled-images-cache.service.js +38 -53
  47. package/lib/blob-storage/cache/scaled-images-cache.service.js.map +1 -1
  48. package/lib/blocks/SpaceBlock/migrations/MigrationTo1.d.ts +1 -1
  49. package/lib/blocks/SpaceBlock/migrations/MigrationTo1.d.ts.map +1 -1
  50. package/lib/blocks/SpaceBlock/migrations/MigrationTo1.js +4 -1
  51. package/lib/blocks/SpaceBlock/migrations/MigrationTo1.js.map +1 -1
  52. package/lib/blocks/SpaceBlock/migrations/MigrationTo2.d.ts +1 -1
  53. package/lib/blocks/SpaceBlock/migrations/MigrationTo2.d.ts.map +1 -1
  54. package/lib/blocks/SpaceBlock/migrations/MigrationTo2.js +1 -12
  55. package/lib/blocks/SpaceBlock/migrations/MigrationTo2.js.map +1 -1
  56. package/lib/blocks/YouTubeVideoBlock/migrations/1-remove-aspect-ratio.migration.d.ts +1 -1
  57. package/lib/blocks/YouTubeVideoBlock/migrations/1-remove-aspect-ratio.migration.d.ts.map +1 -1
  58. package/lib/blocks/YouTubeVideoBlock/migrations/1-remove-aspect-ratio.migration.js +2 -14
  59. package/lib/blocks/YouTubeVideoBlock/migrations/1-remove-aspect-ratio.migration.js.map +1 -1
  60. package/lib/blocks/YouTubeVideoBlock/migrations/2-add-preview-image.migration.d.ts +1 -1
  61. package/lib/blocks/YouTubeVideoBlock/migrations/2-add-preview-image.migration.d.ts.map +1 -1
  62. package/lib/blocks/YouTubeVideoBlock/migrations/2-add-preview-image.migration.js +1 -1
  63. package/lib/blocks/YouTubeVideoBlock/migrations/2-add-preview-image.migration.js.map +1 -1
  64. package/lib/blocks/block-migrate.service.d.ts.map +1 -1
  65. package/lib/blocks/block-migrate.service.js +64 -73
  66. package/lib/blocks/block-migrate.service.js.map +1 -1
  67. package/lib/blocks/block.d.ts +4 -4
  68. package/lib/blocks/block.d.ts.map +1 -1
  69. package/lib/blocks/block.js +5 -18
  70. package/lib/blocks/block.js.map +1 -1
  71. package/lib/blocks/blocks-meta.service.js +14 -25
  72. package/lib/blocks/blocks-meta.service.js.map +1 -1
  73. package/lib/blocks/blocks-transformer-middleware.factory.d.ts +1 -1
  74. package/lib/blocks/blocks-transformer-middleware.factory.d.ts.map +1 -1
  75. package/lib/blocks/blocks-transformer-middleware.factory.js +3 -12
  76. package/lib/blocks/blocks-transformer-middleware.factory.js.map +1 -1
  77. package/lib/blocks/blocks-transformer.d.ts +1 -1
  78. package/lib/blocks/blocks-transformer.d.ts.map +1 -1
  79. package/lib/blocks/blocks-transformer.js +30 -43
  80. package/lib/blocks/blocks-transformer.js.map +1 -1
  81. package/lib/blocks/blocks-transformer.service.js +3 -14
  82. package/lib/blocks/blocks-transformer.service.js.map +1 -1
  83. package/lib/blocks/create-block-index-views.command.js +2 -13
  84. package/lib/blocks/create-block-index-views.command.js.map +1 -1
  85. package/lib/blocks/decorators/child-block-input.js +2 -2
  86. package/lib/blocks/decorators/child-block-input.js.map +1 -1
  87. package/lib/blocks/decorators/child-block.js +1 -1
  88. package/lib/blocks/decorators/child-block.js.map +1 -1
  89. package/lib/blocks/decorators/field.js +1 -2
  90. package/lib/blocks/decorators/field.js.map +1 -1
  91. package/lib/blocks/decorators/root-block-entity.d.ts +1 -1
  92. package/lib/blocks/decorators/root-block-entity.d.ts.map +1 -1
  93. package/lib/blocks/decorators/root-block.d.ts +1 -1
  94. package/lib/blocks/decorators/root-block.d.ts.map +1 -1
  95. package/lib/blocks/factories/columns-block.factory.js +13 -18
  96. package/lib/blocks/factories/columns-block.factory.js.map +1 -1
  97. package/lib/blocks/factories/createBlocksBlock.js +14 -35
  98. package/lib/blocks/factories/createBlocksBlock.js.map +1 -1
  99. package/lib/blocks/factories/createListBlock.js +16 -33
  100. package/lib/blocks/factories/createListBlock.js.map +1 -1
  101. package/lib/blocks/factories/createOneOfBlock.js +20 -35
  102. package/lib/blocks/factories/createOneOfBlock.js.map +1 -1
  103. package/lib/blocks/factories/createOptionalBlock.js +5 -16
  104. package/lib/blocks/factories/createOptionalBlock.js.map +1 -1
  105. package/lib/blocks/factories/createRichTextBlock.js +33 -31
  106. package/lib/blocks/factories/createRichTextBlock.js.map +1 -1
  107. package/lib/blocks/factories/createSeoBlock.js +14 -25
  108. package/lib/blocks/factories/createSeoBlock.js.map +1 -1
  109. package/lib/blocks/factories/createTableBlock.js +5 -1
  110. package/lib/blocks/factories/createTableBlock.js.map +1 -1
  111. package/lib/blocks/factories/types.d.ts +1 -1
  112. package/lib/blocks/factories/types.d.ts.map +1 -1
  113. package/lib/blocks/flat-blocks/flat-blocks.d.ts +1 -1
  114. package/lib/blocks/flat-blocks/flat-blocks.d.ts.map +1 -1
  115. package/lib/blocks/flat-blocks/visit-blocks-breadth-first.d.ts +1 -1
  116. package/lib/blocks/flat-blocks/visit-blocks-breadth-first.d.ts.map +1 -1
  117. package/lib/blocks/flat-blocks/visit-blocks-breadth-first.js +3 -3
  118. package/lib/blocks/flat-blocks/visit-blocks-breadth-first.js.map +1 -1
  119. package/lib/blocks/flat-blocks/visit-blocks-depth-first.d.ts +2 -2
  120. package/lib/blocks/flat-blocks/visit-blocks-depth-first.d.ts.map +1 -1
  121. package/lib/blocks/flat-blocks/visit-blocks-depth-first.js +3 -3
  122. package/lib/blocks/flat-blocks/visit-blocks-depth-first.js.map +1 -1
  123. package/lib/blocks/get-preview-image-url-templates.d.ts +1 -1
  124. package/lib/blocks/get-preview-image-url-templates.d.ts.map +1 -1
  125. package/lib/blocks/get-preview-image-url-templates.js +13 -26
  126. package/lib/blocks/get-preview-image-url-templates.js.map +1 -1
  127. package/lib/blocks/helpers/composeBlocks.js +10 -17
  128. package/lib/blocks/helpers/composeBlocks.js.map +1 -1
  129. package/lib/blocks/migrate-blocks.command.d.ts +5 -1
  130. package/lib/blocks/migrate-blocks.command.d.ts.map +1 -1
  131. package/lib/blocks/migrate-blocks.command.js +17 -13
  132. package/lib/blocks/migrate-blocks.command.js.map +1 -1
  133. package/lib/blocks/migrations/BlockMigration.d.ts +1 -1
  134. package/lib/blocks/migrations/BlockMigration.d.ts.map +1 -1
  135. package/lib/blocks/migrations/BlockMigration.js +5 -13
  136. package/lib/blocks/migrations/BlockMigration.js.map +1 -1
  137. package/lib/blocks/migrations/applyMigrations.d.ts +1 -1
  138. package/lib/blocks/migrations/applyMigrations.d.ts.map +1 -1
  139. package/lib/blocks/migrations/createAppliedMigrationsBlockDataFactoryDecorator.d.ts +2 -2
  140. package/lib/blocks/migrations/createAppliedMigrationsBlockDataFactoryDecorator.d.ts.map +1 -1
  141. package/lib/blocks/migrations/decorators/BlockDataMigrationVersion.d.ts +1 -1
  142. package/lib/blocks/migrations/decorators/BlockDataMigrationVersion.d.ts.map +1 -1
  143. package/lib/blocks/migrations/decorators/BlockDataMigrationVersion.js +11 -19
  144. package/lib/blocks/migrations/decorators/BlockDataMigrationVersion.js.map +1 -1
  145. package/lib/blocks/migrations/typeSafeBlockMigrationPipe.d.ts +1 -1
  146. package/lib/blocks/migrations/typeSafeBlockMigrationPipe.d.ts.map +1 -1
  147. package/lib/blocks/refresh-block-index-views.command.js +2 -13
  148. package/lib/blocks/refresh-block-index-views.command.js.map +1 -1
  149. package/lib/blocks/rootBlocks/root-block-data.scalar.d.ts +1 -1
  150. package/lib/blocks/rootBlocks/root-block-data.scalar.d.ts.map +1 -1
  151. package/lib/blocks/rootBlocks/root-block-data.scalar.js +5 -1
  152. package/lib/blocks/rootBlocks/root-block-data.scalar.js.map +1 -1
  153. package/lib/blocks/rootBlocks/root-block-input.scalar.d.ts +1 -1
  154. package/lib/blocks/rootBlocks/root-block-input.scalar.d.ts.map +1 -1
  155. package/lib/blocks/rootBlocks/root-block-input.scalar.js +5 -1
  156. package/lib/blocks/rootBlocks/root-block-input.scalar.js.map +1 -1
  157. package/lib/blocks/search/get-search-text.d.ts +3 -1
  158. package/lib/blocks/search/get-search-text.d.ts.map +1 -1
  159. package/lib/blocks/search/get-search-text.js +26 -0
  160. package/lib/blocks/search/get-search-text.js.map +1 -1
  161. package/lib/blocks/tipTap/createTipTapRichTextBlock.d.ts +44 -0
  162. package/lib/blocks/tipTap/createTipTapRichTextBlock.d.ts.map +1 -0
  163. package/lib/blocks/tipTap/createTipTapRichTextBlock.js +346 -0
  164. package/lib/blocks/tipTap/createTipTapRichTextBlock.js.map +1 -0
  165. package/lib/blocks/tipTap/extensions/BlockStyleHeading.d.ts +2 -0
  166. package/lib/blocks/tipTap/extensions/BlockStyleHeading.d.ts.map +1 -0
  167. package/lib/blocks/tipTap/extensions/BlockStyleHeading.js +18 -0
  168. package/lib/blocks/tipTap/extensions/BlockStyleHeading.js.map +1 -0
  169. package/lib/blocks/tipTap/extensions/BlockStyleParagraph.d.ts +2 -0
  170. package/lib/blocks/tipTap/extensions/BlockStyleParagraph.d.ts.map +1 -0
  171. package/lib/blocks/tipTap/extensions/BlockStyleParagraph.js +18 -0
  172. package/lib/blocks/tipTap/extensions/BlockStyleParagraph.js.map +1 -0
  173. package/lib/blocks/tipTap/extensions/CmsLink.d.ts +3 -0
  174. package/lib/blocks/tipTap/extensions/CmsLink.d.ts.map +1 -0
  175. package/lib/blocks/tipTap/extensions/CmsLink.js +22 -0
  176. package/lib/blocks/tipTap/extensions/CmsLink.js.map +1 -0
  177. package/lib/blocks/tipTap/extensions/InlineStyleMark.d.ts +3 -0
  178. package/lib/blocks/tipTap/extensions/InlineStyleMark.d.ts.map +1 -0
  179. package/lib/blocks/tipTap/extensions/InlineStyleMark.js +24 -0
  180. package/lib/blocks/tipTap/extensions/InlineStyleMark.js.map +1 -0
  181. package/lib/blocks/tipTap/extensions/NonBreakingSpace.d.ts +3 -0
  182. package/lib/blocks/tipTap/extensions/NonBreakingSpace.d.ts.map +1 -0
  183. package/lib/blocks/tipTap/extensions/NonBreakingSpace.js +18 -0
  184. package/lib/blocks/tipTap/extensions/NonBreakingSpace.js.map +1 -0
  185. package/lib/blocks/tipTap/extensions/SoftHyphen.d.ts +3 -0
  186. package/lib/blocks/tipTap/extensions/SoftHyphen.d.ts.map +1 -0
  187. package/lib/blocks/tipTap/extensions/SoftHyphen.js +18 -0
  188. package/lib/blocks/tipTap/extensions/SoftHyphen.js.map +1 -0
  189. package/lib/blocks/transformToBlockSaveIndex/transformToBlockSaveIndex.d.ts +1 -1
  190. package/lib/blocks/transformToBlockSaveIndex/transformToBlockSaveIndex.d.ts.map +1 -1
  191. package/lib/blocks/transformToBlockSaveIndex/transformToBlockSaveIndex.js +1 -1
  192. package/lib/blocks/transformToBlockSaveIndex/transformToBlockSaveIndex.js.map +1 -1
  193. package/lib/builds/build-templates.resolver.js +7 -21
  194. package/lib/builds/build-templates.resolver.js.map +1 -1
  195. package/lib/builds/build-templates.service.js +6 -20
  196. package/lib/builds/build-templates.service.js.map +1 -1
  197. package/lib/builds/builds.resolver.js +16 -32
  198. package/lib/builds/builds.resolver.js.map +1 -1
  199. package/lib/builds/builds.service.js +106 -142
  200. package/lib/builds/builds.service.js.map +1 -1
  201. package/lib/builds/changes-checker.command.js +17 -28
  202. package/lib/builds/changes-checker.command.js.map +1 -1
  203. package/lib/builds/changes-checker.interceptor.js +34 -45
  204. package/lib/builds/changes-checker.interceptor.js.map +1 -1
  205. package/lib/common/decorators/crud-generator.decorator.d.ts +4 -4
  206. package/lib/common/decorators/crud-generator.decorator.d.ts.map +1 -1
  207. package/lib/common/decorators/request-context.decorator.d.ts +1 -1
  208. package/lib/common/decorators/request-context.decorator.d.ts.map +1 -1
  209. package/lib/common/decorators/utils.d.ts +1 -1
  210. package/lib/common/decorators/utils.d.ts.map +1 -1
  211. package/lib/common/enum/core-permission.enum.d.ts +2 -1
  212. package/lib/common/enum/core-permission.enum.d.ts.map +1 -1
  213. package/lib/common/enum/core-permission.enum.js +1 -0
  214. package/lib/common/enum/core-permission.enum.js.map +1 -1
  215. package/lib/common/errors/validation.exception-factory.d.ts +1 -1
  216. package/lib/common/errors/validation.exception-factory.d.ts.map +1 -1
  217. package/lib/common/errors/validation.exception.d.ts +1 -1
  218. package/lib/common/errors/validation.exception.d.ts.map +1 -1
  219. package/lib/common/filter/mikro-orm.d.ts +1 -1
  220. package/lib/common/filter/mikro-orm.d.ts.map +1 -1
  221. package/lib/common/filter/mikro-orm.js +5 -7
  222. package/lib/common/filter/mikro-orm.js.map +1 -1
  223. package/lib/common/graphql/extract-graphql-fields.d.ts +1 -1
  224. package/lib/common/graphql/extract-graphql-fields.d.ts.map +1 -1
  225. package/lib/common/graphql/extract-graphql-fields.js +2 -1
  226. package/lib/common/graphql/extract-graphql-fields.js.map +1 -1
  227. package/lib/common/helper/crud-generator.helper.d.ts +1 -1
  228. package/lib/common/helper/crud-generator.helper.d.ts.map +1 -1
  229. package/lib/common/helper/crud-generator.helper.js +2 -3
  230. package/lib/common/helper/crud-generator.helper.js.map +1 -1
  231. package/lib/common/helper/is-injectable-service.helper.d.ts +1 -1
  232. package/lib/common/helper/is-injectable-service.helper.d.ts.map +1 -1
  233. package/lib/common/helper/partial-type.helper.d.ts +2 -2
  234. package/lib/common/helper/partial-type.helper.d.ts.map +1 -1
  235. package/lib/common/helper/partial-type.helper.js +8 -8
  236. package/lib/common/helper/partial-type.helper.js.map +1 -1
  237. package/lib/common/test/get-error.js +3 -12
  238. package/lib/common/test/get-error.js.map +1 -1
  239. package/lib/common/validators/is-slug.js +3 -14
  240. package/lib/common/validators/is-slug.js.map +1 -1
  241. package/lib/content-generation/azure-open-ai/azure-open-ai-content-generation.service.js +94 -113
  242. package/lib/content-generation/azure-open-ai/azure-open-ai-content-generation.service.js.map +1 -1
  243. package/lib/content-generation/generate-alt-text.resolver.d.ts.map +1 -1
  244. package/lib/content-generation/generate-alt-text.resolver.js +6 -17
  245. package/lib/content-generation/generate-alt-text.resolver.js.map +1 -1
  246. package/lib/content-generation/generate-image-title.resolver.d.ts.map +1 -1
  247. package/lib/content-generation/generate-image-title.resolver.js +6 -17
  248. package/lib/content-generation/generate-image-title.resolver.js.map +1 -1
  249. package/lib/content-generation/generate-seo-tags.resolver.d.ts.map +1 -1
  250. package/lib/content-generation/generate-seo-tags.resolver.js +6 -17
  251. package/lib/content-generation/generate-seo-tags.resolver.js.map +1 -1
  252. package/lib/cron-jobs/cron-jobs.resolver.js +37 -54
  253. package/lib/cron-jobs/cron-jobs.resolver.js.map +1 -1
  254. package/lib/cron-jobs/cron-jobs.service.js +6 -7
  255. package/lib/cron-jobs/cron-jobs.service.js.map +1 -1
  256. package/lib/cron-jobs/jobs.resolver.js +22 -37
  257. package/lib/cron-jobs/jobs.resolver.js.map +1 -1
  258. package/lib/cron-jobs/jobs.service.js +5 -6
  259. package/lib/cron-jobs/jobs.service.js.map +1 -1
  260. package/lib/dam/blocks/dam-file-download-link-block-transformer.service.js +28 -33
  261. package/lib/dam/blocks/dam-file-download-link-block-transformer.service.js.map +1 -1
  262. package/lib/dam/blocks/dam-file-download-link.block.js +2 -13
  263. package/lib/dam/blocks/dam-file-download-link.block.js.map +1 -1
  264. package/lib/dam/blocks/pixel-image-block-transformer.service.js +35 -46
  265. package/lib/dam/blocks/pixel-image-block-transformer.service.js.map +1 -1
  266. package/lib/dam/blocks/pixel-image.block.js +11 -24
  267. package/lib/dam/blocks/pixel-image.block.js.map +1 -1
  268. package/lib/dam/blocks/svg-image-block-transformer.service.js +23 -34
  269. package/lib/dam/blocks/svg-image-block-transformer.service.js.map +1 -1
  270. package/lib/dam/blocks/svg-image.block.js +2 -13
  271. package/lib/dam/blocks/svg-image.block.js.map +1 -1
  272. package/lib/dam/blocks/video/dam-video-block-transformer.service.js +34 -45
  273. package/lib/dam/blocks/video/dam-video-block-transformer.service.js.map +1 -1
  274. package/lib/dam/blocks/video/dam-video.block.js +2 -13
  275. package/lib/dam/blocks/video/dam-video.block.js.map +1 -1
  276. package/lib/dam/blocks/video/migrations/1-add-preview-image.migration.d.ts +1 -1
  277. package/lib/dam/blocks/video/migrations/1-add-preview-image.migration.d.ts.map +1 -1
  278. package/lib/dam/blocks/video/migrations/1-add-preview-image.migration.js +1 -1
  279. package/lib/dam/blocks/video/migrations/1-add-preview-image.migration.js.map +1 -1
  280. package/lib/dam/common/decorators/has-valid-filename.decorator.js +23 -35
  281. package/lib/dam/common/decorators/has-valid-filename.decorator.js.map +1 -1
  282. package/lib/dam/dam.module.js +8 -18
  283. package/lib/dam/dam.module.js.map +1 -1
  284. package/lib/dam/files/dam-items.resolver.js +7 -20
  285. package/lib/dam/files/dam-items.resolver.js.map +1 -1
  286. package/lib/dam/files/dam-items.service.js +50 -76
  287. package/lib/dam/files/dam-items.service.js.map +1 -1
  288. package/lib/dam/files/dam-media-alternatives/dam-media-alternative.resolver.js +74 -102
  289. package/lib/dam/files/dam-media-alternatives/dam-media-alternative.resolver.js.map +1 -1
  290. package/lib/dam/files/dam-media-alternatives/entities/dam-media-alternative.entity.js +3 -13
  291. package/lib/dam/files/dam-media-alternatives/entities/dam-media-alternative.entity.js.map +1 -1
  292. package/lib/dam/files/dam-upload-file.interceptor.js +10 -21
  293. package/lib/dam/files/dam-upload-file.interceptor.js.map +1 -1
  294. package/lib/dam/files/dto/file.args.d.ts +1 -0
  295. package/lib/dam/files/dto/file.args.d.ts.map +1 -1
  296. package/lib/dam/files/dto/file.args.js +6 -0
  297. package/lib/dam/files/dto/file.args.js.map +1 -1
  298. package/lib/dam/files/file-image.resolver.js +8 -19
  299. package/lib/dam/files/file-image.resolver.js.map +1 -1
  300. package/lib/dam/files/file-warning.service.d.ts.map +1 -1
  301. package/lib/dam/files/file-warning.service.js +64 -90
  302. package/lib/dam/files/file-warning.service.js.map +1 -1
  303. package/lib/dam/files/files.controller.d.ts.map +1 -1
  304. package/lib/dam/files/files.controller.js +182 -210
  305. package/lib/dam/files/files.controller.js.map +1 -1
  306. package/lib/dam/files/files.resolver.d.ts.map +1 -1
  307. package/lib/dam/files/files.resolver.js +101 -167
  308. package/lib/dam/files/files.resolver.js.map +1 -1
  309. package/lib/dam/files/files.service.d.ts +1 -0
  310. package/lib/dam/files/files.service.d.ts.map +1 -1
  311. package/lib/dam/files/files.service.js +435 -437
  312. package/lib/dam/files/files.service.js.map +1 -1
  313. package/lib/dam/files/folders.controller.js +13 -24
  314. package/lib/dam/files/folders.controller.js.map +1 -1
  315. package/lib/dam/files/folders.resolver.js +25 -52
  316. package/lib/dam/files/folders.resolver.js.map +1 -1
  317. package/lib/dam/files/folders.service.d.ts.map +1 -1
  318. package/lib/dam/files/folders.service.js +201 -240
  319. package/lib/dam/files/folders.service.js.map +1 -1
  320. package/lib/dam/images/calculateDominantImageColor.command.js +14 -45
  321. package/lib/dam/images/calculateDominantImageColor.command.js.map +1 -1
  322. package/lib/dam/images/dto/image.interface.d.ts +2 -2
  323. package/lib/dam/images/dto/image.interface.d.ts.map +1 -1
  324. package/lib/dam/images/images.controller.js +134 -165
  325. package/lib/dam/images/images.controller.js.map +1 -1
  326. package/lib/dam/images/images.util.d.ts +2 -3
  327. package/lib/dam/images/images.util.d.ts.map +1 -1
  328. package/lib/dam/images/images.util.js +0 -4
  329. package/lib/dam/images/images.util.js.map +1 -1
  330. package/lib/dam/images/validators/is-valid-aspect-ratio.validator.js +16 -28
  331. package/lib/dam/images/validators/is-valid-aspect-ratio.validator.js.map +1 -1
  332. package/lib/dependencies/dependencies.resolver.factory.js +2 -13
  333. package/lib/dependencies/dependencies.resolver.factory.js.map +1 -1
  334. package/lib/dependencies/dependencies.service.d.ts +5 -1
  335. package/lib/dependencies/dependencies.service.d.ts.map +1 -1
  336. package/lib/dependencies/dependencies.service.js +195 -211
  337. package/lib/dependencies/dependencies.service.js.map +1 -1
  338. package/lib/dependencies/dependents.resolver.factory.js +2 -13
  339. package/lib/dependencies/dependents.resolver.factory.js.map +1 -1
  340. package/lib/dependencies/discover.service.d.ts +1 -1
  341. package/lib/dependencies/discover.service.d.ts.map +1 -1
  342. package/lib/dependencies/discover.service.js +2 -4
  343. package/lib/dependencies/discover.service.js.map +1 -1
  344. package/lib/document/dto/save-document.d.ts +1 -1
  345. package/lib/document/dto/save-document.d.ts.map +1 -1
  346. package/lib/document/validateNotModified.d.ts +1 -1
  347. package/lib/document/validateNotModified.d.ts.map +1 -1
  348. package/lib/document/validateNotModified.js +1 -1
  349. package/lib/document/validateNotModified.js.map +1 -1
  350. package/lib/entity-info/entity-info.decorator.d.ts +2 -1
  351. package/lib/entity-info/entity-info.decorator.d.ts.map +1 -1
  352. package/lib/entity-info/entity-info.decorator.js.map +1 -1
  353. package/lib/entity-info/entity-info.object.d.ts.map +1 -1
  354. package/lib/entity-info/entity-info.object.js +2 -0
  355. package/lib/entity-info/entity-info.object.js.map +1 -1
  356. package/lib/entity-info/entity-info.service.d.ts +0 -5
  357. package/lib/entity-info/entity-info.service.d.ts.map +1 -1
  358. package/lib/entity-info/entity-info.service.js +49 -112
  359. package/lib/entity-info/entity-info.service.js.map +1 -1
  360. package/lib/entity-info/resolve-field-to-sql.d.ts +7 -0
  361. package/lib/entity-info/resolve-field-to-sql.d.ts.map +1 -0
  362. package/lib/entity-info/resolve-field-to-sql.js +47 -0
  363. package/lib/entity-info/resolve-field-to-sql.js.map +1 -0
  364. package/lib/file-uploads/file-upload-expiration.subscriber.js +5 -16
  365. package/lib/file-uploads/file-upload-expiration.subscriber.js.map +1 -1
  366. package/lib/file-uploads/file-uploads-download.controller.js +122 -150
  367. package/lib/file-uploads/file-uploads-download.controller.js.map +1 -1
  368. package/lib/file-uploads/file-uploads-file.interceptor.js +10 -21
  369. package/lib/file-uploads/file-uploads-file.interceptor.js.map +1 -1
  370. package/lib/file-uploads/file-uploads-upload.controller.js +17 -25
  371. package/lib/file-uploads/file-uploads-upload.controller.js.map +1 -1
  372. package/lib/file-uploads/file-uploads.module.js +3 -4
  373. package/lib/file-uploads/file-uploads.module.js.map +1 -1
  374. package/lib/file-uploads/file-uploads.resolver.js +1 -2
  375. package/lib/file-uploads/file-uploads.resolver.js.map +1 -1
  376. package/lib/file-uploads/file-uploads.service.js +53 -90
  377. package/lib/file-uploads/file-uploads.service.js.map +1 -1
  378. package/lib/file-utils/file-validation.service.d.ts +1 -1
  379. package/lib/file-utils/file-validation.service.d.ts.map +1 -1
  380. package/lib/file-utils/file-validation.service.js +14 -28
  381. package/lib/file-utils/file-validation.service.js.map +1 -1
  382. package/lib/file-utils/files.utils.d.ts +1 -1
  383. package/lib/file-utils/files.utils.d.ts.map +1 -1
  384. package/lib/file-utils/files.utils.js +33 -45
  385. package/lib/file-utils/files.utils.js.map +1 -1
  386. package/lib/file-utils/images.util.d.ts.map +1 -1
  387. package/lib/file-utils/images.util.js +10 -6
  388. package/lib/file-utils/images.util.js.map +1 -1
  389. package/lib/full-text-search/dto/paginated-entity-info.d.ts +5 -0
  390. package/lib/full-text-search/dto/paginated-entity-info.d.ts.map +1 -0
  391. package/lib/full-text-search/dto/paginated-entity-info.js +19 -0
  392. package/lib/full-text-search/dto/paginated-entity-info.js.map +1 -0
  393. package/lib/full-text-search/entities/entity-info-full-text.object.d.ts +6 -0
  394. package/lib/full-text-search/entities/entity-info-full-text.object.d.ts.map +1 -0
  395. package/lib/full-text-search/entities/entity-info-full-text.object.js +35 -0
  396. package/lib/full-text-search/entities/entity-info-full-text.object.js.map +1 -0
  397. package/lib/full-text-search/full-text-search.module.d.ts +4 -0
  398. package/lib/full-text-search/full-text-search.module.d.ts.map +1 -0
  399. package/lib/full-text-search/full-text-search.module.js +27 -0
  400. package/lib/full-text-search/full-text-search.module.js.map +1 -0
  401. package/lib/full-text-search/full-text-search.resolver.d.ts +8 -0
  402. package/lib/full-text-search/full-text-search.resolver.d.ts.map +1 -0
  403. package/lib/full-text-search/full-text-search.resolver.js +61 -0
  404. package/lib/full-text-search/full-text-search.resolver.js.map +1 -0
  405. package/lib/full-text-search/full-text-search.service.d.ts +12 -0
  406. package/lib/full-text-search/full-text-search.service.d.ts.map +1 -0
  407. package/lib/full-text-search/full-text-search.service.js +79 -0
  408. package/lib/full-text-search/full-text-search.service.js.map +1 -0
  409. package/lib/imgproxy/imgproxy.builder.d.ts.map +1 -1
  410. package/lib/imgproxy/imgproxy.builder.js +2 -1
  411. package/lib/imgproxy/imgproxy.builder.js.map +1 -1
  412. package/lib/importer/data-streams/file-data-stream.d.ts +3 -3
  413. package/lib/importer/data-streams/file-data-stream.d.ts.map +1 -1
  414. package/lib/importer/data-streams/local-file-data-stream.js +28 -76
  415. package/lib/importer/data-streams/local-file-data-stream.js.map +1 -1
  416. package/lib/importer/decorators/csv-column.decorator.d.ts +1 -1
  417. package/lib/importer/decorators/csv-column.decorator.d.ts.map +1 -1
  418. package/lib/importer/pipes/end.pipe.d.ts +1 -1
  419. package/lib/importer/pipes/end.pipe.d.ts.map +1 -1
  420. package/lib/importer/pipes/importer-pipe.type.d.ts +3 -3
  421. package/lib/importer/pipes/importer-pipe.type.d.ts.map +1 -1
  422. package/lib/importer/pipes/parsers/csv-parser-and-transform.composite-pipe.d.ts +5 -5
  423. package/lib/importer/pipes/parsers/csv-parser-and-transform.composite-pipe.d.ts.map +1 -1
  424. package/lib/importer/pipes/parsers/csv-parser.pipe.d.ts +3 -3
  425. package/lib/importer/pipes/parsers/csv-parser.pipe.d.ts.map +1 -1
  426. package/lib/importer/pipes/parsers/csv-parser.pipe.js +10 -5
  427. package/lib/importer/pipes/parsers/csv-parser.pipe.js.map +1 -1
  428. package/lib/importer/pipes/parsers/data-transformer.pipe.d.ts +3 -3
  429. package/lib/importer/pipes/parsers/data-transformer.pipe.d.ts.map +1 -1
  430. package/lib/importer/pipes/parsers/data-transformer.pipe.js +13 -24
  431. package/lib/importer/pipes/parsers/data-transformer.pipe.js.map +1 -1
  432. package/lib/importer/pipes/parsers/data-validator.pipe.d.ts +2 -2
  433. package/lib/importer/pipes/parsers/data-validator.pipe.d.ts.map +1 -1
  434. package/lib/importer/pipes/parsers/data-validator.pipe.js +26 -37
  435. package/lib/importer/pipes/parsers/data-validator.pipe.js.map +1 -1
  436. package/lib/index.d.ts +6 -6
  437. package/lib/index.d.ts.map +1 -1
  438. package/lib/index.js +15 -10
  439. package/lib/index.js.map +1 -1
  440. package/lib/kubernetes/kubernetes.service.js +70 -109
  441. package/lib/kubernetes/kubernetes.service.js.map +1 -1
  442. package/lib/mail-templates/mail-template.command.js +5 -16
  443. package/lib/mail-templates/mail-template.command.js.map +1 -1
  444. package/lib/mail-templates/mail-template.decorator.d.ts +1 -1
  445. package/lib/mail-templates/mail-template.decorator.d.ts.map +1 -1
  446. package/lib/mail-templates/mail-template.service.d.ts.map +1 -1
  447. package/lib/mail-templates/mail-template.service.js +20 -30
  448. package/lib/mail-templates/mail-template.service.js.map +1 -1
  449. package/lib/mailer/mailer.module.d.ts +8 -0
  450. package/lib/mailer/mailer.module.d.ts.map +1 -1
  451. package/lib/mailer/mailer.module.js +1 -13
  452. package/lib/mailer/mailer.module.js.map +1 -1
  453. package/lib/mailer/mailer.service.d.ts.map +1 -1
  454. package/lib/mailer/mailer.service.js +48 -62
  455. package/lib/mailer/mailer.service.js.map +1 -1
  456. package/lib/mailer/send-test-mail.command.js +15 -26
  457. package/lib/mailer/send-test-mail.command.js.map +1 -1
  458. package/lib/mikro-orm/helper/entity-to-mikro-orm-full-text.d.ts +4 -0
  459. package/lib/mikro-orm/helper/entity-to-mikro-orm-full-text.d.ts.map +1 -0
  460. package/lib/mikro-orm/helper/entity-to-mikro-orm-full-text.js +21 -0
  461. package/lib/mikro-orm/helper/entity-to-mikro-orm-full-text.js.map +1 -0
  462. package/lib/mikro-orm/migrations/Migration20220127085859.js +3 -14
  463. package/lib/mikro-orm/migrations/Migration20220127085859.js.map +1 -1
  464. package/lib/mikro-orm/migrations/Migration20220127085946.js +3 -14
  465. package/lib/mikro-orm/migrations/Migration20220127085946.js.map +1 -1
  466. package/lib/mikro-orm/migrations/Migration20220127091538.js +3 -14
  467. package/lib/mikro-orm/migrations/Migration20220127091538.js.map +1 -1
  468. package/lib/mikro-orm/migrations/Migration20220127091751.js +6 -17
  469. package/lib/mikro-orm/migrations/Migration20220127091751.js.map +1 -1
  470. package/lib/mikro-orm/migrations/Migration20220127111301.js +15 -26
  471. package/lib/mikro-orm/migrations/Migration20220127111301.js.map +1 -1
  472. package/lib/mikro-orm/migrations/Migration20220127142112.js +4 -15
  473. package/lib/mikro-orm/migrations/Migration20220127142112.js.map +1 -1
  474. package/lib/mikro-orm/migrations/Migration20220620124134.js +19 -32
  475. package/lib/mikro-orm/migrations/Migration20220620124134.js.map +1 -1
  476. package/lib/mikro-orm/migrations/Migration20220905145606.js +8 -21
  477. package/lib/mikro-orm/migrations/Migration20220905145606.js.map +1 -1
  478. package/lib/mikro-orm/migrations/Migration20230209111818.js +3 -14
  479. package/lib/mikro-orm/migrations/Migration20230209111818.js.map +1 -1
  480. package/lib/mikro-orm/migrations/Migration20230302145445.js +6 -19
  481. package/lib/mikro-orm/migrations/Migration20230302145445.js.map +1 -1
  482. package/lib/mikro-orm/migrations/Migration20230613150332.js +3 -14
  483. package/lib/mikro-orm/migrations/Migration20230613150332.js.map +1 -1
  484. package/lib/mikro-orm/migrations/Migration20230802124224.js +5 -18
  485. package/lib/mikro-orm/migrations/Migration20230802124224.js.map +1 -1
  486. package/lib/mikro-orm/migrations/Migration20230808085034.js +2 -13
  487. package/lib/mikro-orm/migrations/Migration20230808085034.js.map +1 -1
  488. package/lib/mikro-orm/migrations/Migration20230821090303.js +8 -21
  489. package/lib/mikro-orm/migrations/Migration20230821090303.js.map +1 -1
  490. package/lib/mikro-orm/migrations/Migration20231204140305.js +8 -21
  491. package/lib/mikro-orm/migrations/Migration20231204140305.js.map +1 -1
  492. package/lib/mikro-orm/migrations/Migration20231206123505.js +7 -20
  493. package/lib/mikro-orm/migrations/Migration20231206123505.js.map +1 -1
  494. package/lib/mikro-orm/migrations/Migration20231215103630.js +6 -19
  495. package/lib/mikro-orm/migrations/Migration20231215103630.js.map +1 -1
  496. package/lib/mikro-orm/migrations/Migration20231218092313.js +7 -20
  497. package/lib/mikro-orm/migrations/Migration20231218092313.js.map +1 -1
  498. package/lib/mikro-orm/migrations/Migration20231222090009.js +7 -20
  499. package/lib/mikro-orm/migrations/Migration20231222090009.js.map +1 -1
  500. package/lib/mikro-orm/migrations/Migration20240702123233.js +28 -40
  501. package/lib/mikro-orm/migrations/Migration20240702123233.js.map +1 -1
  502. package/lib/mikro-orm/migrations/Migration20240725071750.js +2 -13
  503. package/lib/mikro-orm/migrations/Migration20240725071750.js.map +1 -1
  504. package/lib/mikro-orm/migrations/Migration20240814090503.js +7 -18
  505. package/lib/mikro-orm/migrations/Migration20240814090503.js.map +1 -1
  506. package/lib/mikro-orm/migrations/Migration20240814090541.js +3 -14
  507. package/lib/mikro-orm/migrations/Migration20240814090541.js.map +1 -1
  508. package/lib/mikro-orm/migrations/Migration20240814090653.js +3 -14
  509. package/lib/mikro-orm/migrations/Migration20240814090653.js.map +1 -1
  510. package/lib/mikro-orm/migrations/Migration20250403134629.js +2 -13
  511. package/lib/mikro-orm/migrations/Migration20250403134629.js.map +1 -1
  512. package/lib/mikro-orm/migrations/Migration20250531565156.js +2 -13
  513. package/lib/mikro-orm/migrations/Migration20250531565156.js.map +1 -1
  514. package/lib/mikro-orm/migrations/Migration20250531565157.js +2 -13
  515. package/lib/mikro-orm/migrations/Migration20250531565157.js.map +1 -1
  516. package/lib/mikro-orm/migrations/Migration20250612134629.js +3 -14
  517. package/lib/mikro-orm/migrations/Migration20250612134629.js.map +1 -1
  518. package/lib/mikro-orm/migrations/Migration20250623085054.js +2 -13
  519. package/lib/mikro-orm/migrations/Migration20250623085054.js.map +1 -1
  520. package/lib/mikro-orm/migrations/Migration20250623113026.js +4 -15
  521. package/lib/mikro-orm/migrations/Migration20250623113026.js.map +1 -1
  522. package/lib/mikro-orm/migrations/Migration20251013081751.js +2 -13
  523. package/lib/mikro-orm/migrations/Migration20251013081751.js.map +1 -1
  524. package/lib/mikro-orm/migrations/Migration20251118143418.js +3 -14
  525. package/lib/mikro-orm/migrations/Migration20251118143418.js.map +1 -1
  526. package/lib/mikro-orm/migrations/Migration20251126093305.js +4 -17
  527. package/lib/mikro-orm/migrations/Migration20251126093305.js.map +1 -1
  528. package/lib/mikro-orm/migrations/Migration20260413072931.d.ts +6 -0
  529. package/lib/mikro-orm/migrations/Migration20260413072931.d.ts.map +1 -0
  530. package/lib/mikro-orm/migrations/Migration20260413072931.js +16 -0
  531. package/lib/mikro-orm/migrations/Migration20260413072931.js.map +1 -0
  532. package/lib/mikro-orm/mikro-orm.module.d.ts.map +1 -1
  533. package/lib/mikro-orm/mikro-orm.module.js +18 -19
  534. package/lib/mikro-orm/mikro-orm.module.js.map +1 -1
  535. package/lib/page-tree/attached-document-loader.service.d.ts.map +1 -1
  536. package/lib/page-tree/attached-document-loader.service.js +9 -17
  537. package/lib/page-tree/attached-document-loader.service.js.map +1 -1
  538. package/lib/page-tree/blocks/internal-link-block-transformer.service.js +18 -29
  539. package/lib/page-tree/blocks/internal-link-block-transformer.service.js.map +1 -1
  540. package/lib/page-tree/blocks/internal-link-block-warnings.service.js +14 -25
  541. package/lib/page-tree/blocks/internal-link-block-warnings.service.js.map +1 -1
  542. package/lib/page-tree/blocks/internal-link.block.js +2 -13
  543. package/lib/page-tree/blocks/internal-link.block.js.map +1 -1
  544. package/lib/page-tree/createPageTreeResolver.d.ts +2 -1
  545. package/lib/page-tree/createPageTreeResolver.d.ts.map +1 -1
  546. package/lib/page-tree/createPageTreeResolver.js +195 -247
  547. package/lib/page-tree/createPageTreeResolver.js.map +1 -1
  548. package/lib/page-tree/document-subscriber.js +19 -30
  549. package/lib/page-tree/document-subscriber.js.map +1 -1
  550. package/lib/page-tree/dto/paginated-page-tree-nodes.factory.d.ts +8 -0
  551. package/lib/page-tree/dto/paginated-page-tree-nodes.factory.d.ts.map +1 -0
  552. package/lib/page-tree/dto/paginated-page-tree-nodes.factory.js +23 -0
  553. package/lib/page-tree/dto/paginated-page-tree-nodes.factory.js.map +1 -0
  554. package/lib/page-tree/entities/page-tree-node-base.entity.d.ts +1 -0
  555. package/lib/page-tree/entities/page-tree-node-base.entity.d.ts.map +1 -1
  556. package/lib/page-tree/entities/page-tree-node-base.entity.js +15 -1
  557. package/lib/page-tree/entities/page-tree-node-base.entity.js.map +1 -1
  558. package/lib/page-tree/fullText/createFullTextResolver.d.ts +8 -0
  559. package/lib/page-tree/fullText/createFullTextResolver.d.ts.map +1 -0
  560. package/lib/page-tree/fullText/createFullTextResolver.js +74 -0
  561. package/lib/page-tree/fullText/createFullTextResolver.js.map +1 -0
  562. package/lib/page-tree/fullText/entities/page-tree-node-full-text.object.d.ts +7 -0
  563. package/lib/page-tree/fullText/entities/page-tree-node-full-text.object.d.ts.map +1 -0
  564. package/lib/page-tree/fullText/entities/page-tree-node-full-text.object.js +36 -0
  565. package/lib/page-tree/fullText/entities/page-tree-node-full-text.object.js.map +1 -0
  566. package/lib/page-tree/fullText/page-tree-full-text.service.d.ts +17 -0
  567. package/lib/page-tree/fullText/page-tree-full-text.service.d.ts.map +1 -0
  568. package/lib/page-tree/fullText/page-tree-full-text.service.js +135 -0
  569. package/lib/page-tree/fullText/page-tree-full-text.service.js.map +1 -0
  570. package/lib/page-tree/page-tree-node-document-entity-scope.service.js +7 -19
  571. package/lib/page-tree/page-tree-node-document-entity-scope.service.js.map +1 -1
  572. package/lib/page-tree/page-tree-read-api.d.ts +2 -1
  573. package/lib/page-tree/page-tree-read-api.d.ts.map +1 -1
  574. package/lib/page-tree/page-tree-read-api.js +194 -198
  575. package/lib/page-tree/page-tree-read-api.js.map +1 -1
  576. package/lib/page-tree/page-tree-read-api.service.d.ts +1 -0
  577. package/lib/page-tree/page-tree-read-api.service.d.ts.map +1 -1
  578. package/lib/page-tree/page-tree-read-api.service.js +31 -65
  579. package/lib/page-tree/page-tree-read-api.service.js.map +1 -1
  580. package/lib/page-tree/page-tree.constants.d.ts +1 -0
  581. package/lib/page-tree/page-tree.constants.d.ts.map +1 -1
  582. package/lib/page-tree/page-tree.constants.js +2 -1
  583. package/lib/page-tree/page-tree.constants.js.map +1 -1
  584. package/lib/page-tree/page-tree.module.d.ts +1 -0
  585. package/lib/page-tree/page-tree.module.d.ts.map +1 -1
  586. package/lib/page-tree/page-tree.module.js +23 -13
  587. package/lib/page-tree/page-tree.module.js.map +1 -1
  588. package/lib/page-tree/page-tree.service.d.ts.map +1 -1
  589. package/lib/page-tree/page-tree.service.js +273 -312
  590. package/lib/page-tree/page-tree.service.js.map +1 -1
  591. package/lib/page-tree/site-preview.resolver.js +25 -38
  592. package/lib/page-tree/site-preview.resolver.js.map +1 -1
  593. package/lib/page-tree/types.d.ts +2 -2
  594. package/lib/page-tree/types.d.ts.map +1 -1
  595. package/lib/page-tree/validators/page-exists.validator.js +3 -14
  596. package/lib/page-tree/validators/page-exists.validator.js.map +1 -1
  597. package/lib/redirects/dto/redirect-input.factory.d.ts +2 -2
  598. package/lib/redirects/dto/redirect-input.factory.d.ts.map +1 -1
  599. package/lib/redirects/dto/redirect-input.factory.js +2 -2
  600. package/lib/redirects/dto/redirect-input.factory.js.map +1 -1
  601. package/lib/redirects/dto/redirects.filter.d.ts.map +1 -1
  602. package/lib/redirects/dto/redirects.filter.js +1 -1
  603. package/lib/redirects/dto/redirects.filter.js.map +1 -1
  604. package/lib/redirects/entities/redirect-entity.factory.d.ts +2 -2
  605. package/lib/redirects/entities/redirect-entity.factory.d.ts.map +1 -1
  606. package/lib/redirects/entities/redirect-entity.factory.js +2 -2
  607. package/lib/redirects/entities/redirect-entity.factory.js.map +1 -1
  608. package/lib/redirects/import-redirects.command.js +109 -121
  609. package/lib/redirects/import-redirects.command.js.map +1 -1
  610. package/lib/redirects/redirect-target-url.service.js +17 -28
  611. package/lib/redirects/redirect-target-url.service.js.map +1 -1
  612. package/lib/redirects/redirects.enum.d.ts +1 -1
  613. package/lib/redirects/redirects.enum.d.ts.map +1 -1
  614. package/lib/redirects/redirects.enum.js +7 -7
  615. package/lib/redirects/redirects.enum.js.map +1 -1
  616. package/lib/redirects/redirects.module.js +2 -2
  617. package/lib/redirects/redirects.module.js.map +1 -1
  618. package/lib/redirects/redirects.resolver.js +114 -137
  619. package/lib/redirects/redirects.resolver.js.map +1 -1
  620. package/lib/redirects/redirects.service.d.ts.map +1 -1
  621. package/lib/redirects/redirects.service.js +40 -47
  622. package/lib/redirects/redirects.service.js.map +1 -1
  623. package/lib/redirects/redirects.util.d.ts +2 -2
  624. package/lib/redirects/redirects.util.d.ts.map +1 -1
  625. package/lib/redirects/redirects.util.js +2 -3
  626. package/lib/redirects/redirects.util.js.map +1 -1
  627. package/lib/redirects/validators/isValidRedirectSource.js +8 -19
  628. package/lib/redirects/validators/isValidRedirectSource.js.map +1 -1
  629. package/lib/sentry/sentry.interceptor.js +30 -42
  630. package/lib/sentry/sentry.interceptor.js.map +1 -1
  631. package/lib/sentry/sentry.module.js +15 -36
  632. package/lib/sentry/sentry.module.js.map +1 -1
  633. package/lib/translation/azure-ai-translator.resolver.d.ts +2 -0
  634. package/lib/translation/azure-ai-translator.resolver.d.ts.map +1 -1
  635. package/lib/translation/azure-ai-translator.resolver.js +43 -17
  636. package/lib/translation/azure-ai-translator.resolver.js.map +1 -1
  637. package/lib/translation/dto/azure-ai-translation-batch.input.d.ts +5 -0
  638. package/lib/translation/dto/azure-ai-translation-batch.input.d.ts.map +1 -0
  639. package/lib/translation/dto/azure-ai-translation-batch.input.js +33 -0
  640. package/lib/translation/dto/azure-ai-translation-batch.input.js.map +1 -0
  641. package/lib/tsconfig.build.tsbuildinfo +1 -1
  642. package/lib/user-permissions/access-control.service.d.ts.map +1 -1
  643. package/lib/user-permissions/access-control.service.js +6 -3
  644. package/lib/user-permissions/access-control.service.js.map +1 -1
  645. package/lib/user-permissions/auth/user-permissions.guard.d.ts.map +1 -1
  646. package/lib/user-permissions/auth/user-permissions.guard.js +56 -61
  647. package/lib/user-permissions/auth/user-permissions.guard.js.map +1 -1
  648. package/lib/user-permissions/content-scope.service.d.ts.map +1 -1
  649. package/lib/user-permissions/content-scope.service.js +86 -97
  650. package/lib/user-permissions/content-scope.service.js.map +1 -1
  651. package/lib/user-permissions/decorators/affected-entity.decorator.d.ts +1 -1
  652. package/lib/user-permissions/decorators/affected-entity.decorator.d.ts.map +1 -1
  653. package/lib/user-permissions/decorators/affected-scope.decorator.d.ts +1 -1
  654. package/lib/user-permissions/decorators/affected-scope.decorator.d.ts.map +1 -1
  655. package/lib/user-permissions/decorators/required-permission.decorator.d.ts +1 -1
  656. package/lib/user-permissions/decorators/required-permission.decorator.d.ts.map +1 -1
  657. package/lib/user-permissions/decorators/scoped-entity.decorator.d.ts +2 -2
  658. package/lib/user-permissions/decorators/scoped-entity.decorator.d.ts.map +1 -1
  659. package/lib/user-permissions/user-content-scopes.resolver.js +18 -33
  660. package/lib/user-permissions/user-content-scopes.resolver.js.map +1 -1
  661. package/lib/user-permissions/user-permission.resolver.d.ts.map +1 -1
  662. package/lib/user-permissions/user-permission.resolver.js +42 -66
  663. package/lib/user-permissions/user-permission.resolver.js.map +1 -1
  664. package/lib/user-permissions/user-permissions.module.js +6 -27
  665. package/lib/user-permissions/user-permissions.module.js.map +1 -1
  666. package/lib/user-permissions/user-permissions.public.service.js +6 -21
  667. package/lib/user-permissions/user-permissions.public.service.js.map +1 -1
  668. package/lib/user-permissions/user-permissions.service.d.ts.map +1 -1
  669. package/lib/user-permissions/user-permissions.service.js +168 -191
  670. package/lib/user-permissions/user-permissions.service.js.map +1 -1
  671. package/lib/user-permissions/user-permissions.types.d.ts +6 -6
  672. package/lib/user-permissions/user-permissions.types.d.ts.map +1 -1
  673. package/lib/user-permissions/user-permissions.types.js +3 -1
  674. package/lib/user-permissions/user-permissions.types.js.map +1 -1
  675. package/lib/user-permissions/user.resolver.js +71 -95
  676. package/lib/user-permissions/user.resolver.js.map +1 -1
  677. package/lib/warnings/decorators/create-warnings.decorator.d.ts +3 -3
  678. package/lib/warnings/decorators/create-warnings.decorator.d.ts.map +1 -1
  679. package/lib/warnings/dto/warning-data.d.ts +1 -1
  680. package/lib/warnings/dto/warning-data.d.ts.map +1 -1
  681. package/lib/warnings/warning-checker.command.js +123 -156
  682. package/lib/warnings/warning-checker.command.js.map +1 -1
  683. package/lib/warnings/warning-event-subscriber.js +92 -107
  684. package/lib/warnings/warning-event-subscriber.js.map +1 -1
  685. package/lib/warnings/warning.resolver.js +56 -72
  686. package/lib/warnings/warning.resolver.js.map +1 -1
  687. package/lib/warnings/warning.service.js +19 -32
  688. package/lib/warnings/warning.service.js.map +1 -1
  689. package/package.json +46 -40
@@ -44,33 +44,6 @@ var __metadata = (this && this.__metadata) || function (k, v) {
44
44
  var __param = (this && this.__param) || function (paramIndex, decorator) {
45
45
  return function (target, key) { decorator(target, key, paramIndex); }
46
46
  };
47
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
48
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
49
- return new (P || (P = Promise))(function (resolve, reject) {
50
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
51
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
52
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
53
- step((generator = generator.apply(thisArg, _arguments || [])).next());
54
- });
55
- };
56
- var __rest = (this && this.__rest) || function (s, e) {
57
- var t = {};
58
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
59
- t[p] = s[p];
60
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
61
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
62
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
63
- t[p[i]] = s[p[i]];
64
- }
65
- return t;
66
- };
67
- var __asyncValues = (this && this.__asyncValues) || function (o) {
68
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
69
- var m = o[Symbol.asyncIterator], i;
70
- return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
71
- function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
72
- function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
73
- };
74
47
  var __importDefault = (this && this.__importDefault) || function (mod) {
75
48
  return (mod && mod.__esModule) ? mod : { "default": mod };
76
49
  };
@@ -87,7 +60,9 @@ const hasha = __importStar(require("hasha"));
87
60
  const path_1 = require("path");
88
61
  const probe_image_size_1 = __importDefault(require("probe-image-size"));
89
62
  const rimraf = __importStar(require("rimraf"));
90
- const sharp_1 = __importDefault(require("sharp"));
63
+ const util_1 = require("util");
64
+ const zlib_1 = require("zlib");
65
+ const inflate = (0, util_1.promisify)(zlib_1.inflate);
91
66
  const blob_storage_backend_service_1 = require("../../blob-storage/backends/blob-storage-backend.service");
92
67
  const create_hashed_path_util_1 = require("../../blob-storage/utils/create-hashed-path.util");
93
68
  const entity_not_found_exception_1 = require("../../common/errors/entity-not-found.exception");
@@ -98,7 +73,6 @@ const imgproxy_service_1 = require("../../imgproxy/imgproxy.service");
98
73
  const content_scope_service_1 = require("../../user-permissions/content-scope.service");
99
74
  const image_resolution_exception_1 = require("../common/errors/image-resolution.exception");
100
75
  const dam_constants_1 = require("../dam.constants");
101
- const images_util_1 = require("../images/images.util");
102
76
  const dam_media_alternative_entity_1 = require("./dam-media-alternatives/entities/dam-media-alternative.entity");
103
77
  const file_entity_1 = require("./entities/file.entity");
104
78
  const file_image_entity_1 = require("./entities/file-image.entity");
@@ -108,16 +82,24 @@ const withFilesSelect = (qb, args) => {
108
82
  if (args.query) {
109
83
  qb.andWhere("file.name ILIKE ANY (ARRAY[?])", [args.query.split(" ").map((term) => `%${term}%`)]);
110
84
  }
111
- if (args.id)
85
+ if (args.id) {
112
86
  qb.andWhere({ id: args.id });
113
- if (args.copyOfId)
87
+ }
88
+ if (args.ids) {
89
+ qb.andWhere({ id: { $in: args.ids } });
90
+ }
91
+ if (args.copyOfId) {
114
92
  qb.andWhere({ copyOf: { id: args.copyOfId } });
115
- if (args.filename)
93
+ }
94
+ if (args.filename) {
116
95
  qb.andWhere({ name: args.filename });
117
- if (args.contentHash)
96
+ }
97
+ if (args.contentHash) {
118
98
  qb.andWhere({ contentHash: args.contentHash });
119
- if (args.archived !== undefined)
99
+ }
100
+ if (args.archived !== undefined) {
120
101
  qb.andWhere({ archived: args.archived });
102
+ }
121
103
  if (args.folderId !== undefined) {
122
104
  if (args.folderId) {
123
105
  qb.andWhere({ folder: { id: args.folderId } });
@@ -132,8 +114,9 @@ const withFilesSelect = (qb, args) => {
132
114
  if (args.mimetypes !== undefined) {
133
115
  qb.andWhere({ mimetype: { $in: args.mimetypes } });
134
116
  }
135
- if (args.imageId)
117
+ if (args.imageId) {
136
118
  qb.andWhere({ image: { id: args.imageId } });
119
+ }
137
120
  if (args.imageCropArea) {
138
121
  qb.andWhere({ image: { cropArea: args.imageCropArea } });
139
122
  }
@@ -168,443 +151,458 @@ let FilesService = FilesService_1 = class FilesService {
168
151
  .leftJoinAndSelect("file.image", "image")
169
152
  .leftJoinAndSelect("file.folder", "folder");
170
153
  }
171
- findAll(_a, scope_1) {
172
- return __awaiter(this, arguments, void 0, function* ({ folderId, includeArchived, filter, sortColumnName, sortDirection }, scope) {
173
- const isSearching = (filter === null || filter === void 0 ? void 0 : filter.searchText) !== undefined && filter.searchText.length > 0;
174
- return withFilesSelect(this.selectQueryBuilder(), {
175
- archived: !includeArchived ? false : undefined,
176
- folderId: !isSearching ? folderId || null : undefined,
177
- mimetypes: filter === null || filter === void 0 ? void 0 : filter.mimetypes,
178
- query: filter === null || filter === void 0 ? void 0 : filter.searchText,
179
- sortColumnName,
180
- sortDirection,
181
- scope,
182
- }).getResult();
183
- });
184
- }
185
- findAndCount(_a, scope_1) {
186
- return __awaiter(this, arguments, void 0, function* ({ folderId, includeArchived, filter, sortColumnName, sortDirection, offset, limit }, scope) {
187
- const isSearching = (filter === null || filter === void 0 ? void 0 : filter.searchText) !== undefined && filter.searchText.length > 0;
188
- const files = yield withFilesSelect(this.selectQueryBuilder(), {
189
- archived: !includeArchived ? false : undefined,
190
- folderId: !isSearching ? folderId || null : undefined,
191
- mimetypes: filter === null || filter === void 0 ? void 0 : filter.mimetypes,
192
- query: filter === null || filter === void 0 ? void 0 : filter.searchText,
193
- sortColumnName,
194
- sortDirection,
195
- offset,
196
- limit,
197
- scope,
198
- }).getResult();
199
- const totalCount = yield withFilesSelect(this.selectQueryBuilder(), {
200
- archived: !includeArchived ? false : undefined,
201
- folderId: !isSearching ? folderId || null : undefined,
202
- mimetypes: filter === null || filter === void 0 ? void 0 : filter.mimetypes,
203
- query: filter === null || filter === void 0 ? void 0 : filter.searchText,
204
- sortColumnName,
205
- sortDirection,
206
- offset,
207
- limit,
208
- scope,
209
- }).getCount();
210
- return [files, totalCount];
211
- });
212
- }
213
- findAllByHash(contentHash, options) {
214
- return __awaiter(this, void 0, void 0, function* () {
215
- return withFilesSelect(this.selectQueryBuilder(), { contentHash, scope: options === null || options === void 0 ? void 0 : options.scope }).getResult();
216
- });
217
- }
218
- findMultipleByIds(ids) {
219
- return __awaiter(this, void 0, void 0, function* () {
220
- return withFilesSelect(this.selectQueryBuilder(), {})
221
- .where({ id: { $in: ids } })
222
- .getResult();
223
- });
224
- }
225
- findCopiesOfFileInScope(fileId, imageCropArea, scope) {
226
- return __awaiter(this, void 0, void 0, function* () {
227
- return withFilesSelect(this.selectQueryBuilder(), { copyOfId: fileId, imageCropArea, scope }).getResult();
228
- });
229
- }
230
- findOneById(id) {
231
- return __awaiter(this, void 0, void 0, function* () {
232
- return withFilesSelect(this.selectQueryBuilder(), { id }).getSingleResult();
233
- });
234
- }
235
- getDamPath(file) {
236
- return __awaiter(this, void 0, void 0, function* () {
237
- const folderNames = file.folder ? (yield this.foldersService.findAncestorsByParentId(file.folder.id)).map((folder) => folder.name) : [];
238
- return `/${folderNames.join("/")}`;
239
- });
240
- }
241
- findOneByHash(contentHash) {
242
- return __awaiter(this, void 0, void 0, function* () {
243
- return withFilesSelect(this.selectQueryBuilder(), { contentHash }).getSingleResult();
244
- });
245
- }
246
- calculateHashForFile(filePath) {
247
- return __awaiter(this, void 0, void 0, function* () {
248
- return hasha.fromFile(filePath, { algorithm: "md5" });
249
- });
250
- }
251
- findOneByFilenameAndFolder(_a, scope_1) {
252
- return __awaiter(this, arguments, void 0, function* ({ filename, folderId = null, }, scope) {
253
- return withFilesSelect(this.selectQueryBuilder(), { folderId, filename, scope }).getSingleResult();
254
- });
255
- }
256
- findOneByImageId(imageId) {
257
- return __awaiter(this, void 0, void 0, function* () {
258
- return withFilesSelect(this.selectQueryBuilder(), { imageId }).getSingleResult();
259
- });
260
- }
261
- create(_a) {
262
- return __awaiter(this, void 0, void 0, function* () {
263
- var { folderId } = _a, data = __rest(_a, ["folderId"]);
264
- const folder = folderId ? yield this.foldersService.findOneById(folderId) : undefined;
265
- return this.save(this.filesRepository.create(Object.assign(Object.assign({}, data), { license: Object.assign({}, data.license), folder: folder === null || folder === void 0 ? void 0 : folder.id, importSourceId: data.importSourceId, importSourceType: data.importSourceType })));
266
- });
267
- }
268
- replace(fileToReplace, uploadedFile, assignData) {
269
- return __awaiter(this, void 0, void 0, function* () {
270
- let result = undefined;
271
- try {
272
- if (uploadedFile.mimetype !== fileToReplace.mimetype) {
273
- throw new Error(`File cannot be replaced by a file with a different mimetype. Existing mimetype: ${fileToReplace.mimetype}, new mimetype: ${uploadedFile.mimetype}`);
274
- }
275
- const uploadedFileMetadata = yield this.getFileMetadataForUpload(uploadedFile);
276
- const oldAndNewFileAreIdentical = fileToReplace.contentHash === uploadedFileMetadata.contentHash;
277
- if (!oldAndNewFileAreIdentical) {
278
- // Don't upload the file if it is identical to the existing one
279
- yield this.blobStorageBackendService.upload(uploadedFile, uploadedFileMetadata.contentHash, this.config.filesDirectory);
280
- // Check if the current file is the only one using the contentHash before deleting from blob storage
281
- if ((yield withFilesSelect(this.filesRepository.createQueryBuilder("file"), { contentHash: fileToReplace.contentHash }).getResult())
282
- .length === 1) {
283
- yield this.blobStorageBackendService.removeFile(this.config.filesDirectory, (0, create_hashed_path_util_1.createHashedPath)(fileToReplace.contentHash));
284
- }
285
- }
286
- if (uploadedFileMetadata.image && uploadedFileMetadata.image.width && uploadedFileMetadata.image.height && fileToReplace.image) {
287
- fileToReplace.image.width = uploadedFileMetadata.image.width;
288
- fileToReplace.image.height = uploadedFileMetadata.image.height;
289
- fileToReplace.image.exif = uploadedFileMetadata.exifData;
154
+ async findAll({ folderId, includeArchived, filter, sortColumnName, sortDirection }, scope) {
155
+ const isSearching = filter?.searchText !== undefined && filter.searchText.length > 0;
156
+ return withFilesSelect(this.selectQueryBuilder(), {
157
+ archived: !includeArchived ? false : undefined,
158
+ folderId: !isSearching ? folderId || null : undefined,
159
+ mimetypes: filter?.mimetypes,
160
+ ids: filter?.ids,
161
+ query: filter?.searchText,
162
+ sortColumnName,
163
+ sortDirection,
164
+ scope,
165
+ }).getResult();
166
+ }
167
+ async findAndCount({ folderId, includeArchived, filter, sortColumnName, sortDirection, offset, limit }, scope) {
168
+ const isSearching = filter?.searchText !== undefined && filter.searchText.length > 0;
169
+ const files = await withFilesSelect(this.selectQueryBuilder(), {
170
+ archived: !includeArchived ? false : undefined,
171
+ folderId: !isSearching ? folderId || null : undefined,
172
+ mimetypes: filter?.mimetypes,
173
+ ids: filter?.ids,
174
+ query: filter?.searchText,
175
+ sortColumnName,
176
+ sortDirection,
177
+ offset,
178
+ limit,
179
+ scope,
180
+ }).getResult();
181
+ const totalCount = await withFilesSelect(this.selectQueryBuilder(), {
182
+ archived: !includeArchived ? false : undefined,
183
+ folderId: !isSearching ? folderId || null : undefined,
184
+ mimetypes: filter?.mimetypes,
185
+ ids: filter?.ids,
186
+ query: filter?.searchText,
187
+ sortColumnName,
188
+ sortDirection,
189
+ offset,
190
+ limit,
191
+ scope,
192
+ }).getCount();
193
+ return [files, totalCount];
194
+ }
195
+ async findAllByHash(contentHash, options) {
196
+ return withFilesSelect(this.selectQueryBuilder(), { contentHash, scope: options?.scope }).getResult();
197
+ }
198
+ async findMultipleByIds(ids) {
199
+ return withFilesSelect(this.selectQueryBuilder(), {})
200
+ .where({ id: { $in: ids } })
201
+ .getResult();
202
+ }
203
+ async findCopiesOfFileInScope(fileId, imageCropArea, scope) {
204
+ return withFilesSelect(this.selectQueryBuilder(), { copyOfId: fileId, imageCropArea, scope }).getResult();
205
+ }
206
+ async findOneById(id) {
207
+ return withFilesSelect(this.selectQueryBuilder(), { id }).getSingleResult();
208
+ }
209
+ async getDamPath(file) {
210
+ const folderNames = file.folder ? (await this.foldersService.findAncestorsByParentId(file.folder.id)).map((folder) => folder.name) : [];
211
+ return `/${folderNames.join("/")}`;
212
+ }
213
+ async findOneByHash(contentHash) {
214
+ return withFilesSelect(this.selectQueryBuilder(), { contentHash }).getSingleResult();
215
+ }
216
+ async calculateHashForFile(filePath) {
217
+ return hasha.fromFile(filePath, { algorithm: "md5" });
218
+ }
219
+ async findOneByFilenameAndFolder({ filename, folderId = null, }, scope) {
220
+ return withFilesSelect(this.selectQueryBuilder(), { folderId, filename, scope }).getSingleResult();
221
+ }
222
+ async findOneByImageId(imageId) {
223
+ return withFilesSelect(this.selectQueryBuilder(), { imageId }).getSingleResult();
224
+ }
225
+ async create({ folderId, ...data }) {
226
+ const folder = folderId ? await this.foldersService.findOneById(folderId) : undefined;
227
+ return this.save(this.filesRepository.create({
228
+ ...data,
229
+ license: { ...data.license },
230
+ folder: folder?.id,
231
+ importSourceId: data.importSourceId,
232
+ importSourceType: data.importSourceType,
233
+ }));
234
+ }
235
+ async replace(fileToReplace, uploadedFile, assignData) {
236
+ let result = undefined;
237
+ try {
238
+ if (uploadedFile.mimetype !== fileToReplace.mimetype) {
239
+ throw new Error(`File cannot be replaced by a file with a different mimetype. Existing mimetype: ${fileToReplace.mimetype}, new mimetype: ${uploadedFile.mimetype}`);
240
+ }
241
+ const uploadedFileMetadata = await this.getFileMetadataForUpload(uploadedFile);
242
+ const oldAndNewFileAreIdentical = fileToReplace.contentHash === uploadedFileMetadata.contentHash;
243
+ if (!oldAndNewFileAreIdentical) {
244
+ // Don't upload the file if it is identical to the existing one
245
+ await this.blobStorageBackendService.upload(uploadedFile, uploadedFileMetadata.contentHash, this.config.filesDirectory);
246
+ // Check if the current file is the only one using the contentHash before deleting from blob storage
247
+ if ((await withFilesSelect(this.filesRepository.createQueryBuilder("file"), { contentHash: fileToReplace.contentHash }).getResult())
248
+ .length === 1) {
249
+ await this.blobStorageBackendService.removeFile(this.config.filesDirectory, (0, create_hashed_path_util_1.createHashedPath)(fileToReplace.contentHash));
290
250
  }
291
- Object.assign(fileToReplace, Object.assign({ size: uploadedFile.size, mimetype: uploadedFile.mimetype, contentHash: uploadedFileMetadata.contentHash }, assignData));
292
- result = yield this.save(fileToReplace);
293
- rimraf.sync(uploadedFile.path);
294
251
  }
295
- catch (e) {
296
- rimraf.sync(uploadedFile.path);
297
- throw e;
252
+ if (uploadedFileMetadata.image && uploadedFileMetadata.image.width && uploadedFileMetadata.image.height && fileToReplace.image) {
253
+ fileToReplace.image.width = uploadedFileMetadata.image.width;
254
+ fileToReplace.image.height = uploadedFileMetadata.image.height;
255
+ fileToReplace.image.exif = uploadedFileMetadata.exifData;
298
256
  }
299
- return result;
300
- });
257
+ Object.assign(fileToReplace, {
258
+ size: uploadedFile.size,
259
+ mimetype: uploadedFile.mimetype,
260
+ contentHash: uploadedFileMetadata.contentHash,
261
+ ...assignData,
262
+ });
263
+ result = await this.save(fileToReplace);
264
+ rimraf.sync(uploadedFile.path);
265
+ }
266
+ catch (e) {
267
+ rimraf.sync(uploadedFile.path);
268
+ throw e;
269
+ }
270
+ return result;
301
271
  }
302
- updateById(id, data) {
303
- return __awaiter(this, void 0, void 0, function* () {
304
- const file = yield this.findOneById(id);
305
- if (!file)
306
- throw new entity_not_found_exception_1.CometEntityNotFoundException();
307
- return this.updateByEntity(file, data);
308
- });
272
+ async updateById(id, data) {
273
+ const file = await this.findOneById(id);
274
+ if (!file) {
275
+ throw new entity_not_found_exception_1.CometEntityNotFoundException();
276
+ }
277
+ return this.updateByEntity(file, data);
309
278
  }
310
- updateByEntity(entity, _a) {
311
- return __awaiter(this, void 0, void 0, function* () {
312
- var _b;
313
- var { image } = _a, input = __rest(_a, ["image"]);
314
- const folderId = input.folderId !== undefined ? input.folderId : (_b = entity.folder) === null || _b === void 0 ? void 0 : _b.id;
315
- const folder = folderId ? yield this.foldersService.findOneById(folderId) : null;
316
- if (entity.image && (image === null || image === void 0 ? void 0 : image.cropArea)) {
317
- entity.image.cropArea = image.cropArea;
318
- }
319
- if (input.name) {
320
- const entityWithSameName = yield this.findOneByFilenameAndFolder({ filename: input.name, folderId }, entity.scope);
321
- if (entityWithSameName !== null && entityWithSameName.id !== entity.id) {
322
- throw new Error(`Entity with name '${input.name}' already exists in ${folder ? `folder '${folder.name}'` : "root folder"}`);
323
- }
279
+ async updateByEntity(entity, { image, ...input }) {
280
+ const folderId = input.folderId !== undefined ? input.folderId : entity.folder?.id;
281
+ const folder = folderId ? await this.foldersService.findOneById(folderId) : null;
282
+ if (entity.image && image?.cropArea) {
283
+ entity.image.cropArea = image.cropArea;
284
+ }
285
+ if (input.name) {
286
+ const entityWithSameName = await this.findOneByFilenameAndFolder({ filename: input.name, folderId }, entity.scope);
287
+ if (entityWithSameName !== null && entityWithSameName.id !== entity.id) {
288
+ throw new Error(`Entity with name '${input.name}' already exists in ${folder ? `folder '${folder.name}'` : "root folder"}`);
324
289
  }
325
- const file = Object.assign(entity, Object.assign(Object.assign({}, input), { folder: folderId !== undefined ? folder : entity.folder }));
326
- return this.save(file);
290
+ }
291
+ const file = Object.assign(entity, {
292
+ ...input,
293
+ folder: folderId !== undefined ? folder : entity.folder,
327
294
  });
328
- }
329
- moveBatch(files, targetFolder) {
330
- return __awaiter(this, void 0, void 0, function* () {
331
- var _a;
332
- const updatedFiles = [];
333
- for (const file of files) {
334
- // Convert to JS object because deep-comparing classes and objects doesn't work
335
- if ((targetFolder === null || targetFolder === void 0 ? void 0 : targetFolder.scope) !== undefined && !this.contentScopeService.scopesAreEqual(file.scope, targetFolder.scope)) {
336
- throw new Error("Target folder scope doesn't match file scope");
337
- }
338
- updatedFiles.push(yield this.updateByEntity(file, { folderId: (_a = targetFolder === null || targetFolder === void 0 ? void 0 : targetFolder.id) !== null && _a !== void 0 ? _a : null }));
295
+ return this.save(file);
296
+ }
297
+ async moveBatch(files, targetFolder) {
298
+ const updatedFiles = [];
299
+ for (const file of files) {
300
+ // Convert to JS object because deep-comparing classes and objects doesn't work
301
+ if (targetFolder?.scope !== undefined && !this.contentScopeService.scopesAreEqual(file.scope, targetFolder.scope)) {
302
+ throw new Error("Target folder scope doesn't match file scope");
339
303
  }
340
- return updatedFiles;
341
- });
304
+ updatedFiles.push(await this.updateByEntity(file, { folderId: targetFolder?.id ?? null }));
305
+ }
306
+ return updatedFiles;
342
307
  }
343
- delete(id) {
344
- return __awaiter(this, void 0, void 0, function* () {
345
- const file = yield this.findOneById(id);
346
- if (!file)
347
- throw new entity_not_found_exception_1.CometEntityNotFoundException();
348
- const result = yield this.filesRepository.nativeDelete(id);
349
- const deleted = result === 1;
350
- if (deleted &&
351
- (yield withFilesSelect(this.filesRepository.createQueryBuilder("file"), { contentHash: file.contentHash }).getResult()).length === 0) {
352
- yield this.blobStorageBackendService.removeFile(this.config.filesDirectory, (0, create_hashed_path_util_1.createHashedPath)(file.contentHash));
308
+ async delete(id) {
309
+ const file = await this.findOneById(id);
310
+ if (!file) {
311
+ throw new entity_not_found_exception_1.CometEntityNotFoundException();
312
+ }
313
+ const result = await this.filesRepository.nativeDelete(id);
314
+ const deleted = result === 1;
315
+ if (deleted &&
316
+ (await withFilesSelect(this.filesRepository.createQueryBuilder("file"), { contentHash: file.contentHash }).getResult()).length === 0) {
317
+ await this.blobStorageBackendService.removeFile(this.config.filesDirectory, (0, create_hashed_path_util_1.createHashedPath)(file.contentHash));
318
+ }
319
+ return deleted;
320
+ }
321
+ async save(entity) {
322
+ await this.entityManager.persistAndFlush(entity);
323
+ return entity;
324
+ }
325
+ async upload(file, { folderId, scope, ...assignData }) {
326
+ let result = undefined;
327
+ try {
328
+ const { exifData, contentHash, image } = await this.getFileMetadataForUpload(file);
329
+ await this.blobStorageBackendService.upload(file, contentHash, this.config.filesDirectory);
330
+ const name = await this.findNextAvailableFilename({ filePath: file.originalname, folderId, scope });
331
+ result = await this.create({
332
+ name,
333
+ folderId: folderId,
334
+ size: file.size,
335
+ mimetype: file.mimetype,
336
+ image: image !== undefined
337
+ ? {
338
+ width: image.width,
339
+ height: image.height,
340
+ exif: exifData,
341
+ cropArea: {
342
+ focalPoint: focal_point_enum_1.FocalPoint.SMART,
343
+ },
344
+ }
345
+ : undefined,
346
+ contentHash,
347
+ scope,
348
+ ...assignData,
349
+ });
350
+ if (result.image) {
351
+ // We do not want for our users to await the dominant color calculation. To prevent concurrency issues we must use a separate Unit of
352
+ // Work. This can be achieved by forking the EntityManager instance.
353
+ // See https://mikro-orm.io/docs/faq#you-cannot-call-emflush-from-inside-lifecycle-hook-handlers and
354
+ // https://mikro-orm.io/docs/unit-of-work for more information.
355
+ const entityManager = this.orm.em.fork();
356
+ const image = await entityManager.findOneOrFail(file_image_entity_1.DamFileImage, result.image.id);
357
+ this.calculateDominantColor(contentHash).then((dominantColor) => {
358
+ image.dominantColor = dominantColor;
359
+ return entityManager.flush();
360
+ });
353
361
  }
354
- return deleted;
355
- });
356
- }
357
- save(entity) {
358
- return __awaiter(this, void 0, void 0, function* () {
359
- yield this.entityManager.persistAndFlush(entity);
360
- return entity;
361
- });
362
+ rimraf.sync(file.path);
363
+ }
364
+ catch (e) {
365
+ rimraf.sync(file.path);
366
+ throw e;
367
+ }
368
+ return result;
362
369
  }
363
- upload(file, _a) {
364
- return __awaiter(this, void 0, void 0, function* () {
365
- var { folderId, scope } = _a, assignData = __rest(_a, ["folderId", "scope"]);
366
- let result = undefined;
367
- try {
368
- const { exifData, contentHash, image } = yield this.getFileMetadataForUpload(file);
369
- yield this.blobStorageBackendService.upload(file, contentHash, this.config.filesDirectory);
370
- const name = yield this.findNextAvailableFilename({ filePath: file.originalname, folderId, scope });
371
- result = yield this.create(Object.assign({ name, folderId: folderId, size: file.size, mimetype: file.mimetype, image: image !== undefined
372
- ? {
373
- width: image.width,
374
- height: image.height,
375
- exif: exifData,
376
- cropArea: {
377
- focalPoint: focal_point_enum_1.FocalPoint.SMART,
378
- },
379
- }
380
- : undefined, contentHash,
381
- scope }, assignData));
382
- if (result.image) {
383
- // We do not want for our users to await the dominant color calculation. To prevent concurrency issues we must use a separate Unit of
384
- // Work. This can be achieved by forking the EntityManager instance.
385
- // See https://mikro-orm.io/docs/faq#you-cannot-call-emflush-from-inside-lifecycle-hook-handlers and
386
- // https://mikro-orm.io/docs/unit-of-work for more information.
387
- const entityManager = this.orm.em.fork();
388
- const image = yield entityManager.findOneOrFail(file_image_entity_1.DamFileImage, result.image.id);
389
- this.calculateDominantColor(contentHash).then((dominantColor) => {
390
- image.dominantColor = dominantColor;
391
- return entityManager.flush();
392
- });
393
- }
394
- rimraf.sync(file.path);
395
- }
396
- catch (e) {
397
- rimraf.sync(file.path);
398
- throw e;
399
- }
400
- return result;
370
+ async getFilePosition(fileId, args, scope) {
371
+ const isSearching = args.filter?.searchText !== undefined && args.filter.searchText.length > 0;
372
+ const subQb = withFilesSelect(this.filesRepository
373
+ .createQueryBuilder("file")
374
+ .select(["file.id", (0, postgresql_1.raw)(`ROW_NUMBER() OVER( ORDER BY file."${args.sortColumnName}" ${args.sortDirection} ) AS row_number`)])
375
+ .leftJoinAndSelect("file.folder", "folder"), {
376
+ archived: !args.includeArchived ? false : undefined,
377
+ folderId: !isSearching ? args.folderId || null : undefined,
378
+ mimetypes: args.filter?.mimetypes,
379
+ query: args.filter?.searchText,
380
+ sortColumnName: args.sortColumnName,
381
+ sortDirection: args.sortDirection,
382
+ scope,
401
383
  });
402
- }
403
- getFilePosition(fileId, args, scope) {
404
- return __awaiter(this, void 0, void 0, function* () {
405
- var _a, _b, _c;
406
- const isSearching = ((_a = args.filter) === null || _a === void 0 ? void 0 : _a.searchText) !== undefined && args.filter.searchText.length > 0;
407
- const subQb = withFilesSelect(this.filesRepository
408
- .createQueryBuilder("file")
409
- .select(["file.id", (0, postgresql_1.raw)(`ROW_NUMBER() OVER( ORDER BY file."${args.sortColumnName}" ${args.sortDirection} ) AS row_number`)])
410
- .leftJoinAndSelect("file.folder", "folder"), {
411
- archived: !args.includeArchived ? false : undefined,
412
- folderId: !isSearching ? args.folderId || null : undefined,
413
- mimetypes: (_b = args.filter) === null || _b === void 0 ? void 0 : _b.mimetypes,
414
- query: (_c = args.filter) === null || _c === void 0 ? void 0 : _c.searchText,
415
- sortColumnName: args.sortColumnName,
416
- sortDirection: args.sortDirection,
417
- scope,
418
- });
419
- const result = yield this.filesRepository.getKnex().raw(`select "file_with_row_number".row_number
384
+ const result = await this.filesRepository.getKnex().raw(`select "file_with_row_number".row_number
420
385
  from "${file_entity_1.FILE_TABLE_NAME}" as "file"
421
386
  join (${subQb.getFormattedQuery()}) as "file_with_row_number" ON file_with_row_number.id = file.id
422
387
  where "file"."id" = ?
423
388
  `, [fileId]);
424
- if (result.rows.length === 0) {
425
- throw new Error("File ID does not exist.");
426
- }
427
- // make the positions start with 0
428
- return Number(result.rows[0].row_number) - 1;
429
- });
430
- }
431
- createCopyOfFile(file_1, _a) {
432
- return __awaiter(this, arguments, void 0, function* (file, { inboxFolder }) {
433
- let fileImageInput;
434
- if (file.image) {
435
- const _b = file.image, { id: ignoreId, file: ignoreFile } = _b, imageProps = __rest(_b, ["id", "file"]);
436
- fileImageInput = Object.assign({}, postgresql_1.Utils.copy(imageProps));
437
- }
438
- const { id: ignoreId, createdAt: ignoreCreatedAt, updatedAt: ignoreUpdatedAt, folder: ignoreFolder, image: ignoreImage, scope: ignoreScope, copies: ignoreCopies, alternativesForThisFile: ignoreAlternativesForThisFile, thisFileIsAlternativeFor: ignoreThisFileIsAlternativeFor } = file, fileProps = __rest(file, ["id", "createdAt", "updatedAt", "folder", "image", "scope", "copies", "alternativesForThisFile", "thisFileIsAlternativeFor"]);
439
- const fileInput = Object.assign(Object.assign({}, postgresql_1.Utils.copy(fileProps)), { image: fileImageInput, folderId: inboxFolder.id, copyOf: file, scope: inboxFolder.scope });
440
- const copiedFile = yield this.create(fileInput);
441
- // handled DAM alternatives
442
- const copiedAlternatives = [];
443
- if ((yield file.alternativesForThisFile.loadItems()).length > 0) {
444
- for (const alternative of file.alternativesForThisFile) {
445
- const alternativeFile = yield alternative.alternative.load();
446
- if (alternativeFile === null) {
447
- continue;
448
- }
449
- const copiedAlternativeFile = yield this.createCopyOfFile(alternativeFile, { inboxFolder });
450
- const { id: ignoreId, for: ignoreFor, alternative: ignoreAlternative } = alternative, alternativeProps = __rest(alternative, ["id", "for", "alternative"]);
451
- const copiedDamMediaAlternative = this.damMediaAlternativesRepository.create(Object.assign(Object.assign({}, alternativeProps), { for: copiedFile, alternative: copiedAlternativeFile }));
452
- copiedAlternatives.push(copiedDamMediaAlternative);
389
+ if (result.rows.length === 0) {
390
+ throw new Error("File ID does not exist.");
391
+ }
392
+ // make the positions start with 0
393
+ return Number(result.rows[0].row_number) - 1;
394
+ }
395
+ async createCopyOfFile(file, { inboxFolder }) {
396
+ let fileImageInput;
397
+ if (file.image) {
398
+ const { id: ignoreId, file: ignoreFile, ...imageProps } = file.image;
399
+ fileImageInput = { ...postgresql_1.Utils.copy(imageProps) };
400
+ }
401
+ const { id: ignoreId, createdAt: ignoreCreatedAt, updatedAt: ignoreUpdatedAt, folder: ignoreFolder, image: ignoreImage, scope: ignoreScope, copies: ignoreCopies, alternativesForThisFile: ignoreAlternativesForThisFile, thisFileIsAlternativeFor: ignoreThisFileIsAlternativeFor, ...fileProps } = file;
402
+ const fileInput = {
403
+ ...postgresql_1.Utils.copy(fileProps),
404
+ image: fileImageInput,
405
+ folderId: inboxFolder.id,
406
+ copyOf: file,
407
+ scope: inboxFolder.scope,
408
+ };
409
+ const copiedFile = await this.create(fileInput);
410
+ // handled DAM alternatives
411
+ const copiedAlternatives = [];
412
+ if ((await file.alternativesForThisFile.loadItems()).length > 0) {
413
+ for (const alternative of file.alternativesForThisFile) {
414
+ const alternativeFile = await alternative.alternative.load();
415
+ if (alternativeFile === null) {
416
+ continue;
453
417
  }
418
+ const copiedAlternativeFile = await this.createCopyOfFile(alternativeFile, { inboxFolder });
419
+ const { id: ignoreId, for: ignoreFor, alternative: ignoreAlternative, ...alternativeProps } = alternative;
420
+ const copiedDamMediaAlternative = this.damMediaAlternativesRepository.create({
421
+ ...alternativeProps,
422
+ for: copiedFile,
423
+ alternative: copiedAlternativeFile,
424
+ });
425
+ copiedAlternatives.push(copiedDamMediaAlternative);
454
426
  }
455
- copiedFile.alternativesForThisFile.set(copiedAlternatives);
456
- return copiedFile;
457
- });
458
- }
459
- copyFilesToScope(_a) {
460
- return __awaiter(this, arguments, void 0, function* ({ fileIds, inboxFolderId }) {
461
- const inboxFolder = yield this.foldersService.findOneById(inboxFolderId);
462
- if (!inboxFolder) {
463
- throw new Error("Specified inbox folder doesn't exist.");
464
- }
465
- const files = yield this.findMultipleByIds(fileIds);
466
- if (files.length === 0) {
467
- throw new Error("No valid file ids provided");
468
- }
469
- const mappedFiles = [];
470
- for (const file of files) {
471
- const copiedFile = yield this.createCopyOfFile(file, { inboxFolder });
472
- mappedFiles.push({ rootFile: file, copy: copiedFile });
473
- }
474
- return { mappedFiles };
475
- });
476
- }
477
- findNextAvailableFilename(_a) {
478
- return __awaiter(this, arguments, void 0, function* ({ filePath, folderId = null, scope, }) {
479
- const extension = (0, path_1.extname)(filePath);
480
- const filename = (0, path_1.basename)(filePath, extension);
481
- let i = 1;
482
- let name = (0, files_utils_1.slugifyFilename)(filename, extension);
483
- while ((yield this.findOneByFilenameAndFolder({ filename: name, folderId }, scope)) !== null) {
484
- name = (0, files_utils_1.slugifyFilename)(`${filename}-copy${i}`, extension);
485
- i++;
486
- }
487
- return name;
488
- });
427
+ }
428
+ copiedFile.alternativesForThisFile.set(copiedAlternatives);
429
+ return copiedFile;
489
430
  }
490
- calculateDominantColor(contentHash) {
491
- return __awaiter(this, void 0, void 0, function* () {
492
- const path = this.imgproxyService
493
- .builder()
494
- .resize(imgproxy_enum_1.ResizingType.AUTO, 1)
495
- .format(imgproxy_enum_1.Extension.JPG)
496
- .generateUrl(`${this.blobStorageBackendService.getBackendFilePathPrefix()}${this.config.filesDirectory}/${(0, create_hashed_path_util_1.createHashedPath)(contentHash)}`);
497
- const imgUrl = this.imgproxyService.getSignedUrl(path);
498
- try {
499
- const imageResponse = yield fetch(imgUrl);
500
- const arrayBuffer = yield imageResponse.arrayBuffer();
501
- const imageBuffer = Buffer.from(arrayBuffer);
502
- const data = yield (0, sharp_1.default)(imageBuffer).removeAlpha().raw().toBuffer();
503
- // since we scale the image to 1px with imgproxy, data only contains the colors for this one pixel
504
- const [r, g, b] = data;
505
- return (0, images_util_1.rgbToHex)(r, g, b);
506
- }
507
- catch (e) {
508
- // When imageproxy is not available it is ok.
509
- console.error(e);
510
- return undefined;
511
- }
512
- });
431
+ async copyFilesToScope({ fileIds, inboxFolderId }) {
432
+ const inboxFolder = await this.foldersService.findOneById(inboxFolderId);
433
+ if (!inboxFolder) {
434
+ throw new Error("Specified inbox folder doesn't exist.");
435
+ }
436
+ const files = await this.findMultipleByIds(fileIds);
437
+ if (files.length === 0) {
438
+ throw new Error("No valid file ids provided");
439
+ }
440
+ const mappedFiles = [];
441
+ for (const file of files) {
442
+ const copiedFile = await this.createCopyOfFile(file, { inboxFolder });
443
+ mappedFiles.push({ rootFile: file, copy: copiedFile });
444
+ }
445
+ return { mappedFiles };
446
+ }
447
+ async findNextAvailableFilename({ filePath, folderId = null, scope, }) {
448
+ const extension = (0, path_1.extname)(filePath);
449
+ const filename = (0, path_1.basename)(filePath, extension);
450
+ let i = 1;
451
+ let name = (0, files_utils_1.slugifyFilename)(filename, extension);
452
+ while ((await this.findOneByFilenameAndFolder({ filename: name, folderId }, scope)) !== null) {
453
+ name = (0, files_utils_1.slugifyFilename)(`${filename}-copy${i}`, extension);
454
+ i++;
455
+ }
456
+ return name;
457
+ }
458
+ async calculateDominantColor(contentHash) {
459
+ const path = this.imgproxyService
460
+ .builder()
461
+ .resize(imgproxy_enum_1.ResizingType.AUTO, 1)
462
+ .format(imgproxy_enum_1.Extension.PNG)
463
+ .generateUrl(`${this.blobStorageBackendService.getBackendFilePathPrefix()}${this.config.filesDirectory}/${(0, create_hashed_path_util_1.createHashedPath)(contentHash)}`);
464
+ const imgUrl = this.imgproxyService.getSignedUrl(path);
465
+ let imageResponse;
466
+ try {
467
+ imageResponse = await fetch(imgUrl);
468
+ }
469
+ catch (error) {
470
+ this.logger.error("Failed to calculate dominant color: imgproxy is not available", error);
471
+ return undefined;
472
+ }
473
+ if (!imageResponse.ok) {
474
+ this.logger.error(`Failed to calculate dominant color: imgproxy returned ${imageResponse.status} ${imageResponse.statusText}`);
475
+ return undefined;
476
+ }
477
+ try {
478
+ const arrayBuffer = await imageResponse.arrayBuffer();
479
+ const pngBuffer = Buffer.from(arrayBuffer);
480
+ // Parse the dominant color from the 1x1 PNG produced by imgproxy
481
+ return await this.parsePngPixelColor(pngBuffer);
482
+ }
483
+ catch (error) {
484
+ this.logger.error("Failed to calculate dominant color: could not parse imgproxy response", error);
485
+ return undefined;
486
+ }
513
487
  }
514
- createFileUrl(file_1, _a) {
515
- return __awaiter(this, arguments, void 0, function* (file, { previewDamUrls = false }) {
516
- const filename = (0, path_1.parse)(file.name).name;
517
- const baseUrl = [`/${this.config.basePath}/files`];
518
- if (previewDamUrls) {
519
- baseUrl.push("preview");
488
+ async parsePngPixelColor(pngBuffer) {
489
+ // PNG: 8-byte signature, then chunks (4-byte length + 4-byte type + data + 4-byte CRC)
490
+ let offset = 8;
491
+ let colorType = -1;
492
+ let palette;
493
+ while (offset < pngBuffer.length) {
494
+ const length = pngBuffer.readUInt32BE(offset);
495
+ const type = pngBuffer.toString("ascii", offset + 4, offset + 8);
496
+ const data = pngBuffer.subarray(offset + 8, offset + 8 + length);
497
+ if (type === "IHDR") {
498
+ colorType = data[9];
520
499
  }
521
- else {
522
- const hash = this.createHash({
523
- fileId: file.id,
524
- filename,
525
- });
526
- baseUrl.push(hash);
500
+ else if (type === "PLTE") {
501
+ palette = data;
527
502
  }
528
- return [...baseUrl, file.contentHash, file.id, filename].join("/");
529
- });
530
- }
531
- getFileAsBase64String(file) {
532
- return __awaiter(this, void 0, void 0, function* () {
533
- var _a, e_1, _b, _c;
534
- const fileStream = yield this.blobStorageBackendService.getFile(this.config.filesDirectory, (0, create_hashed_path_util_1.createHashedPath)(file.contentHash));
535
- const chunks = [];
536
- try {
537
- for (var _d = true, fileStream_1 = __asyncValues(fileStream), fileStream_1_1; fileStream_1_1 = yield fileStream_1.next(), _a = fileStream_1_1.done, !_a; _d = true) {
538
- _c = fileStream_1_1.value;
539
- _d = false;
540
- const chunk = _c;
541
- chunks.push(chunk);
503
+ else if (type === "IDAT") {
504
+ const decompressed = await inflate(data);
505
+ // Decompressed scanline: [filter_byte, pixel_data...]
506
+ let r, g, b;
507
+ if (colorType === 3 && palette) {
508
+ // Indexed color: pixel value is a palette index
509
+ const index = decompressed[1] * 3;
510
+ [r, g, b] = [palette[index], palette[index + 1], palette[index + 2]];
542
511
  }
543
- }
544
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
545
- finally {
546
- try {
547
- if (!_d && !_a && (_b = fileStream_1.return)) yield _b.call(fileStream_1);
512
+ else if (colorType === 0) {
513
+ // Grayscale
514
+ const gray = decompressed[1];
515
+ [r, g, b] = [gray, gray, gray];
548
516
  }
549
- finally { if (e_1) throw e_1.error; }
517
+ else {
518
+ // RGB (type 2) or RGBA (type 6): R, G, B are at bytes 1-3
519
+ [r, g, b] = [decompressed[1], decompressed[2], decompressed[3]];
520
+ }
521
+ return `#${[r, g, b].map((v) => v.toString(16).padStart(2, "0")).join("")}`;
550
522
  }
551
- const base64String = Buffer.concat(chunks).toString("base64");
552
- return `data:${file.mimetype};base64,${base64String}`;
553
- });
523
+ offset += 12 + length;
524
+ }
525
+ this.logger.warn("Failed to calculate dominant color: no IDAT chunk found in PNG");
526
+ return undefined;
527
+ }
528
+ async createFileUrl(file, { previewDamUrls = false }) {
529
+ const filename = (0, path_1.parse)(file.name).name;
530
+ const baseUrl = [`/${this.config.basePath}/files`];
531
+ if (previewDamUrls) {
532
+ baseUrl.push("preview");
533
+ }
534
+ else {
535
+ const hash = this.createHash({
536
+ fileId: file.id,
537
+ filename,
538
+ });
539
+ baseUrl.push(hash);
540
+ }
541
+ return [...baseUrl, file.contentHash, file.id, filename].join("/");
554
542
  }
555
- createFileDownloadUrl(file_1, _a) {
556
- return __awaiter(this, arguments, void 0, function* (file, { previewDamUrls = false }) {
557
- const filename = (0, path_1.parse)(file.name).name;
558
- const baseUrl = [`/dam/files/download`];
559
- if (previewDamUrls) {
560
- baseUrl.push("preview");
561
- }
562
- else {
563
- const hash = this.createHash({
564
- fileId: file.id,
565
- filename,
566
- });
567
- baseUrl.push(hash);
568
- }
569
- return [...baseUrl, file.contentHash, file.id, filename].join("/");
570
- });
543
+ async getFileAsBase64String(file) {
544
+ const fileStream = await this.blobStorageBackendService.getFile(this.config.filesDirectory, (0, create_hashed_path_util_1.createHashedPath)(file.contentHash));
545
+ const chunks = [];
546
+ for await (const chunk of fileStream) {
547
+ chunks.push(chunk);
548
+ }
549
+ const base64String = Buffer.concat(chunks).toString("base64");
550
+ return `data:${file.mimetype};base64,${base64String}`;
551
+ }
552
+ async createFileDownloadUrl(file, { previewDamUrls = false }) {
553
+ const filename = (0, path_1.parse)(file.name).name;
554
+ const baseUrl = [`/dam/files/download`];
555
+ if (previewDamUrls) {
556
+ baseUrl.push("preview");
557
+ }
558
+ else {
559
+ const hash = this.createHash({
560
+ fileId: file.id,
561
+ filename,
562
+ });
563
+ baseUrl.push(hash);
564
+ }
565
+ return [...baseUrl, file.contentHash, file.id, filename].join("/");
571
566
  }
572
567
  createHash(params) {
573
568
  const fileHash = `file:${params.fileId}:${params.filename}`;
574
569
  return (0, crypto_1.createHmac)("sha1", this.config.secret).update(fileHash).digest("hex");
575
570
  }
576
- getFileMetadataForUpload(file) {
577
- return __awaiter(this, void 0, void 0, function* () {
578
- const contentHash = yield this.calculateHashForFile(file.path);
579
- let image;
580
- try {
581
- image = yield (0, probe_image_size_1.default)((0, fs_1.createReadStream)(file.path));
582
- if (image.type == "svg")
583
- image = undefined;
584
- if (image !== undefined && image.orientation !== undefined && [6, 8].includes(image.orientation)) {
585
- image = Object.assign(Object.assign({}, image), { width: image.height, height: image.width });
586
- }
571
+ async getFileMetadataForUpload(file) {
572
+ const contentHash = await this.calculateHashForFile(file.path);
573
+ let image;
574
+ try {
575
+ image = await (0, probe_image_size_1.default)((0, fs_1.createReadStream)(file.path));
576
+ if (image.type == "svg") {
577
+ image = undefined;
587
578
  }
588
- catch (_a) {
589
- // empty
579
+ if (image !== undefined && image.orientation !== undefined && [6, 8].includes(image.orientation)) {
580
+ image = {
581
+ ...image,
582
+ width: image.height,
583
+ height: image.width,
584
+ };
590
585
  }
591
- if (image !== undefined &&
592
- image.width &&
593
- image.height &&
594
- Math.round(((image.width * image.height) / 1000000) * 10) / 10 >= this.config.maxSrcResolution) {
595
- throw new image_resolution_exception_1.CometImageResolutionException(`Maximal image resolution exceeded`);
586
+ }
587
+ catch {
588
+ // empty
589
+ }
590
+ if (image !== undefined &&
591
+ image.width &&
592
+ image.height &&
593
+ Math.round(((image.width * image.height) / 1000000) * 10) / 10 >= this.config.maxSrcResolution) {
594
+ throw new image_resolution_exception_1.CometImageResolutionException(`Maximal image resolution exceeded`);
595
+ }
596
+ let exifData;
597
+ if (exifrSupportedMimetypes.includes(file.mimetype)) {
598
+ try {
599
+ exifData = await exifr_1.default.parse(file.path);
596
600
  }
597
- let exifData;
598
- if (exifrSupportedMimetypes.includes(file.mimetype)) {
599
- try {
600
- exifData = yield exifr_1.default.parse(file.path);
601
- }
602
- catch (_b) {
603
- // empty
604
- }
601
+ catch {
602
+ // empty
605
603
  }
606
- return { exifData, contentHash, image };
607
- });
604
+ }
605
+ return { exifData, contentHash, image };
608
606
  }
609
607
  };
610
608
  exports.FilesService = FilesService;