@jrmc/adonis-attachment 6.0.0-alpha.2 → 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 (244) hide show
  1. package/build/commands/commands.json +1 -1
  2. package/build/commands/make/converter.d.ts +17 -0
  3. package/build/commands/make/converter.d.ts.map +1 -0
  4. package/build/commands/make/converter.js +27 -0
  5. package/build/commands/make/converter.js.map +1 -0
  6. package/build/index.d.ts +12 -6
  7. package/build/index.d.ts.map +1 -1
  8. package/build/index.js +3 -5
  9. package/build/index.js.map +1 -1
  10. package/build/providers/attachment_provider.d.ts.map +1 -1
  11. package/build/providers/attachment_provider.js +20 -1
  12. package/build/providers/attachment_provider.js.map +1 -1
  13. package/build/services/converters.d.ts +10 -0
  14. package/build/services/converters.d.ts.map +1 -0
  15. package/build/services/converters.js +17 -0
  16. package/build/services/converters.js.map +1 -0
  17. package/build/src/adapters/adonis_drive_storage.d.ts.map +1 -1
  18. package/build/src/adapters/adonis_drive_storage.js +4 -1
  19. package/build/src/adapters/adonis_drive_storage.js.map +1 -1
  20. package/build/src/adapters/local_file_storage.d.ts.map +1 -1
  21. package/build/src/adapters/local_file_storage.js +9 -2
  22. package/build/src/adapters/local_file_storage.js.map +1 -1
  23. package/build/src/converters/autodetect_converter.d.ts +24 -0
  24. package/build/src/converters/autodetect_converter.d.ts.map +1 -0
  25. package/build/src/converters/autodetect_converter.js +113 -0
  26. package/build/src/converters/autodetect_converter.js.map +1 -0
  27. package/build/src/converters/configured_variant_converter_registry.d.ts +36 -0
  28. package/build/src/converters/configured_variant_converter_registry.d.ts.map +1 -0
  29. package/build/src/converters/configured_variant_converter_registry.js +81 -0
  30. package/build/src/converters/configured_variant_converter_registry.js.map +1 -0
  31. package/build/src/converters/converter.d.ts +148 -0
  32. package/build/src/converters/converter.d.ts.map +1 -0
  33. package/build/src/converters/converter.js +24 -0
  34. package/build/src/converters/converter.js.map +1 -0
  35. package/build/src/core/attachment.d.ts +7 -3
  36. package/build/src/core/attachment.d.ts.map +1 -1
  37. package/build/src/core/attachment.js +29 -4
  38. package/build/src/core/attachment.js.map +1 -1
  39. package/build/src/core/attachment_job_processor.d.ts +17 -1
  40. package/build/src/core/attachment_job_processor.d.ts.map +1 -1
  41. package/build/src/core/attachment_job_processor.js +81 -8
  42. package/build/src/core/attachment_job_processor.js.map +1 -1
  43. package/build/src/core/attachment_metadata_persister.d.ts +13 -0
  44. package/build/src/core/attachment_metadata_persister.d.ts.map +1 -0
  45. package/build/src/core/attachment_metadata_persister.js +8 -0
  46. package/build/src/core/attachment_metadata_persister.js.map +1 -0
  47. package/build/src/core/attachment_options.d.ts +3 -2
  48. package/build/src/core/attachment_options.d.ts.map +1 -1
  49. package/build/src/core/attachment_options.js.map +1 -1
  50. package/build/src/core/attachment_service.d.ts +24 -1
  51. package/build/src/core/attachment_service.d.ts.map +1 -1
  52. package/build/src/core/attachment_service.js +95 -4
  53. package/build/src/core/attachment_service.js.map +1 -1
  54. package/build/src/core/index.d.ts +9 -2
  55. package/build/src/core/index.d.ts.map +1 -1
  56. package/build/src/core/index.js +8 -2
  57. package/build/src/core/index.js.map +1 -1
  58. package/build/src/core/queue.d.ts +11 -1
  59. package/build/src/core/queue.d.ts.map +1 -1
  60. package/build/src/define_config.d.ts +27 -3
  61. package/build/src/define_config.d.ts.map +1 -1
  62. package/build/src/define_config.js +35 -1
  63. package/build/src/define_config.js.map +1 -1
  64. package/build/src/errors.d.ts +57 -0
  65. package/build/src/errors.d.ts.map +1 -0
  66. package/build/src/errors.js +96 -0
  67. package/build/src/errors.js.map +1 -0
  68. package/build/src/events/adonis_attachment_event_emitter.d.ts +17 -0
  69. package/build/src/events/adonis_attachment_event_emitter.d.ts.map +1 -0
  70. package/build/src/events/adonis_attachment_event_emitter.js +17 -0
  71. package/build/src/events/adonis_attachment_event_emitter.js.map +1 -0
  72. package/build/src/events/attachment_events.d.ts +43 -0
  73. package/build/src/events/attachment_events.d.ts.map +1 -0
  74. package/build/src/events/attachment_events.js +32 -0
  75. package/build/src/events/attachment_events.js.map +1 -0
  76. package/build/src/integrations/lucid/index.d.ts +1 -0
  77. package/build/src/integrations/lucid/index.d.ts.map +1 -1
  78. package/build/src/integrations/lucid/index.js +1 -0
  79. package/build/src/integrations/lucid/index.js.map +1 -1
  80. package/build/src/integrations/lucid/migrations/legacy/migrate_legacy_attachment.d.ts +3 -0
  81. package/build/src/integrations/lucid/migrations/legacy/migrate_legacy_attachment.d.ts.map +1 -1
  82. package/build/src/integrations/lucid/migrations/legacy/migrate_legacy_attachment.js +7 -2
  83. package/build/src/integrations/lucid/migrations/legacy/migrate_legacy_attachment.js.map +1 -1
  84. package/build/src/integrations/lucid/migrations/legacy/migrate_legacy_attachment_records.d.ts.map +1 -1
  85. package/build/src/integrations/lucid/migrations/legacy/migrate_legacy_attachment_records.js +4 -1
  86. package/build/src/integrations/lucid/migrations/legacy/migrate_legacy_attachment_records.js.map +1 -1
  87. package/build/src/integrations/lucid/models/attachment_link_model.d.ts.map +1 -1
  88. package/build/src/integrations/lucid/models/attachment_link_model.js +2 -1
  89. package/build/src/integrations/lucid/models/attachment_link_model.js.map +1 -1
  90. package/build/src/integrations/lucid/models/attachment_model.d.ts +3 -1
  91. package/build/src/integrations/lucid/models/attachment_model.d.ts.map +1 -1
  92. package/build/src/integrations/lucid/models/attachment_model.js +4 -0
  93. package/build/src/integrations/lucid/models/attachment_model.js.map +1 -1
  94. package/build/src/integrations/lucid/persistence/lucid_attachment_lifecycle_service.d.ts +1 -1
  95. package/build/src/integrations/lucid/persistence/lucid_attachment_lifecycle_service.d.ts.map +1 -1
  96. package/build/src/integrations/lucid/persistence/lucid_attachment_lifecycle_service.js +92 -35
  97. package/build/src/integrations/lucid/persistence/lucid_attachment_lifecycle_service.js.map +1 -1
  98. package/build/src/integrations/lucid/persistence/lucid_attachment_metadata_persister.d.ts +17 -0
  99. package/build/src/integrations/lucid/persistence/lucid_attachment_metadata_persister.d.ts.map +1 -0
  100. package/build/src/integrations/lucid/persistence/lucid_attachment_metadata_persister.js +18 -0
  101. package/build/src/integrations/lucid/persistence/lucid_attachment_metadata_persister.js.map +1 -0
  102. package/build/src/integrations/lucid/persistence/lucid_attachment_store.d.ts.map +1 -1
  103. package/build/src/integrations/lucid/persistence/lucid_attachment_store.js +5 -3
  104. package/build/src/integrations/lucid/persistence/lucid_attachment_store.js.map +1 -1
  105. package/build/src/integrations/lucid/persistence/lucid_variant_generation_service.d.ts +5 -2
  106. package/build/src/integrations/lucid/persistence/lucid_variant_generation_service.d.ts.map +1 -1
  107. package/build/src/integrations/lucid/persistence/lucid_variant_generation_service.js +9 -3
  108. package/build/src/integrations/lucid/persistence/lucid_variant_generation_service.js.map +1 -1
  109. package/build/src/integrations/lucid/relations/attachment_relation.d.ts +4 -1
  110. package/build/src/integrations/lucid/relations/attachment_relation.d.ts.map +1 -1
  111. package/build/src/integrations/lucid/relations/attachment_relation.js +15 -8
  112. package/build/src/integrations/lucid/relations/attachment_relation.js.map +1 -1
  113. package/build/src/integrations/lucid/schema/attachment_schema_service.d.ts +4 -0
  114. package/build/src/integrations/lucid/schema/attachment_schema_service.d.ts.map +1 -1
  115. package/build/src/integrations/lucid/schema/attachment_schema_service.js +13 -0
  116. package/build/src/integrations/lucid/schema/attachment_schema_service.js.map +1 -1
  117. package/build/src/integrations/lucid/schema/attachment_table_names.d.ts.map +1 -1
  118. package/build/src/integrations/lucid/schema/attachment_table_names.js +4 -1
  119. package/build/src/integrations/lucid/schema/attachment_table_names.js.map +1 -1
  120. package/build/src/media/binaries.d.ts +79 -0
  121. package/build/src/media/binaries.d.ts.map +1 -0
  122. package/build/src/media/binaries.js +288 -0
  123. package/build/src/media/binaries.js.map +1 -0
  124. package/build/src/media/blurhash.d.ts +48 -0
  125. package/build/src/media/blurhash.d.ts.map +1 -0
  126. package/build/src/media/blurhash.js +46 -0
  127. package/build/src/media/blurhash.js.map +1 -0
  128. package/build/src/media/exif.d.ts +23 -0
  129. package/build/src/media/exif.d.ts.map +1 -0
  130. package/build/src/media/exif.js +98 -0
  131. package/build/src/media/exif.js.map +1 -0
  132. package/build/src/media/media_metadata.d.ts +55 -0
  133. package/build/src/media/media_metadata.d.ts.map +1 -0
  134. package/build/src/media/media_metadata.js +27 -0
  135. package/build/src/media/media_metadata.js.map +1 -0
  136. package/build/src/media/sharp.d.ts +45 -0
  137. package/build/src/media/sharp.d.ts.map +1 -0
  138. package/build/src/media/sharp.js +76 -0
  139. package/build/src/media/sharp.js.map +1 -0
  140. package/build/src/media/v5_metadata.d.ts +20 -0
  141. package/build/src/media/v5_metadata.d.ts.map +1 -0
  142. package/build/src/media/v5_metadata.js +20 -0
  143. package/build/src/media/v5_metadata.js.map +1 -0
  144. package/build/src/queues/memory_queue.d.ts.map +1 -1
  145. package/build/src/queues/memory_queue.js +4 -1
  146. package/build/src/queues/memory_queue.js.map +1 -1
  147. package/build/src/sources/attachment_manager.d.ts +1 -3
  148. package/build/src/sources/attachment_manager.d.ts.map +1 -1
  149. package/build/src/sources/attachment_manager.js +19 -12
  150. package/build/src/sources/attachment_manager.js.map +1 -1
  151. package/build/src/variants/variant_converter.d.ts +4 -1
  152. package/build/src/variants/variant_converter.d.ts.map +1 -1
  153. package/build/src/variants/variant_generation_service.d.ts +9 -3
  154. package/build/src/variants/variant_generation_service.d.ts.map +1 -1
  155. package/build/src/variants/variant_generation_service.js +47 -6
  156. package/build/src/variants/variant_generation_service.js.map +1 -1
  157. package/build/stubs/config/attachment.stub +23 -2
  158. package/build/stubs/converters/converter.stub +18 -0
  159. package/build/tests/adonis_queue.spec.js +56 -1
  160. package/build/tests/adonis_queue.spec.js.map +1 -1
  161. package/build/tests/attachment_events.spec.d.ts +8 -0
  162. package/build/tests/attachment_events.spec.d.ts.map +1 -0
  163. package/build/tests/attachment_events.spec.js +65 -0
  164. package/build/tests/attachment_events.spec.js.map +1 -0
  165. package/build/tests/attachment_job_processor.spec.js +77 -2
  166. package/build/tests/attachment_job_processor.spec.js.map +1 -1
  167. package/build/tests/attachment_provider.spec.js +54 -0
  168. package/build/tests/attachment_provider.spec.js.map +1 -1
  169. package/build/tests/attachment_schema_service.spec.js +14 -0
  170. package/build/tests/attachment_schema_service.spec.js.map +1 -1
  171. package/build/tests/attachment_service.spec.js +81 -2
  172. package/build/tests/attachment_service.spec.js.map +1 -1
  173. package/build/tests/autodetect_converter.spec.d.ts +8 -0
  174. package/build/tests/autodetect_converter.spec.d.ts.map +1 -0
  175. package/build/tests/autodetect_converter.spec.js +55 -0
  176. package/build/tests/autodetect_converter.spec.js.map +1 -0
  177. package/build/tests/binary_media.spec.d.ts +8 -0
  178. package/build/tests/binary_media.spec.d.ts.map +1 -0
  179. package/build/tests/binary_media.spec.js +106 -0
  180. package/build/tests/binary_media.spec.js.map +1 -0
  181. package/build/tests/blurhash_media.spec.d.ts +8 -0
  182. package/build/tests/blurhash_media.spec.d.ts.map +1 -0
  183. package/build/tests/blurhash_media.spec.js +40 -0
  184. package/build/tests/blurhash_media.spec.js.map +1 -0
  185. package/build/tests/configure.spec.js +1 -0
  186. package/build/tests/configure.spec.js.map +1 -1
  187. package/build/tests/configured_variant_converter_registry.spec.d.ts +8 -0
  188. package/build/tests/configured_variant_converter_registry.spec.d.ts.map +1 -0
  189. package/build/tests/configured_variant_converter_registry.spec.js +73 -0
  190. package/build/tests/configured_variant_converter_registry.spec.js.map +1 -0
  191. package/build/tests/converter_config.types.d.ts +36 -0
  192. package/build/tests/converter_config.types.d.ts.map +1 -0
  193. package/build/tests/converter_config.types.js +60 -0
  194. package/build/tests/converter_config.types.js.map +1 -0
  195. package/build/tests/define_config.spec.js +91 -0
  196. package/build/tests/define_config.spec.js.map +1 -1
  197. package/build/tests/errors.spec.d.ts +8 -0
  198. package/build/tests/errors.spec.d.ts.map +1 -0
  199. package/build/tests/errors.spec.js +43 -0
  200. package/build/tests/errors.spec.js.map +1 -0
  201. package/build/tests/exif_media.spec.d.ts +8 -0
  202. package/build/tests/exif_media.spec.d.ts.map +1 -0
  203. package/build/tests/exif_media.spec.js +50 -0
  204. package/build/tests/exif_media.spec.js.map +1 -0
  205. package/build/tests/helpers/lucid_test_database.d.ts.map +1 -1
  206. package/build/tests/helpers/lucid_test_database.js +1 -0
  207. package/build/tests/helpers/lucid_test_database.js.map +1 -1
  208. package/build/tests/lucid_attachment_column.spec.js +1 -1
  209. package/build/tests/lucid_attachment_column.spec.js.map +1 -1
  210. package/build/tests/lucid_attachment_lifecycle_service.spec.js +54 -0
  211. package/build/tests/lucid_attachment_lifecycle_service.spec.js.map +1 -1
  212. package/build/tests/lucid_attachment_metadata_persister.spec.d.ts +8 -0
  213. package/build/tests/lucid_attachment_metadata_persister.spec.d.ts.map +1 -0
  214. package/build/tests/lucid_attachment_metadata_persister.spec.js +34 -0
  215. package/build/tests/lucid_attachment_metadata_persister.spec.js.map +1 -0
  216. package/build/tests/lucid_attachment_relation.spec.js +71 -10
  217. package/build/tests/lucid_attachment_relation.spec.js.map +1 -1
  218. package/build/tests/lucid_sqlite_integration.spec.js +2 -1
  219. package/build/tests/lucid_sqlite_integration.spec.js.map +1 -1
  220. package/build/tests/lucid_variant_generation_service.spec.js +17 -0
  221. package/build/tests/lucid_variant_generation_service.spec.js.map +1 -1
  222. package/build/tests/make_converter.spec.d.ts +8 -0
  223. package/build/tests/make_converter.spec.d.ts.map +1 -0
  224. package/build/tests/make_converter.spec.js +32 -0
  225. package/build/tests/make_converter.spec.js.map +1 -0
  226. package/build/tests/media_metadata.spec.d.ts +8 -0
  227. package/build/tests/media_metadata.spec.d.ts.map +1 -0
  228. package/build/tests/media_metadata.spec.js +51 -0
  229. package/build/tests/media_metadata.spec.js.map +1 -0
  230. package/build/tests/migrate_legacy_attachment.spec.js +15 -5
  231. package/build/tests/migrate_legacy_attachment.spec.js.map +1 -1
  232. package/build/tests/package_exports.spec.js +18 -2
  233. package/build/tests/package_exports.spec.js.map +1 -1
  234. package/build/tests/sharp_media.spec.d.ts +8 -0
  235. package/build/tests/sharp_media.spec.d.ts.map +1 -0
  236. package/build/tests/sharp_media.spec.js +84 -0
  237. package/build/tests/sharp_media.spec.js.map +1 -0
  238. package/build/tests/v5_metadata.spec.d.ts +8 -0
  239. package/build/tests/v5_metadata.spec.d.ts.map +1 -0
  240. package/build/tests/v5_metadata.spec.js +19 -0
  241. package/build/tests/v5_metadata.spec.js.map +1 -0
  242. package/build/tests/variant_generation_service.spec.js +122 -0
  243. package/build/tests/variant_generation_service.spec.js.map +1 -1
  244. package/package.json +50 -2
