@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
@@ -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":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACV,4BAA4B,EAC5B,4BAA4B,EAC7B,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAGpE,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,CAAA;IACjB,QAAQ,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAA;CAC1C,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,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,kBAAkB,CAAA;CAC9B,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,CAAA;IACjB,QAAQ,CAAC,EAAE,kBAAkB,GAAG,SAAS,CAAA;gBASvC,MAAM,EAAE,qBAAqB,EAC7B,WAAW,EAAE,UAAU,EACvB,OAAO,EAAE,4BAA4B,EACrC,WAAW,EAAE,0BAA0B;IAqBzC,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,IAAI,MAAM,IAAI,QAAQ,CAAC,qBAAqB,CAAC,CAS5C;IAED,IAAI,OAAO,IAAI,QAAQ,CAAC,4BAA4B,CAAC,CAEpD;IAED,OAAO,CAAC,OAAO,CAAC,EAAE,wBAAwB,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAqCrE,MAAM,IAAI,UAAU;IAWpB,YAAY,IAAI,UAAU;CAc3B;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;CAmBd"}
@@ -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"}
@@ -4,31 +4,68 @@
4
4
  * @license MIT
5
5
  * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
6
  */
7
+ import { AttachmentError } from '../errors.js';
8
+ import { emitAttachmentEvent, toAttachmentEventFailure, } from '../events/attachment_events.js';
7
9
  export class AttachmentJobProcessor {
8
10
  #attachments;
9
11
  #variants;
12
+ #metadata;
13
+ #events;
14
+ #defaultEvents;
10
15
  #resolvedVariants;
11
16
  constructor(options) {
12
17
  this.#attachments = options.attachments;
13
18
  this.#variants = options.variants;
19
+ this.#metadata = options.metadata;
20
+ this.#events = options.events;
21
+ }
22
+ /** Overrides the event emitter after construction, for config-driven workers. */
23
+ setEventEmitter(events) {
24
+ this.#events = events;
14
25
  }
15
26
  async process(job) {
16
27
  switch (job.type) {
17
28
  case 'generate-variants':
18
- await this.#generateVariants(job.attachmentId, job.variantKeys);
29
+ await this.#generateVariants(job.attachmentId, job.variantKeys, job.meta, job.eventContext);
30
+ return;
31
+ case 'extract-metadata':
32
+ if (!this.#metadata) {
33
+ throw new DeferredMetadataProcessorNotConfiguredError();
34
+ }
35
+ await this.#extractMetadata(job.attachment, job.eventContext);
19
36
  return;
20
37
  }
21
38
  }
22
- async #generateVariants(attachmentId, variantKeys) {
39
+ async #generateVariants(attachmentId, variantKeys, meta, eventContext) {
23
40
  const attachment = await this.#attachments.findById(attachmentId);
24
41
  if (!attachment) {
25
42
  throw new AttachmentNotFoundError(attachmentId);
26
43
  }
27
- const variants = await this.#getVariants();
28
- await variants.generate({
29
- attachment,
30
- ...(variantKeys ? { variantKeys } : {}),
31
- });
44
+ await this.#emit('attachment:variant_started', attachment, variantKeys, eventContext);
45
+ try {
46
+ const variants = await this.#getVariants();
47
+ await variants.generate({
48
+ attachment,
49
+ ...(variantKeys ? { variantKeys } : {}),
50
+ ...(meta !== undefined ? { meta } : {}),
51
+ });
52
+ await this.#emit('attachment:variant_completed', attachment, variantKeys, eventContext);
53
+ }
54
+ catch (error) {
55
+ await this.#emit('attachment:variant_failed', attachment, variantKeys, eventContext, error);
56
+ throw error;
57
+ }
58
+ }
59
+ async #extractMetadata(attachment, eventContext) {
60
+ await this.#emit('attachment:metadata_started', attachment, undefined, eventContext);
61
+ try {
62
+ await this.#metadata.extractAndPersistMetadata(attachment);
63
+ await this.#emit('attachment:metadata_completed', attachment, undefined, eventContext);
64
+ }
65
+ catch (error) {
66
+ await this.#emit('attachment:metadata_failed', attachment, undefined, eventContext, error);
67
+ throw error;
68
+ }
32
69
  }
