@dudousxd/nestjs-media-dashboard 0.17.0 → 0.18.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.
- package/dist/client/index.d.ts +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/media-console-client.d.ts +11 -0
- package/dist/client/media-console-client.d.ts.map +1 -1
- package/dist/client/media-console-client.js +50 -12
- package/dist/client/media-console-client.js.map +1 -1
- package/dist/server/index.cjs +654 -313
- package/dist/server/index.cjs.map +1 -1
- package/dist/server/index.d.cts +157 -13
- package/dist/server/index.d.ts +157 -13
- package/dist/server/index.js +579 -250
- package/dist/server/index.js.map +1 -1
- package/dist/spa/assets/{ArchivePreview-DmK0MQIo.js → ArchivePreview-DacpA4QQ.js} +1 -1
- package/dist/spa/assets/{CertificatePreview--zFMYKK0.js → CertificatePreview-CEfJ-ORW.js} +1 -1
- package/dist/spa/assets/MarkdownPreview-47FMx48l.js +74 -0
- package/dist/spa/assets/{ParquetPreview-C4Lj3kXq.js → ParquetPreview-DHvs5kV-.js} +1 -1
- package/dist/spa/assets/{SheetPreview-Dr1g4cXo.js → SheetPreview-AT23RGVb.js} +1 -1
- package/dist/spa/assets/{SqlitePreview-BowEdYum.js → SqlitePreview-D7KZuyZD.js} +1 -1
- package/dist/spa/assets/{index-BcVf-XkG.js → index-BmejPQYi.js} +1 -1
- package/dist/spa/assets/{preview-Dti-FqVb.js → preview-DVKz8AwF.js} +1 -1
- package/dist/spa/assets/styles-CTvG1yXb.js +61 -0
- package/dist/spa/index.html +2 -2
- package/dist/spa/preview.html +2 -2
- package/package.json +9 -3
- package/dist/spa/assets/MarkdownPreview-C78ZRrfz.js +0 -72
- package/dist/spa/assets/styles-D_4txQnQ.js +0 -61
package/dist/client/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export * from './types.js';
|
|
2
|
-
export { apiBase, mediaConsoleClient, type MediaConsoleClient } from './media-console-client.js';
|
|
2
|
+
export { apiBase, ConsoleAccessError, mediaConsoleClient, onConsoleAccessDenied, type MediaConsoleClient, } from './media-console-client.js';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,OAAO,EACP,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,EACrB,KAAK,kBAAkB,GACxB,MAAM,2BAA2B,CAAC"}
|
package/dist/client/index.js
CHANGED
package/dist/client/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,OAAO,EACP,kBAAkB,EAClB,kBAAkB,EAClB,qBAAqB,GAEtB,MAAM,2BAA2B,CAAC"}
|
|
@@ -7,6 +7,16 @@ declare global {
|
|
|
7
7
|
}
|
|
8
8
|
/** Where the SPA fetches the JSON API — injected by the UI controller, or a sensible default. */
|
|
9
9
|
export declare function apiBase(): string;
|
|
10
|
+
/** A console denial from the API: 403 (`forbidden`) or 401 (`unauthenticated`, maybe with `redirectTo`). */
|
|
11
|
+
export declare class ConsoleAccessError extends Error {
|
|
12
|
+
readonly status: 401 | 403;
|
|
13
|
+
readonly redirectTo?: string | undefined;
|
|
14
|
+
constructor(status: 401 | 403, redirectTo?: string | undefined);
|
|
15
|
+
}
|
|
16
|
+
type AccessListener = (error: ConsoleAccessError) => void;
|
|
17
|
+
/** Called on every console denial the client sees; returns an unsubscribe. The SPA uses it to show
|
|
18
|
+
* its access-denied state. */
|
|
19
|
+
export declare function onConsoleAccessDenied(listener: AccessListener): () => void;
|
|
10
20
|
/** Typed browser client for the /media console JSON API. Rides ambient cookies to whatever protects the routes. */
|
|
11
21
|
export declare const mediaConsoleClient: {
|
|
12
22
|
topology: () => Promise<Topology>;
|
|
@@ -84,4 +94,5 @@ export declare const mediaConsoleClient: {
|
|
|
84
94
|
deleteFolder: (disk: string, prefix: string) => Promise<void>;
|
|
85
95
|
};
|
|
86
96
|
export type MediaConsoleClient = typeof mediaConsoleClient;
|
|
97
|
+
export {};
|
|
87
98
|
//# sourceMappingURL=media-console-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-console-client.d.ts","sourceRoot":"","sources":["../../src/client/media-console-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,QAAQ,EACR,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB;CACF;AAED,iGAAiG;AACjG,wBAAgB,OAAO,IAAI,MAAM,CAMhC;
|
|
1
|
+
{"version":3,"file":"media-console-client.d.ts","sourceRoot":"","sources":["../../src/client/media-console-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,10 +17,53 @@ function withQuery(path, params) {
|
|
|
17
17
|
const query = search.toString();
|
|
18
18
|
return query ? `${path}?${query}` : path;
|
|
19
19
|
}
|
|
20
|
+
/** A console denial from the API: 403 (`forbidden`) or 401 (`unauthenticated`, maybe with `redirectTo`). */
|
|
21
|
+
export class ConsoleAccessError extends Error {
|
|
22
|
+
status;
|
|
23
|
+
redirectTo;
|
|
24
|
+
constructor(status, redirectTo) {
|
|
25
|
+
super(status === 403 ? 'Access denied' : 'Sign-in required');
|
|
26
|
+
this.status = status;
|
|
27
|
+
this.redirectTo = redirectTo;
|
|
28
|
+
this.name = 'ConsoleAccessError';
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const accessListeners = new Set();
|
|
32
|
+
/** Called on every console denial the client sees; returns an unsubscribe. The SPA uses it to show
|
|
33
|
+
* its access-denied state. */
|
|
34
|
+
export function onConsoleAccessDenied(listener) {
|
|
35
|
+
accessListeners.add(listener);
|
|
36
|
+
return () => accessListeners.delete(listener);
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Throws for a non-2xx response. A 401 carrying `redirectTo` sends the browser there (the app's
|
|
40
|
+
* sign-in); a 401/403 is reported as a {@link ConsoleAccessError} to {@link onConsoleAccessDenied}.
|
|
41
|
+
*/
|
|
42
|
+
async function ensureOk(response) {
|
|
43
|
+
if (response.ok)
|
|
44
|
+
return;
|
|
45
|
+
if (response.status === 401 || response.status === 403) {
|
|
46
|
+
let redirectTo;
|
|
47
|
+
if (response.status === 401) {
|
|
48
|
+
const body = (await response
|
|
49
|
+
.clone()
|
|
50
|
+
.json()
|
|
51
|
+
.catch(() => undefined));
|
|
52
|
+
if (typeof body?.redirectTo === 'string')
|
|
53
|
+
redirectTo = body.redirectTo;
|
|
54
|
+
}
|
|
55
|
+
const error = new ConsoleAccessError(response.status, redirectTo);
|
|
56
|
+
if (redirectTo && typeof window !== 'undefined')
|
|
57
|
+
window.location.assign(redirectTo);
|
|
58
|
+
for (const listener of accessListeners)
|
|
59
|
+
listener(error);
|
|
60
|
+
throw error;
|
|
61
|
+
}
|
|
62
|
+
throw new Error(`${response.status} ${response.statusText}`);
|
|
63
|
+
}
|
|
20
64
|
async function getJson(path) {
|
|
21
65
|
const response = await fetch(`${apiBase()}${path}`, { credentials: 'same-origin' });
|
|
22
|
-
|
|
23
|
-
throw new Error(`${response.status} ${response.statusText}`);
|
|
66
|
+
await ensureOk(response);
|
|
24
67
|
return response.json();
|
|
25
68
|
}
|
|
26
69
|
async function send(method, path, body) {
|
|
@@ -31,8 +74,7 @@ async function send(method, path, body) {
|
|
|
31
74
|
? { headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body) }
|
|
32
75
|
: {}),
|
|
33
76
|
});
|
|
34
|
-
|
|
35
|
-
throw new Error(`${response.status} ${response.statusText}`);
|
|
77
|
+
await ensureOk(response);
|
|
36
78
|
}
|
|
37
79
|
/** POST raw bytes as `application/octet-stream` (a file upload) — the host's JSON parser leaves the
|
|
38
80
|
* stream intact, so the server reads it straight from the request. */
|
|
@@ -43,8 +85,7 @@ async function sendRaw(path, body) {
|
|
|
43
85
|
headers: { 'Content-Type': 'application/octet-stream' },
|
|
44
86
|
body,
|
|
45
87
|
});
|
|
46
|
-
|
|
47
|
-
throw new Error(`${response.status} ${response.statusText}`);
|
|
88
|
+
await ensureOk(response);
|
|
48
89
|
}
|
|
49
90
|
/** Typed browser client for the /media console JSON API. Rides ambient cookies to whatever protects the routes. */
|
|
50
91
|
export const mediaConsoleClient = {
|
|
@@ -71,8 +112,7 @@ export const mediaConsoleClient = {
|
|
|
71
112
|
const response = await fetch(mediaConsoleClient.objectRawUrl(disk, key), {
|
|
72
113
|
credentials: 'same-origin',
|
|
73
114
|
});
|
|
74
|
-
|
|
75
|
-
throw new Error(`${response.status} ${response.statusText}`);
|
|
115
|
+
await ensureOk(response);
|
|
76
116
|
if (!response.body) {
|
|
77
117
|
const text = await response.text();
|
|
78
118
|
return { text, bytesRead: text.length };
|
|
@@ -119,8 +159,7 @@ export const mediaConsoleClient = {
|
|
|
119
159
|
await response.body?.cancel().catch(() => undefined);
|
|
120
160
|
throw new Error(`Ranged read of "${key}" was answered 200 (full body) instead of 206 — the Range header was dropped between this page and the disk.`);
|
|
121
161
|
}
|
|
122
|
-
|
|
123
|
-
throw new Error(`${response.status} ${response.statusText}`);
|
|
162
|
+
await ensureOk(response);
|
|
124
163
|
return new Uint8Array(await response.arrayBuffer());
|
|
125
164
|
},
|
|
126
165
|
/** Fetch an object's raw bytes (for binary previews like XLSX) through the inline proxy. */
|
|
@@ -128,8 +167,7 @@ export const mediaConsoleClient = {
|
|
|
128
167
|
const response = await fetch(mediaConsoleClient.objectRawUrl(disk, key), {
|
|
129
168
|
credentials: 'same-origin',
|
|
130
169
|
});
|
|
131
|
-
|
|
132
|
-
throw new Error(`${response.status} ${response.statusText}`);
|
|
170
|
+
await ensureOk(response);
|
|
133
171
|
return response.arrayBuffer();
|
|
134
172
|
},
|
|
135
173
|
uploads: (params = {}) => getJson(withQuery('/uploads', params)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"media-console-client.js","sourceRoot":"","sources":["../../src/client/media-console-client.ts"],"names":[],"mappings":"AAoBA,iGAAiG;AACjG,MAAM,UAAU,OAAO;IACrB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,IAAI,MAAM,CAAC,aAAa;YAAE,OAAO,MAAM,CAAC,aAAa,CAAC;QACtD,IAAI,MAAM,CAAC,cAAc;YAAE,OAAO,GAAG,MAAM,CAAC,cAAc,MAAM,CAAC;IACnE,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,SAAS,CAAC,IAAY,EAAE,MAAmD;IAClF,MAAM,MAAM,GAAG,IAAI,eAAe,EAAE,CAAC;IACrC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAChC,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3C,CAAC;AAED,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"media-console-client.js","sourceRoot":"","sources":["../../src/client/media-console-client.ts"],"names":[],"mappings":"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"}
|