@@ -7,14 +7,25 @@
7
7
  import { AttachmentDraft, type Attachment, type CreateAttachmentInput } from './attachment.js';
8
8
  import { type AttachmentPersistenceOptions } from './attachment_options.js';
9
9
  import type { AttachmentQueue } from './queue.js';
10
+ import type { AttachmentMetadataPersister } from './attachment_metadata_persister.js';
10
11
  import type { AttachmentStorage } from './storage.js';
12
+ import { type MediaMetadataExtractor } from '../media/media_metadata.js';
13
+ import { AttachmentError } from '../errors.js';
14
+ import type { AttachmentVariantKey } from '../../index.js';
15
+ import { type AttachmentEventContext, type AttachmentEventEmitter } from '../events/attachment_events.js';
11
16
  export type AttachmentServiceOptions = {
12
17
  storage: AttachmentStorage;
13
18
  queue: AttachmentQueue;
14
19
  defaultDisk: string;
15
20
  createId?: () => string;
16
21
  defaults?: AttachmentPersistenceOptions;
22
+ metadataExtractors?: readonly MediaMetadataExtractor[];
23
+ metadataMode?: AttachmentMetadataMode;
24
+ metadataPersister?: AttachmentMetadataPersister;
25
+ metadataVariants?: boolean;
26
+ events?: AttachmentEventEmitter;
17
27
  };
