@adonis-agora/media 0.3.0 → 0.3.1

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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # @adonis-agora/media
2
2
 
3
+ ## 0.3.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [`e019163`](https://github.com/DavideCarvalho/adonis-media/commit/e019163ae2c1d35c0fed48352c6cfa3ae04f246b) Thanks [@DavideCarvalho](https://github.com/DavideCarvalho)! - Conserta o `node ace configure @adonis-agora/media`, que nunca funcionou em nenhuma versão.
8
+
9
+ Dois bugs independentes, os dois provados contra o compilador real:
10
+
11
+ - **O hook não era alcançável.** O `configure.ts` existia e o `package.json` exportava
12
+ `./configure`, mas o ace chega no hook pelo entry point principal — e o `src/index.ts` não o
13
+ reexportava. `import('@adonis-agora/media').configure` era `undefined`.
14
+ - **Nenhum stub renderizava.** O tempura trata crase como início de template literal, inclusive
15
+ dentro de comentário. Os 3 stubs usavam crase no docblock e morriam com `Unexpected identifier`
16
+ antes de gerar qualquer arquivo. As crases dos comentários viraram aspas simples; os template
17
+ literals de verdade do código do stub continuam intactos.
18
+
19
+ Nada no build pegava isso: stub é dado, o tsc nunca o compila, e nenhum teste os tocava. Agora
20
+ um teste renderiza todo stub pelo tempura e afirma que o index reexporta o `configure`.
21
+
3
22
  ## 0.3.0
4
23
 
5
24
  ### Minor Changes
@@ -27,4 +27,5 @@ export type { ConversionPreset, ConversionResult, ImageProcessor } from './image
27
27
  export type { Disk, DiskResolver, DiskWriteOptions, DiskMetaData, SignedUrlOptions, MultipartPart, MultipartUploadDisk, ExtendedDisk, DiskCapabilities, DiskStat, CopyOptions, ListOptions, ListEntry, ListResult, } from './types.js';
28
28
  export type { MediaDiagnosticEvent, MediaDiagnosticPayloads, AttachPayload, DeletePayload, ConversionPayload, AttachmentCreatePayload, AttachmentDeletePayload, UploadStartPayload, UploadProgressPayload, UploadCompletePayload, UploadAbortPayload, } from './diagnostics.js';
29
29
  export { MimeNotAllowedError, MediaNotFoundError, ConversionNotDefinedError, ImageProcessorMissingError, VariantNotFoundError, StoreNotConfiguredError, UploadNotSupportedError, UploadSessionNotFoundError, UploadOffsetConflictError, UploadSessionExpiredError, UploadSessionStoreNotConfiguredError, ResumableUploadsNotConfiguredError, } from './errors.js';
