@adonis-agora/media 0.10.3 → 0.11.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 (48) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +46 -6
  3. package/dist/assets/spa/assets/index--0MZJr6W.css +1 -0
  4. package/dist/assets/spa/assets/index-Dvw2uJpF.js +83 -0
  5. package/dist/assets/spa/assets/index-Dvw2uJpF.js.map +1 -0
  6. package/dist/assets/spa/index.html +20 -0
  7. package/dist/configure.d.ts +6 -2
  8. package/dist/configure.d.ts.map +1 -1
  9. package/dist/configure.js +8 -2
  10. package/dist/configure.js.map +1 -1
  11. package/dist/providers/dashboard_provider.d.ts +29 -0
  12. package/dist/providers/dashboard_provider.d.ts.map +1 -0
  13. package/dist/providers/dashboard_provider.js +520 -0
  14. package/dist/providers/dashboard_provider.js.map +1 -0
  15. package/dist/src/dashboard/auth.d.ts +76 -0
  16. package/dist/src/dashboard/auth.d.ts.map +1 -0
  17. package/dist/src/dashboard/auth.js +134 -0
  18. package/dist/src/dashboard/auth.js.map +1 -0
  19. package/dist/src/dashboard/cookie.d.ts +20 -0
  20. package/dist/src/dashboard/cookie.d.ts.map +1 -0
  21. package/dist/src/dashboard/cookie.js +44 -0
  22. package/dist/src/dashboard/cookie.js.map +1 -0
  23. package/dist/src/dashboard/define_config.d.ts +56 -0
  24. package/dist/src/dashboard/define_config.d.ts.map +1 -0
  25. package/dist/src/dashboard/define_config.js +5 -0
  26. package/dist/src/dashboard/define_config.js.map +1 -0
  27. package/dist/src/dashboard/index.d.ts +10 -0
  28. package/dist/src/dashboard/index.d.ts.map +1 -0
  29. package/dist/src/dashboard/index.js +9 -0
  30. package/dist/src/dashboard/index.js.map +1 -0
  31. package/dist/src/dashboard/object_insights.d.ts +42 -0
  32. package/dist/src/dashboard/object_insights.d.ts.map +1 -0
  33. package/dist/src/dashboard/object_insights.js +42 -0
  34. package/dist/src/dashboard/object_insights.js.map +1 -0
  35. package/dist/src/dashboard/service.d.ts +215 -0
  36. package/dist/src/dashboard/service.d.ts.map +1 -0
  37. package/dist/src/dashboard/service.js +470 -0
  38. package/dist/src/dashboard/service.js.map +1 -0
  39. package/dist/src/dashboard/spa.d.ts +29 -0
  40. package/dist/src/dashboard/spa.d.ts.map +1 -0
  41. package/dist/src/dashboard/spa.js +47 -0
  42. package/dist/src/dashboard/spa.js.map +1 -0
  43. package/dist/src/dashboard/types.d.ts +201 -0
  44. package/dist/src/dashboard/types.d.ts.map +1 -0
  45. package/dist/src/dashboard/types.js +10 -0
  46. package/dist/src/dashboard/types.js.map +1 -0
  47. package/dist/stubs/config/media_dashboard.stub +39 -0
  48. package/package.json +20 -9