28
+ export type AttachmentMetadataMode = 'sync' | 'deferred';
18
29
  /**
19
30
  * Creates files and delegates persistence to the configured storage backend.
20
31
  * Database persistence deliberately remains the responsibility of the caller.
@@ -29,6 +40,18 @@ export declare class AttachmentService {
29
40
  create(input: CreateAttachmentInput): Promise<Attachment>;
30
41
  remove(attachment: Attachment): Promise<void>;
31
42
  read(attachment: Attachment): Promise<Uint8Array>;
32
- scheduleVariantGeneration(attachment: Attachment, variantKeys?: readonly string[]): Promise<void>;
43
+ scheduleMetadataExtraction(attachment: Attachment, eventContext?: AttachmentEventContext): Promise<void>;
44
+ extractAndPersistMetadata(attachment: Attachment): Promise<void>;
45
+ scheduleVariantGeneration(attachment: Attachment, variantKeys?: readonly AttachmentVariantKey[], meta?: boolean, eventContext?: AttachmentEventContext): Promise<void>;
46
+ /** Resolves automatic variant keys with manager options taking precedence. */
47
+ getVariantKeys(draft: AttachmentDraft, options?: AttachmentPersistenceOptions): readonly AttachmentVariantKey[] | undefined;
48
+ /** Resolves whether variants should run the configured metadata extractors. */
49
+ getVariantMetadataEnabled(draft: AttachmentDraft | undefined, options?: AttachmentPersistenceOptions): boolean | undefined;
50
+ /** Resolves the configured strategy when metadata is enabled for a persistence operation. */
51
+ getMetadataMode(draft: AttachmentDraft | undefined, options?: AttachmentPersistenceOptions): AttachmentMetadataMode | undefined;
52
+ }
53
+ export declare class DeferredMetadataNotConfiguredError extends AttachmentError {
54
+ static code: string;
55
+ constructor();
33
56
  }
34
57
  //# sourceMappingURL=attachment_service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"attachment_service.d.ts","sourceRoot":"","sources":["../../../src/core/attachment_service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,eAAe,EAEf,KAAK,UAAU,EAEf,KAAK,qBAAqB,EAC3B,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAIL,KAAK,4BAA4B,EAElC,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAErD,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,EAAE,iBAAiB,CAAA;IAC1B,KAAK,EAAE,eAAe,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,4BAA4B,CAAA;CACxC,CAAA;AAED;;;GAGG;AACH,qBAAa,iBAAiB;;gBAMhB,OAAO,EAAE,wBAAwB;IAO7C,WAAW,CACT,KAAK,EAAE,qBAAqB,EAC5B,OAAO,GAAE,4BAAiC,GACzC,eAAe;IAgBlB;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC;IAmC/D,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAIjD,yBAAyB,CACvB,UAAU,EAAE,UAAU,EACtB,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,GAC9B,OAAO,CAAC,IAAI,CAAC;CAOjB"}
