@mano8/astro-media-m8 0.1.0-alpha.1 → 1.0.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/README.md +52 -30
- package/dist/src/integration.js +10 -10
- package/dist/src/runtime/api/internal.server.js +1 -1
- package/dist/src/runtime/authAdapter.d.ts +2 -2
- package/dist/src/runtime/authAdapter.js +1 -1
- package/dist/src/runtime/compatibility.d.ts +6 -6
- package/dist/src/runtime/compatibility.d.ts.map +1 -1
- package/dist/src/runtime/compatibility.js +4 -8
- package/dist/src/runtime/compatibility.js.map +1 -1
- package/dist/src/runtime/hooks/useMediaAdmin.d.ts +1 -0
- package/dist/src/runtime/hooks/useMediaAdmin.d.ts.map +1 -1
- package/dist/src/runtime/hooks/useMediaAdmin.js +4 -0
- package/dist/src/runtime/hooks/useMediaAdmin.js.map +1 -1
- package/dist/src/runtime/react/MediaProvider.d.ts.map +1 -1
- package/dist/src/runtime/react/MediaProvider.js +2 -4
- package/dist/src/runtime/react/MediaProvider.js.map +1 -1
- package/package.json +11 -6
- package/registry/r/admin-media-dashboard.json +5 -4
- package/registry/r/media-dashboard-overview.json +8 -5
- package/registry/r/media-maintenance-panel.json +5 -3
- package/registry/r/registry.json +3 -9
- package/registry.json +19 -24
- package/src/routes/admin/media.astro +1 -1
- package/src/routes/library.astro +1 -1
- package/src/routes/object/[id].astro +1 -1
- package/src/routes/presets.astro +1 -1
- package/src/routes/upload.astro +1 -1
- package/src/scaffold/styles/media.css +161 -150
- package/registry/r/data-table.json +0 -23
package/README.md
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
# @
|
|
1
|
+
# @mano8/astro-media-m8
|
|
2
|
+
|
|
3
|
+