33
70
  #getVariants() {
34
71
  if (typeof this.#variants !== 'function') {
@@ -37,11 +74,47 @@ export class AttachmentJobProcessor {
37
74
  this.#resolvedVariants ??= Promise.resolve(this.#variants());
38
75
  return this.#resolvedVariants;
39
76
  }
77
+ async #emit(event, attachment, variants, context, error) {
78
+ emitAttachmentEvent(await this.#getEvents(), event, {
79
+ ...(context ?? {}),
80
+ attachment,
81
+ ...(variants ? { variants } : {}),
82
+ ...(error ? { error: toAttachmentEventFailure(error) } : {}),
83
+ });
84
+ }
85
+ #getEvents() {
86
+ if (this.#events) {
87
+ return Promise.resolve(this.#events);
88
+ }
89
+ this.#defaultEvents ??= this.#resolveAdonisEmitter();
90
+ return this.#defaultEvents;
91
+ }
92
+ async #resolveAdonisEmitter() {
93
+ try {
94
+ const [{ AdonisAttachmentEventEmitter }, { default: emitter }] = await Promise.all([
95
+ import('../events/adonis_attachment_event_emitter.js'),
96
+ import('@adonisjs/core/services/emitter'),
97
+ ]);
98
+ return new AdonisAttachmentEventEmitter(emitter);
99
+ }
100
+ catch {
101
+ return undefined;
102
+ }
103
+ }
40
104
  }