1
+ {"version":3,"file":"attachment_service.d.ts","sourceRoot":"","sources":["../../../src/core/attachment_service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,eAAe,EAEf,KAAK,UAAU,EAEf,KAAK,qBAAqB,EAC3B,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAIL,KAAK,4BAA4B,EAElC,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,oCAAoC,CAAA;AACrF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AACrD,OAAO,EAAwB,KAAK,sBAAsB,EAAE,MAAM,4BAA4B,CAAA;AAC9F,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAC9C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAC1D,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC5B,MAAM,gCAAgC,CAAA;AAEvC,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,EAAE,iBAAiB,CAAA;IAC1B,KAAK,EAAE,eAAe,CAAA;IACtB,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAA;IACvB,QAAQ,CAAC,EAAE,4BAA4B,CAAA;IACvC,kBAAkB,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAA;IACtD,YAAY,CAAC,EAAE,sBAAsB,CAAA;IACrC,iBAAiB,CAAC,EAAE,2BAA2B,CAAA;IAC/C,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,MAAM,CAAC,EAAE,sBAAsB,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG,MAAM,GAAG,UAAU,CAAA;AAExD;;;GAGG;AACH,qBAAa,iBAAiB;;gBAWhB,OAAO,EAAE,wBAAwB;IAc7C,WAAW,CACT,KAAK,EAAE,qBAAqB,EAC5B,OAAO,GAAE,4BAAiC,GACzC,eAAe;IAgBlB;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC;IAsDzD,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnD,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC;IAIjD,0BAA0B,CACxB,UAAU,EAAE,UAAU,EACtB,YAAY,CAAC,EAAE,sBAAsB,GACpC,OAAO,CAAC,IAAI,CAAC;IAaV,yBAAyB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBtE,yBAAyB,CACvB,UAAU,EAAE,UAAU,EACtB,WAAW,CAAC,EAAE,SAAS,oBAAoB,EAAE,EAC7C,IAAI,CAAC,EAAE,OAAO,EACd,YAAY,CAAC,EAAE,sBAAsB,GACpC,OAAO,CAAC,IAAI,CAAC;IAUhB,8EAA8E;IAC9E,cAAc,CACZ,KAAK,EAAE,eAAe,EACtB,OAAO,CAAC,EAAE,4BAA4B,GACrC,SAAS,oBAAoB,EAAE,GAAG,SAAS;IAI9C,+EAA+E;IAC/E,yBAAyB,CACvB,KAAK,EAAE,eAAe,GAAG,SAAS,EAClC,OAAO,CAAC,EAAE,4BAA4B,GACrC,OAAO,GAAG,SAAS;IAUtB,6FAA6F;IAC7F,eAAe,CACb,KAAK,EAAE,eAAe,GAAG,SAAS,EAClC,OAAO,CAAC,EAAE,4BAA4B,GACrC,sBAAsB,GAAG,SAAS;CAoBtC;AAED,qBAAa,kCAAmC,SAAQ,eAAe;IACrE,MAAM,CAAC,IAAI,SAA8B;;CAM1C"}
@@ -7,6 +7,9 @@
7
7
  import { AttachmentDraft, AttachmentFactory, } from './attachment.js';
8
8
  import { markAttachmentPending } from './attachment_state.js';
9
9
  import { resolveAttachmentPersistenceOptions, } from './attachment_options.js';
10
+ import { MediaMetadataService } from '../media/media_metadata.js';
11
+ import { AttachmentError } from '../errors.js';
12
+ import { emitAttachmentEvent, toAttachmentEventFailure, } from '../events/attachment_events.js';
10
13
  /**
11
14
  * Creates files and delegates persistence to the configured storage backend.
12
15
  * Database persistence deliberately remains the responsibility of the caller.
@@ -16,11 +19,23 @@ export class AttachmentService {
16
19
  #queue;
17
20
  #factory;
18
21
  #defaults;
22
+ #metadata;
23
+ #metadataMode;
24
+ #metadataPersister;
25
+ #metadataVariants;
26
+ #events;
19
27
  constructor(options) {
20
28
  this.#storage = options.storage;
21
29
  this.#queue = options.queue;
22
30
  this.#factory = new AttachmentFactory(options);
23
31
  this.#defaults = options.defaults ?? {};
32
+ this.#metadata = options.metadataExtractors
33
+ ? new MediaMetadataService(options.metadataExtractors)
34
+ : undefined;
35
+ this.#metadataMode = options.metadataMode ?? 'sync';
36
+ this.#metadataPersister = options.metadataPersister;
37
+ this.#metadataVariants = options.metadataVariants ?? true;
38
+ this.#events = options.events;
24
39
  }
25
40
  createDraft(input, options = {}) {
26
41
  const draftOptions = {
@@ -49,12 +64,29 @@ export class AttachmentService {
49
64
  const options = resolveAttachmentPersistenceOptions(this.#defaults, request?.options, draft.options);
50
65
  const folder = await resolveFolder(options.folder, context);
51
66
  const name = await resolveName(options.rename, context);
52
- const attachment = this.#factory.create(source, {
67
+ let attachment = this.#factory.create(source, {
53
68
  id: draft.id,
54
69
  ...(options.disk ? { disk: options.disk } : {}),
55
70
  ...(folder ? { folder } : {}),
56
71
  ...(name ? { name } : {}),
57
72
  });
73
+ if (options.meta && this.#metadata && this.#metadataMode === 'sync') {
74
+ this.#emit('attachment:metadata_started', attachment);
75
+ try {
76
+ const metadata = await this.#metadata.extract({ attachment, body: source.body });
77
+ if (metadata) {
78
+ attachment = {
79
+ ...attachment,
80
+ metadata: { ...metadata, ...(source.metadata ?? {}) },
81
+ };
82
+ }
83
+ this.#emit('attachment:metadata_completed', attachment);
84
+ }
85
+ catch (error) {
86
+ this.#emit('attachment:metadata_failed', attachment, undefined, undefined, error);
87
+ throw error;
88
+ }
89
+ }
58
90
  await this.#storage.write({
59
91
  disk: attachment.disk,
60
92
  path: attachment.path,
@@ -62,21 +94,80 @@ export class AttachmentService {
62
94
  mimeType: attachment.mimeType,
63
95
  });
64
96
  markAttachmentPending(draft);
97
+ this.#emit('attachment:created', attachment);
65
98
  return attachment;
66
99
  }
67
- remove(attachment) {
68
- return this.#storage.remove(attachment);
100
+ async remove(attachment) {
101
+ await this.#storage.remove(attachment);
102
+ this.#emit('attachment:deleted', attachment);
69
103
  }
70
104
  read(attachment) {
71
105
  return this.#storage.read({ disk: attachment.disk, path: attachment.path });
72
106
  }
73
- scheduleVariantGeneration(attachment, variantKeys) {
107
+ scheduleMetadataExtraction(attachment, eventContext) {
108
+ if (!this.#metadata || !this.#metadataPersister) {
109
+ throw new DeferredMetadataNotConfiguredError();
110
+ }
111
+ return this.#queue.enqueue({
112
+ type: 'extract-metadata',
113
+ attachmentId: attachment.id,
114
+ attachment,
115
+ ...(eventContext ? { eventContext } : {}),
116
+ });
117
+ }
118
+ async extractAndPersistMetadata(attachment) {
119
+ if (!this.#metadata || !this.#metadataPersister) {
120
+ throw new DeferredMetadataNotConfiguredError();
121
+ }
122
+ const extracted = await this.#metadata.extract({ attachment, body: await this.read(attachment) });
123
+ if (!extracted) {
124
+ return;
125
+ }
126
+ await this.#metadataPersister.persistMetadata(attachment, {
127
+ ...extracted,
128
+ ...(attachment.metadata ?? {}),
129
+ });
130
+ }
131
+ scheduleVariantGeneration(attachment, variantKeys, meta, eventContext) {
74
132
  return this.#queue.enqueue({
75
133
  type: 'generate-variants',
76
134
  attachmentId: attachment.id,
77
135
  ...(variantKeys ? { variantKeys } : {}),
136
+ ...(meta !== undefined ? { meta } : {}),
137
+ ...(eventContext ? { eventContext } : {}),
78
138
  });
79
139
  }
140
+ /** Resolves automatic variant keys with manager options taking precedence. */
141
+ getVariantKeys(draft, options) {
142
+ return resolveAttachmentPersistenceOptions(this.#defaults, options, draft.options).variants;
143
+ }
144
+ /** Resolves whether variants should run the configured metadata extractors. */
145
+ getVariantMetadataEnabled(draft, options) {
146
+ return this.#metadataVariants
147
+ ? resolveAttachmentPersistenceOptions(this.#defaults, options, draft?.options).meta
148
+ : undefined;
149
+ }
150
+ /** Resolves the configured strategy when metadata is enabled for a persistence operation. */
151
+ getMetadataMode(draft, options) {
152
+ return resolveAttachmentPersistenceOptions(this.#defaults, options, draft?.options).meta
153
+ ? this.#metadataMode
154
+ : undefined;
155
+ }
156
+ #emit(event, attachment, variants, context, error) {
157
+ emitAttachmentEvent(this.#events, event, {
158
+ ...(context ?? {}),
159
+ attachment,
160
+ ...(variants ? { variants } : {}),
161
+ ...(error ? { error: toAttachmentEventFailure(error) } : {}),
162
+ });
163
+ }
164
+ }
165
+ export class DeferredMetadataNotConfiguredError extends AttachmentError {
166
+ static code = 'E_METADATA_NOT_CONFIGURED';
167
+ constructor() {
168
+ super('Deferred metadata extraction requires configured extractors and a metadata persister');
169
+ this.name = 'DeferredMetadataNotConfiguredError';
170
+ }
80
171
  }
81
172
  async function resolveFolder(folder, context) {
82
173
  if (typeof folder === 'function') {
@@ -1 +1 @@
1
- {"version":3,"file":"attachment_service.js","sourceRoot":"","sources":["../../../src/core/attachment_service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attachment_service.js","sourceRoot":"","sources":["../../../src/core/attachment_service.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,eAAe,EACf,iBAAiB,GAIlB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,EACL,mCAAmC,GAKpC,MAAM,yBAAyB,CAAA;AAIhC,OAAO,EAAE,oBAAoB,EAA+B,MAAM,4BAA4B,CAAA;AAC9F,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C,OAAO,EACL,mBAAmB,EACnB,wBAAwB,GAGzB,MAAM,gCAAgC,CAAA;AAiBvC;;;GAGG;AACH,MAAM,OAAO,iBAAiB;IACnB,QAAQ,CAAmB;IAC3B,MAAM,CAAiB;IACvB,QAAQ,CAAmB;IAC3B,SAAS,CAA8B;IACvC,SAAS,CAAkC;IAC3C,aAAa,CAAwB;IACrC,kBAAkB,CAAyC;IAC3D,iBAAiB,CAAS;IAC1B,OAAO,CAAoC;IAEpD,YAAY,OAAiC;QAC3C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAA;QAC/B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,KAAK,CAAA;QAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAA;QAC9C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAA;QACvC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,kBAAkB;YACzC,CAAC,CAAC,IAAI,oBAAoB,CAAC,OAAO,CAAC,kBAAkB,CAAC;YACtD,CAAC,CAAC,SAAS,CAAA;QACb,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY,IAAI,MAAM,CAAA;QACnD,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAA;QACnD,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAA;QACzD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAA;IAC/B,CAAC;IAED,WAAW,CACT,KAA4B,EAC5B,UAAwC,EAAE;QAE1C,MAAM,YAAY,GAAG;YACnB,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,GAAG,OAAO;SACX,CAAA;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE;YAC9C,GAAG,CAAC,OAAO,YAAY,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7E,GAAG,CAAC,OAAO,YAAY,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpF,CAAC,CAAA;QAEF,OAAO,IAAI,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAC9E,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CACnC,CAAA;IACH,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,KAA4B;QACvC,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAA;IAC1C,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAAsB,EAAE,OAAuC;QACjF,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;QAC3B,MAAM,OAAO,GAAiC;YAC5C,GAAG,OAAO,EAAE,OAAO;YACnB,YAAY,EAAE,MAAM,CAAC,YAAY;SAClC,CAAA;QACD,MAAM,OAAO,GAAG,mCAAmC,CACjD,IAAI,CAAC,SAAS,EACd,OAAO,EAAE,OAAO,EAChB,KAAK,CAAC,OAAO,CACd,CAAA;QACD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC3D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACvD,IAAI,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;YAC5C,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1B,CAAC,CAAA;QAEF,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,aAAa,KAAK,MAAM,EAAE,CAAC;YACpE,IAAI,CAAC,KAAK,CAAC,6BAA6B,EAAE,UAAU,CAAC,CAAA;YACrD,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;gBAEhF,IAAI,QAAQ,EAAE,CAAC;oBACb,UAAU,GAAG;wBACX,GAAG,UAAU;wBACb,QAAQ,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,EAAE;qBACtD,CAAA;gBACH,CAAC;gBACD,IAAI,CAAC,KAAK,CAAC,+BAA+B,EAAE,UAAU,CAAC,CAAA;YACzD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,KAAK,CAAC,4BAA4B,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;gBACjF,MAAM,KAAK,CAAA;YACb,CAAC;QACH,CAAC;QAED,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YACxB,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,QAAQ,EAAE,UAAU,CAAC,QAAQ;SAC9B,CAAC,CAAA;QAEF,qBAAqB,CAAC,KAAK,CAAC,CAAA;QAC5B,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAA;QAC5C,OAAO,UAAU,CAAA;IACnB,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,UAAsB;QACjC,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QACtC,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAA;IAC9C,CAAC;IAED,IAAI,CAAC,UAAsB;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAA;IAC7E,CAAC;IAED,0BAA0B,CACxB,UAAsB,EACtB,YAAqC;QAErC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAChD,MAAM,IAAI,kCAAkC,EAAE,CAAA;QAChD,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACzB,IAAI,EAAE,kBAAkB;YACxB,YAAY,EAAE,UAAU,CAAC,EAAE;YAC3B,UAAU;YACV,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1C,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,yBAAyB,CAAC,UAAsB;QACpD,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAChD,MAAM,IAAI,kCAAkC,EAAE,CAAA;QAChD,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA;QACjG,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAM;QACR,CAAC;QAED,MAAM,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,UAAU,EAAE;YACxD,GAAG,SAAS;YACZ,GAAG,CAAC,UAAU,CAAC,QAAQ,IAAI,EAAE,CAAC;SAC/B,CAAC,CAAA;IACJ,CAAC;IAED,yBAAyB,CACvB,UAAsB,EACtB,WAA6C,EAC7C,IAAc,EACd,YAAqC;QAErC,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;YACzB,IAAI,EAAE,mBAAmB;YACzB,YAAY,EAAE,UAAU,CAAC,EAAE;YAC3B,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1C,CAAC,CAAA;IACJ,CAAC;IAED,8EAA8E;IAC9E,cAAc,CACZ,KAAsB,EACtB,OAAsC;QAEtC,OAAO,mCAAmC,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAA;IAC7F,CAAC;IAED,+EAA+E;IAC/E,yBAAyB,CACvB,KAAkC,EAClC,OAAsC;QAEtC,OAAO,IAAI,CAAC,iBAAiB;YAC3B,CAAC,CAAC,mCAAmC,CACrC,IAAI,CAAC,SAAS,EACd,OAAO,EACP,KAAK,EAAE,OAAO,CACX,CAAC,IAAI;YACR,CAAC,CAAC,SAAS,CAAA;IACf,CAAC;IAED,6FAA6F;IAC7F,eAAe,CACb,KAAkC,EAClC,OAAsC;QAEtC,OAAO,mCAAmC,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI;YACtF,CAAC,CAAC,IAAI,CAAC,aAAa;YACpB,CAAC,CAAC,SAAS,CAAA;IACf,CAAC;IAED,KAAK,CACH,KAAmJ,EACnJ,UAAsB,EACtB,QAA4B,EAC5B,OAAgC,EAChC,KAAe;QAEf,mBAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE;YACvC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;YAClB,UAAU;YACV,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,wBAAwB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7D,CAAC,CAAA;IACJ,CAAC;CACF;AAED,MAAM,OAAO,kCAAmC,SAAQ,eAAe;IACrE,MAAM,CAAC,IAAI,GAAG,2BAA2B,CAAA;IAEzC;QACE,KAAK,CAAC,sFAAsF,CAAC,CAAA;QAC7F,IAAI,CAAC,IAAI,GAAG,oCAAoC,CAAA;IAClD,CAAC;;AAGH,KAAK,UAAU,aAAa,CAC1B,MAAoC,EACpC,OAAqC;IAErC,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAA;IACxB,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,MAAoC,EACpC,OAAqC;IAErC,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;QACjC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAA;IACxB,CAAC;IAED,OAAO,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAA;AAC5D,CAAC"}
@@ -6,8 +6,15 @@
6
6
  */
7
7
  export { AttachmentFactory, AttachmentDraft, isAttachmentDraft, type Attachment, type AttachmentDraftPersistence, type AttachmentFactoryOptions, type AttachmentPersistRequest, type CreateAttachmentInput, } from './attachment.js';
8
8
  export { resolveAttachmentPersistenceOptions, type AttachmentFolder, type AttachmentPersistenceContext, type AttachmentPersistenceOptions, type AttachmentRename, type ResolvedAttachmentPersistenceOptions, } from './attachment_options.js';
9
- export { AttachmentService, type AttachmentServiceOptions } from './attachment_service.js';
10
- export { AttachmentJobProcessor, AttachmentNotFoundError, type AttachmentJobProcessorOptions, type VariantGenerationRequest, type VariantGenerator, type VariantGeneratorFactory, } from './attachment_job_processor.js';
9
+ export { AttachmentService, DeferredMetadataNotConfiguredError, type AttachmentMetadataMode, type AttachmentServiceOptions, } from './attachment_service.js';
10
+ export { type AttachmentMetadataPersister } from './attachment_metadata_persister.js';
11
+ export { emitAttachmentEvent, toAttachmentEventFailure, type AttachmentEventContext, type AttachmentEventEmitter, type AttachmentEventFailure, type AttachmentEventName, type AttachmentEventPayload, } from '../events/attachment_events.js';
12
+ export { AttachmentError, AttachmentSourceError, MissingOptionalDependencyError, type AttachmentErrorOptions, } from '../errors.js';
13
+ export { default as Converter, type ConverterAttributes, type ConverterOptions, type BlurhashComponent, type BlurhashOptions, } from '../converters/converter.js';
14
+ export { default as AutodetectConverter, type AutodetectConverterOptions, } from '../converters/autodetect_converter.js';
15
+ export { ConfiguredVariantConverterRegistry, InvalidConverterModuleError, type ConverterConfig, type ConverterConfigMap, type ConverterConstructor, type ConverterModule, type VariantConverterRegistry, } from '../converters/configured_variant_converter_registry.js';
16
+ export { MediaMetadataService, type AttachmentMetadata, type MediaMetadataExtractor, type MediaMetadataInput, } from '../media/media_metadata.js';
17
+ export { AttachmentJobProcessor, AttachmentNotFoundError, DeferredMetadataProcessorNotConfiguredError, type DeferredAttachmentMetadataProcessor, type AttachmentJobProcessorOptions, type VariantGenerationRequest, type VariantGenerator, type VariantGeneratorFactory, } from './attachment_job_processor.js';
11
18
  export { type AttachmentRepository } from './attachment_repository.js';
12
19
  export { type AttachmentJob, type AttachmentJobHandler, type AttachmentQueue, type GenerateVariantsJob, } from './queue.js';
13
20
  export { type AttachmentStorage, type StorageLocation, type WriteAttachmentInput, } from './storage.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,KAAK,UAAU,EACf,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,GAC3B,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,mCAAmC,EACnC,KAAK,gBAAgB,EACrB,KAAK,4BAA4B,EACjC,KAAK,4BAA4B,EACjC,KAAK,gBAAgB,EACrB,KAAK,oCAAoC,GAC1C,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,iBAAiB,EAAE,KAAK,wBAAwB,EAAE,MAAM,yBAAyB,CAAA;AAC1F,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,KAAK,6BAA6B,EAClC,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACtE,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,mBAAmB,GACzB,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,oBAAoB,GAC1B,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,KAAK,UAAU,EACf,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,wBAAwB,EAC7B,KAAK,qBAAqB,GAC3B,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,mCAAmC,EACnC,KAAK,gBAAgB,EACrB,KAAK,4BAA4B,EACjC,KAAK,4BAA4B,EACjC,KAAK,gBAAgB,EACrB,KAAK,oCAAoC,GAC1C,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,iBAAiB,EACjB,kCAAkC,EAClC,KAAK,sBAAsB,EAC3B,KAAK,wBAAwB,GAC9B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,oCAAoC,CAAA;AACrF,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,GAC5B,MAAM,gCAAgC,CAAA;AACvC,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,8BAA8B,EAC9B,KAAK,sBAAsB,GAC5B,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,OAAO,IAAI,SAAS,EACpB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,eAAe,GACrB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,OAAO,IAAI,mBAAmB,EAC9B,KAAK,0BAA0B,GAChC,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EACL,kCAAkC,EAClC,2BAA2B,EAC3B,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,wBAAwB,GAC9B,MAAM,wDAAwD,CAAA;AAC/D,OAAO,EACL,oBAAoB,EACpB,KAAK,kBAAkB,EACvB,KAAK,sBAAsB,EAC3B,KAAK,kBAAkB,GACxB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,2CAA2C,EAC3C,KAAK,mCAAmC,EACxC,KAAK,6BAA6B,EAClC,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,GAC7B,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACtE,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,eAAe,EACpB,KAAK,mBAAmB,GACzB,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,oBAAoB,GAC1B,MAAM,cAAc,CAAA"}
@@ -6,6 +6,12 @@
6
6
  */
7
7
  export { AttachmentFactory, AttachmentDraft, isAttachmentDraft, } from './attachment.js';
8
8
  export { resolveAttachmentPersistenceOptions, } from './attachment_options.js';
9
- export { AttachmentService } from './attachment_service.js';
10
- export { AttachmentJobProcessor, AttachmentNotFoundError, } from './attachment_job_processor.js';
9
+ export { AttachmentService, DeferredMetadataNotConfiguredError, } from './attachment_service.js';
10
+ export { emitAttachmentEvent, toAttachmentEventFailure, } from '../events/attachment_events.js';
11
+ export { AttachmentError, AttachmentSourceError, MissingOptionalDependencyError, } from '../errors.js';
12
+ export { default as Converter, } from '../converters/converter.js';
13
+ export { default as AutodetectConverter, } from '../converters/autodetect_converter.js';
14
+ export { ConfiguredVariantConverterRegistry, InvalidConverterModuleError, } from '../converters/configured_variant_converter_registry.js';
15
+ export { MediaMetadataService, } from '../media/media_metadata.js';
16
+ export { AttachmentJobProcessor, AttachmentNotFoundError, DeferredMetadataProcessorNotConfiguredError, } from './attachment_job_processor.js';
11
17
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,iBAAiB,GAMlB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,mCAAmC,GAMpC,MAAM,yBAAyB,CAAA;AAChC,OAAO,EAAE,iBAAiB,EAAiC,MAAM,yBAAyB,CAAA;AAC1F,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GAKxB,MAAM,+BAA+B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,iBAAiB,GAMlB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,mCAAmC,GAMpC,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,iBAAiB,EACjB,kCAAkC,GAGnC,MAAM,yBAAyB,CAAA;AAEhC,OAAO,EACL,mBAAmB,EACnB,wBAAwB,GAMzB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,8BAA8B,GAE/B,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,OAAO,IAAI,SAAS,GAKrB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,OAAO,IAAI,mBAAmB,GAE/B,MAAM,uCAAuC,CAAA;AAC9C,OAAO,EACL,kCAAkC,EAClC,2BAA2B,GAM5B,MAAM,wDAAwD,CAAA;AAC/D,OAAO,EACL,oBAAoB,GAIrB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,2CAA2C,GAM5C,MAAM,+BAA+B,CAAA"}
@@ -4,12 +4,22 @@
4
4
  * @license MIT
5
5
  * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
6
  */
7
+ import type { Attachment } from './attachment.js';
8
+ import type { AttachmentEventContext } from '../events/attachment_events.js';
7
9
  export type GenerateVariantsJob = {
8
10
  type: 'generate-variants';
9
11
  attachmentId: string;
10
12
  variantKeys?: readonly string[];
13
+ meta?: boolean;
14
+ eventContext?: AttachmentEventContext;
11
15
  };
12
- export type AttachmentJob = GenerateVariantsJob;
16
+ export type ExtractMetadataJob = {
17
+ type: 'extract-metadata';
18
+ attachmentId: string;
19
+ attachment: Attachment;
20
+ eventContext?: AttachmentEventContext;
21
+ };
22
+ export type AttachmentJob = GenerateVariantsJob | ExtractMetadataJob;
13
23
  /**
14
24
  * Dispatch boundary. External queues only need to accept an AttachmentJob.
15
25
  */
@@ -1 +1 @@
1
- {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/core/queue.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,mBAAmB,CAAA;IACzB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAChC,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,mBAAmB,CAAA;AAE/C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3C;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA"}
1
+ {"version":3,"file":"queue.d.ts","sourceRoot":"","sources":["../../../src/core/queue.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AAE5E,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,mBAAmB,CAAA;IACzB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC/B,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,YAAY,CAAC,EAAE,sBAAsB,CAAA;CACtC,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,kBAAkB,CAAA;IACxB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,UAAU,CAAA;IACtB,YAAY,CAAC,EAAE,sBAAsB,CAAA;CACtC,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,mBAAmB,GAAG,kBAAkB,CAAA;AAEpE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3C;AAED,MAAM,MAAM,oBAAoB,GAAG,CAAC,GAAG,EAAE,aAAa,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA"}
@@ -7,12 +7,17 @@
7
7
  import { type AttachmentTableNames } from './integrations/lucid/schema/attachment_table_names.js';
8
8
  import type { ApplicationService, ConfigProvider } from '@adonisjs/core/types';
9
9
  import type { AttachmentServiceOptions } from './core/attachment_service.js';
10
+ import type { AttachmentMetadataMode } from './core/attachment_service.js';
11
+ import type { AttachmentMetadataPersister } from './core/attachment_metadata_persister.js';
10
12
  import type { AttachmentJobProcessor } from './core/attachment_job_processor.js';
11
13
  import type { AttachmentRepository } from './core/attachment_repository.js';
12
14
  import type { AttachmentJobHandler, AttachmentQueue } from './core/queue.js';
13
15
  import type { AttachmentStorage } from './core/storage.js';
14
16
  import type { AttachmentManagerOptions } from './sources/attachment_manager.js';
15
17
  import type { AttachmentPersistenceOptions } from './core/attachment_options.js';
18
+ import type { MediaMetadataExtractor } from './media/media_metadata.js';
19
+ import type { AttachmentEventEmitter } from './events/attachment_events.js';
20
+ import { type ConverterConfigMap, type VariantConverterRegistry } from './converters/configured_variant_converter_registry.js';
16
21
  type Integration<T> = T | ((app: ApplicationService) => T | Promise<T>);
17
22
  export type AttachmentRouteConfig = false | {
18
23
  prefix?: string;
@@ -28,7 +33,20 @@ export type AttachmentIntegrationsConfig = {
28
33
  /** Optional configuration for the Lucid persistence integration. */
29
34
  lucid?: LucidAttachmentConfig;
30
35
  };
31
- export type AttachmentConfig = {
36
+ export type AttachmentMediaConfig = {
37
+ /** Extracts technical metadata when a persistence option enables `meta`. */
38
+ metadata?: Integration<readonly MediaMetadataExtractor[]>;
39
+ metadataPolicy?: {
40
+ mode?: AttachmentMetadataMode;
41
+ variants?: boolean;
42
+ };
43
+ metadataPersister?: Integration<AttachmentMetadataPersister>;
44
+ };
45
+ /** Optional application event emitter used for attachment lifecycle events. */
46
+ export type AttachmentEventsConfig = Integration<AttachmentEventEmitter>;
47
+ /** v5-style named converter declarations, resolved lazily when a job needs one. */
48
+ export type AttachmentConvertersConfig = ConverterConfigMap;
49
+ export type AttachmentConfig<KnownConverters extends ConverterConfigMap = ConverterConfigMap> = {
32
50
  /** Overrides the storage default. Falls back to `fs` when no adapter provides one. */
33
51
  defaultDisk?: string;
34
52
  storage: Integration<AttachmentStorage>;
@@ -41,10 +59,13 @@ export type AttachmentConfig = {
41
59
  sources?: AttachmentManagerOptions;
42
60
  route?: AttachmentRouteConfig;
43
61
  integrations?: AttachmentIntegrationsConfig;
62
+ media?: AttachmentMediaConfig;
63
+ events?: AttachmentEventsConfig;
64
+ converters?: KnownConverters;
44
65
  queueConcurrency?: number;
45
66
  createId?: () => string;
46
67
  };
47
- export type ResolvedAttachmentConfig = AttachmentServiceOptions & {
68
+ export type ResolvedAttachmentConfig<KnownConverters extends ConverterConfigMap = ConverterConfigMap> = AttachmentServiceOptions & {
48
69
  repository?: AttachmentRepository;
49
70
  defaults?: AttachmentPersistenceOptions;
50
71
  sources?: AttachmentManagerOptions;
@@ -52,10 +73,13 @@ export type ResolvedAttachmentConfig = AttachmentServiceOptions & {
52
73
  integrations?: {
53
74
  lucid?: AttachmentTableNames;
54
75
  };
76
+ converters?: VariantConverterRegistry<Extract<keyof KnownConverters, string>>;
55
77
  };
78
+ /** Extracts the converter map from a config returned by `defineConfig`. */
79
+ export type InferConverters<Config> = Config extends ConfigProvider<ResolvedAttachmentConfig<infer KnownConverters>> ? KnownConverters : never;
56
80
  /**
57
81
  * Defers resolution of optional Adonis integrations until application boot.
58
82
  */
59
- export declare function defineConfig(config: AttachmentConfig): ConfigProvider<ResolvedAttachmentConfig>;
83
+ export declare function defineConfig<const KnownConverters extends ConverterConfigMap = {}>(config: AttachmentConfig<KnownConverters>): ConfigProvider<ResolvedAttachmentConfig<KnownConverters>>;
60
84
  export {};
61
85
  //# sourceMappingURL=define_config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"define_config.d.ts","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,uDAAuD,CAAA;AAE9D,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAC9E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAA;AAC5E,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAA;AAChF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAC5E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAA;AAC/E,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAA;AAEhF,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,kBAAkB,KAAK,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;AAEvE,MAAM,MAAM,qBAAqB,GAAG,KAAK,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAE/D,MAAM,MAAM,6BAA6B,GAAG;IAC1C,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,4BAA4B,GAAG;IACzC,oEAAoE;IACpE,KAAK,CAAC,EAAE,qBAAqB,CAAA;CAC9B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG;IAC7B,sFAAsF;IACtF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,WAAW,CAAC,iBAAiB,CAAC,CAAA;IACvC,KAAK,CAAC,EAAE,WAAW,CAAC,eAAe,CAAC,CAAA;IACpC,UAAU,CAAC,EAAE,WAAW,CAAC,oBAAoB,CAAC,CAAA;IAC9C,SAAS,CAAC,EAAE,WAAW,CAAC,sBAAsB,CAAC,CAAA;IAC/C,UAAU,CAAC,EAAE,WAAW,CAAC,oBAAoB,CAAC,CAAA;IAC9C,qDAAqD;IACrD,QAAQ,CAAC,EAAE,4BAA4B,CAAA;IACvC,OAAO,CAAC,EAAE,wBAAwB,CAAA;IAClC,KAAK,CAAC,EAAE,qBAAqB,CAAA;IAC7B,YAAY,CAAC,EAAE,4BAA4B,CAAA;IAC3C,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,MAAM,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG,wBAAwB,GAAG;IAChE,UAAU,CAAC,EAAE,oBAAoB,CAAA;IACjC,QAAQ,CAAC,EAAE,4BAA4B,CAAA;IACvC,OAAO,CAAC,EAAE,wBAAwB,CAAA;IAClC,KAAK,EAAE,6BAA6B,GAAG,KAAK,CAAA;IAC5C,YAAY,CAAC,EAAE;QACb,KAAK,CAAC,EAAE,oBAAoB,CAAA;KAC7B,CAAA;CACF,CAAA;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,gBAAgB,GAAG,cAAc,CAAC,wBAAwB,CAAC,CAqC/F"}
1
+ {"version":3,"file":"define_config.d.ts","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"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"}
@@ -6,7 +6,9 @@
6
6
  */
7
7
  import { configProvider } from '@adonisjs/core';
8
8
  import { MemoryAttachmentQueue } from './queues/memory_queue.js';
9
+ import { AttachmentError } from './errors.js';
9
10
  import { resolveAttachmentTableNames, } from './integrations/lucid/schema/attachment_table_names.js';
11
+ import { ConfiguredVariantConverterRegistry, } from './converters/configured_variant_converter_registry.js';
10
12
  /**
11
13
  * Defers resolution of optional Adonis integrations until application boot.
12
14
  */
@@ -26,6 +28,21 @@ export function defineConfig(config) {
26
28
  : async () => { },
27
29
  ...(config.queueConcurrency ? { concurrency: config.queueConcurrency } : {}),
28
30
  });
31
+ const metadataExtractors = config.media?.metadata
32
+ ? await resolveIntegration(config.media.metadata, app)
33
+ : undefined;
34
+ const metadataPersister = config.media?.metadataPersister
35
+ ? await resolveIntegration(config.media.metadataPersister, app)
36
+ : undefined;
37
+ const resolvedMetadataPersister = metadataPersister
38
+ ?? await resolveLucidMetadataPersister(config.media?.metadataPolicy?.mode, config.integrations?.lucid);
39
+ const events = config.events ? await resolveIntegration(config.events, app) : undefined;
40
+ if (processor && events) {
41
+ processor.setEventEmitter(events);
42
+ }
43
+ if (config.media?.metadataPolicy?.mode === 'deferred' && !resolvedMetadataPersister) {
44
+ throw new AttachmentError('Deferred metadata extraction requires media.metadataPersister or integrations.lucid', { code: 'E_INVALID_ATTACHMENT_CONFIG' });
45
+ }
29
46
  return {
30
47
  defaultDisk: config.defaultDisk ?? storage.defaultDisk ?? 'fs',
31
48
  storage,
@@ -36,6 +53,14 @@ export function defineConfig(config) {
36
53
  : {}),
37
54
  ...(config.defaults ? { defaults: config.defaults } : {}),
38
55
  ...(config.sources ? { sources: config.sources } : {}),
56
+ ...(metadataExtractors ? { metadataExtractors } : {}),
57
+ ...(config.media?.metadataPolicy?.mode ? { metadataMode: config.media.metadataPolicy.mode } : {}),
58
+ ...(config.media?.metadataPolicy?.variants !== undefined ? { metadataVariants: config.media.metadataPolicy.variants } : {}),
59
+ ...(resolvedMetadataPersister ? { metadataPersister: resolvedMetadataPersister } : {}),
60
+ ...(events ? { events } : {}),
61
+ ...(config.converters
62
+ ? { converters: new ConfiguredVariantConverterRegistry(config.converters) }
63
+ : {}),
39
64
  ...(config.integrations?.lucid
40
65
  ? {
41
66
  integrations: {
@@ -47,13 +72,22 @@ export function defineConfig(config) {
47
72
  };
48
73
  });
49
74
  }
75
+ async function resolveLucidMetadataPersister(mode, lucid) {
76
+ if (mode !== 'deferred' || !lucid) {
77
+ return undefined;
78
+ }
79
+ const { LucidAttachmentMetadataPersister } = await import('./integrations/lucid/persistence/lucid_attachment_metadata_persister.js');
80
+ return new LucidAttachmentMetadataPersister();
81
+ }
50
82
  function resolveRoute(route) {
51
83
  if (route === false) {
52
84
  return false;
53
85
  }
54
86
  const prefix = route?.prefix ?? '/attachments';
55
87
  if (!prefix.startsWith('/') || prefix.includes(':')) {
56
- throw new Error('Attachment route prefix must start with "/" and cannot contain parameters');
88
+ throw new AttachmentError('Attachment route prefix must start with "/" and cannot contain parameters', {
89
+ code: 'E_INVALID_ATTACHMENT_ROUTE',
90
+ });
57
91
  }
58
92
  return { path: `${prefix.replace(/\/+$/, '') || ''}/:id` };
59
93
  }
@@ -1 +1 @@
1
- {"version":3,"file":"define_config.js","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"define_config.js","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * @jrmc/adonis-attachment
3
+ *
4
+ * @license MIT
5
+ * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
+ */
7
+ import { Exception } from '@adonisjs/core/exceptions';
8
+ export type AttachmentErrorOptions = ErrorOptions & {
9
+ code?: string;
10
+ status?: number;
11
+ };
12
+ /** Base exception for every error emitted by this package. */
13
+ export declare class AttachmentError extends Exception {
14
+ static code: string;
15
+ static status: number;
16
+ constructor(message: string, options?: AttachmentErrorOptions);
17
+ }
18
+ /** Raised when an attachment source cannot be normalized. */
19
+ export declare class AttachmentSourceError extends AttachmentError {
20
+ constructor(message: string, options?: AttachmentErrorOptions);
21
+ }
22
+ /** Raised when caller-provided attachment data fails a package invariant. */
23
+ export declare class AttachmentValidationError extends AttachmentError {
24
+ static code: string;
25
+ static status: number;
26
+ }
27
+ /** Raised when an attachment operation conflicts with current persisted state. */
28
+ export declare class AttachmentConflictError extends AttachmentError {
29
+ static code: string;
30
+ static status: number;
31
+ }
32
+ /** Raised when an adapter or integration has been configured incorrectly. */
33
+ export declare class AttachmentConfigurationError extends AttachmentError {
34
+ static code: string;
35
+ }
36
+ export declare class AttachmentNotFoundError extends AttachmentError {
37
+ constructor(attachmentId: string);
38
+ }
39
+ export declare class DeferredMetadataProcessorNotConfiguredError extends AttachmentError {
40
+ constructor();
41
+ }
42
+ export declare class DeferredMetadataNotConfiguredError extends AttachmentError {
43
+ constructor();
44
+ }
45
+ export declare class InvalidConverterModuleError extends AttachmentError {
46
+ constructor(key: string);
47
+ }
48
+ export declare class UnknownVariantConverterError extends AttachmentError {
49
+ constructor(key: string);
50
+ }
51
+ export declare class PersistedAttachmentNotFoundError extends AttachmentError {
52
+ constructor(id: string);
53
+ }
54
+ export declare class MissingOptionalDependencyError extends AttachmentError {
55
+ constructor(packages: string | readonly string[]);
56
+ }
57
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAErD,MAAM,MAAM,sBAAsB,GAAG,YAAY,GAAG;IAClD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,8DAA8D;AAC9D,qBAAa,eAAgB,SAAQ,SAAS;IAC5C,MAAM,CAAC,IAAI,SAAuB;IAClC,MAAM,CAAC,MAAM,SAAM;gBAEP,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,sBAA2B;CAMlE;AAED,6DAA6D;AAC7D,qBAAa,qBAAsB,SAAQ,eAAe;gBAC5C,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,sBAA2B;CAOlE;AAED,6EAA6E;AAC7E,qBAAa,yBAA0B,SAAQ,eAAe;IAC5D,MAAM,CAAC,IAAI,SAAyB;IACpC,MAAM,CAAC,MAAM,SAAM;CACpB;AAED,kFAAkF;AAClF,qBAAa,uBAAwB,SAAQ,eAAe;IAC1D,MAAM,CAAC,IAAI,SAA0B;IACrC,MAAM,CAAC,MAAM,SAAM;CACpB;AAED,6EAA6E;AAC7E,qBAAa,4BAA6B,SAAQ,eAAe;IAC/D,MAAM,CAAC,IAAI,SAA+B;CAC3C;AAED,qBAAa,uBAAwB,SAAQ,eAAe;gBAC9C,YAAY,EAAE,MAAM;CAMjC;AAED,qBAAa,2CAA4C,SAAQ,eAAe;;CAM/E;AAED,qBAAa,kCAAmC,SAAQ,eAAe;;CAMtE;AAED,qBAAa,2BAA4B,SAAQ,eAAe;gBAClD,GAAG,EAAE,MAAM;CAKxB;AAED,qBAAa,4BAA6B,SAAQ,eAAe;gBACnD,GAAG,EAAE,MAAM;CAMxB;AAED,qBAAa,gCAAiC,SAAQ,eAAe;gBACvD,EAAE,EAAE,MAAM;CAMvB;AAED,qBAAa,8BAA+B,SAAQ,eAAe;gBACrD,QAAQ,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE;CAMjD"}