@mano8/astro-media-m8 1.1.0 → 2.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.
Files changed (123) hide show
  1. package/README.md +54 -11
  2. package/dist/src/integration.d.ts.map +1 -1
  3. package/dist/src/integration.js +1 -0
  4. package/dist/src/integration.js.map +1 -1
  5. package/dist/src/runtime/api/categories.d.ts +14 -8
  6. package/dist/src/runtime/api/categories.d.ts.map +1 -1
  7. package/dist/src/runtime/api/categories.js +21 -8
  8. package/dist/src/runtime/api/categories.js.map +1 -1
  9. package/dist/src/runtime/api/index.d.ts +8 -0
  10. package/dist/src/runtime/api/index.d.ts.map +1 -1
  11. package/dist/src/runtime/api/index.js +8 -0
  12. package/dist/src/runtime/api/index.js.map +1 -1
  13. package/dist/src/runtime/api/transfer.d.ts +19 -0
  14. package/dist/src/runtime/api/transfer.d.ts.map +1 -0
  15. package/dist/src/runtime/api/transfer.js +48 -0
  16. package/dist/src/runtime/api/transfer.js.map +1 -0
  17. package/dist/src/runtime/client.d.ts.map +1 -1
  18. package/dist/src/runtime/client.js +7 -1
  19. package/dist/src/runtime/client.js.map +1 -1
  20. package/dist/src/runtime/compatibility.d.ts +6 -6
  21. package/dist/src/runtime/compatibility.d.ts.map +1 -1
  22. package/dist/src/runtime/compatibility.js +59 -7
  23. package/dist/src/runtime/compatibility.js.map +1 -1
  24. package/dist/src/runtime/errors.d.ts +20 -2
  25. package/dist/src/runtime/errors.d.ts.map +1 -1
  26. package/dist/src/runtime/errors.js +53 -2
  27. package/dist/src/runtime/errors.js.map +1 -1
  28. package/dist/src/runtime/hooks/index.d.ts +2 -0
  29. package/dist/src/runtime/hooks/index.d.ts.map +1 -1
  30. package/dist/src/runtime/hooks/index.js +2 -0
  31. package/dist/src/runtime/hooks/index.js.map +1 -1
  32. package/dist/src/runtime/hooks/useMediaCategories.d.ts +30 -0
  33. package/dist/src/runtime/hooks/useMediaCategories.d.ts.map +1 -0
  34. package/dist/src/runtime/hooks/useMediaCategories.js +56 -0
  35. package/dist/src/runtime/hooks/useMediaCategories.js.map +1 -0
  36. package/dist/src/runtime/hooks/useMediaObjects.d.ts.map +1 -1
  37. package/dist/src/runtime/hooks/useMediaObjects.js +14 -2
  38. package/dist/src/runtime/hooks/useMediaObjects.js.map +1 -1
  39. package/dist/src/runtime/hooks/useMediaTransfer.d.ts +42 -0
  40. package/dist/src/runtime/hooks/useMediaTransfer.d.ts.map +1 -0
  41. package/dist/src/runtime/hooks/useMediaTransfer.js +106 -0
  42. package/dist/src/runtime/hooks/useMediaTransfer.js.map +1 -0
  43. package/dist/src/runtime/queryKeys.d.ts +2 -0
  44. package/dist/src/runtime/queryKeys.d.ts.map +1 -1
  45. package/dist/src/runtime/queryKeys.js +2 -0
  46. package/dist/src/runtime/queryKeys.js.map +1 -1
  47. package/dist/src/runtime/react/CategoryManager.d.ts +10 -0
  48. package/dist/src/runtime/react/CategoryManager.d.ts.map +1 -0
  49. package/dist/src/runtime/react/CategoryManager.js +194 -0
  50. package/dist/src/runtime/react/CategoryManager.js.map +1 -0
  51. package/dist/src/runtime/react/CategoryMultiSelect.d.ts +73 -0
  52. package/dist/src/runtime/react/CategoryMultiSelect.d.ts.map +1 -0
  53. package/dist/src/runtime/react/CategoryMultiSelect.js +179 -0
  54. package/dist/src/runtime/react/CategoryMultiSelect.js.map +1 -0
  55. package/dist/src/runtime/react/MediaCategoryTreePane.d.ts +22 -0
  56. package/dist/src/runtime/react/MediaCategoryTreePane.d.ts.map +1 -0
  57. package/dist/src/runtime/react/MediaCategoryTreePane.js +244 -0
  58. package/dist/src/runtime/react/MediaCategoryTreePane.js.map +1 -0
  59. package/dist/src/runtime/react/MediaErrorBoundary.d.ts +53 -0
  60. package/dist/src/runtime/react/MediaErrorBoundary.d.ts.map +1 -0
  61. package/dist/src/runtime/react/MediaErrorBoundary.js +58 -0
  62. package/dist/src/runtime/react/MediaErrorBoundary.js.map +1 -0
  63. package/dist/src/runtime/react/MediaLibrary.d.ts +16 -1
  64. package/dist/src/runtime/react/MediaLibrary.d.ts.map +1 -1
  65. package/dist/src/runtime/react/MediaLibrary.js +75 -110
  66. package/dist/src/runtime/react/MediaLibrary.js.map +1 -1
  67. package/dist/src/runtime/react/MediaObjectViews.d.ts +47 -0
  68. package/dist/src/runtime/react/MediaObjectViews.d.ts.map +1 -0
  69. package/dist/src/runtime/react/MediaObjectViews.js +131 -0
  70. package/dist/src/runtime/react/MediaObjectViews.js.map +1 -0
  71. package/dist/src/runtime/react/MediaTransferPanel.d.ts +17 -0
  72. package/dist/src/runtime/react/MediaTransferPanel.d.ts.map +1 -0
  73. package/dist/src/runtime/react/MediaTransferPanel.js +93 -0
  74. package/dist/src/runtime/react/MediaTransferPanel.js.map +1 -0
  75. package/dist/src/runtime/react/MediaUploadDropzone.d.ts +36 -1
  76. package/dist/src/runtime/react/MediaUploadDropzone.d.ts.map +1 -1
  77. package/dist/src/runtime/react/MediaUploadDropzone.js +63 -3
  78. package/dist/src/runtime/react/MediaUploadDropzone.js.map +1 -1
  79. package/dist/src/runtime/react/ObjectDetail.d.ts.map +1 -1
  80. package/dist/src/runtime/react/ObjectDetail.js +51 -1
  81. package/dist/src/runtime/react/ObjectDetail.js.map +1 -1
  82. package/dist/src/runtime/react/categoryBranch.d.ts +38 -0
  83. package/dist/src/runtime/react/categoryBranch.d.ts.map +1 -0
  84. package/dist/src/runtime/react/categoryBranch.js +37 -0
  85. package/dist/src/runtime/react/categoryBranch.js.map +1 -0
  86. package/dist/src/runtime/react/default-ui/index.d.ts +6 -2
  87. package/dist/src/runtime/react/default-ui/index.d.ts.map +1 -1
  88. package/dist/src/runtime/react/default-ui/index.js +14 -9
  89. package/dist/src/runtime/react/default-ui/index.js.map +1 -1
  90. package/dist/src/runtime/react/index.d.ts +5 -2
  91. package/dist/src/runtime/react/index.d.ts.map +1 -1
  92. package/dist/src/runtime/react/index.js +3 -0
  93. package/dist/src/runtime/react/index.js.map +1 -1
  94. package/dist/src/runtime/react/mediaLibraryLabels.d.ts +93 -0
  95. package/dist/src/runtime/react/mediaLibraryLabels.d.ts.map +1 -0
  96. package/dist/src/runtime/react/mediaLibraryLabels.js +100 -0
  97. package/dist/src/runtime/react/mediaLibraryLabels.js.map +1 -0
  98. package/dist/src/runtime/react/mediaLibraryStyles.d.ts +44 -0
  99. package/dist/src/runtime/react/mediaLibraryStyles.d.ts.map +1 -0
  100. package/dist/src/runtime/react/mediaLibraryStyles.js +82 -0
  101. package/dist/src/runtime/react/mediaLibraryStyles.js.map +1 -0
  102. package/dist/src/runtime/routes.d.ts +2 -0
  103. package/dist/src/runtime/routes.d.ts.map +1 -1
  104. package/dist/src/runtime/routes.js +2 -0
  105. package/dist/src/runtime/routes.js.map +1 -1
  106. package/dist/src/runtime/schemas.d.ts +265 -0
  107. package/dist/src/runtime/schemas.d.ts.map +1 -1
  108. package/dist/src/runtime/schemas.js +173 -6
  109. package/dist/src/runtime/schemas.js.map +1 -1
  110. package/dist/src/runtime/upload/uploadController.d.ts +7 -0
  111. package/dist/src/runtime/upload/uploadController.d.ts.map +1 -1
  112. package/dist/src/runtime/upload/uploadController.js +10 -5
  113. package/dist/src/runtime/upload/uploadController.js.map +1 -1
  114. package/package.json +37 -30
  115. package/registry/r/media-category-tree.json +21 -0
  116. package/registry/r/media-dashboard-overview.json +1 -1
  117. package/registry/r/media-library-tree.json +25 -0
  118. package/registry/r/media-maintenance-panel.json +3 -2
  119. package/registry/r/media-transfer-dialog.json +26 -0
  120. package/registry/r/registry.json +18 -0
  121. package/registry.json +61 -1
  122. package/src/routes/categories.astro +12 -0
  123. package/src/scaffold/styles/media.css +395 -5
