@cloudbase/auth 3.0.0 → 3.0.2
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/cjs/adapter.js +19 -16
- package/dist/cjs/index.d.ts +107 -33
- package/dist/cjs/index.js +1529 -428
- package/dist/cjs/type.d.ts +242 -0
- package/dist/cjs/type.js +3 -0
- package/dist/cjs/utils.d.ts +5 -0
- package/dist/cjs/utils.js +59 -0
- package/dist/esm/adapter.js +19 -16
- package/dist/esm/index.d.ts +107 -33
- package/dist/esm/index.js +1527 -426
- package/dist/esm/type.d.ts +242 -0
- package/dist/esm/type.js +2 -0
- package/dist/esm/utils.d.ts +5 -0
- package/dist/esm/utils.js +51 -0
- package/dist/miniprogram/index.js +1 -1
- package/package.json +6 -6
- package/src/adapter.ts +13 -8
- package/src/index.ts +1606 -363
- package/src/type.ts +306 -0
- package/src/utils.ts +69 -0
- package/tsconfig.json +1 -1
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
import type { authModels, OAUTH_TYPE } from '@cloudbase/oauth';
|
|
2
|
+
import { AuthError } from '@cloudbase/oauth';
|
|
3
|
+
export interface SignInAnonymouslyReq {
|
|
4
|
+
provider_token?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare type User = {
|
|
7
|
+
id: any;
|
|
8
|
+
aud: string;
|
|
9
|
+
role: string[];
|
|
10
|
+
email: any;
|
|
11
|
+
email_confirmed_at: string;
|
|
12
|
+
phone: any;
|
|
13
|
+
phone_confirmed_at: string;
|
|
14
|
+
confirmed_at: string;
|
|
15
|
+
last_sign_in_at: string;
|
|
16
|
+
app_metadata: {
|
|
17
|
+
provider: any;
|
|
18
|
+
providers: any[];
|
|
19
|
+
};
|
|
20
|
+
user_metadata: {
|
|
21
|
+
name: any;
|
|
22
|
+
picture: any;
|
|
23
|
+
username: any;
|
|
24
|
+
gender: any;
|
|
25
|
+
locale: any;
|
|
26
|
+
uid: any;
|
|
27
|
+
nickName: any;
|
|
28
|
+
avatarUrl: any;
|
|
29
|
+
location: any;
|
|
30
|
+
hasPassword: any;
|
|
31
|
+
};
|
|
32
|
+
identities: any;
|
|
33
|
+
created_at: string;
|
|
34
|
+
updated_at: string;
|
|
35
|
+
is_anonymous: boolean;
|
|
36
|
+
};
|
|
37
|
+
export declare type Session = {
|
|
38
|
+
access_token?: string;
|
|
39
|
+
refresh_token?: string;
|
|
40
|
+
expires_in?: number;
|
|
41
|
+
token_type?: string;
|
|
42
|
+
user: User;
|
|
43
|
+
};
|
|
44
|
+
export interface SignInWithPasswordReq {
|
|
45
|
+
username?: string;
|
|
46
|
+
email?: string;
|
|
47
|
+
phone?: string;
|
|
48
|
+
password: string;
|
|
49
|
+
is_encrypt?: boolean;
|
|
50
|
+
}
|
|
51
|
+
export interface CommonRes {
|
|
52
|
+
data: {};
|
|
53
|
+
error: AuthError | null;
|
|
54
|
+
}
|
|
55
|
+
export interface SignInRes {
|
|
56
|
+
data: {
|
|
57
|
+
user?: User;
|
|
58
|
+
session?: Session;
|
|
59
|
+
};
|
|
60
|
+
error: AuthError | null;
|
|
61
|
+
}
|
|
62
|
+
export interface GetUserRes {
|
|
63
|
+
data: {
|
|
64
|
+
user?: User;
|
|
65
|
+
};
|
|
66
|
+
error: AuthError | null;
|
|
67
|
+
}
|
|
68
|
+
export interface UpdateUserVerifyOtpParams {
|
|
69
|
+
email?: string;
|
|
70
|
+
phone?: string;
|
|
71
|
+
token: string;
|
|
72
|
+
}
|
|
73
|
+
declare type UpdateUserVerifyCallback = (params: UpdateUserVerifyOtpParams) => Promise<GetUserRes>;
|
|
74
|
+
export interface UpdateUserWithVerificationRes {
|
|
75
|
+
data: {
|
|
76
|
+
verifyOtp?: UpdateUserVerifyCallback;
|
|
77
|
+
messageId?: string;
|
|
78
|
+
};
|
|
79
|
+
error: AuthError | null;
|
|
80
|
+
}
|
|
81
|
+
export interface SignInWithIdTokenReq {
|
|
82
|
+
provider?: string;
|
|
83
|
+
token: string;
|
|
84
|
+
}
|
|
85
|
+
export interface SignInWithOAuthReq {
|
|
86
|
+
provider: string;
|
|
87
|
+
options?: {
|
|
88
|
+
redirectTo?: string;
|
|
89
|
+
skipBrowserRedirect?: boolean;
|
|
90
|
+
state?: string;
|
|
91
|
+
queryParams?: Record<string, string>;
|
|
92
|
+
type?: (typeof OAUTH_TYPE)[keyof typeof OAUTH_TYPE];
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
export interface SignInOAuthRes {
|
|
96
|
+
data: {
|
|
97
|
+
url?: string;
|
|
98
|
+
provider?: string;
|
|
99
|
+
scopes?: string;
|
|
100
|
+
};
|
|
101
|
+
error: AuthError | null;
|
|
102
|
+
}
|
|
103
|
+
export interface GetClaimsRes {
|
|
104
|
+
data: {
|
|
105
|
+
claims?: {
|
|
106
|
+
iss: string;
|
|
107
|
+
sub: string;
|
|
108
|
+
aud: string;
|
|
109
|
+
exp: number;
|
|
110
|
+
iat: number;
|
|
111
|
+
at_hash: string;
|
|
112
|
+
name: string;
|
|
113
|
+
picture?: string;
|
|
114
|
+
email?: string;
|
|
115
|
+
phone_number?: string;
|
|
116
|
+
scope: string;
|
|
117
|
+
project_id: string;
|
|
118
|
+
provider?: string;
|
|
119
|
+
provider_type?: string;
|
|
120
|
+
groups?: string[];
|
|
121
|
+
meta?: {
|
|
122
|
+
wxOpenId?: string;
|
|
123
|
+
wxUnionId?: string;
|
|
124
|
+
};
|
|
125
|
+
user_id: string;
|
|
126
|
+
roles: string[];
|
|
127
|
+
user_type: string;
|
|
128
|
+
client_type: string;
|
|
129
|
+
is_system_admin: boolean;
|
|
130
|
+
};
|
|
131
|
+
header?: {
|
|
132
|
+
alg: string;
|
|
133
|
+
kid: string;
|
|
134
|
+
};
|
|
135
|
+
signature?: string;
|
|
136
|
+
};
|
|
137
|
+
error: AuthError | null;
|
|
138
|
+
}
|
|
139
|
+
export interface UpdateUserReq extends authModels.ModifyUserBasicInfoRequest {
|
|
140
|
+
email?: string;
|
|
141
|
+
phone?: string;
|
|
142
|
+
username?: string;
|
|
143
|
+
description?: string;
|
|
144
|
+
avatar_url?: string;
|
|
145
|
+
nickname?: string;
|
|
146
|
+
gender?: 'MALE' | 'FEMALE';
|
|
147
|
+
}
|
|
148
|
+
export interface GetUserIdentitiesRes {
|
|
149
|
+
data: {
|
|
150
|
+
identities?: Array<{
|
|
151
|
+
id: string;
|
|
152
|
+
name: string;
|
|
153
|
+
picture: string;
|
|
154
|
+
}>;
|
|
155
|
+
};
|
|
156
|
+
error: AuthError | null;
|
|
157
|
+
}
|
|
158
|
+
export interface LinkIdentityReq {
|
|
159
|
+
provider: string;
|
|
160
|
+
}
|
|
161
|
+
export interface UnlinkIdentityReq {
|
|
162
|
+
provider: string;
|
|
163
|
+
}
|
|
164
|
+
export interface LinkIdentityRes {
|
|
165
|
+
data: {
|
|
166
|
+
provider?: string;
|
|
167
|
+
type?: (typeof OAUTH_TYPE)[keyof typeof OAUTH_TYPE];
|
|
168
|
+
};
|
|
169
|
+
error: AuthError | null;
|
|
170
|
+
}
|
|
171
|
+
export declare type OnAuthStateChangeEvent = 'SIGNED_OUT' | 'SIGNED_IN' | 'INITIAL_SESSION' | 'PASSWORD_RECOVERY' | 'TOKEN_REFRESHED' | 'USER_UPDATED' | 'BIND_IDENTITY';
|
|
172
|
+
export declare type OnAuthStateChangeCallback = (event: OnAuthStateChangeEvent, session: Session, info?: Record<string, any>) => void;
|
|
173
|
+
type MobileOtpType = 'sms' | 'phone_change';
|
|
174
|
+
type EmailOtpType = 'signup' | 'invite' | 'magiclink' | 'recovery' | 'email_change' | 'email';
|
|
175
|
+
export interface VerifyOtpReq {
|
|
176
|
+
type?: MobileOtpType | EmailOtpType;
|
|
177
|
+
email?: string;
|
|
178
|
+
phone?: string;
|
|
179
|
+
token: string;
|
|
180
|
+
messageId?: string;
|
|
181
|
+
}
|
|
182
|
+
export interface SignInWithOtpReq {
|
|
183
|
+
email?: string;
|
|
184
|
+
phone?: string;
|
|
185
|
+
}
|
|
186
|
+
declare type OtpCallback = (params: VerifyOtpReq) => Promise<SignInRes>;
|
|
187
|
+
export interface SignInWithOtpRes {
|
|
188
|
+
data: SignInRes['data'] & {
|
|
189
|
+
verifyOtp?: OtpCallback;
|
|
190
|
+
};
|
|
191
|
+
error: AuthError | null;
|
|
192
|
+
}
|
|
193
|
+
export interface SignUpRes {
|
|
194
|
+
data: {
|
|
195
|
+
verifyOtp?: OtpCallback;
|
|
196
|
+
};
|
|
197
|
+
error: AuthError | null;
|
|
198
|
+
}
|
|
199
|
+
export interface ResendReq {
|
|
200
|
+
email?: string;
|
|
201
|
+
phone?: string;
|
|
202
|
+
type?: 'signup' | 'email_change' | 'phone_change' | 'sms';
|
|
203
|
+
}
|
|
204
|
+
export interface ResendRes {
|
|
205
|
+
data: {
|
|
206
|
+
messageId?: string;
|
|
207
|
+
};
|
|
208
|
+
error: AuthError | null;
|
|
209
|
+
}
|
|
210
|
+
export interface VerifyOAuthReq {
|
|
211
|
+
code?: string;
|
|
212
|
+
state?: string;
|
|
213
|
+
provider?: string;
|
|
214
|
+
}
|
|
215
|
+
export interface UpdateUserAttributes {
|
|
216
|
+
nonce: string;
|
|
217
|
+
password: string;
|
|
218
|
+
}
|
|
219
|
+
export interface ResetPasswordForEmailRes {
|
|
220
|
+
data: {
|
|
221
|
+
updateUser?: (attributes: UpdateUserAttributes) => Promise<SignInRes>;
|
|
222
|
+
};
|
|
223
|
+
error: AuthError | null;
|
|
224
|
+
}
|
|
225
|
+
export interface ReauthenticateRes {
|
|
226
|
+
data: {
|
|
227
|
+
updateUser?: (attributes: UpdateUserAttributes) => Promise<SignInRes>;
|
|
228
|
+
};
|
|
229
|
+
error: AuthError | null;
|
|
230
|
+
}
|
|
231
|
+
export interface SetSessionReq {
|
|
232
|
+
access_token: string;
|
|
233
|
+
refresh_token: string;
|
|
234
|
+
}
|
|
235
|
+
export interface DeleteMeReq {
|
|
236
|
+
password: string;
|
|
237
|
+
}
|
|
238
|
+
export interface ResetPasswordForOldReq {
|
|
239
|
+
old_password: string;
|
|
240
|
+
new_password: string;
|
|
241
|
+
}
|
|
242
|
+
export {};
|
package/dist/esm/type.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IGF1dGhNb2RlbHMsIE9BVVRIX1RZUEUgfSBmcm9tICdAY2xvdWRiYXNlL29hdXRoJ1xuaW1wb3J0IHsgQXV0aEVycm9yIH0gZnJvbSAnQGNsb3VkYmFzZS9vYXV0aCdcblxuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25JbkFub255bW91c2x5UmVxIHtcbiAgcHJvdmlkZXJfdG9rZW4/OiBzdHJpbmcgLy8g5o+Q5L6b5Luk54mMXG59XG5cbmV4cG9ydCBkZWNsYXJlIHR5cGUgVXNlciA9IHtcbiAgaWQ6IGFueSAvLyDnlKjmiLdJRFxuICBhdWQ6IHN0cmluZyAvLyDlj5fkvJdcbiAgcm9sZTogc3RyaW5nW10gLy8g55So5oi36KeS6ImyXG4gIGVtYWlsOiBhbnkgLy8g6YKu566xXG4gIGVtYWlsX2NvbmZpcm1lZF9hdDogc3RyaW5nIC8vIOmCrueuseehruiupOaXtumXtFxuICBwaG9uZTogYW55IC8vIOaJi+acuuWPt1xuICBwaG9uZV9jb25maXJtZWRfYXQ6IHN0cmluZyAvLyDmiYvmnLrlj7fnoa7orqTml7bpl7RcbiAgY29uZmlybWVkX2F0OiBzdHJpbmcgLy8g56Gu6K6k5pe26Ze0XG4gIGxhc3Rfc2lnbl9pbl9hdDogc3RyaW5nIC8vIOacgOWQjueZu+W9leaXtumXtFxuICBhcHBfbWV0YWRhdGE6IHtcbiAgICAvLyDlupTnlKjlhYPmlbDmja5cbiAgICBwcm92aWRlcjogYW55IC8vIOaPkOS+m+WVhlxuICAgIHByb3ZpZGVyczogYW55W10gLy8g5o+Q5L6b5ZWG5YiX6KGoXG4gIH1cbiAgdXNlcl9tZXRhZGF0YToge1xuICAgIC8vIOeUqOaIt+WFg+aVsOaNrlxuICAgIG5hbWU6IGFueSAvLyDlp5PlkI1cbiAgICBwaWN0dXJlOiBhbnkgLy8g5aS05YOPXG4gICAgdXNlcm5hbWU6IGFueSAvLyDnlKjmiLflkI1cbiAgICBnZW5kZXI6IGFueSAvLyDmgKfliKtcbiAgICBsb2NhbGU6IGFueSAvLyDlnLDljLpcbiAgICB1aWQ6IGFueSAvLyDnlKjmiLdJRFxuICAgIG5pY2tOYW1lOiBhbnkgLy8g5pi156ewXG4gICAgYXZhdGFyVXJsOiBhbnkgLy8g5aS05YOPVVJMXG4gICAgbG9jYXRpb246IGFueSAvLyDkvY3nva5cbiAgICBoYXNQYXNzd29yZDogYW55IC8vIOaYr+WQpuacieWvhueggVxuICB9XG4gIGlkZW50aXRpZXM6IGFueSAvLyDouqvku73kv6Hmga9cbiAgY3JlYXRlZF9hdDogc3RyaW5nIC8vIOWIm+W7uuaXtumXtFxuICB1cGRhdGVkX2F0OiBzdHJpbmcgLy8g5pu05paw5pe26Ze0XG4gIGlzX2Fub255bW91czogYm9vbGVhbiAvLyDmmK/lkKbljL/lkI3nlKjmiLdcbn1cblxuZXhwb3J0IGRlY2xhcmUgdHlwZSBTZXNzaW9uID0ge1xuICBhY2Nlc3NfdG9rZW4/OiBzdHJpbmcgLy8g6K6/6Zeu5Luk54mMXG4gIHJlZnJlc2hfdG9rZW4/OiBzdHJpbmcgLy8g5Yi35paw5Luk54mMXG4gIGV4cGlyZXNfaW4/OiBudW1iZXIgLy8g6L+H5pyf5pe26Ze077yI56eS77yJXG4gIHRva2VuX3R5cGU/OiBzdHJpbmcgLy8g5Luk54mM57G75Z6LXG4gIHVzZXI6IFVzZXIgLy8g55So5oi35L+h5oGvXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbkluV2l0aFBhc3N3b3JkUmVxIHtcbiAgdXNlcm5hbWU/OiBzdHJpbmcgLy8g55So5oi35ZCN56ew77yI5Y+v6YCJ77yM5LiO6YKu566x44CB5omL5py65Y+35LiJ6YCJ5LiA77yJ77yM6ZW/5bqmIDUtMjQg5L2N77yM5pSv5oyB5a2X56ym5Lit6Iux5paH44CB5pWw5a2X44CB54m55q6K5a2X56ym77yI5LuF5pSv5oyBXy3vvInvvIzkuI3mlK/mjIHkuK3mlodcbiAgZW1haWw/OiBzdHJpbmcgLy8g6YKu566x77yI5Y+v6YCJ77yM5LiO55So5oi35ZCN44CB5omL5py65Y+35LiJ6YCJ5LiA77yJXG4gIHBob25lPzogc3RyaW5nIC8vIOaJi+acuuWPt++8iOWPr+mAie+8jOS4jueUqOaIt+WQjeOAgemCrueuseS4iemAieS4gO+8iVxuICBwYXNzd29yZDogc3RyaW5nIC8vIOWvhuegge+8iOW/heWhq++8iVxuICBpc19lbmNyeXB0PzogYm9vbGVhbiAvLyDmmK/lkKbliqDlr4bvvIzpu5jorqTkuLpmYWxzZVxufVxuXG4vLyDpgJrnlKjlk43lupTnsbvlnotcbmV4cG9ydCBpbnRlcmZhY2UgQ29tbW9uUmVzIHtcbiAgZGF0YToge30gLy8g5oiQ5Yqf5pe25Li656m65a+56LGhXG4gIGVycm9yOiBBdXRoRXJyb3IgfCBudWxsIC8vIOmUmeivr+S/oeaBr++8jOaIkOWKn+aXtuS4um51bGxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaWduSW5SZXMge1xuICBkYXRhOiB7XG4gICAgdXNlcj86IFVzZXIgLy8g55So5oi35L+h5oGvXG4gICAgc2Vzc2lvbj86IFNlc3Npb24gLy8g5Lya6K+d5L+h5oGvXG4gIH1cbiAgZXJyb3I6IEF1dGhFcnJvciB8IG51bGwgLy8g6ZSZ6K+v5L+h5oGv77yM5oiQ5Yqf5pe25Li6bnVsbFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldFVzZXJSZXMge1xuICBkYXRhOiB7XG4gICAgdXNlcj86IFVzZXIgLy8g55So5oi36K+m57uG5L+h5oGvXG4gIH1cbiAgZXJyb3I6IEF1dGhFcnJvciB8IG51bGwgLy8g6ZSZ6K+v5L+h5oGv77yM5oiQ5Yqf5pe25Li6bnVsbFxufVxuXG4vLyDmm7TmlrDnlKjmiLfpqozor4Hlm57osIPlj4LmlbBcbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlVXNlclZlcmlmeU90cFBhcmFtcyB7XG4gIGVtYWlsPzogc3RyaW5nIC8vIOmCrueuse+8iOWPr+mAie+8jOS4juaJi+acuuWPt+S6jOmAieS4gO+8iVxuICBwaG9uZT86IHN0cmluZyAvLyDmiYvmnLrlj7fvvIjlj6/pgInvvIzkuI7pgq7nrrHkuozpgInkuIDvvIlcbiAgdG9rZW46IHN0cmluZyAvLyDpqozor4HnoIHvvIjlv4XloavvvIlcbn1cblxuLy8g5pu05paw55So5oi36aqM6K+B5Zue6LCD57G75Z6LXG5kZWNsYXJlIHR5cGUgVXBkYXRlVXNlclZlcmlmeUNhbGxiYWNrID0gKHBhcmFtczogVXBkYXRlVXNlclZlcmlmeU90cFBhcmFtcykgPT4gUHJvbWlzZTxHZXRVc2VyUmVzPlxuXG4vLyDmm7TmlrDnlKjmiLflk43lupTnsbvlnovvvIjlvZPpnIDopoHpqozor4Hml7bvvIlcbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlVXNlcldpdGhWZXJpZmljYXRpb25SZXMge1xuICBkYXRhOiB7XG4gICAgdmVyaWZ5T3RwPzogVXBkYXRlVXNlclZlcmlmeUNhbGxiYWNrIC8vIOmqjOivgeeggeWbnuiwg+WHveaVsFxuICAgIG1lc3NhZ2VJZD86IHN0cmluZyAvLyDpqozor4HnoIFJRFxuICB9XG4gIGVycm9yOiBBdXRoRXJyb3IgfCBudWxsIC8vIOmUmeivr+S/oeaBr++8jOaIkOWKn+aXtuS4um51bGxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaWduSW5XaXRoSWRUb2tlblJlcSB7XG4gIHByb3ZpZGVyPzogc3RyaW5nIC8vIOesrOS4ieaWueW5s+WPsOagh+ivhu+8iOWPr+mAie+8iVxuICB0b2tlbjogc3RyaW5nIC8vIOesrOS4ieaWueW5s+WPsOeahOi6q+S7veS7pOeJjO+8iOW/heWhq++8iVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25JbldpdGhPQXV0aFJlcSB7XG4gIHByb3ZpZGVyOiBzdHJpbmcgLy8g56ys5LiJ5pa55bmz5Y+w5qCH6K+G77yI5b+F5aGr77yJXG4gIG9wdGlvbnM/OiB7XG4gICAgLy8g6YWN572u6YCJ6aG577yI5Y+v6YCJ77yJXG4gICAgcmVkaXJlY3RUbz86IHN0cmluZyAvLyDlm57osIPlnLDlnYDvvIzpu5jorqTkuLrlvZPliY3pobXpnaJcbiAgICBza2lwQnJvd3NlclJlZGlyZWN0PzogYm9vbGVhbiAvLyDmmK/lkKbot7Povazoh7PmjojmnYPpobXpnaLvvIzpu5jorqTkuLpmYWxzZVxuICAgIHN0YXRlPzogc3RyaW5nIC8vIOeKtuaAgeWPguaVsO+8jOeUqOS6juWuieWFqOmqjOivge+8jOm7mOiupOS4uumaj+acuuWtl+espuS4su+8iOagvOW8j++8mnByZC17cHJvdmlkZXJ9LXvpmo/mnLrlrZfnrKbkuLJ977yJXG4gICAgcXVlcnlQYXJhbXM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IC8vIOmineWklueahOafpeivouWPguaVsO+8jOWwhuWQiOW5tuWIsOaOiOadgyBVUkkg5LitXG4gICAgdHlwZT86ICh0eXBlb2YgT0FVVEhfVFlQRSlba2V5b2YgdHlwZW9mIE9BVVRIX1RZUEVdIC8vIOexu+Wei++8iOWPr+mAie+8ie+8jOm7mOiupOS4uidzaWduX2luJywgc2lnbl9pbjog55m75b2V77yMYmluZF9pZGVudGl0eTog57uR5a6a6Lqr5Lu9XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaWduSW5PQXV0aFJlcyB7XG4gIGRhdGE6IHtcbiAgICB1cmw/OiBzdHJpbmcgLy8g5o6I5p2D6aG16Z2iVVJMXG4gICAgcHJvdmlkZXI/OiBzdHJpbmcgLy8g56ys5LiJ5pa55bmz5Y+w5qCH6K+GXG4gICAgc2NvcGVzPzogc3RyaW5nIC8vIOaOiOadg+iMg+WbtFxuICB9XG4gIGVycm9yOiBBdXRoRXJyb3IgfCBudWxsIC8vIOmUmeivr+S/oeaBr++8jOaIkOWKn+aXtuS4um51bGxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRDbGFpbXNSZXMge1xuICBkYXRhOiB7XG4gICAgLy8g5Luk54mM5aOw5piO5L+h5oGvXG4gICAgY2xhaW1zPzoge1xuICAgICAgaXNzOiBzdHJpbmcgLy8gaXNzdWVyXG4gICAgICBzdWI6IHN0cmluZyAvLyBzdWJqZWN0XG4gICAgICBhdWQ6IHN0cmluZyAvLyAgYXVkaWVuY2VcbiAgICAgIGV4cDogbnVtYmVyIC8vICBleHBpcmF0aW9uIHRpbWVcbiAgICAgIGlhdDogbnVtYmVyIC8vIGlzc3VlZCBhdFxuICAgICAgYXRfaGFzaDogc3RyaW5nIC8vIGFjY2VzcyB0b2tlbiBoYXNoXG4gICAgICBuYW1lOiBzdHJpbmcgLy8g5ZCN56ewXG4gICAgICBwaWN0dXJlPzogc3RyaW5nIC8vIOWktOWDj1VSTFxuICAgICAgZW1haWw/OiBzdHJpbmcgLy8g6YKu566xXG4gICAgICBwaG9uZV9udW1iZXI/OiBzdHJpbmcgLy8g5omL5py65Y+3XG4gICAgICBzY29wZTogc3RyaW5nIC8vIOaOiOadg+iMg+WbtFxuICAgICAgcHJvamVjdF9pZDogc3RyaW5nIC8vIOmhueebrklEXG4gICAgICBwcm92aWRlcj86IHN0cmluZyAvLyDnrKzkuInmlrnlubPlj7DmoIfor4ZcbiAgICAgIHByb3ZpZGVyX3R5cGU/OiBzdHJpbmcgLy8g56ys5LiJ5pa55bmz5Y+w57G75Z6LXG4gICAgICBncm91cHM/OiBzdHJpbmdbXSAvLyDnlKjmiLfnu4RcbiAgICAgIG1ldGE/OiB7XG4gICAgICAgIHd4T3BlbklkPzogc3RyaW5nXG4gICAgICAgIHd4VW5pb25JZD86IHN0cmluZ1xuICAgICAgfVxuICAgICAgdXNlcl9pZDogc3RyaW5nIC8vIOeUqOaIt0lEXG4gICAgICByb2xlczogc3RyaW5nW10gLy8g6KeS6ImyXG4gICAgICB1c2VyX3R5cGU6IHN0cmluZyAvLyDnlKjmiLfnsbvlnotcbiAgICAgIGNsaWVudF90eXBlOiBzdHJpbmcgLy8g5a6i5oi356uv57G75Z6LXG4gICAgICBpc19zeXN0ZW1fYWRtaW46IGJvb2xlYW4gLy8g5piv5ZCm57O757uf566h55CG5ZGYXG4gICAgfVxuICAgIC8vIOS7pOeJjOWktOmDqOS/oeaBr1xuICAgIGhlYWRlcj86IHtcbiAgICAgIGFsZzogc3RyaW5nIC8vIOWKoOWvhueul+azlVxuICAgICAga2lkOiBzdHJpbmcgLy8g5Luk54mMSURcbiAgICB9XG4gICAgc2lnbmF0dXJlPzogc3RyaW5nIC8vIOS7pOeJjOetvuWQjVxuICB9XG4gIGVycm9yOiBBdXRoRXJyb3IgfCBudWxsIC8vIOmUmeivr+S/oeaBr++8jOaIkOWKn+aXtuS4um51bGxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVVc2VyUmVxIGV4dGVuZHMgYXV0aE1vZGVscy5Nb2RpZnlVc2VyQmFzaWNJbmZvUmVxdWVzdCB7XG4gIGVtYWlsPzogc3RyaW5nIC8vIOmCrueuse+8iOWPr+mAie+8iVxuICBwaG9uZT86IHN0cmluZyAvLyDmiYvmnLrlj7fvvIjlj6/pgInvvIlcbiAgdXNlcm5hbWU/OiBzdHJpbmcgLy8g55So5oi35ZCN56ew77yI5Y+v6YCJ77yJ77yM6ZW/5bqmIDUtMjQg5L2N77yM5pSv5oyB5a2X56ym5Lit6Iux5paH44CB5pWw5a2X44CB54m55q6K5a2X56ym77yI5LuF5pSv5oyBXy3vvInvvIzkuI3mlK/mjIHkuK3mlodcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmcgLy8g5o+P6L+w77yI5Y+v6YCJ77yJXG4gIGF2YXRhcl91cmw/OiBzdHJpbmcgLy8g5aS05YOPVVJM77yI5Y+v6YCJ77yJXG4gIG5pY2tuYW1lPzogc3RyaW5nIC8vIOaYteensO+8iOWPr+mAie+8iVxuICBnZW5kZXI/OiAnTUFMRScgfCAnRkVNQUxFJyAvLyDmgKfliKvvvIjlj6/pgInvvIlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRVc2VySWRlbnRpdGllc1JlcyB7XG4gIGRhdGE6IHtcbiAgICBpZGVudGl0aWVzPzpcbiAgICB8IEFycmF5PHtcbiAgICAgIGlkOiBzdHJpbmcgLy8g6Lqr5Lu95rqQ5qCH6K+GXG4gICAgICBuYW1lOiBzdHJpbmcgLy8g6Lqr5Lu95rqQ5ZCN56ewXG4gICAgICBwaWN0dXJlOiBzdHJpbmcgLy8g5aS05YOPVVJMXG4gICAgfT5cbiAgfVxuICBlcnJvcjogQXV0aEVycm9yIHwgbnVsbCAvLyDplJnor6/kv6Hmga/vvIzmiJDlip/ml7bkuLpudWxsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlua0lkZW50aXR5UmVxIHtcbiAgcHJvdmlkZXI6IHN0cmluZyAvLyDouqvku73mupDmoIfor4bvvIjlv4XloavvvIlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVbmxpbmtJZGVudGl0eVJlcSB7XG4gIHByb3ZpZGVyOiBzdHJpbmcgLy8g6Lqr5Lu95rqQ5qCH6K+G77yI5b+F5aGr77yJXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTGlua0lkZW50aXR5UmVzIHtcbiAgZGF0YToge1xuICAgIHByb3ZpZGVyPzogc3RyaW5nIC8vIOe7keWumueahOi6q+S7vea6kOagh+ivhlxuICAgIHR5cGU/OiAodHlwZW9mIE9BVVRIX1RZUEUpW2tleW9mIHR5cGVvZiBPQVVUSF9UWVBFXSAvLyDnsbvlnovvvIjlj6/pgInvvInvvIzpu5jorqTkuLonc2lnbl9pbicsIHNpZ25faW46IOeZu+W9le+8jGJpbmRfaWRlbnRpdHk6IOe7keWumui6q+S7vVxuICB9XG4gIGVycm9yOiBBdXRoRXJyb3IgfCBudWxsIC8vIOmUmeivr+S/oeaBr++8jOaIkOWKn+aXtuS4um51bGxcbn1cblxuZXhwb3J0IGRlY2xhcmUgdHlwZSBPbkF1dGhTdGF0ZUNoYW5nZUV2ZW50ID1cbiAgfCAnU0lHTkVEX09VVCcgLy8g55So5oi35bey55m75Ye6XG4gIHwgJ1NJR05FRF9JTicgLy8g55So5oi355m75b2V5oiQ5YqfXG4gIHwgJ0lOSVRJQUxfU0VTU0lPTicgLy8g5Yid5aeL5Lya6K+d5bey5bu656uLXG4gIHwgJ1BBU1NXT1JEX1JFQ09WRVJZJyAvLyDlr4bnoIHlt7Lph43nva5cbiAgfCAnVE9LRU5fUkVGUkVTSEVEJyAvLyDku6TniYzlt7LliLfmlrBcbiAgfCAnVVNFUl9VUERBVEVEJyAvLyDnlKjmiLfkv6Hmga/lt7Lmm7TmlrBcbiAgfCAnQklORF9JREVOVElUWScgLy8g6Lqr5Lu95rqQ57uR5a6a57uT5p6cXG5cbmV4cG9ydCBkZWNsYXJlIHR5cGUgT25BdXRoU3RhdGVDaGFuZ2VDYWxsYmFjayA9IChcbiAgZXZlbnQ6IE9uQXV0aFN0YXRlQ2hhbmdlRXZlbnQsXG4gIHNlc3Npb246IFNlc3Npb24sXG4gIGluZm8/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuKSA9PiB2b2lkXG5cbnR5cGUgTW9iaWxlT3RwVHlwZSA9ICdzbXMnIHwgJ3Bob25lX2NoYW5nZSdcbnR5cGUgRW1haWxPdHBUeXBlID0gJ3NpZ251cCcgfCAnaW52aXRlJyB8ICdtYWdpY2xpbmsnIHwgJ3JlY292ZXJ5JyB8ICdlbWFpbF9jaGFuZ2UnIHwgJ2VtYWlsJ1xuZXhwb3J0IGludGVyZmFjZSBWZXJpZnlPdHBSZXEge1xuICB0eXBlPzogTW9iaWxlT3RwVHlwZSB8IEVtYWlsT3RwVHlwZVxuICBlbWFpbD86IHN0cmluZyAvLyDpgq7nrrHvvIjlj6/pgInvvIzkuI7miYvmnLrlj7fkuozpgInkuIDvvIlcbiAgcGhvbmU/OiBzdHJpbmcgLy8g5omL5py65Y+377yI5Y+v6YCJ77yM5LiO6YKu566x5LqM6YCJ5LiA77yJXG4gIHRva2VuOiBzdHJpbmcgLy8g6aqM6K+B56CB77yI5b+F5aGr77yJXG4gIG1lc3NhZ2VJZD86IHN0cmluZyAvLyDpqozor4HnoIHlr7nlupRJRO+8iOWPr+mAie+8iVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25JbldpdGhPdHBSZXEge1xuICBlbWFpbD86IHN0cmluZyAvLyDpgq7nrrHvvIjlj6/pgInvvIzkuI7miYvmnLrlj7fkuozpgInkuIDvvIlcbiAgcGhvbmU/OiBzdHJpbmcgLy8g5omL5py65Y+377yI5Y+v6YCJ77yM5LiO6YKu566x5LqM6YCJ5LiA77yJXG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBjb2RlIOmqjOivgeeggVxuICogQHBhcmFtIG1lc3NhZ2VJZCDlj6/pgInvvIxSZXNlbmRSZXMuZGF0YS5tZXNzYWdlSWRcbiAqIEByZXR1cm5zXG4gKi9cbmRlY2xhcmUgdHlwZSBPdHBDYWxsYmFjayA9IChwYXJhbXM6IFZlcmlmeU90cFJlcSkgPT4gUHJvbWlzZTxTaWduSW5SZXM+XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbkluV2l0aE90cFJlcyB7XG4gIGRhdGE6IFNpZ25JblJlc1snZGF0YSddICYge1xuICAgIHZlcmlmeU90cD86IE90cENhbGxiYWNrIC8vIOmqjOivgeeggeWbnuiwg+WHveaVsO+8jOaUr+aMgW1lc3NhZ2VJZOWPguaVsFxuICB9XG4gIGVycm9yOiBBdXRoRXJyb3IgfCBudWxsIC8vIOmUmeivr+S/oeaBr++8jOaIkOWKn+aXtuS4um51bGxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaWduVXBSZXMge1xuICBkYXRhOiB7XG4gICAgdmVyaWZ5T3RwPzogT3RwQ2FsbGJhY2sgLy8g6aqM6K+B56CB5Zue6LCD5Ye95pWw77yM5pSv5oyBbWVzc2FnZUlk5Y+C5pWwXG4gIH1cbiAgZXJyb3I6IEF1dGhFcnJvciB8IG51bGxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNlbmRSZXEge1xuICBlbWFpbD86IHN0cmluZyAvLyDpgq7nrrHvvIjlj6/pgInvvIzkuI7miYvmnLrlj7fkuozpgInkuIDvvIlcbiAgcGhvbmU/OiBzdHJpbmcgLy8g5omL5py65Y+377yI5Y+v6YCJ77yM5LiO6YKu566x5LqM6YCJ5LiA77yJXG4gIHR5cGU/OiAnc2lnbnVwJyB8ICdlbWFpbF9jaGFuZ2UnIHwgJ3Bob25lX2NoYW5nZScgfCAnc21zJyAvLyDnsbvlnovvvIjlj6/pgInvvIlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNlbmRSZXMge1xuICBkYXRhOiB7XG4gICAgbWVzc2FnZUlkPzogc3RyaW5nIC8vIOa2iOaBr0lE77yI6aqM6K+B56CBSUTvvIlcbiAgfVxuICBlcnJvcjogQXV0aEVycm9yIHwgbnVsbCAvLyDplJnor6/kv6Hmga/vvIzmiJDlip/ml7bkuLpudWxsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmVyaWZ5T0F1dGhSZXEge1xuICBjb2RlPzogc3RyaW5nIC8vIOaOiOadg+egge+8iOWPr+mAie+8jOm7mOiupOS7jlVSTOWPguaVsOiOt+WPlu+8iVxuICBzdGF0ZT86IHN0cmluZyAvLyDnirbmgIHlj4LmlbDvvIjlj6/pgInvvIzpu5jorqTku45VUkzlj4LmlbDojrflj5bvvIlcbiAgcHJvdmlkZXI/OiBzdHJpbmcgLy8g56ys5LiJ5pa55bmz5Y+w5qCH6K+G77yI5Y+v6YCJ77yM6buY6K6k5LuOc2Vzc2lvbuiOt+WPlu+8iVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZVVzZXJBdHRyaWJ1dGVzIHtcbiAgbm9uY2U6IHN0cmluZyAvLyDpqozor4HnoIFcbiAgcGFzc3dvcmQ6IHN0cmluZyAvLyDmlrDlr4bnoIFcbn1cblxuLy8g6YeN572u5a+G56CB5ZON5bqU57G75Z6LXG5leHBvcnQgaW50ZXJmYWNlIFJlc2V0UGFzc3dvcmRGb3JFbWFpbFJlcyB7XG4gIGRhdGE6IHtcbiAgICB1cGRhdGVVc2VyPzogKGF0dHJpYnV0ZXM6IFVwZGF0ZVVzZXJBdHRyaWJ1dGVzKSA9PiBQcm9taXNlPFNpZ25JblJlcz4gLy8g6aqM6K+B56CB5Zue6LCD5Ye95pWw77yM5pSv5oyB5paw5a+G56CB5Y+C5pWwXG4gIH1cbiAgZXJyb3I6IEF1dGhFcnJvciB8IG51bGwgLy8g6ZSZ6K+v5L+h5oGv77yM5oiQ5Yqf5pe25Li6bnVsbFxufVxuXG4vLyDph43mlrDorqTor4Hlk43lupTnsbvlnotcbmV4cG9ydCBpbnRlcmZhY2UgUmVhdXRoZW50aWNhdGVSZXMge1xuICBkYXRhOiB7XG4gICAgdXBkYXRlVXNlcj86IChhdHRyaWJ1dGVzOiBVcGRhdGVVc2VyQXR0cmlidXRlcykgPT4gUHJvbWlzZTxTaWduSW5SZXM+IC8vIOmqjOivgeeggeWbnuiwg+WHveaVsO+8jOaUr+aMgeaWsOWvhueggeWPguaVsFxuICB9XG4gIGVycm9yOiBBdXRoRXJyb3IgfCBudWxsIC8vIOmUmeivr+S/oeaBr++8jOaIkOWKn+aXtuS4um51bGxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTZXRTZXNzaW9uUmVxIHtcbiAgYWNjZXNzX3Rva2VuOiBzdHJpbmcgLy8g6K6/6Zeu5Luk54mMXG4gIHJlZnJlc2hfdG9rZW46IHN0cmluZyAvLyDliLfmlrDku6TniYxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEZWxldGVNZVJlcSB7XG4gIHBhc3N3b3JkOiBzdHJpbmcgLy8g55So5oi35a+G56CBXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzZXRQYXNzd29yZEZvck9sZFJlcSB7XG4gIG9sZF9wYXNzd29yZDogc3RyaW5nIC8vIOaXp+WvhueggVxuICBuZXdfcGFzc3dvcmQ6IHN0cmluZyAvLyDmlrDlr4bnoIFcbn1cbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function saveToBrowserSession(key: string, value: Record<string, any>): void;
|
|
2
|
+
export declare function getBrowserSession(key: string): any;
|
|
3
|
+
export declare function removeBrowserSession(key: string): boolean;
|
|
4
|
+
export declare function addUrlSearch(search: Location['search'], hash?: Location['hash']): void;
|
|
5
|
+
export declare function removeUrlParams(params: string[]): void;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export function saveToBrowserSession(key, value) {
|
|
2
|
+
try {
|
|
3
|
+
sessionStorage.setItem(key, JSON.stringify(value));
|
|
4
|
+
}
|
|
5
|
+
catch (error) {
|
|
6
|
+
console.error('Failed to save to browser session:', error);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
export function getBrowserSession(key) {
|
|
10
|
+
try {
|
|
11
|
+
var data = JSON.parse(sessionStorage.getItem(key));
|
|
12
|
+
return data;
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
console.error('Failed to get browser session:', error);
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export function removeBrowserSession(key) {
|
|
20
|
+
try {
|
|
21
|
+
sessionStorage.removeItem(key);
|
|
22
|
+
return true;
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
console.error('Failed to remove browser session:', error);
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export function addUrlSearch(search, hash) {
|
|
30
|
+
if (search === undefined)
|
|
31
|
+
return;
|
|
32
|
+
var url = new URL(window.location.href);
|
|
33
|
+
url.search = search;
|
|
34
|
+
url.hash = hash || url.hash;
|
|
35
|
+
window.history.replaceState({}, '', url.href);
|
|
36
|
+
}
|
|
37
|
+
export function removeUrlParams(params) {
|
|
38
|
+
if (typeof window === 'undefined')
|
|
39
|
+
return;
|
|
40
|
+
try {
|
|
41
|
+
var url_1 = new URL(window.location.href);
|
|
42
|
+
params.forEach(function (param) {
|
|
43
|
+
url_1.searchParams.delete(param);
|
|
44
|
+
});
|
|
45
|
+
window.history.replaceState({}, '', url_1.href);
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
console.error('Failed to remove URL params:', error);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsTUFBTSxVQUFVLG9CQUFvQixDQUFDLEdBQVcsRUFBRSxLQUEwQjtJQUMxRSxJQUFJO1FBQ0YsY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO0tBQ25EO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxFQUFFLEtBQUssQ0FBQyxDQUFBO0tBQzNEO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxHQUFXO0lBQzNDLElBQUk7UUFDRixJQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQTtRQUNwRCxPQUFPLElBQUksQ0FBQTtLQUNaO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ3RELE9BQU8sSUFBSSxDQUFBO0tBQ1o7QUFDSCxDQUFDO0FBRUQsTUFBTSxVQUFVLG9CQUFvQixDQUFDLEdBQVc7SUFDOUMsSUFBSTtRQUNGLGNBQWMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDOUIsT0FBTyxJQUFJLENBQUE7S0FDWjtJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ2QsT0FBTyxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUN6RCxPQUFPLElBQUksQ0FBQTtLQUNaO0FBQ0gsQ0FBQztBQUVELE1BQU0sVUFBVSxZQUFZLENBQUMsTUFBMEIsRUFBRSxJQUF1QjtJQUM5RSxJQUFJLE1BQU0sS0FBSyxTQUFTO1FBQUUsT0FBTTtJQUdoQyxJQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBR3pDLEdBQUcsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO0lBRW5CLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUE7SUFHM0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUE7QUFDL0MsQ0FBQztBQU1ELE1BQU0sVUFBVSxlQUFlLENBQUMsTUFBZ0I7SUFDOUMsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXO1FBQUUsT0FBTTtJQUV6QyxJQUFJO1FBQ0YsSUFBTSxLQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUd6QyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQUMsS0FBSztZQUNuQixLQUFHLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNoQyxDQUFDLENBQUMsQ0FBQTtRQUdGLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsS0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0tBQzlDO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLDhCQUE4QixFQUFFLEtBQUssQ0FBQyxDQUFBO0tBQ3JEO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICog5a2Y5YKo5Y+C5pWw5Yiw5rWP6KeI5Zmoc2Vzc2lvblN0b3JhZ2VcbiAqIEBwYXJhbSBrZXlcbiAqIEBwYXJhbSB2YWx1ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gc2F2ZVRvQnJvd3NlclNlc3Npb24oa2V5OiBzdHJpbmcsIHZhbHVlOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gIHRyeSB7XG4gICAgc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShrZXksIEpTT04uc3RyaW5naWZ5KHZhbHVlKSlcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gc2F2ZSB0byBicm93c2VyIHNlc3Npb246JywgZXJyb3IpXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEJyb3dzZXJTZXNzaW9uKGtleTogc3RyaW5nKSB7XG4gIHRyeSB7XG4gICAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2Uoc2Vzc2lvblN0b3JhZ2UuZ2V0SXRlbShrZXkpKVxuICAgIHJldHVybiBkYXRhXG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGdldCBicm93c2VyIHNlc3Npb246JywgZXJyb3IpXG4gICAgcmV0dXJuIG51bGxcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlQnJvd3NlclNlc3Npb24oa2V5OiBzdHJpbmcpIHtcbiAgdHJ5IHtcbiAgICBzZXNzaW9uU3RvcmFnZS5yZW1vdmVJdGVtKGtleSlcbiAgICByZXR1cm4gdHJ1ZVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byByZW1vdmUgYnJvd3NlciBzZXNzaW9uOicsIGVycm9yKVxuICAgIHJldHVybiBudWxsXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZFVybFNlYXJjaChzZWFyY2g6IExvY2F0aW9uWydzZWFyY2gnXSwgaGFzaD86IExvY2F0aW9uWydoYXNoJ10pIHtcbiAgaWYgKHNlYXJjaCA9PT0gdW5kZWZpbmVkKSByZXR1cm5cblxuICAvLyAxLiDop6PmnpDlvZPliY0gVVJMXG4gIGNvbnN0IHVybCA9IG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpXG5cbiAgLy8gMi4g5pON5L2c5p+l6K+i5Y+C5pWwXG4gIHVybC5zZWFyY2ggPSBzZWFyY2ggLy8g6KaG55uW5bey5pyJ5Y+C5pWw5oiW5paw5aKe5Y+C5pWwXG5cbiAgdXJsLmhhc2ggPSBoYXNoIHx8IHVybC5oYXNoXG5cbiAgLy8gMy4g5pu05paw5Zyw5Z2A5qCP77yI5L+d55WZ5ZOI5biM5YC877yJXG4gIHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSh7fSwgJycsIHVybC5ocmVmKVxufVxuXG4vKipcbiAqIOS7jiBVUkwg5Lit56e76Zmk5oyH5a6a55qE5p+l6K+i5Y+C5pWwXG4gKiBAcGFyYW0gcGFyYW1zIOimgeenu+mZpOeahOWPguaVsOWQjeaVsOe7hFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVtb3ZlVXJsUGFyYW1zKHBhcmFtczogc3RyaW5nW10pIHtcbiAgaWYgKHR5cGVvZiB3aW5kb3cgPT09ICd1bmRlZmluZWQnKSByZXR1cm5cblxuICB0cnkge1xuICAgIGNvbnN0IHVybCA9IG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpXG5cbiAgICAvLyDnp7vpmaTmjIflrprnmoTlj4LmlbBcbiAgICBwYXJhbXMuZm9yRWFjaCgocGFyYW0pID0+IHtcbiAgICAgIHVybC5zZWFyY2hQYXJhbXMuZGVsZXRlKHBhcmFtKVxuICAgIH0pXG5cbiAgICAvLyDkvb/nlKggcmVwbGFjZVN0YXRlIOabtOaWsCBVUkzvvIzkuI3kvJrlnKjmtY/op4jlmajljoblj7LkuK3nlZnkuIvorrDlvZVcbiAgICB3aW5kb3cuaGlzdG9yeS5yZXBsYWNlU3RhdGUoe30sICcnLCB1cmwuaHJlZilcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gcmVtb3ZlIFVSTCBwYXJhbXM6JywgZXJyb3IpXG4gIH1cbn1cbiJdfQ==
|