@jrmc/adonis-attachment 6.0.0-alpha.1 → 6.0.0-alpha.3

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 (336) hide show
  1. package/build/commands/commands.json +1 -1
  2. package/build/commands/make/attachment_v5_migration.d.ts.map +1 -1
  3. package/build/commands/make/attachment_v5_migration.js +6 -3
  4. package/build/commands/make/attachment_v5_migration.js.map +1 -1
  5. package/build/commands/make/attachments_table.d.ts.map +1 -1
  6. package/build/commands/make/attachments_table.js +8 -2
  7. package/build/commands/make/attachments_table.js.map +1 -1
  8. package/build/commands/make/converter.d.ts +17 -0
  9. package/build/commands/make/converter.d.ts.map +1 -0
  10. package/build/commands/make/converter.js +27 -0
  11. package/build/commands/make/converter.js.map +1 -0
  12. package/build/index.d.ts +12 -6
  13. package/build/index.d.ts.map +1 -1
  14. package/build/index.js +3 -5
  15. package/build/index.js.map +1 -1
  16. package/build/providers/attachment_provider.d.ts.map +1 -1
  17. package/build/providers/attachment_provider.js +36 -1
  18. package/build/providers/attachment_provider.js.map +1 -1
  19. package/build/services/converters.d.ts +10 -0
  20. package/build/services/converters.d.ts.map +1 -0
  21. package/build/services/converters.js +17 -0
  22. package/build/services/converters.js.map +1 -0
  23. package/build/src/adapters/adonis_drive_storage.d.ts.map +1 -1
  24. package/build/src/adapters/adonis_drive_storage.js +4 -1
  25. package/build/src/adapters/adonis_drive_storage.js.map +1 -1
  26. package/build/src/adapters/local_file_storage.d.ts.map +1 -1
  27. package/build/src/adapters/local_file_storage.js +9 -2
  28. package/build/src/adapters/local_file_storage.js.map +1 -1
  29. package/build/src/converters/autodetect_converter.d.ts +24 -0
  30. package/build/src/converters/autodetect_converter.d.ts.map +1 -0
  31. package/build/src/converters/autodetect_converter.js +113 -0
  32. package/build/src/converters/autodetect_converter.js.map +1 -0
  33. package/build/src/converters/configured_variant_converter_registry.d.ts +36 -0
  34. package/build/src/converters/configured_variant_converter_registry.d.ts.map +1 -0
  35. package/build/src/converters/configured_variant_converter_registry.js +81 -0
  36. package/build/src/converters/configured_variant_converter_registry.js.map +1 -0
  37. package/build/src/converters/converter.d.ts +148 -0
  38. package/build/src/converters/converter.d.ts.map +1 -0
  39. package/build/src/converters/converter.js +24 -0
  40. package/build/src/converters/converter.js.map +1 -0
  41. package/build/src/core/attachment.d.ts +7 -3
  42. package/build/src/core/attachment.d.ts.map +1 -1
  43. package/build/src/core/attachment.js +29 -4
  44. package/build/src/core/attachment.js.map +1 -1
  45. package/build/src/core/attachment_job_processor.d.ts +17 -1
  46. package/build/src/core/attachment_job_processor.d.ts.map +1 -1
  47. package/build/src/core/attachment_job_processor.js +81 -8
  48. package/build/src/core/attachment_job_processor.js.map +1 -1
  49. package/build/src/core/attachment_metadata_persister.d.ts +13 -0
  50. package/build/src/core/attachment_metadata_persister.d.ts.map +1 -0
  51. package/build/{tests/create_legacy_attachment_migration_script.spec.d.ts → src/core/attachment_metadata_persister.js} +1 -1
  52. package/build/src/core/attachment_metadata_persister.js.map +1 -0
  53. package/build/src/core/attachment_options.d.ts +3 -2
  54. package/build/src/core/attachment_options.d.ts.map +1 -1
  55. package/build/src/core/attachment_options.js.map +1 -1
  56. package/build/src/core/attachment_service.d.ts +24 -1
  57. package/build/src/core/attachment_service.d.ts.map +1 -1
  58. package/build/src/core/attachment_service.js +95 -4
  59. package/build/src/core/attachment_service.js.map +1 -1
  60. package/build/src/core/index.d.ts +9 -2
  61. package/build/src/core/index.d.ts.map +1 -1
  62. package/build/src/core/index.js +8 -2
  63. package/build/src/core/index.js.map +1 -1
  64. package/build/src/core/queue.d.ts +11 -1
  65. package/build/src/core/queue.d.ts.map +1 -1
  66. package/build/src/define_config.d.ts +40 -3
  67. package/build/src/define_config.d.ts.map +1 -1
  68. package/build/src/define_config.js +43 -1
  69. package/build/src/define_config.js.map +1 -1
  70. package/build/src/errors.d.ts +57 -0
  71. package/build/src/errors.d.ts.map +1 -0
  72. package/build/src/errors.js +96 -0
  73. package/build/src/errors.js.map +1 -0
  74. package/build/src/events/adonis_attachment_event_emitter.d.ts +17 -0
  75. package/build/src/events/adonis_attachment_event_emitter.d.ts.map +1 -0
  76. package/build/src/events/adonis_attachment_event_emitter.js +17 -0
  77. package/build/src/events/adonis_attachment_event_emitter.js.map +1 -0
  78. package/build/src/events/attachment_events.d.ts +43 -0
  79. package/build/src/events/attachment_events.d.ts.map +1 -0
  80. package/build/src/events/attachment_events.js +32 -0
  81. package/build/src/events/attachment_events.js.map +1 -0
  82. package/build/src/integrations/lucid/{attachment_column.d.ts → column/attachment_column.d.ts} +2 -2
  83. package/build/src/integrations/lucid/column/attachment_column.d.ts.map +1 -0
  84. package/build/src/integrations/lucid/{attachment_column.js → column/attachment_column.js} +2 -2
  85. package/build/src/integrations/lucid/column/attachment_column.js.map +1 -0
  86. package/build/src/integrations/lucid/index.d.ts +17 -13
  87. package/build/src/integrations/lucid/index.d.ts.map +1 -1
  88. package/build/src/integrations/lucid/index.js +17 -13
  89. package/build/src/integrations/lucid/index.js.map +1 -1
  90. package/build/src/integrations/lucid/migrations/legacy/legacy_attachment_migration_stub.d.ts +20 -0
  91. package/build/src/integrations/lucid/migrations/legacy/legacy_attachment_migration_stub.d.ts.map +1 -0
  92. package/build/src/integrations/lucid/migrations/legacy/legacy_attachment_migration_stub.js +18 -0
  93. package/build/src/integrations/lucid/migrations/legacy/legacy_attachment_migration_stub.js.map +1 -0
  94. package/build/src/integrations/lucid/{migrate_legacy_attachment.d.ts → migrations/legacy/migrate_legacy_attachment.d.ts} +22 -10
  95. package/build/src/integrations/lucid/migrations/legacy/migrate_legacy_attachment.d.ts.map +1 -0
  96. package/build/src/integrations/lucid/{migrate_legacy_attachment.js → migrations/legacy/migrate_legacy_attachment.js} +35 -25
  97. package/build/src/integrations/lucid/migrations/legacy/migrate_legacy_attachment.js.map +1 -0
  98. package/build/src/integrations/lucid/{migrate_legacy_attachment_records.d.ts → migrations/legacy/migrate_legacy_attachment_records.d.ts} +3 -3
  99. package/build/src/integrations/lucid/migrations/legacy/migrate_legacy_attachment_records.d.ts.map +1 -0
  100. package/build/src/integrations/lucid/{migrate_legacy_attachment_records.js → migrations/legacy/migrate_legacy_attachment_records.js} +11 -7
  101. package/build/src/integrations/lucid/migrations/legacy/migrate_legacy_attachment_records.js.map +1 -0
  102. package/build/src/integrations/lucid/models/attachment_link_model.d.ts +30 -0
  103. package/build/src/integrations/lucid/models/attachment_link_model.d.ts.map +1 -0
  104. package/build/src/integrations/lucid/models/attachment_link_model.js +59 -0
  105. package/build/src/integrations/lucid/models/attachment_link_model.js.map +1 -0
  106. package/build/src/integrations/lucid/{attachment_model.d.ts → models/attachment_model.d.ts} +5 -8
  107. package/build/src/integrations/lucid/models/attachment_model.d.ts.map +1 -0
  108. package/build/src/integrations/lucid/{attachment_model.js → models/attachment_model.js} +5 -16
  109. package/build/src/integrations/lucid/models/attachment_model.js.map +1 -0
  110. package/build/src/integrations/lucid/{lucid_attachment_lifecycle_service.d.ts → persistence/lucid_attachment_lifecycle_service.d.ts} +18 -14
  111. package/build/src/integrations/lucid/persistence/lucid_attachment_lifecycle_service.d.ts.map +1 -0
  112. package/build/src/integrations/lucid/persistence/lucid_attachment_lifecycle_service.js +252 -0
  113. package/build/src/integrations/lucid/persistence/lucid_attachment_lifecycle_service.js.map +1 -0
  114. package/build/src/integrations/lucid/persistence/lucid_attachment_metadata_persister.d.ts +17 -0
  115. package/build/src/integrations/lucid/persistence/lucid_attachment_metadata_persister.d.ts.map +1 -0
  116. package/build/src/integrations/lucid/persistence/lucid_attachment_metadata_persister.js +18 -0
  117. package/build/src/integrations/lucid/persistence/lucid_attachment_metadata_persister.js.map +1 -0
  118. package/build/src/integrations/lucid/{lucid_attachment_repository.d.ts → persistence/lucid_attachment_repository.d.ts} +3 -3
  119. package/build/src/integrations/lucid/persistence/lucid_attachment_repository.d.ts.map +1 -0
  120. package/build/src/integrations/lucid/{lucid_attachment_repository.js → persistence/lucid_attachment_repository.js} +1 -1
  121. package/build/src/integrations/lucid/persistence/lucid_attachment_repository.js.map +1 -0
  122. package/build/src/integrations/lucid/persistence/lucid_attachment_store.d.ts +48 -0
  123. package/build/src/integrations/lucid/persistence/lucid_attachment_store.d.ts.map +1 -0
  124. package/build/src/integrations/lucid/persistence/lucid_attachment_store.js +226 -0
  125. package/build/src/integrations/lucid/persistence/lucid_attachment_store.js.map +1 -0
  126. package/build/src/integrations/lucid/{lucid_variant_generation_service.d.ts → persistence/lucid_variant_generation_service.d.ts} +8 -5
  127. package/build/src/integrations/lucid/persistence/lucid_variant_generation_service.d.ts.map +1 -0
  128. package/build/src/integrations/lucid/{lucid_variant_generation_service.js → persistence/lucid_variant_generation_service.js} +9 -3
  129. package/build/src/integrations/lucid/persistence/lucid_variant_generation_service.js.map +1 -0
  130. package/build/src/integrations/lucid/relations/attachment_owner.d.ts.map +1 -0
  131. package/build/src/integrations/lucid/relations/attachment_owner.js.map +1 -0
  132. package/build/src/integrations/lucid/{attachment_relation.d.ts → relations/attachment_relation.d.ts} +29 -15
  133. package/build/src/integrations/lucid/relations/attachment_relation.d.ts.map +1 -0
  134. package/build/src/integrations/lucid/relations/attachment_relation.js +273 -0
  135. package/build/src/integrations/lucid/relations/attachment_relation.js.map +1 -0
  136. package/build/src/integrations/lucid/schema/attachment_schema_service.d.ts +28 -0
  137. package/build/src/integrations/lucid/schema/attachment_schema_service.d.ts.map +1 -0
  138. package/build/src/integrations/lucid/schema/attachment_schema_service.js +81 -0
  139. package/build/src/integrations/lucid/schema/attachment_schema_service.js.map +1 -0
  140. package/build/src/integrations/lucid/schema/attachment_table_names.d.ts +15 -0
  141. package/build/src/integrations/lucid/schema/attachment_table_names.d.ts.map +1 -0
  142. package/build/src/integrations/lucid/schema/attachment_table_names.js +23 -0
  143. package/build/src/integrations/lucid/schema/attachment_table_names.js.map +1 -0
  144. package/build/src/integrations/lucid/schema/attachments_table_stub.d.ts.map +1 -0
  145. package/build/src/integrations/lucid/{attachments_table_stub.js → schema/attachments_table_stub.js} +2 -4
  146. package/build/src/integrations/lucid/schema/attachments_table_stub.js.map +1 -0
  147. package/build/src/integrations/lucid/schema/configure_lucid_attachment_tables.d.ts +12 -0
  148. package/build/src/integrations/lucid/schema/configure_lucid_attachment_tables.d.ts.map +1 -0
  149. package/build/src/integrations/lucid/schema/configure_lucid_attachment_tables.js +19 -0
  150. package/build/src/integrations/lucid/schema/configure_lucid_attachment_tables.js.map +1 -0
  151. package/build/src/media/binaries.d.ts +79 -0
  152. package/build/src/media/binaries.d.ts.map +1 -0
  153. package/build/src/media/binaries.js +288 -0
  154. package/build/src/media/binaries.js.map +1 -0
  155. package/build/src/media/blurhash.d.ts +48 -0
  156. package/build/src/media/blurhash.d.ts.map +1 -0
  157. package/build/src/media/blurhash.js +46 -0
  158. package/build/src/media/blurhash.js.map +1 -0
  159. package/build/src/media/exif.d.ts +23 -0
  160. package/build/src/media/exif.d.ts.map +1 -0
  161. package/build/src/media/exif.js +98 -0
  162. package/build/src/media/exif.js.map +1 -0
  163. package/build/src/media/media_metadata.d.ts +55 -0
  164. package/build/src/media/media_metadata.d.ts.map +1 -0
  165. package/build/src/media/media_metadata.js +27 -0
  166. package/build/src/media/media_metadata.js.map +1 -0
  167. package/build/src/media/sharp.d.ts +45 -0
  168. package/build/src/media/sharp.d.ts.map +1 -0
  169. package/build/src/media/sharp.js +76 -0
  170. package/build/src/media/sharp.js.map +1 -0
  171. package/build/src/media/v5_metadata.d.ts +20 -0
  172. package/build/src/media/v5_metadata.d.ts.map +1 -0
  173. package/build/src/media/v5_metadata.js +20 -0
  174. package/build/src/media/v5_metadata.js.map +1 -0
  175. package/build/src/queues/memory_queue.d.ts.map +1 -1
  176. package/build/src/queues/memory_queue.js +4 -1
  177. package/build/src/queues/memory_queue.js.map +1 -1
  178. package/build/src/sources/attachment_manager.d.ts +1 -3
  179. package/build/src/sources/attachment_manager.d.ts.map +1 -1
  180. package/build/src/sources/attachment_manager.js +19 -12
  181. package/build/src/sources/attachment_manager.js.map +1 -1
  182. package/build/src/variants/variant_converter.d.ts +4 -1
  183. package/build/src/variants/variant_converter.d.ts.map +1 -1
  184. package/build/src/variants/variant_generation_service.d.ts +9 -3
  185. package/build/src/variants/variant_generation_service.d.ts.map +1 -1
  186. package/build/src/variants/variant_generation_service.js +47 -6
  187. package/build/src/variants/variant_generation_service.js.map +1 -1
  188. package/build/stubs/config/attachment.stub +23 -2
  189. package/build/stubs/converters/converter.stub +18 -0
  190. package/build/stubs/migrations/attachments_table.stub +7 -25
  191. package/build/{src/integrations/lucid/render_legacy_attachment_migration_script.js → stubs/migrations/legacy_attachment_migration.stub} +13 -15
  192. package/build/tests/adonis_queue.spec.js +56 -1
  193. package/build/tests/adonis_queue.spec.js.map +1 -1
  194. package/build/tests/attachment_events.spec.d.ts +8 -0
  195. package/build/tests/attachment_events.spec.d.ts.map +1 -0
  196. package/build/tests/attachment_events.spec.js +65 -0
  197. package/build/tests/attachment_events.spec.js.map +1 -0
  198. package/build/tests/attachment_job_processor.spec.js +77 -2
  199. package/build/tests/attachment_job_processor.spec.js.map +1 -1
  200. package/build/tests/attachment_provider.spec.js +84 -1
  201. package/build/tests/attachment_provider.spec.js.map +1 -1
  202. package/build/tests/attachment_schema_service.spec.d.ts +8 -0
  203. package/build/tests/attachment_schema_service.spec.d.ts.map +1 -0
  204. package/build/tests/attachment_schema_service.spec.js +52 -0
  205. package/build/tests/attachment_schema_service.spec.js.map +1 -0
  206. package/build/tests/attachment_service.spec.js +81 -2
  207. package/build/tests/attachment_service.spec.js.map +1 -1
  208. package/build/tests/attachment_table_names.spec.d.ts +8 -0
  209. package/build/tests/attachment_table_names.spec.d.ts.map +1 -0
  210. package/build/tests/attachment_table_names.spec.js +36 -0
  211. package/build/tests/attachment_table_names.spec.js.map +1 -0
  212. package/build/tests/attachments_table_stub.spec.js +41 -6
  213. package/build/tests/attachments_table_stub.spec.js.map +1 -1
  214. package/build/tests/autodetect_converter.spec.d.ts +8 -0
  215. package/build/tests/autodetect_converter.spec.d.ts.map +1 -0
  216. package/build/tests/autodetect_converter.spec.js +55 -0
  217. package/build/tests/autodetect_converter.spec.js.map +1 -0
  218. package/build/tests/binary_media.spec.d.ts +8 -0
  219. package/build/tests/binary_media.spec.d.ts.map +1 -0
  220. package/build/tests/binary_media.spec.js +106 -0
  221. package/build/tests/binary_media.spec.js.map +1 -0
  222. package/build/tests/blurhash_media.spec.d.ts +8 -0
  223. package/build/tests/blurhash_media.spec.d.ts.map +1 -0
  224. package/build/tests/blurhash_media.spec.js +40 -0
  225. package/build/tests/blurhash_media.spec.js.map +1 -0
  226. package/build/tests/configure.spec.js +1 -0
  227. package/build/tests/configure.spec.js.map +1 -1
  228. package/build/tests/configured_variant_converter_registry.spec.d.ts +8 -0
  229. package/build/tests/configured_variant_converter_registry.spec.d.ts.map +1 -0
  230. package/build/tests/configured_variant_converter_registry.spec.js +73 -0
  231. package/build/tests/configured_variant_converter_registry.spec.js.map +1 -0
  232. package/build/tests/converter_config.types.d.ts +36 -0
  233. package/build/tests/converter_config.types.d.ts.map +1 -0
  234. package/build/tests/converter_config.types.js +60 -0
  235. package/build/tests/converter_config.types.js.map +1 -0
  236. package/build/tests/define_config.spec.js +113 -0
  237. package/build/tests/define_config.spec.js.map +1 -1
  238. package/build/tests/errors.spec.d.ts +8 -0
  239. package/build/tests/errors.spec.d.ts.map +1 -0
  240. package/build/tests/errors.spec.js +43 -0
  241. package/build/tests/errors.spec.js.map +1 -0
  242. package/build/tests/exif_media.spec.d.ts +8 -0
  243. package/build/tests/exif_media.spec.d.ts.map +1 -0
  244. package/build/tests/exif_media.spec.js +50 -0
  245. package/build/tests/exif_media.spec.js.map +1 -0
  246. package/build/tests/helpers/lucid_test_database.d.ts.map +1 -1
  247. package/build/tests/helpers/lucid_test_database.js +17 -7
  248. package/build/tests/helpers/lucid_test_database.js.map +1 -1
  249. package/build/tests/legacy_attachment_migration_stub.spec.d.ts +8 -0
  250. package/build/tests/legacy_attachment_migration_stub.spec.d.ts.map +1 -0
  251. package/build/tests/legacy_attachment_migration_stub.spec.js +57 -0
  252. package/build/tests/legacy_attachment_migration_stub.spec.js.map +1 -0
  253. package/build/tests/lucid_attachment_collection_store.spec.js +5 -4
  254. package/build/tests/lucid_attachment_collection_store.spec.js.map +1 -1
  255. package/build/tests/lucid_attachment_column.spec.js +1 -1
  256. package/build/tests/lucid_attachment_column.spec.js.map +1 -1
  257. package/build/tests/lucid_attachment_lifecycle_service.spec.js +144 -256
  258. package/build/tests/lucid_attachment_lifecycle_service.spec.js.map +1 -1
  259. package/build/tests/lucid_attachment_metadata_persister.spec.d.ts +8 -0
  260. package/build/tests/lucid_attachment_metadata_persister.spec.d.ts.map +1 -0
  261. package/build/tests/lucid_attachment_metadata_persister.spec.js +34 -0
  262. package/build/tests/lucid_attachment_metadata_persister.spec.js.map +1 -0
  263. package/build/tests/lucid_attachment_relation.spec.js +167 -27
  264. package/build/tests/lucid_attachment_relation.spec.js.map +1 -1
  265. package/build/tests/lucid_attachment_repository.spec.js +1 -1
  266. package/build/tests/lucid_attachment_repository.spec.js.map +1 -1
  267. package/build/tests/lucid_attachment_store.spec.js +24 -52
  268. package/build/tests/lucid_attachment_store.spec.js.map +1 -1
  269. package/build/tests/lucid_sqlite_integration.spec.js +24 -18
  270. package/build/tests/lucid_sqlite_integration.spec.js.map +1 -1
  271. package/build/tests/lucid_variant_generation_service.spec.js +18 -1
  272. package/build/tests/lucid_variant_generation_service.spec.js.map +1 -1
  273. package/build/tests/make_converter.spec.d.ts +8 -0
  274. package/build/tests/make_converter.spec.d.ts.map +1 -0
  275. package/build/tests/make_converter.spec.js +32 -0
  276. package/build/tests/make_converter.spec.js.map +1 -0
  277. package/build/tests/media_metadata.spec.d.ts +8 -0
  278. package/build/tests/media_metadata.spec.d.ts.map +1 -0
  279. package/build/tests/media_metadata.spec.js +51 -0
  280. package/build/tests/media_metadata.spec.js.map +1 -0
  281. package/build/tests/migrate_legacy_attachment.spec.js +62 -47
  282. package/build/tests/migrate_legacy_attachment.spec.js.map +1 -1
  283. package/build/tests/migrate_legacy_attachment_records.spec.js +4 -3
  284. package/build/tests/migrate_legacy_attachment_records.spec.js.map +1 -1
  285. package/build/tests/package_exports.spec.js +18 -2
  286. package/build/tests/package_exports.spec.js.map +1 -1
  287. package/build/tests/sharp_media.spec.d.ts +8 -0
  288. package/build/tests/sharp_media.spec.d.ts.map +1 -0
  289. package/build/tests/sharp_media.spec.js +84 -0
  290. package/build/tests/sharp_media.spec.js.map +1 -0
  291. package/build/tests/v5_metadata.spec.d.ts +8 -0
  292. package/build/tests/v5_metadata.spec.d.ts.map +1 -0
  293. package/build/tests/v5_metadata.spec.js +19 -0
  294. package/build/tests/v5_metadata.spec.js.map +1 -0
  295. package/build/tests/variant_generation_service.spec.js +122 -0
  296. package/build/tests/variant_generation_service.spec.js.map +1 -1
  297. package/package.json +50 -2
  298. package/build/src/integrations/lucid/attachment_column.d.ts.map +0 -1
  299. package/build/src/integrations/lucid/attachment_column.js.map +0 -1
  300. package/build/src/integrations/lucid/attachment_model.d.ts.map +0 -1
  301. package/build/src/integrations/lucid/attachment_model.js.map +0 -1
  302. package/build/src/integrations/lucid/attachment_owner.d.ts.map +0 -1
  303. package/build/src/integrations/lucid/attachment_owner.js.map +0 -1
  304. package/build/src/integrations/lucid/attachment_relation.d.ts.map +0 -1
  305. package/build/src/integrations/lucid/attachment_relation.js +0 -163
  306. package/build/src/integrations/lucid/attachment_relation.js.map +0 -1
  307. package/build/src/integrations/lucid/attachments_table_stub.d.ts.map +0 -1
  308. package/build/src/integrations/lucid/attachments_table_stub.js.map +0 -1
  309. package/build/src/integrations/lucid/create_legacy_attachment_migration_script.d.ts +0 -13
  310. package/build/src/integrations/lucid/create_legacy_attachment_migration_script.d.ts.map +0 -1
  311. package/build/src/integrations/lucid/create_legacy_attachment_migration_script.js +0 -20
  312. package/build/src/integrations/lucid/create_legacy_attachment_migration_script.js.map +0 -1
  313. package/build/src/integrations/lucid/lucid_attachment_lifecycle_service.d.ts.map +0 -1
  314. package/build/src/integrations/lucid/lucid_attachment_lifecycle_service.js +0 -188
  315. package/build/src/integrations/lucid/lucid_attachment_lifecycle_service.js.map +0 -1
  316. package/build/src/integrations/lucid/lucid_attachment_repository.d.ts.map +0 -1
  317. package/build/src/integrations/lucid/lucid_attachment_repository.js.map +0 -1
  318. package/build/src/integrations/lucid/lucid_attachment_store.d.ts +0 -36
  319. package/build/src/integrations/lucid/lucid_attachment_store.d.ts.map +0 -1
  320. package/build/src/integrations/lucid/lucid_attachment_store.js +0 -179
  321. package/build/src/integrations/lucid/lucid_attachment_store.js.map +0 -1
  322. package/build/src/integrations/lucid/lucid_variant_generation_service.d.ts.map +0 -1
  323. package/build/src/integrations/lucid/lucid_variant_generation_service.js.map +0 -1
  324. package/build/src/integrations/lucid/migrate_legacy_attachment.d.ts.map +0 -1
  325. package/build/src/integrations/lucid/migrate_legacy_attachment.js.map +0 -1
  326. package/build/src/integrations/lucid/migrate_legacy_attachment_records.d.ts.map +0 -1
  327. package/build/src/integrations/lucid/migrate_legacy_attachment_records.js.map +0 -1
  328. package/build/src/integrations/lucid/render_legacy_attachment_migration_script.d.ts +0 -11
  329. package/build/src/integrations/lucid/render_legacy_attachment_migration_script.d.ts.map +0 -1
  330. package/build/src/integrations/lucid/render_legacy_attachment_migration_script.js.map +0 -1
  331. package/build/tests/create_legacy_attachment_migration_script.spec.d.ts.map +0 -1
  332. package/build/tests/create_legacy_attachment_migration_script.spec.js +0 -31
  333. package/build/tests/create_legacy_attachment_migration_script.spec.js.map +0 -1
  334. /package/build/src/integrations/lucid/{attachment_owner.d.ts → relations/attachment_owner.d.ts} +0 -0
  335. /package/build/src/integrations/lucid/{attachment_owner.js → relations/attachment_owner.js} +0 -0
  336. /package/build/src/integrations/lucid/{attachments_table_stub.d.ts → schema/attachments_table_stub.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autodetect_converter.js","sourceRoot":"","sources":["../../../src/converters/autodetect_converter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * @jrmc/adonis-attachment
3
+ *
4
+ * @license MIT
5
+ * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
+ */
7
+ import Converter, { type ConverterOptions } from './converter.js';
8
+ import type { VariantConverter } from '../variants/variant_converter.js';
9
+ import { AttachmentError } from '../errors.js';
10
+ export type ConverterConstructor = new (options?: any) => Converter<any>;
11
+ export type ConverterModule = {
12
+ default: ConverterConstructor | Converter | VariantConverter;
13
+ };
14
+ export type ConverterConfig<Options extends ConverterOptions = ConverterOptions> = Options & {
15
+ /** Defaults to AutodetectConverter when omitted. */
16
+ converter?: () => Promise<ConverterModule>;
17
+ /** Optional nested options are merged after the direct v5-style options. */
18
+ options?: Partial<Options>;
19
+ };
20
+ export type ConverterConfigMap = Record<string, ConverterConfig>;
21
+ export interface VariantConverterRegistry<Key extends string = string> {
22
+ keys(): Promise<readonly Key[]>;
23
+ get(key: string): Promise<VariantConverter | undefined>;
24
+ }
25
+ /** Lazily imports and instantiates the converters declared in package configuration. */
26
+ export declare class ConfiguredVariantConverterRegistry<Config extends ConverterConfigMap = ConverterConfigMap> implements VariantConverterRegistry<Extract<keyof Config, string>> {
27
+ #private;
28
+ constructor(config: Config);
29
+ keys(): Promise<readonly Extract<keyof Config, string>[]>;
30
+ get(key: string): Promise<VariantConverter | undefined>;
31
+ }
32
+ export declare class InvalidConverterModuleError extends AttachmentError {
33
+ static code: string;
34
+ constructor(key: string);
35
+ }
36
+ //# sourceMappingURL=configured_variant_converter_registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configured_variant_converter_registry.d.ts","sourceRoot":"","sources":["../../../src/converters/configured_variant_converter_registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,SAAS,EAAE,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C,MAAM,MAAM,oBAAoB,GAAG,KAAK,OAAO,CAAC,EAAE,GAAG,KAAK,SAAS,CAAC,GAAG,CAAC,CAAA;AACxE,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,oBAAoB,GAAG,SAAS,GAAG,gBAAgB,CAAA;CAC7D,CAAA;AACD,MAAM,MAAM,eAAe,CAAC,OAAO,SAAS,gBAAgB,GAAG,gBAAgB,IAAI,OAAO,GAAG;IAC3F,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC,eAAe,CAAC,CAAA;IAC1C,4EAA4E;IAC5E,OAAO,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;CAC3B,CAAA;AACD,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAA;AAEhE,MAAM,WAAW,wBAAwB,CAAC,GAAG,SAAS,MAAM,GAAG,MAAM;IACnE,IAAI,IAAI,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC,CAAA;IAC/B,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAA;CACxD;AAED,wFAAwF;AACxF,qBAAa,kCAAkC,CAC7C,MAAM,SAAS,kBAAkB,GAAG,kBAAkB,CACtD,YAAW,wBAAwB,CAAC,OAAO,CAAC,MAAM,MAAM,EAAE,MAAM,CAAC,CAAC;;gBAItD,MAAM,EAAE,MAAM;IAIpB,IAAI,IAAI,OAAO,CAAC,SAAS,OAAO,CAAC,MAAM,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IAI/D,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;CAuCxD;AAED,qBAAa,2BAA4B,SAAQ,eAAe;IAC9D,MAAM,CAAC,IAAI,SAA+B;gBAE9B,GAAG,EAAE,MAAM;CAIxB"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * @jrmc/adonis-attachment
3
+ *
4
+ * @license MIT
5
+ * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
+ */
7
+ import Converter from './converter.js';
8
+ import AutodetectConverter from './autodetect_converter.js';
9
+ import { AttachmentError } from '../errors.js';
10
+ /** Lazily imports and instantiates the converters declared in package configuration. */
11
+ export class ConfiguredVariantConverterRegistry {
12
+ #config;
13
+ #converters = new Map();
14
+ constructor(config) {
15
+ this.#config = config;
16
+ }
17
+ async keys() {
18
+ return Object.keys(this.#config);
19
+ }
20
+ get(key) {
21
+ const config = this.#config[key];
22
+ if (!config) {
23
+ return Promise.resolve(undefined);
24
+ }
25
+ let converter = this.#converters.get(key);
26
+ if (!converter) {
27
+ converter = this.#load(key, config);
28
+ this.#converters.set(key, converter);
29
+ }
30
+ return converter;
31
+ }
32
+ async #load(key, config) {
33
+ if (!config.converter) {
34
+ const options = resolveOptions(config);
35
+ return asVariantConverter(key, new AutodetectConverter(options), options);
36
+ }
37
+ const module = await config.converter();
38
+ const implementation = module.default;
39
+ if (isVariantConverter(implementation)) {
40
+ return asVariantConverter(key, implementation, resolveOptions(config));
41
+ }
42
+ const converter = typeof implementation === 'function'
43
+ ? new implementation(resolveOptions(config))
44
+ : implementation;
45
+ if (!(converter instanceof Converter)) {
46
+ throw new InvalidConverterModuleError(key);
47
+ }
48
+ return asVariantConverter(key, converter, converter.options);
49
+ }
50
+ }
51
+ export class InvalidConverterModuleError extends AttachmentError {
52
+ static code = 'E_INVALID_CONVERTER_MODULE';
53
+ constructor(key) {
54
+ super(`Converter "${key}" must default-export a Converter class or a VariantConverter object`);
55
+ this.name = 'InvalidConverterModuleError';
56
+ }
57
+ }
58
+ function isVariantConverter(value) {
59
+ return !!value && typeof value === 'object' && 'convert' in value && typeof value.convert === 'function';
60
+ }
61
+ function asVariantConverter(key, converter, options) {
62
+ const inheritedBlurhash = converter instanceof Converter ? undefined : converter.blurhash;
63
+ return {
64
+ key,
65
+ ...(options?.blurhash !== undefined
66
+ ? { blurhash: options.blurhash }
67
+ : inheritedBlurhash !== undefined
68
+ ? { blurhash: inheritedBlurhash }
69
+ : {}),
70
+ convert(input) {
71
+ return converter instanceof Converter
72
+ ? converter.handle({ ...input, options: converter.options })
73
+ : converter.convert(input);
74
+ },
75
+ };
76
+ }
77
+ function resolveOptions(config) {
78
+ const { converter: _converter, options, ...direct } = config;
79
+ return { ...direct, ...options };
80
+ }
81
+ //# sourceMappingURL=configured_variant_converter_registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configured_variant_converter_registry.js","sourceRoot":"","sources":["../../../src/converters/configured_variant_converter_registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * @jrmc/adonis-attachment
3
+ *
4
+ * @license MIT
5
+ * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
+ */
7
+ import type { VariantConversionInput, VariantConversionOutput } from '../variants/variant_converter.js';
8
+ import type { BlurhashOptions } from '../media/blurhash.js';
9
+ export type { BlurhashComponent, BlurhashOptions } from '../media/blurhash.js';
10
+ export type SharpBackground = string | {
11
+ r: number;
12
+ g: number;
13
+ b: number;
14
+ alpha: number;
15
+ };
16
+ /** Matches the resize options supported by Sharp and exposed by v5. */
17
+ export type SharpResizeOptions = {
18
+ width?: number;
19
+ height?: number;
20
+ fit?: string;
21
+ position?: string;
22
+ background?: SharpBackground;
23
+ kernel?: string;
24
+ withoutEnlargement?: boolean;
25
+ withoutReduction?: boolean;
26
+ fastShrinkOnLoad?: boolean;
27
+ };
28
+ export type SharpOutputFormat = 'jpeg' | 'jpg' | 'png' | 'gif' | 'webp' | 'avif' | 'heif' | 'tiff' | 'raw';
29
+ type JpegFormatOptions = {
30
+ quality?: number;
31
+ progressive?: boolean;
32
+ chromaSubsampling?: string;
33
+ optimiseCoding?: boolean;
34
+ optimizeCoding?: boolean;
35
+ mozjpeg?: boolean;
36
+ trellisQuantisation?: boolean;
37
+ overshootDeringing?: boolean;
38
+ optimiseScans?: boolean;
39
+ optimizeScans?: boolean;
40
+ quantisationTable?: number;
41
+ quantizationTable?: number;
42
+ force?: boolean;
43
+ };
44
+ type PngFormatOptions = {
45
+ quality?: number;
46
+ progressive?: boolean;
47
+ compressionLevel?: number;
48
+ adaptiveFiltering?: boolean;
49
+ palette?: boolean;
50
+ effort?: number;
51
+ colours?: number;
52
+ colors?: number;
53
+ dither?: number;
54
+ force?: boolean;
55
+ };
56
+ type GifFormatOptions = {
57
+ reuse?: boolean;
58
+ progressive?: boolean;
59
+ colours?: number;
60
+ colors?: number;
61
+ effort?: number;
62
+ dither?: number;
63
+ interFrameMaxError?: number;
64
+ interPaletteMaxError?: number;
65
+ loop?: number;
66
+ delay?: number | number[];
67
+ force?: boolean;
68
+ };
69
+ type WebpFormatOptions = {
70
+ quality?: number;
71
+ alphaQuality?: number;
72
+ lossless?: boolean;
73
+ nearLossless?: boolean;
74
+ smartSubsample?: boolean;
75
+ preset?: string;
76
+ effort?: number;
77
+ loop?: number;
78
+ delay?: number | number[];
79
+ minSize?: boolean;
80
+ mixed?: boolean;
81
+ force?: boolean;
82
+ };
83
+ type AvifFormatOptions = {
84
+ quality?: number;
85
+ lossless?: boolean;
86
+ effort?: number;
87
+ chromaSubsampling?: string;
88
+ bitdepth?: number;
89
+ };
90
+ type HeifFormatOptions = {
91
+ compression?: string;
92
+ quality?: number;
93
+ lossless?: boolean;
94
+ effort?: number;
95
+ chromaSubsampling?: string;
96
+ bitdepth?: number;
97
+ };
98
+ export type SharpFormatOptions = JpegFormatOptions | PngFormatOptions | GifFormatOptions | WebpFormatOptions | AvifFormatOptions | HeifFormatOptions;
99
+ /** A v5-compatible Sharp output format declaration. */
100
+ export type SharpFormat = SharpOutputFormat | {
101
+ format: 'jpeg' | 'jpg';
102
+ options?: JpegFormatOptions;
103
+ } | {
104
+ format: 'png';
105
+ options?: PngFormatOptions;
106
+ } | {
107
+ format: 'gif';
108
+ options?: GifFormatOptions;
109
+ } | {
110
+ format: 'webp';
111
+ options?: WebpFormatOptions;
112
+ } | {
113
+ format: 'avif';
114
+ options?: AvifFormatOptions;
115
+ } | {
116
+ format: 'heif';
117
+ options?: HeifFormatOptions;
118
+ } | {
119
+ format: 'tiff' | 'raw';
120
+ };
121
+ /** Options declared next to a converter in `config/attachment.ts`. */
122
+ export type ConverterOptions = {
123
+ resize?: number | SharpResizeOptions;
124
+ format?: SharpFormat;
125
+ autoOrient?: boolean;
126
+ blurhash?: BlurhashOptions;
127
+ startTime?: number;
128
+ startPage?: number;
129
+ folder?: string;
130
+ [key: string]: unknown;
131
+ };
132
+ export type ConverterAttributes<Options extends ConverterOptions = ConverterOptions> = VariantConversionInput & {
133
+ options: Readonly<Options>;
134
+ };
135
+ /**
136
+ * Base class for application converters generated by `make:converter`.
137
+ * Instances receive their configuration entry through the constructor.
138
+ */
139
+ export default abstract class Converter<Options extends ConverterOptions = ConverterOptions> {
140
+ readonly options: Readonly<Options>;
141
+ constructor(options?: Options);
142
+ abstract handle(attributes: ConverterAttributes<Options>): Promise<VariantConversionOutput | undefined>;
143
+ }
144
+ export declare function normalizeSharpFormat(format: SharpFormat): {
145
+ format: Exclude<SharpOutputFormat, 'jpg'>;
146
+ options?: SharpFormatOptions;
147
+ };
148
+ //# sourceMappingURL=converter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"converter.d.ts","sourceRoot":"","sources":["../../../src/converters/converter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @jrmc/adonis-attachment
3
+ *
4
+ * @license MIT
5
+ * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
+ */
7
+ /**
8
+ * Base class for application converters generated by `make:converter`.
9
+ * Instances receive their configuration entry through the constructor.
10
+ */
11
+ export default class Converter {
12
+ options;
13
+ constructor(options = {}) {
14
+ this.options = options;
15
+ }
16
+ }
17
+ export function normalizeSharpFormat(format) {
18
+ const declared = typeof format === 'string' ? { format } : format;
19
+ return {
20
+ format: declared.format === 'jpg' ? 'jpeg' : declared.format,
21
+ ...('options' in declared && declared.options ? { options: declared.options } : {}),
22
+ };
23
+ }
24
+ //# sourceMappingURL=converter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"converter.js","sourceRoot":"","sources":["../../../src/converters/converter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsJH;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAgB,SAAS;IAC5B,OAAO,CAAmB;IAEnC,YAAY,UAAmB,EAAa;QAC1C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;CAGF;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAmB;IAItD,MAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAA;IAEjE,OAAO;QACL,MAAM,EAAE,QAAQ,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM;QAC5D,GAAG,CAAC,SAAS,IAAI,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpF,CAAA;AACH,CAAC"}
@@ -5,6 +5,7 @@
5
5
  * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
6
  */
7
7
  import type { AttachmentPersistenceContext, AttachmentPersistenceOptions } from './attachment_options.js';
8
+ import type { AttachmentMetadata } from '../media/media_metadata.js';
8
9
  export type Attachment = Readonly<{
9
10
  id: string;
10
11
  disk: string;
@@ -14,7 +15,8 @@ export type Attachment = Readonly<{
14
15
  size: number;
15
16
  extname: string;
16
17
  mimeType: string;
17
- metadata?: Record<string, unknown> | undefined;
18
+ blurhash?: string;
19
+ metadata?: AttachmentMetadata | undefined;
18
20
  }>;
19
21
  export type AttachmentPersistRequest<Model = any> = {
20
22
  options?: AttachmentPersistenceOptions<Model>;
@@ -25,9 +27,10 @@ export type CreateAttachmentInput = {
25
27
  body: Uint8Array;
26
28
  originalName: string;
27
29
  mimeType?: string;
30
+ blurhash?: string;
28
31
  disk?: string;
29
32
  folder?: string;
30
- metadata?: Record<string, unknown>;
33
+ metadata?: AttachmentMetadata;
31
34
  };
32
35
  /**
33
36
  * A source-backed attachment that has not been written to storage yet.
@@ -43,7 +46,8 @@ export declare class AttachmentDraft implements Attachment {
43
46
  size: number;
44
47
  extname: string;
45
48
  mimeType: string;
46
- metadata?: Record<string, unknown> | undefined;
49
+ blurhash?: string;
50
+ metadata?: AttachmentMetadata | undefined;
47
51
  constructor(source: CreateAttachmentInput, provisional: Attachment, options: AttachmentPersistenceOptions, persistence: AttachmentDraftPersistence);
48
52
  get isPersisted(): boolean;
49
53
  get source(): Readonly<CreateAttachmentInput>;
@@ -1 +1 @@
1
- {"version":3,"file":"attachment.d.ts","sourceRoot":"","sources":["../../../src/core/attachment.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACV,4BAA4B,EAC5B,4BAA4B,EAC7B,MAAM,yBAAyB,CAAA;AAEhC,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAChC,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;CAC/C,CAAC,CAAA;AAEF,MAAM,MAAM,wBAAwB,CAAC,KAAK,GAAG,GAAG,IAAI;IAClD,OAAO,CAAC,EAAE,4BAA4B,CAAC,KAAK,CAAC,CAAA;IAC7C,OAAO,CAAC,EAAE,IAAI,CAAC,4BAA4B,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,CAAA;CACpE,CAAA;AAED,MAAM,MAAM,0BAA0B,GAAG,CACvC,KAAK,EAAE,eAAe,EACtB,OAAO,CAAC,EAAE,wBAAwB,CAAC,GAAG,CAAC,KACpC,OAAO,CAAC,UAAU,CAAC,CAAA;AAExB,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,UAAU,CAAA;IAChB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC,CAAA;AAED;;;GAGG;AACH,qBAAa,eAAgB,YAAW,UAAU;;IAChD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;gBAS5C,MAAM,EAAE,qBAAqB,EAC7B,WAAW,EAAE,UAAU,EACvB,OAAO,EAAE,4BAA4B,EACrC,WAAW,EAAE,0BAA0B;IAkBzC,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,IAAI,MAAM,IAAI,QAAQ,CAAC,qBAAqB,CAAC,CAM5C;IAED,IAAI,OAAO,IAAI,QAAQ,CAAC,4BAA4B,CAAC,CAEpD;IAED,OAAO,CAAC,OAAO,CAAC,EAAE,wBAAwB,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAgCrE,MAAM,IAAI,UAAU;IAQpB,YAAY,IAAI,UAAU;CAa3B;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAE1E;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAA;CACxB,CAAA;AAED,qBAAa,iBAAiB;;gBAIhB,OAAO,EAAE,wBAAwB;IAK7C,MAAM,CACJ,KAAK,EAAE,qBAAqB,EAC5B,OAAO,GAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAO,GAC3E,UAAU;CAkBd"}
1
+ {"version":3,"file":"attachment.d.ts","sourceRoot":"","sources":["../../../src/core/attachment.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@
6
6
  */
7
7
  import { randomUUID } from 'node:crypto';
8
8
  import { extname } from 'node:path';
9
+ import { AttachmentError } from '../errors.js';
9
10
  /**
10
11
  * A source-backed attachment that has not been written to storage yet.
11
12
  * Its public properties become final after `persist()` resolves.
@@ -19,6 +20,7 @@ export class AttachmentDraft {
19
20
  size;
20
21
  extname;
21
22
  mimeType;
23
+ blurhash;
22
24
  metadata;
23
25
  #options;
24
26
  #source;
@@ -34,6 +36,9 @@ export class AttachmentDraft {
34
36
  this.size = provisional.size;
35
37
  this.extname = provisional.extname;
36
38
  this.mimeType = provisional.mimeType;
39
+ if (provisional.blurhash) {
40
+ this.blurhash = provisional.blurhash;
41
+ }
37
42
  if (provisional.metadata) {
38
43
  this.metadata = provisional.metadata;
39
44
  }
@@ -46,7 +51,10 @@ export class AttachmentDraft {
46
51
  }
47
52
  get source() {
48
53
  if (!this.#source) {
49
- throw new Error('Attachment draft source is no longer available after persistence');
54
+ throw new AttachmentError('Attachment draft source is no longer available after persistence', {
55
+ code: 'E_ATTACHMENT_DRAFT_SOURCE_UNAVAILABLE',
56
+ status: 409,
57
+ });
50
58
  }
51
59
  return this.#source;
52
60
  }
@@ -66,6 +74,12 @@ export class AttachmentDraft {
66
74
  this.size = attachment.size;
67
75
  this.extname = attachment.extname;
68
76
  this.mimeType = attachment.mimeType;
77
+ if (attachment.blurhash) {
78
+ this.blurhash = attachment.blurhash;
79
+ }
80
+ else {
81
+ delete this.blurhash;
82
+ }
69
83
  if (attachment.metadata) {
70
84
  this.metadata = attachment.metadata;
71
85
  }
@@ -85,7 +99,10 @@ export class AttachmentDraft {
85
99
  }
86
100
  toJSON() {
87
101
  if (!this.#persisted) {
88
- throw new Error('Attachment drafts must be persisted before serialization');
102
+ throw new AttachmentError('Attachment drafts must be persisted before serialization', {
103
+ code: 'E_ATTACHMENT_DRAFT_NOT_PERSISTED',
104
+ status: 409,
105
+ });
89
106
  }
90
107
  return this.toAttachment();
91
108
  }
@@ -99,6 +116,7 @@ export class AttachmentDraft {
99
116
  size: this.size,
100
117
  extname: this.extname,
101
118
  mimeType: this.mimeType,
119
+ ...(this.blurhash ? { blurhash: this.blurhash } : {}),
102
120
  ...(this.metadata ? { metadata: this.metadata } : {}),
103
121
  };
104
122
  }
@@ -127,6 +145,7 @@ export class AttachmentFactory {
127
145
  size: input.body.byteLength,
128
146
  extname: extension,
129
147
  mimeType: input.mimeType ?? 'application/octet-stream',
148
+ ...(input.blurhash ? { blurhash: input.blurhash } : {}),
130
149
  ...(input.metadata ? { metadata: input.metadata } : {}),
131
150
  };
132
151
  }
@@ -136,14 +155,20 @@ function getExtension(fileName) {
136
155
  }
137
156
  function joinPath(folder, name) {
138
157
  if (name.includes('/') || name.includes('\\') || name === '.' || name === '..') {
139
- throw new Error('Attachment names must not contain path separators');
158
+ throw new AttachmentError('Attachment names must not contain path separators', {
159
+ code: 'E_INVALID_ATTACHMENT_NAME',
160
+ status: 400,
161
+ });
140
162
  }
141
163
  if (!folder) {
142
164
  return name;
143
165
  }
144
166
  const normalizedFolder = folder.replaceAll('\\', '/').replace(/^\/+|\/+$/g, '');
145
167
  if (!normalizedFolder || normalizedFolder.split('/').includes('..')) {
146
- throw new Error('Attachment folder must be a relative path without parent segments');
168
+ throw new AttachmentError('Attachment folder must be a relative path without parent segments', {
169
+ code: 'E_INVALID_ATTACHMENT_FOLDER',
170
+ status: 400,
171
+ });
147
172
  }
148
173
  return `${normalizedFolder}/${name}`;
149
174
  }
@@ -1 +1 @@
1
- {"version":3,"file":"attachment.js","sourceRoot":"","sources":["../../../src/core/attachment.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attachment.js","sourceRoot":"","sources":["../../../src/core/attachment.ts"],"names":[],"mappings":"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"}
@@ -7,9 +7,12 @@
7
7
  import type { Attachment } from './attachment.js';
8
8
  import type { AttachmentJob } from './queue.js';
9
9
  import type { AttachmentRepository } from './attachment_repository.js';
10
+ import { AttachmentError } from '../errors.js';
11
+ import { type AttachmentEventEmitter } from '../events/attachment_events.js';
10
12
  export type VariantGenerationRequest = {
11
13
  attachment: Attachment;
12
14
  variantKeys?: readonly string[];
15
+ meta?: boolean;
13
16
  };
14
17
  export interface VariantGenerator {
15
18
  generate(request: VariantGenerationRequest): Promise<void>;
@@ -18,13 +21,26 @@ export type VariantGeneratorFactory = () => VariantGenerator | Promise<VariantGe
18
21
  export type AttachmentJobProcessorOptions = {
19
22
  attachments: AttachmentRepository;
20
23
  variants: VariantGenerator | VariantGeneratorFactory;
24
+ metadata?: DeferredAttachmentMetadataProcessor;
25
+ events?: AttachmentEventEmitter;
26
+ };
27
+ export type DeferredAttachmentMetadataProcessor = {
28
+ extractAndPersistMetadata(attachment: Attachment): Promise<void>;
21
29
  };
22
30
  export declare class AttachmentJobProcessor {
23
31
  #private;
24
32
  constructor(options: AttachmentJobProcessorOptions);
33
+ /** Overrides the event emitter after construction, for config-driven workers. */
34
+ setEventEmitter(events: AttachmentEventEmitter): void;
25
35
  process(job: AttachmentJob): Promise<void>;
26
36
  }
27
- export declare class AttachmentNotFoundError extends Error {
37
+ export declare class AttachmentNotFoundError extends AttachmentError {
38
+ static code: string;
39
+ static status: number;
28
40
  constructor(attachmentId: string);
29
41
  }
42
+ export declare class DeferredMetadataProcessorNotConfiguredError extends AttachmentError {
43
+ static code: string;
44
+ constructor();
45
+ }
30
46
  //# sourceMappingURL=attachment_job_processor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"attachment_job_processor.d.ts","sourceRoot":"","sources":["../../../src/core/attachment_job_processor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AAEtE,MAAM,MAAM,wBAAwB,GAAG;IACrC,UAAU,EAAE,UAAU,CAAA;IACtB,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAChC,CAAA;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3D;AAED,MAAM,MAAM,uBAAuB,GAAG,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;AAExF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,WAAW,EAAE,oBAAoB,CAAA;IACjC,QAAQ,EAAE,gBAAgB,GAAG,uBAAuB,CAAA;CACrD,CAAA;AAED,qBAAa,sBAAsB;;gBAKrB,OAAO,EAAE,6BAA6B;IAK5C,OAAO,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CA8BjD;AAED,qBAAa,uBAAwB,SAAQ,KAAK;gBACpC,YAAY,EAAE,MAAM;CAIjC"}
1
+ {"version":3,"file":"attachment_job_processor.d.ts","sourceRoot":"","sources":["../../../src/core/attachment_job_processor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,EAIL,KAAK,sBAAsB,EAC5B,MAAM,gCAAgC,CAAA;AAEvC,MAAM,MAAM,wBAAwB,GAAG;IACrC,UAAU,EAAE,UAAU,CAAA;IACtB,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAA;CACf,CAAA;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3D;AAED,MAAM,MAAM,uBAAuB,GAAG,MAAM,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAA;AAExF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,WAAW,EAAE,oBAAoB,CAAA;IACjC,QAAQ,EAAE,gBAAgB,GAAG,uBAAuB,CAAA;IACpD,QAAQ,CAAC,EAAE,mCAAmC,CAAA;IAC9C,MAAM,CAAC,EAAE,sBAAsB,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,mCAAmC,GAAG;IAChD,yBAAyB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACjE,CAAA;AAED,qBAAa,sBAAsB;;gBAQrB,OAAO,EAAE,6BAA6B;IAOlD,iFAAiF;IACjF,eAAe,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI;IAI/C,OAAO,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CAgGjD;AAED,qBAAa,uBAAwB,SAAQ,eAAe;IAC1D,MAAM,CAAC,IAAI,SAA2B;IACtC,MAAM,CAAC,MAAM,SAAM;gBAEP,YAAY,EAAE,MAAM;CAIjC;AAED,qBAAa,2CAA4C,SAAQ,eAAe;IAC9E,MAAM,CAAC,IAAI,SAAwC;;CAMpD"}