30
+ export { configure } from '../configure.js';
30
31
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/dist/src/index.js CHANGED
@@ -17,4 +17,7 @@ export { DEFAULT_MEDIA_LIST_LIMIT, MAX_MEDIA_LIST_LIMIT, encodeMediaCursor, deco
17
17
  export { MediaCollectionRegistry } from './media_collection.js';
18
18
  // Errors
19
19
  export { MimeNotAllowedError, MediaNotFoundError, ConversionNotDefinedError, ImageProcessorMissingError, VariantNotFoundError, StoreNotConfiguredError, UploadNotSupportedError, UploadSessionNotFoundError, UploadOffsetConflictError, UploadSessionExpiredError, UploadSessionStoreNotConfiguredError, ResumableUploadsNotConfiguredError, } from './errors.js';
20
+ // `node ace configure` reaches the hook through this entry point, not through the package's
21
+ // `./configure` export path.
22
+ export { configure } from '../configure.js';
20
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAkB7F,mBAAmB;AACnB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,oDAAoD;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAUpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,0BAA0B;AAC1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAQ/D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOlD,OAAO,EACL,UAAU,EACV,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AASzB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAMtD,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAmChE,SAAS;AACT,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,EAC1B,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,0BAA0B,EAC1B,yBAAyB,EACzB,yBAAyB,EACzB,oCAAoC,EACpC,kCAAkC,GACnC,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,eAAe;AACf,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAkB7F,mBAAmB;AACnB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,oDAAoD;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAUpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGrD,0BAA0B;AAC1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAQ/D,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE3E,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAOlD,OAAO,EACL,UAAU,EACV,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AASzB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAMtD,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAmChE,SAAS;AACT,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,yBAAyB,EACzB,0BAA0B,EAC1B,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,0BAA0B,EAC1B,yBAAyB,EACzB,yBAAyB,EACzB,oCAAoC,EACpC,kCAAkC,GACnC,MAAM,aAAa,CAAC;AAErB,4FAA4F;AAC5F,6BAA6B;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
@@ -4,13 +4,13 @@
4
4
  import { defineConfig, stores, processors, uploadSessions } from '@adonis-agora/media'
5
5
 
6
6
  /**
7
- * Configuration for @adonis-agora/media. Storage is delegated to @adonisjs/drive — `disk` names a disk
8
- * from your config/drive.ts (omit to use Drive's default). Pick a `store` by name from the map below;
7
+ * Configuration for @adonis-agora/media. Storage is delegated to @adonisjs/drive — 'disk' names a disk
8
+ * from your config/drive.ts (omit to use Drive's default). Pick a 'store' by name from the map below;
9
9
  * each driver's peer dependency is imported lazily, only when selected. The default store is the
10
- * in-process `memory` store (single-process, non-durable). For production select `lucid` and run
11
- * `node ace migration:run`.
10
+ * in-process 'memory' store (single-process, non-durable). For production select 'lucid' and run
11
+ * 'node ace migration:run'.
12
12
  *
13
- * Conversions need an image processor — `processors.sharp()` loads the optional `sharp` peer lazily.
13
+ * Conversions need an image processor — 'processors.sharp()' loads the optional 'sharp' peer lazily.
14
14
  */
15
15
  export default defineConfig({
16
16
  // disk: 's3', // omit to use Drive's default disk
@@ -34,8 +34,8 @@ export default defineConfig({
34
34
  },
35
35
  ],
36
36
 
37
- // Resumable (TUS) uploads — opt-in. Mounts the TUS protocol under `routes.prefix` and persists
38
- // upload sessions so a dropped connection resumes. Select `lucid` and run `node ace migration:run`
37
+ // Resumable (TUS) uploads — opt-in. Mounts the TUS protocol under 'routes.prefix' and persists
38
+ // upload sessions so a dropped connection resumes. Select 'lucid' and run 'node ace migration:run'
39
39
  // for durable, multi-process sessions; the default in-memory store is single-process only.
40
40
  // uploads: {
41
41
  // resumable: {
@@ -4,8 +4,8 @@
4
4
  import { BaseSchema } from '@adonisjs/lucid/schema'
5
5
 
6
6
  /**
7
- * The `media` table for the @adonis-agora/media `lucid` store. JSON payloads (`custom_properties`,
8
- * `conversions`) are stored as TEXT — the store (de)serializes them — and timestamps as epoch-ms
7
+ * The 'media' table for the @adonis-agora/media 'lucid' store. JSON payloads ('custom_properties',
8
+ * 'conversions') are stored as TEXT — the store (de)serializes them — and timestamps as epoch-ms
9
9
  * integers, so the schema is portable across SQLite / Postgres / MySQL.
10
10
  */
11
11
  export default class extends BaseSchema {
@@ -4,11 +4,11 @@
4
4
  import { BaseSchema } from '@adonisjs/lucid/schema'
5
5
 
6
6
  /**
7
- * Tables for the @adonis-agora/media resumable (TUS) `lucid` session store. `media_upload_sessions`
8
- * persists offset/length/metadata/expiry so a dropped upload resumes; `media_upload_parts` is the
9
- * per-part ETag side-index used to assemble native S3 multipart uploads. JSON `metadata` is stored as
7
+ * Tables for the @adonis-agora/media resumable (TUS) 'lucid' session store. 'media_upload_sessions'
8
+ * persists offset/length/metadata/expiry so a dropped upload resumes; 'media_upload_parts' is the
9
+ * per-part ETag side-index used to assemble native S3 multipart uploads. JSON 'metadata' is stored as
10
10
  * TEXT and timestamps as epoch-ms integers, so the schema is portable across SQLite / Postgres / MySQL.
11
- * Only needed if you enable `uploads.resumable` with the `lucid` session store.
11
+ * Only needed if you enable 'uploads.resumable' with the 'lucid' session store.
12
12
  */
13
13
  export default class extends BaseSchema {
14
14
  protected sessionsTable = 'media_upload_sessions'
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adonis-agora/media",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "Media-library for AdonisJS — owner collections (MIME whitelist, single-file replace, ordering), image conversions (eager/lazy), 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": {
@@ -76,10 +76,10 @@
76
76
  ],
77
77
  "sideEffects": false,
78
78
  "peerDependencies": {
79
+ "@adonis-agora/telescope": "^0.4.0",
79
80
  "@adonisjs/core": "^7.3.0",
80
81
  "@adonisjs/drive": "^3.0.0",
81
82
  "@adonisjs/lucid": "^22.4.0",
82
- "@adonis-agora/telescope": "^0.4.0",
83
83
  "@aws-sdk/client-s3": "^3.0.0",
84
84
  "@aws-sdk/s3-request-presigner": "^3.0.0",
85
85
  "sharp": "^0.33.0"
@@ -115,6 +115,7 @@
115
115
  "better-sqlite3": "^11.0.0",
116
116
  "luxon": "^3.4.0",
117
117
  "sharp": "^0.33.0",
118
+ "tempura": "0.4.1",
118
119
  "typescript": "^5.4.0",
119
120
  "vitest": "^3.0.0"
120
121
  },