@adonis-agora/media 0.19.0 → 0.21.0

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 (47) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/assets/spa/assets/{index-3HWw8Zsr.js → index-BO6hgGp1.js} +3 -3
  3. package/dist/assets/spa/assets/index-BO6hgGp1.js.map +1 -0
  4. package/dist/assets/spa/index.html +1 -1
  5. package/dist/src/define_config.d.ts +2 -2
  6. package/dist/src/define_config.d.ts.map +1 -1
  7. package/dist/src/define_config.js +2 -2
  8. package/dist/src/define_config.js.map +1 -1
  9. package/dist/src/errors.d.ts +16 -1
  10. package/dist/src/errors.d.ts.map +1 -1
  11. package/dist/src/errors.js +23 -2
  12. package/dist/src/errors.js.map +1 -1
  13. package/dist/src/image_processor.d.ts +5 -0
  14. package/dist/src/image_processor.d.ts.map +1 -1
  15. package/dist/src/index.d.ts +6 -2
  16. package/dist/src/index.d.ts.map +1 -1
  17. package/dist/src/index.js +4 -2
  18. package/dist/src/index.js.map +1 -1
  19. package/dist/src/processors/sharp.d.ts +2 -2
  20. package/dist/src/processors/sharp.d.ts.map +1 -1
  21. package/dist/src/processors/sharp.js +7 -3
  22. package/dist/src/processors/sharp.js.map +1 -1
  23. package/dist/src/single_file_store.d.ts +11 -0
  24. package/dist/src/single_file_store.d.ts.map +1 -1
  25. package/dist/src/single_file_store.js +3 -1
  26. package/dist/src/single_file_store.js.map +1 -1
  27. package/dist/src/transformers/factory.d.ts +47 -2
  28. package/dist/src/transformers/factory.d.ts.map +1 -1
  29. package/dist/src/transformers/factory.js +30 -2
  30. package/dist/src/transformers/factory.js.map +1 -1
  31. package/dist/src/transformers/ffmpeg.d.ts +104 -0
  32. package/dist/src/transformers/ffmpeg.d.ts.map +1 -0
  33. package/dist/src/transformers/ffmpeg.js +207 -0
  34. package/dist/src/transformers/ffmpeg.js.map +1 -0
  35. package/dist/src/transformers/hls.d.ts +4 -1
  36. package/dist/src/transformers/hls.d.ts.map +1 -1
  37. package/dist/src/transformers/hls.js.map +1 -1
  38. package/dist/src/transformers/placeholder.d.ts +93 -0
  39. package/dist/src/transformers/placeholder.d.ts.map +1 -0
  40. package/dist/src/transformers/placeholder.js +114 -0
  41. package/dist/src/transformers/placeholder.js.map +1 -0
  42. package/dist/src/transformers/probe.d.ts +1 -1
  43. package/dist/src/transformers/probe.d.ts.map +1 -1
  44. package/package.json +7 -7
  45. package/skills/media-attachments-single-file/SKILL.md +2 -1
  46. package/skills/media-library-collections/SKILL.md +7 -4
  47. package/dist/assets/spa/assets/index-3HWw8Zsr.js.map +0 -1
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@adonis-agora/media",
3
- "version": "0.19.0",
4
- "description": "Media-library for AdonisJS — owner collections (MIME whitelist, single-file replace, ordering), image conversions (eager/lazy), pluggable content transformers (HLS video via mediabunny, metadata probe), and column attachments, all on top of @adonisjs/drive. Pluggable MediaStore (in-memory + Lucid) and ImageProcessor (sharp). Part of the Agora ecosystem.",
3
+ "version": "0.21.0",
4
+ "description": "Media-library for AdonisJS — owner collections (MIME whitelist, single-file replace, ordering), image conversions (eager/lazy), pluggable content transformers (HLS video via mediabunny, metadata probe, image blur-up placeholder), and column attachments, all on top of @adonisjs/drive. Pluggable MediaStore (in-memory + Lucid) and ImageProcessor (sharp). Part of the Agora ecosystem.",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
@@ -148,23 +148,23 @@
148
148
  "devDependencies": {
149
149
  "@adonis-agora/media-dashboard": "9.0.0",
150
150
  "@adonis-agora/media-react": "0.6.0",
151
- "@adonisjs/assembler": "8.5.2",
151
+ "@adonisjs/assembler": "8.6.0",
152
152
  "@adonisjs/core": "7.6.0",
153
153
  "@adonisjs/drive": "4.0.0",
154
154
  "@adonisjs/lucid": "22.4.2",
155
- "@aws-sdk/client-s3": "3.1151.0",
155
+ "@aws-sdk/client-s3": "3.1153.0",
156
156
  "@smithy/util-stream": "4.8.2",
157
- "@tanstack/intent": "0.5.5",
157
+ "@tanstack/intent": "0.5.6",
158
158
  "@types/better-sqlite3": "9.6.0",
159
159
  "@types/node": "26.6.5",
160
160
  "aws-sdk-client-mock": "4.1.0",
161
161
  "better-sqlite3": "13.0.3",
162
162
  "luxon": "3.7.2",
163
- "mediabunny": "1.55.7",
163
+ "mediabunny": "1.61.6",
164
164
  "sharp": "0.35.5",
165
165
  "tempura": "0.4.1",
166
166
  "typescript": "7.0.2",
167
- "vitest": "5.0.4"
167
+ "vitest": "5.0.5"
168
168
  },
