@learnorama/mozaik-sdk 0.1.0 → 0.5.0-staging.22.1

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 (242) hide show
  1. package/README.md +186 -5
  2. package/dist/api/account.d.ts +2 -2
  3. package/dist/api/account.js +1 -1
  4. package/dist/api/account.js.map +1 -1
  5. package/dist/api/admin-catalogue.d.ts +2 -2
  6. package/dist/api/admin-catalogue.js +1 -1
  7. package/dist/api/admin-catalogue.js.map +1 -1
  8. package/dist/api/admin-consumption.d.ts +7 -2
  9. package/dist/api/admin-consumption.js +6 -1
  10. package/dist/api/admin-consumption.js.map +1 -1
  11. package/dist/api/admin-licenses.d.ts +2 -2
  12. package/dist/api/admin-licenses.js +1 -1
  13. package/dist/api/admin-licenses.js.map +1 -1
  14. package/dist/api/admin-patrons.d.ts +3 -3
  15. package/dist/api/admin-patrons.js +2 -2
  16. package/dist/api/admin-patrons.js.map +1 -1
  17. package/dist/api/admin-reviews.d.ts +2 -2
  18. package/dist/api/admin-reviews.js +1 -1
  19. package/dist/api/admin-reviews.js.map +1 -1
  20. package/dist/api/admin-roles.d.ts +3 -3
  21. package/dist/api/admin-roles.js +2 -2
  22. package/dist/api/admin-roles.js.map +1 -1
  23. package/dist/api/admin-support.d.ts +2 -2
  24. package/dist/api/admin-support.js +1 -1
  25. package/dist/api/admin-support.js.map +1 -1
  26. package/dist/api/admin-tenants.d.ts +14 -2
  27. package/dist/api/admin-tenants.js +38 -2
  28. package/dist/api/admin-tenants.js.map +1 -1
  29. package/dist/api/admin-tutoring.d.ts +2 -2
  30. package/dist/api/admin-tutoring.js +1 -1
  31. package/dist/api/admin-tutoring.js.map +1 -1
  32. package/dist/api/auth.d.ts +2 -2
  33. package/dist/api/auth.js +1 -1
  34. package/dist/api/auth.js.map +1 -1
  35. package/dist/api/biblio-catalogue.d.ts +2 -2
  36. package/dist/api/biblio-catalogue.js +1 -1
  37. package/dist/api/biblio-catalogue.js.map +1 -1
  38. package/dist/api/biblio-home.d.ts +2 -2
  39. package/dist/api/biblio-home.js +1 -1
  40. package/dist/api/biblio-home.js.map +1 -1
  41. package/dist/api/biblio-library.d.ts +2 -2
  42. package/dist/api/biblio-library.js +1 -1
  43. package/dist/api/biblio-library.js.map +1 -1
  44. package/dist/api/biblio-nextory.d.ts +2 -2
  45. package/dist/api/biblio-nextory.js +1 -1
  46. package/dist/api/biblio-nextory.js.map +1 -1
  47. package/dist/api/biblio-press.d.ts +2 -2
  48. package/dist/api/biblio-press.js +1 -1
  49. package/dist/api/biblio-press.js.map +1 -1
  50. package/dist/api/biblio-search.d.ts +2 -2
  51. package/dist/api/biblio-search.js +1 -1
  52. package/dist/api/biblio-search.js.map +1 -1
  53. package/dist/api/biblio-telemetry.d.ts +2 -2
  54. package/dist/api/biblio-telemetry.js +1 -1
  55. package/dist/api/biblio-telemetry.js.map +1 -1
  56. package/dist/api/consumption.d.ts +2 -2
  57. package/dist/api/consumption.js +1 -1
  58. package/dist/api/consumption.js.map +1 -1
  59. package/dist/api/cvs-app.d.ts +2 -2
  60. package/dist/api/cvs-app.js +1 -1
  61. package/dist/api/cvs-app.js.map +1 -1
  62. package/dist/api/cvs-documents.d.ts +16 -4
  63. package/dist/api/cvs-documents.js +22 -5
  64. package/dist/api/cvs-documents.js.map +1 -1
  65. package/dist/api/cvs-favorites.d.ts +2 -2
  66. package/dist/api/cvs-favorites.js +1 -1
  67. package/dist/api/cvs-favorites.js.map +1 -1
  68. package/dist/api/cvs-ils.d.ts +167 -0
  69. package/dist/api/cvs-ils.js +362 -0
  70. package/dist/api/cvs-ils.js.map +1 -0
  71. package/dist/api/cvs-loans.d.ts +2 -2
  72. package/dist/api/cvs-loans.js +1 -1
  73. package/dist/api/cvs-loans.js.map +1 -1
  74. package/dist/api/cvs-payments.d.ts +49 -0
  75. package/dist/api/cvs-payments.js +84 -0
  76. package/dist/api/cvs-payments.js.map +1 -0
  77. package/dist/api/cvs-streaming.d.ts +2 -2
  78. package/dist/api/cvs-streaming.js +1 -1
  79. package/dist/api/cvs-streaming.js.map +1 -1
  80. package/dist/api/index.d.ts +5 -2
  81. package/dist/api/index.js +7 -4
  82. package/dist/api/partner-catalogue.d.ts +2 -2
  83. package/dist/api/partner-catalogue.js +1 -1
  84. package/dist/api/partner-catalogue.js.map +1 -1
  85. package/dist/api/partner-reader.d.ts +2 -2
  86. package/dist/api/partner-reader.js +1 -1
  87. package/dist/api/partner-reader.js.map +1 -1
  88. package/dist/api/profiles.d.ts +2 -2
  89. package/dist/api/profiles.js +1 -1
  90. package/dist/api/profiles.js.map +1 -1
  91. package/dist/api/search.d.ts +18 -0
  92. package/dist/api/search.js +37 -0
  93. package/dist/api/search.js.map +1 -0
  94. package/dist/api/tutoring-catalogue.d.ts +2 -2
  95. package/dist/api/tutoring-catalogue.js +1 -1
  96. package/dist/api/tutoring-catalogue.js.map +1 -1
  97. package/dist/api/tutoring-chat.d.ts +2 -2
  98. package/dist/api/tutoring-chat.js +1 -1
  99. package/dist/api/tutoring-chat.js.map +1 -1
  100. package/dist/api/tutoring-dispatch.d.ts +2 -2
  101. package/dist/api/tutoring-dispatch.js +1 -1
  102. package/dist/api/tutoring-dispatch.js.map +1 -1
  103. package/dist/api/tutoring-practitioner.d.ts +2 -2
  104. package/dist/api/tutoring-practitioner.js +1 -1
  105. package/dist/api/tutoring-practitioner.js.map +1 -1
  106. package/dist/api/tutoring-requests.d.ts +2 -2
  107. package/dist/api/tutoring-requests.js +1 -1
  108. package/dist/api/tutoring-requests.js.map +1 -1
  109. package/dist/auth.d.ts +10 -0
  110. package/dist/auth.js +451 -0
  111. package/dist/auth.js.map +1 -0
  112. package/dist/chat.d.ts +3 -0
  113. package/dist/chat.js +3 -0
  114. package/dist/{client-BDwBZYB0.d.ts → chunks/client.d.ts} +1 -1
  115. package/dist/{client-D3kMOcIr.js → chunks/client.js} +1 -1
  116. package/dist/chunks/client.js.map +1 -0
  117. package/dist/chunks/client2.d.ts +53 -0
  118. package/dist/chunks/connection.d.ts +28 -0
  119. package/dist/chunks/connection.js +141 -0
  120. package/dist/chunks/connection.js.map +1 -0
  121. package/dist/{index-wL_20vR8.d.ts → chunks/index.d.ts} +922 -128
  122. package/dist/index.d.ts +4 -4
  123. package/dist/index.js +4 -4
  124. package/dist/index.js.map +1 -1
  125. package/dist/models.d.ts +2 -2
  126. package/dist/models.js +44 -1
  127. package/dist/models.js.map +1 -1
  128. package/dist/react/account.d.ts +2 -2
  129. package/dist/react/account.js +2 -2
  130. package/dist/react/account.js.map +1 -1
  131. package/dist/react/admin-catalogue.d.ts +2 -2
  132. package/dist/react/admin-catalogue.js +2 -2
  133. package/dist/react/admin-catalogue.js.map +1 -1
  134. package/dist/react/admin-consumption.d.ts +7 -2
  135. package/dist/react/admin-consumption.js +7 -2
  136. package/dist/react/admin-consumption.js.map +1 -1
  137. package/dist/react/admin-licenses.d.ts +2 -2
  138. package/dist/react/admin-licenses.js +2 -2
  139. package/dist/react/admin-licenses.js.map +1 -1
  140. package/dist/react/admin-patrons.d.ts +3 -3
  141. package/dist/react/admin-patrons.js +3 -3
  142. package/dist/react/admin-patrons.js.map +1 -1
  143. package/dist/react/admin-reviews.d.ts +2 -2
  144. package/dist/react/admin-reviews.js +2 -2
  145. package/dist/react/admin-reviews.js.map +1 -1
  146. package/dist/react/admin-roles.d.ts +3 -3
  147. package/dist/react/admin-roles.js +3 -3
  148. package/dist/react/admin-roles.js.map +1 -1
  149. package/dist/react/admin-support.d.ts +2 -2
  150. package/dist/react/admin-support.js +2 -2
  151. package/dist/react/admin-support.js.map +1 -1
  152. package/dist/react/admin-tenants.d.ts +68 -2
  153. package/dist/react/admin-tenants.js +87 -3
  154. package/dist/react/admin-tenants.js.map +1 -1
  155. package/dist/react/admin-tutoring.d.ts +2 -2
  156. package/dist/react/admin-tutoring.js +2 -2
  157. package/dist/react/admin-tutoring.js.map +1 -1
  158. package/dist/react/auth.d.ts +2 -2
  159. package/dist/react/auth.js +2 -2
  160. package/dist/react/auth.js.map +1 -1
  161. package/dist/react/biblio-catalogue.d.ts +2 -2
  162. package/dist/react/biblio-catalogue.js +2 -2
  163. package/dist/react/biblio-catalogue.js.map +1 -1
  164. package/dist/react/biblio-home.d.ts +2 -2
  165. package/dist/react/biblio-home.js +2 -2
  166. package/dist/react/biblio-home.js.map +1 -1
  167. package/dist/react/biblio-library.d.ts +2 -2
  168. package/dist/react/biblio-library.js +2 -2
  169. package/dist/react/biblio-library.js.map +1 -1
  170. package/dist/react/biblio-nextory.d.ts +2 -2
  171. package/dist/react/biblio-nextory.js +2 -2
  172. package/dist/react/biblio-nextory.js.map +1 -1
  173. package/dist/react/biblio-press.d.ts +2 -2
  174. package/dist/react/biblio-press.js +2 -2
  175. package/dist/react/biblio-press.js.map +1 -1
  176. package/dist/react/biblio-search.d.ts +2 -2
  177. package/dist/react/biblio-search.js +2 -2
  178. package/dist/react/biblio-search.js.map +1 -1
  179. package/dist/react/biblio-telemetry.d.ts +2 -2
  180. package/dist/react/biblio-telemetry.js +2 -2
  181. package/dist/react/biblio-telemetry.js.map +1 -1
  182. package/dist/react/chat.d.ts +36 -0
  183. package/dist/react/chat.js +234 -0
  184. package/dist/react/chat.js.map +1 -0
  185. package/dist/react/consumption.d.ts +2 -2
  186. package/dist/react/consumption.js +2 -2
  187. package/dist/react/consumption.js.map +1 -1
  188. package/dist/react/cvs-app.d.ts +2 -2
  189. package/dist/react/cvs-app.js +2 -2
  190. package/dist/react/cvs-app.js.map +1 -1
  191. package/dist/react/cvs-documents.d.ts +17 -4
  192. package/dist/react/cvs-documents.js +25 -8
  193. package/dist/react/cvs-documents.js.map +1 -1
  194. package/dist/react/cvs-favorites.d.ts +2 -2
  195. package/dist/react/cvs-favorites.js +2 -2
  196. package/dist/react/cvs-favorites.js.map +1 -1
  197. package/dist/react/cvs-ils.d.ts +552 -0
  198. package/dist/react/cvs-ils.js +822 -0
  199. package/dist/react/cvs-ils.js.map +1 -0
  200. package/dist/react/cvs-loans.d.ts +2 -2
  201. package/dist/react/cvs-loans.js +2 -2
  202. package/dist/react/cvs-loans.js.map +1 -1
  203. package/dist/react/cvs-payments.d.ts +123 -0
  204. package/dist/react/cvs-payments.js +181 -0
  205. package/dist/react/cvs-payments.js.map +1 -0
  206. package/dist/react/cvs-streaming.d.ts +2 -2
  207. package/dist/react/cvs-streaming.js +2 -2
  208. package/dist/react/cvs-streaming.js.map +1 -1
  209. package/dist/react/index.d.ts +5 -2
  210. package/dist/react/index.js +5 -2
  211. package/dist/react/partner-catalogue.d.ts +2 -2
  212. package/dist/react/partner-catalogue.js +2 -2
  213. package/dist/react/partner-catalogue.js.map +1 -1
  214. package/dist/react/partner-reader.d.ts +2 -2
  215. package/dist/react/partner-reader.js +2 -2
  216. package/dist/react/partner-reader.js.map +1 -1
  217. package/dist/react/profiles.d.ts +2 -2
  218. package/dist/react/profiles.js +2 -2
  219. package/dist/react/profiles.js.map +1 -1
  220. package/dist/react/search.d.ts +47 -0
  221. package/dist/react/search.js +81 -0
  222. package/dist/react/search.js.map +1 -0
  223. package/dist/react/sso.d.ts +15 -0
  224. package/dist/react/sso.js +48 -0
  225. package/dist/react/sso.js.map +1 -0
  226. package/dist/react/tutoring-catalogue.d.ts +2 -2
  227. package/dist/react/tutoring-catalogue.js +2 -2
  228. package/dist/react/tutoring-catalogue.js.map +1 -1
  229. package/dist/react/tutoring-chat.d.ts +2 -2
  230. package/dist/react/tutoring-chat.js +2 -2
  231. package/dist/react/tutoring-chat.js.map +1 -1
  232. package/dist/react/tutoring-dispatch.d.ts +2 -2
  233. package/dist/react/tutoring-dispatch.js +2 -2
  234. package/dist/react/tutoring-dispatch.js.map +1 -1
  235. package/dist/react/tutoring-practitioner.d.ts +2 -2
  236. package/dist/react/tutoring-practitioner.js +2 -2
  237. package/dist/react/tutoring-practitioner.js.map +1 -1
  238. package/dist/react/tutoring-requests.d.ts +2 -2
  239. package/dist/react/tutoring-requests.js +2 -2
  240. package/dist/react/tutoring-requests.js.map +1 -1
  241. package/package.json +29 -1
  242. package/dist/client-D3kMOcIr.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { r as request } from "../client-D3kMOcIr.js";
