@thunderid/react 1.0.7 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/updateMeCredentials.d.ts +33 -0
- package/dist/api/updateMeCredentials.d.ts.map +1 -0
- package/dist/api/updateMeCredentials.js +29 -0
- package/dist/api/updateMeCredentials.js.map +1 -0
- package/dist/cjs/api/updateMeCredentials.cjs +31 -0
- package/dist/cjs/api/updateMeCredentials.cjs.map +1 -0
- package/dist/cjs/components/presentation/ChangeCredential/BaseChangeCredential.cjs +187 -0
- package/dist/cjs/components/presentation/ChangeCredential/BaseChangeCredential.cjs.map +1 -0
- package/dist/cjs/components/presentation/ChangeCredential/BaseChangeCredential.styles.cjs +108 -0
- package/dist/cjs/components/presentation/ChangeCredential/BaseChangeCredential.styles.cjs.map +1 -0
- package/dist/cjs/components/presentation/ChangeCredential/ChangeCredential.cjs +123 -0
- package/dist/cjs/components/presentation/ChangeCredential/ChangeCredential.cjs.map +1 -0
- package/dist/cjs/components/presentation/LanguageSwitcher/BaseLanguageSwitcher.cjs +1 -1
- package/dist/cjs/components/presentation/UserDropdown/BaseUserDropdown.cjs +2 -2
- package/dist/cjs/components/presentation/UserDropdown/BaseUserDropdown.cjs.map +1 -1
- package/dist/cjs/components/presentation/UserDropdown/UserDropdown.cjs +8 -4
- package/dist/cjs/components/presentation/UserDropdown/UserDropdown.cjs.map +1 -1
- package/dist/cjs/components/presentation/UserProfile/BaseUserProfile.styles.cjs +2 -0
- package/dist/cjs/components/presentation/UserProfile/BaseUserProfile.styles.cjs.map +1 -1
- package/dist/cjs/components/primitives/PasswordField/PasswordField.cjs +2 -2
- package/dist/cjs/components/primitives/PasswordField/PasswordField.cjs.map +1 -1
- package/dist/cjs/contexts/Theme/ThemeProvider.cjs +26 -4
- package/dist/cjs/contexts/Theme/ThemeProvider.cjs.map +1 -1
- package/dist/cjs/contexts/ThunderID/ThunderIDContext.cjs +2 -0
- package/dist/cjs/contexts/ThunderID/ThunderIDContext.cjs.map +1 -1
- package/dist/cjs/contexts/ThunderID/ThunderIDProvider.cjs +7 -1
- package/dist/cjs/contexts/ThunderID/ThunderIDProvider.cjs.map +1 -1
- package/dist/cjs/hooks/agents/useCreateAgent.cjs +26 -0
- package/dist/cjs/hooks/agents/useCreateAgent.cjs.map +1 -0
- package/dist/cjs/hooks/agents/useDeleteAgent.cjs +26 -0
- package/dist/cjs/hooks/agents/useDeleteAgent.cjs.map +1 -0
- package/dist/cjs/hooks/agents/useGetAgent.cjs +30 -0
- package/dist/cjs/hooks/agents/useGetAgent.cjs.map +1 -0
- package/dist/cjs/hooks/agents/useGetAgents.cjs +31 -0
- package/dist/cjs/hooks/agents/useGetAgents.cjs.map +1 -0
- package/dist/cjs/hooks/agents/useUpdateAgent.cjs +27 -0
- package/dist/cjs/hooks/agents/useUpdateAgent.cjs.map +1 -0
- package/dist/cjs/hooks/applications/useCreateApplication.cjs +31 -0
- package/dist/cjs/hooks/applications/useCreateApplication.cjs.map +1 -0
- package/dist/cjs/hooks/applications/useDeleteApplication.cjs +26 -0
- package/dist/cjs/hooks/applications/useDeleteApplication.cjs.map +1 -0
- package/dist/cjs/hooks/applications/useGetApplication.cjs +35 -0
- package/dist/cjs/hooks/applications/useGetApplication.cjs.map +1 -0
- package/dist/cjs/hooks/applications/useGetApplications.cjs +36 -0
- package/dist/cjs/hooks/applications/useGetApplications.cjs.map +1 -0
- package/dist/cjs/hooks/applications/useUpdateApplication.cjs +27 -0
- package/dist/cjs/hooks/applications/useUpdateApplication.cjs.map +1 -0
- package/dist/cjs/hooks/useManagementEndpoint.cjs +25 -0
- package/dist/cjs/hooks/useManagementEndpoint.cjs.map +1 -0
- package/dist/cjs/hooks/useResourceMutation.cjs +72 -0
- package/dist/cjs/hooks/useResourceMutation.cjs.map +1 -0
- package/dist/cjs/hooks/useResourceQuery.cjs +86 -0
- package/dist/cjs/hooks/useResourceQuery.cjs.map +1 -0
- package/dist/cjs/hooks/users/useCreateUser.cjs +26 -0
- package/dist/cjs/hooks/users/useCreateUser.cjs.map +1 -0
- package/dist/cjs/hooks/users/useDeleteUser.cjs +26 -0
- package/dist/cjs/hooks/users/useDeleteUser.cjs.map +1 -0
- package/dist/cjs/hooks/users/useGetUser.cjs +30 -0
- package/dist/cjs/hooks/users/useGetUser.cjs.map +1 -0
- package/dist/cjs/hooks/users/useGetUsers.cjs +38 -0
- package/dist/cjs/hooks/users/useGetUsers.cjs.map +1 -0
- package/dist/cjs/hooks/users/useUpdateUser.cjs +27 -0
- package/dist/cjs/hooks/users/useUpdateUser.cjs.map +1 -0
- package/dist/cjs/index.cjs +144 -0
- package/dist/cjs/utils/createAuthenticatedFetcher.cjs +43 -0
- package/dist/cjs/utils/createAuthenticatedFetcher.cjs.map +1 -0
- package/dist/cjs/utils/createResourceInvalidator.cjs +38 -0
- package/dist/cjs/utils/createResourceInvalidator.cjs.map +1 -0
- package/dist/components/presentation/ChangeCredential/BaseChangeCredential.d.ts +100 -0
- package/dist/components/presentation/ChangeCredential/BaseChangeCredential.d.ts.map +1 -0
- package/dist/components/presentation/ChangeCredential/BaseChangeCredential.js +183 -0
- package/dist/components/presentation/ChangeCredential/BaseChangeCredential.js.map +1 -0
- package/dist/components/presentation/ChangeCredential/BaseChangeCredential.styles.d.ts +10 -0
- package/dist/components/presentation/ChangeCredential/BaseChangeCredential.styles.d.ts.map +1 -0
- package/dist/components/presentation/ChangeCredential/BaseChangeCredential.styles.js +108 -0
- package/dist/components/presentation/ChangeCredential/BaseChangeCredential.styles.js.map +1 -0
- package/dist/components/presentation/ChangeCredential/ChangeCredential.d.ts +55 -0
- package/dist/components/presentation/ChangeCredential/ChangeCredential.d.ts.map +1 -0
- package/dist/components/presentation/ChangeCredential/ChangeCredential.js +119 -0
- package/dist/components/presentation/ChangeCredential/ChangeCredential.js.map +1 -0
- package/dist/components/presentation/LanguageSwitcher/BaseLanguageSwitcher.js +1 -1
- package/dist/components/presentation/UserDropdown/BaseUserDropdown.d.ts +5 -0
- package/dist/components/presentation/UserDropdown/BaseUserDropdown.d.ts.map +1 -1
- package/dist/components/presentation/UserDropdown/BaseUserDropdown.js +2 -2
- package/dist/components/presentation/UserDropdown/BaseUserDropdown.js.map +1 -1
- package/dist/components/presentation/UserDropdown/UserDropdown.d.ts +12 -0
- package/dist/components/presentation/UserDropdown/UserDropdown.d.ts.map +1 -1
- package/dist/components/presentation/UserDropdown/UserDropdown.js +8 -4
- package/dist/components/presentation/UserDropdown/UserDropdown.js.map +1 -1
- package/dist/components/presentation/UserProfile/BaseUserProfile.styles.d.ts.map +1 -1
- package/dist/components/presentation/UserProfile/BaseUserProfile.styles.js +2 -0
- package/dist/components/presentation/UserProfile/BaseUserProfile.styles.js.map +1 -1
- package/dist/components/primitives/PasswordField/PasswordField.d.ts +6 -0
- package/dist/components/primitives/PasswordField/PasswordField.d.ts.map +1 -1
- package/dist/components/primitives/PasswordField/PasswordField.js +2 -2
- package/dist/components/primitives/PasswordField/PasswordField.js.map +1 -1
- package/dist/contexts/Theme/ThemeProvider.d.ts +1 -1
- package/dist/contexts/Theme/ThemeProvider.d.ts.map +1 -1
- package/dist/contexts/Theme/ThemeProvider.js +27 -5
- package/dist/contexts/Theme/ThemeProvider.js.map +1 -1
- package/dist/contexts/ThunderID/ThunderIDContext.d.ts +12 -1
- package/dist/contexts/ThunderID/ThunderIDContext.d.ts.map +1 -1
- package/dist/contexts/ThunderID/ThunderIDContext.js +2 -0
- package/dist/contexts/ThunderID/ThunderIDContext.js.map +1 -1
- package/dist/contexts/ThunderID/ThunderIDProvider.d.ts.map +1 -1
- package/dist/contexts/ThunderID/ThunderIDProvider.js +7 -1
- package/dist/contexts/ThunderID/ThunderIDProvider.js.map +1 -1
- package/dist/hooks/agents/useCreateAgent.d.ts +11 -0
- package/dist/hooks/agents/useCreateAgent.d.ts.map +1 -0
- package/dist/hooks/agents/useCreateAgent.js +24 -0
- package/dist/hooks/agents/useCreateAgent.js.map +1 -0
- package/dist/hooks/agents/useDeleteAgent.d.ts +10 -0
- package/dist/hooks/agents/useDeleteAgent.d.ts.map +1 -0
- package/dist/hooks/agents/useDeleteAgent.js +24 -0
- package/dist/hooks/agents/useDeleteAgent.js.map +1 -0
- package/dist/hooks/agents/useGetAgent.d.ts +12 -0
- package/dist/hooks/agents/useGetAgent.d.ts.map +1 -0
- package/dist/hooks/agents/useGetAgent.js +28 -0
- package/dist/hooks/agents/useGetAgent.js.map +1 -0
- package/dist/hooks/agents/useGetAgents.d.ts +19 -0
- package/dist/hooks/agents/useGetAgents.d.ts.map +1 -0
- package/dist/hooks/agents/useGetAgents.js +29 -0
- package/dist/hooks/agents/useGetAgents.js.map +1 -0
- package/dist/hooks/agents/useUpdateAgent.d.ts +18 -0
- package/dist/hooks/agents/useUpdateAgent.d.ts.map +1 -0
- package/dist/hooks/agents/useUpdateAgent.js +25 -0
- package/dist/hooks/agents/useUpdateAgent.js.map +1 -0
- package/dist/hooks/applications/useCreateApplication.d.ts +16 -0
- package/dist/hooks/applications/useCreateApplication.d.ts.map +1 -0
- package/dist/hooks/applications/useCreateApplication.js +29 -0
- package/dist/hooks/applications/useCreateApplication.js.map +1 -0
- package/dist/hooks/applications/useDeleteApplication.d.ts +10 -0
- package/dist/hooks/applications/useDeleteApplication.d.ts.map +1 -0
- package/dist/hooks/applications/useDeleteApplication.js +24 -0
- package/dist/hooks/applications/useDeleteApplication.js.map +1 -0
- package/dist/hooks/applications/useGetApplication.d.ts +17 -0
- package/dist/hooks/applications/useGetApplication.d.ts.map +1 -0
- package/dist/hooks/applications/useGetApplication.js +33 -0
- package/dist/hooks/applications/useGetApplication.js.map +1 -0
- package/dist/hooks/applications/useGetApplications.d.ts +24 -0
- package/dist/hooks/applications/useGetApplications.d.ts.map +1 -0
- package/dist/hooks/applications/useGetApplications.js +34 -0
- package/dist/hooks/applications/useGetApplications.js.map +1 -0
- package/dist/hooks/applications/useUpdateApplication.d.ts +18 -0
- package/dist/hooks/applications/useUpdateApplication.d.ts.map +1 -0
- package/dist/hooks/applications/useUpdateApplication.js +25 -0
- package/dist/hooks/applications/useUpdateApplication.js.map +1 -0
- package/dist/hooks/useManagementEndpoint.d.ts +22 -0
- package/dist/hooks/useManagementEndpoint.d.ts.map +1 -0
- package/dist/hooks/useManagementEndpoint.js +23 -0
- package/dist/hooks/useManagementEndpoint.js.map +1 -0
- package/dist/hooks/useResourceMutation.d.ts +51 -0
- package/dist/hooks/useResourceMutation.d.ts.map +1 -0
- package/dist/hooks/useResourceMutation.js +70 -0
- package/dist/hooks/useResourceMutation.js.map +1 -0
- package/dist/hooks/useResourceQuery.d.ts +45 -0
- package/dist/hooks/useResourceQuery.d.ts.map +1 -0
- package/dist/hooks/useResourceQuery.js +83 -0
- package/dist/hooks/useResourceQuery.js.map +1 -0
- package/dist/hooks/users/useCreateUser.d.ts +11 -0
- package/dist/hooks/users/useCreateUser.d.ts.map +1 -0
- package/dist/hooks/users/useCreateUser.js +24 -0
- package/dist/hooks/users/useCreateUser.js.map +1 -0
- package/dist/hooks/users/useDeleteUser.d.ts +10 -0
- package/dist/hooks/users/useDeleteUser.d.ts.map +1 -0
- package/dist/hooks/users/useDeleteUser.js +24 -0
- package/dist/hooks/users/useDeleteUser.js.map +1 -0
- package/dist/hooks/users/useGetUser.d.ts +12 -0
- package/dist/hooks/users/useGetUser.d.ts.map +1 -0
- package/dist/hooks/users/useGetUser.js +28 -0
- package/dist/hooks/users/useGetUser.js.map +1 -0
- package/dist/hooks/users/useGetUsers.d.ts +17 -0
- package/dist/hooks/users/useGetUsers.d.ts.map +1 -0
- package/dist/hooks/users/useGetUsers.js +36 -0
- package/dist/hooks/users/useGetUsers.js.map +1 -0
- package/dist/hooks/users/useUpdateUser.d.ts +18 -0
- package/dist/hooks/users/useUpdateUser.d.ts.map +1 -0
- package/dist/hooks/users/useUpdateUser.js +25 -0
- package/dist/hooks/users/useUpdateUser.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +20 -2
- package/dist/models/config.d.ts +13 -1
- package/dist/models/config.d.ts.map +1 -1
- package/dist/utils/createAuthenticatedFetcher.d.ts +14 -0
- package/dist/utils/createAuthenticatedFetcher.d.ts.map +1 -0
- package/dist/utils/createAuthenticatedFetcher.js +41 -0
- package/dist/utils/createAuthenticatedFetcher.js.map +1 -0
- package/dist/utils/createResourceInvalidator.d.ts +29 -0
- package/dist/utils/createResourceInvalidator.d.ts.map +1 -0
- package/dist/utils/createResourceInvalidator.js +36 -0
- package/dist/utils/createResourceInvalidator.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useResourceMutation.cjs","names":["fallbackResourceInvalidator","useThunderID","resolvedFetcher: ApiFetcher","useResolvedFetcher","callbacksRef: {\n current: {\n getInvalidatedKeys: typeof getInvalidatedKeys;\n mutationFn: typeof mutationFn;\n onError?: ResourceMutationOptions<TData, TVariables>['onError'];\n onSuccess?: ResourceMutationOptions<TData, TVariables>['onSuccess'];\n };\n }","mutateAsync: (variables: TVariables) => Promise<TData>","result: TData","mutationError: Error"],"sources":["../../../src/hooks/useResourceMutation.ts"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {ApiFetcher} from '@thunderid/browser';\nimport {useCallback, useRef, useState} from 'react';\nimport {useResolvedFetcher} from './useResourceQuery';\nimport useThunderID from '../contexts/ThunderID/useThunderID';\nimport {ResourceQueryKey, fallbackResourceInvalidator} from '../utils/createResourceInvalidator';\n\n/**\n * Options accepted by every management mutation hook.\n */\nexport interface ResourceMutationOptions<TData, TVariables> {\n /**\n * Transport for this hook only. Takes precedence over `ThunderIDProvider`'s `http.fetcher`.\n */\n fetcher?: ApiFetcher;\n /**\n * Called when the mutation fails.\n */\n onError?: (error: Error, variables: TVariables) => void;\n /**\n * Called when the mutation succeeds, after the affected queries have been invalidated.\n */\n onSuccess?: (data: TData, variables: TVariables) => void;\n}\n\n/**\n * State returned by a management mutation hook.\n */\nexport interface ResourceMutationResult<TData, TVariables> {\n data: TData | undefined;\n error: Error | null;\n isLoading: boolean;\n /**\n * Runs the mutation. Never rejects: read `error`, or use `onError`, to handle a failure.\n */\n mutate: (variables: TVariables) => Promise<TData | undefined>;\n /**\n * Runs the mutation and rejects if it fails.\n */\n mutateAsync: (variables: TVariables) => Promise<TData>;\n /**\n * Clears `data` and `error`.\n */\n reset: () => void;\n}\n\n/**\n * Runs a management mutation and invalidates the queries whose data it changed. Depends on no data\n * fetching library.\n *\n * @param mutationFn - Performs the request with the resolved fetcher.\n * @param getInvalidatedKeys - Returns the query key prefixes to invalidate after a success.\n * @param options - Mutation options.\n * @returns The mutation state.\n */\nconst useResourceMutation = <TData, TVariables>(\n mutationFn: (variables: TVariables, fetcher: ApiFetcher) => Promise<TData>,\n getInvalidatedKeys: (variables: TVariables) => ResourceQueryKey[],\n {fetcher, onError, onSuccess}: ResourceMutationOptions<TData, TVariables> = {},\n): ResourceMutationResult<TData, TVariables> => {\n const {invalidator = fallbackResourceInvalidator} = useThunderID();\n const resolvedFetcher: ApiFetcher = useResolvedFetcher(fetcher);\n const [data, setData] = useState<TData | undefined>(undefined);\n const [error, setError] = useState<Error | null>(null);\n const [isLoading, setIsLoading] = useState<boolean>(false);\n\n const callbacksRef: {\n current: {\n getInvalidatedKeys: typeof getInvalidatedKeys;\n mutationFn: typeof mutationFn;\n onError?: ResourceMutationOptions<TData, TVariables>['onError'];\n onSuccess?: ResourceMutationOptions<TData, TVariables>['onSuccess'];\n };\n } = useRef({getInvalidatedKeys, mutationFn, onError, onSuccess});\n callbacksRef.current = {getInvalidatedKeys, mutationFn, onError, onSuccess};\n\n const mutateAsync: (variables: TVariables) => Promise<TData> = useCallback(\n async (variables: TVariables): Promise<TData> => {\n setIsLoading(true);\n setError(null);\n\n try {\n const result: TData = await callbacksRef.current.mutationFn(variables, resolvedFetcher);\n\n setData(result);\n callbacksRef.current.getInvalidatedKeys(variables).forEach((key: ResourceQueryKey) => {\n invalidator.invalidate(key);\n });\n callbacksRef.current.onSuccess?.(result, variables);\n\n return result;\n } catch (err) {\n const mutationError: Error = err instanceof Error ? err : new Error(String(err));\n\n setError(mutationError);\n callbacksRef.current.onError?.(mutationError, variables);\n\n throw mutationError;\n } finally {\n setIsLoading(false);\n }\n },\n [invalidator, resolvedFetcher],\n );\n\n const mutate: (variables: TVariables) => Promise<TData | undefined> = useCallback(\n (variables: TVariables): Promise<TData | undefined> => mutateAsync(variables).catch((): undefined => undefined),\n [mutateAsync],\n );\n\n const reset: () => void = useCallback((): void => {\n setData(undefined);\n setError(null);\n }, []);\n\n return {data, error, isLoading, mutate, mutateAsync, reset};\n};\n\nexport default useResourceMutation;\n"],"mappings":";;;;;;;;;;;;;;;;;AAyDA,MAAM,uBACJ,YACA,oBACA,EAAC,SAAS,SAAS,cAAyD,EAAE,KAChC;CAC9C,MAAM,EAAC,cAAcA,kEAA+BC,8BAAc;CAClE,MAAMC,kBAA8BC,4CAAmB,QAAQ;CAC/D,MAAM,CAAC,MAAM,+BAAuC,OAAU;CAC9D,MAAM,CAAC,OAAO,gCAAmC,KAAK;CACtD,MAAM,CAAC,WAAW,oCAAkC,MAAM;CAE1D,MAAMC,iCAOK;EAAC;EAAoB;EAAY;EAAS;EAAU,CAAC;AAChE,cAAa,UAAU;EAAC;EAAoB;EAAY;EAAS;EAAU;CAE3E,MAAMC,qCACJ,OAAO,cAA0C;AAC/C,eAAa,KAAK;AAClB,WAAS,KAAK;AAEd,MAAI;GACF,MAAMC,SAAgB,MAAM,aAAa,QAAQ,WAAW,WAAW,gBAAgB;AAEvF,WAAQ,OAAO;AACf,gBAAa,QAAQ,mBAAmB,UAAU,CAAC,SAAS,QAA0B;AACpF,gBAAY,WAAW,IAAI;KAC3B;AACF,gBAAa,QAAQ,YAAY,QAAQ,UAAU;AAEnD,UAAO;WACA,KAAK;GACZ,MAAMC,gBAAuB,eAAe,QAAQ,MAAM,IAAI,MAAM,OAAO,IAAI,CAAC;AAEhF,YAAS,cAAc;AACvB,gBAAa,QAAQ,UAAU,eAAe,UAAU;AAExD,SAAM;YACE;AACR,gBAAa,MAAM;;IAGvB,CAAC,aAAa,gBAAgB,CAC/B;AAYD,QAAO;EAAC;EAAM;EAAO;EAAW,gCAT7B,cAAsD,YAAY,UAAU,CAAC,YAAuB,OAAU,EAC/G,CAAC,YAAY,CACd;EAOuC;EAAa,oCALH;AAChD,WAAQ,OAAU;AAClB,YAAS,KAAK;KACb,EAAE,CAAC;EAEqD;;AAG7D,kCAAe"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_createResourceInvalidator = require('../utils/createResourceInvalidator.cjs');
|
|
3
|
+
const require_useThunderID = require('../contexts/ThunderID/useThunderID.cjs');
|
|
4
|
+
const require_createAuthenticatedFetcher = require('../utils/createAuthenticatedFetcher.cjs');
|
|
5
|
+
let react = require("react");
|
|
6
|
+
react = require_rolldown_runtime.__toESM(react);
|
|
7
|
+
|
|
8
|
+
//#region src/hooks/useResourceQuery.ts
|
|
9
|
+
/**
|
|
10
|
+
* Resolves the fetcher a management hook should use: the hook's own, then the provider's, then the
|
|
11
|
+
* SDK's authenticated HTTP client.
|
|
12
|
+
*/
|
|
13
|
+
const useResolvedFetcher = (fetcher) => {
|
|
14
|
+
const { http, instanceId } = require_useThunderID.default();
|
|
15
|
+
const providerFetcher = http?.fetcher;
|
|
16
|
+
return (0, react.useMemo)(() => fetcher ?? providerFetcher ?? require_createAuthenticatedFetcher.default(instanceId), [
|
|
17
|
+
fetcher,
|
|
18
|
+
providerFetcher,
|
|
19
|
+
instanceId
|
|
20
|
+
]);
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Fetches a management resource and keeps it fresh. Depends on no data fetching library: the
|
|
24
|
+
* request runs through the resolved fetcher, and a matching mutation triggers a refetch.
|
|
25
|
+
*
|
|
26
|
+
* @param queryKey - Identifies the data. Changing it refetches; mutations invalidate by key prefix.
|
|
27
|
+
* @param queryFn - Performs the request with the resolved fetcher.
|
|
28
|
+
* @param options - Query options.
|
|
29
|
+
* @returns The query state.
|
|
30
|
+
*/
|
|
31
|
+
const useResourceQuery = (queryKey, queryFn, { enabled = true, fetcher } = {}) => {
|
|
32
|
+
const { invalidator = require_createResourceInvalidator.fallbackResourceInvalidator } = require_useThunderID.default();
|
|
33
|
+
const resolvedFetcher = useResolvedFetcher(fetcher);
|
|
34
|
+
const [data, setData] = (0, react.useState)(void 0);
|
|
35
|
+
const [error, setError] = (0, react.useState)(null);
|
|
36
|
+
const [isLoading, setIsLoading] = (0, react.useState)(enabled);
|
|
37
|
+
const serializedKey = JSON.stringify(queryKey);
|
|
38
|
+
const queryFnRef = (0, react.useRef)(queryFn);
|
|
39
|
+
queryFnRef.current = queryFn;
|
|
40
|
+
const latestRequestRef = (0, react.useRef)(0);
|
|
41
|
+
const refetch = (0, react.useCallback)(async () => {
|
|
42
|
+
latestRequestRef.current += 1;
|
|
43
|
+
const requestId = latestRequestRef.current;
|
|
44
|
+
setIsLoading(true);
|
|
45
|
+
try {
|
|
46
|
+
const result = await queryFnRef.current(resolvedFetcher);
|
|
47
|
+
if (requestId === latestRequestRef.current) {
|
|
48
|
+
setData(result);
|
|
49
|
+
setError(null);
|
|
50
|
+
}
|
|
51
|
+
return result;
|
|
52
|
+
} catch (err) {
|
|
53
|
+
if (requestId === latestRequestRef.current) setError(err instanceof Error ? err : new Error(String(err)));
|
|
54
|
+
return;
|
|
55
|
+
} finally {
|
|
56
|
+
if (requestId === latestRequestRef.current) setIsLoading(false);
|
|
57
|
+
}
|
|
58
|
+
}, [resolvedFetcher]);
|
|
59
|
+
(0, react.useEffect)(() => {
|
|
60
|
+
if (!enabled) {
|
|
61
|
+
setIsLoading(false);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
refetch();
|
|
65
|
+
return invalidator.subscribe(JSON.parse(serializedKey), () => {
|
|
66
|
+
refetch();
|
|
67
|
+
});
|
|
68
|
+
}, [
|
|
69
|
+
enabled,
|
|
70
|
+
invalidator,
|
|
71
|
+
refetch,
|
|
72
|
+
serializedKey
|
|
73
|
+
]);
|
|
74
|
+
return {
|
|
75
|
+
data,
|
|
76
|
+
error,
|
|
77
|
+
isLoading,
|
|
78
|
+
refetch
|
|
79
|
+
};
|
|
80
|
+
};
|
|
81
|
+
var useResourceQuery_default = useResourceQuery;
|
|
82
|
+
|
|
83
|
+
//#endregion
|
|
84
|
+
exports.default = useResourceQuery_default;
|
|
85
|
+
exports.useResolvedFetcher = useResolvedFetcher;
|
|
86
|
+
//# sourceMappingURL=useResourceQuery.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useResourceQuery.cjs","names":["useThunderID","providerFetcher: ApiFetcher | undefined","createAuthenticatedFetcher","fallbackResourceInvalidator","resolvedFetcher: ApiFetcher","serializedKey: string","queryFnRef: {current: (fetcher: ApiFetcher) => Promise<T>}","latestRequestRef: {current: number}","refetch: () => Promise<T | undefined>","requestId: number","result: T"],"sources":["../../../src/hooks/useResourceQuery.ts"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {ApiFetcher} from '@thunderid/browser';\nimport {useCallback, useEffect, useMemo, useRef, useState} from 'react';\nimport useThunderID from '../contexts/ThunderID/useThunderID';\nimport createAuthenticatedFetcher from '../utils/createAuthenticatedFetcher';\nimport {ResourceQueryKey, fallbackResourceInvalidator} from '../utils/createResourceInvalidator';\n\n/**\n * Options accepted by every management query hook.\n */\nexport interface ResourceQueryOptions {\n /**\n * Set to `false` to skip fetching, for example until an identifier is known.\n * @default true\n */\n enabled?: boolean;\n /**\n * Transport for this hook only. Takes precedence over `ThunderIDProvider`'s `http.fetcher`.\n */\n fetcher?: ApiFetcher;\n}\n\n/**\n * State returned by a management query hook.\n */\nexport interface ResourceQueryResult<T> {\n data: T | undefined;\n error: Error | null;\n isLoading: boolean;\n /**\n * Fetches the resource again. Resolves with the new data, or `undefined` if the request failed.\n */\n refetch: () => Promise<T | undefined>;\n}\n\n/**\n * Resolves the fetcher a management hook should use: the hook's own, then the provider's, then the\n * SDK's authenticated HTTP client.\n */\nexport const useResolvedFetcher = (fetcher?: ApiFetcher): ApiFetcher => {\n const {http, instanceId} = useThunderID();\n const providerFetcher: ApiFetcher | undefined = http?.fetcher;\n\n return useMemo(\n () => fetcher ?? providerFetcher ?? createAuthenticatedFetcher(instanceId),\n [fetcher, providerFetcher, instanceId],\n );\n};\n\n/**\n * Fetches a management resource and keeps it fresh. Depends on no data fetching library: the\n * request runs through the resolved fetcher, and a matching mutation triggers a refetch.\n *\n * @param queryKey - Identifies the data. Changing it refetches; mutations invalidate by key prefix.\n * @param queryFn - Performs the request with the resolved fetcher.\n * @param options - Query options.\n * @returns The query state.\n */\nconst useResourceQuery = <T>(\n queryKey: ResourceQueryKey,\n queryFn: (fetcher: ApiFetcher) => Promise<T>,\n {enabled = true, fetcher}: ResourceQueryOptions = {},\n): ResourceQueryResult<T> => {\n const {invalidator = fallbackResourceInvalidator} = useThunderID();\n const resolvedFetcher: ApiFetcher = useResolvedFetcher(fetcher);\n const [data, setData] = useState<T | undefined>(undefined);\n const [error, setError] = useState<Error | null>(null);\n const [isLoading, setIsLoading] = useState<boolean>(enabled);\n\n const serializedKey: string = JSON.stringify(queryKey);\n const queryFnRef: {current: (fetcher: ApiFetcher) => Promise<T>} = useRef(queryFn);\n queryFnRef.current = queryFn;\n // Only the latest request may write state, so a slow earlier response cannot overwrite a newer one.\n const latestRequestRef: {current: number} = useRef(0);\n\n const refetch: () => Promise<T | undefined> = useCallback(async (): Promise<T | undefined> => {\n latestRequestRef.current += 1;\n const requestId: number = latestRequestRef.current;\n\n setIsLoading(true);\n\n try {\n const result: T = await queryFnRef.current(resolvedFetcher);\n\n if (requestId === latestRequestRef.current) {\n setData(result);\n setError(null);\n }\n\n return result;\n } catch (err) {\n if (requestId === latestRequestRef.current) {\n setError(err instanceof Error ? err : new Error(String(err)));\n }\n\n return undefined;\n } finally {\n if (requestId === latestRequestRef.current) {\n setIsLoading(false);\n }\n }\n }, [resolvedFetcher]);\n\n useEffect(() => {\n if (!enabled) {\n setIsLoading(false);\n\n return undefined;\n }\n\n void refetch();\n\n return invalidator.subscribe(JSON.parse(serializedKey) as ResourceQueryKey, () => {\n void refetch();\n });\n }, [enabled, invalidator, refetch, serializedKey]);\n\n return {data, error, isLoading, refetch};\n};\n\nexport default useResourceQuery;\n"],"mappings":";;;;;;;;;;;;AAyCA,MAAa,sBAAsB,YAAqC;CACtE,MAAM,EAAC,MAAM,eAAcA,8BAAc;CACzC,MAAMC,kBAA0C,MAAM;AAEtD,iCACQ,WAAW,mBAAmBC,2CAA2B,WAAW,EAC1E;EAAC;EAAS;EAAiB;EAAW,CACvC;;;;;;;;;;;AAYH,MAAM,oBACJ,UACA,SACA,EAAC,UAAU,MAAM,YAAiC,EAAE,KACzB;CAC3B,MAAM,EAAC,cAAcC,kEAA+BH,8BAAc;CAClE,MAAMI,kBAA8B,mBAAmB,QAAQ;CAC/D,MAAM,CAAC,MAAM,+BAAmC,OAAU;CAC1D,MAAM,CAAC,OAAO,gCAAmC,KAAK;CACtD,MAAM,CAAC,WAAW,oCAAkC,QAAQ;CAE5D,MAAMC,gBAAwB,KAAK,UAAU,SAAS;CACtD,MAAMC,+BAAoE,QAAQ;AAClF,YAAW,UAAU;CAErB,MAAMC,qCAA6C,EAAE;CAErD,MAAMC,iCAAoD,YAAoC;AAC5F,mBAAiB,WAAW;EAC5B,MAAMC,YAAoB,iBAAiB;AAE3C,eAAa,KAAK;AAElB,MAAI;GACF,MAAMC,SAAY,MAAM,WAAW,QAAQ,gBAAgB;AAE3D,OAAI,cAAc,iBAAiB,SAAS;AAC1C,YAAQ,OAAO;AACf,aAAS,KAAK;;AAGhB,UAAO;WACA,KAAK;AACZ,OAAI,cAAc,iBAAiB,QACjC,UAAS,eAAe,QAAQ,MAAM,IAAI,MAAM,OAAO,IAAI,CAAC,CAAC;AAG/D;YACQ;AACR,OAAI,cAAc,iBAAiB,QACjC,cAAa,MAAM;;IAGtB,CAAC,gBAAgB,CAAC;AAErB,4BAAgB;AACd,MAAI,CAAC,SAAS;AACZ,gBAAa,MAAM;AAEnB;;AAGF,EAAK,SAAS;AAEd,SAAO,YAAY,UAAU,KAAK,MAAM,cAAc,QAA4B;AAChF,GAAK,SAAS;IACd;IACD;EAAC;EAAS;EAAa;EAAS;EAAc,CAAC;AAElD,QAAO;EAAC;EAAM;EAAO;EAAW;EAAQ;;AAG1C,+BAAe"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_useManagementEndpoint = require('../useManagementEndpoint.cjs');
|
|
3
|
+
const require_useResourceMutation = require('../useResourceMutation.cjs');
|
|
4
|
+
let __thunderid_browser = require("@thunderid/browser");
|
|
5
|
+
__thunderid_browser = require_rolldown_runtime.__toESM(__thunderid_browser);
|
|
6
|
+
|
|
7
|
+
//#region src/hooks/users/useCreateUser.ts
|
|
8
|
+
/**
|
|
9
|
+
* Creates a user, then refetches any mounted user lists.
|
|
10
|
+
*
|
|
11
|
+
* @param options - Mutation options, including `onSuccess`, `onError`, and a per-hook `fetcher`.
|
|
12
|
+
* @returns The mutation state. Call `mutate(payload)` to create.
|
|
13
|
+
*/
|
|
14
|
+
const useCreateUser = (options) => {
|
|
15
|
+
const endpoint = require_useManagementEndpoint.default("users");
|
|
16
|
+
return require_useResourceMutation.default((payload, fetcher) => (0, __thunderid_browser.createUser)({
|
|
17
|
+
...endpoint,
|
|
18
|
+
fetcher,
|
|
19
|
+
payload
|
|
20
|
+
}), () => [[__thunderid_browser.UserQueryKeys.USERS]], options);
|
|
21
|
+
};
|
|
22
|
+
var useCreateUser_default = useCreateUser;
|
|
23
|
+
|
|
24
|
+
//#endregion
|
|
25
|
+
exports.default = useCreateUser_default;
|
|
26
|
+
//# sourceMappingURL=useCreateUser.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useCreateUser.cjs","names":["endpoint: ManagementEndpoint","useManagementEndpoint","useResourceMutation","UserQueryKeys"],"sources":["../../../../src/hooks/users/useCreateUser.ts"],"sourcesContent":["// Copyright 2025-2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {CreateManagedUserRequest, ManagedUser, UserQueryKeys, createUser} from '@thunderid/browser';\nimport useManagementEndpoint, {ManagementEndpoint} from '../useManagementEndpoint';\nimport useResourceMutation, {ResourceMutationOptions, ResourceMutationResult} from '../useResourceMutation';\n\n/**\n * Creates a user, then refetches any mounted user lists.\n *\n * @param options - Mutation options, including `onSuccess`, `onError`, and a per-hook `fetcher`.\n * @returns The mutation state. Call `mutate(payload)` to create.\n */\nconst useCreateUser = (\n options?: ResourceMutationOptions<ManagedUser, CreateManagedUserRequest>,\n): ResourceMutationResult<ManagedUser, CreateManagedUserRequest> => {\n const endpoint: ManagementEndpoint = useManagementEndpoint('users');\n\n return useResourceMutation(\n (payload: CreateManagedUserRequest, fetcher) => createUser({...endpoint, fetcher, payload}),\n () => [[UserQueryKeys.USERS]],\n options,\n );\n};\n\nexport default useCreateUser;\n"],"mappings":";;;;;;;;;;;;;AAaA,MAAM,iBACJ,YACkE;CAClE,MAAMA,WAA+BC,sCAAsB,QAAQ;AAEnE,QAAOC,qCACJ,SAAmC,gDAAuB;EAAC,GAAG;EAAU;EAAS;EAAQ,CAAC,QACrF,CAAC,CAACC,kCAAc,MAAM,CAAC,EAC7B,QACD;;AAGH,4BAAe"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_useManagementEndpoint = require('../useManagementEndpoint.cjs');
|
|
3
|
+
const require_useResourceMutation = require('../useResourceMutation.cjs');
|
|
4
|
+
let __thunderid_browser = require("@thunderid/browser");
|
|
5
|
+
__thunderid_browser = require_rolldown_runtime.__toESM(__thunderid_browser);
|
|
6
|
+
|
|
7
|
+
//#region src/hooks/users/useDeleteUser.ts
|
|
8
|
+
/**
|
|
9
|
+
* Deletes a user, then refetches any mounted user lists.
|
|
10
|
+
*
|
|
11
|
+
* @param options - Mutation options, including `onSuccess`, `onError`, and a per-hook `fetcher`.
|
|
12
|
+
* @returns The mutation state. Call `mutate(userId)` to delete.
|
|
13
|
+
*/
|
|
14
|
+
const useDeleteUser = (options) => {
|
|
15
|
+
const endpoint = require_useManagementEndpoint.default("users");
|
|
16
|
+
return require_useResourceMutation.default((userId, fetcher) => (0, __thunderid_browser.deleteUser)({
|
|
17
|
+
...endpoint,
|
|
18
|
+
fetcher,
|
|
19
|
+
userId
|
|
20
|
+
}), () => [[__thunderid_browser.UserQueryKeys.USERS]], options);
|
|
21
|
+
};
|
|
22
|
+
var useDeleteUser_default = useDeleteUser;
|
|
23
|
+
|
|
24
|
+
//#endregion
|
|
25
|
+
exports.default = useDeleteUser_default;
|
|
26
|
+
//# sourceMappingURL=useDeleteUser.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useDeleteUser.cjs","names":["endpoint: ManagementEndpoint","useManagementEndpoint","useResourceMutation","UserQueryKeys"],"sources":["../../../../src/hooks/users/useDeleteUser.ts"],"sourcesContent":["// Copyright 2025-2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {UserQueryKeys, deleteUser} from '@thunderid/browser';\nimport useManagementEndpoint, {ManagementEndpoint} from '../useManagementEndpoint';\nimport useResourceMutation, {ResourceMutationOptions, ResourceMutationResult} from '../useResourceMutation';\n\n/**\n * Deletes a user, then refetches any mounted user lists.\n *\n * @param options - Mutation options, including `onSuccess`, `onError`, and a per-hook `fetcher`.\n * @returns The mutation state. Call `mutate(userId)` to delete.\n */\nconst useDeleteUser = (options?: ResourceMutationOptions<void, string>): ResourceMutationResult<void, string> => {\n const endpoint: ManagementEndpoint = useManagementEndpoint('users');\n\n return useResourceMutation(\n (userId: string, fetcher) => deleteUser({...endpoint, fetcher, userId}),\n () => [[UserQueryKeys.USERS]],\n options,\n );\n};\n\nexport default useDeleteUser;\n"],"mappings":";;;;;;;;;;;;;AAaA,MAAM,iBAAiB,YAA0F;CAC/G,MAAMA,WAA+BC,sCAAsB,QAAQ;AAEnE,QAAOC,qCACJ,QAAgB,gDAAuB;EAAC,GAAG;EAAU;EAAS;EAAO,CAAC,QACjE,CAAC,CAACC,kCAAc,MAAM,CAAC,EAC7B,QACD;;AAGH,4BAAe"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_useManagementEndpoint = require('../useManagementEndpoint.cjs');
|
|
3
|
+
const require_useResourceQuery = require('../useResourceQuery.cjs');
|
|
4
|
+
let __thunderid_browser = require("@thunderid/browser");
|
|
5
|
+
__thunderid_browser = require_rolldown_runtime.__toESM(__thunderid_browser);
|
|
6
|
+
|
|
7
|
+
//#region src/hooks/users/useGetUser.ts
|
|
8
|
+
/**
|
|
9
|
+
* Fetches a single user. Does nothing until `userId` is set.
|
|
10
|
+
*
|
|
11
|
+
* @param userId - Identifier of the user.
|
|
12
|
+
* @param options - Query options, including a per-hook `fetcher`.
|
|
13
|
+
* @returns The query state.
|
|
14
|
+
*/
|
|
15
|
+
const useGetUser = (userId, options) => {
|
|
16
|
+
const endpoint = require_useManagementEndpoint.default("users");
|
|
17
|
+
return require_useResourceQuery.default([__thunderid_browser.UserQueryKeys.USER, userId], (fetcher) => (0, __thunderid_browser.getUser)({
|
|
18
|
+
...endpoint,
|
|
19
|
+
fetcher,
|
|
20
|
+
userId
|
|
21
|
+
}), {
|
|
22
|
+
...options,
|
|
23
|
+
enabled: Boolean(userId) && options?.enabled !== false
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
var useGetUser_default = useGetUser;
|
|
27
|
+
|
|
28
|
+
//#endregion
|
|
29
|
+
exports.default = useGetUser_default;
|
|
30
|
+
//# sourceMappingURL=useGetUser.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGetUser.cjs","names":["endpoint: ManagementEndpoint","useManagementEndpoint","useResourceQuery","UserQueryKeys"],"sources":["../../../../src/hooks/users/useGetUser.ts"],"sourcesContent":["// Copyright 2025-2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {ManagedUser, UserQueryKeys, getUser} from '@thunderid/browser';\nimport useManagementEndpoint, {ManagementEndpoint} from '../useManagementEndpoint';\nimport useResourceQuery, {ResourceQueryOptions, ResourceQueryResult} from '../useResourceQuery';\n\n/**\n * Fetches a single user. Does nothing until `userId` is set.\n *\n * @param userId - Identifier of the user.\n * @param options - Query options, including a per-hook `fetcher`.\n * @returns The query state.\n */\nconst useGetUser = (userId: string | undefined, options?: ResourceQueryOptions): ResourceQueryResult<ManagedUser> => {\n const endpoint: ManagementEndpoint = useManagementEndpoint('users');\n\n return useResourceQuery([UserQueryKeys.USER, userId], (fetcher) => getUser({...endpoint, fetcher, userId: userId!}), {\n ...options,\n enabled: Boolean(userId) && options?.enabled !== false,\n });\n};\n\nexport default useGetUser;\n"],"mappings":";;;;;;;;;;;;;;AAcA,MAAM,cAAc,QAA4B,YAAqE;CACnH,MAAMA,WAA+BC,sCAAsB,QAAQ;AAEnE,QAAOC,iCAAiB,CAACC,kCAAc,MAAM,OAAO,GAAG,6CAAoB;EAAC,GAAG;EAAU;EAAiB;EAAQ,CAAC,EAAE;EACnH,GAAG;EACH,SAAS,QAAQ,OAAO,IAAI,SAAS,YAAY;EAClD,CAAC;;AAGJ,yBAAe"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_useManagementEndpoint = require('../useManagementEndpoint.cjs');
|
|
3
|
+
const require_useResourceQuery = require('../useResourceQuery.cjs');
|
|
4
|
+
let __thunderid_browser = require("@thunderid/browser");
|
|
5
|
+
__thunderid_browser = require_rolldown_runtime.__toESM(__thunderid_browser);
|
|
6
|
+
|
|
7
|
+
//#region src/hooks/users/useGetUsers.ts
|
|
8
|
+
/**
|
|
9
|
+
* Fetches a page of users.
|
|
10
|
+
*
|
|
11
|
+
* @param params - Pagination and filter parameters.
|
|
12
|
+
* @param options - Query options, including a per-hook `fetcher`.
|
|
13
|
+
* @returns The query state.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```tsx
|
|
17
|
+
* const {data, isLoading} = useGetUsers({limit: 20, filter: 'username sw "a"'});
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
const useGetUsers = ({ filter, limit, offset } = {}, options) => {
|
|
21
|
+
const endpoint = require_useManagementEndpoint.default("users");
|
|
22
|
+
return require_useResourceQuery.default([__thunderid_browser.UserQueryKeys.USERS, {
|
|
23
|
+
filter,
|
|
24
|
+
limit,
|
|
25
|
+
offset
|
|
26
|
+
}], (fetcher) => (0, __thunderid_browser.getUsers)({
|
|
27
|
+
...endpoint,
|
|
28
|
+
fetcher,
|
|
29
|
+
filter,
|
|
30
|
+
limit,
|
|
31
|
+
offset
|
|
32
|
+
}), options);
|
|
33
|
+
};
|
|
34
|
+
var useGetUsers_default = useGetUsers;
|
|
35
|
+
|
|
36
|
+
//#endregion
|
|
37
|
+
exports.default = useGetUsers_default;
|
|
38
|
+
//# sourceMappingURL=useGetUsers.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useGetUsers.cjs","names":["endpoint: ManagementEndpoint","useManagementEndpoint","useResourceQuery","UserQueryKeys"],"sources":["../../../../src/hooks/users/useGetUsers.ts"],"sourcesContent":["// Copyright 2025-2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {ApiFilteringParams, ManagedUserListResponse, UserQueryKeys, getUsers} from '@thunderid/browser';\nimport useManagementEndpoint, {ManagementEndpoint} from '../useManagementEndpoint';\nimport useResourceQuery, {ResourceQueryOptions, ResourceQueryResult} from '../useResourceQuery';\n\n/**\n * Fetches a page of users.\n *\n * @param params - Pagination and filter parameters.\n * @param options - Query options, including a per-hook `fetcher`.\n * @returns The query state.\n *\n * @example\n * ```tsx\n * const {data, isLoading} = useGetUsers({limit: 20, filter: 'username sw \"a\"'});\n * ```\n */\nconst useGetUsers = (\n {filter, limit, offset}: ApiFilteringParams = {},\n options?: ResourceQueryOptions,\n): ResourceQueryResult<ManagedUserListResponse> => {\n const endpoint: ManagementEndpoint = useManagementEndpoint('users');\n\n return useResourceQuery(\n [UserQueryKeys.USERS, {filter, limit, offset}],\n (fetcher) => getUsers({...endpoint, fetcher, filter, limit, offset}),\n options,\n );\n};\n\nexport default useGetUsers;\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAmBA,MAAM,eACJ,EAAC,QAAQ,OAAO,WAA8B,EAAE,EAChD,YACiD;CACjD,MAAMA,WAA+BC,sCAAsB,QAAQ;AAEnE,QAAOC,iCACL,CAACC,kCAAc,OAAO;EAAC;EAAQ;EAAO;EAAO,CAAC,GAC7C,8CAAqB;EAAC,GAAG;EAAU;EAAS;EAAQ;EAAO;EAAO,CAAC,EACpE,QACD;;AAGH,0BAAe"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
const require_useManagementEndpoint = require('../useManagementEndpoint.cjs');
|
|
3
|
+
const require_useResourceMutation = require('../useResourceMutation.cjs');
|
|
4
|
+
let __thunderid_browser = require("@thunderid/browser");
|
|
5
|
+
__thunderid_browser = require_rolldown_runtime.__toESM(__thunderid_browser);
|
|
6
|
+
|
|
7
|
+
//#region src/hooks/users/useUpdateUser.ts
|
|
8
|
+
/**
|
|
9
|
+
* Updates a user, then refetches it and any mounted user lists.
|
|
10
|
+
*
|
|
11
|
+
* @param options - Mutation options, including `onSuccess`, `onError`, and a per-hook `fetcher`.
|
|
12
|
+
* @returns The mutation state. Call `mutate({userId, data})` to update.
|
|
13
|
+
*/
|
|
14
|
+
const useUpdateUser = (options) => {
|
|
15
|
+
const endpoint = require_useManagementEndpoint.default("users");
|
|
16
|
+
return require_useResourceMutation.default(({ userId, data }, fetcher) => (0, __thunderid_browser.updateUser)({
|
|
17
|
+
...endpoint,
|
|
18
|
+
fetcher,
|
|
19
|
+
payload: data,
|
|
20
|
+
userId
|
|
21
|
+
}), ({ userId }) => [[__thunderid_browser.UserQueryKeys.USER, userId], [__thunderid_browser.UserQueryKeys.USERS]], options);
|
|
22
|
+
};
|
|
23
|
+
var useUpdateUser_default = useUpdateUser;
|
|
24
|
+
|
|
25
|
+
//#endregion
|
|
26
|
+
exports.default = useUpdateUser_default;
|
|
27
|
+
//# sourceMappingURL=useUpdateUser.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUpdateUser.cjs","names":["endpoint: ManagementEndpoint","useManagementEndpoint","useResourceMutation","UserQueryKeys"],"sources":["../../../../src/hooks/users/useUpdateUser.ts"],"sourcesContent":["// Copyright 2025-2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {ManagedUser, UpdateManagedUserRequest, UserQueryKeys, updateUser} from '@thunderid/browser';\nimport useManagementEndpoint, {ManagementEndpoint} from '../useManagementEndpoint';\nimport useResourceMutation, {ResourceMutationOptions, ResourceMutationResult} from '../useResourceMutation';\n\n/**\n * Variables accepted by {@link useUpdateUser}'s `mutate`.\n */\nexport interface UpdateUserVariables {\n data: UpdateManagedUserRequest;\n userId: string;\n}\n\n/**\n * Updates a user, then refetches it and any mounted user lists.\n *\n * @param options - Mutation options, including `onSuccess`, `onError`, and a per-hook `fetcher`.\n * @returns The mutation state. Call `mutate({userId, data})` to update.\n */\nconst useUpdateUser = (\n options?: ResourceMutationOptions<ManagedUser, UpdateUserVariables>,\n): ResourceMutationResult<ManagedUser, UpdateUserVariables> => {\n const endpoint: ManagementEndpoint = useManagementEndpoint('users');\n\n return useResourceMutation(\n ({userId, data}: UpdateUserVariables, fetcher) => updateUser({...endpoint, fetcher, payload: data, userId}),\n ({userId}: UpdateUserVariables) => [[UserQueryKeys.USER, userId], [UserQueryKeys.USERS]],\n options,\n );\n};\n\nexport default useUpdateUser;\n"],"mappings":";;;;;;;;;;;;;AAqBA,MAAM,iBACJ,YAC6D;CAC7D,MAAMA,WAA+BC,sCAAsB,QAAQ;AAEnE,QAAOC,qCACJ,EAAC,QAAQ,QAA4B,gDAAuB;EAAC,GAAG;EAAU;EAAS,SAAS;EAAM;EAAO,CAAC,GAC1G,EAAC,aAAiC,CAAC,CAACC,kCAAc,MAAM,OAAO,EAAE,CAACA,kCAAc,MAAM,CAAC,EACxF,QACD;;AAGH,4BAAe"}
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -21,6 +21,21 @@ const require_useTheme = require('./contexts/Theme/useTheme.cjs');
|
|
|
21
21
|
const require_useTranslation = require('./hooks/useTranslation.cjs');
|
|
22
22
|
const require_flowTransformer = require('./utils/flowTransformer.cjs');
|
|
23
23
|
const require_useForm = require('./hooks/useForm.cjs');
|
|
24
|
+
const require_useGetApplications = require('./hooks/applications/useGetApplications.cjs');
|
|
25
|
+
const require_useGetApplication = require('./hooks/applications/useGetApplication.cjs');
|
|
26
|
+
const require_useCreateApplication = require('./hooks/applications/useCreateApplication.cjs');
|
|
27
|
+
const require_useUpdateApplication = require('./hooks/applications/useUpdateApplication.cjs');
|
|
28
|
+
const require_useDeleteApplication = require('./hooks/applications/useDeleteApplication.cjs');
|
|
29
|
+
const require_useGetUsers = require('./hooks/users/useGetUsers.cjs');
|
|
30
|
+
const require_useGetUser = require('./hooks/users/useGetUser.cjs');
|
|
31
|
+
const require_useCreateUser = require('./hooks/users/useCreateUser.cjs');
|
|
32
|
+
const require_useUpdateUser = require('./hooks/users/useUpdateUser.cjs');
|
|
33
|
+
const require_useDeleteUser = require('./hooks/users/useDeleteUser.cjs');
|
|
34
|
+
const require_useGetAgents = require('./hooks/agents/useGetAgents.cjs');
|
|
35
|
+
const require_useGetAgent = require('./hooks/agents/useGetAgent.cjs');
|
|
36
|
+
const require_useCreateAgent = require('./hooks/agents/useCreateAgent.cjs');
|
|
37
|
+
const require_useUpdateAgent = require('./hooks/agents/useUpdateAgent.cjs');
|
|
38
|
+
const require_useDeleteAgent = require('./hooks/agents/useDeleteAgent.cjs');
|
|
24
39
|
const require_Spinner = require('./components/primitives/Spinner/Spinner.cjs');
|
|
25
40
|
const require_Button = require('./components/primitives/Button/Button.cjs');
|
|
26
41
|
const require_BaseSignInButton = require('./components/actions/SignInButton/BaseSignInButton.cjs');
|
|
@@ -84,6 +99,9 @@ const require_MultiInput = require('./components/primitives/MultiInput/MultiInpu
|
|
|
84
99
|
const require_BaseUserProfile = require('./components/presentation/UserProfile/BaseUserProfile.cjs');
|
|
85
100
|
const require_updateMeProfile = require('./api/updateMeProfile.cjs');
|
|
86
101
|
const require_UserProfile = require('./components/presentation/UserProfile/UserProfile.cjs');
|
|
102
|
+
const require_BaseChangeCredential = require('./components/presentation/ChangeCredential/BaseChangeCredential.cjs');
|
|
103
|
+
const require_updateMeCredentials = require('./api/updateMeCredentials.cjs');
|
|
104
|
+
const require_ChangeCredential = require('./components/presentation/ChangeCredential/ChangeCredential.cjs');
|
|
87
105
|
const require_BaseUserAvatar = require('./components/presentation/UserAvatar/BaseUserAvatar.cjs');
|
|
88
106
|
const require_UserAvatar = require('./components/presentation/UserAvatar/UserAvatar.cjs');
|
|
89
107
|
const require_BaseUserDropdown = require('./components/presentation/UserDropdown/BaseUserDropdown.cjs');
|
|
@@ -120,8 +138,21 @@ Object.defineProperty(exports, 'AVATAR_URI_SCHEME', {
|
|
|
120
138
|
}
|
|
121
139
|
});
|
|
122
140
|
exports.AcceptInvite = require_AcceptInvite.default;
|
|
141
|
+
Object.defineProperty(exports, 'AgentQueryKeys', {
|
|
142
|
+
enumerable: true,
|
|
143
|
+
get: function () {
|
|
144
|
+
return __thunderid_browser.AgentQueryKeys;
|
|
145
|
+
}
|
|
146
|
+
});
|
|
123
147
|
exports.Alert = require_Alert.default;
|
|
148
|
+
Object.defineProperty(exports, 'ApplicationQueryKeys', {
|
|
149
|
+
enumerable: true,
|
|
150
|
+
get: function () {
|
|
151
|
+
return __thunderid_browser.ApplicationQueryKeys;
|
|
152
|
+
}
|
|
153
|
+
});
|
|
124
154
|
exports.BaseAcceptInvite = require_BaseAcceptInvite.default;
|
|
155
|
+
exports.BaseChangeCredential = require_BaseChangeCredential.default;
|
|
125
156
|
exports.BaseInviteUser = require_BaseInviteUser.default;
|
|
126
157
|
exports.BaseLanguageSwitcher = require_BaseLanguageSwitcher.default;
|
|
127
158
|
exports.BaseRecovery = require_BaseRecovery.default;
|
|
@@ -138,6 +169,7 @@ exports.BuildingAlt = require_BuildingAlt.default;
|
|
|
138
169
|
exports.Button = require_Button.default;
|
|
139
170
|
exports.Callback = require_Callback.Callback;
|
|
140
171
|
exports.Card = require_Card.default;
|
|
172
|
+
exports.ChangeCredential = require_ChangeCredential.default;
|
|
141
173
|
exports.Checkbox = require_Checkbox.default;
|
|
142
174
|
exports.CircleAlert = require_CircleAlert.default;
|
|
143
175
|
exports.CircleCheck = require_CircleCheck.default;
|
|
@@ -271,6 +303,12 @@ exports.UserDropdown = require_UserDropdown.default;
|
|
|
271
303
|
exports.UserIcon = require_User.default;
|
|
272
304
|
exports.UserProfile = require_UserProfile.default;
|
|
273
305
|
exports.UserProvider = require_UserProvider.default;
|
|
306
|
+
Object.defineProperty(exports, 'UserQueryKeys', {
|
|
307
|
+
enumerable: true,
|
|
308
|
+
get: function () {
|
|
309
|
+
return __thunderid_browser.UserQueryKeys;
|
|
310
|
+
}
|
|
311
|
+
});
|
|
274
312
|
Object.defineProperty(exports, 'buildAvatarSpec', {
|
|
275
313
|
enumerable: true,
|
|
276
314
|
get: function () {
|
|
@@ -283,7 +321,43 @@ Object.defineProperty(exports, 'countryCodeToFlagEmoji', {
|
|
|
283
321
|
return __thunderid_browser.countryCodeToFlagEmoji;
|
|
284
322
|
}
|
|
285
323
|
});
|
|
324
|
+
Object.defineProperty(exports, 'createAgent', {
|
|
325
|
+
enumerable: true,
|
|
326
|
+
get: function () {
|
|
327
|
+
return __thunderid_browser.createAgent;
|
|
328
|
+
}
|
|
329
|
+
});
|
|
330
|
+
Object.defineProperty(exports, 'createApplication', {
|
|
331
|
+
enumerable: true,
|
|
332
|
+
get: function () {
|
|
333
|
+
return __thunderid_browser.createApplication;
|
|
334
|
+
}
|
|
335
|
+
});
|
|
286
336
|
exports.createField = require_FieldFactory.createField;
|
|
337
|
+
Object.defineProperty(exports, 'createUser', {
|
|
338
|
+
enumerable: true,
|
|
339
|
+
get: function () {
|
|
340
|
+
return __thunderid_browser.createUser;
|
|
341
|
+
}
|
|
342
|
+
});
|
|
343
|
+
Object.defineProperty(exports, 'deleteAgent', {
|
|
344
|
+
enumerable: true,
|
|
345
|
+
get: function () {
|
|
346
|
+
return __thunderid_browser.deleteAgent;
|
|
347
|
+
}
|
|
348
|
+
});
|
|
349
|
+
Object.defineProperty(exports, 'deleteApplication', {
|
|
350
|
+
enumerable: true,
|
|
351
|
+
get: function () {
|
|
352
|
+
return __thunderid_browser.deleteApplication;
|
|
353
|
+
}
|
|
354
|
+
});
|
|
355
|
+
Object.defineProperty(exports, 'deleteUser', {
|
|
356
|
+
enumerable: true,
|
|
357
|
+
get: function () {
|
|
358
|
+
return __thunderid_browser.deleteUser;
|
|
359
|
+
}
|
|
360
|
+
});
|
|
287
361
|
Object.defineProperty(exports, 'deriveAvatarContent', {
|
|
288
362
|
enumerable: true,
|
|
289
363
|
get: function () {
|
|
@@ -315,8 +389,44 @@ Object.defineProperty(exports, 'getActiveTheme', {
|
|
|
315
389
|
return __thunderid_browser.getActiveTheme;
|
|
316
390
|
}
|
|
317
391
|
});
|
|
392
|
+
Object.defineProperty(exports, 'getAgent', {
|
|
393
|
+
enumerable: true,
|
|
394
|
+
get: function () {
|
|
395
|
+
return __thunderid_browser.getAgent;
|
|
396
|
+
}
|
|
397
|
+
});
|
|
398
|
+
Object.defineProperty(exports, 'getAgents', {
|
|
399
|
+
enumerable: true,
|
|
400
|
+
get: function () {
|
|
401
|
+
return __thunderid_browser.getAgents;
|
|
402
|
+
}
|
|
403
|
+
});
|
|
404
|
+
Object.defineProperty(exports, 'getApplication', {
|
|
405
|
+
enumerable: true,
|
|
406
|
+
get: function () {
|
|
407
|
+
return __thunderid_browser.getApplication;
|
|
408
|
+
}
|
|
409
|
+
});
|
|
410
|
+
Object.defineProperty(exports, 'getApplications', {
|
|
411
|
+
enumerable: true,
|
|
412
|
+
get: function () {
|
|
413
|
+
return __thunderid_browser.getApplications;
|
|
414
|
+
}
|
|
415
|
+
});
|
|
318
416
|
exports.getConsentOptionalKey = require_ConsentCheckboxList.getConsentOptionalKey;
|
|
319
417
|
exports.getMeProfile = require_getUsersMe.default;
|
|
418
|
+
Object.defineProperty(exports, 'getUser', {
|
|
419
|
+
enumerable: true,
|
|
420
|
+
get: function () {
|
|
421
|
+
return __thunderid_browser.getUser;
|
|
422
|
+
}
|
|
423
|
+
});
|
|
424
|
+
Object.defineProperty(exports, 'getUsers', {
|
|
425
|
+
enumerable: true,
|
|
426
|
+
get: function () {
|
|
427
|
+
return __thunderid_browser.getUsers;
|
|
428
|
+
}
|
|
429
|
+
});
|
|
320
430
|
exports.getUsersMeMeta = require_getUsersMeMeta.default;
|
|
321
431
|
Object.defineProperty(exports, 'http', {
|
|
322
432
|
enumerable: true,
|
|
@@ -391,14 +501,48 @@ Object.defineProperty(exports, 'resolveMeta', {
|
|
|
391
501
|
return __thunderid_browser.resolveMeta;
|
|
392
502
|
}
|
|
393
503
|
});
|
|
504
|
+
Object.defineProperty(exports, 'updateAgent', {
|
|
505
|
+
enumerable: true,
|
|
506
|
+
get: function () {
|
|
507
|
+
return __thunderid_browser.updateAgent;
|
|
508
|
+
}
|
|
509
|
+
});
|
|
510
|
+
Object.defineProperty(exports, 'updateApplication', {
|
|
511
|
+
enumerable: true,
|
|
512
|
+
get: function () {
|
|
513
|
+
return __thunderid_browser.updateApplication;
|
|
514
|
+
}
|
|
515
|
+
});
|
|
516
|
+
exports.updateMeCredentials = require_updateMeCredentials.default;
|
|
394
517
|
exports.updateMeProfile = require_updateMeProfile.default;
|
|
518
|
+
Object.defineProperty(exports, 'updateUser', {
|
|
519
|
+
enumerable: true,
|
|
520
|
+
get: function () {
|
|
521
|
+
return __thunderid_browser.updateUser;
|
|
522
|
+
}
|
|
523
|
+
});
|
|
395
524
|
exports.useBrowserUrl = require_useBrowserUrl.default;
|
|
525
|
+
exports.useCreateAgent = require_useCreateAgent.default;
|
|
526
|
+
exports.useCreateApplication = require_useCreateApplication.default;
|
|
527
|
+
exports.useCreateUser = require_useCreateUser.default;
|
|
528
|
+
exports.useDeleteAgent = require_useDeleteAgent.default;
|
|
529
|
+
exports.useDeleteApplication = require_useDeleteApplication.default;
|
|
530
|
+
exports.useDeleteUser = require_useDeleteUser.default;
|
|
396
531
|
exports.useFlow = require_useFlow.default;
|
|
397
532
|
exports.useForm = require_useForm.default;
|
|
533
|
+
exports.useGetAgent = require_useGetAgent.default;
|
|
534
|
+
exports.useGetAgents = require_useGetAgents.default;
|
|
535
|
+
exports.useGetApplication = require_useGetApplication.default;
|
|
536
|
+
exports.useGetApplications = require_useGetApplications.default;
|
|
537
|
+
exports.useGetUser = require_useGetUser.default;
|
|
538
|
+
exports.useGetUsers = require_useGetUsers.default;
|
|
398
539
|
exports.useI18n = require_useI18n.default;
|
|
399
540
|
exports.useOAuthCallback = require_useOAuthCallback.useOAuthCallback;
|
|
400
541
|
exports.useTheme = require_useTheme.default;
|
|
401
542
|
exports.useThunderID = require_useThunderID.default;
|
|
402
543
|
exports.useTranslation = require_useTranslation.default;
|
|
544
|
+
exports.useUpdateAgent = require_useUpdateAgent.default;
|
|
545
|
+
exports.useUpdateApplication = require_useUpdateApplication.default;
|
|
546
|
+
exports.useUpdateUser = require_useUpdateUser.default;
|
|
403
547
|
exports.useUser = require_useUser.default;
|
|
404
548
|
exports.validateFieldValue = require_FieldFactory.validateFieldValue;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
|
|
2
|
+
let __thunderid_browser = require("@thunderid/browser");
|
|
3
|
+
__thunderid_browser = require_rolldown_runtime.__toESM(__thunderid_browser);
|
|
4
|
+
|
|
5
|
+
//#region src/utils/createAuthenticatedFetcher.ts
|
|
6
|
+
const toResponse = (data, status, statusText) => ({
|
|
7
|
+
json: () => Promise.resolve(data),
|
|
8
|
+
ok: status >= 200 && status < 300,
|
|
9
|
+
status,
|
|
10
|
+
statusText: statusText ?? "",
|
|
11
|
+
text: () => Promise.resolve(typeof data === "string" ? data : JSON.stringify(data))
|
|
12
|
+
});
|
|
13
|
+
/**
|
|
14
|
+
* Creates a fetch-compatible function backed by the SDK's HTTP client for the given instance, so
|
|
15
|
+
* requests carry the signed-in user's access token.
|
|
16
|
+
*
|
|
17
|
+
* The HTTP client throws on a non-2xx status. This fetcher turns that back into a non-OK response
|
|
18
|
+
* so callers can read the real status (for example, to tell a 403 from a 404).
|
|
19
|
+
*
|
|
20
|
+
* @param instanceId - The ThunderID instance whose HTTP client should be used.
|
|
21
|
+
* @returns A fetcher that can be passed to any core API function.
|
|
22
|
+
*/
|
|
23
|
+
const createAuthenticatedFetcher = (instanceId = 0) => async (url, config) => {
|
|
24
|
+
const httpClient = __thunderid_browser.FetchHttpClient.getInstance(instanceId);
|
|
25
|
+
try {
|
|
26
|
+
const response = await httpClient.request({
|
|
27
|
+
data: typeof config.body === "string" ? JSON.parse(config.body) : void 0,
|
|
28
|
+
headers: config.headers,
|
|
29
|
+
method: config.method ?? "GET",
|
|
30
|
+
url
|
|
31
|
+
});
|
|
32
|
+
return toResponse(response.data, response.status, response.statusText);
|
|
33
|
+
} catch (error) {
|
|
34
|
+
const { response } = error;
|
|
35
|
+
if (!response) throw error;
|
|
36
|
+
return toResponse(response.data, response.status, response.statusText);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
var createAuthenticatedFetcher_default = createAuthenticatedFetcher;
|
|
40
|
+
|
|
41
|
+
//#endregion
|
|
42
|
+
exports.default = createAuthenticatedFetcher_default;
|
|
43
|
+
//# sourceMappingURL=createAuthenticatedFetcher.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createAuthenticatedFetcher.cjs","names":["httpClient: FetchHttpClient","FetchHttpClient","response: HttpResponse<unknown>"],"sources":["../../../src/utils/createAuthenticatedFetcher.ts"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\nimport {ApiFetcher, FetchHttpClient, HttpError, HttpRequestConfig, HttpResponse} from '@thunderid/browser';\n\nconst toResponse = (data: unknown, status: number, statusText: string | undefined): Response =>\n ({\n json: () => Promise.resolve(data),\n ok: status >= 200 && status < 300,\n status,\n statusText: statusText ?? '',\n text: () => Promise.resolve(typeof data === 'string' ? data : JSON.stringify(data)),\n }) as Response;\n\n/**\n * Creates a fetch-compatible function backed by the SDK's HTTP client for the given instance, so\n * requests carry the signed-in user's access token.\n *\n * The HTTP client throws on a non-2xx status. This fetcher turns that back into a non-OK response\n * so callers can read the real status (for example, to tell a 403 from a 404).\n *\n * @param instanceId - The ThunderID instance whose HTTP client should be used.\n * @returns A fetcher that can be passed to any core API function.\n */\nconst createAuthenticatedFetcher =\n (instanceId = 0): ApiFetcher =>\n async (url: string, config: RequestInit): Promise<Response> => {\n const httpClient: FetchHttpClient = FetchHttpClient.getInstance(instanceId);\n\n try {\n const response: HttpResponse<unknown> = await httpClient.request({\n data: typeof config.body === 'string' ? (JSON.parse(config.body) as unknown) : undefined,\n headers: config.headers as Record<string, string>,\n method: config.method ?? 'GET',\n url,\n } as HttpRequestConfig);\n\n return toResponse(response.data, response.status, response.statusText);\n } catch (error) {\n const {response} = error as HttpError;\n\n if (!response) {\n throw error;\n }\n\n return toResponse(response.data, response.status, response.statusText);\n }\n };\n\nexport default createAuthenticatedFetcher;\n"],"mappings":";;;;;AAKA,MAAM,cAAc,MAAe,QAAgB,gBAChD;CACC,YAAY,QAAQ,QAAQ,KAAK;CACjC,IAAI,UAAU,OAAO,SAAS;CAC9B;CACA,YAAY,cAAc;CAC1B,YAAY,QAAQ,QAAQ,OAAO,SAAS,WAAW,OAAO,KAAK,UAAU,KAAK,CAAC;CACpF;;;;;;;;;;;AAYH,MAAM,8BACH,aAAa,MACd,OAAO,KAAa,WAA2C;CAC7D,MAAMA,aAA8BC,oCAAgB,YAAY,WAAW;AAE3E,KAAI;EACF,MAAMC,WAAkC,MAAM,WAAW,QAAQ;GAC/D,MAAM,OAAO,OAAO,SAAS,WAAY,KAAK,MAAM,OAAO,KAAK,GAAe;GAC/E,SAAS,OAAO;GAChB,QAAQ,OAAO,UAAU;GACzB;GACD,CAAsB;AAEvB,SAAO,WAAW,SAAS,MAAM,SAAS,QAAQ,SAAS,WAAW;UAC/D,OAAO;EACd,MAAM,EAAC,aAAY;AAEnB,MAAI,CAAC,SACH,OAAM;AAGR,SAAO,WAAW,SAAS,MAAM,SAAS,QAAQ,SAAS,WAAW;;;AAI5E,yCAAe"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
|
|
2
|
+
//#region src/utils/createResourceInvalidator.ts
|
|
3
|
+
const matches = (queryKey, partialKey) => partialKey.every((part, index) => JSON.stringify(part) === JSON.stringify(queryKey[index]));
|
|
4
|
+
/**
|
|
5
|
+
* Creates an in-memory invalidator. Invalidation matches on key prefix, so invalidating
|
|
6
|
+
* `['applications']` reaches every applications list query regardless of its pagination.
|
|
7
|
+
*/
|
|
8
|
+
const createResourceInvalidator = () => {
|
|
9
|
+
const subscriptions = /* @__PURE__ */ new Set();
|
|
10
|
+
return {
|
|
11
|
+
invalidate: (partialKey) => {
|
|
12
|
+
subscriptions.forEach(({ listener, queryKey }) => {
|
|
13
|
+
if (matches(queryKey, partialKey)) listener();
|
|
14
|
+
});
|
|
15
|
+
},
|
|
16
|
+
subscribe: (queryKey, listener) => {
|
|
17
|
+
const subscription = {
|
|
18
|
+
listener,
|
|
19
|
+
queryKey
|
|
20
|
+
};
|
|
21
|
+
subscriptions.add(subscription);
|
|
22
|
+
return () => {
|
|
23
|
+
subscriptions.delete(subscription);
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Used when the context does not supply an invalidator, for example when an integration renders
|
|
30
|
+
* its own `ThunderIDContext` value instead of using `ThunderIDProvider`.
|
|
31
|
+
*/
|
|
32
|
+
const fallbackResourceInvalidator = createResourceInvalidator();
|
|
33
|
+
var createResourceInvalidator_default = createResourceInvalidator;
|
|
34
|
+
|
|
35
|
+
//#endregion
|
|
36
|
+
exports.default = createResourceInvalidator_default;
|
|
37
|
+
exports.fallbackResourceInvalidator = fallbackResourceInvalidator;
|
|
38
|
+
//# sourceMappingURL=createResourceInvalidator.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createResourceInvalidator.cjs","names":["subscription: {listener: () => void; queryKey: ResourceQueryKey}","fallbackResourceInvalidator: ResourceInvalidator"],"sources":["../../../src/utils/createResourceInvalidator.ts"],"sourcesContent":["// Copyright 2026 The ThunderID Authors\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * A key identifying a resource query, e.g. `['applications', {limit: 10}]` or `['application', id]`.\n */\nexport type ResourceQueryKey = readonly unknown[];\n\n/**\n * Lets mutations tell mounted queries that their data is stale.\n */\nexport interface ResourceInvalidator {\n /**\n * Notifies every subscribed query whose key starts with `partialKey`.\n */\n invalidate: (partialKey: ResourceQueryKey) => void;\n /**\n * Registers a listener for invalidations matching `queryKey`. Returns an unsubscribe function.\n */\n subscribe: (queryKey: ResourceQueryKey, listener: () => void) => () => void;\n}\n\nconst matches = (queryKey: ResourceQueryKey, partialKey: ResourceQueryKey): boolean =>\n partialKey.every((part: unknown, index: number) => JSON.stringify(part) === JSON.stringify(queryKey[index]));\n\n/**\n * Creates an in-memory invalidator. Invalidation matches on key prefix, so invalidating\n * `['applications']` reaches every applications list query regardless of its pagination.\n */\nconst createResourceInvalidator = (): ResourceInvalidator => {\n const subscriptions = new Set<{listener: () => void; queryKey: ResourceQueryKey}>();\n\n return {\n invalidate: (partialKey: ResourceQueryKey): void => {\n subscriptions.forEach(({listener, queryKey}: {listener: () => void; queryKey: ResourceQueryKey}) => {\n if (matches(queryKey, partialKey)) {\n listener();\n }\n });\n },\n subscribe: (queryKey: ResourceQueryKey, listener: () => void): (() => void) => {\n const subscription: {listener: () => void; queryKey: ResourceQueryKey} = {listener, queryKey};\n subscriptions.add(subscription);\n\n return (): void => {\n subscriptions.delete(subscription);\n };\n },\n };\n};\n\n/**\n * Used when the context does not supply an invalidator, for example when an integration renders\n * its own `ThunderIDContext` value instead of using `ThunderIDProvider`.\n */\nexport const fallbackResourceInvalidator: ResourceInvalidator = createResourceInvalidator();\n\nexport default createResourceInvalidator;\n"],"mappings":";;AAsBA,MAAM,WAAW,UAA4B,eAC3C,WAAW,OAAO,MAAe,UAAkB,KAAK,UAAU,KAAK,KAAK,KAAK,UAAU,SAAS,OAAO,CAAC;;;;;AAM9G,MAAM,kCAAuD;CAC3D,MAAM,gCAAgB,IAAI,KAAyD;AAEnF,QAAO;EACL,aAAa,eAAuC;AAClD,iBAAc,SAAS,EAAC,UAAU,eAAkE;AAClG,QAAI,QAAQ,UAAU,WAAW,CAC/B,WAAU;KAEZ;;EAEJ,YAAY,UAA4B,aAAuC;GAC7E,MAAMA,eAAmE;IAAC;IAAU;IAAS;AAC7F,iBAAc,IAAI,aAAa;AAE/B,gBAAmB;AACjB,kBAAc,OAAO,aAAa;;;EAGvC;;;;;;AAOH,MAAaC,8BAAmD,2BAA2B;AAE3F,wCAAe"}
|