41
- export class AttachmentNotFoundError extends Error {
105
+ export class AttachmentNotFoundError extends AttachmentError {
106
+ static code = 'E_ATTACHMENT_NOT_FOUND';
107
+ static status = 404;
42
108
  constructor(attachmentId) {
43
109
  super(`Attachment "${attachmentId}" was not found`);
44
110
  this.name = 'AttachmentNotFoundError';
45
111
  }
46
112
  }
113
+ export class DeferredMetadataProcessorNotConfiguredError extends AttachmentError {
114
+ static code = 'E_METADATA_PROCESSOR_NOT_CONFIGURED';
115
+ constructor() {
116
+ super('Attachment metadata jobs require a configured metadata processor');
117
+ this.name = 'DeferredMetadataProcessorNotConfiguredError';
118
+ }
119
+ }
47
120
  //# sourceMappingURL=attachment_job_processor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"attachment_job_processor.js","sourceRoot":"","sources":["../../../src/core/attachment_job_processor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsBH,MAAM,OAAO,sBAAsB;IACxB,YAAY,CAAsB;IAClC,SAAS,CAA4C;IAC9D,iBAAiB,CAAuC;IAExD,YAAY,OAAsC;QAChD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,WAAW,CAAA;QACvC,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAA;IACnC,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,GAAkB;QAC9B,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;YACjB,KAAK,mBAAmB;gBACtB,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,WAAW,CAAC,CAAA;gBAC/D,OAAM;QACV,CAAC;IACH,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,YAAoB,EAAE,WAA+B;QAC3E,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;QAEjE,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,uBAAuB,CAAC,YAAY,CAAC,CAAA;QACjD,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;QAC1C,MAAM,QAAQ,CAAC,QAAQ,CAAC;YACtB,UAAU;YACV,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxC,CAAC,CAAA;IACJ,CAAC;IAED,YAAY;QACV,IAAI,OAAO,IAAI,CAAC,SAAS,KAAK,UAAU,EAAE,CAAC;YACzC,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACxC,CAAC;QAED,IAAI,CAAC,iBAAiB,KAAK,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAA;QAC5D,OAAO,IAAI,CAAC,iBAAiB,CAAA;IAC/B,CAAC;CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAChD,YAAY,YAAoB;QAC9B,KAAK,CAAC,eAAe,YAAY,iBAAiB,CAAC,CAAA;QACnD,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAA;IACvC,CAAC;CACF"}
1
+ {"version":3,"file":"attachment_job_processor.js","sourceRoot":"","sources":["../../../src/core/attachment_job_processor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @jrmc/adonis-attachment
3
+ *
4
+ * @license MIT
5
+ * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
+ */
7
+ import type { Attachment } from './attachment.js';
8
+ import type { AttachmentMetadata } from '../media/media_metadata.js';
9
+ /** Persists metadata extracted after an attachment has already been stored. */
10
+ export interface AttachmentMetadataPersister {
11
+ persistMetadata(attachment: Attachment, metadata: AttachmentMetadata): Promise<void>;
12
+ }
13
+ //# sourceMappingURL=attachment_metadata_persister.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment_metadata_persister.d.ts","sourceRoot":"","sources":["../../../src/core/attachment_metadata_persister.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAEpE,+EAA+E;AAC/E,MAAM,WAAW,2BAA2B;IAC1C,eAAe,CAAC,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CACrF"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @jrmc/adonis-attachment
3
+ *
4
+ * @license MIT
5
+ * @copyright Jeremy Chaufourier <jeremy@chaufourier.fr>
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=attachment_metadata_persister.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attachment_metadata_persister.js","sourceRoot":"","sources":["../../../src/core/attachment_metadata_persister.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -1,3 +1,4 @@
1
+ import type { AttachmentVariantKey } from '../../index.js';
1
2
  export type AttachmentPersistenceContext<Model = unknown> = {
2
3
  model?: Model;
3
4
  field?: string;
@@ -14,7 +15,7 @@ export type AttachmentPersistenceOptions<Model = unknown> = {
14
15
  rename?: AttachmentRename<Model> | null;
15
16
  meta?: boolean | null;
16
17
  preComputeUrl?: boolean | null;
17
- variants?: readonly string[] | null;
18
+ variants?: readonly AttachmentVariantKey[] | null;
18
19
  };
19
20
  export type ResolvedAttachmentPersistenceOptions<Model = unknown> = {
20
21
  disk?: string;
@@ -22,7 +23,7 @@ export type ResolvedAttachmentPersistenceOptions<Model = unknown> = {
22
23
  rename?: AttachmentRename<Model>;
23
24
  meta?: boolean;
24
25
  preComputeUrl?: boolean;
25
- variants?: readonly string[];
26
+ variants?: readonly AttachmentVariantKey[];
26
27
  };
27
28
  /**
28
29
  * Resolves options from lowest to highest priority. An explicit `null` clears
@@ -1 +1 @@
1
- {"version":3,"file":"attachment_options.d.ts","sourceRoot":"","sources":["../../../src/core/attachment_options.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,4BAA4B,CAAC,KAAK,GAAG,OAAO,IAAI;IAC1D,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,gBAAgB,CAAC,KAAK,GAAG,OAAO,IACxC,MAAM,GACN,CAAC,CAAC,OAAO,EAAE,4BAA4B,CAAC,KAAK,CAAC,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;AAEhF,MAAM,MAAM,gBAAgB,CAAC,KAAK,GAAG,OAAO,IACxC,OAAO,GACP,CAAC,CAAC,OAAO,EAAE,4BAA4B,CAAC,KAAK,CAAC,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;AAEhF;;GAEG;AACH,MAAM,MAAM,4BAA4B,CAAC,KAAK,GAAG,OAAO,IAAI;IAC1D,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,MAAM,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;IACvC,MAAM,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;IACvC,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IACrB,aAAa,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IAC9B,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAA;CACpC,CAAA;AAED,MAAM,MAAM,oCAAoC,CAAC,KAAK,GAAG,OAAO,IAAI;IAClE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAA;IAChC,MAAM,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAA;IAChC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC7B,CAAA;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CAAC,KAAK,GAAG,OAAO,EACjE,GAAG,MAAM,EAAE,aAAa,CAAC,4BAA4B,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,GACxE,oCAAoC,CAAC,KAAK,CAAC,CAS7C"}
1
+ {"version":3,"file":"attachment_options.d.ts","sourceRoot":"","sources":["../../../src/core/attachment_options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAE1D,MAAM,MAAM,4BAA4B,CAAC,KAAK,GAAG,OAAO,IAAI;IAC1D,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,gBAAgB,CAAC,KAAK,GAAG,OAAO,IACxC,MAAM,GACN,CAAC,CAAC,OAAO,EAAE,4BAA4B,CAAC,KAAK,CAAC,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;AAEhF,MAAM,MAAM,gBAAgB,CAAC,KAAK,GAAG,OAAO,IACxC,OAAO,GACP,CAAC,CAAC,OAAO,EAAE,4BAA4B,CAAC,KAAK,CAAC,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;AAEhF;;GAEG;AACH,MAAM,MAAM,4BAA4B,CAAC,KAAK,GAAG,OAAO,IAAI;IAC1D,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,MAAM,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;IACvC,MAAM,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAA;IACvC,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IACrB,aAAa,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IAC9B,QAAQ,CAAC,EAAE,SAAS,oBAAoB,EAAE,GAAG,IAAI,CAAA;CAClD,CAAA;AAED,MAAM,MAAM,oCAAoC,CAAC,KAAK,GAAG,OAAO,IAAI;IAClE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAA;IAChC,MAAM,CAAC,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAA;IAChC,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAA;CAC3C,CAAA;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CAAC,KAAK,GAAG,OAAO,EACjE,GAAG,MAAM,EAAE,aAAa,CAAC,4BAA4B,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC,GACxE,oCAAoC,CAAC,KAAK,CAAC,CAS7C"}
@@ -1 +1 @@
1
- {"version":3,"file":"attachment_options.js","sourceRoot":"","sources":["../../../src/core/attachment_options.ts"],"names":[],"mappings":"AAmCA;;;GAGG;AACH,MAAM,UAAU,mCAAmC,CACjD,GAAG,MAAsE;IAEzE,OAAO;QACL,GAAG,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC;QAChC,GAAG,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC;QAClC,GAAG,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC;QAClC,GAAG,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC;QAChC,GAAG,aAAa,CAAC,eAAe,EAAE,MAAM,CAAC;QACzC,GAAG,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC;KACrC,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CACpB,GAAQ,EACR,MAAsE;IAEtE,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAA;QAE1B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAA;QAC/C,CAAC;IACH,CAAC;IAED,OAAO,EAAE,CAAA;AACX,CAAC"}
1
+ {"version":3,"file":"attachment_options.js","sourceRoot":"","sources":["../../../src/core/attachment_options.ts"],"names":[],"mappings":"AAqCA;;;GAGG;AACH,MAAM,UAAU,mCAAmC,CACjD,GAAG,MAAsE;IAEzE,OAAO;QACL,GAAG,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC;QAChC,GAAG,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC;QAClC,GAAG,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC;QAClC,GAAG,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC;QAChC,GAAG,aAAa,CAAC,eAAe,EAAE,MAAM,CAAC;QACzC,GAAG,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC;KACrC,CAAA;AACH,CAAC;AAED,SAAS,aAAa,CACpB,GAAQ,EACR,MAAsE;IAEtE,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,KAAK,EAAE,CAAC,GAAG,CAAC,CAAA;QAE1B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAA;QAC/C,CAAC;IACH,CAAC;IAED,OAAO,EAAE,CAAA;AACX,CAAC"}