|
|
2
4
|
|
|
3
5
|
Astro integration and headless client for [`media-service-m8`]. The media-side
|
|
4
6
|
analog of `@mano8/astro-auth-m8`: typed Zod schemas, API wrappers for the full
|
|
@@ -6,23 +8,35 @@ media contract, a presigned-upload controller, optional React provider/hooks,
|
|
|
6
8
|
and injectable starter routes — so any Astro stack can drive media without
|
|
7
9
|
re-implementing the contract.
|
|
8
10
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
+
Part of the M8 media stack: [mano8/astro-media-m8](https://github.com/mano8/astro-media-m8)
|
|
12
|
+
requires [mano8/astro-auth-m8](https://github.com/mano8/astro-auth-m8) as its
|
|
13
|
+
auth peer for fa-auth-m8 token delegation, consumes shared UI/registry blocks
|
|
14
|
+
from [mano8/astro-ui-m8](https://github.com/mano8/astro-ui-m8), targets the
|
|
15
|
+
media backend at [mano8/media-service-m8](https://github.com/mano8/media-service-m8),
|
|
16
|
+
and composes into the [mano8/fa-ui-m8](https://github.com/mano8/fa-ui-m8) host app.
|
|
17
|
+
|
|
18
|
+
### Related repositories
|
|
19
|
+
|
|
20
|
+
- [`media-service-m8`](https://github.com/mano8/media-service-m8) — the FastAPI backend this plugin fronts.
|
|
21
|
+
- [`astro-ui-m8`](https://github.com/mano8/astro-ui-m8) — canonical shared shadcn registry (data-table, state components) this plugin's admin views build on.
|
|
22
|
+
- [`astro-auth-m8`](https://github.com/mano8/astro-auth-m8) — required auth peer; issues the fa-auth-m8 tokens this plugin's adapter consumes.
|
|
23
|
+
- [`fa-ui-m8`](https://github.com/mano8/fa-ui-m8) — the Astro/Starlight host app this plugin installs into.
|
|
24
|
+
|
|
25
|
+
Pinned to `media-service-m8@1.0` (supported service-version range
|
|
26
|
+
`>=1.0.0 <2.0.0`; see `mediaServiceM8` in `package.json`).
|
|
11
27
|
|
|
12
28
|
## Backend contract
|
|
13
29
|
|
|
14
|
-
This package targets the `media-service-m8@
|
|
15
|
-
against `media-service-m8` service version `0.0
|
|
16
|
-
versions are `>=0.0
|
|
17
|
-
media library sorting contract). The contract major.minor tracks the pre-1.0
|
|
18
|
-
package line.
|
|
30
|
+
This package targets the `media-service-m8@1.0` API contract and was tested
|
|
31
|
+
against `media-service-m8` service version `1.0.0`. Supported backend service
|
|
32
|
+
versions are `>=1.0.0 <2.0.0`.
|
|
19
33
|
|
|
20
|
-
Compatibility helpers are exported from `@
|
|
34
|
+
Compatibility helpers are exported from `@mano8/astro-media-m8/compatibility`.
|
|
21
35
|
`media-service-m8` (>= 0.0.10) exposes a public `GET {API_PREFIX}/meta` route
|
|
22
36
|
returning a `ServiceMeta` payload — pass it straight to the assert:
|
|
23
37
|
|
|
24
38
|
```ts
|
|
25
|
-
import { assertMediaServiceM8Compatibility } from "@
|
|
39
|
+
import { assertMediaServiceM8Compatibility } from "@mano8/astro-media-m8/compatibility";
|
|
26
40
|
|
|
27
41
|
const meta = await fetch(`${base}/media/meta`).then((r) => r.json());
|
|
28
42
|
// meta = { service, version, api_version, contract: { name, version, range } }
|
|
@@ -36,14 +50,17 @@ elsewhere.
|
|
|
36
50
|
## Install
|
|
37
51
|
|
|
38
52
|
```sh
|
|
39
|
-
npm i @
|
|
53
|
+
npm i @mano8/astro-media-m8 @mano8/astro-auth-m8 zod
|
|
40
54
|
```
|
|
41
55
|
|
|
42
56
|
`@mano8/astro-auth-m8` is a required peer: `media-service-m8` only accepts
|
|
43
57
|
`fa-auth-m8`-issued tokens, so the plugin's auth adapter must be backed by
|
|
44
58
|
`fa-auth-m8` (the official plugin, or a custom adapter that obtains those
|
|
45
|
-
tokens).
|
|
46
|
-
|
|
59
|
+
tokens). `@mano8/astro-ui-m8` is a normal dependency because the media registry
|
|
60
|
+
skins compose the canonical shared table from its packaged registry output.
|
|
61
|
+
`react`/`react-dom` are optional — only `./react`, `./hooks` and the starter
|
|
62
|
+
views need them; `@tanstack/react-query` is a required peer once you use
|
|
63
|
+
`./hooks` (`npm i @tanstack/react-query`).
|
|
47
64
|
|
|
48
65
|
## Modes
|
|
49
66
|
|
|
@@ -58,7 +75,7 @@ starter views need them.
|
|
|
58
75
|
import { defineConfig } from "astro/config";
|
|
59
76
|
import react from "@astrojs/react";
|
|
60
77
|
import faAuth from "@mano8/astro-auth-m8";
|
|
61
|
-
import faMedia from "@
|
|
78
|
+
import faMedia from "@mano8/astro-media-m8";
|
|
62
79
|
|
|
63
80
|
export default defineConfig({
|
|
64
81
|
integrations: [
|
|
@@ -74,7 +91,7 @@ Wire the auth adapter once (browser entry / provider):
|
|
|
74
91
|
```ts
|
|
75
92
|
import { getToken } from "@mano8/astro-auth-m8/client";
|
|
76
93
|
import { refreshToken } from "@mano8/astro-auth-m8/api";
|
|
77
|
-
import { createFaAuthAdapter, setMediaAuthAdapter } from "@
|
|
94
|
+
import { createFaAuthAdapter, setMediaAuthAdapter } from "@mano8/astro-media-m8/auth-adapter";
|
|
78
95
|
|
|
79
96
|
setMediaAuthAdapter(createFaAuthAdapter({ getToken, refreshToken }));
|
|
80
97
|
```
|
|
@@ -82,8 +99,8 @@ setMediaAuthAdapter(createFaAuthAdapter({ getToken, refreshToken }));
|
|
|
82
99
|
## Headless usage
|
|
83
100
|
|
|
84
101
|
```ts
|
|
85
|
-
import { objects, uploads } from "@
|
|
86
|
-
import { createMediaUploadController } from "@
|
|
102
|
+
import { objects, uploads } from "@mano8/astro-media-m8/api";
|
|
103
|
+
import { createMediaUploadController } from "@mano8/astro-media-m8/upload";
|
|
87
104
|
|
|
88
105
|
const controller = createMediaUploadController({
|
|
89
106
|
file, category: "asset", visibility: "private", checksum: "sha256", waitForScan: true
|
|
@@ -97,7 +114,7 @@ const page = await objects.list({ category: "asset", limit: 20 });
|
|
|
97
114
|
## Security model
|
|
98
115
|
|
|
99
116
|
- Access tokens are delegated to the auth adapter and **never persisted** here.
|
|
100
|
-
- Service tokens are server-only: `@
|
|
117
|
+
- Service tokens are server-only: `@mano8/astro-media-m8/internal-server` throws
|
|
101
118
|
if imported in the browser and is excluded from the client `api` barrel.
|
|
102
119
|
- The browser→storage upload uses the presigned POST policy only — **no bearer
|
|
103
120
|
token** is sent to MinIO/S3.
|
|
@@ -138,7 +155,7 @@ omitted, empty, or not a valid absolute URL, it is silently ignored. Use
|
|
|
138
155
|
|
|
139
156
|
For shadcn/Tailwind apps, this package ships a **shadcn registry** of ready-to-run
|
|
140
157
|
styled admin views. The headless logic stays a live dependency
|
|
141
|
-
(`@
|
|
158
|
+
(`@mano8/astro-media-m8/react` + `/hooks`); only the **skin** is copied into the
|
|
142
159
|
consumer, so views adopt the app's own tokens and are fully editable. The registry
|
|
143
160
|
items are pre-built into the package at `registry/r/*.json` (regenerate with
|
|
144
161
|
`npm run build:registry`; the output matches `shadcn build`).
|
|
@@ -153,24 +170,26 @@ declare the namespace in `components.json` for documentation / future HTTP hosti
|
|
|
153
170
|
```jsonc
|
|
154
171
|
// components.json
|
|
155
172
|
"registries": {
|
|
156
|
-
"@fa-m8-media": "./node_modules/@
|
|
173
|
+
"@fa-m8-media": "./node_modules/@mano8/astro-media-m8/registry/r/{name}.json"
|
|
157
174
|
}
|
|
158
175
|
```
|
|
159
176
|
|
|
160
177
|
### Items
|
|
161
178
|
|
|
162
|
-
| Item | `shadcn add` (run from the consumer project root) | registryDependencies | npm dependencies | Needs `@
|
|
179
|
+
| Item | `shadcn add` (run from the consumer project root) | registryDependencies | npm dependencies | Needs `@mano8/astro-media-m8`? |
|
|
163
180
|
| :-- | :-- | :-- | :-- | :-- |
|
|
164
|
-
| `
|
|
165
|
-
| `media-
|
|
166
|
-
| `media-
|
|
167
|
-
| `media-
|
|
168
|
-
| `admin-media-dashboard` | `npx shadcn add ./node_modules/@fa-m8/astro-media-m8/registry/r/admin-media-dashboard.json` | `tabs`, `media-dashboard-overview`, `media-maintenance-panel` | `lucide-react` | **yes** (`MediaProvider`, `RequireSuperuser`) |
|
|
181
|
+
| `media-storage-chart` | `npx shadcn add ./node_modules/@mano8/astro-media-m8/registry/r/media-storage-chart.json` | `chart` | `recharts` | no |
|
|
182
|
+
| `media-dashboard-overview` | `npx shadcn add ./node_modules/@mano8/astro-media-m8/registry/r/media-dashboard-overview.json` | `card`, `button`, `media-storage-chart`, `@mano8/astro-ui-m8/data-table`, `@mano8/astro-ui-m8/state-empty`, `@mano8/astro-ui-m8/state-error`, `@mano8/astro-ui-m8/state-loading`, `@mano8/astro-ui-m8/state-unauthorized` | `lucide-react`, `@tanstack/react-table` | **yes** (`useMediaAdmin`) |
|
|
183
|
+
| `media-maintenance-panel` | `npx shadcn add ./node_modules/@mano8/astro-media-m8/registry/r/media-maintenance-panel.json` | `card`, `button`, `alert-dialog`, `@mano8/astro-ui-m8/state-error`, `@mano8/astro-ui-m8/state-unauthorized` | `lucide-react` | **yes** (`useMediaAdmin`) |
|
|
184
|
+
| `admin-media-dashboard` | `npx shadcn add ./node_modules/@mano8/astro-media-m8/registry/r/admin-media-dashboard.json` | `tabs`, `@mano8/astro-ui-m8/state-unauthorized`, `media-dashboard-overview`, `media-maintenance-panel` | `lucide-react` | **yes** (`MediaProvider`, `RequireSuperuser`) |
|
|
169
185
|
|
|
170
186
|
`media-dashboard-overview` is the admin **landing** view (storage stat cards + a
|
|
171
|
-
per-category storage chart + a subscriptions
|
|
187
|
+
per-category storage chart + a subscriptions table built on the canonical
|
|
188
|
+
`astro-ui-m8` `data-table` block, with shared `astro-ui-m8` loading/error/empty/
|
|
189
|
+
unauthorized states and a delete row action).
|
|
172
190
|
The destructive operations (purge-stale / repair-orphans / purge-expired) are demoted
|
|
173
|
-
to `media-maintenance-panel`, each behind a shadcn `alert-dialog` confirmation
|
|
191
|
+
to `media-maintenance-panel`, each behind a shadcn `alert-dialog` confirmation and
|
|
192
|
+
sharing the canonical `astro-ui-m8` error/unauthorized states.
|
|
174
193
|
`admin-media-dashboard` is the full shell that wires both into a `Tabs` view (dashboard
|
|
175
194
|
first) inside the package's `MediaProvider` + `RequireSuperuser`; drop the two panels
|
|
176
195
|
into your own shell instead if you already own the media chrome (as fa-ui-m8 does).
|
|
@@ -181,12 +200,15 @@ Files land under `src/components/fa-media/` (the items' `target`), import shadcn
|
|
|
181
200
|
primitives via `@/components/ui/*`, and pull headless logic from the installed package.
|
|
182
201
|
The plugin package is intentionally **not** listed in item `dependencies` (it would make
|
|
183
202
|
`shadcn add` try to install an unpublished package); install it yourself as a peer.
|
|
203
|
+
Consumers should install the shared UI block first or let `shadcn` resolve it from
|
|
204
|
+
`./node_modules/@mano8/astro-ui-m8/registry/r/data-table.json`, which lands under
|
|
205
|
+
`@/components/m8-ui/*`.
|
|
184
206
|
|
|
185
207
|
### Consumer expectations
|
|
186
208
|
|
|
187
209
|
- shadcn configured with `style: radix-nova`, `baseColor: neutral`, `cssVariables: true`,
|
|
188
210
|
lucide icons, and Tailwind v4 tokens in `src/styles/global.css`.
|
|
189
|
-
- `@
|
|
211
|
+
- `@mano8/astro-media-m8` installed, plus its **required peer `@mano8/astro-auth-m8`** —
|
|
190
212
|
media-service only accepts fa-auth-m8 tokens, so a `MediaProvider` backed by a
|
|
191
213
|
fa-auth adapter must be in the tree and the signed-in user must be a superuser.
|
|
192
214
|
- Operator env: `PUBLIC_MEDIA_API_BASE` enables the media plugin; the integration injects
|
|
@@ -200,4 +222,4 @@ The plugin package is intentionally **not** listed in item `dependencies` (it wo
|
|
|
200
222
|
- `npm run typecheck` — `tsc --noEmit`
|
|
201
223
|
- `npm test` — Vitest with coverage (100% on the non-React runtime)
|
|
202
224
|
|
|
203
|
-
[`media-service-m8`]:
|
|
225
|
+
[`media-service-m8`]: https://github.com/mano8/media-service-m8
|
package/dist/src/integration.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { buildMediaRoutes } from "./runtime/routes.js";
|
|
2
2
|
import { buildMediaCspPolicy } from "./lib/csp.js";
|
|
3
3
|
const ROUTE_ENTRYPOINTS = {
|
|
4
|
-
upload: "@
|
|
5
|
-
library: "@
|
|
6
|
-
object: "@
|
|
7
|
-
presets: "@
|
|
8
|
-
admin: "@
|
|
4
|
+
upload: "@mano8/astro-media-m8/routes/upload.astro",
|
|
5
|
+
library: "@mano8/astro-media-m8/routes/library.astro",
|
|
6
|
+
object: "@mano8/astro-media-m8/routes/object/[id].astro",
|
|
7
|
+
presets: "@mano8/astro-media-m8/routes/presets.astro",
|
|
8
|
+
admin: "@mano8/astro-media-m8/routes/admin/media.astro"
|
|
9
9
|
};
|
|
10
|
-
const AUTH_INTEGRATION_NAME = "@
|
|
10
|
+
const AUTH_INTEGRATION_NAME = "@mano8/astro-auth-m8";
|
|
11
11
|
/**
|
|
12
12
|
* Warn when the official auth plugin is not registered before this one — order
|
|
13
13
|
* matters because the media adapter resolves the auth runtime at module load.
|
|
@@ -15,12 +15,12 @@ const AUTH_INTEGRATION_NAME = "@fa-m8/astro-auth-m8";
|
|
|
15
15
|
function checkAuthOrder(integrations, logger) {
|
|
16
16
|
const names = (integrations ?? []).map((entry) => entry?.name);
|
|
17
17
|
const authIndex = names.indexOf(AUTH_INTEGRATION_NAME);
|
|
18
|
-
const mediaIndex = names.indexOf("@
|
|
18
|
+
const mediaIndex = names.indexOf("@mano8/astro-media-m8");
|
|
19
19
|
if (authIndex === -1) {
|
|
20
20
|
logger?.warn(`auth.provider is "fa-auth-astro" but ${AUTH_INTEGRATION_NAME} is not in the integrations list`);
|
|
21
21
|
}
|
|
22
22
|
else if (mediaIndex !== -1 && authIndex > mediaIndex) {
|
|
23
|
-
logger?.warn(`${AUTH_INTEGRATION_NAME} should be listed before @
|
|
23
|
+
logger?.warn(`${AUTH_INTEGRATION_NAME} should be listed before @mano8/astro-media-m8`);
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
export default function faMedia(options = {}) {
|
|
@@ -37,7 +37,7 @@ export default function faMedia(options = {}) {
|
|
|
37
37
|
})
|
|
38
38
|
: "";
|
|
39
39
|
return {
|
|
40
|
-
name: "@
|
|
40
|
+
name: "@mano8/astro-media-m8",
|
|
41
41
|
hooks: {
|
|
42
42
|
"astro:config:setup": ({ injectRoute, addMiddleware, updateConfig, config, logger }) => {
|
|
43
43
|
updateConfig({
|
|
@@ -77,7 +77,7 @@ export default function faMedia(options = {}) {
|
|
|
77
77
|
}
|
|
78
78
|
}
|
|
79
79
|
if (options.guards?.middleware) {
|
|
80
|
-
addMiddleware({ order: "pre", entrypoint: "@
|
|
80
|
+
addMiddleware({ order: "pre", entrypoint: "@mano8/astro-media-m8/middleware" });
|
|
81
81
|
}
|
|
82
82
|
}
|
|
83
83
|
}
|
|
@@ -8,7 +8,7 @@ const DEFAULT_TOKEN_ENV = "MEDIA_INTERNAL_SERVICE_TOKEN";
|
|
|
8
8
|
*/
|
|
9
9
|
function assertServerOnly() {
|
|
10
10
|
if (typeof window !== "undefined") {
|
|
11
|
-
throw new Error("@
|
|
11
|
+
throw new Error("@mano8/astro-media-m8/internal-server must only be imported on the server");
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
function resolveServiceToken(envVar) {
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Narrow runtime contract the media plugin consumes for authentication.
|
|
3
3
|
*
|
|
4
4
|
* The media plugin never owns token storage or refresh logic; it delegates to
|
|
5
|
-
* whatever the host stack provides. `@
|
|
5
|
+
* whatever the host stack provides. `@mano8/astro-auth-m8` is the official
|
|
6
6
|
* provider, but any object that satisfies this shape works.
|
|
7
7
|
*/
|
|
8
8
|
export type MediaAuthAdapter = {
|
|
@@ -37,7 +37,7 @@ export type FaAuthBindings = {
|
|
|
37
37
|
onUnauthenticated?: (reason: unknown) => void;
|
|
38
38
|
};
|
|
39
39
|
/**
|
|
40
|
-
* Build the official adapter from `@
|
|
40
|
+
* Build the official adapter from `@mano8/astro-auth-m8` bindings. The bindings
|
|
41
41
|
* are injected by the consumer so the media plugin keeps the auth plugin as an
|
|
42
42
|
* optional peer and never statically imports it.
|
|
43
43
|
*/
|
|
@@ -27,7 +27,7 @@ export function createInMemoryAuthAdapter(initialToken = null) {
|
|
|
27
27
|
};
|
|
28
28
|
}
|
|
29
29
|
/**
|
|
30
|
-
* Build the official adapter from `@
|
|
30
|
+
* Build the official adapter from `@mano8/astro-auth-m8` bindings. The bindings
|
|
31
31
|
* are injected by the consumer so the media plugin keeps the auth plugin as an
|
|
32
32
|
* optional peer and never statically imports it.
|
|
33
33
|
*/
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export declare const MEDIA_SERVICE_M8_CONTRACT_ID = "media-service-m8";
|
|
2
|
-
export declare const MEDIA_SERVICE_M8_CONTRACT_VERSION = "
|
|
3
|
-
export declare const MEDIA_SERVICE_M8_CONTRACT: "media-service-m8@
|
|
4
|
-
export declare const MEDIA_SERVICE_M8_TESTED_SERVICE_VERSION = "0.0
|
|
5
|
-
export declare const MEDIA_SERVICE_M8_MIN_SERVICE_VERSION = "0.0
|
|
6
|
-
export declare const MEDIA_SERVICE_M8_MAX_SERVICE_VERSION_EXCLUSIVE = "0.
|
|
7
|
-
export declare const MEDIA_SERVICE_M8_SERVICE_VERSION_RANGE = ">=0.0
|
|
2
|
+
export declare const MEDIA_SERVICE_M8_CONTRACT_VERSION = "1.0";
|
|
3
|
+
export declare const MEDIA_SERVICE_M8_CONTRACT: "media-service-m8@1.0";
|
|
4
|
+
export declare const MEDIA_SERVICE_M8_TESTED_SERVICE_VERSION = "1.0.0";
|
|
5
|
+
export declare const MEDIA_SERVICE_M8_MIN_SERVICE_VERSION = "1.0.0";
|
|
6
|
+
export declare const MEDIA_SERVICE_M8_MAX_SERVICE_VERSION_EXCLUSIVE = "2.0.0";
|
|
7
|
+
export declare const MEDIA_SERVICE_M8_SERVICE_VERSION_RANGE = ">=1.0.0 <2.0.0";
|
|
8
8
|
export type MediaServiceM8CompatibilityStatus = "compatible" | "incompatible" | "unknown";
|
|
9
9
|
export type MediaServiceM8VersionMetadata = {
|
|
10
10
|
contract?: unknown;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compatibility.d.ts","sourceRoot":"","sources":["../../../src/runtime/compatibility.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,4BAA4B,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"compatibility.d.ts","sourceRoot":"","sources":["../../../src/runtime/compatibility.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,4BAA4B,qBAAqB,CAAC;AAC/D,eAAO,MAAM,iCAAiC,QAAQ,CAAC;AACvD,eAAO,MAAM,yBAAyB,wBAAkF,CAAC;AACzH,eAAO,MAAM,uCAAuC,UAAU,CAAC;AAC/D,eAAO,MAAM,oCAAoC,UAAU,CAAC;AAC5D,eAAO,MAAM,8CAA8C,UAAU,CAAC;AACtE,eAAO,MAAM,sCAAsC,mBAAiG,CAAC;AAErJ,MAAM,MAAM,iCAAiC,GAAG,YAAY,GAAG,cAAc,GAAG,SAAS,CAAC;AAE1F,MAAM,MAAM,6BAA6B,GAAG;IAG1C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IAEnC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,2BAA2B,GAAG;IACxC,MAAM,EAAE,iCAAiC,CAAC;IAC1C,gBAAgB,EAAE,OAAO,yBAAyB,CAAC;IACnD,2BAA2B,EAAE,OAAO,sCAAsC,CAAC;IAC3E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AA+BF,wBAAgB,wCAAwC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAIjF;AAED,wBAAgB,8BAA8B,CAC5C,QAAQ,GAAE,6BAAkC,GAC3C,2BAA2B,CAuD7B;AAED,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,6BAA6B,EACvC,YAAY,UAAO,GAClB,2BAA2B,CAM7B"}
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
export const MEDIA_SERVICE_M8_CONTRACT_ID = "media-service-m8";
|
|
2
|
-
|
|
3
|
-
// aspirational 1.0 — kept in lockstep with media-service-m8's CONTRACT_VERSION.
|
|
4
|
-
export const MEDIA_SERVICE_M8_CONTRACT_VERSION = "0.0";
|
|
2
|
+
export const MEDIA_SERVICE_M8_CONTRACT_VERSION = "1.0";
|
|
5
3
|
export const MEDIA_SERVICE_M8_CONTRACT = `${MEDIA_SERVICE_M8_CONTRACT_ID}@${MEDIA_SERVICE_M8_CONTRACT_VERSION}`;
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
export const
|
|
9
|
-
export const MEDIA_SERVICE_M8_MIN_SERVICE_VERSION = "0.0.10";
|
|
10
|
-
export const MEDIA_SERVICE_M8_MAX_SERVICE_VERSION_EXCLUSIVE = "0.1.0";
|
|
4
|
+
export const MEDIA_SERVICE_M8_TESTED_SERVICE_VERSION = "1.0.0";
|
|
5
|
+
export const MEDIA_SERVICE_M8_MIN_SERVICE_VERSION = "1.0.0";
|
|
6
|
+
export const MEDIA_SERVICE_M8_MAX_SERVICE_VERSION_EXCLUSIVE = "2.0.0";
|
|
11
7
|
export const MEDIA_SERVICE_M8_SERVICE_VERSION_RANGE = `>=${MEDIA_SERVICE_M8_MIN_SERVICE_VERSION} <${MEDIA_SERVICE_M8_MAX_SERVICE_VERSION_EXCLUSIVE}`;
|
|
12
8
|
function stringValue(value) {
|
|
13
9
|
return typeof value === "string" && value.trim() ? value.trim() : undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../../../src/runtime/compatibility.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,4BAA4B,GAAG,kBAAkB,CAAC;AAC/D,
|
|
1
|
+
{"version":3,"file":"compatibility.js","sourceRoot":"","sources":["../../../src/runtime/compatibility.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ export type UseMediaAdmin = {
|
|
|
12
12
|
subscriptions: SubscriptionListResponse | null;
|
|
13
13
|
loading: boolean;
|
|
14
14
|
error: unknown;
|
|
15
|
+
loadAll: () => Promise<void>;
|
|
15
16
|
loadStats: () => Promise<void>;
|
|
16
17
|
loadStale: () => Promise<void>;
|
|
17
18
|
purgeStale: () => Promise<PurgeStaleResponse>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMediaAdmin.d.ts","sourceRoot":"","sources":["../../../../src/runtime/hooks/useMediaAdmin.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAC;AAc/B,OAAO,KAAK,EACV,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,eAAe,CAAC;AAEvB,KAAK,kBAAkB,GAAG,iBAAiB,CAAC,kBAAkB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAC/E,KAAK,cAAc,GAAG,iBAAiB,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACxE,KAAK,oBAAoB,GAAG,iBAAiB,CAAC,iBAAiB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAChF,KAAK,0BAA0B,GAAG,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAE3E,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACnC,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACnC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,UAAU,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC9C,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACpD,mBAAmB,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACtD,iBAAiB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,cAAc,EAAE,cAAc,CAAC;IAC/B,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,0BAA0B,EAAE,0BAA0B,CAAC;CACxD,CAAC;AAeF,wBAAgB,aAAa,IAAI,aAAa,
|
|
1
|
+
{"version":3,"file":"useMediaAdmin.d.ts","sourceRoot":"","sources":["../../../../src/runtime/hooks/useMediaAdmin.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,uBAAuB,CAAC;AAc/B,OAAO,KAAK,EACV,iBAAiB,EACjB,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,eAAe,CAAC;AAEvB,KAAK,kBAAkB,GAAG,iBAAiB,CAAC,kBAAkB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAC/E,KAAK,cAAc,GAAG,iBAAiB,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACxE,KAAK,oBAAoB,GAAG,iBAAiB,CAAC,iBAAiB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAChF,KAAK,0BAA0B,GAAG,iBAAiB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;AAE3E,MAAM,MAAM,aAAa,GAAG;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACnC,KAAK,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACnC,OAAO,EAAE,YAAY,GAAG,IAAI,CAAC;IAC7B,aAAa,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,UAAU,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC9C,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC;IACpD,mBAAmB,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACtD,iBAAiB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,cAAc,EAAE,cAAc,CAAC;IAC/B,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,0BAA0B,EAAE,0BAA0B,CAAC;CACxD,CAAC;AAeF,wBAAgB,aAAa,IAAI,aAAa,CA+I7C"}
|
|
@@ -101,6 +101,9 @@ export function useMediaAdmin() {
|
|
|
101
101
|
const loadSubscriptions = useCallback(async () => {
|
|
102
102
|
await refetchOrThrow(refetchSubscriptions);
|
|
103
103
|
}, [refetchSubscriptions]);
|
|
104
|
+
const loadAll = useCallback(async () => {
|
|
105
|
+
await Promise.all([loadStats(), loadStale(), loadOrphans(), loadSubscriptions()]);
|
|
106
|
+
}, [loadOrphans, loadStats, loadStale, loadSubscriptions]);
|
|
104
107
|
const purgeStale = useCallback(() => purgeStaleAsync(), [purgeStaleAsync]);
|
|
105
108
|
const repair = useCallback((confirm) => repairAsync(confirm), [repairAsync]);
|
|
106
109
|
const purgeExpiredObjects = useCallback(() => purgeExpiredAsync(), [purgeExpiredAsync]);
|
|
@@ -128,6 +131,7 @@ export function useMediaAdmin() {
|
|
|
128
131
|
purgeExpiredMutation.error ??
|
|
129
132
|
removeSubscriptionMutation.error ??
|
|
130
133
|
null,
|
|
134
|
+
loadAll,
|
|
131
135
|
loadStats,
|
|
132
136
|
loadStale,
|
|
133
137
|
purgeStale,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMediaAdmin.js","sourceRoot":"","sources":["../../../../src/runtime/hooks/useMediaAdmin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EACL,WAAW,EACX,QAAQ,EACR,cAAc,EAGf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"useMediaAdmin.js","sourceRoot":"","sources":["../../../../src/runtime/hooks/useMediaAdmin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaProvider.d.ts","sourceRoot":"","sources":["../../../../src/runtime/react/MediaProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAAkB,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE/E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAwBF,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,MAAM,EACN,OAAO,EACR,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC,GAAG;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAA;KAAE,CAAC;IAC7G,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B,+
|
|
1
|
+
{"version":3,"file":"MediaProvider.d.ts","sourceRoot":"","sources":["../../../../src/runtime/react/MediaProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAAkB,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAuB,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE/E,MAAM,MAAM,iBAAiB,GAAG;IAC9B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAwBF,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,MAAM,EACN,OAAO,EACR,EAAE;IACD,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC,GAAG;QAAE,OAAO,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAA;KAAE,CAAC;IAC7G,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B,+BAoDA;AAED,wBAAgB,eAAe,IAAI,iBAAiB,CAInD"}
|
|
@@ -23,12 +23,10 @@ function readAdapterUser(adapter) {
|
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
export function MediaProvider({ children, config, adapter }) {
|
|
26
|
+
if (config)
|
|
27
|
+
configureMedia(config);
|
|
26
28
|
const resolved = adapter ?? getMediaAuthAdapter();
|
|
27
29
|
const [authState, setAuthState] = useState(() => readAdapterUser(resolved));
|
|
28
|
-
useEffect(() => {
|
|
29
|
-
if (config)
|
|
30
|
-
configureMedia(config);
|
|
31
|
-
}, [config]);
|
|
32
30
|
useEffect(() => {
|
|
33
31
|
if (!resolved.getUser) {
|
|
34
32
|
setAuthState({ user: null, loading: false });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaProvider.js","sourceRoot":"","sources":["../../../../src/runtime/react/MediaProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,aAAa,EACb,UAAU,EACV,SAAS,EACT,OAAO,EACP,QAAQ,EAET,MAAM,OAAO,CAAC;AACf,OAAO,EAAE,cAAc,EAA2B,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAyB,MAAM,mBAAmB,CAAC;AAS/E,MAAM,YAAY,GAAG,aAAa,CAA2B,IAAI,CAAC,CAAC;AAEnE,SAAS,aAAa,CAAC,KAAc;IACnC,OAAO,OAAO,CACZ,KAAK;QACH,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,UAAU,CAAC;QAC1D,MAAM,IAAI,KAAK;QACf,OAAQ,KAA4B,CAAC,IAAI,KAAK,UAAU,CAC3D,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,OAAyB;IAChD,IAAI,CAAC,OAAO,CAAC,OAAO;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5D,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QAChC,IAAI,aAAa,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;QAC/D,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACxC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,EAC5B,QAAQ,EACR,MAAM,EACN,OAAO,EAKR;IACC,MAAM,QAAQ,GAAG,OAAO,IAAI,mBAAmB,EAAE,CAAC;IAClD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE5E,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,
|
|
1
|
+
{"version":3,"file":"MediaProvider.js","sourceRoot":"","sources":["../../../../src/runtime/react/MediaProvider.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mano8/astro-media-m8",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.0.0",
|
|
4
4
|
"description": "Astro integration and headless client for media-service-m8.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -52,12 +52,16 @@
|
|
|
52
52
|
"scripts": {
|
|
53
53
|
"build": "tsc -p tsconfig.json && npm run build:registry",
|
|
54
54
|
"build:registry": "node scripts/build-registry.mjs",
|
|
55
|
+
"verify:starter-routes": "node scripts/verify-starter-routes.mjs",
|
|
55
56
|
"test": "vitest run --coverage",
|
|
56
57
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
57
58
|
"test:unit": "vitest run"
|
|
58
59
|
},
|
|
60
|
+
"dependencies": {
|
|
61
|
+
"@mano8/astro-ui-m8": "^1.0.0"
|
|
62
|
+
},
|
|
59
63
|
"peerDependencies": {
|
|
60
|
-
"@mano8/astro-auth-m8": "^
|
|
64
|
+
"@mano8/astro-auth-m8": "^1.0.0",
|
|
61
65
|
"@tanstack/react-query": "^5.101.1",
|
|
62
66
|
"astro": "^5.0.0 || ^6.0.0",
|
|
63
67
|
"react": "^18.0.0 || ^19.0.0",
|
|
@@ -73,7 +77,8 @@
|
|
|
73
77
|
}
|
|
74
78
|
},
|
|
75
79
|
"devDependencies": {
|
|
76
|
-
"@
|
|
80
|
+
"@astrojs/react": "^5.0.7",
|
|
81
|
+
"@mano8/astro-auth-m8": "^1.0.0",
|
|
77
82
|
"@tanstack/react-query": "^5.101.1",
|
|
78
83
|
"@types/node": "^22.0.0",
|
|
79
84
|
"@types/react": "^19.0.0",
|
|
@@ -90,8 +95,8 @@
|
|
|
90
95
|
"esbuild": "^0.28.1"
|
|
91
96
|
},
|
|
92
97
|
"mediaServiceM8": {
|
|
93
|
-
"contract": "media-service-m8@
|
|
94
|
-
"testedServiceVersion": "0.0
|
|
95
|
-
"serviceVersionRange": ">=0.0
|
|
98
|
+
"contract": "media-service-m8@1.0",
|
|
99
|
+
"testedServiceVersion": "1.0.0",
|
|
100
|
+
"serviceVersionRange": ">=1.0.0 <2.0.0"
|
|
96
101
|
}
|
|
97
102
|
}
|
|
@@ -3,19 +3,20 @@
|
|
|
3
3
|
"name": "admin-media-dashboard",
|
|
4
4
|
"type": "registry:component",
|
|
5
5
|
"title": "Admin Media Dashboard",
|
|
6
|
-
"description": "Media admin view whose first/landing tab is the storage dashboard and whose destructive ops live in a guarded Maintenance tab; wraps the package's MediaProvider + RequireSuperuser. Requires @
|
|
6
|
+
"description": "Media admin view whose first/landing tab is the storage dashboard and whose destructive ops live in a guarded Maintenance tab; wraps the package's MediaProvider + RequireSuperuser. Requires @mano8/astro-media-m8 (and a fa-auth-m8 token adapter) installed.",
|
|
7
7
|
"dependencies": [
|
|
8
8
|
"lucide-react"
|
|
9
9
|
],
|
|
10
10
|
"registryDependencies": [
|
|
11
11
|
"tabs",
|
|
12
|
-
"./node_modules/@
|
|
13
|
-
"./node_modules/@
|
|
12
|
+
"./node_modules/@mano8/astro-ui-m8/registry/r/state-unauthorized.json",
|
|
13
|
+
"./node_modules/@mano8/astro-media-m8/registry/r/media-dashboard-overview.json",
|
|
14
|
+
"./node_modules/@mano8/astro-media-m8/registry/r/media-maintenance-panel.json"
|
|
14
15
|
],
|
|
15
16
|
"files": [
|
|
16
17
|
{
|
|
17
18
|
"path": "registry/blocks/admin/admin-media-dashboard.tsx",
|
|
18
|
-
"content": "\"use client\";\
|
|
19
|
+
"content": "\"use client\";\n\n// Media admin view whose FIRST/landing tab is the storage dashboard; the\n// destructive operations are demoted to a guarded \"Maintenance\" tab. Headless\n// state comes from the package (@mano8/astro-media-m8/react + /hooks); this file\n// is only the shadcn skin, copied into the consumer via the @fa-m8-media\n// registry. Because media-service only accepts fa-auth-m8 tokens, the auth\n// package must also be present (pass its adapter via `adapter`). Edit per app.\nimport * as React from \"react\";\nimport { LayoutDashboard, Wrench } from \"lucide-react\";\nimport {\n MediaProvider,\n RequireSuperuser,\n type MediaContextValue,\n} from \"@mano8/astro-media-m8/react\";\n\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/ui/tabs\";\nimport {\n MediaDashboardOverview,\n type MediaDashboardOverviewLabels,\n} from \"@/components/fa-media/media-dashboard-overview\";\nimport {\n MediaMaintenancePanel,\n type MediaMaintenanceLabels,\n} from \"@/components/fa-media/media-maintenance-panel\";\nimport { StateUnauthorized } from \"@/components/m8-ui/state-unauthorized\";\n\nexport interface AdminMediaDashboardLabels {\n dashboardTab: string;\n maintenanceTab: string;\n forbidden: string;\n overview: Partial<MediaDashboardOverviewLabels>;\n maintenance: Partial<MediaMaintenanceLabels>;\n}\n\nconst DEFAULT_LABELS: AdminMediaDashboardLabels = {\n dashboardTab: \"Dashboard\",\n maintenanceTab: \"Maintenance\",\n forbidden: \"You need administrator access to view this page.\",\n overview: {},\n maintenance: {},\n};\n\nexport interface AdminMediaDashboardProps {\n /** Media runtime config (apiBase/v1Base/legacyBase/adminRole). */\n config?: React.ComponentProps<typeof MediaProvider>[\"config\"];\n /** fa-auth-backed media auth adapter (media only accepts fa-auth-m8 tokens). */\n adapter?: MediaContextValue[\"adapter\"];\n labels?: Partial<AdminMediaDashboardLabels>;\n}\n\nfunction AdminMediaShell({ labels }: { labels: AdminMediaDashboardLabels }) {\n return (\n <RequireSuperuser\n fallback={\n <div className=\"not-content mx-auto w-full max-w-md py-10\">\n <StateUnauthorized\n title=\"Administrator access required\"\n description={labels.forbidden}\n />\n </div>\n }\n >\n <Tabs defaultValue=\"dashboard\" className=\"not-content mx-auto w-full max-w-6xl space-y-4\">\n <TabsList className=\"flex h-auto flex-wrap justify-start gap-1\">\n <TabsTrigger value=\"dashboard\" className=\"gap-2\">\n <LayoutDashboard className=\"size-4\" />\n {labels.dashboardTab}\n </TabsTrigger>\n <TabsTrigger value=\"maintenance\" className=\"gap-2\">\n <Wrench className=\"size-4\" />\n {labels.maintenanceTab}\n </TabsTrigger>\n </TabsList>\n\n <TabsContent value=\"dashboard\">\n <MediaDashboardOverview labels={labels.overview} />\n </TabsContent>\n <TabsContent value=\"maintenance\">\n <MediaMaintenancePanel labels={labels.maintenance} />\n </TabsContent>\n </Tabs>\n </RequireSuperuser>\n );\n}\n\nexport default function AdminMediaDashboard({\n config,\n adapter,\n labels,\n}: AdminMediaDashboardProps) {\n const resolved: AdminMediaDashboardLabels = {\n ...DEFAULT_LABELS,\n ...labels,\n overview: { ...DEFAULT_LABELS.overview, ...labels?.overview },\n maintenance: { ...DEFAULT_LABELS.maintenance, ...labels?.maintenance },\n };\n return (\n <MediaProvider config={config} adapter={adapter}>\n <AdminMediaShell labels={resolved} />\n </MediaProvider>\n );\n}\n",
|
|
19
20
|
"type": "registry:component",
|
|
20
21
|
"target": "components/fa-media/admin-media-dashboard.tsx"
|
|
21
22
|
}
|