@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 CHANGED
@@ -1,4 +1,6 @@
1
- # @fa-m8/astro-media-m8
1
+ # @mano8/astro-media-m8
2
+
3
+ ![CI/CD](https://github.com/mano8/astro-media-m8/actions/workflows/CI.yaml/badge.svg?branch=main)
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
- Pinned to `media-service-m8@0.0` (supported service-version range
10
- `>=0.0.10 <0.1.0`; see `mediaServiceM8` in `package.json`).
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@0.0` API contract and was tested
15
- against `media-service-m8` service version `0.0.10`. Supported backend service
16
- versions are `>=0.0.10 <0.1.0` (the floor is the first release supporting the
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 `@fa-m8/astro-media-m8/compatibility`.
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 "@fa-m8/astro-media-m8/compatibility";
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 @fa-m8/astro-media-m8 @mano8/astro-auth-m8 zod
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). `react`/`react-dom` are optional — only `./react`, `./hooks` and the
46
- starter views need them.
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 "@fa-m8/astro-media-m8";
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 "@fa-m8/astro-media-m8/auth-adapter";
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 "@fa-m8/astro-media-m8/api";
86
- import { createMediaUploadController } from "@fa-m8/astro-media-m8/upload";
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: `@fa-m8/astro-media-m8/internal-server` throws
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
- (`@fa-m8/astro-media-m8/react` + `/hooks`); only the **skin** is copied into the
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/@fa-m8/astro-media-m8/registry/r/{name}.json"
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 `@fa-m8/astro-media-m8`? |
179
+ | Item | `shadcn add` (run from the consumer project root) | registryDependencies | npm dependencies | Needs `@mano8/astro-media-m8`? |
163
180
  | :-- | :-- | :-- | :-- | :-- |
164
- | `data-table` | `npx shadcn add ./node_modules/@fa-m8/astro-media-m8/registry/r/data-table.json` | `table`, `button`, `input` | `@tanstack/react-table` | no |
165
- | `media-storage-chart` | `npx shadcn add ./node_modules/@fa-m8/astro-media-m8/registry/r/media-storage-chart.json` | `chart` | `recharts` | no |
166
- | `media-dashboard-overview` | `npx shadcn add ./node_modules/@fa-m8/astro-media-m8/registry/r/media-dashboard-overview.json` | `card`, `button`, `skeleton`, `media-storage-chart`, `data-table` | `lucide-react`, `@tanstack/react-table` | **yes** (`useMediaAdmin`) |
167
- | `media-maintenance-panel` | `npx shadcn add ./node_modules/@fa-m8/astro-media-m8/registry/r/media-maintenance-panel.json` | `card`, `button`, `alert-dialog` | `lucide-react` | **yes** (`useMediaAdmin`) |
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 `data-table` with a delete row action).
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
- - `@fa-m8/astro-media-m8` installed, plus its **required peer `@mano8/astro-auth-m8`** —
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`]: ../media-service-m8
225
+ [`media-service-m8`]: https://github.com/mano8/media-service-m8
@@ -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: "@fa-m8/astro-media-m8/routes/upload.astro",
5
- library: "@fa-m8/astro-media-m8/routes/library.astro",
6
- object: "@fa-m8/astro-media-m8/routes/object/[id].astro",
7
- presets: "@fa-m8/astro-media-m8/routes/presets.astro",
8
- admin: "@fa-m8/astro-media-m8/routes/admin/media.astro"
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 = "@fa-m8/astro-auth-m8";
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("@fa-m8/astro-media-m8");
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 @fa-m8/astro-media-m8`);
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: "@fa-m8/astro-media-m8",
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: "@fa-m8/astro-media-m8/middleware" });
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("@fa-m8/astro-media-m8/internal-server must only be imported on the server");
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. `@fa-m8/astro-auth-m8` is the official
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 `@fa-m8/astro-auth-m8` bindings. The bindings
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 `@fa-m8/astro-auth-m8` bindings. The bindings
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 = "0.0";
3
- export declare const MEDIA_SERVICE_M8_CONTRACT: "media-service-m8@0.0";
4
- export declare const MEDIA_SERVICE_M8_TESTED_SERVICE_VERSION = "0.0.10";
5
- export declare const MEDIA_SERVICE_M8_MIN_SERVICE_VERSION = "0.0.10";
6
- export declare const MEDIA_SERVICE_M8_MAX_SERVICE_VERSION_EXCLUSIVE = "0.1.0";
7
- export declare const MEDIA_SERVICE_M8_SERVICE_VERSION_RANGE = ">=0.0.10 <0.1.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;AAG/D,eAAO,MAAM,iCAAiC,QAAQ,CAAC;AACvD,eAAO,MAAM,yBAAyB,wBAAkF,CAAC;AAGzH,eAAO,MAAM,uCAAuC,WAAW,CAAC;AAChE,eAAO,MAAM,oCAAoC,WAAW,CAAC;AAC7D,eAAO,MAAM,8CAA8C,UAAU,CAAC;AACtE,eAAO,MAAM,sCAAsC,oBAAiG,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
+ {"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
- // Pre-1.0 contract: tracks the service package major.minor (0.0.x), not an
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
- // 0.0.10 is the first media-service-m8 release supporting the media library's
7
- // filename/category/status server-side sorting contract.
8
- export const MEDIA_SERVICE_M8_TESTED_SERVICE_VERSION = "0.0.10";
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":"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"}
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,CA2I7C"}
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":"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"}
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,+BAsDA;AAED,wBAAgB,eAAe,IAAI,iBAAiB,CAInD"}
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,MAAM;YAAE,cAAc,CAAC,MAAM,CAAC,CAAC;IACrC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7C,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1B,YAAY,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC9C,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,YAAY,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC3D,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;iBACnB,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;gBACjB,IAAI,CAAC,SAAS;oBAAE,YAAY,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YACnE,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,EAAE;gBACV,IAAI,CAAC,SAAS;oBAAE,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAC/D,CAAC,CAAC,CAAC;QACP,CAAC;QAAC,MAAM,CAAC;YACP,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAC;QACnB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,MAAM,gBAAgB,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC;IAC/E,MAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAErE,MAAM,KAAK,GAAG,OAAO,CACnB,GAAG,EAAE,CAAC,CAAC;QACL,OAAO,EAAE,QAAQ;QACjB,IAAI;QACJ,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC;QAClD,OAAO;KACR,CAAC,EACF,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,CAC1B,CAAC;IAEF,OAAO,KAAC,YAAY,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,YAAG,QAAQ,GAAyB,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,MAAM,OAAO,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;IACzC,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACnF,OAAO,OAAO,CAAC;AACjB,CAAC"}
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": "0.1.0-alpha.1",
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": "^0.1.0-alpha.1",
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
- "@mano8/astro-auth-m8": "^0.1.0-alpha.1",
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@0.0",
94
- "testedServiceVersion": "0.0.10",
95
- "serviceVersionRange": ">=0.0.10 <0.1.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 @fa-m8/astro-media-m8 (and a fa-auth-m8 token adapter) installed.",
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/@fa-m8/astro-media-m8/registry/r/media-dashboard-overview.json",
13
- "./node_modules/@fa-m8/astro-media-m8/registry/r/media-maintenance-panel.json"
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\";\r\n\r\n// Media admin view whose FIRST/landing tab is the storage dashboard; the\r\n// destructive operations are demoted to a guarded \"Maintenance\" tab. Headless\r\n// state comes from the package (@fa-m8/astro-media-m8/react + /hooks); this file\r\n// is only the shadcn skin, copied into the consumer via the @fa-m8-media\r\n// registry. Because media-service only accepts fa-auth-m8 tokens, the auth\r\n// package must also be present (pass its adapter via `adapter`). Edit per app.\r\nimport * as React from \"react\";\r\nimport { LayoutDashboard, Wrench } from \"lucide-react\";\r\nimport {\r\n MediaProvider,\r\n RequireSuperuser,\r\n type MediaContextValue,\r\n} from \"@fa-m8/astro-media-m8/react\";\r\n\r\nimport { Tabs, TabsContent, TabsList, TabsTrigger } from \"@/components/ui/tabs\";\r\nimport {\r\n MediaDashboardOverview,\r\n type MediaDashboardOverviewLabels,\r\n} from \"@/components/fa-media/media-dashboard-overview\";\r\nimport {\r\n MediaMaintenancePanel,\r\n type MediaMaintenanceLabels,\r\n} from \"@/components/fa-media/media-maintenance-panel\";\r\n\r\nexport interface AdminMediaDashboardLabels {\r\n dashboardTab: string;\r\n maintenanceTab: string;\r\n forbidden: string;\r\n overview: Partial<MediaDashboardOverviewLabels>;\r\n maintenance: Partial<MediaMaintenanceLabels>;\r\n}\r\n\r\nconst DEFAULT_LABELS: AdminMediaDashboardLabels = {\r\n dashboardTab: \"Dashboard\",\r\n maintenanceTab: \"Maintenance\",\r\n forbidden: \"You need administrator access to view this page.\",\r\n overview: {},\r\n maintenance: {},\r\n};\r\n\r\nexport interface AdminMediaDashboardProps {\r\n /** Media runtime config (apiBase/v1Base/legacyBase/adminRole). */\r\n config?: React.ComponentProps<typeof MediaProvider>[\"config\"];\r\n /** fa-auth-backed media auth adapter (media only accepts fa-auth-m8 tokens). */\r\n adapter?: MediaContextValue[\"adapter\"];\r\n labels?: Partial<AdminMediaDashboardLabels>;\r\n}\r\n\r\nfunction AdminMediaShell({ labels }: { labels: AdminMediaDashboardLabels }) {\r\n return (\r\n <RequireSuperuser\r\n fallback={\r\n <div className=\"not-content mx-auto w-full max-w-md py-10 text-center text-sm text-muted-foreground\">\r\n {labels.forbidden}\r\n </div>\r\n }\r\n >\r\n <Tabs defaultValue=\"dashboard\" className=\"not-content mx-auto w-full max-w-6xl space-y-4\">\r\n <TabsList className=\"flex h-auto flex-wrap justify-start gap-1\">\r\n <TabsTrigger value=\"dashboard\" className=\"gap-2\">\r\n <LayoutDashboard className=\"size-4\" />\r\n {labels.dashboardTab}\r\n </TabsTrigger>\r\n <TabsTrigger value=\"maintenance\" className=\"gap-2\">\r\n <Wrench className=\"size-4\" />\r\n {labels.maintenanceTab}\r\n </TabsTrigger>\r\n </TabsList>\r\n\r\n <TabsContent value=\"dashboard\">\r\n <MediaDashboardOverview labels={labels.overview} />\r\n </TabsContent>\r\n <TabsContent value=\"maintenance\">\r\n <MediaMaintenancePanel labels={labels.maintenance} />\r\n </TabsContent>\r\n </Tabs>\r\n </RequireSuperuser>\r\n );\r\n}\r\n\r\nexport default function AdminMediaDashboard({\r\n config,\r\n adapter,\r\n labels,\r\n}: AdminMediaDashboardProps) {\r\n const resolved: AdminMediaDashboardLabels = {\r\n ...DEFAULT_LABELS,\r\n ...labels,\r\n overview: { ...DEFAULT_LABELS.overview, ...labels?.overview },\r\n maintenance: { ...DEFAULT_LABELS.maintenance, ...labels?.maintenance },\r\n };\r\n return (\r\n <MediaProvider config={config} adapter={adapter}>\r\n <AdminMediaShell labels={resolved} />\r\n </MediaProvider>\r\n );\r\n}\r\n",
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
  }