2
+ import { r as request } from "../chunks/client.js";
3
3
  import { useMutation, useQuery } from "@tanstack/react-query";
4
4
  //#region src/react/admin-roles/admin-roles.ts
5
5
  /**
@@ -7,7 +7,7 @@ import { useMutation, useQuery } from "@tanstack/react-query";
7
7
  * Do not edit manually.
8
8
  * Mozaik backend
9
9
  * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.
10
- * OpenAPI spec version: 0.1.0
10
+ * OpenAPI spec version: 0.5.0
11
11
  */
12
12
  const withQueryKey = (query, queryKey) => {
13
13
  const result = { queryKey };
@@ -25,7 +25,7 @@ const getListGrantsUrl = (userId) => {
25
25
  return `/admin/users/${userId}/product-roles`;
26
26
  };
27
27
  /**
28
- * Everything this account is, across products and organisations.
28
+ * This account's grants within the caller's organisation scope.
29
29
  *
30
30
  * Readable by SUPPORT as well as ADMIN: knowing what somebody is, is part of
31
31
  * helping them. Changing it is not.
@@ -1 +1 @@
1
- {"version":3,"file":"admin-roles.js","names":[],"sources":["../../src/react/admin-roles/admin-roles.ts"],"sourcesContent":["/**\n * Generated by orval 🍺\n * Do not edit manually.\n * Mozaik backend\n * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.\n * OpenAPI spec version: 0.1.0\n */\nimport {\n useMutation,\n useQuery\n} from '@tanstack/react-query';\nimport type {\n DataTag,\n DefinedInitialDataOptions,\n DefinedUseQueryResult,\n MutationFunction,\n QueryClient,\n QueryFunction,\n QueryKey,\n UndefinedInitialDataOptions,\n UseMutationOptions,\n UseMutationResult,\n UseQueryOptions,\n UseQueryResult\n} from '@tanstack/react-query';\n\nimport type {\n HTTPExceptionResponse,\n ProductGrantListRead,\n ProductGrantWrite,\n ValidationErrorResponse\n} from '../../models';\n\nimport { request } from '../../client';\nimport type { ErrorType , BodyType } from '../../client';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n\nconst withQueryKey = <T extends object, K>(query: T, queryKey: K): T & { queryKey: K } => {\n const result = { queryKey } as T & { queryKey: K };\n for (const key of Object.keys(query)) {\n // The explicit queryKey always wins, matching the previous\n // `{ ...query, queryKey }` spread where it was set last.\n if (key === 'queryKey') continue;\n Object.defineProperty(result, key, {\n enumerable: true,\n configurable: true,\n get: () => (query as Record<string, unknown>)[key],\n });\n }\n return result;\n};\n\nexport const getListGrantsUrl = (userId: number,) => {\n\n\n\n\n return `/admin/users/${userId}/product-roles`\n}\n\n/**\n * Everything this account is, across products and organisations.\n *\n * Readable by SUPPORT as well as ADMIN: knowing what somebody is, is part of\n * helping them. Changing it is not.\n * @summary List Grants\n */\nexport const listGrants = async (userId: number, options?: Parameters<typeof request>[1]): Promise<ProductGrantListRead> => {\n\n return request<ProductGrantListRead>(getListGrantsUrl(userId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getListGrantsQueryKey = (userId: number,) => {\n return [\n `/admin/users/${userId}/product-roles`\n ] as const;\n }\n\n\nexport const getListGrantsQueryOptions = <TData = Awaited<ReturnType<typeof listGrants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(userId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listGrants>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getListGrantsQueryKey(userId);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof listGrants>>> = ({ signal }) => listGrants(userId, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, enabled: userId !== null && userId !== undefined, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof listGrants>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type ListGrantsQueryResult = NonNullable<Awaited<ReturnType<typeof listGrants>>>\nexport type ListGrantsQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useListGrants<TData = Awaited<ReturnType<typeof listGrants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n userId: number, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof listGrants>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof listGrants>>,\n TError,\n Awaited<ReturnType<typeof listGrants>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useListGrants<TData = Awaited<ReturnType<typeof listGrants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n userId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listGrants>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof listGrants>>,\n TError,\n Awaited<ReturnType<typeof listGrants>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useListGrants<TData = Awaited<ReturnType<typeof listGrants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n userId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listGrants>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary List Grants\n */\n\nexport function useListGrants<TData = Awaited<ReturnType<typeof listGrants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n userId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listGrants>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getListGrantsQueryOptions(userId,options)\n\n const query = useQuery(queryOptions, queryClient) as UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> };\n\n return withQueryKey(query, queryOptions.queryKey);\n}\n\n\n\n\n\n\nexport const getReplaceGrantsUrl = (userId: number,) => {\n\n\n\n\n return `/admin/users/${userId}/product-roles`\n}\n\n/**\n * Replace this account's roles for one product at one organisation.\n *\n * ``PUT`` because it is idempotent and the body is the whole desired state for\n * that ``(tenant, product)`` slice — sending it twice leaves the same grants.\n *\n * Two scope checks, and both are needed. The *subject* must be an account the\n * operator reaches, and the ``tenantId`` being granted at must be one they\n * reach too: without the second, an operator could grant a remit at an\n * organisation they have no authority over, which is how a scoped\n * administrator becomes an unscoped one.\n *\n * ``422`` for a role the product does not recognise —\n * :data:`~app.models.enums.PRODUCT_ROLES` decides, so ``student`` for biblio is\n * refused rather than stored and puzzled over later.\n * @summary Replace Grants\n */\nexport const replaceGrants = async (userId: number,\n productGrantWrite: ProductGrantWrite, options?: Parameters<typeof request>[1]): Promise<ProductGrantListRead> => {\n\n const getHeaders = (h?: NonNullable<RequestInit['headers']>): Record<string, string | readonly string[]> => {\n if (!h) return {};\n if (h instanceof Headers) return Object.fromEntries(h.entries());\n if (Symbol.iterator in h) {\n return Object.fromEntries(\n Array.from(h as Iterable<Iterable<string>>, (entry) => Array.from(entry) as [string, string]),\n );\n }\n const headers: Record<string, string | readonly string[]> = {};\n for (const [name, value] of Object.entries<string | readonly string[] | undefined>(h)) {\n if (value !== undefined) headers[name] = value;\n }\n return headers;\n };\nreturn request<ProductGrantListRead>(getReplaceGrantsUrl(userId),\n {\n ...options,\n method: 'PUT',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(productGrantWrite)\n }\n);}\n\n\n\n\n\nexport const getReplaceGrantsMutationKey = () => ['replaceGrants'] as const;\n\nexport const getReplaceGrantsMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof replaceGrants>>, TError,ReplaceGrantsMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof replaceGrants>>, TError,ReplaceGrantsMutationVariables, TContext> => {\n\nconst mutationKey = getReplaceGrantsMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof replaceGrants>>, ReplaceGrantsMutationVariables> = (props) => {\n const {userId,data} = props ?? {};\n\n return replaceGrants(userId,data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type ReplaceGrantsMutationResult = NonNullable<Awaited<ReturnType<typeof replaceGrants>>>\n export type ReplaceGrantsMutationBody = BodyType<ProductGrantWrite>\n export type ReplaceGrantsMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type ReplaceGrantsMutationVariables = {userId: number;data: BodyType<ProductGrantWrite>}\n\n /**\n * @summary Replace Grants\n */\nexport const useReplaceGrants = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof replaceGrants>>, TError,ReplaceGrantsMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof replaceGrants>>,\n TError,\n ReplaceGrantsMutationVariables,\n TContext\n > => {\n return useMutation(getReplaceGrantsMutationOptions(options), queryClient);\n }\n"],"mappings":";;;;;;;;;;;AAyCA,MAAM,gBAAqC,OAAU,aAAqC;CACxF,MAAM,SAAS,EAAE,SAAS;CAC1B,KAAK,MAAM,OAAO,OAAO,KAAK,KAAK,GAAG;EAGpC,IAAI,QAAQ,YAAY;EACxB,OAAO,eAAe,QAAQ,KAAK;GACjC,YAAY;GACZ,cAAc;GACd,WAAY,MAAkC;EAChD,CAAC;CACH;CACA,OAAO;AACT;AAEA,MAAa,oBAAoB,WAAoB;CAKnD,OAAO,gBAAgB,OAAO;AAChC;;;;;;;;AASA,MAAa,aAAa,OAAO,QAAgB,YAA2E;CAE1H,OAAO,QAA8B,iBAAiB,MAAM,GAC5D;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE;AAMF,MAAa,yBAAyB,WAAoB;CACtD,OAAO,CACP,gBAAgB,OAAO,eACvB;AACA;AAGJ,MAAa,6BAAkJ,QAAgB,YAC1K;CAEL,MAAM,EAAC,OAAO,cAAc,SAAS,mBAAkB,WAAW,CAAC;CAEjE,MAAM,WAAY,cAAc,YAAY,sBAAsB,MAAM;CAItE,MAAM,WAAkE,EAAE,aAAa,WAAW,QAAQ;EAAE;EAAQ,GAAG;CAAe,CAAC;CAMxI,OAAQ;EAAE;EAAU;EAAS,SAAS,WAAW,QAAQ,WAAW,KAAA;EAAW,GAAG;CAAY;AACjG;;;;AAkCA,SAAgB,cACf,QAAgB,SACd,aACiF;CAElF,MAAM,eAAe,0BAA0B,QAAO,OAAO;CAE7D,MAAM,QAAQ,SAAS,cAAc,WAAW;CAEhD,OAAO,aAAa,OAAO,aAAa,QAAQ;AAClD;AAOA,MAAa,uBAAuB,WAAoB;CAKtD,OAAO,gBAAgB,OAAO;AAChC;;;;;;;;;;;;;;;;;;AAmBA,MAAa,gBAAgB,OAAO,QAChC,mBAAsC,YAA2E;CAEjH,MAAM,cAAc,MAAwF;EAC5G,IAAI,CAAC,GAAG,OAAO,CAAC;EAChB,IAAI,aAAa,SAAS,OAAO,OAAO,YAAY,EAAE,QAAQ,CAAC;EAC/D,IAAI,OAAO,YAAY,GACrB,OAAO,OAAO,YACZ,MAAM,KAAK,IAAkC,UAAU,MAAM,KAAK,KAAK,CAAqB,CAC9F;EAEF,MAAM,UAAsD,CAAC;EAC7D,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAgD,CAAC,GAClF,IAAI,UAAU,KAAA,GAAW,QAAQ,QAAQ;EAE3C,OAAO;CACT;CACF,OAAO,QAA8B,oBAAoB,MAAM,GAC7D;EACE,GAAG;EACH,QAAQ;EACR,SAAS;GAAE,gBAAgB;GAAoB,GAAG,WAAW,SAAS,OAAO;EAAE;EAC/E,MAAM,KAAK,UAAU,iBAAiB;CACxC,CACF;AAAE;AAMF,MAAa,oCAAoC,CAAC,eAAe;AAEjE,MAAa,mCACW,YAC6F;CAErH,MAAM,cAAc,4BAA4B;CAChD,MAAM,EAAC,UAAU,iBAAiB,SAAS,mBAAkB,UACvD,QAAQ,YAAY,iBAAiB,QAAQ,YAAY,QAAQ,SAAS,cAC1E,UACE;EAAC,GAAG;EAAS,UAAU;GAAC,GAAG,QAAQ;GAAU;EAAW;CAAC,IACzD;EAAC,UAAU,EAAE,YAAa;EAAG,SAAS,KAAA;CAAS;CAKjD,MAAM,cAA2G,UAAU;EACvH,MAAM,EAAC,QAAO,SAAQ,SAAS,CAAC;EAEhC,OAAQ,cAAc,QAAO,MAAK,cAAc;CAClD;CAON,OAAQ;EAAE;EAAY,GAAG;CAAgB;AAAC;;;;AAU5C,MAAa,oBACW,SACrB,gBAKQ;CACL,OAAO,YAAY,gCAAgC,OAAO,GAAG,WAAW;AAC1E"}
1
+ {"version":3,"file":"admin-roles.js","names":[],"sources":["../../src/react/admin-roles/admin-roles.ts"],"sourcesContent":["/**\n * Generated by orval 🍺\n * Do not edit manually.\n * Mozaik backend\n * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.\n * OpenAPI spec version: 0.5.0\n */\nimport {\n useMutation,\n useQuery\n} from '@tanstack/react-query';\nimport type {\n DataTag,\n DefinedInitialDataOptions,\n DefinedUseQueryResult,\n MutationFunction,\n QueryClient,\n QueryFunction,\n QueryKey,\n UndefinedInitialDataOptions,\n UseMutationOptions,\n UseMutationResult,\n UseQueryOptions,\n UseQueryResult\n} from '@tanstack/react-query';\n\nimport type {\n HTTPExceptionResponse,\n ProductGrantListRead,\n ProductGrantWrite,\n ValidationErrorResponse\n} from '../../models';\n\nimport { request } from '../../client';\nimport type { ErrorType , BodyType } from '../../client';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n\nconst withQueryKey = <T extends object, K>(query: T, queryKey: K): T & { queryKey: K } => {\n const result = { queryKey } as T & { queryKey: K };\n for (const key of Object.keys(query)) {\n // The explicit queryKey always wins, matching the previous\n // `{ ...query, queryKey }` spread where it was set last.\n if (key === 'queryKey') continue;\n Object.defineProperty(result, key, {\n enumerable: true,\n configurable: true,\n get: () => (query as Record<string, unknown>)[key],\n });\n }\n return result;\n};\n\nexport const getListGrantsUrl = (userId: number,) => {\n\n\n\n\n return `/admin/users/${userId}/product-roles`\n}\n\n/**\n * This account's grants within the caller's organisation scope.\n *\n * Readable by SUPPORT as well as ADMIN: knowing what somebody is, is part of\n * helping them. Changing it is not.\n * @summary List Grants\n */\nexport const listGrants = async (userId: number, options?: Parameters<typeof request>[1]): Promise<ProductGrantListRead> => {\n\n return request<ProductGrantListRead>(getListGrantsUrl(userId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getListGrantsQueryKey = (userId: number,) => {\n return [\n `/admin/users/${userId}/product-roles`\n ] as const;\n }\n\n\nexport const getListGrantsQueryOptions = <TData = Awaited<ReturnType<typeof listGrants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(userId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listGrants>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getListGrantsQueryKey(userId);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof listGrants>>> = ({ signal }) => listGrants(userId, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, enabled: userId !== null && userId !== undefined, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof listGrants>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type ListGrantsQueryResult = NonNullable<Awaited<ReturnType<typeof listGrants>>>\nexport type ListGrantsQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useListGrants<TData = Awaited<ReturnType<typeof listGrants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n userId: number, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof listGrants>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof listGrants>>,\n TError,\n Awaited<ReturnType<typeof listGrants>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useListGrants<TData = Awaited<ReturnType<typeof listGrants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n userId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listGrants>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof listGrants>>,\n TError,\n Awaited<ReturnType<typeof listGrants>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useListGrants<TData = Awaited<ReturnType<typeof listGrants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n userId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listGrants>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary List Grants\n */\n\nexport function useListGrants<TData = Awaited<ReturnType<typeof listGrants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n userId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listGrants>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getListGrantsQueryOptions(userId,options)\n\n const query = useQuery(queryOptions, queryClient) as UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> };\n\n return withQueryKey(query, queryOptions.queryKey);\n}\n\n\n\n\n\n\nexport const getReplaceGrantsUrl = (userId: number,) => {\n\n\n\n\n return `/admin/users/${userId}/product-roles`\n}\n\n/**\n * Replace this account's roles for one product at one organisation.\n *\n * ``PUT`` because it is idempotent and the body is the whole desired state for\n * that ``(tenant, product)`` slice — sending it twice leaves the same grants.\n *\n * Two scope checks, and both are needed. The *subject* must be an account the\n * operator reaches, and the ``tenantId`` being granted at must be one they\n * reach too: without the second, an operator could grant a remit at an\n * organisation they have no authority over, which is how a scoped\n * administrator becomes an unscoped one.\n *\n * ``422`` for a role the product does not recognise —\n * :data:`~app.models.enums.PRODUCT_ROLES` decides, so ``student`` for biblio is\n * refused rather than stored and puzzled over later.\n * @summary Replace Grants\n */\nexport const replaceGrants = async (userId: number,\n productGrantWrite: ProductGrantWrite, options?: Parameters<typeof request>[1]): Promise<ProductGrantListRead> => {\n\n const getHeaders = (h?: NonNullable<RequestInit['headers']>): Record<string, string | readonly string[]> => {\n if (!h) return {};\n if (h instanceof Headers) return Object.fromEntries(h.entries());\n if (Symbol.iterator in h) {\n return Object.fromEntries(\n Array.from(h as Iterable<Iterable<string>>, (entry) => Array.from(entry) as [string, string]),\n );\n }\n const headers: Record<string, string | readonly string[]> = {};\n for (const [name, value] of Object.entries<string | readonly string[] | undefined>(h)) {\n if (value !== undefined) headers[name] = value;\n }\n return headers;\n };\nreturn request<ProductGrantListRead>(getReplaceGrantsUrl(userId),\n {\n ...options,\n method: 'PUT',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(productGrantWrite)\n }\n);}\n\n\n\n\n\nexport const getReplaceGrantsMutationKey = () => ['replaceGrants'] as const;\n\nexport const getReplaceGrantsMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof replaceGrants>>, TError,ReplaceGrantsMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof replaceGrants>>, TError,ReplaceGrantsMutationVariables, TContext> => {\n\nconst mutationKey = getReplaceGrantsMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof replaceGrants>>, ReplaceGrantsMutationVariables> = (props) => {\n const {userId,data} = props ?? {};\n\n return replaceGrants(userId,data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type ReplaceGrantsMutationResult = NonNullable<Awaited<ReturnType<typeof replaceGrants>>>\n export type ReplaceGrantsMutationBody = BodyType<ProductGrantWrite>\n export type ReplaceGrantsMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type ReplaceGrantsMutationVariables = {userId: number;data: BodyType<ProductGrantWrite>}\n\n /**\n * @summary Replace Grants\n */\nexport const useReplaceGrants = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof replaceGrants>>, TError,ReplaceGrantsMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof replaceGrants>>,\n TError,\n ReplaceGrantsMutationVariables,\n TContext\n > => {\n return useMutation(getReplaceGrantsMutationOptions(options), queryClient);\n }\n"],"mappings":";;;;;;;;;;;AAyCA,MAAM,gBAAqC,OAAU,aAAqC;CACxF,MAAM,SAAS,EAAE,SAAS;CAC1B,KAAK,MAAM,OAAO,OAAO,KAAK,KAAK,GAAG;EAGpC,IAAI,QAAQ,YAAY;EACxB,OAAO,eAAe,QAAQ,KAAK;GACjC,YAAY;GACZ,cAAc;GACd,WAAY,MAAkC;EAChD,CAAC;CACH;CACA,OAAO;AACT;AAEA,MAAa,oBAAoB,WAAoB;CAKnD,OAAO,gBAAgB,OAAO;AAChC;;;;;;;;AASA,MAAa,aAAa,OAAO,QAAgB,YAA2E;CAE1H,OAAO,QAA8B,iBAAiB,MAAM,GAC5D;EACE,GAAG;EACH,QAAQ;CAGV,CACF;AAAE;AAMF,MAAa,yBAAyB,WAAoB;CACtD,OAAO,CACP,gBAAgB,OAAO,eACvB;AACA;AAGJ,MAAa,6BAAkJ,QAAgB,YAC1K;CAEL,MAAM,EAAC,OAAO,cAAc,SAAS,mBAAkB,WAAW,CAAC;CAEjE,MAAM,WAAY,cAAc,YAAY,sBAAsB,MAAM;CAItE,MAAM,WAAkE,EAAE,aAAa,WAAW,QAAQ;EAAE;EAAQ,GAAG;CAAe,CAAC;CAMxI,OAAQ;EAAE;EAAU;EAAS,SAAS,WAAW,QAAQ,WAAW,KAAA;EAAW,GAAG;CAAY;AACjG;;;;AAkCA,SAAgB,cACf,QAAgB,SACd,aACiF;CAElF,MAAM,eAAe,0BAA0B,QAAO,OAAO;CAE7D,MAAM,QAAQ,SAAS,cAAc,WAAW;CAEhD,OAAO,aAAa,OAAO,aAAa,QAAQ;AAClD;AAOA,MAAa,uBAAuB,WAAoB;CAKtD,OAAO,gBAAgB,OAAO;AAChC;;;;;;;;;;;;;;;;;;AAmBA,MAAa,gBAAgB,OAAO,QAChC,mBAAsC,YAA2E;CAEjH,MAAM,cAAc,MAAwF;EAC5G,IAAI,CAAC,GAAG,OAAO,CAAC;EAChB,IAAI,aAAa,SAAS,OAAO,OAAO,YAAY,EAAE,QAAQ,CAAC;EAC/D,IAAI,OAAO,YAAY,GACrB,OAAO,OAAO,YACZ,MAAM,KAAK,IAAkC,UAAU,MAAM,KAAK,KAAK,CAAqB,CAC9F;EAEF,MAAM,UAAsD,CAAC;EAC7D,KAAK,MAAM,CAAC,MAAM,UAAU,OAAO,QAAgD,CAAC,GAClF,IAAI,UAAU,KAAA,GAAW,QAAQ,QAAQ;EAE3C,OAAO;CACT;CACF,OAAO,QAA8B,oBAAoB,MAAM,GAC7D;EACE,GAAG;EACH,QAAQ;EACR,SAAS;GAAE,gBAAgB;GAAoB,GAAG,WAAW,SAAS,OAAO;EAAE;EAC/E,MAAM,KAAK,UAAU,iBAAiB;CACxC,CACF;AAAE;AAMF,MAAa,oCAAoC,CAAC,eAAe;AAEjE,MAAa,mCACW,YAC6F;CAErH,MAAM,cAAc,4BAA4B;CAChD,MAAM,EAAC,UAAU,iBAAiB,SAAS,mBAAkB,UACvD,QAAQ,YAAY,iBAAiB,QAAQ,YAAY,QAAQ,SAAS,cAC1E,UACE;EAAC,GAAG;EAAS,UAAU;GAAC,GAAG,QAAQ;GAAU;EAAW;CAAC,IACzD;EAAC,UAAU,EAAE,YAAa;EAAG,SAAS,KAAA;CAAS;CAKjD,MAAM,cAA2G,UAAU;EACvH,MAAM,EAAC,QAAO,SAAQ,SAAS,CAAC;EAEhC,OAAQ,cAAc,QAAO,MAAK,cAAc;CAClD;CAON,OAAQ;EAAE;EAAY,GAAG;CAAgB;AAAC;;;;AAU5C,MAAa,oBACW,SACrB,gBAKQ;CACL,OAAO,YAAY,gCAAgC,OAAO,GAAG,WAAW;AAC1E"}
@@ -1,6 +1,6 @@
1
1
 
2
- import { Cr as DemoUserWrite, Gn as HTTPExceptionResponse, Wn as ImpersonationWrite, j as SupportSessionRead, t as ValidationErrorResponse, wr as DemoUserRead } from "../index-wL_20vR8.js";
3
- import { a as ErrorType, c as request, n as BodyType } from "../client-BDwBZYB0.js";
2
+ import { P as SupportSessionRead, ar as ImpersonationWrite, ii as DemoUserRead, ri as DemoUserWrite, t as ValidationErrorResponse, wr as HTTPExceptionResponse } from "../chunks/index.js";
3
+ import { a as ErrorType, c as request, n as BodyType } from "../chunks/client.js";
4
4
  import { QueryClient, UseMutationOptions, UseMutationResult } from "@tanstack/react-query";
5
5
  //#region src/react/admin-support/admin-support.d.ts
6
6
  type SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { r as request } from "../client-D3kMOcIr.js";
2
+ import { r as request } from "../chunks/client.js";
3
3
  import { useMutation } from "@tanstack/react-query";
4
4
  //#region src/react/admin-support/admin-support.ts
5
5
  /**
@@ -7,7 +7,7 @@ import { useMutation } from "@tanstack/react-query";
7
7
  * Do not edit manually.
8
8
  * Mozaik backend
9
9
  * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.
10
- * OpenAPI spec version: 0.1.0
10
+ * OpenAPI spec version: 0.5.0
11
11
  */
12
12
  const getCreateDemoUserUrl = () => {
13
13
  return `/admin/demo-users`;
@@ -1 +1 @@
1
- {"version":3,"file":"admin-support.js","names":[],"sources":["../../src/react/admin-support/admin-support.ts"],"sourcesContent":["/**\n * Generated by orval 🍺\n * Do not edit manually.\n * Mozaik backend\n * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.\n * OpenAPI spec version: 0.1.0\n */\nimport {\n useMutation\n} from '@tanstack/react-query';\nimport type {\n MutationFunction,\n QueryClient,\n UseMutationOptions,\n UseMutationResult\n} from '@tanstack/react-query';\n\nimport type {\n DemoUserRead,\n DemoUserWrite,\n HTTPExceptionResponse,\n ImpersonationWrite,\n SupportSessionRead,\n ValidationErrorResponse\n} from '../../models';\n\nimport { request } from '../../client';\nimport type { ErrorType , BodyType } from '../../client';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n\nexport const getCreateDemoUserUrl = () => {\n\n\n\n\n return `/admin/demo-users`\n}\n\n/**\n * Create, or return, a demonstration account for an establishment (E57).\n *\n * ``RequireAdmin`` rather than ``RequireStaff``: this creates an account inside\n * a customer's tenant, which is a change to what the customer has, not an\n * assistance to one of their members.\n *\n * **The account has no password and cannot be signed into directly.** The\n * legacy derived one from the establishment id alone — ``Etab{id padded}$``,\n * at ``etab_{id}@ta.com`` — and then redirected into the impersonation route\n * (defect D15). Anyone who noticed the pattern held a working credential for\n * every establishment. Here the row is created without a credential and is\n * reached through E56, which is audited.\n *\n * ``201`` when created, ``200`` when it already existed. Idempotent, because a\n * salesperson clicking twice should not end up with two demo accounts.\n * @summary Create Demo User\n */\nexport const createDemoUser = async (demoUserWrite: DemoUserWrite, options?: Parameters<typeof request>[1]): Promise<DemoUserRead> => {\n\n const getHeaders = (h?: NonNullable<RequestInit['headers']>): Record<string, string | readonly string[]> => {\n if (!h) return {};\n if (h instanceof Headers) return Object.fromEntries(h.entries());\n if (Symbol.iterator in h) {\n return Object.fromEntries(\n Array.from(h as Iterable<Iterable<string>>, (entry) => Array.from(entry) as [string, string]),\n );\n }\n const headers: Record<string, string | readonly string[]> = {};\n for (const [name, value] of Object.entries<string | readonly string[] | undefined>(h)) {\n if (value !== undefined) headers[name] = value;\n }\n return headers;\n };\nreturn request<DemoUserRead>(getCreateDemoUserUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(demoUserWrite)\n }\n);}\n\n\n\n\n\nexport const getCreateDemoUserMutationKey = () => ['createDemoUser'] as const;\n\nexport const getCreateDemoUserMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof createDemoUser>>, TError,CreateDemoUserMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof createDemoUser>>, TError,CreateDemoUserMutationVariables, TContext> => {\n\nconst mutationKey = getCreateDemoUserMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof createDemoUser>>, CreateDemoUserMutationVariables> = (props) => {\n const {data} = props ?? {};\n\n return createDemoUser(data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type CreateDemoUserMutationResult = NonNullable<Awaited<ReturnType<typeof createDemoUser>>>\n export type CreateDemoUserMutationBody = BodyType<DemoUserWrite>\n export type CreateDemoUserMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type CreateDemoUserMutationVariables = {data: BodyType<DemoUserWrite>}\n\n /**\n * @summary Create Demo User\n */\nexport const useCreateDemoUser = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof createDemoUser>>, TError,CreateDemoUserMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof createDemoUser>>,\n TError,\n CreateDemoUserMutationVariables,\n TContext\n > => {\n return useMutation(getCreateDemoUserMutationOptions(options), queryClient);\n }\n export const getOpenSupportSessionUrl = () => {\n\n\n\n\n return `/admin/impersonations`\n}\n\n/**\n * Open a support session acting as another account (E56).\n *\n * ``reason`` is mandatory and exists to be logged. A support action with no\n * stated reason cannot be told apart from an abuse of the same endpoint.\n *\n * **This returns no tokens.** It used to: a Keycloak token-exchange session for\n * the subject, on the reasoning that the platform should mint no credentials and\n * that the subject's own assurance level would keep privileged operations out of\n * reach. Both halves turned out to be wrong. The exchanged token carried no\n * actor claim, so it was indistinguishable from the patron's own and the trail\n * stopped at this row; and it carried no ``assurance`` claim either, which\n * ``clamp_assurance`` reads as *unconstrained* — so the operator resolved to\n * ``HIGH`` and could close the account, the single thing the design promised to\n * prevent. Keycloak 26 also rejects the grant outright.\n *\n * So the operator keeps their own token and sends ``X-Acting-As`` with the id\n * returned here. Nothing is minted, the authenticated identity stays the\n * operator, and the session is clamped to the lowest assurance by\n * :func:`app.core.security.acting_as` — which makes E14 and E17 unreachable\n * through the guard that already exists rather than through a special case.\n *\n * Ending it early is ``DELETE /admin/impersonations/{id}``, which must be sent\n * *without* the header: a support session holds no staff roles.\n * @summary Open Support Session\n */\nexport const openSupportSession = async (impersonationWrite: ImpersonationWrite, options?: Parameters<typeof request>[1]): Promise<SupportSessionRead> => {\n\n const getHeaders = (h?: NonNullable<RequestInit['headers']>): Record<string, string | readonly string[]> => {\n if (!h) return {};\n if (h instanceof Headers) return Object.fromEntries(h.entries());\n if (Symbol.iterator in h) {\n return Object.fromEntries(\n Array.from(h as Iterable<Iterable<string>>, (entry) => Array.from(entry) as [string, string]),\n );\n }\n const headers: Record<string, string | readonly string[]> = {};\n for (const [name, value] of Object.entries<string | readonly string[] | undefined>(h)) {\n if (value !== undefined) headers[name] = value;\n }\n return headers;\n };\nreturn request<SupportSessionRead>(getOpenSupportSessionUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(impersonationWrite)\n }\n);}\n\n\n\n\n\nexport const getOpenSupportSessionMutationKey = () => ['openSupportSession'] as const;\n\nexport const getOpenSupportSessionMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof openSupportSession>>, TError,OpenSupportSessionMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof openSupportSession>>, TError,OpenSupportSessionMutationVariables, TContext> => {\n\nconst mutationKey = getOpenSupportSessionMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof openSupportSession>>, OpenSupportSessionMutationVariables> = (props) => {\n const {data} = props ?? {};\n\n return openSupportSession(data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type OpenSupportSessionMutationResult = NonNullable<Awaited<ReturnType<typeof openSupportSession>>>\n export type OpenSupportSessionMutationBody = BodyType<ImpersonationWrite>\n export type OpenSupportSessionMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type OpenSupportSessionMutationVariables = {data: BodyType<ImpersonationWrite>}\n\n /**\n * @summary Open Support Session\n */\nexport const useOpenSupportSession = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof openSupportSession>>, TError,OpenSupportSessionMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof openSupportSession>>,\n TError,\n OpenSupportSessionMutationVariables,\n TContext\n > => {\n return useMutation(getOpenSupportSessionMutationOptions(options), queryClient);\n }\n export const getCloseSupportSessionUrl = (supportSessionId: number,) => {\n\n\n\n\n return `/admin/impersonations/${supportSessionId}`\n}\n\n/**\n * End a support session early. Idempotent.\n *\n * Must be called *without* ``X-Acting-As``: a session in progress carries no\n * staff roles, so a request made through one cannot reach this endpoint. That\n * is deliberate — the operator steps out before they can close it, and simply\n * dropping the header ends the session's effect immediately either way.\n *\n * ``204`` whether or not the row was still open, and whether or not it was\n * theirs. A support session id is a bare integer and must not be an oracle.\n * @summary Close Support Session\n */\nexport const closeSupportSession = async (supportSessionId: number, options?: Parameters<typeof request>[1]): Promise<void> => {\n\n return request<void>(getCloseSupportSessionUrl(supportSessionId),\n {\n ...options,\n method: 'DELETE'\n\n\n }\n);}\n\n\n\n\n\nexport const getCloseSupportSessionMutationKey = () => ['closeSupportSession'] as const;\n\nexport const getCloseSupportSessionMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof closeSupportSession>>, TError,CloseSupportSessionMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof closeSupportSession>>, TError,CloseSupportSessionMutationVariables, TContext> => {\n\nconst mutationKey = getCloseSupportSessionMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof closeSupportSession>>, CloseSupportSessionMutationVariables> = (props) => {\n const {supportSessionId} = props ?? {};\n\n return closeSupportSession(supportSessionId,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type CloseSupportSessionMutationResult = NonNullable<Awaited<ReturnType<typeof closeSupportSession>>>\n\n export type CloseSupportSessionMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type CloseSupportSessionMutationVariables = {supportSessionId: number}\n\n /**\n * @summary Close Support Session\n */\nexport const useCloseSupportSession = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof closeSupportSession>>, TError,CloseSupportSessionMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof closeSupportSession>>,\n TError,\n CloseSupportSessionMutationVariables,\n TContext\n > => {\n return useMutation(getCloseSupportSessionMutationOptions(options), queryClient);\n }\n"],"mappings":"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"}
1
+ {"version":3,"file":"admin-support.js","names":[],"sources":["../../src/react/admin-support/admin-support.ts"],"sourcesContent":["/**\n * Generated by orval 🍺\n * Do not edit manually.\n * Mozaik backend\n * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.\n * OpenAPI spec version: 0.5.0\n */\nimport {\n useMutation\n} from '@tanstack/react-query';\nimport type {\n MutationFunction,\n QueryClient,\n UseMutationOptions,\n UseMutationResult\n} from '@tanstack/react-query';\n\nimport type {\n DemoUserRead,\n DemoUserWrite,\n HTTPExceptionResponse,\n ImpersonationWrite,\n SupportSessionRead,\n ValidationErrorResponse\n} from '../../models';\n\nimport { request } from '../../client';\nimport type { ErrorType , BodyType } from '../../client';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n\nexport const getCreateDemoUserUrl = () => {\n\n\n\n\n return `/admin/demo-users`\n}\n\n/**\n * Create, or return, a demonstration account for an establishment (E57).\n *\n * ``RequireAdmin`` rather than ``RequireStaff``: this creates an account inside\n * a customer's tenant, which is a change to what the customer has, not an\n * assistance to one of their members.\n *\n * **The account has no password and cannot be signed into directly.** The\n * legacy derived one from the establishment id alone — ``Etab{id padded}$``,\n * at ``etab_{id}@ta.com`` — and then redirected into the impersonation route\n * (defect D15). Anyone who noticed the pattern held a working credential for\n * every establishment. Here the row is created without a credential and is\n * reached through E56, which is audited.\n *\n * ``201`` when created, ``200`` when it already existed. Idempotent, because a\n * salesperson clicking twice should not end up with two demo accounts.\n * @summary Create Demo User\n */\nexport const createDemoUser = async (demoUserWrite: DemoUserWrite, options?: Parameters<typeof request>[1]): Promise<DemoUserRead> => {\n\n const getHeaders = (h?: NonNullable<RequestInit['headers']>): Record<string, string | readonly string[]> => {\n if (!h) return {};\n if (h instanceof Headers) return Object.fromEntries(h.entries());\n if (Symbol.iterator in h) {\n return Object.fromEntries(\n Array.from(h as Iterable<Iterable<string>>, (entry) => Array.from(entry) as [string, string]),\n );\n }\n const headers: Record<string, string | readonly string[]> = {};\n for (const [name, value] of Object.entries<string | readonly string[] | undefined>(h)) {\n if (value !== undefined) headers[name] = value;\n }\n return headers;\n };\nreturn request<DemoUserRead>(getCreateDemoUserUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(demoUserWrite)\n }\n);}\n\n\n\n\n\nexport const getCreateDemoUserMutationKey = () => ['createDemoUser'] as const;\n\nexport const getCreateDemoUserMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof createDemoUser>>, TError,CreateDemoUserMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof createDemoUser>>, TError,CreateDemoUserMutationVariables, TContext> => {\n\nconst mutationKey = getCreateDemoUserMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof createDemoUser>>, CreateDemoUserMutationVariables> = (props) => {\n const {data} = props ?? {};\n\n return createDemoUser(data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type CreateDemoUserMutationResult = NonNullable<Awaited<ReturnType<typeof createDemoUser>>>\n export type CreateDemoUserMutationBody = BodyType<DemoUserWrite>\n export type CreateDemoUserMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type CreateDemoUserMutationVariables = {data: BodyType<DemoUserWrite>}\n\n /**\n * @summary Create Demo User\n */\nexport const useCreateDemoUser = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof createDemoUser>>, TError,CreateDemoUserMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof createDemoUser>>,\n TError,\n CreateDemoUserMutationVariables,\n TContext\n > => {\n return useMutation(getCreateDemoUserMutationOptions(options), queryClient);\n }\n export const getOpenSupportSessionUrl = () => {\n\n\n\n\n return `/admin/impersonations`\n}\n\n/**\n * Open a support session acting as another account (E56).\n *\n * ``reason`` is mandatory and exists to be logged. A support action with no\n * stated reason cannot be told apart from an abuse of the same endpoint.\n *\n * **This returns no tokens.** It used to: a Keycloak token-exchange session for\n * the subject, on the reasoning that the platform should mint no credentials and\n * that the subject's own assurance level would keep privileged operations out of\n * reach. Both halves turned out to be wrong. The exchanged token carried no\n * actor claim, so it was indistinguishable from the patron's own and the trail\n * stopped at this row; and it carried no ``assurance`` claim either, which\n * ``clamp_assurance`` reads as *unconstrained* — so the operator resolved to\n * ``HIGH`` and could close the account, the single thing the design promised to\n * prevent. Keycloak 26 also rejects the grant outright.\n *\n * So the operator keeps their own token and sends ``X-Acting-As`` with the id\n * returned here. Nothing is minted, the authenticated identity stays the\n * operator, and the session is clamped to the lowest assurance by\n * :func:`app.core.security.acting_as` — which makes E14 and E17 unreachable\n * through the guard that already exists rather than through a special case.\n *\n * Ending it early is ``DELETE /admin/impersonations/{id}``, which must be sent\n * *without* the header: a support session holds no staff roles.\n * @summary Open Support Session\n */\nexport const openSupportSession = async (impersonationWrite: ImpersonationWrite, options?: Parameters<typeof request>[1]): Promise<SupportSessionRead> => {\n\n const getHeaders = (h?: NonNullable<RequestInit['headers']>): Record<string, string | readonly string[]> => {\n if (!h) return {};\n if (h instanceof Headers) return Object.fromEntries(h.entries());\n if (Symbol.iterator in h) {\n return Object.fromEntries(\n Array.from(h as Iterable<Iterable<string>>, (entry) => Array.from(entry) as [string, string]),\n );\n }\n const headers: Record<string, string | readonly string[]> = {};\n for (const [name, value] of Object.entries<string | readonly string[] | undefined>(h)) {\n if (value !== undefined) headers[name] = value;\n }\n return headers;\n };\nreturn request<SupportSessionRead>(getOpenSupportSessionUrl(),\n {\n ...options,\n method: 'POST',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(impersonationWrite)\n }\n);}\n\n\n\n\n\nexport const getOpenSupportSessionMutationKey = () => ['openSupportSession'] as const;\n\nexport const getOpenSupportSessionMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof openSupportSession>>, TError,OpenSupportSessionMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof openSupportSession>>, TError,OpenSupportSessionMutationVariables, TContext> => {\n\nconst mutationKey = getOpenSupportSessionMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof openSupportSession>>, OpenSupportSessionMutationVariables> = (props) => {\n const {data} = props ?? {};\n\n return openSupportSession(data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type OpenSupportSessionMutationResult = NonNullable<Awaited<ReturnType<typeof openSupportSession>>>\n export type OpenSupportSessionMutationBody = BodyType<ImpersonationWrite>\n export type OpenSupportSessionMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type OpenSupportSessionMutationVariables = {data: BodyType<ImpersonationWrite>}\n\n /**\n * @summary Open Support Session\n */\nexport const useOpenSupportSession = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof openSupportSession>>, TError,OpenSupportSessionMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof openSupportSession>>,\n TError,\n OpenSupportSessionMutationVariables,\n TContext\n > => {\n return useMutation(getOpenSupportSessionMutationOptions(options), queryClient);\n }\n export const getCloseSupportSessionUrl = (supportSessionId: number,) => {\n\n\n\n\n return `/admin/impersonations/${supportSessionId}`\n}\n\n/**\n * End a support session early. Idempotent.\n *\n * Must be called *without* ``X-Acting-As``: a session in progress carries no\n * staff roles, so a request made through one cannot reach this endpoint. That\n * is deliberate — the operator steps out before they can close it, and simply\n * dropping the header ends the session's effect immediately either way.\n *\n * ``204`` whether or not the row was still open, and whether or not it was\n * theirs. A support session id is a bare integer and must not be an oracle.\n * @summary Close Support Session\n */\nexport const closeSupportSession = async (supportSessionId: number, options?: Parameters<typeof request>[1]): Promise<void> => {\n\n return request<void>(getCloseSupportSessionUrl(supportSessionId),\n {\n ...options,\n method: 'DELETE'\n\n\n }\n);}\n\n\n\n\n\nexport const getCloseSupportSessionMutationKey = () => ['closeSupportSession'] as const;\n\nexport const getCloseSupportSessionMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof closeSupportSession>>, TError,CloseSupportSessionMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof closeSupportSession>>, TError,CloseSupportSessionMutationVariables, TContext> => {\n\nconst mutationKey = getCloseSupportSessionMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof closeSupportSession>>, CloseSupportSessionMutationVariables> = (props) => {\n const {supportSessionId} = props ?? {};\n\n return closeSupportSession(supportSessionId,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type CloseSupportSessionMutationResult = NonNullable<Awaited<ReturnType<typeof closeSupportSession>>>\n\n export type CloseSupportSessionMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type CloseSupportSessionMutationVariables = {supportSessionId: number}\n\n /**\n * @summary Close Support Session\n */\nexport const useCloseSupportSession = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof closeSupportSession>>, TError,CloseSupportSessionMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof closeSupportSession>>,\n TError,\n CloseSupportSessionMutationVariables,\n TContext\n > => {\n return useMutation(getCloseSupportSessionMutationOptions(options), queryClient);\n }\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
 
2
- import { D as TenantSettingsUpdateWrite, Gn as HTTPExceptionResponse, k as TenantSettingsRead, t as ValidationErrorResponse } from "../index-wL_20vR8.js";
3
- import { a as ErrorType, c as request, n as BodyType } from "../client-BDwBZYB0.js";
2
+ import { D as TenantSettingsUpdateWrite, G as SearchTenantsParams, N as TenantDirectoryParams, j as TenantSearchPage, k as TenantSettingsRead, t as ValidationErrorResponse, wr as HTTPExceptionResponse } from "../chunks/index.js";
3
+ import { a as ErrorType, c as request, n as BodyType } from "../chunks/client.js";
4
4
  import { DataTag, DefinedInitialDataOptions, DefinedUseQueryResult, QueryClient, QueryKey, UndefinedInitialDataOptions, UseMutationOptions, UseMutationResult, UseQueryOptions, UseQueryResult } from "@tanstack/react-query";
5
5
  //#region src/react/admin-tenants/admin-tenants.d.ts
6
6
  type SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];
@@ -41,6 +41,72 @@ export declare function useListTenants<TData = Awaited<ReturnType<typeof listTen
41
41
  }, queryClient?: QueryClient): UseQueryResult<TData, TError> & {
42
42
  queryKey: DataTag<QueryKey, TData, TError>;
43
43
  };
44
+ export declare const getTenantDirectoryUrl: (params?: TenantDirectoryParams) => string;
45
+ /**
46
+ * Browse tenant summaries within the employee's scope, one bounded page.
47
+ * @summary Tenant Directory
48
+ */
49
+ export declare const tenantDirectory: (params?: TenantDirectoryParams, options?: Parameters<typeof request>[1]) => Promise<TenantSearchPage>;
50
+ export declare const getTenantDirectoryQueryKey: (params?: TenantDirectoryParams) => readonly ["/admin/tenants/directory", ...TenantDirectoryParams[]];
51
+ export declare const getTenantDirectoryQueryOptions: <TData = Awaited<ReturnType<typeof tenantDirectory>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(params?: TenantDirectoryParams, options?: {
52
+ query?: Partial<UseQueryOptions<Awaited<ReturnType<typeof tenantDirectory>>, TError, TData>>;
53
+ request?: SecondParameter<typeof request>;
54
+ }) => UseQueryOptions<Awaited<ReturnType<typeof tenantDirectory>>, TError, TData> & {
55
+ queryKey: DataTag<QueryKey, TData, TError>;
56
+ };
57
+ export type TenantDirectoryQueryResult = NonNullable<Awaited<ReturnType<typeof tenantDirectory>>>;
58
+ export type TenantDirectoryQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>;
59
+ export declare function useTenantDirectory<TData = Awaited<ReturnType<typeof tenantDirectory>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(params: undefined | TenantDirectoryParams, options: {
60
+ query: Partial<UseQueryOptions<Awaited<ReturnType<typeof tenantDirectory>>, TError, TData>> & Pick<DefinedInitialDataOptions<Awaited<ReturnType<typeof tenantDirectory>>, TError, Awaited<ReturnType<typeof tenantDirectory>>>, 'initialData'>;
61
+ request?: SecondParameter<typeof request>;
62
+ }, queryClient?: QueryClient): DefinedUseQueryResult<TData, TError> & {
63
+ queryKey: DataTag<QueryKey, TData, TError>;
64
+ };
65
+ export declare function useTenantDirectory<TData = Awaited<ReturnType<typeof tenantDirectory>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(params?: TenantDirectoryParams, options?: {
66
+ query?: Partial<UseQueryOptions<Awaited<ReturnType<typeof tenantDirectory>>, TError, TData>> & Pick<UndefinedInitialDataOptions<Awaited<ReturnType<typeof tenantDirectory>>, TError, Awaited<ReturnType<typeof tenantDirectory>>>, 'initialData'>;
67
+ request?: SecondParameter<typeof request>;
68
+ }, queryClient?: QueryClient): UseQueryResult<TData, TError> & {
69
+ queryKey: DataTag<QueryKey, TData, TError>;
70
+ };
71
+ export declare function useTenantDirectory<TData = Awaited<ReturnType<typeof tenantDirectory>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(params?: TenantDirectoryParams, options?: {
72
+ query?: Partial<UseQueryOptions<Awaited<ReturnType<typeof tenantDirectory>>, TError, TData>>;
73
+ request?: SecondParameter<typeof request>;
74
+ }, queryClient?: QueryClient): UseQueryResult<TData, TError> & {
75
+ queryKey: DataTag<QueryKey, TData, TError>;
76
+ };
77
+ export declare const getSearchTenantsUrl: (params: SearchTenantsParams) => string;
78
+ /**
79
+ * Find tenants by literal name within the employee's tenant scope.
80
+ * @summary Search Tenants
81
+ */
82
+ export declare const searchTenants: (params: SearchTenantsParams, options?: Parameters<typeof request>[1]) => Promise<TenantSearchPage>;
83
+ export declare const getSearchTenantsQueryKey: (params?: SearchTenantsParams) => readonly ["/admin/tenants/search", ...SearchTenantsParams[]];
84
+ export declare const getSearchTenantsQueryOptions: <TData = Awaited<ReturnType<typeof searchTenants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(params: SearchTenantsParams, options?: {
85
+ query?: Partial<UseQueryOptions<Awaited<ReturnType<typeof searchTenants>>, TError, TData>>;
86
+ request?: SecondParameter<typeof request>;
87
+ }) => UseQueryOptions<Awaited<ReturnType<typeof searchTenants>>, TError, TData> & {
88
+ queryKey: DataTag<QueryKey, TData, TError>;
89
+ };
90
+ export type SearchTenantsQueryResult = NonNullable<Awaited<ReturnType<typeof searchTenants>>>;
91
+ export type SearchTenantsQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>;
92
+ export declare function useSearchTenants<TData = Awaited<ReturnType<typeof searchTenants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(params: SearchTenantsParams, options: {
93
+ query: Partial<UseQueryOptions<Awaited<ReturnType<typeof searchTenants>>, TError, TData>> & Pick<DefinedInitialDataOptions<Awaited<ReturnType<typeof searchTenants>>, TError, Awaited<ReturnType<typeof searchTenants>>>, 'initialData'>;
94
+ request?: SecondParameter<typeof request>;
95
+ }, queryClient?: QueryClient): DefinedUseQueryResult<TData, TError> & {
96
+ queryKey: DataTag<QueryKey, TData, TError>;
97
+ };
98
+ export declare function useSearchTenants<TData = Awaited<ReturnType<typeof searchTenants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(params: SearchTenantsParams, options?: {
99
+ query?: Partial<UseQueryOptions<Awaited<ReturnType<typeof searchTenants>>, TError, TData>> & Pick<UndefinedInitialDataOptions<Awaited<ReturnType<typeof searchTenants>>, TError, Awaited<ReturnType<typeof searchTenants>>>, 'initialData'>;
100
+ request?: SecondParameter<typeof request>;
101
+ }, queryClient?: QueryClient): UseQueryResult<TData, TError> & {
102
+ queryKey: DataTag<QueryKey, TData, TError>;
103
+ };
104
+ export declare function useSearchTenants<TData = Awaited<ReturnType<typeof searchTenants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(params: SearchTenantsParams, options?: {
105
+ query?: Partial<UseQueryOptions<Awaited<ReturnType<typeof searchTenants>>, TError, TData>>;
106
+ request?: SecondParameter<typeof request>;
107
+ }, queryClient?: QueryClient): UseQueryResult<TData, TError> & {
108
+ queryKey: DataTag<QueryKey, TData, TError>;
109
+ };
44
110
  export declare const getReadTenantUrl: (tenantId: number) => string;
45
111
  /**
46
112
  * One tenant's configuration.
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { r as request } from "../client-D3kMOcIr.js";
2
+ import { r as request } from "../chunks/client.js";
3
3
  import { useMutation, useQuery } from "@tanstack/react-query";
4
4
  //#region src/react/admin-tenants/admin-tenants.ts
5
5
  /**
@@ -7,7 +7,7 @@ import { useMutation, useQuery } from "@tanstack/react-query";
7
7
  * Do not edit manually.
8
8
  * Mozaik backend
9
9
  * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.
10
- * OpenAPI spec version: 0.1.0
10
+ * OpenAPI spec version: 0.5.0
11
11
  */
12
12
  const withQueryKey = (query, queryKey) => {
13
13
  const result = { queryKey };
@@ -62,6 +62,90 @@ function useListTenants(options, queryClient) {
62
62
  const query = useQuery(queryOptions, queryClient);
63
63
  return withQueryKey(query, queryOptions.queryKey);
64
64
  }
65
+ const getTenantDirectoryUrl = (params) => {
66
+ const normalizedParams = new URLSearchParams();
67
+ Object.entries(params || {}).forEach(([key, value]) => {
68
+ if (value !== void 0) normalizedParams.append(key, value === null ? "null" : String(value));
69
+ });
70
+ const stringifiedParams = normalizedParams.toString();
71
+ return stringifiedParams.length > 0 ? `/admin/tenants/directory?${stringifiedParams}` : `/admin/tenants/directory`;
72
+ };
73
+ /**
74
+ * Browse tenant summaries within the employee's scope, one bounded page.
75
+ * @summary Tenant Directory
76
+ */
77
+ const tenantDirectory = async (params, options) => {
78
+ return request(getTenantDirectoryUrl(params), {
79
+ ...options,
80
+ method: "GET"
81
+ });
82
+ };
83
+ const getTenantDirectoryQueryKey = (params) => {
84
+ return [`/admin/tenants/directory`, ...params ? [params] : []];
85
+ };
86
+ const getTenantDirectoryQueryOptions = (params, options) => {
87
+ const { query: queryOptions, request: requestOptions } = options ?? {};
88
+ const queryKey = queryOptions?.queryKey ?? getTenantDirectoryQueryKey(params);
89
+ const queryFn = ({ signal }) => tenantDirectory(params, {
90
+ signal,
91
+ ...requestOptions
92
+ });
93
+ return {
94
+ queryKey,
95
+ queryFn,
96
+ ...queryOptions
97
+ };
98
+ };
99
+ /**
100
+ * @summary Tenant Directory
101
+ */
102
+ function useTenantDirectory(params, options, queryClient) {
103
+ const queryOptions = getTenantDirectoryQueryOptions(params, options);
104
+ const query = useQuery(queryOptions, queryClient);
105
+ return withQueryKey(query, queryOptions.queryKey);
106
+ }
107
+ const getSearchTenantsUrl = (params) => {
108
+ const normalizedParams = new URLSearchParams();
109
+ Object.entries(params || {}).forEach(([key, value]) => {
110
+ if (value !== void 0) normalizedParams.append(key, value === null ? "null" : String(value));
111
+ });
112
+ const stringifiedParams = normalizedParams.toString();
113
+ return stringifiedParams.length > 0 ? `/admin/tenants/search?${stringifiedParams}` : `/admin/tenants/search`;
114
+ };
115
+ /**
116
+ * Find tenants by literal name within the employee's tenant scope.
117
+ * @summary Search Tenants
118
+ */
119
+ const searchTenants = async (params, options) => {
120
+ return request(getSearchTenantsUrl(params), {
121
+ ...options,
122
+ method: "GET"
123
+ });
124
+ };
125
+ const getSearchTenantsQueryKey = (params) => {
126
+ return [`/admin/tenants/search`, ...params ? [params] : []];
127
+ };
128
+ const getSearchTenantsQueryOptions = (params, options) => {
129
+ const { query: queryOptions, request: requestOptions } = options ?? {};
130
+ const queryKey = queryOptions?.queryKey ?? getSearchTenantsQueryKey(params);
131
+ const queryFn = ({ signal }) => searchTenants(params, {
132
+ signal,
133
+ ...requestOptions
134
+ });
135
+ return {
136
+ queryKey,
137
+ queryFn,
138
+ ...queryOptions
139
+ };
140
+ };
141
+ /**
142
+ * @summary Search Tenants
143
+ */
144
+ function useSearchTenants(params, options, queryClient) {
145
+ const queryOptions = getSearchTenantsQueryOptions(params, options);
146
+ const query = useQuery(queryOptions, queryClient);
147
+ return withQueryKey(query, queryOptions.queryKey);
148
+ }
65
149
  const getReadTenantUrl = (tenantId) => {
66
150
  return `/admin/tenants/${tenantId}`;
67
151
  };
@@ -160,6 +244,6 @@ const useUpdateTenant = (options, queryClient) => {
160
244
  return useMutation(getUpdateTenantMutationOptions(options), queryClient);
161
245
  };
162
246
  //#endregion
163
- export { getListTenantsQueryKey, getListTenantsQueryOptions, getListTenantsUrl, getReadTenantQueryKey, getReadTenantQueryOptions, getReadTenantUrl, getUpdateTenantMutationKey, getUpdateTenantMutationOptions, getUpdateTenantUrl, listTenants, readTenant, updateTenant, useListTenants, useReadTenant, useUpdateTenant };
247
+ export { getListTenantsQueryKey, getListTenantsQueryOptions, getListTenantsUrl, getReadTenantQueryKey, getReadTenantQueryOptions, getReadTenantUrl, getSearchTenantsQueryKey, getSearchTenantsQueryOptions, getSearchTenantsUrl, getTenantDirectoryQueryKey, getTenantDirectoryQueryOptions, getTenantDirectoryUrl, getUpdateTenantMutationKey, getUpdateTenantMutationOptions, getUpdateTenantUrl, listTenants, readTenant, searchTenants, tenantDirectory, updateTenant, useListTenants, useReadTenant, useSearchTenants, useTenantDirectory, useUpdateTenant };
164
248
 
165
249
  //# sourceMappingURL=admin-tenants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"admin-tenants.js","names":[],"sources":["../../src/react/admin-tenants/admin-tenants.ts"],"sourcesContent":["/**\n * Generated by orval 🍺\n * Do not edit manually.\n * Mozaik backend\n * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.\n * OpenAPI spec version: 0.1.0\n */\nimport {\n useMutation,\n useQuery\n} from '@tanstack/react-query';\nimport type {\n DataTag,\n DefinedInitialDataOptions,\n DefinedUseQueryResult,\n MutationFunction,\n QueryClient,\n QueryFunction,\n QueryKey,\n UndefinedInitialDataOptions,\n UseMutationOptions,\n UseMutationResult,\n UseQueryOptions,\n UseQueryResult\n} from '@tanstack/react-query';\n\nimport type {\n HTTPExceptionResponse,\n TenantSettingsRead,\n TenantSettingsUpdateWrite,\n ValidationErrorResponse\n} from '../../models';\n\nimport { request } from '../../client';\nimport type { ErrorType , BodyType } from '../../client';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n\nconst withQueryKey = <T extends object, K>(query: T, queryKey: K): T & { queryKey: K } => {\n const result = { queryKey } as T & { queryKey: K };\n for (const key of Object.keys(query)) {\n // The explicit queryKey always wins, matching the previous\n // `{ ...query, queryKey }` spread where it was set last.\n if (key === 'queryKey') continue;\n Object.defineProperty(result, key, {\n enumerable: true,\n configurable: true,\n get: () => (query as Record<string, unknown>)[key],\n });\n }\n return result;\n};\n\nexport const getListTenantsUrl = () => {\n\n\n\n\n return `/admin/tenants`\n}\n\n/**\n * The tenants this operator administers.\n *\n * For a library administrator that is one row, and returning a list of one is\n * better than a bare object: the client renders the same picker whether it is\n * talking to a library, a consortium or the vendor.\n * @summary List Tenants\n */\nexport const listTenants = async ( options?: Parameters<typeof request>[1]): Promise<TenantSettingsRead[]> => {\n\n return request<TenantSettingsRead[]>(getListTenantsUrl(),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getListTenantsQueryKey = () => {\n return [\n `/admin/tenants`\n ] as const;\n }\n\n\nexport const getListTenantsQueryOptions = <TData = Awaited<ReturnType<typeof listTenants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>( options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listTenants>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getListTenantsQueryKey();\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof listTenants>>> = ({ signal }) => listTenants({ signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof listTenants>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type ListTenantsQueryResult = NonNullable<Awaited<ReturnType<typeof listTenants>>>\nexport type ListTenantsQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useListTenants<TData = Awaited<ReturnType<typeof listTenants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof listTenants>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof listTenants>>,\n TError,\n Awaited<ReturnType<typeof listTenants>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useListTenants<TData = Awaited<ReturnType<typeof listTenants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listTenants>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof listTenants>>,\n TError,\n Awaited<ReturnType<typeof listTenants>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useListTenants<TData = Awaited<ReturnType<typeof listTenants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listTenants>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary List Tenants\n */\n\nexport function useListTenants<TData = Awaited<ReturnType<typeof listTenants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listTenants>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getListTenantsQueryOptions(options)\n\n const query = useQuery(queryOptions, queryClient) as UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> };\n\n return withQueryKey(query, queryOptions.queryKey);\n}\n\n\n\n\n\n\nexport const getReadTenantUrl = (tenantId: number,) => {\n\n\n\n\n return `/admin/tenants/${tenantId}`\n}\n\n/**\n * One tenant's configuration.\n * @summary Read Tenant\n */\nexport const readTenant = async (tenantId: number, options?: Parameters<typeof request>[1]): Promise<TenantSettingsRead> => {\n\n return request<TenantSettingsRead>(getReadTenantUrl(tenantId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getReadTenantQueryKey = (tenantId: number,) => {\n return [\n `/admin/tenants/${tenantId}`\n ] as const;\n }\n\n\nexport const getReadTenantQueryOptions = <TData = Awaited<ReturnType<typeof readTenant>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(tenantId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof readTenant>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getReadTenantQueryKey(tenantId);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof readTenant>>> = ({ signal }) => readTenant(tenantId, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, enabled: tenantId !== null && tenantId !== undefined, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof readTenant>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type ReadTenantQueryResult = NonNullable<Awaited<ReturnType<typeof readTenant>>>\nexport type ReadTenantQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useReadTenant<TData = Awaited<ReturnType<typeof readTenant>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n tenantId: number, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof readTenant>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof readTenant>>,\n TError,\n Awaited<ReturnType<typeof readTenant>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useReadTenant<TData = Awaited<ReturnType<typeof readTenant>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n tenantId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof readTenant>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof readTenant>>,\n TError,\n Awaited<ReturnType<typeof readTenant>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useReadTenant<TData = Awaited<ReturnType<typeof readTenant>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n tenantId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof readTenant>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary Read Tenant\n */\n\nexport function useReadTenant<TData = Awaited<ReturnType<typeof readTenant>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n tenantId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof readTenant>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getReadTenantQueryOptions(tenantId,options)\n\n const query = useQuery(queryOptions, queryClient) as UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> };\n\n return withQueryKey(query, queryOptions.queryKey);\n}\n\n\n\n\n\n\nexport const getUpdateTenantUrl = (tenantId: number,) => {\n\n\n\n\n return `/admin/tenants/${tenantId}`\n}\n\n/**\n * Change a tenant's configuration. Audited.\n *\n * The two membership flags are mutually exclusive and the database says so —\n * ``ck_tenant_individual_accounts_exclusive``. Checked here too, because a\n * constraint violation surfaces as a 500 and this is a 422: the operator sent\n * something contradictory and can fix it.\n * @summary Update Tenant\n */\nexport const updateTenant = async (tenantId: number,\n tenantSettingsUpdateWrite: TenantSettingsUpdateWrite, options?: Parameters<typeof request>[1]): Promise<TenantSettingsRead> => {\n\n const getHeaders = (h?: NonNullable<RequestInit['headers']>): Record<string, string | readonly string[]> => {\n if (!h) return {};\n if (h instanceof Headers) return Object.fromEntries(h.entries());\n if (Symbol.iterator in h) {\n return Object.fromEntries(\n Array.from(h as Iterable<Iterable<string>>, (entry) => Array.from(entry) as [string, string]),\n );\n }\n const headers: Record<string, string | readonly string[]> = {};\n for (const [name, value] of Object.entries<string | readonly string[] | undefined>(h)) {\n if (value !== undefined) headers[name] = value;\n }\n return headers;\n };\nreturn request<TenantSettingsRead>(getUpdateTenantUrl(tenantId),\n {\n ...options,\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(tenantSettingsUpdateWrite)\n }\n);}\n\n\n\n\n\nexport const getUpdateTenantMutationKey = () => ['updateTenant'] as const;\n\nexport const getUpdateTenantMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof updateTenant>>, TError,UpdateTenantMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof updateTenant>>, TError,UpdateTenantMutationVariables, TContext> => {\n\nconst mutationKey = getUpdateTenantMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof updateTenant>>, UpdateTenantMutationVariables> = (props) => {\n const {tenantId,data} = props ?? {};\n\n return updateTenant(tenantId,data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type UpdateTenantMutationResult = NonNullable<Awaited<ReturnType<typeof updateTenant>>>\n export type UpdateTenantMutationBody = BodyType<TenantSettingsUpdateWrite>\n export type UpdateTenantMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type UpdateTenantMutationVariables = {tenantId: number;data: BodyType<TenantSettingsUpdateWrite>}\n\n /**\n * @summary Update Tenant\n */\nexport const useUpdateTenant = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof updateTenant>>, TError,UpdateTenantMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof updateTenant>>,\n TError,\n UpdateTenantMutationVariables,\n TContext\n > => {\n return useMutation(getUpdateTenantMutationOptions(options), queryClient);\n }\n"],"mappings":"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"}
1
+ {"version":3,"file":"admin-tenants.js","names":[],"sources":["../../src/react/admin-tenants/admin-tenants.ts"],"sourcesContent":["/**\n * Generated by orval 🍺\n * Do not edit manually.\n * Mozaik backend\n * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.\n * OpenAPI spec version: 0.5.0\n */\nimport {\n useMutation,\n useQuery\n} from '@tanstack/react-query';\nimport type {\n DataTag,\n DefinedInitialDataOptions,\n DefinedUseQueryResult,\n MutationFunction,\n QueryClient,\n QueryFunction,\n QueryKey,\n UndefinedInitialDataOptions,\n UseMutationOptions,\n UseMutationResult,\n UseQueryOptions,\n UseQueryResult\n} from '@tanstack/react-query';\n\nimport type {\n HTTPExceptionResponse,\n SearchTenantsParams,\n TenantDirectoryParams,\n TenantSearchPage,\n TenantSettingsRead,\n TenantSettingsUpdateWrite,\n ValidationErrorResponse\n} from '../../models';\n\nimport { request } from '../../client';\nimport type { ErrorType , BodyType } from '../../client';\n\n\ntype SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];\n\n\n\nconst withQueryKey = <T extends object, K>(query: T, queryKey: K): T & { queryKey: K } => {\n const result = { queryKey } as T & { queryKey: K };\n for (const key of Object.keys(query)) {\n // The explicit queryKey always wins, matching the previous\n // `{ ...query, queryKey }` spread where it was set last.\n if (key === 'queryKey') continue;\n Object.defineProperty(result, key, {\n enumerable: true,\n configurable: true,\n get: () => (query as Record<string, unknown>)[key],\n });\n }\n return result;\n};\n\nexport const getListTenantsUrl = () => {\n\n\n\n\n return `/admin/tenants`\n}\n\n/**\n * The tenants this operator administers.\n *\n * For a library administrator that is one row, and returning a list of one is\n * better than a bare object: the client renders the same picker whether it is\n * talking to a library, a consortium or the vendor.\n * @summary List Tenants\n */\nexport const listTenants = async ( options?: Parameters<typeof request>[1]): Promise<TenantSettingsRead[]> => {\n\n return request<TenantSettingsRead[]>(getListTenantsUrl(),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getListTenantsQueryKey = () => {\n return [\n `/admin/tenants`\n ] as const;\n }\n\n\nexport const getListTenantsQueryOptions = <TData = Awaited<ReturnType<typeof listTenants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>( options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listTenants>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getListTenantsQueryKey();\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof listTenants>>> = ({ signal }) => listTenants({ signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof listTenants>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type ListTenantsQueryResult = NonNullable<Awaited<ReturnType<typeof listTenants>>>\nexport type ListTenantsQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useListTenants<TData = Awaited<ReturnType<typeof listTenants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof listTenants>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof listTenants>>,\n TError,\n Awaited<ReturnType<typeof listTenants>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useListTenants<TData = Awaited<ReturnType<typeof listTenants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listTenants>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof listTenants>>,\n TError,\n Awaited<ReturnType<typeof listTenants>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useListTenants<TData = Awaited<ReturnType<typeof listTenants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listTenants>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary List Tenants\n */\n\nexport function useListTenants<TData = Awaited<ReturnType<typeof listTenants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof listTenants>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getListTenantsQueryOptions(options)\n\n const query = useQuery(queryOptions, queryClient) as UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> };\n\n return withQueryKey(query, queryOptions.queryKey);\n}\n\n\n\n\n\n\nexport const getTenantDirectoryUrl = (params?: TenantDirectoryParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/admin/tenants/directory?${stringifiedParams}` : `/admin/tenants/directory`\n}\n\n/**\n * Browse tenant summaries within the employee's scope, one bounded page.\n * @summary Tenant Directory\n */\nexport const tenantDirectory = async (params?: TenantDirectoryParams, options?: Parameters<typeof request>[1]): Promise<TenantSearchPage> => {\n\n return request<TenantSearchPage>(getTenantDirectoryUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getTenantDirectoryQueryKey = (params?: TenantDirectoryParams,) => {\n return [\n `/admin/tenants/directory`, ...(params ? [params] : [])\n ] as const;\n }\n\n\nexport const getTenantDirectoryQueryOptions = <TData = Awaited<ReturnType<typeof tenantDirectory>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(params?: TenantDirectoryParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof tenantDirectory>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getTenantDirectoryQueryKey(params);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof tenantDirectory>>> = ({ signal }) => tenantDirectory(params, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof tenantDirectory>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type TenantDirectoryQueryResult = NonNullable<Awaited<ReturnType<typeof tenantDirectory>>>\nexport type TenantDirectoryQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useTenantDirectory<TData = Awaited<ReturnType<typeof tenantDirectory>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params: undefined | TenantDirectoryParams, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof tenantDirectory>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof tenantDirectory>>,\n TError,\n Awaited<ReturnType<typeof tenantDirectory>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useTenantDirectory<TData = Awaited<ReturnType<typeof tenantDirectory>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: TenantDirectoryParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof tenantDirectory>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof tenantDirectory>>,\n TError,\n Awaited<ReturnType<typeof tenantDirectory>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useTenantDirectory<TData = Awaited<ReturnType<typeof tenantDirectory>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: TenantDirectoryParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof tenantDirectory>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary Tenant Directory\n */\n\nexport function useTenantDirectory<TData = Awaited<ReturnType<typeof tenantDirectory>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params?: TenantDirectoryParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof tenantDirectory>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getTenantDirectoryQueryOptions(params,options)\n\n const query = useQuery(queryOptions, queryClient) as UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> };\n\n return withQueryKey(query, queryOptions.queryKey);\n}\n\n\n\n\n\n\nexport const getSearchTenantsUrl = (params: SearchTenantsParams,) => {\n const normalizedParams = new URLSearchParams();\n\n Object.entries(params || {}).forEach(([key, value]) => {\n\n if (value !== undefined) {\n normalizedParams.append(key, value === null ? 'null' : String(value))\n }\n });\n\n const stringifiedParams = normalizedParams.toString();\n\n return stringifiedParams.length > 0 ? `/admin/tenants/search?${stringifiedParams}` : `/admin/tenants/search`\n}\n\n/**\n * Find tenants by literal name within the employee's tenant scope.\n * @summary Search Tenants\n */\nexport const searchTenants = async (params: SearchTenantsParams, options?: Parameters<typeof request>[1]): Promise<TenantSearchPage> => {\n\n return request<TenantSearchPage>(getSearchTenantsUrl(params),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getSearchTenantsQueryKey = (params?: SearchTenantsParams,) => {\n return [\n `/admin/tenants/search`, ...(params ? [params] : [])\n ] as const;\n }\n\n\nexport const getSearchTenantsQueryOptions = <TData = Awaited<ReturnType<typeof searchTenants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(params: SearchTenantsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof searchTenants>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getSearchTenantsQueryKey(params);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof searchTenants>>> = ({ signal }) => searchTenants(params, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof searchTenants>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type SearchTenantsQueryResult = NonNullable<Awaited<ReturnType<typeof searchTenants>>>\nexport type SearchTenantsQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useSearchTenants<TData = Awaited<ReturnType<typeof searchTenants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params: SearchTenantsParams, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof searchTenants>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof searchTenants>>,\n TError,\n Awaited<ReturnType<typeof searchTenants>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useSearchTenants<TData = Awaited<ReturnType<typeof searchTenants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params: SearchTenantsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof searchTenants>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof searchTenants>>,\n TError,\n Awaited<ReturnType<typeof searchTenants>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useSearchTenants<TData = Awaited<ReturnType<typeof searchTenants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params: SearchTenantsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof searchTenants>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary Search Tenants\n */\n\nexport function useSearchTenants<TData = Awaited<ReturnType<typeof searchTenants>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n params: SearchTenantsParams, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof searchTenants>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getSearchTenantsQueryOptions(params,options)\n\n const query = useQuery(queryOptions, queryClient) as UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> };\n\n return withQueryKey(query, queryOptions.queryKey);\n}\n\n\n\n\n\n\nexport const getReadTenantUrl = (tenantId: number,) => {\n\n\n\n\n return `/admin/tenants/${tenantId}`\n}\n\n/**\n * One tenant's configuration.\n * @summary Read Tenant\n */\nexport const readTenant = async (tenantId: number, options?: Parameters<typeof request>[1]): Promise<TenantSettingsRead> => {\n\n return request<TenantSettingsRead>(getReadTenantUrl(tenantId),\n {\n ...options,\n method: 'GET'\n\n\n }\n);}\n\n\n\n\n\nexport const getReadTenantQueryKey = (tenantId: number,) => {\n return [\n `/admin/tenants/${tenantId}`\n ] as const;\n }\n\n\nexport const getReadTenantQueryOptions = <TData = Awaited<ReturnType<typeof readTenant>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(tenantId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof readTenant>>, TError, TData>>, request?: SecondParameter<typeof request>}\n) => {\n\nconst {query: queryOptions, request: requestOptions} = options ?? {};\n\n const queryKey = queryOptions?.queryKey ?? getReadTenantQueryKey(tenantId);\n\n\n\n const queryFn: QueryFunction<Awaited<ReturnType<typeof readTenant>>> = ({ signal }) => readTenant(tenantId, { signal, ...requestOptions });\n\n\n\n\n\n return { queryKey, queryFn, enabled: tenantId !== null && tenantId !== undefined, ...queryOptions} as UseQueryOptions<Awaited<ReturnType<typeof readTenant>>, TError, TData> & { queryKey: DataTag<QueryKey, TData, TError> }\n}\n\nexport type ReadTenantQueryResult = NonNullable<Awaited<ReturnType<typeof readTenant>>>\nexport type ReadTenantQueryError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n\n\nexport function useReadTenant<TData = Awaited<ReturnType<typeof readTenant>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n tenantId: number, options: { query:Partial<UseQueryOptions<Awaited<ReturnType<typeof readTenant>>, TError, TData>> & Pick<\n DefinedInitialDataOptions<\n Awaited<ReturnType<typeof readTenant>>,\n TError,\n Awaited<ReturnType<typeof readTenant>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): DefinedUseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useReadTenant<TData = Awaited<ReturnType<typeof readTenant>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n tenantId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof readTenant>>, TError, TData>> & Pick<\n UndefinedInitialDataOptions<\n Awaited<ReturnType<typeof readTenant>>,\n TError,\n Awaited<ReturnType<typeof readTenant>>\n > , 'initialData'\n >, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\nexport function useReadTenant<TData = Awaited<ReturnType<typeof readTenant>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n tenantId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof readTenant>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> }\n/**\n * @summary Read Tenant\n */\n\nexport function useReadTenant<TData = Awaited<ReturnType<typeof readTenant>>, TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>>(\n tenantId: number, options?: { query?:Partial<UseQueryOptions<Awaited<ReturnType<typeof readTenant>>, TError, TData>>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient\n ): UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> } {\n\n const queryOptions = getReadTenantQueryOptions(tenantId,options)\n\n const query = useQuery(queryOptions, queryClient) as UseQueryResult<TData, TError> & { queryKey: DataTag<QueryKey, TData, TError> };\n\n return withQueryKey(query, queryOptions.queryKey);\n}\n\n\n\n\n\n\nexport const getUpdateTenantUrl = (tenantId: number,) => {\n\n\n\n\n return `/admin/tenants/${tenantId}`\n}\n\n/**\n * Change a tenant's configuration. Audited.\n *\n * The two membership flags are mutually exclusive and the database says so —\n * ``ck_tenant_individual_accounts_exclusive``. Checked here too, because a\n * constraint violation surfaces as a 500 and this is a 422: the operator sent\n * something contradictory and can fix it.\n * @summary Update Tenant\n */\nexport const updateTenant = async (tenantId: number,\n tenantSettingsUpdateWrite: TenantSettingsUpdateWrite, options?: Parameters<typeof request>[1]): Promise<TenantSettingsRead> => {\n\n const getHeaders = (h?: NonNullable<RequestInit['headers']>): Record<string, string | readonly string[]> => {\n if (!h) return {};\n if (h instanceof Headers) return Object.fromEntries(h.entries());\n if (Symbol.iterator in h) {\n return Object.fromEntries(\n Array.from(h as Iterable<Iterable<string>>, (entry) => Array.from(entry) as [string, string]),\n );\n }\n const headers: Record<string, string | readonly string[]> = {};\n for (const [name, value] of Object.entries<string | readonly string[] | undefined>(h)) {\n if (value !== undefined) headers[name] = value;\n }\n return headers;\n };\nreturn request<TenantSettingsRead>(getUpdateTenantUrl(tenantId),\n {\n ...options,\n method: 'PATCH',\n headers: { 'Content-Type': 'application/json', ...getHeaders(options?.headers) },\n body: JSON.stringify(tenantSettingsUpdateWrite)\n }\n);}\n\n\n\n\n\nexport const getUpdateTenantMutationKey = () => ['updateTenant'] as const;\n\nexport const getUpdateTenantMutationOptions = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof updateTenant>>, TError,UpdateTenantMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n): UseMutationOptions<Awaited<ReturnType<typeof updateTenant>>, TError,UpdateTenantMutationVariables, TContext> => {\n\nconst mutationKey = getUpdateTenantMutationKey();\nconst {mutation: mutationOptions, request: requestOptions} = options ?\n options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?\n options\n : {...options, mutation: {...options.mutation, mutationKey}}\n : {mutation: { mutationKey, }, request: undefined};\n\n\n\n\n const mutationFn: MutationFunction<Awaited<ReturnType<typeof updateTenant>>, UpdateTenantMutationVariables> = (props) => {\n const {tenantId,data} = props ?? {};\n\n return updateTenant(tenantId,data,requestOptions)\n }\n\n\n\n\n\n\n return { mutationFn, ...mutationOptions }}\n\n export type UpdateTenantMutationResult = NonNullable<Awaited<ReturnType<typeof updateTenant>>>\n export type UpdateTenantMutationBody = BodyType<TenantSettingsUpdateWrite>\n export type UpdateTenantMutationError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>\n export type UpdateTenantMutationVariables = {tenantId: number;data: BodyType<TenantSettingsUpdateWrite>}\n\n /**\n * @summary Update Tenant\n */\nexport const useUpdateTenant = <TError = ErrorType<HTTPExceptionResponse | ValidationErrorResponse>,\n TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof updateTenant>>, TError,UpdateTenantMutationVariables, TContext>, request?: SecondParameter<typeof request>}\n , queryClient?: QueryClient): UseMutationResult<\n Awaited<ReturnType<typeof updateTenant>>,\n TError,\n UpdateTenantMutationVariables,\n TContext\n > => {\n return useMutation(getUpdateTenantMutationOptions(options), queryClient);\n }\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
 
2
- import { Cn as ListExpiringDocumentsParams, Dt as PractitionerDocumentListRead, En as ListAllRequestsParams, Et as PractitionerRead, F as SubjectRead, Gn as HTTPExceptionResponse, In as LevelRead, N as SubjectWrite, Pn as LevelWrite, Sn as ListFeedbackParams, Tt as PractitionerPage, Xr as AiDraftRead, Yr as AiDraftReviewWrite, cr as EducationalGoalRead, d as TutoringQueuePage, fn as ListPractitionersParams, g as TutoringFeedbackModerationWrite, l as TutoringRequestAdminWrite, m as TutoringFeedbackPage, o as TutoringRequestStaffRead, or as EducationalGoalWrite, t as ValidationErrorResponse, u as TutoringRequestAdminCloseWrite, wt as PractitionerWrite } from "../index-wL_20vR8.js";
3
- import { a as ErrorType, c as request, n as BodyType } from "../client-BDwBZYB0.js";
2
+ import { At as PractitionerWrite, Br as EducationalGoalWrite, En as ListPractitionersParams, Fi as AiDraftReviewWrite, Hr as EducationalGoalRead, I as SubjectWrite, Ii as AiDraftRead, Ln as ListFeedbackParams, Mt as PractitionerRead, Nt as PractitionerDocumentListRead, R as SubjectRead, Rn as ListExpiringDocumentsParams, Vn as ListAllRequestsParams, Yn as LevelWrite, Zn as LevelRead, d as TutoringQueuePage, g as TutoringFeedbackModerationWrite, jt as PractitionerPage, l as TutoringRequestAdminWrite, m as TutoringFeedbackPage, o as TutoringRequestStaffRead, t as ValidationErrorResponse, u as TutoringRequestAdminCloseWrite, wr as HTTPExceptionResponse } from "../chunks/index.js";
3
+ import { a as ErrorType, c as request, n as BodyType } from "../chunks/client.js";
4
4
  import { DataTag, DefinedInitialDataOptions, DefinedUseQueryResult, QueryClient, QueryKey, UndefinedInitialDataOptions, UseMutationOptions, UseMutationResult, UseQueryOptions, UseQueryResult } from "@tanstack/react-query";
5
5
  //#region src/react/admin-tutoring/admin-tutoring.d.ts
6
6
  type SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { r as request } from "../client-D3kMOcIr.js";
2
+ import { r as request } from "../chunks/client.js";
3
3
  import { useMutation, useQuery } from "@tanstack/react-query";
4
4
  //#region src/react/admin-tutoring/admin-tutoring.ts
5
5
  /**
@@ -7,7 +7,7 @@ import { useMutation, useQuery } from "@tanstack/react-query";
7
7
  * Do not edit manually.
8
8
  * Mozaik backend
9
9
  * Four products behind one API — Biblio, Médiathèques, the partner catalogues (Nextory and YouScribe) and Prof Express. Authentication is Keycloak SSO only, once, for all of them: see the **auth** section below for the browser flow and the three failure modes.
10
- * OpenAPI spec version: 0.1.0
10
+ * OpenAPI spec version: 0.5.0
11
11
  */
12
12
  const withQueryKey = (query, queryKey) => {
13
13
  const result = { queryKey };