@@ -0,0 +1,201 @@
1
+ /**
2
+ * The JSON API contract shared by the dashboard's browser client and its AdonisJS provider routes.
3
+ *
4
+ * These shapes are framework-free (no DOM, no Node) so the same declarations type both the server
5
+ * responses (`DashboardService`) and the SPA's fetch client. They mirror the real
6
+ * `@adonis-agora/media` surface: disk `list`/`stat`/`copy`/`move`/`deleteMany` and the resumable
7
+ * `UploadSessionStore.list()` — never a bespoke server model.
8
+ */
9
+ /** Coarse capability descriptor for a disk, mirroring `@adonis-agora/media`'s `DiskCapabilities`. */
10
+ export interface DiskCapabilities {
11
+ presign: boolean;
12
+ multipart: boolean;
13
+ publicUrls: boolean;
14
+ /** Can enumerate keys under a prefix — only such disks are browsable in the console. */
15
+ list: boolean;
16
+ }
17
+ /** One disk (bucket) exposed to the console. */
18
+ export interface DiskInfo {
19
+ name: string;
20
+ /** Whether this is the manager's default disk. */
21
+ default: boolean;
22
+ capabilities: DiskCapabilities;
23
+ }
24
+ export interface DiskListResponse {
25
+ disks: DiskInfo[];
26
+ }
27
+ /** A sub-folder under the browsed prefix (a `CommonPrefix`; `prefix` carries the trailing slash). */
28
+ export interface ObjectFolder {
29
+ name: string;
30
+ prefix: string;
31
+ }
32
+ /** A file entry directly under the browsed prefix. */
33
+ export interface ObjectEntry {
34
+ key: string;
35
+ name: string;
36
+ sizeBytes: number | null;
37
+ /** ISO-8601 string, or null when the backend does not report it. */
38
+ lastModified: string | null;
39
+ }
40
+ /** One page of a bucket listing (cursor-based, from the disk `list`). */
41
+ export interface ObjectListResponse {
42
+ folders: ObjectFolder[];
43
+ files: ObjectEntry[];
44
+ /** Present only when the page is truncated; pass back as `cursor`. */
45
+ cursor?: string;
46
+ }
47
+ /** Object metadata plus a short-lived signed URL for preview/download. */
48
+ export interface ObjectDetailResponse {
49
+ key: string;
50
+ size: number;
51
+ contentType?: string;
52
+ lastModified?: string;
53
+ url: string;
54
+ }
55
+ /** An in-progress resumable upload session, projected from `UploadSession`. */
56
+ export interface UploadInfo {
57
+ id: string;
58
+ disk: string;
59
+ key: string;
60
+ offset: number;
61
+ size: number | null;
62
+ /** 0..100, or null when the total size is unknown. */
63
+ percent: number | null;
64
+ parts: number;
65
+ multipart: boolean;
66
+ createdAt?: string;
67
+ }
68
+ export interface UploadListResponse {
69
+ uploads: UploadInfo[];
70
+ }
71
+ /** A stored media-library record, projected from `@adonis-agora/media`'s `MediaRecord` for the console. */
72
+ export interface MediaEntry {
73
+ id: string;
74
+ ownerType: string;
75
+ ownerId: string;
76
+ collection: string;
77
+ /** Logical display name. */
78
+ name: string;
79
+ fileName: string;
80
+ mimeType: string;
81
+ sizeBytes: number;
82
+ disk: string;
83
+ path: string;
84
+ /** Names of the generated conversions present on the record (e.g. `["thumb"]`). */
85
+ conversions: string[];
86
+ createdAt: string;
87
+ updatedAt: string;
88
+ }
89
+ /** One page of the cross-owner collections listing (cursor-based, from the `MediaStore.list`). */
90
+ export interface CollectionListResponse {
91
+ items: MediaEntry[];
92
+ /** Present (non-null) only when a further page exists; pass back as `cursor`. */
93
+ nextCursor: string | null;
94
+ }
95
+ /** Filters for the collections listing — every field optional and `AND`ed server-side. */
96
+ export interface CollectionFilter {
97
+ collection?: string;
98
+ ownerType?: string;
99
+ ownerId?: string;
100
+ prefix?: string;
101
+ }
102
+ /** Coarse console topology used to enable/disable UI affordances. */
103
+ export interface Topology {
104
+ disks: number;
105
+ hasUploads: boolean;
106
+ /** Whether mutating actions (copy/move/delete) are enabled on this console. */
107
+ actions: boolean;
108
+ }
109
+ /** Body for the copy/move actions — `toDisk` defaults to the source disk (same-bucket). */
110
+ export interface CopyMoveBody {
111
+ disk: string;
112
+ from: string;
113
+ to: string;
114
+ toDisk?: string;
115
+ }
116
+ /** Body for the batched delete action. */
117
+ export interface DeleteBody {
118
+ disk: string;
119
+ keys: string[];
120
+ }
121
+ /** Body for the folder create/delete actions — a disk and the folder prefix. */
122
+ export interface FolderBody {
123
+ disk: string;
124
+ prefix: string;
125
+ }
126
+ /** One resumable part recorded for an in-progress upload session. */
127
+ export interface UploadPart {
128
+ partNumber: number;
129
+ etag: string;
130
+ }
131
+ /** Full detail of one resumable upload session, plus its recorded parts. */
132
+ export interface UploadDetailResponse {
133
+ upload: UploadInfo;
134
+ parts: UploadPart[];
135
+ }
136
+ /** One generated conversion/variant of a stored `MediaRecord`, with a short-lived signed URL. */
137
+ export interface MediaVariant {
138
+ name: string;
139
+ url: string;
140
+ }
141
+ /** Full detail of one stored `MediaRecord`, plus its generated conversions. */
142
+ export interface MediaDetailResponse {
143
+ record: MediaEntry;
144
+ variants: MediaVariant[];
145
+ }
146
+ /** Per-collection rollup (count + total bytes), for the console's collection chips. */
147
+ export interface CollectionSummary {
148
+ key: string;
149
+ count: number;
150
+ sumSize: number;
151
+ }
152
+ export interface CollectionsSummaryResponse {
153
+ collections: CollectionSummary[];
154
+ }
155
+ /** One label/value row of an {@link ObjectInsight}. Rendered verbatim as text — no markup. */
156
+ export interface ObjectInsightFact {
157
+ label: string;
158
+ value: string;
159
+ }
160
+ /** A link out to the host's own screens, rendered as an anchor. */
161
+ export interface ObjectInsightLink {
162
+ label: string;
163
+ href: string;
164
+ }
165
+ /**
166
+ * Host-supplied context about one disk object, rendered in the console preview.
167
+ *
168
+ * The console can describe a file only as storage sees it (key, size, type). This is what the HOST
169
+ * knows about it — which knowledge base indexed it, which work order it belongs to — handed over as
170
+ * data, because the console ships as a prebuilt bundle a host cannot inject components into.
171
+ */
172
+ export interface ObjectInsight {
173
+ /** Section heading, e.g. `Knowledge base`. */
174
+ title: string;
175
+ facts?: ObjectInsightFact[];
176
+ links?: ObjectInsightLink[];
177
+ /** One line of prose under the facts — a caveat, a status explanation. */
178
+ note?: string;
179
+ }
180
+ /** What `GET /object/insights` returns. Empty when the host registered no providers. */
181
+ export interface ObjectInsightsResponse {
182
+ insights: ObjectInsight[];
183
+ }
184
+ /** A signed-in console user, carried by the session cookie and returned by `/me`. */
185
+ export interface ConsoleSessionUserInfo {
186
+ id: string;
187
+ name?: string;
188
+ roles: string[];
189
+ }
190
+ /** Response of `GET /me`: the console SPA renders the login screen or the console from this. */
191
+ export type MeResponse = {
192
+ authRequired: false;
193
+ } | {
194
+ user: ConsoleSessionUserInfo;
195
+ };
196
+ /** Body for `POST /login`. */
197
+ export interface LoginBody {
198
+ username: string;
199
+ password: string;
200
+ }
201
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/dashboard/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * The JSON API contract shared by the dashboard's browser client and its AdonisJS provider routes.
3
+ *
4
+ * These shapes are framework-free (no DOM, no Node) so the same declarations type both the server
5
+ * responses (`DashboardService`) and the SPA's fetch client. They mirror the real
6
+ * `@adonis-agora/media` surface: disk `list`/`stat`/`copy`/`move`/`deleteMany` and the resumable
7
+ * `UploadSessionStore.list()` — never a bespoke server model.
8
+ */
9
+ export {};
10
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dashboard/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
@@ -0,0 +1,39 @@
1
+ {{{
2
+ exports({ to: app.configPath('media_dashboard.ts') })
3
+ }}}
4
+ import { defineConfig } from '@adonis-agora/media/dashboard'
5
+
6
+ /**
7
+ * Configuration for the @adonis-agora/media dashboard -- a management console (React SPA + JSON API)
8
+ * embedded in this same package, mounted by '@adonis-agora/media/dashboard_provider' (registered by
9
+ * 'configure' above). Storage, uploads and everything else come from the already-configured
10
+ * @adonis-agora/media manager; this config only places the console and picks which disks are browsable.
11
+ *
12
+ * The console is a READ-ONLY browser by default. Flip 'actions' on to enable copy/move/delete -- gate
13
+ * the routes with your own 'middleware' (an auth guard) before you do, and/or configure 'auth' for a
14
+ * built-in session-cookie login independent of 'middleware'.
15
+ */
16
+ export default defineConfig({
17
+ // enabled: true,
18
+ // basePath: '/media/dashboard',
19
+ // apiBasePath: '/media/dashboard/api',
20
+ // actions: true,
21
+ // disks: ['s3', 'backups'], // default: derived from config/media.ts
22
+ // middleware: middleware.auth(), // gate the whole console — SPA + API
23
+
24
+ // Built-in session-cookie login, independent of (and composable with) 'middleware'. At least one of
25
+ // 'login'/'session' is required when 'auth' is set.
26
+ // auth: {
27
+ // secret: env.get('MEDIA_DASHBOARD_SECRET'),
28
+ // ttl: '8h',
29
+ // // Mode B — standalone login page (the SPA renders it until a valid cookie exists).
30
+ // login: async (username, password) => {
31
+ // if (username === 'admin' && password === env.get('MEDIA_DASHBOARD_PASSWORD')) {
32
+ // return { id: 'admin', name: 'Admin' }
33
+ // }
34
+ // return null
35
+ // },
36
+ // // Mode A — mint a session for an already-authenticated host request.
37
+ // // session: async (request) => (request.user?.isAdmin ? { id: request.user.id } : null),
38
+ // },
39
+ })
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@adonis-agora/media",
3
- "version": "0.10.3",
3
+ "version": "0.11.0",
4
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.",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
8
- "url": "git+https://github.com/DavideCarvalho/adonis-media.git",
8
+ "url": "git+https://github.com/DavideCarvalho/adonis-agora-media.git",
9
9
  "directory": "packages/adonis"