package/README.md CHANGED
@@ -17,21 +17,28 @@ from [mano8/astro-ui-m8](https://github.com/mano8/astro-ui-m8), targets the
17
17
  media backend at [mano8/media-service-m8](https://github.com/mano8/media-service-m8),
18
18
  and composes into the [mano8/fa-ui-m8](https://github.com/mano8/fa-ui-m8) host app.
19
19
 
20
- ### Related repositories
20
+ ## Related repositories
21
21
 
22
22
  - [`media-service-m8`](https://github.com/mano8/media-service-m8) — the FastAPI backend this plugin fronts.
23
23
  - [`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.
24
24
  - [`astro-auth-m8`](https://github.com/mano8/astro-auth-m8) — required auth peer; issues the fa-auth-m8 tokens this plugin's adapter consumes.
25
25
  - [`fa-ui-m8`](https://github.com/mano8/fa-ui-m8) — the Astro/Starlight host app this plugin installs into.
26
26
 
27
- Pinned to `media-service-m8@1.0` (supported service-version range
28
- `>=1.0.0 <2.0.0`; see `mediaServiceM8` in `package.json`).
27
+ Pinned to `media-service-m8@1.1` (supported service-version range
28
+ `>=2.0.0 <3.0.0`; see `mediaServiceM8` in `package.json`).
29
29
 
30
30
  ## Backend contract
31
31
 
32
- This package targets the `media-service-m8@1.0` API contract and was tested
33
- against `media-service-m8` service version `1.0.0`. Supported backend service
34
- versions are `>=1.0.0 <2.0.0`.
32
+ This package targets the additive `media-service-m8@1.1` API contract and was
33
+ tested against `media-service-m8` service version `2.1.1`. Supported backend
34
+ service versions are `>=2.0.0 <3.0.0`.
35
+
36
+ The contract axis and the service axis move independently, and only the range
37
+ gates anything. The **contract** stays `1.1` because no served shape changed;
38
+ the **tested service version** names what this client was exercised against.
39
+ Since the range admits the whole 2.x line, a host on the published `2.1.0`
40
+ passes preflight unchanged — the tested value is a statement of provenance, not
41
+ a floor.
35
42
 
36
43
  Compatibility helpers are exported from `@mano8/astro-media-m8/compatibility`.
37
44
  `media-service-m8` (>= 0.0.10) exposes a public `GET {API_PREFIX}/meta` route
@@ -55,10 +62,12 @@ elsewhere.
55
62
  npm i @mano8/astro-media-m8 @mano8/astro-auth-m8 zod
56
63
  ```
57
64
 
58
- `@mano8/astro-auth-m8` is a required peer: `media-service-m8` only accepts
59
- `fa-auth-m8`-issued tokens, so the plugin's auth adapter must be backed by
60
- `fa-auth-m8` (the official plugin, or a custom adapter that obtains those
61
- tokens). `@mano8/astro-ui-m8` is a normal dependency because the media registry
65
+ `@mano8/astro-auth-m8` is a required peer at **`^2.2.0` or newer**:
66
+ `media-service-m8` only accepts `fa-auth-m8`-issued tokens, so the plugin's auth
67
+ adapter must be backed by `fa-auth-m8` (the official plugin, or a custom adapter
68
+ that obtains those tokens). A 1.x auth is not supported upgrade auth first, or
69
+ the install resolves nothing that satisfies the peer.
70
+ `@mano8/astro-ui-m8` (`^1.5.0`) is a normal dependency because the media registry
62
71
  skins compose the canonical shared table from its packaged registry output.
63
72
  `react`/`react-dom` are optional — only `./react`, `./hooks` and the starter
64
73
  views need them; `@tanstack/react-query` is a required peer once you use
@@ -67,7 +76,9 @@ views need them; `@tanstack/react-query` is a required peer once you use
67
76
  ## Modes
68
77
 
69
78
  - **headless** — schemas, API wrappers, upload controller, stores; no pages.
70
- - **starter** — injects upload / library / object / presets / admin routes.
79
+ - **starter** — injects library (with an upload dialog), category CRUD, object,
80
+ presets and admin routes. The legacy upload route remains available for
81
+ direct links and opens the same library upload workflow.
71
82
  - **scaffolded** — `views.strategy: "scaffolded"` to own the view files.
72
83
 
73
84
  ## Quick start
@@ -184,6 +195,8 @@ declare the namespace in `components.json` for documentation / future HTTP hosti
184
195
  | `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`) |
185
196
  | `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`) |
186
197
  | `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`) |
198
+ | `media-category-tree` | `npx shadcn add ./node_modules/@mano8/astro-media-m8/registry/r/media-category-tree.json` | `@mano8/astro-ui-m8/tree-view`, `@mano8/astro-ui-m8/state-empty`, `@mano8/astro-ui-m8/state-error`, `@mano8/astro-ui-m8/state-loading` | — | **yes** (`useCategoryTree`) |
199
+ | `media-library-tree` | `npx shadcn add ./node_modules/@mano8/astro-media-m8/registry/r/media-library-tree.json` | `badge`, `button`, `@mano8/astro-ui-m8/data-table`, `@mano8/astro-ui-m8/state-error`, `media-category-tree` | `@tanstack/react-table` | **yes** (`useMediaObjects`) |
187
200
 
188
201
  `media-dashboard-overview` is the admin **landing** view (storage stat cards + a
189
202
  per-category storage chart + a subscriptions table built on the canonical
@@ -198,6 +211,18 @@ into your own shell instead if you already own the media chrome (as fa-ui-m8 doe
198
211
  Each reads its headless logic straight from `useMediaAdmin` and takes its strings via
199
212
  `labels`.
200
213
 
214
+ `media-category-tree` is a shadcn skin over `astro-ui-m8`'s generic `tree-view` block
215
+ for the nested user category tree: "All media" and "Uncategorized" pseudo-nodes always
216
+ sit above the mapped category nodes, backed live by `useCategoryTree`, with the
217
+ canonical `astro-ui-m8` loading/empty/error states. `media-library-tree` pairs that pane
218
+ with the canonical `astro-ui-m8` `data-table` (right pane) scoped to the selected branch
219
+ via `useMediaObjects`; because that hook is cursor-paginated rather than page-numbered,
220
+ the table is pinned to the single loaded page and "Load more" is wired to the table's
221
+ add-button slot instead of forking a second results table. Both compose rather than
222
+ reimplement the shared `tree-view`/`data-table` blocks, per this package's registry
223
+ convention. Headless category-tree parsing is bounded to 10 levels, matching the
224
+ service default, so malformed responses cannot drive unbounded browser recursion.
225
+
201
226
  Files land under `src/components/fa-media/` (the items' `target`), import shadcn
202
227
  primitives via `@/components/ui/*`, and pull headless logic from the installed package.
203
228
  The plugin package is intentionally **not** listed in item `dependencies` (it would make
@@ -217,11 +242,29 @@ Consumers should install the shared UI block first or let `shadcn` resolve it fr
217
242
  the internal `PUBLIC_FA_MEDIA_*` form consumed by the provider config.
218
243
  - All view labels are props with English defaults — pass your own i18n strings to localize.
219
244
 
245
+ ## Error boundaries
246
+
247
+ Every React island root this plugin mounts — `LibraryView`, `ObjectDetailView`,
248
+ `UploadView`, `PresetsView` and `AdminMediaView` — is wrapped in an error
249
+ boundary. A throw inside a view renders the canonical `astro-ui-m8` error state
250
+ in place of that island rather than tearing it down and leaving a blank region
251
+ on the host page. Nothing is required of the host to get this.
252
+
253
+ ## Dev preview gallery
254
+
255
+ `npm run preview:dev` serves a development-only `/_preview` gallery that mounts
256
+ every shipped island against an in-memory stand-in for `media-service-m8`. Only
257
+ `fetch` is replaced, so the views, hooks, API wrappers and Zod schemas you see
258
+ are the shipped ones rather than a picture of a mock; one panel deliberately
259
+ throws to show the error boundary. The gallery lives in `fixtures/` and is not
260
+ part of the published tarball.
261
+
220
262
  ## Commands
221
263
 
222
264
  - `npm run build` — `tsc` → `dist/` + `npm run build:registry`
223
265
  - `npm run build:registry` — regenerate `registry/r/*.json` from `registry.json`
224
266
  - `npm run typecheck` — `tsc --noEmit`
225
267
  - `npm test` — Vitest with coverage (100% on the non-React runtime)
268
+ - `npm run preview:dev` / `npm run preview:build` — the dev-only `/_preview` gallery
226
269
 
227
270
  [`media-service-m8`]: https://github.com/mano8/media-service-m8
@@ -1 +1 @@
1
- {"version":3,"file":"integration.d.ts","sourceRoot":"","sources":["../../src/integration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAoB,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAEzE,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE;QACL,QAAQ,CAAC,EAAE,eAAe,GAAG,QAAQ,GAAG,MAAM,CAAC;QAC/C,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,SAAS,CAAC,EAAE,YAAY,GAAG,OAAO,GAAG,cAAc,CAAC;KACrD,CAAC;IACF,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,KAAK,CAAC,EAAE;QACN,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,CAAC;QAC7C,MAAM,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,QAAQ,CAAC;QAC1C,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,MAAM,CAAC,EAAE;QACP,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC5B,eAAe,CAAC,EAAE,aAAa,CAAC;QAChC,iBAAiB,CAAC,EAAE,eAAe,CAAC;QACpC,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;KAC9B,CAAC;IACF,OAAO,CAAC,EAAE;QACR,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,CAAC;IACF,MAAM,CAAC,EAAE;QACP,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,2GAA2G;IAC3G,GAAG,CAAC,EAAE;QACJ,sGAAsG;QACtG,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,GAAG,eAAe,CAAC;CACrB,CAAC;AA6BF,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,OAAO,GAAE,mBAAwB,GAAG,gBAAgB,CAkEnF;AAED,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"integration.d.ts","sourceRoot":"","sources":["../../src/integration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAoB,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAEzE,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAC9B,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,IAAI,CAAC,EAAE;QACL,QAAQ,CAAC,EAAE,eAAe,GAAG,QAAQ,GAAG,MAAM,CAAC;QAC/C,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,SAAS,CAAC,EAAE,YAAY,GAAG,OAAO,GAAG,cAAc,CAAC;KACrD,CAAC;IACF,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,KAAK,CAAC,EAAE;QACN,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,CAAC;QAC7C,MAAM,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,QAAQ,CAAC;QAC1C,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,MAAM,CAAC,EAAE;QACP,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC5B,eAAe,CAAC,EAAE,aAAa,CAAC;QAChC,iBAAiB,CAAC,EAAE,eAAe,CAAC;QACpC,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC;KAC9B,CAAC;IACF,OAAO,CAAC,EAAE;QACR,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;QAC5B,YAAY,CAAC,EAAE,OAAO,CAAC;KACxB,CAAC;IACF,MAAM,CAAC,EAAE;QACP,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,2GAA2G;IAC3G,GAAG,CAAC,EAAE;QACJ,sGAAsG;QACtG,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,GAAG,eAAe,CAAC;CACrB,CAAC;AA8BF,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,OAAO,GAAE,mBAAwB,GAAG,gBAAgB,CAkEnF;AAED,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -3,6 +3,7 @@ import { buildMediaCspPolicy } from "./lib/csp.js";
3
3
  const ROUTE_ENTRYPOINTS = {
4
4
  upload: "@mano8/astro-media-m8/routes/upload.astro",
5
5
  library: "@mano8/astro-media-m8/routes/library.astro",
6
+ categories: "@mano8/astro-media-m8/routes/categories.astro",
6
7
  object: "@mano8/astro-media-m8/routes/object/[id].astro",
7
8
  presets: "@mano8/astro-media-m8/routes/presets.astro",
8
9
  admin: "@mano8/astro-media-m8/routes/admin/media.astro"
@@ -1 +1 @@
1
- {"version":3,"file":"integration.js","sourceRoot":"","sources":["../../src/integration.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integration.js","sourceRoot":"","sources":["../../src/integration.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,18 @@
1
- import { type CategoriesPublic, type CategoryCreate, type CategoryUpdate, type ResponseMessage, type ResponseModelBase, type ResponseModelOrMessage } from "../schemas.js";
1
+ import { type CategoriesPublic, type CategoryCreate, type CategoryPublic, type CategoryTree, type CategoryUpdate } from "../schemas.js";
2
2
  /**
3
- * Legacy category CRUD. These routes live under `legacyBase` (no `/v1`) and use
4
- * the older `{success, ...}` envelope shape. Kept for completeness; the object
5
- * API uses enum categories, so this is an auxiliary surface.
3
+ * User category CRUD + tree. These routes live under `legacyBase` (no `/v1`).
4
+ *
5
+ * `get`/`add`/`edit`/`delete` answer typed responses, not the older
6
+ * `{success, ...}` envelope — the server controller extraction
7
+ * (media-service-m8 `58bc3f9`) dropped it, so these wrappers are retyped
8
+ * rather than preserved. `list` was already unaffected on the wrapper shape,
9
+ * but its items now carry `parent_id`/`tenant_id` too (`U3`), which
10
+ * `CategoryPublicSchema` reflects.
6
11
  */
7
12
  export declare function listCategories(skip?: number, limit?: number): Promise<CategoriesPublic>;
8
- export declare function getCategory(itemId: number): Promise<ResponseModelOrMessage>;
9
- export declare function createCategory(body: CategoryCreate): Promise<ResponseModelBase>;
10
- export declare function updateCategory(itemId: number, body: CategoryUpdate): Promise<ResponseModelBase>;
11
- export declare function deleteCategory(itemId: number): Promise<ResponseMessage>;
13
+ export declare function getCategoryTree(): Promise<CategoryTree>;
14
+ export declare function getCategory(itemId: number): Promise<CategoryPublic>;
15
+ export declare function createCategory(body: CategoryCreate): Promise<CategoryPublic>;
16
+ export declare function updateCategory(itemId: number, body: CategoryUpdate): Promise<CategoryPublic>;
17
+ export declare function deleteCategory(itemId: number): Promise<void>;
12
18
  //# sourceMappingURL=categories.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"categories.d.ts","sourceRoot":"","sources":["../../../../src/runtime/api/categories.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,sBAAsB,EAC5B,MAAM,eAAe,CAAC;AAEvB;;;;GAIG;AAEH,wBAAgB,cAAc,CAAC,IAAI,SAAI,EAAE,KAAK,SAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAS/E;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAQ3E;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAS/E;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAS/F;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAQvE"}
1
+ {"version":3,"file":"categories.d.ts","sourceRoot":"","sources":["../../../../src/runtime/api/categories.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,cAAc,EACpB,MAAM,eAAe,CAAC;AAEvB;;;;;;;;;GASG;AAEH,wBAAgB,cAAc,CAAC,IAAI,SAAI,EAAE,KAAK,SAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAS/E;AAED,wBAAgB,eAAe,IAAI,OAAO,CAAC,YAAY,CAAC,CAQvD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAQnE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAS5E;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAS5F;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO5D"}
@@ -1,9 +1,14 @@
1
1
  import { request } from "../client.js";
2
- import { CategoriesPublicSchema, ResponseMessageSchema, ResponseModelBaseSchema, ResponseModelOrMessageSchema } from "../schemas.js";
2
+ import { CategoriesPublicSchema, CategoryPublicSchema, CategoryTreeSchema } from "../schemas.js";
3
3
  /**
4
- * Legacy category CRUD. These routes live under `legacyBase` (no `/v1`) and use
5
- * the older `{success, ...}` envelope shape. Kept for completeness; the object
6
- * API uses enum categories, so this is an auxiliary surface.
4
+ * User category CRUD + tree. These routes live under `legacyBase` (no `/v1`).
5
+ *
6
+ * `get`/`add`/`edit`/`delete` answer typed responses, not the older
7
+ * `{success, ...}` envelope — the server controller extraction
8
+ * (media-service-m8 `58bc3f9`) dropped it, so these wrappers are retyped
9
+ * rather than preserved. `list` was already unaffected on the wrapper shape,
10
+ * but its items now carry `parent_id`/`tenant_id` too (`U3`), which
11
+ * `CategoryPublicSchema` reflects.
7
12
  */
8
13
  export function listCategories(skip = 0, limit = 100) {
9
14
  return request({
@@ -15,12 +20,21 @@ export function listCategories(skip = 0, limit = 100) {
15
20
  auth: true
16
21
  });
17
22
  }
23
+ export function getCategoryTree() {
24
+ return request({
25
+ method: "GET",
26
+ base: "legacy",
27
+ path: "/category/tree/",
28
+ schema: CategoryTreeSchema,
29
+ auth: true
30
+ });
31
+ }
18
32
  export function getCategory(itemId) {
19
33
  return request({
20
34
  method: "GET",
21
35
  base: "legacy",
22
36
  path: `/category/get/${encodeURIComponent(itemId)}/`,
23
- schema: ResponseModelOrMessageSchema,
37
+ schema: CategoryPublicSchema,
24
38
  auth: true
25
39
  });
26
40
  }
@@ -30,7 +44,7 @@ export function createCategory(body) {
30
44
  base: "legacy",
31
45
  path: "/category/add/",
32
46
  body,
33
- schema: ResponseModelBaseSchema,
47
+ schema: CategoryPublicSchema,
34
48
  auth: true
35
49
  });
36
50
  }
@@ -40,7 +54,7 @@ export function updateCategory(itemId, body) {
40
54
  base: "legacy",
41
55
  path: `/category/edit/${encodeURIComponent(itemId)}/`,
42
56
  body,
43
- schema: ResponseModelBaseSchema,
57
+ schema: CategoryPublicSchema,
44
58
  auth: true
45
59
  });
46
60
  }
@@ -49,7 +63,6 @@ export function deleteCategory(itemId) {
49
63
  method: "DELETE",
50
64
  base: "legacy",
51
65
  path: `/category/delete/${encodeURIComponent(itemId)}/`,
52
- schema: ResponseMessageSchema,
53
66
  auth: true
54
67
  });
55
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"categories.js","sourceRoot":"","sources":["../../../../src/runtime/api/categories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,4BAA4B,EAO7B,MAAM,eAAe,CAAC;AAEvB;;;;GAIG;AAEH,MAAM,UAAU,cAAc,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG;IAClD,OAAO,OAAO,CAAC;QACb,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;QACtB,MAAM,EAAE,sBAAsB;QAC9B,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,OAAO,OAAO,CAAC;QACb,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,iBAAiB,kBAAkB,CAAC,MAAM,CAAC,GAAG;QACpD,MAAM,EAAE,4BAA4B;QACpC,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAoB;IACjD,OAAO,OAAO,CAAC;QACb,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,gBAAgB;QACtB,IAAI;QACJ,MAAM,EAAE,uBAAuB;QAC/B,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,IAAoB;IACjE,OAAO,OAAO,CAAC;QACb,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,kBAAkB,kBAAkB,CAAC,MAAM,CAAC,GAAG;QACrD,IAAI;QACJ,MAAM,EAAE,uBAAuB;QAC/B,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,OAAO,OAAO,CAAC;QACb,MAAM,EAAE,QAAQ;QAChB,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,oBAAoB,kBAAkB,CAAC,MAAM,CAAC,GAAG;QACvD,MAAM,EAAE,qBAAqB;QAC7B,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"categories.js","sourceRoot":"","sources":["../../../../src/runtime/api/categories.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EACL,sBAAsB,EACtB,oBAAoB,EACpB,kBAAkB,EAMnB,MAAM,eAAe,CAAC;AAEvB;;;;;;;;;GASG;AAEH,MAAM,UAAU,cAAc,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG;IAClD,OAAO,OAAO,CAAC;QACb,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,YAAY;QAClB,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;QACtB,MAAM,EAAE,sBAAsB;QAC9B,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,OAAO,CAAC;QACb,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,iBAAiB;QACvB,MAAM,EAAE,kBAAkB;QAC1B,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,MAAc;IACxC,OAAO,OAAO,CAAC;QACb,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,iBAAiB,kBAAkB,CAAC,MAAM,CAAC,GAAG;QACpD,MAAM,EAAE,oBAAoB;QAC5B,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAoB;IACjD,OAAO,OAAO,CAAC;QACb,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,gBAAgB;QACtB,IAAI;QACJ,MAAM,EAAE,oBAAoB;QAC5B,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAc,EAAE,IAAoB;IACjE,OAAO,OAAO,CAAC;QACb,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,kBAAkB,kBAAkB,CAAC,MAAM,CAAC,GAAG;QACrD,IAAI;QACJ,MAAM,EAAE,oBAAoB;QAC5B,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAc;IAC3C,OAAO,OAAO,CAAC;QACb,MAAM,EAAE,QAAQ;QAChB,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,oBAAoB,kBAAkB,CAAC,MAAM,CAAC,GAAG;QACvD,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;AACL,CAAC"}
@@ -6,6 +6,7 @@ import * as sharesApi from "./shares.js";
6
6
  import * as categoriesApi from "./categories.js";
7
7
  import * as dashboardApi from "./dashboard.js";
8
8
  import * as adminApi from "./admin.js";
9
+ import * as transferApi from "./transfer.js";
9
10
  export * from "./uploads.js";
10
11
  export * from "./objects.js";
11
12
  export * from "./variants.js";
@@ -14,6 +15,7 @@ export * from "./shares.js";
14
15
  export * from "./categories.js";
15
16
  export * from "./dashboard.js";
16
17
  export * from "./admin.js";
18
+ export * from "./transfer.js";
17
19
  export declare const uploads: {
18
20
  readonly initiate: typeof uploadsApi.initiateUpload;
19
21
  readonly complete: typeof uploadsApi.completeUpload;
@@ -47,6 +49,7 @@ export declare const shares: {
47
49
  };
48
50
  export declare const categories: {
49
51
  readonly list: typeof categoriesApi.listCategories;
52
+ readonly tree: typeof categoriesApi.getCategoryTree;
50
53
  readonly get: typeof categoriesApi.getCategory;
51
54
  readonly create: typeof categoriesApi.createCategory;
52
55
  readonly update: typeof categoriesApi.updateCategory;
@@ -69,4 +72,9 @@ export declare const admin: {
69
72
  readonly listSubscriptions: typeof adminApi.listSubscriptions;
70
73
  readonly deleteSubscription: typeof adminApi.deleteSubscription;
71
74
  };
75
+ export declare const transfer: {
76
+ readonly startExport: typeof transferApi.startExport;
77
+ readonly getExportJob: typeof transferApi.getExportJob;
78
+ readonly startImport: typeof transferApi.startImport;
79
+ };
72
80
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/runtime/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AAGvC,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAG3B,eAAO,MAAM,OAAO;;;;CAIV,CAAC;AAEX,eAAO,MAAM,OAAO;;;;;;CAMV,CAAC;AAEX,eAAO,MAAM,QAAQ;;;;;;CAMX,CAAC;AAEX,eAAO,MAAM,OAAO;;;;;CAKV,CAAC;AAEX,eAAO,MAAM,MAAM;;;;;CAKT,CAAC;AAEX,eAAO,MAAM,UAAU;;;;;;CAMb,CAAC;AAEX,eAAO,MAAM,SAAS;;;CAGZ,CAAC;AAEX,eAAO,MAAM,KAAK;;;;;;;;;;;;CAYR,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/runtime/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,UAAU,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,SAAS,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,aAAa,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,YAAY,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,QAAQ,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,WAAW,MAAM,eAAe,CAAC;AAG7C,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAG9B,eAAO,MAAM,OAAO;;;;CAIV,CAAC;AAEX,eAAO,MAAM,OAAO;;;;;;CAMV,CAAC;AAEX,eAAO,MAAM,QAAQ;;;;;;CAMX,CAAC;AAEX,eAAO,MAAM,OAAO;;;;;CAKV,CAAC;AAEX,eAAO,MAAM,MAAM;;;;;CAKT,CAAC;AAEX,eAAO,MAAM,UAAU;;;;;;;CAOb,CAAC;AAEX,eAAO,MAAM,SAAS;;;CAGZ,CAAC;AAEX,eAAO,MAAM,KAAK;;;;;;;;;;;;CAYR,CAAC;AAEX,eAAO,MAAM,QAAQ;;;;CAIX,CAAC"}
@@ -6,6 +6,7 @@ import * as sharesApi from "./shares.js";
6
6
  import * as categoriesApi from "./categories.js";
7
7
  import * as dashboardApi from "./dashboard.js";
8
8
  import * as adminApi from "./admin.js";
9
+ import * as transferApi from "./transfer.js";
9
10
  // Flat named exports (tree-shakeable direct imports).
10
11
  export * from "./uploads.js";
11
12
  export * from "./objects.js";
@@ -15,6 +16,7 @@ export * from "./shares.js";
15
16
  export * from "./categories.js";
16
17
  export * from "./dashboard.js";
17
18
  export * from "./admin.js";
19
+ export * from "./transfer.js";
18
20
  // Grouped namespaces (`uploads.initiate`, `objects.list`, ...).
19
21
  export const uploads = {
20
22
  initiate: uploadsApi.initiateUpload,
@@ -49,6 +51,7 @@ export const shares = {
49
51
  };
50
52
  export const categories = {
51
53
  list: categoriesApi.listCategories,
54
+ tree: categoriesApi.getCategoryTree,
52
55
  get: categoriesApi.getCategory,
53
56
  create: categoriesApi.createCategory,
54
57
  update: categoriesApi.updateCategory,
@@ -71,4 +74,9 @@ export const admin = {
71
74
  listSubscriptions: adminApi.listSubscriptions,
72
75
  deleteSubscription: adminApi.deleteSubscription
73
76
  };
77
+ export const transfer = {
78
+ startExport: transferApi.startExport,
79
+ getExportJob: transferApi.getExportJob,
80
+ startImport: transferApi.startImport
81
+ };
74
82
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/runtime/api/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/runtime/api/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { type ExportJobPublic, type ExportManifest, type ImportFormat, type ImportReport, type ObjectListParams } from "../schemas.js";
2
+ /**
3
+ * Export/import wrappers (`U9`/`U10`). `manifest` is answered inline —
4
+ * metadata only, no bytes; `archive` is accepted (202) as a job collected
5
+ * from {@link getExportJob}. Both formats share the same request shape, so
6
+ * one overloaded `startExport` narrows its return type by the `format`
7
+ * literal instead of the caller having to cast.
8
+ */
9
+ export declare function startExport(format: "manifest", filters?: ObjectListParams): Promise<ExportManifest>;
10
+ export declare function startExport(format: "archive", filters?: ObjectListParams): Promise<ExportJobPublic>;
11
+ /** Progress (and, once `completed`, a presigned download) for an archive export job. */
12
+ export declare function getExportJob(jobId: string): Promise<ExportJobPublic>;
13
+ /**
14
+ * Multipart, for both formats — an export hands the caller a document to
15
+ * keep (the streamed manifest or the assembled archive) and an import takes
16
+ * that same document back, so one path reads one shape either way.
17
+ */
18
+ export declare function startImport(format: ImportFormat, file: File | Blob): Promise<ImportReport>;
19
+ //# sourceMappingURL=transfer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../../../src/runtime/api/transfer.ts"],"names":[],"mappings":"AACA,OAAO,EAKL,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACtB,MAAM,eAAe,CAAC;AAEvB;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;AACrG,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAuBrG,wFAAwF;AACxF,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAOpE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAY1F"}
@@ -0,0 +1,48 @@
1
+ import { request } from "../client.js";
2
+ import { ExportJobPublicSchema, ExportManifestSchema, ImportReportSchema } from "../schemas.js";
3
+ export function startExport(format, filters) {
4
+ if (format === "archive") {
5
+ return request({
6
+ method: "POST",
7
+ path: "/export",
8
+ body: { format, filters },
9
+ schema: ExportJobPublicSchema,
10
+ auth: true
11
+ });
12
+ }
13
+ return request({
14
+ method: "POST",
15
+ path: "/export",
16
+ body: { format, filters },
17
+ schema: ExportManifestSchema,
18
+ auth: true
19
+ });
20
+ }
21
+ /** Progress (and, once `completed`, a presigned download) for an archive export job. */
22
+ export function getExportJob(jobId) {
23
+ return request({
24
+ method: "GET",
25
+ path: `/export/${encodeURIComponent(jobId)}`,
26
+ schema: ExportJobPublicSchema,
27
+ auth: true
28
+ });
29
+ }
30
+ /**
31
+ * Multipart, for both formats — an export hands the caller a document to
32
+ * keep (the streamed manifest or the assembled archive) and an import takes
33
+ * that same document back, so one path reads one shape either way.
34
+ */
35
+ export function startImport(format, file) {
36
+ const form = new FormData();
37
+ form.set("format", format);
38
+ const filename = typeof File !== "undefined" && file instanceof File ? file.name : "import";
39
+ form.set("file", file, filename);
40
+ return request({
41
+ method: "POST",
42
+ path: "/import",
43
+ body: form,
44
+ schema: ImportReportSchema,
45
+ auth: true
46
+ });
47
+ }
48
+ //# sourceMappingURL=transfer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../../../src/runtime/api/transfer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAOnB,MAAM,eAAe,CAAC;AAWvB,MAAM,UAAU,WAAW,CACzB,MAAoB,EACpB,OAA0B;IAE1B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC;YACb,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE;YACzB,MAAM,EAAE,qBAAqB;YAC7B,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC;QACb,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE;QACzB,MAAM,EAAE,oBAAoB;QAC5B,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;AACL,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,OAAO,CAAC;QACb,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,WAAW,kBAAkB,CAAC,KAAK,CAAC,EAAE;QAC5C,MAAM,EAAE,qBAAqB;QAC7B,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,MAAoB,EAAE,IAAiB;IACjE,MAAM,IAAI,GAAG,IAAI,QAAQ,EAAE,CAAC;IAC5B,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC3B,MAAM,QAAQ,GAAG,OAAO,IAAI,KAAK,WAAW,IAAI,IAAI,YAAY,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC5F,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IACjC,OAAO,OAAO,CAAC;QACb,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,kBAAkB;QAC1B,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/runtime/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,cAAc,gBAAgB,CAAC;AAE/B,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE5D,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI;IACnC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;IACpD,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IACrE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAYrE;AAED,wBAAsB,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAmE5E"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/runtime/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,cAAc,gBAAgB,CAAC;AAE/B,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE5D,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI;IACnC,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;IACpD,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IACrE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAYrE;AAED,wBAAsB,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAwE5E"}
@@ -46,7 +46,13 @@ export async function request(options) {
46
46
  headers.set("Authorization", `Bearer ${token}`);
47
47
  }
48
48
  let body;
49
- if (options.body !== undefined) {
49
+ if (options.body instanceof FormData) {
50
+ // Never set Content-Type ourselves — fetch derives the multipart
51
+ // boundary from the FormData body, and a manually-set header here would
52
+ // ship without one and break parsing server-side.
53
+ body = options.body;
54
+ }
55
+ else if (options.body !== undefined) {
50
56
  headers.set("Content-Type", "application/json");
51
57
  body = JSON.stringify(options.body);
52
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/runtime/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/runtime/client.ts"],"names":[],"mappings":"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"}
@@ -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 = "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";
2
+ export declare const MEDIA_SERVICE_M8_CONTRACT_VERSION = "1.1";
3
+ export declare const MEDIA_SERVICE_M8_CONTRACT: "media-service-m8@1.1";
4
+ export declare const MEDIA_SERVICE_M8_TESTED_SERVICE_VERSION = "2.1.1";
5
+ export declare const MEDIA_SERVICE_M8_MIN_SERVICE_VERSION = "2.0.0";
6
+ export declare const MEDIA_SERVICE_M8_MAX_SERVICE_VERSION_EXCLUSIVE = "3.0.0";
7
+ export declare const MEDIA_SERVICE_M8_SERVICE_VERSION_RANGE = ">=2.0.0 <3.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;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;AAqCF,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;AAyBzH,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;AAqDF,wBAAgB,wCAAwC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAIjF;AAED,wBAAgB,8BAA8B,CAC5C,QAAQ,GAAE,6BAAkC,GAC3C,2BAA2B,CAmE7B;AAED,wBAAgB,iCAAiC,CAC/C,QAAQ,EAAE,6BAA6B,EACvC,YAAY,UAAO,GAClB,2BAA2B,CAM7B"}
@@ -1,9 +1,33 @@
1
1
  export const MEDIA_SERVICE_M8_CONTRACT_ID = "media-service-m8";
2
- export const MEDIA_SERVICE_M8_CONTRACT_VERSION = "1.0";
2
+ export const MEDIA_SERVICE_M8_CONTRACT_VERSION = "1.1";
3
3
  export const MEDIA_SERVICE_M8_CONTRACT = `${MEDIA_SERVICE_M8_CONTRACT_ID}@${MEDIA_SERVICE_M8_CONTRACT_VERSION}`;
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";
4
+ const MEDIA_SERVICE_M8_COMPATIBLE_CONTRACTS = new Set([
5
+ "1.0",
6
+ `${MEDIA_SERVICE_M8_CONTRACT_ID}@1.0`,
7
+ MEDIA_SERVICE_M8_CONTRACT_VERSION,
8
+ MEDIA_SERVICE_M8_CONTRACT
9
+ ]);
10
+ // The service version range moves with media-service-m8's package version, which
11
+ // reached 2.0.0 for the reader/writer role tiers and the anonymous PUBLIC read
12
+ // surface. The contract moves to 1.1 for the additive UX API surface; the
13
+ // service-version gate remains at 2.x because this plugin still targets the
14
+ // same service release line. A pre-tier 1.x service is deliberately no longer
15
+ // admitted: it cannot serve the authorization behavior this plugin's guards
16
+ // assume.
17
+ // The service version this client was actually exercised against: 2.1.1, the
18
+ // single-object category-projection fix, whose OpenAPI is what every schema
19
+ // here was diffed against in the same pass.
20
+ //
21
+ // Written ahead of the 2.1.1 tag, deliberately and on the record — the same
22
+ // ordering inversion the workspace matrix documents for the 2.1.0 image pins,
23
+ // noted rather than hidden. It is safe *here* in a way a pin is not: this
24
+ // constant resolves nothing and installs nothing. The gate is
25
+ // MEDIA_SERVICE_M8_SERVICE_VERSION_RANGE below, which already admits the whole
26
+ // 2.x line, so a host pointed at the published 2.1.0 passes preflight
27
+ // unchanged and this value never refuses it.
28
+ export const MEDIA_SERVICE_M8_TESTED_SERVICE_VERSION = "2.1.1";
29
+ export const MEDIA_SERVICE_M8_MIN_SERVICE_VERSION = "2.0.0";
30
+ export const MEDIA_SERVICE_M8_MAX_SERVICE_VERSION_EXCLUSIVE = "3.0.0";
7
31
  export const MEDIA_SERVICE_M8_SERVICE_VERSION_RANGE = `>=${MEDIA_SERVICE_M8_MIN_SERVICE_VERSION} <${MEDIA_SERVICE_M8_MAX_SERVICE_VERSION_EXCLUSIVE}`;
8
32
  function stringValue(value) {
9
33
  return typeof value === "string" && value.trim() ? value.trim() : undefined;
@@ -15,6 +39,21 @@ function contractObjectVersion(value) {
15
39
  }
16
40
  return undefined;
17
41
  }
42
+ // Read ``contract.name`` from the GET /meta nested contract object.
43
+ //
44
+ // The flat-string contract forms carry the issuer id inline (``media-service-m8@1.0``)
45
+ // and are checked against it, but the nested object splits id and version apart.
46
+ // Without reading ``name`` the version check alone would bless any service whose
47
+ // contract happens to sit at the same version - and ``mount_service_meta`` is a
48
+ // shared auth-sdk-m8 helper, so every M8 service serves this same payload shape
49
+ // at ``{API_PREFIX}/meta``. A host pointed at the wrong sibling is exactly the
50
+ // misconfiguration the preflight exists to name.
51
+ function contractObjectName(value) {
52
+ if (typeof value === "object" && value !== null) {
53
+ return stringValue(value.name);
54
+ }
55
+ return undefined;
56
+ }
18
57
  function parseSemver(version) {
19
58
  const [withoutBuild = ""] = version.split("+", 1);
20
59
  const [core = ""] = withoutBuild.split("-", 1);
@@ -50,9 +89,22 @@ export function getMediaServiceM8Compatibility(metadata = {}) {
50
89
  const serviceVersion = stringValue(metadata.media_service_m8_version) ??
51
90
  stringValue(metadata.service_version) ??
52
91
  stringValue(metadata.version);
53
- if (contractVersion &&
54
- contractVersion !== MEDIA_SERVICE_M8_CONTRACT_VERSION &&
55
- contractVersion !== MEDIA_SERVICE_M8_CONTRACT) {
92
+ // Checked before the version, so a wrong service is reported as a wrong
93
+ // service rather than as a version mismatch. Only applies when the payload
94
+ // names an id at all - a nested contract without a `name` still falls through
95
+ // to the version comparison below.
96
+ const contractName = contractObjectName(metadata.contract);
97
+ if (contractName && contractName !== MEDIA_SERVICE_M8_CONTRACT_ID) {
98
+ return {
99
+ status: "incompatible",
100
+ expectedContract: MEDIA_SERVICE_M8_CONTRACT,
101
+ expectedServiceVersionRange: MEDIA_SERVICE_M8_SERVICE_VERSION_RANGE,
102
+ contractVersion,
103
+ serviceVersion,
104
+ reason: `Expected ${MEDIA_SERVICE_M8_CONTRACT}, received the ${contractName} contract - check the configured media API base`
105
+ };
106
+ }
107
+ if (contractVersion && !MEDIA_SERVICE_M8_COMPATIBLE_CONTRACTS.has(contractVersion)) {
56
108
  return {
57
109
  status: "incompatible",
58
110
  expectedContract: MEDIA_SERVICE_M8_CONTRACT,