@outseta/react 0.3.1 → 0.3.3
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/index.js +6 -3
- package/package.json +2 -2
- package/src/generated/activity/activity.ts +34 -7
- package/src/generated/billing/billing.ts +111 -84
- package/src/generated/crm/crm.ts +109 -80
- package/src/generated/email/email.ts +48 -21
- package/src/generated/outsetaAPI.schemas.ts +32 -2
- package/src/generated/public/public.ts +77 -3
- package/src/generated/support/support.ts +34 -7
|
@@ -25,6 +25,33 @@ import type {
|
|
|
25
25
|
|
|
26
26
|
import { customFetch } from '../../mutator';
|
|
27
27
|
|
|
28
|
+
// https://stackoverflow.com/questions/49579094/typescript-conditional-types-filter-out-readonly-properties-pick-only-requir/49579497#49579497
|
|
29
|
+
type IfEquals<X, Y, A = X, B = never> = (<T>() => T extends X ? 1 : 2) extends <
|
|
30
|
+
T,
|
|
31
|
+
>() => T extends Y ? 1 : 2
|
|
32
|
+
? A
|
|
33
|
+
: B;
|
|
34
|
+
|
|
35
|
+
type WritableKeys<T> = {
|
|
36
|
+
[P in keyof T]-?: IfEquals<
|
|
37
|
+
{ [Q in P]: T[P] },
|
|
38
|
+
{ -readonly [Q in P]: T[P] },
|
|
39
|
+
P
|
|
40
|
+
>;
|
|
41
|
+
}[keyof T];
|
|
42
|
+
|
|
43
|
+
type UnionToIntersection<U> =
|
|
44
|
+
(U extends any ? (k: U)=>void : never) extends ((k: infer I)=>void) ? I : never;
|
|
45
|
+
type DistributeReadOnlyOverUnions<T> = T extends any ? NonReadonly<T> : never;
|
|
46
|
+
|
|
47
|
+
type Writable<T> = Pick<T, WritableKeys<T>>;
|
|
48
|
+
type NonReadonly<T> = [T] extends [UnionToIntersection<T>] ? {
|
|
49
|
+
[P in keyof Writable<T>]: T[P] extends object
|
|
50
|
+
? NonReadonly<NonNullable<T[P]>>
|
|
51
|
+
: T[P];
|
|
52
|
+
} : DistributeReadOnlyOverUnions<T>;
|
|
53
|
+
|
|
54
|
+
|
|
28
55
|
|
|
29
56
|
type SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];
|
|
30
57
|
|
|
@@ -106,7 +133,7 @@ directly. If both are provided, they are merged.
|
|
|
106
133
|
* @summary Create a new broadcast campaign.
|
|
107
134
|
*/
|
|
108
135
|
export const campaignAddBroadcastEmail = (
|
|
109
|
-
campaignAddBroadcastEmailBody: CampaignAddBroadcastEmailBody
|
|
136
|
+
campaignAddBroadcastEmailBody: NonReadonly<CampaignAddBroadcastEmailBody>,
|
|
110
137
|
options?: SecondParameter<typeof customFetch>,signal?: AbortSignal
|
|
111
138
|
) => {
|
|
112
139
|
|
|
@@ -122,8 +149,8 @@ export const campaignAddBroadcastEmail = (
|
|
|
122
149
|
|
|
123
150
|
|
|
124
151
|
export const getCampaignAddBroadcastEmailMutationOptions = <TError = void,
|
|
125
|
-
TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof campaignAddBroadcastEmail>>, TError,{data: CampaignAddBroadcastEmailBody}, TContext>, request?: SecondParameter<typeof customFetch>}
|
|
126
|
-
): UseMutationOptions<Awaited<ReturnType<typeof campaignAddBroadcastEmail>>, TError,{data: CampaignAddBroadcastEmailBody}, TContext> => {
|
|
152
|
+
TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof campaignAddBroadcastEmail>>, TError,{data: NonReadonly<CampaignAddBroadcastEmailBody>}, TContext>, request?: SecondParameter<typeof customFetch>}
|
|
153
|
+
): UseMutationOptions<Awaited<ReturnType<typeof campaignAddBroadcastEmail>>, TError,{data: NonReadonly<CampaignAddBroadcastEmailBody>}, TContext> => {
|
|
127
154
|
|
|
128
155
|
const mutationKey = ['campaignAddBroadcastEmail'];
|
|
129
156
|
const {mutation: mutationOptions, request: requestOptions} = options ?
|
|
@@ -135,7 +162,7 @@ const {mutation: mutationOptions, request: requestOptions} = options ?
|
|
|
135
162
|
|
|
136
163
|
|
|
137
164
|
|
|
138
|
-
const mutationFn: MutationFunction<Awaited<ReturnType<typeof campaignAddBroadcastEmail>>, {data: CampaignAddBroadcastEmailBody}> = (props) => {
|
|
165
|
+
const mutationFn: MutationFunction<Awaited<ReturnType<typeof campaignAddBroadcastEmail>>, {data: NonReadonly<CampaignAddBroadcastEmailBody>}> = (props) => {
|
|
139
166
|
const {data} = props ?? {};
|
|
140
167
|
|
|
141
168
|
return campaignAddBroadcastEmail(data,requestOptions)
|
|
@@ -147,18 +174,18 @@ const {mutation: mutationOptions, request: requestOptions} = options ?
|
|
|
147
174
|
return { mutationFn, ...mutationOptions }}
|
|
148
175
|
|
|
149
176
|
export type CampaignAddBroadcastEmailMutationResult = NonNullable<Awaited<ReturnType<typeof campaignAddBroadcastEmail>>>
|
|
150
|
-
export type CampaignAddBroadcastEmailMutationBody = CampaignAddBroadcastEmailBody
|
|
177
|
+
export type CampaignAddBroadcastEmailMutationBody = NonReadonly<CampaignAddBroadcastEmailBody>
|
|
151
178
|
export type CampaignAddBroadcastEmailMutationError = void
|
|
152
179
|
|
|
153
180
|
/**
|
|
154
181
|
* @summary Create a new broadcast campaign.
|
|
155
182
|
*/
|
|
156
183
|
export const useCampaignAddBroadcastEmail = <TError = void,
|
|
157
|
-
TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof campaignAddBroadcastEmail>>, TError,{data: CampaignAddBroadcastEmailBody}, TContext>, request?: SecondParameter<typeof customFetch>}
|
|
184
|
+
TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof campaignAddBroadcastEmail>>, TError,{data: NonReadonly<CampaignAddBroadcastEmailBody>}, TContext>, request?: SecondParameter<typeof customFetch>}
|
|
158
185
|
): UseMutationResult<
|
|
159
186
|
Awaited<ReturnType<typeof campaignAddBroadcastEmail>>,
|
|
160
187
|
TError,
|
|
161
|
-
{data: CampaignAddBroadcastEmailBody},
|
|
188
|
+
{data: NonReadonly<CampaignAddBroadcastEmailBody>},
|
|
162
189
|
TContext
|
|
163
190
|
> => {
|
|
164
191
|
|
|
@@ -243,7 +270,7 @@ directly. If both are provided, they are merged.
|
|
|
243
270
|
*/
|
|
244
271
|
export const campaignUpdateBroadcastEmail = (
|
|
245
272
|
broadcastCampaignUid: string | null,
|
|
246
|
-
campaignUpdateBroadcastEmailBody: CampaignUpdateBroadcastEmailBody
|
|
273
|
+
campaignUpdateBroadcastEmailBody: NonReadonly<CampaignUpdateBroadcastEmailBody>,
|
|
247
274
|
options?: SecondParameter<typeof customFetch>,) => {
|
|
248
275
|
|
|
249
276
|
|
|
@@ -258,8 +285,8 @@ export const campaignUpdateBroadcastEmail = (
|
|
|
258
285
|
|
|
259
286
|
|
|
260
287
|
export const getCampaignUpdateBroadcastEmailMutationOptions = <TError = void,
|
|
261
|
-
TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof campaignUpdateBroadcastEmail>>, TError,{broadcastCampaignUid: string | null;data: CampaignUpdateBroadcastEmailBody}, TContext>, request?: SecondParameter<typeof customFetch>}
|
|
262
|
-
): UseMutationOptions<Awaited<ReturnType<typeof campaignUpdateBroadcastEmail>>, TError,{broadcastCampaignUid: string | null;data: CampaignUpdateBroadcastEmailBody}, TContext> => {
|
|
288
|
+
TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof campaignUpdateBroadcastEmail>>, TError,{broadcastCampaignUid: string | null;data: NonReadonly<CampaignUpdateBroadcastEmailBody>}, TContext>, request?: SecondParameter<typeof customFetch>}
|
|
289
|
+
): UseMutationOptions<Awaited<ReturnType<typeof campaignUpdateBroadcastEmail>>, TError,{broadcastCampaignUid: string | null;data: NonReadonly<CampaignUpdateBroadcastEmailBody>}, TContext> => {
|
|
263
290
|
|
|
264
291
|
const mutationKey = ['campaignUpdateBroadcastEmail'];
|
|
265
292
|
const {mutation: mutationOptions, request: requestOptions} = options ?
|
|
@@ -271,7 +298,7 @@ const {mutation: mutationOptions, request: requestOptions} = options ?
|
|
|
271
298
|
|
|
272
299
|
|
|
273
300
|
|
|
274
|
-
const mutationFn: MutationFunction<Awaited<ReturnType<typeof campaignUpdateBroadcastEmail>>, {broadcastCampaignUid: string | null;data: CampaignUpdateBroadcastEmailBody}> = (props) => {
|
|
301
|
+
const mutationFn: MutationFunction<Awaited<ReturnType<typeof campaignUpdateBroadcastEmail>>, {broadcastCampaignUid: string | null;data: NonReadonly<CampaignUpdateBroadcastEmailBody>}> = (props) => {
|
|
275
302
|
const {broadcastCampaignUid,data} = props ?? {};
|
|
276
303
|
|
|
277
304
|
return campaignUpdateBroadcastEmail(broadcastCampaignUid,data,requestOptions)
|
|
@@ -283,18 +310,18 @@ const {mutation: mutationOptions, request: requestOptions} = options ?
|
|
|
283
310
|
return { mutationFn, ...mutationOptions }}
|
|
284
311
|
|
|
285
312
|
export type CampaignUpdateBroadcastEmailMutationResult = NonNullable<Awaited<ReturnType<typeof campaignUpdateBroadcastEmail>>>
|
|
286
|
-
export type CampaignUpdateBroadcastEmailMutationBody = CampaignUpdateBroadcastEmailBody
|
|
313
|
+
export type CampaignUpdateBroadcastEmailMutationBody = NonReadonly<CampaignUpdateBroadcastEmailBody>
|
|
287
314
|
export type CampaignUpdateBroadcastEmailMutationError = void
|
|
288
315
|
|
|
289
316
|
/**
|
|
290
317
|
* @summary Update a broadcast campaign.
|
|
291
318
|
*/
|
|
292
319
|
export const useCampaignUpdateBroadcastEmail = <TError = void,
|
|
293
|
-
TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof campaignUpdateBroadcastEmail>>, TError,{broadcastCampaignUid: string | null;data: CampaignUpdateBroadcastEmailBody}, TContext>, request?: SecondParameter<typeof customFetch>}
|
|
320
|
+
TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof campaignUpdateBroadcastEmail>>, TError,{broadcastCampaignUid: string | null;data: NonReadonly<CampaignUpdateBroadcastEmailBody>}, TContext>, request?: SecondParameter<typeof customFetch>}
|
|
294
321
|
): UseMutationResult<
|
|
295
322
|
Awaited<ReturnType<typeof campaignUpdateBroadcastEmail>>,
|
|
296
323
|
TError,
|
|
297
|
-
{broadcastCampaignUid: string | null;data: CampaignUpdateBroadcastEmailBody},
|
|
324
|
+
{broadcastCampaignUid: string | null;data: NonReadonly<CampaignUpdateBroadcastEmailBody>},
|
|
298
325
|
TContext
|
|
299
326
|
> => {
|
|
300
327
|
|
|
@@ -640,7 +667,7 @@ determines if the person is sent a welcome email and defaults to false.
|
|
|
640
667
|
*/
|
|
641
668
|
export const emailListAddSubscription = (
|
|
642
669
|
emailListUid: string | null,
|
|
643
|
-
emailListAddSubscriptionBody: EmailListAddSubscriptionBody
|
|
670
|
+
emailListAddSubscriptionBody: NonReadonly<EmailListAddSubscriptionBody>,
|
|
644
671
|
options?: SecondParameter<typeof customFetch>,signal?: AbortSignal
|
|
645
672
|
) => {
|
|
646
673
|
|
|
@@ -656,8 +683,8 @@ export const emailListAddSubscription = (
|
|
|
656
683
|
|
|
657
684
|
|
|
658
685
|
export const getEmailListAddSubscriptionMutationOptions = <TError = void,
|
|
659
|
-
TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof emailListAddSubscription>>, TError,{emailListUid: string | null;data: EmailListAddSubscriptionBody}, TContext>, request?: SecondParameter<typeof customFetch>}
|
|
660
|
-
): UseMutationOptions<Awaited<ReturnType<typeof emailListAddSubscription>>, TError,{emailListUid: string | null;data: EmailListAddSubscriptionBody}, TContext> => {
|
|
686
|
+
TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof emailListAddSubscription>>, TError,{emailListUid: string | null;data: NonReadonly<EmailListAddSubscriptionBody>}, TContext>, request?: SecondParameter<typeof customFetch>}
|
|
687
|
+
): UseMutationOptions<Awaited<ReturnType<typeof emailListAddSubscription>>, TError,{emailListUid: string | null;data: NonReadonly<EmailListAddSubscriptionBody>}, TContext> => {
|
|
661
688
|
|
|
662
689
|
const mutationKey = ['emailListAddSubscription'];
|
|
663
690
|
const {mutation: mutationOptions, request: requestOptions} = options ?
|
|
@@ -669,7 +696,7 @@ const {mutation: mutationOptions, request: requestOptions} = options ?
|
|
|
669
696
|
|
|
670
697
|
|
|
671
698
|
|
|
672
|
-
const mutationFn: MutationFunction<Awaited<ReturnType<typeof emailListAddSubscription>>, {emailListUid: string | null;data: EmailListAddSubscriptionBody}> = (props) => {
|
|
699
|
+
const mutationFn: MutationFunction<Awaited<ReturnType<typeof emailListAddSubscription>>, {emailListUid: string | null;data: NonReadonly<EmailListAddSubscriptionBody>}> = (props) => {
|
|
673
700
|
const {emailListUid,data} = props ?? {};
|
|
674
701
|
|
|
675
702
|
return emailListAddSubscription(emailListUid,data,requestOptions)
|
|
@@ -681,18 +708,18 @@ const {mutation: mutationOptions, request: requestOptions} = options ?
|
|
|
681
708
|
return { mutationFn, ...mutationOptions }}
|
|
682
709
|
|
|
683
710
|
export type EmailListAddSubscriptionMutationResult = NonNullable<Awaited<ReturnType<typeof emailListAddSubscription>>>
|
|
684
|
-
export type EmailListAddSubscriptionMutationBody = EmailListAddSubscriptionBody
|
|
711
|
+
export type EmailListAddSubscriptionMutationBody = NonReadonly<EmailListAddSubscriptionBody>
|
|
685
712
|
export type EmailListAddSubscriptionMutationError = void
|
|
686
713
|
|
|
687
714
|
/**
|
|
688
715
|
* @summary Subscribe a person to an email list.
|
|
689
716
|
*/
|
|
690
717
|
export const useEmailListAddSubscription = <TError = void,
|
|
691
|
-
TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof emailListAddSubscription>>, TError,{emailListUid: string | null;data: EmailListAddSubscriptionBody}, TContext>, request?: SecondParameter<typeof customFetch>}
|
|
718
|
+
TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof emailListAddSubscription>>, TError,{emailListUid: string | null;data: NonReadonly<EmailListAddSubscriptionBody>}, TContext>, request?: SecondParameter<typeof customFetch>}
|
|
692
719
|
): UseMutationResult<
|
|
693
720
|
Awaited<ReturnType<typeof emailListAddSubscription>>,
|
|
694
721
|
TError,
|
|
695
|
-
{emailListUid: string | null;data: EmailListAddSubscriptionBody},
|
|
722
|
+
{emailListUid: string | null;data: NonReadonly<EmailListAddSubscriptionBody>},
|
|
696
723
|
TContext
|
|
697
724
|
> => {
|
|
698
725
|
|
|
@@ -40,9 +40,9 @@ export interface AbstractBean {
|
|
|
40
40
|
/** @nullable */
|
|
41
41
|
_objectType?: string | null;
|
|
42
42
|
/** @minLength 1 */
|
|
43
|
-
Created: string;
|
|
43
|
+
readonly Created: string;
|
|
44
44
|
/** @minLength 1 */
|
|
45
|
-
Updated: string;
|
|
45
|
+
readonly Updated: string;
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
/**
|
|
@@ -2642,6 +2642,8 @@ export interface TokenPayload {
|
|
|
2642
2642
|
/** @nullable */
|
|
2643
2643
|
id_token?: string | null;
|
|
2644
2644
|
/** @nullable */
|
|
2645
|
+
refresh_token?: string | null;
|
|
2646
|
+
/** @nullable */
|
|
2645
2647
|
token_type?: string | null;
|
|
2646
2648
|
}
|
|
2647
2649
|
|
|
@@ -3568,12 +3570,33 @@ export type SendGridDomainAuthenticationAllOf = {
|
|
|
3568
3570
|
* @maxLength 250
|
|
3569
3571
|
*/
|
|
3570
3572
|
DomainName: string;
|
|
3573
|
+
/**
|
|
3574
|
+
* @maxLength 100
|
|
3575
|
+
* @nullable
|
|
3576
|
+
*/
|
|
3577
|
+
SendGridSubuser?: string | null;
|
|
3571
3578
|
IsValid?: boolean;
|
|
3572
3579
|
IsBrandedLinksDisabled?: boolean;
|
|
3580
|
+
IsLinkTrackingDnsValid?: boolean;
|
|
3581
|
+
/**
|
|
3582
|
+
* @maxLength 100
|
|
3583
|
+
* @nullable
|
|
3584
|
+
*/
|
|
3585
|
+
CloudflareCustomHostnameId?: string | null;
|
|
3586
|
+
/**
|
|
3587
|
+
* @maxLength 50
|
|
3588
|
+
* @nullable
|
|
3589
|
+
*/
|
|
3590
|
+
CloudflareSslStatus?: string | null;
|
|
3591
|
+
/** @nullable */
|
|
3592
|
+
CloudflareCustomHostnameCreatedAt?: string | null;
|
|
3593
|
+
IsHttpsUpgradeAvailable?: boolean;
|
|
3573
3594
|
/** @nullable */
|
|
3574
3595
|
LastValidationAttempt?: string | null;
|
|
3575
3596
|
/** @nullable */
|
|
3576
3597
|
DnsEntries?: DnsEntry[] | null;
|
|
3598
|
+
/** @nullable */
|
|
3599
|
+
LegacyDnsEntries?: DnsEntry[] | null;
|
|
3577
3600
|
};
|
|
3578
3601
|
|
|
3579
3602
|
export type SendGridDomainAuthentication = AbstractQcountBean & SendGridDomainAuthenticationAllOf;
|
|
@@ -5845,6 +5868,13 @@ export type AuthVerifyTwoFactorRecoveryParams = {
|
|
|
5845
5868
|
data: unknown | null;
|
|
5846
5869
|
};
|
|
5847
5870
|
|
|
5871
|
+
export type AuthRefreshTokenParams = {
|
|
5872
|
+
/**
|
|
5873
|
+
* @nullable
|
|
5874
|
+
*/
|
|
5875
|
+
data: unknown | null;
|
|
5876
|
+
};
|
|
5877
|
+
|
|
5848
5878
|
export type TokenTwoFactorEnrollmentBeginEmailParams = {
|
|
5849
5879
|
/**
|
|
5850
5880
|
* @nullable
|
|
@@ -10,6 +10,7 @@ import type {
|
|
|
10
10
|
|
|
11
11
|
import type {
|
|
12
12
|
AuthGetTokenParams,
|
|
13
|
+
AuthRefreshTokenParams,
|
|
13
14
|
AuthResendTwoFactorParams,
|
|
14
15
|
AuthSwitchTwoFactorMechanismParams,
|
|
15
16
|
AuthVerifyTwoFactorRecoveryParams,
|
|
@@ -36,9 +37,9 @@ type SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];
|
|
|
36
37
|
|
|
37
38
|
{ "username": "user@example.com", "password": "their-password" }
|
|
38
39
|
|
|
39
|
-
On success the response is `200` with an access token:
|
|
40
|
+
On success the response is `200` with an access token and refresh token:
|
|
40
41
|
|
|
41
|
-
{ "access_token": "eyJ...", "token_type": "Bearer", "expires_in": 31536000 }
|
|
42
|
+
{ "access_token": "eyJ...", "refresh_token": "...", "token_type": "Bearer", "expires_in": 31536000 }
|
|
42
43
|
|
|
43
44
|
**Two-factor authentication.** If the user has a verified 2FA method,
|
|
44
45
|
the password alone is not enough. After verifying the password this
|
|
@@ -140,7 +141,7 @@ authenticator app):
|
|
|
140
141
|
On success the response is `200` with the final access token, in the
|
|
141
142
|
same shape as `POST /api/v1/tokens`:
|
|
142
143
|
|
|
143
|
-
{ "access_token": "eyJ...", "token_type": "Bearer", "expires_in": 31536000 }
|
|
144
|
+
{ "access_token": "eyJ...", "refresh_token": "...", "token_type": "Bearer", "expires_in": 31536000 }
|
|
144
145
|
|
|
145
146
|
An incorrect code returns `400` (`invalid_grant`). A code has at most
|
|
146
147
|
five attempts before the challenge locks. An expired challenge returns
|
|
@@ -439,6 +440,79 @@ export const useAuthVerifyTwoFactorRecovery = <TError = string,
|
|
|
439
440
|
return useMutation(mutationOptions);
|
|
440
441
|
}
|
|
441
442
|
/**
|
|
443
|
+
* Post the refresh token returned from `POST /api/v1/tokens` or the
|
|
444
|
+
two-factor completion endpoints:
|
|
445
|
+
|
|
446
|
+
{ "refresh_token": "..." }
|
|
447
|
+
|
|
448
|
+
On success the response is `200` with a new access token and refresh token:
|
|
449
|
+
|
|
450
|
+
{ "access_token": "eyJ...", "refresh_token": "...", "token_type": "Bearer", "expires_in": 31536000 }
|
|
451
|
+
|
|
452
|
+
An invalid or expired refresh token returns `400` with a body of `invalid_grant`.
|
|
453
|
+
* @summary Exchange a refresh token for a new access token.
|
|
454
|
+
*/
|
|
455
|
+
export const authRefreshToken = (
|
|
456
|
+
params: AuthRefreshTokenParams,
|
|
457
|
+
options?: SecondParameter<typeof customFetch>,signal?: AbortSignal
|
|
458
|
+
) => {
|
|
459
|
+
|
|
460
|
+
|
|
461
|
+
return customFetch<TokenPayload>(
|
|
462
|
+
{url: `/api/v1/tokens/refresh-token`, method: 'POST',
|
|
463
|
+
params, signal
|
|
464
|
+
},
|
|
465
|
+
options);
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
|
|
469
|
+
|
|
470
|
+
export const getAuthRefreshTokenMutationOptions = <TError = string,
|
|
471
|
+
TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof authRefreshToken>>, TError,{params: AuthRefreshTokenParams}, TContext>, request?: SecondParameter<typeof customFetch>}
|
|
472
|
+
): UseMutationOptions<Awaited<ReturnType<typeof authRefreshToken>>, TError,{params: AuthRefreshTokenParams}, TContext> => {
|
|
473
|
+
|
|
474
|
+
const mutationKey = ['authRefreshToken'];
|
|
475
|
+
const {mutation: mutationOptions, request: requestOptions} = options ?
|
|
476
|
+
options.mutation && 'mutationKey' in options.mutation && options.mutation.mutationKey ?
|
|
477
|
+
options
|
|
478
|
+
: {...options, mutation: {...options.mutation, mutationKey}}
|
|
479
|
+
: {mutation: { mutationKey, }, request: undefined};
|
|
480
|
+
|
|
481
|
+
|
|
482
|
+
|
|
483
|
+
|
|
484
|
+
const mutationFn: MutationFunction<Awaited<ReturnType<typeof authRefreshToken>>, {params: AuthRefreshTokenParams}> = (props) => {
|
|
485
|
+
const {params} = props ?? {};
|
|
486
|
+
|
|
487
|
+
return authRefreshToken(params,requestOptions)
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
|
|
491
|
+
|
|
492
|
+
|
|
493
|
+
return { mutationFn, ...mutationOptions }}
|
|
494
|
+
|
|
495
|
+
export type AuthRefreshTokenMutationResult = NonNullable<Awaited<ReturnType<typeof authRefreshToken>>>
|
|
496
|
+
|
|
497
|
+
export type AuthRefreshTokenMutationError = string
|
|
498
|
+
|
|
499
|
+
/**
|
|
500
|
+
* @summary Exchange a refresh token for a new access token.
|
|
501
|
+
*/
|
|
502
|
+
export const useAuthRefreshToken = <TError = string,
|
|
503
|
+
TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof authRefreshToken>>, TError,{params: AuthRefreshTokenParams}, TContext>, request?: SecondParameter<typeof customFetch>}
|
|
504
|
+
): UseMutationResult<
|
|
505
|
+
Awaited<ReturnType<typeof authRefreshToken>>,
|
|
506
|
+
TError,
|
|
507
|
+
{params: AuthRefreshTokenParams},
|
|
508
|
+
TContext
|
|
509
|
+
> => {
|
|
510
|
+
|
|
511
|
+
const mutationOptions = getAuthRefreshTokenMutationOptions(options);
|
|
512
|
+
|
|
513
|
+
return useMutation(mutationOptions);
|
|
514
|
+
}
|
|
515
|
+
/**
|
|
442
516
|
* Call this when `POST /api/v1/tokens` returned
|
|
443
517
|
`two_factor_enrollment_required` and the user chooses email. Post the
|
|
444
518
|
enrollment token from that response:
|
|
@@ -26,6 +26,33 @@ import type {
|
|
|
26
26
|
|
|
27
27
|
import { customFetch } from '../../mutator';
|
|
28
28
|
|
|
29
|
+
// https://stackoverflow.com/questions/49579094/typescript-conditional-types-filter-out-readonly-properties-pick-only-requir/49579497#49579497
|
|
30
|
+
type IfEquals<X, Y, A = X, B = never> = (<T>() => T extends X ? 1 : 2) extends <
|
|
31
|
+
T,
|
|
32
|
+
>() => T extends Y ? 1 : 2
|
|
33
|
+
? A
|
|
34
|
+
: B;
|
|
35
|
+
|
|
36
|
+
type WritableKeys<T> = {
|
|
37
|
+
[P in keyof T]-?: IfEquals<
|
|
38
|
+
{ [Q in P]: T[P] },
|
|
39
|
+
{ -readonly [Q in P]: T[P] },
|
|
40
|
+
P
|
|
41
|
+
>;
|
|
42
|
+
}[keyof T];
|
|
43
|
+
|
|
44
|
+
type UnionToIntersection<U> =
|
|
45
|
+
(U extends any ? (k: U)=>void : never) extends ((k: infer I)=>void) ? I : never;
|
|
46
|
+
type DistributeReadOnlyOverUnions<T> = T extends any ? NonReadonly<T> : never;
|
|
47
|
+
|
|
48
|
+
type Writable<T> = Pick<T, WritableKeys<T>>;
|
|
49
|
+
type NonReadonly<T> = [T] extends [UnionToIntersection<T>] ? {
|
|
50
|
+
[P in keyof Writable<T>]: T[P] extends object
|
|
51
|
+
? NonReadonly<NonNullable<T[P]>>
|
|
52
|
+
: T[P];
|
|
53
|
+
} : DistributeReadOnlyOverUnions<T>;
|
|
54
|
+
|
|
55
|
+
|
|
29
56
|
|
|
30
57
|
type SecondParameter<T extends (...args: never) => unknown> = Parameters<T>[1];
|
|
31
58
|
|
|
@@ -106,7 +133,7 @@ export function useCaseGetAllCases<TData = Awaited<ReturnType<typeof caseGetAllC
|
|
|
106
133
|
* @summary Adds a case into the support system.
|
|
107
134
|
*/
|
|
108
135
|
export const caseAddCase = (
|
|
109
|
-
caseAddCaseBody: CaseAddCaseBody
|
|
136
|
+
caseAddCaseBody: NonReadonly<CaseAddCaseBody>,
|
|
110
137
|
params?: CaseAddCaseParams,
|
|
111
138
|
options?: SecondParameter<typeof customFetch>,signal?: AbortSignal
|
|
112
139
|
) => {
|
|
@@ -124,8 +151,8 @@ export const caseAddCase = (
|
|
|
124
151
|
|
|
125
152
|
|
|
126
153
|
export const getCaseAddCaseMutationOptions = <TError = void,
|
|
127
|
-
TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof caseAddCase>>, TError,{data: CaseAddCaseBody
|
|
128
|
-
): UseMutationOptions<Awaited<ReturnType<typeof caseAddCase>>, TError,{data: CaseAddCaseBody
|
|
154
|
+
TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof caseAddCase>>, TError,{data: NonReadonly<CaseAddCaseBody>;params?: CaseAddCaseParams}, TContext>, request?: SecondParameter<typeof customFetch>}
|
|
155
|
+
): UseMutationOptions<Awaited<ReturnType<typeof caseAddCase>>, TError,{data: NonReadonly<CaseAddCaseBody>;params?: CaseAddCaseParams}, TContext> => {
|
|
129
156
|
|
|
130
157
|
const mutationKey = ['caseAddCase'];
|
|
131
158
|
const {mutation: mutationOptions, request: requestOptions} = options ?
|
|
@@ -137,7 +164,7 @@ const {mutation: mutationOptions, request: requestOptions} = options ?
|
|
|
137
164
|
|
|
138
165
|
|
|
139
166
|
|
|
140
|
-
const mutationFn: MutationFunction<Awaited<ReturnType<typeof caseAddCase>>, {data: CaseAddCaseBody
|
|
167
|
+
const mutationFn: MutationFunction<Awaited<ReturnType<typeof caseAddCase>>, {data: NonReadonly<CaseAddCaseBody>;params?: CaseAddCaseParams}> = (props) => {
|
|
141
168
|
const {data,params} = props ?? {};
|
|
142
169
|
|
|
143
170
|
return caseAddCase(data,params,requestOptions)
|
|
@@ -149,18 +176,18 @@ const {mutation: mutationOptions, request: requestOptions} = options ?
|
|
|
149
176
|
return { mutationFn, ...mutationOptions }}
|
|
150
177
|
|
|
151
178
|
export type CaseAddCaseMutationResult = NonNullable<Awaited<ReturnType<typeof caseAddCase>>>
|
|
152
|
-
export type CaseAddCaseMutationBody = CaseAddCaseBody
|
|
179
|
+
export type CaseAddCaseMutationBody = NonReadonly<CaseAddCaseBody>
|
|
153
180
|
export type CaseAddCaseMutationError = void
|
|
154
181
|
|
|
155
182
|
/**
|
|
156
183
|
* @summary Adds a case into the support system.
|
|
157
184
|
*/
|
|
158
185
|
export const useCaseAddCase = <TError = void,
|
|
159
|
-
TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof caseAddCase>>, TError,{data: CaseAddCaseBody
|
|
186
|
+
TContext = unknown>(options?: { mutation?:UseMutationOptions<Awaited<ReturnType<typeof caseAddCase>>, TError,{data: NonReadonly<CaseAddCaseBody>;params?: CaseAddCaseParams}, TContext>, request?: SecondParameter<typeof customFetch>}
|
|
160
187
|
): UseMutationResult<
|
|
161
188
|
Awaited<ReturnType<typeof caseAddCase>>,
|
|
162
189
|
TError,
|
|
163
|
-
{data: CaseAddCaseBody
|
|
190
|
+
{data: NonReadonly<CaseAddCaseBody>;params?: CaseAddCaseParams},
|
|
164
191
|
TContext
|
|
165
192
|
> => {
|
|
166
193
|
|