10
10
  },
11
11
  "author": "Davi Carvalho <davi@goflip.ai>",
@@ -33,6 +33,16 @@
33
33
  "import": "./dist/providers/media_provider.js",
34
34
  "default": "./dist/providers/media_provider.js"
35
35
  },
36
+ "./dashboard_provider": {
37
+ "types": "./dist/providers/dashboard_provider.d.ts",
38
+ "import": "./dist/providers/dashboard_provider.js",
39
+ "default": "./dist/providers/dashboard_provider.js"
40
+ },
41
+ "./dashboard": {
42
+ "types": "./dist/src/dashboard/index.d.ts",
43
+ "import": "./dist/src/dashboard/index.js",
44
+ "default": "./dist/src/dashboard/index.js"
45
+ },
36
46
  "./configure": {
37
47
  "types": "./dist/configure.d.ts",
38
48
  "import": "./dist/configure.js",
@@ -83,7 +93,7 @@
83
93
  "peerDependencies": {
84
94
  "@adonis-agora/telescope": "^0.4.0",
85
95
  "@adonisjs/core": "^7.3.0",
86
- "@adonisjs/drive": "^3.0.0",
96
+ "@adonisjs/drive": "^3.0.0 || ^4.0.0",
87
97
  "@adonisjs/lucid": "^22.4.0",
88
98
  "@aws-sdk/client-s3": "^3.0.0",
89
99
  "mediabunny": "^1.45.4",
@@ -108,21 +118,22 @@
108
118
  },
109
119
  "devDependencies": {
110
120
  "@adonisjs/assembler": "^8.4.0",
111
- "@adonisjs/core": "^7.3.0",
112
- "@adonisjs/drive": "^3.0.0",
121
+ "@adonisjs/core": "7.4.0",
122
+ "@adonisjs/drive": "^4.0.0",
113
123
  "@adonisjs/lucid": "^22.4.0",
114
- "@aws-sdk/client-s3": "^3.726.1",
124
+ "@aws-sdk/client-s3": "3.1107.0",
115
125
  "@smithy/util-stream": "^3.3.1",
116
126
  "@types/better-sqlite3": "^7.6.0",
117
127
  "@types/node": "^20.0.0",
118
128
  "aws-sdk-client-mock": "^4.1.0",
119
129
  "better-sqlite3": "^11.0.0",
120
130
  "luxon": "^3.4.0",
121
- "mediabunny": "^1.50.9",
131
+ "mediabunny": "1.53.0",
122
132
  "sharp": "^0.33.0",
123
133
  "tempura": "0.4.1",
124
134
  "typescript": "^5.4.0",
125
- "vitest": "^3.0.0"
135
+ "vitest": "3.2.7",
136
+ "@adonis-agora/media-dashboard": "7.0.0"
126
137
  },
127
138
  "engines": {
128
139
  "node": ">=20.6.0"
@@ -147,7 +158,7 @@
147
158
  ],
148
159
  "scripts": {
149
160
  "build": "tsc -p tsconfig.json && pnpm run copy:stubs",
150
- "copy:stubs": "mkdir -p dist/stubs/config dist/stubs/database/migrations && cp stubs/config/media.stub dist/stubs/config/media.stub && cp -r stubs/database/migrations/. dist/stubs/database/migrations/",
161
+ "copy:stubs": "mkdir -p dist/stubs/config dist/stubs/database/migrations dist/assets && cp stubs/config/media.stub dist/stubs/config/media.stub && cp stubs/config/media_dashboard.stub dist/stubs/config/media_dashboard.stub && cp -r stubs/database/migrations/. dist/stubs/database/migrations/ && rm -rf dist/assets/spa && cp -r ../dashboard/dist/spa dist/assets/spa",
151
162
  "test": "vitest run --passWithNoTests",
152
163
  "test:watch": "vitest",
153
164
  "typecheck": "tsc -p tsconfig.json --noEmit"