@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 @@
1
+ {"version":3,"file":"dashboard_provider.js","sourceRoot":"","sources":["../../providers/dashboard_provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ /** The validated console session decoded from a verified cookie. */
2
+ export interface ConsoleSession {
3
+ /** Stable user id (the session user's `id`). */
4
+ sub: string;
5
+ /** Optional display name. */
6
+ name?: string;
7
+ /** Free-form role strings; the console does not interpret them. */
8
+ roles: string[];
9
+ /** Issued-at, epoch milliseconds. */
10
+ iat: number;
11
+ /** Expiry, epoch milliseconds. */
12
+ exp: number;
13
+ }
14
+ /** The session user a host `login`/`session` hook returns to mint a cookie. */
15
+ export interface ConsoleSessionUser {
16
+ id: string;
17
+ name?: string;
18
+ roles?: string[];
19
+ }
20
+ export interface SignOptions {
21
+ secret: string;
22
+ ttlMs: number;
23
+ /** Injectable clock (epoch ms) for deterministic tests. Defaults to `Date.now()`. */
24
+ now?: number;
25
+ }
26
+ export interface VerifyOptions {
27
+ secret: string;
28
+ now?: number;
29
+ }
30
+ /**
31
+ * Sign a session into the cookie value `base64url(payload).base64url(hmac)`. Stateless
32
+ * HMAC-SHA256, no store — `node:crypto` only, no JWT dependency.
33
+ */
34
+ export declare function signSessionCookie(user: ConsoleSessionUser, options: SignOptions): string;
35
+ /**
36
+ * Verify a cookie value and return the session, or `null` for anything tampered, malformed, or
37
+ * expired (past `exp` + a 30s grace). Constant-time signature comparison. NEVER throws — any parse
38
+ * failure yields `null`.
39
+ */
40
+ export declare function verifySessionCookie(value: string, options: VerifyOptions): ConsoleSession | null;
41
+ /** Host hook for Mode A — validates the host's own auth on the raw AdonisJS request. */
42
+ export type SessionHook = (request: unknown) => Promise<ConsoleSessionUser | null> | ConsoleSessionUser | null;
43
+ /** Host hook for Mode B — validates submitted credentials from the built-in login screen. */
44
+ export type LoginHook = (username: string, password: string) => Promise<ConsoleSessionUser | null> | ConsoleSessionUser | null;
45
+ /** Re-checks a LIVE session when the cookie is slid forward. Return `false` to revoke. */
46
+ export type RevalidateHook = (session: ConsoleSessionUser) => Promise<boolean> | boolean;
47
+ export type AuthMode = 'session' | 'login';
48
+ /** Author-facing `auth` option on `config/media_dashboard.ts`. Mirrors the NestJS console's shape. */
49
+ export interface ConsoleAuthOptions {
50
+ /** REQUIRED HMAC-SHA256 signing key. Missing/empty => boot error (fail closed). */
51
+ secret: string;
52
+ /** Cookie TTL as a duration string (`'8h'`, `'30m'`, `'7d'`). Default `'8h'`. */
53
+ ttl?: string;
54
+ /** Mode A: validate the host's own auth on the raw request. */
55
+ session?: SessionHook;
56
+ /** Mode B: validate credentials from the built-in login screen. */
57
+ login?: LoginHook;
58
+ /** Re-checks the session on sliding renewal. Not a mode — it cannot mint a session on its own. */
59
+ revalidate?: RevalidateHook;
60
+ }
61
+ /** Resolved, validated console-auth config shared by the guard and the auth routes. */
62
+ export interface ResolvedConsoleAuth {
63
+ secret: string;
64
+ ttlMs: number;
65
+ modes: AuthMode[];
66
+ session?: SessionHook;
67
+ login?: LoginHook;
68
+ revalidate?: RevalidateHook;
69
+ }
70
+ /**
71
+ * Validate + resolve the `auth` option. Returns `null` when unconfigured (the console stays open —
72
+ * front it with your own `middleware`). Throws at boot (fail closed) when configured but missing a
73
+ * secret or any hook — the host learns immediately rather than shipping an un-mintable gate.
74
+ */
75
+ export declare function resolveConsoleAuth(options: ConsoleAuthOptions | undefined): ResolvedConsoleAuth | null;
76
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/dashboard/auth.ts"],"names":[],"mappings":"AAcA,oEAAoE;AACpE,MAAM,WAAW,cAAc;IAC7B,gDAAgD;IAChD,GAAG,EAAE,MAAM,CAAC;IACZ,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,qCAAqC;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,kCAAkC;IAClC,GAAG,EAAE,MAAM,CAAC;CACb;AAED,+EAA+E;AAC/E,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,qFAAqF;IACrF,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAcD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,WAAW,GAAG,MAAM,CAWxF;AAeD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,cAAc,GAAG,IAAI,CAmBhG;AAED,wFAAwF;AACxF,MAAM,MAAM,WAAW,GAAG,CACxB,OAAO,EAAE,OAAO,KACb,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,kBAAkB,GAAG,IAAI,CAAC;AAEpE,6FAA6F;AAC7F,MAAM,MAAM,SAAS,GAAG,CACtB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,kBAAkB,GAAG,IAAI,CAAC;AAEpE,0FAA0F;AAC1F,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,kBAAkB,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AAEzF,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAE3C,sGAAsG;AACtG,MAAM,WAAW,kBAAkB;IACjC,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,mEAAmE;IACnE,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,kGAAkG;IAClG,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAED,uFAAuF;AACvF,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,cAAc,CAAC;CAC7B;AAoBD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,kBAAkB,GAAG,SAAS,GACtC,mBAAmB,GAAG,IAAI,CAmB5B"}
@@ -0,0 +1,134 @@
1
+ import { createHmac, timingSafeEqual } from 'node:crypto';
2
+ /**
3
+ * Built-in session-cookie login for the dashboard, ported from the NestJS sibling console
4
+ * (`@dudousxd/nestjs-media-dashboard`'s `server/auth/*`) so both ecosystems gate the console the
5
+ * same way. Framework-free by design (no AdonisJS import here) — the provider is the only piece
6
+ * that knows about `HttpContext`/cookies; this module only signs and verifies a stateless
7
+ * HMAC-SHA256 session, exactly as the NestJS version does (same wire format, same TTL/grace rules),
8
+ * so a host running both consoles can share one mental model of "how the console gate works".
9
+ */
10
+ /** Clock-skew grace applied to `exp` so a marginally-late clock doesn't bounce a valid cookie. */
11
+ const EXP_GRACE_MS = 30_000;
12
+ function base64urlEncode(value) {
13
+ return Buffer.from(value, 'utf8').toString('base64url');
14
+ }
15
+ function base64urlDecode(value) {
16
+ return Buffer.from(value, 'base64url').toString('utf8');
17
+ }
18
+ function hmac(secret, payload) {
19
+ return createHmac('sha256', secret).update(payload).digest('base64url');
20
+ }
21
+ /**
22
+ * Sign a session into the cookie value `base64url(payload).base64url(hmac)`. Stateless
23
+ * HMAC-SHA256, no store — `node:crypto` only, no JWT dependency.
24
+ */
25
+ export function signSessionCookie(user, options) {
26
+ const issuedAt = options.now ?? Date.now();
27
+ const session = {
28
+ sub: user.id,
29
+ ...(user.name !== undefined ? { name: user.name } : {}),
30
+ roles: user.roles ?? [],
31
+ iat: issuedAt,
32
+ exp: issuedAt + options.ttlMs,
33
+ };
34
+ const encodedPayload = base64urlEncode(JSON.stringify(session));
35
+ return `${encodedPayload}.${hmac(options.secret, encodedPayload)}`;
36
+ }
37
+ /** Type guard for the decoded payload shape — defends against tampered/legacy payloads. */
38
+ function isSessionPayload(value) {
39
+ if (typeof value !== 'object' || value === null)
40
+ return false;
41
+ const record = value;
42
+ if (typeof record.sub !== 'string')
43
+ return false;
44
+ if (record.name !== undefined && typeof record.name !== 'string')
45
+ return false;
46
+ if (!Array.isArray(record.roles))
47
+ return false;
48
+ if (!record.roles.every((role) => typeof role === 'string'))
49
+ return false;
50
+ if (typeof record.iat !== 'number' || !Number.isFinite(record.iat))
51
+ return false;
52
+ if (typeof record.exp !== 'number' || !Number.isFinite(record.exp))
53
+ return false;
54
+ return true;
55
+ }
56
+ /**
57
+ * Verify a cookie value and return the session, or `null` for anything tampered, malformed, or
58
+ * expired (past `exp` + a 30s grace). Constant-time signature comparison. NEVER throws — any parse
59
+ * failure yields `null`.
60
+ */
61
+ export function verifySessionCookie(value, options) {
62
+ try {
63
+ const dot = value.indexOf('.');
64
+ if (dot <= 0 || dot === value.length - 1)
65
+ return null;
66
+ const encodedPayload = value.slice(0, dot);
67
+ const provided = Buffer.from(value.slice(dot + 1), 'base64url');
68
+ const expected = Buffer.from(hmac(options.secret, encodedPayload), 'base64url');
69
+ // timingSafeEqual throws on a length mismatch — guard it so a wrong-length (tampered)
70
+ // signature returns null instead of throwing.
71
+ if (provided.length !== expected.length)
72
+ return null;
73
+ if (!timingSafeEqual(provided, expected))
74
+ return null;
75
+ const decoded = JSON.parse(base64urlDecode(encodedPayload));
76
+ if (!isSessionPayload(decoded))
77
+ return null;
78
+ const now = options.now ?? Date.now();
79
+ if (now > decoded.exp + EXP_GRACE_MS)
80
+ return null;
81
+ return decoded;
82
+ }
83
+ catch {
84
+ return null;
85
+ }
86
+ }
87
+ const DEFAULT_TTL_MS = 8 * 60 * 60 * 1000;
88
+ const DURATION_UNITS = {
89
+ s: 1000,
90
+ m: 60 * 1000,
91
+ h: 60 * 60 * 1000,
92
+ d: 24 * 60 * 60 * 1000,
93
+ };
94
+ /** Parse a `'<number><s|m|h|d>'` duration to ms; falls back to the 8h default on a bad value. */
95
+ function durationToMs(ttl) {
96
+ if (ttl === undefined)
97
+ return DEFAULT_TTL_MS;
98
+ const match = /^(\d+)([smhd])$/.exec(ttl.trim());
99
+ if (!match)
100
+ return DEFAULT_TTL_MS;
101
+ const unit = DURATION_UNITS[match[2] ?? ''];
102
+ if (unit === undefined)
103
+ return DEFAULT_TTL_MS;
104
+ return Number(match[1]) * unit;
105
+ }
106
+ /**
107
+ * Validate + resolve the `auth` option. Returns `null` when unconfigured (the console stays open —
108
+ * front it with your own `middleware`). Throws at boot (fail closed) when configured but missing a
109
+ * secret or any hook — the host learns immediately rather than shipping an un-mintable gate.
110
+ */
111
+ export function resolveConsoleAuth(options) {
112
+ if (!options)
113
+ return null;
114
+ if (!options.secret) {
115
+ throw new Error('media-dashboard: auth.secret is required when `auth` is configured.');
116
+ }
117
+ const modes = [];
118
+ if (options.session)
119
+ modes.push('session');
120
+ if (options.login)
121
+ modes.push('login');
122
+ if (modes.length === 0) {
123
+ throw new Error('media-dashboard: auth needs a `login` and/or `session` hook.');
124
+ }
125
+ return {
126
+ secret: options.secret,
127
+ ttlMs: durationToMs(options.ttl),
128
+ modes,
129
+ ...(options.session ? { session: options.session } : {}),
130
+ ...(options.login ? { login: options.login } : {}),
131
+ ...(options.revalidate ? { revalidate: options.revalidate } : {}),
132
+ };
133
+ }
134
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/dashboard/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Minimal, framework-free `Cookie`/`Set-Cookie` header codec for the console's session cookie.
3
+ * Deliberately NOT using AdonisJS's own `plainCookie`/`cookie` helpers — this cookie is signed by
4
+ * `./auth.ts` itself (HMAC, matching the NestJS sibling console byte-for-byte), so it needs no
5
+ * further encoding, and writing the header directly keeps `./auth.ts` fully framework-free and
6
+ * trivially unit-testable (same reasoning as the NestJS console's `auth/cookie-header.ts`).
7
+ */
8
+ export declare const SESSION_COOKIE_NAME = "media_dashboard_session";
9
+ /** Parse a `Cookie` request header into a `{name: value}` map. Malformed pairs are skipped. */
10
+ export declare function parseCookieHeader(header: string | undefined): Record<string, string>;
11
+ export interface SetCookieOptions {
12
+ path: string;
13
+ maxAgeSeconds: number;
14
+ secure: boolean;
15
+ /** When true, serializes an already-expired cookie (clears it) regardless of `maxAgeSeconds`. */
16
+ clear?: boolean;
17
+ }
18
+ /** Serialize one `Set-Cookie` header value: `HttpOnly`, `SameSite=Lax`, and `Secure` over https. */
19
+ export declare function serializeSetCookie(name: string, value: string, options: SetCookieOptions): string;
20
+ //# sourceMappingURL=cookie.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookie.d.ts","sourceRoot":"","sources":["../../../src/dashboard/cookie.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,mBAAmB,4BAA4B,CAAC;AAE7D,+FAA+F;AAC/F,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBpF;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,OAAO,CAAC;IAChB,iGAAiG;IACjG,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,oGAAoG;AACpG,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,MAAM,CASjG"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Minimal, framework-free `Cookie`/`Set-Cookie` header codec for the console's session cookie.
3
+ * Deliberately NOT using AdonisJS's own `plainCookie`/`cookie` helpers — this cookie is signed by
4
+ * `./auth.ts` itself (HMAC, matching the NestJS sibling console byte-for-byte), so it needs no
5
+ * further encoding, and writing the header directly keeps `./auth.ts` fully framework-free and
6
+ * trivially unit-testable (same reasoning as the NestJS console's `auth/cookie-header.ts`).
7
+ */
8
+ export const SESSION_COOKIE_NAME = 'media_dashboard_session';
9
+ /** Parse a `Cookie` request header into a `{name: value}` map. Malformed pairs are skipped. */
10
+ export function parseCookieHeader(header) {
11
+ const cookies = {};
12
+ if (!header)
13
+ return cookies;
14
+ for (const pair of header.split(';')) {
15
+ const eq = pair.indexOf('=');
16
+ if (eq === -1)
17
+ continue;
18
+ const name = pair.slice(0, eq).trim();
19
+ if (!name)
20
+ continue;
21
+ const value = pair.slice(eq + 1).trim();
22
+ try {
23
+ cookies[name] = decodeURIComponent(value);
24
+ }
25
+ catch {
26
+ cookies[name] = value;
27
+ }
28
+ }
29
+ return cookies;
30
+ }
31
+ /** Serialize one `Set-Cookie` header value: `HttpOnly`, `SameSite=Lax`, and `Secure` over https. */
32
+ export function serializeSetCookie(name, value, options) {
33
+ const parts = [`${name}=${encodeURIComponent(value)}`];
34
+ parts.push(`Path=${options.path}`);
35
+ parts.push(`Max-Age=${Math.max(0, Math.floor(options.maxAgeSeconds))}`);
36
+ if (options.clear)
37
+ parts.push('Expires=Thu, 01 Jan 1970 00:00:00 GMT');
38
+ parts.push('HttpOnly');
39
+ parts.push('SameSite=Lax');
40
+ if (options.secure)
41
+ parts.push('Secure');
42
+ return parts.join('; ');
43
+ }
44
+ //# sourceMappingURL=cookie.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookie.js","sourceRoot":"","sources":["../../../src/dashboard/cookie.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,yBAAyB,CAAC;AAE7D,+FAA+F;AAC/F,MAAM,UAAU,iBAAiB,CAAC,MAA0B;IAC1D,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,IAAI,CAAC,MAAM;QAAE,OAAO,OAAO,CAAC;IAC5B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,MAAM,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,EAAE,KAAK,CAAC,CAAC;YAAE,SAAS;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QACxB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAUD,oGAAoG;AACpG,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,KAAa,EAAE,OAAyB;IACvF,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,IAAI,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACvD,KAAK,CAAC,IAAI,CAAC,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACnC,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;IACxE,IAAI,OAAO,CAAC,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACvE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvB,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC3B,IAAI,OAAO,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,56 @@
1
+ import type { HttpContext } from '@adonisjs/core/http';
2
+ import type { ConsoleAuthOptions } from './auth.js';
3
+ import type { ObjectInsightProvider } from './object_insights.js';
4
+ /** A minimal middleware handler shape (host auth guard) applied to the console routes. */
5
+ export type DashboardMiddleware = (ctx: HttpContext, next: () => Promise<void>) => unknown;
6
+ /**
7
+ * Configuration for the `@adonis-agora/media` dashboard, read by `dashboard_provider.ts` from
8
+ * `config/media_dashboard.ts`. Same config KEY (`media_dashboard`) the standalone
9
+ * `@adonis-agora/media-dashboard` package's provider always read, so an existing
10
+ * `config/media_dashboard.ts` keeps working unchanged when a host switches from the standalone
11
+ * provider to this embedded one.
12
+ *
13
+ * The console is a read-only browser by default (`actions: false`); flip `actions` on — and gate the
14
+ * routes with your own `middleware` (an auth guard) — to enable copy/move/delete. Storage, uploads and
15
+ * everything else come from the already-configured `@adonis-agora/media` manager; this config only
16
+ * places the SPA + JSON API and picks which disks are browsable.
17
+ */
18
+ export interface MediaDashboardConfig {
19
+ /** Mount the dashboard at all. Default `true`. Set `false` to register the provider (so its config
20
+ * type stays available) without actually exposing any route — e.g. per-environment. */
21
+ enabled?: boolean;
22
+ /** Where the SPA is mounted. Default `/media/dashboard`. */
23
+ basePath?: string;
24
+ /** Where the JSON API is mounted. Default `<basePath>/api`. */
25
+ apiBasePath?: string;
26
+ /** Enable mutating actions (copy/move/delete). Default `false`. */
27
+ actions?: boolean;
28
+ /**
29
+ * Disk names the console may browse/act on. When omitted, the provider derives them from the media
30
+ * config (`disks` keys plus the default disk).
31
+ */
32
+ disks?: string[];
33
+ /** Prefix of the core direct-S3 upload routes, matched to `media.uploads.routes.prefix`. Default `/media/uploads`. */
34
+ uploadsPrefix?: string;
35
+ /** Prefix of the core TUS routes, matched to `media.uploads.resumable.routes.prefix`. Default `/media/uploads/tus`. */
36
+ tusPrefix?: string;
37
+ /** Host middleware (auth) applied to the whole console — SPA and API. */
38
+ middleware?: DashboardMiddleware | DashboardMiddleware[];
39
+ /**
40
+ * Gate the console's JSON API behind a built-in session-cookie login, mirroring the NestJS sibling
41
+ * console. Omit to leave the API open (front it with your own `middleware`). When set, the SPA
42
+ * renders a login screen until a valid cookie exists; supply a `login(username, password)` and/or
43
+ * `session(request)` hook that returns a session user (or `null` to deny) — see
44
+ * {@link ConsoleAuthOptions}. Independent of, and composable with, `middleware`.
45
+ */
46
+ auth?: ConsoleAuthOptions;
47
+ /**
48
+ * Host-supplied context about a disk object, rendered in the console's preview — see
49
+ * {@link ObjectInsightProvider}. The console can only describe a file as storage sees it; this is
50
+ * how it learns what the file *means* to your app. Omit for no annotation (the default).
51
+ */
52
+ objectInsights?: ObjectInsightProvider[];
53
+ }
54
+ /** Identity helper for authoring a typed `config/media_dashboard.ts`. */
55
+ export declare function defineConfig(config?: MediaDashboardConfig): MediaDashboardConfig;
56
+ //# sourceMappingURL=define_config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define_config.d.ts","sourceRoot":"","sources":["../../../src/dashboard/define_config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAElE,0FAA0F;AAC1F,MAAM,MAAM,mBAAmB,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,OAAO,CAAC;AAE3F;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,oBAAoB;IACnC;4FACwF;IACxF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,4DAA4D;IAC5D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,sHAAsH;IACtH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uHAAuH;IACvH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yEAAyE;IACzE,UAAU,CAAC,EAAE,mBAAmB,GAAG,mBAAmB,EAAE,CAAC;IACzD;;;;;;OAMG;IACH,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B;;;;OAIG;IACH,cAAc,CAAC,EAAE,qBAAqB,EAAE,CAAC;CAC1C;AAED,yEAAyE;AACzE,wBAAgB,YAAY,CAAC,MAAM,GAAE,oBAAyB,GAAG,oBAAoB,CAEpF"}
@@ -0,0 +1,5 @@
1
+ /** Identity helper for authoring a typed `config/media_dashboard.ts`. */
2
+ export function defineConfig(config = {}) {
3
+ return config;
4
+ }
5
+ //# sourceMappingURL=define_config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define_config.js","sourceRoot":"","sources":["../../../src/dashboard/define_config.ts"],"names":[],"mappings":"AAwDA,yEAAyE;AACzE,MAAM,UAAU,YAAY,CAAC,SAA+B,EAAE;IAC5D,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,10 @@
1
+ export { defineConfig } from './define_config.js';
2
+ export type { MediaDashboardConfig, DashboardMiddleware } from './define_config.js';
3
+ export { DashboardService, DashboardError } from './service.js';
4
+ export type { MediaManagerLike, DashboardServiceOptions } from './service.js';
5
+ export { resolveConsoleAuth, signSessionCookie, verifySessionCookie } from './auth.js';
6
+ export type { ConsoleAuthOptions, ConsoleSession, ConsoleSessionUser, ResolvedConsoleAuth, AuthMode, SessionHook, LoginHook, RevalidateHook, } from './auth.js';
7
+ export { sanitizeInsight } from './object_insights.js';
8
+ export type { ObjectInsightProvider, ObjectInsightContext } from './object_insights.js';
9
+ export type { DiskInfo, DiskListResponse, DiskCapabilities, ObjectFolder, ObjectEntry, ObjectListResponse, ObjectDetailResponse, MediaEntry, MediaVariant, MediaDetailResponse, CollectionListResponse, CollectionFilter, CollectionSummary, CollectionsSummaryResponse, UploadInfo, UploadPart, UploadListResponse, UploadDetailResponse, Topology, CopyMoveBody, DeleteBody, ObjectInsight, ObjectInsightFact, ObjectInsightLink, ObjectInsightsResponse, ConsoleSessionUserInfo, MeResponse, LoginBody, } from './types.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dashboard/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAGpF,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAChE,YAAY,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAG9E,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACvF,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,mBAAmB,EACnB,QAAQ,EACR,WAAW,EACX,SAAS,EACT,cAAc,GACf,MAAM,WAAW,CAAC;AAGnB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAGxF,YAAY,EACV,QAAQ,EACR,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,kBAAkB,EAClB,oBAAoB,EACpB,UAAU,EACV,YAAY,EACZ,mBAAmB,EACnB,sBAAsB,EACtB,gBAAgB,EAChB,iBAAiB,EACjB,0BAA0B,EAC1B,UAAU,EACV,UAAU,EACV,kBAAkB,EAClB,oBAAoB,EACpB,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,UAAU,EACV,SAAS,GACV,MAAM,YAAY,CAAC"}
@@ -0,0 +1,9 @@
1
+ // Config idiom — author `config/media_dashboard.ts` against these.
2
+ export { defineConfig } from './define_config.js';
3
+ // Dashboard read/action logic (framework-free — the provider is a thin HTTP shell around this).
4
+ export { DashboardService, DashboardError } from './service.js';
5
+ // Built-in session-cookie login.
6
+ export { resolveConsoleAuth, signSessionCookie, verifySessionCookie } from './auth.js';
7
+ // Host-supplied object annotations.
8
+ export { sanitizeInsight } from './object_insights.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/dashboard/index.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,gGAAgG;AAChG,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAGhE,iCAAiC;AACjC,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAYvF,oCAAoC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Host-supplied context about a disk object, shown in the console's preview.
3
+ *
4
+ * Ported from the NestJS sibling console's `server/object-insights.ts`. The console can describe a
5
+ * file only as storage sees it: key, size, content type, last modified. Everything that makes the
6
+ * file *mean* something lives in the host — which work order this scan belongs to, which knowledge
7
+ * base indexed it. This is the seam for handing that back: the host registers a provider (via
8
+ * `config/media_dashboard.ts`'s `objectInsights`), the console asks it when an object is previewed
9
+ * and renders whatever comes back.
10
+ *
11
+ * **Data, not components** — same reason as the NestJS side: the console ships as a prebuilt SPA
12
+ * bundle, so a host cannot inject React into it. A provider returns a small structured value the
13
+ * console knows how to render (facts, links, a note).
14
+ */
15
+ import type { ObjectInsight, ObjectInsightsResponse } from './types.js';
16
+ export type { ObjectInsight, ObjectInsightFact, ObjectInsightLink, ObjectInsightsResponse, } from './types.js';
17
+ /** Which object is being described. */
18
+ export interface ObjectInsightContext {
19
+ disk: string;
20
+ key: string;
21
+ }
22
+ /**
23
+ * A source of {@link ObjectInsight}s, registered by the host in `config/media_dashboard.ts`.
24
+ *
25
+ * `resolve` runs on every preview of every object, so it must be cheap. Return `null` for an object
26
+ * this provider has nothing to say about, and the console renders nothing for it. A provider that
27
+ * throws is skipped (logged by the caller) — annotation must never be able to stop an admin opening
28
+ * a file.
29
+ */
30
+ export interface ObjectInsightProvider {
31
+ /** Stable identifier, used in the log line when this provider fails. */
32
+ id: string;
33
+ resolve(ctx: ObjectInsightContext): Promise<ObjectInsight | null> | ObjectInsight | null;
34
+ }
35
+ /**
36
+ * Drop links the console must not render. A relative href (`/ctrl/...`) always addresses the host's
37
+ * own app and is kept; an absolute one is kept only if it is http(s) (refuses `javascript:`/`data:`).
38
+ */
39
+ export declare function sanitizeInsight(insight: ObjectInsight): ObjectInsight;
40
+ /** `{ insights: [] }` — what the console renders when no providers are registered. */
41
+ export declare function emptyInsights(): ObjectInsightsResponse;
42
+ //# sourceMappingURL=object_insights.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object_insights.d.ts","sourceRoot":"","sources":["../../../src/dashboard/object_insights.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAExE,YAAY,EACV,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AAEpB,uCAAuC;AACvC,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC,wEAAwE;IACxE,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,CAAC,GAAG,EAAE,oBAAoB,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,aAAa,GAAG,IAAI,CAAC;CAC1F;AAKD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,aAAa,CAcrE;AAED,sFAAsF;AACtF,wBAAgB,aAAa,IAAI,sBAAsB,CAEtD"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Host-supplied context about a disk object, shown in the console's preview.
3
+ *
4
+ * Ported from the NestJS sibling console's `server/object-insights.ts`. The console can describe a
5
+ * file only as storage sees it: key, size, content type, last modified. Everything that makes the
6
+ * file *mean* something lives in the host — which work order this scan belongs to, which knowledge
7
+ * base indexed it. This is the seam for handing that back: the host registers a provider (via
8
+ * `config/media_dashboard.ts`'s `objectInsights`), the console asks it when an object is previewed
9
+ * and renders whatever comes back.
10
+ *
11
+ * **Data, not components** — same reason as the NestJS side: the console ships as a prebuilt SPA
12
+ * bundle, so a host cannot inject React into it. A provider returns a small structured value the
13
+ * console knows how to render (facts, links, a note).
14
+ */
15
+ /** Schemes an {@link ObjectInsightLink} may point at. Anything else is dropped, not rendered. */
16
+ const SAFE_LINK_SCHEMES = new Set(['http:', 'https:']);
17
+ /**
18
+ * Drop links the console must not render. A relative href (`/ctrl/...`) always addresses the host's
19
+ * own app and is kept; an absolute one is kept only if it is http(s) (refuses `javascript:`/`data:`).
20
+ */
21
+ export function sanitizeInsight(insight) {
22
+ if (insight.links === undefined)
23
+ return insight;
24
+ const links = insight.links.filter((link) => {
25
+ if (link.href.startsWith('/')) {
26
+ // `//evil.com` is protocol-relative — an absolute URL wearing a relative one's clothes.
27
+ return !link.href.startsWith('//');
28
+ }
29
+ try {
30
+ return SAFE_LINK_SCHEMES.has(new URL(link.href).protocol);
31
+ }
32
+ catch {
33
+ return false;
34
+ }
35
+ });
36
+ return { ...insight, links };
37
+ }
38
+ /** `{ insights: [] }` — what the console renders when no providers are registered. */
39
+ export function emptyInsights() {
40
+ return { insights: [] };
41
+ }
42
+ //# sourceMappingURL=object_insights.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"object_insights.js","sourceRoot":"","sources":["../../../src/dashboard/object_insights.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AA+BH,iGAAiG;AACjG,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEvD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,OAAsB;IACpD,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IAChD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QAC1C,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9B,wFAAwF;YACxF,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QACD,IAAI,CAAC;YACH,OAAO,iBAAiB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC;QAC5D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC;AAC/B,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,aAAa;IAC3B,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAC1B,CAAC"}