169
169
  "engines": {
170
170
  "node": ">=24"
@@ -125,7 +125,7 @@ give me a URL", importable unconditionally with feature detection:
125
125
  import { isSingleFileStoreAvailable, removeSingleFile, storeSingleFile } from '@adonis-agora/media/single-file'
126
126
 
127
127
  if (await isSingleFileStoreAvailable()) {
128
- const { url, thumbUrl } = await storeSingleFile({
128
+ const { url, thumbUrl, id, placeholder } = await storeSingleFile({
129
129
  ownerType: 'User',
130
130
  ownerId: String(user.id),
131
131
  collection: 'avatar',
@@ -134,6 +134,7 @@ if (await isSingleFileStoreAvailable()) {
134
134
  contents: upload.bytes, // a Buffer
135
135
  })
136
136
  // thumbUrl is null — not an error — when the 'thumb' conversion isn't configured
137
+ // placeholder is `{ dataUrl, width, height, color }` or null when no placeholder transformer ran
137
138
  }
138
139
 
139
140
  // tests or multi-manager apps pass the manager explicitly:
@@ -5,7 +5,7 @@ description: >-
5
5
  attachExisting / for(ownerType, ownerId), the MediaCollectionConfig policy layer
6
6
  (acceptsMimeTypes exact-match whitelist plus magic-byte signature verification,
7
7
  single:true atomic replace, append-only ordering, per-collection disk), eager vs lazy
8
- ConversionPresets (width/height/fit/format/quality, webp default), ensureConversion,
8
+ ConversionPresets (width/height/fit/format/quality/blur, webp default), ensureConversion,
9
9
  url/signedUrl resolution, delete semantics, deterministic id retries, customProperties,
10
10
  and the MediaRecord.conversions map shared with transformers. Use when uploading files
11
11
  to entities, defining collections, generating thumbnails, or fixing
@@ -102,7 +102,8 @@ Source: `docs/collections-and-conversions.mdx`.
102
102
 
103
103
  ### Pattern 2 — eager vs lazy conversions
104
104
 
105
- `ConversionPreset` maps straight onto sharp. `eager: true` generates synchronously on
105
+ `ConversionPreset` maps straight onto sharp (`blur` is gaussian blur sigma applied after the
106
+ resize; images are auto-oriented from EXIF before resizing). `eager: true` generates synchronously on
106
107
  `attach`; the default is lazy — generated on the **first** `url(id, name)` and then cached on
107
108
  the record, so every later call is a pure lookup.
108
109
 
@@ -292,8 +293,10 @@ defineConfig({
292
293
  ```
293
294
 
294
295
  Mechanism: presets decode the original as an image through sharp; requesting one on a video
295
- or PDF fails inside sharp. Transformers are the seam for everything beyond images and
296
- persist into the same `record.conversions` namespace (name collisions throw
296
+ or PDF fails inside sharp. Transformers are the seam for everything beyond resized image files
297
+ (video packages, metadata probes, image placeholders — `transformers.placeholder()` is
298
+ metadata-only and skips non-`image/*` and SVG records) and persist into the same
299
+ `record.conversions` namespace (name collisions throw
297
300
  `TransformerConflictError` at boot).
298
301
  Source: `docs/collections-and-conversions.mdx` (warn callout), `docs/transformers.mdx`.
299
302