@cubist-labs/cubesigner-sdk 0.4.263 → 0.4.266
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/package.json +12 -4
- package/dist/src/acl.js +1 -2
- package/dist/src/audit_log.d.ts +4 -4
- package/dist/src/audit_log.js +116 -119
- package/dist/src/bucket.d.ts +2 -2
- package/dist/src/bucket.d.ts.map +1 -1
- package/dist/src/bucket.js +2 -5
- package/dist/src/client/api_client.d.ts +16 -12
- package/dist/src/client/api_client.d.ts.map +1 -1
- package/dist/src/client/api_client.js +288 -292
- package/dist/src/client/base_client.d.ts +6 -6
- package/dist/src/client/base_client.d.ts.map +1 -1
- package/dist/src/client/base_client.js +27 -38
- package/dist/src/client/session.d.ts +2 -2
- package/dist/src/client/session.d.ts.map +1 -1
- package/dist/src/client/session.js +20 -35
- package/dist/src/client.d.ts +18 -18
- package/dist/src/client.d.ts.map +1 -1
- package/dist/src/client.js +14 -18
- package/dist/src/contact.d.ts +3 -3
- package/dist/src/contact.d.ts.map +1 -1
- package/dist/src/contact.js +4 -8
- package/dist/src/diffie_hellman.d.ts +1 -1
- package/dist/src/diffie_hellman.d.ts.map +1 -1
- package/dist/src/diffie_hellman.js +9 -12
- package/dist/src/env.js +13 -20
- package/dist/src/error.d.ts +2 -2
- package/dist/src/error.d.ts.map +1 -1
- package/dist/src/error.js +3 -8
- package/dist/src/events.js +2 -6
- package/dist/src/evm/index.d.ts +1 -1
- package/dist/src/evm/index.d.ts.map +1 -1
- package/dist/src/evm/index.js +5 -9
- package/dist/src/fetch.d.ts +1 -1
- package/dist/src/fetch.d.ts.map +1 -1
- package/dist/src/fetch.js +10 -15
- package/dist/src/index.d.ts +24 -24
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +25 -48
- package/dist/src/key.d.ts +10 -8
- package/dist/src/key.d.ts.map +1 -1
- package/dist/src/key.js +35 -34
- package/dist/src/mfa.d.ts +2 -2
- package/dist/src/mfa.d.ts.map +1 -1
- package/dist/src/mfa.js +14 -25
- package/dist/src/org.d.ts +197 -197
- package/dist/src/org.d.ts.map +1 -1
- package/dist/src/org.js +28 -32
- package/dist/src/paginator.js +3 -8
- package/dist/src/passkey.d.ts +1 -1
- package/dist/src/passkey.d.ts.map +1 -1
- package/dist/src/passkey.js +16 -23
- package/dist/src/policy.d.ts +1 -1
- package/dist/src/policy.d.ts.map +1 -1
- package/dist/src/policy.js +17 -27
- package/dist/src/response.d.ts +16 -7
- package/dist/src/response.d.ts.map +1 -1
- package/dist/src/response.js +42 -21
- package/dist/src/retry.d.ts.map +1 -1
- package/dist/src/retry.js +5 -11
- package/dist/src/role.d.ts +3 -3
- package/dist/src/role.d.ts.map +1 -1
- package/dist/src/role.js +13 -18
- package/dist/src/schema.d.ts +117 -40
- package/dist/src/schema.d.ts.map +1 -1
- package/dist/src/schema.js +2 -3
- package/dist/src/schema_types.d.ts +6 -3
- package/dist/src/schema_types.d.ts.map +1 -1
- package/dist/src/schema_types.js +11 -7
- package/dist/src/scopes.d.ts +1 -1
- package/dist/src/scopes.d.ts.map +1 -1
- package/dist/src/scopes.js +19 -21
- package/dist/src/signer_session.d.ts +1 -1
- package/dist/src/signer_session.d.ts.map +1 -1
- package/dist/src/signer_session.js +2 -6
- package/dist/src/user_export.d.ts +1 -1
- package/dist/src/user_export.d.ts.map +1 -1
- package/dist/src/user_export.js +10 -18
- package/dist/src/util.js +9 -19
- package/package.json +12 -4
- package/src/audit_log.ts +1 -1
- package/src/bucket.ts +2 -2
- package/src/client/api_client.ts +25 -19
- package/src/client/base_client.ts +10 -10
- package/src/client/session.ts +4 -4
- package/src/client.ts +12 -6
- package/src/contact.ts +3 -3
- package/src/diffie_hellman.ts +3 -3
- package/src/env.ts +3 -3
- package/src/error.ts +2 -2
- package/src/evm/index.ts +1 -1
- package/src/fetch.ts +3 -3
- package/src/index.ts +29 -24
- package/src/key.ts +16 -12
- package/src/mfa.ts +3 -3
- package/src/org.ts +4 -4
- package/src/passkey.ts +1 -1
- package/src/policy.ts +2 -2
- package/src/response.ts +57 -12
- package/src/role.ts +3 -3
- package/src/schema.ts +110 -23
- package/src/schema_types.ts +14 -3
- package/src/scopes.ts +2 -1
- package/src/signer_session.ts +1 -1
- package/src/user_export.ts +2 -2
- package/tsconfig.json +12 -0
package/dist/src/response.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { EnvInterface, MfaReceipts, MfaRequired } from ".";
|
|
2
|
-
import { CubeSignerClient, MultiRegionEnv } from ".";
|
|
3
|
-
import type { AcceptedResponse, AcceptedValue,
|
|
1
|
+
import type { EnvInterface, MfaReceipts, MfaRequired } from "./index.ts";
|
|
2
|
+
import { CubeSignerClient, MultiRegionEnv } from "./index.ts";
|
|
3
|
+
import type { AcceptedResponse, AcceptedValue, SignDryRun, JsonRpcResponse, JsonRpcResult } from "./schema_types.ts";
|
|
4
4
|
/**
|
|
5
5
|
* Response type, which can be either a value of type {@link U}
|
|
6
6
|
* or {@link AcceptedResponse} (status code 202) which requires MFA.
|
|
@@ -41,10 +41,6 @@ export declare class CubeSignerResponse<U> {
|
|
|
41
41
|
* @returns The associated {@link SignDryRun} value, if the response status code is 202 and the response is a dry run of a sign operation.
|
|
42
42
|
*/
|
|
43
43
|
asSignDryRun(): SignDryRun | undefined;
|
|
44
|
-
/**
|
|
45
|
-
* @returns The associated {@link BinanceDryRun} value, if the response status code is 202 and the response is a dry run of a sign operation.
|
|
46
|
-
*/
|
|
47
|
-
asBinanceDryRun(): BinanceDryRun | undefined;
|
|
48
44
|
/**
|
|
49
45
|
* @returns Whether this response is a "200 Success" (in which case it is safe to call {@link data})
|
|
50
46
|
*/
|
|
@@ -123,6 +119,19 @@ export declare class CubeSignerResponse<U> {
|
|
|
123
119
|
* @internal
|
|
124
120
|
*/
|
|
125
121
|
static create<U>(env: EnvInterface | MultiRegionEnv, requestFn: RequestFn<U>, mfaReceipt?: MfaReceipts): Promise<CubeSignerResponse<U>>;
|
|
122
|
+
/**
|
|
123
|
+
* Similar to {@link create} except that unwraps the {@link JsonRpcResponse}
|
|
124
|
+
* to throw an {@link ErrResponse} on error
|
|
125
|
+
*
|
|
126
|
+
* @param env The environment where the response comes from
|
|
127
|
+
* @param reqFn
|
|
128
|
+
* The request function that this response is from.
|
|
129
|
+
* This argument is used to resend requests with different headers if needed.
|
|
130
|
+
* @param mfaReceipt Optional MFA receipt(s)
|
|
131
|
+
* @returns New instance of this class.
|
|
132
|
+
* @internal
|
|
133
|
+
*/
|
|
134
|
+
static createForJsonRpc(env: EnvInterface | MultiRegionEnv, reqFn: RequestFn<JsonRpcResponse>, mfaReceipt?: MfaReceipts): Promise<CubeSignerResponse<JsonRpcResult>>;
|
|
126
135
|
/**
|
|
127
136
|
* Return HTTP headers containing a given MFA receipt.
|
|
128
137
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/response.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/response.ts"],"names":[],"mappings":"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"}
|
package/dist/src/response.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
3
2
|
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
4
3
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
@@ -11,11 +10,8 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
|
|
|
11
10
|
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
12
11
|
};
|
|
13
12
|
var _CubeSignerResponse_instances, _CubeSignerResponse_env, _CubeSignerResponse_requestFn, _CubeSignerResponse_resp, _CubeSignerResponse_mfaTotpVote, _CubeSignerResponse_mfaVote;
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
exports.mapResponse = mapResponse;
|
|
17
|
-
const _1 = require(".");
|
|
18
|
-
const util_1 = require("./util");
|
|
13
|
+
import { ALL_ACCEPTED_CODES, CubeSignerClient, ErrResponse, MultiRegionEnv, isManyMfaReceipts, } from "./index.js";
|
|
14
|
+
import { encodeToBase64Url } from "./util.js";
|
|
19
15
|
/**
|
|
20
16
|
* Take a {@link Response<U>} and a {@link MapFn<U, V>} function and return
|
|
21
17
|
* a {@link Response<V>} that maps the value of the original response when its status code is 200.
|
|
@@ -24,7 +20,7 @@ const util_1 = require("./util");
|
|
|
24
20
|
* @param mapFn Map to apply to the response value when its status code is 200.
|
|
25
21
|
* @returns Response whose value for status code 200 is mapped from U to V
|
|
26
22
|
*/
|
|
27
|
-
function mapResponse(resp, mapFn) {
|
|
23
|
+
export function mapResponse(resp, mapFn) {
|
|
28
24
|
if (asAccepted(resp) !== undefined) {
|
|
29
25
|
return resp;
|
|
30
26
|
}
|
|
@@ -38,14 +34,14 @@ function mapResponse(resp, mapFn) {
|
|
|
38
34
|
*/
|
|
39
35
|
function asAccepted(resp) {
|
|
40
36
|
const acceptedResp = resp;
|
|
41
|
-
return
|
|
37
|
+
return ALL_ACCEPTED_CODES.includes(acceptedResp.error_code)
|
|
42
38
|
? (acceptedResp.accepted ?? undefined)
|
|
43
39
|
: undefined;
|
|
44
40
|
}
|
|
45
41
|
/**
|
|
46
42
|
* A response of a CubeSigner request.
|
|
47
43
|
*/
|
|
48
|
-
class CubeSignerResponse {
|
|
44
|
+
export class CubeSignerResponse {
|
|
49
45
|
/**
|
|
50
46
|
* @returns The {@link AcceptedValue} if the response status code is 202.
|
|
51
47
|
*/
|
|
@@ -64,12 +60,6 @@ class CubeSignerResponse {
|
|
|
64
60
|
asSignDryRun() {
|
|
65
61
|
return this.asAccepted()?.SignDryRun ?? undefined;
|
|
66
62
|
}
|
|
67
|
-
/**
|
|
68
|
-
* @returns The associated {@link BinanceDryRun} value, if the response status code is 202 and the response is a dry run of a sign operation.
|
|
69
|
-
*/
|
|
70
|
-
asBinanceDryRun() {
|
|
71
|
-
return this.asAccepted()?.BinanceDryRun ?? undefined;
|
|
72
|
-
}
|
|
73
63
|
/**
|
|
74
64
|
* @returns Whether this response is a "200 Success" (in which case it is safe to call {@link data})
|
|
75
65
|
*/
|
|
@@ -103,7 +93,7 @@ class CubeSignerResponse {
|
|
|
103
93
|
const session = this.asMfaRequired()?.session ?? undefined;
|
|
104
94
|
if (session === undefined)
|
|
105
95
|
return;
|
|
106
|
-
return await
|
|
96
|
+
return await CubeSignerClient.create({
|
|
107
97
|
env: __classPrivateFieldGet(this, _CubeSignerResponse_env, "f").spec,
|
|
108
98
|
org_id: this.mfaRequired.org_id,
|
|
109
99
|
session_exp: session.expiration,
|
|
@@ -200,7 +190,39 @@ class CubeSignerResponse {
|
|
|
200
190
|
*/
|
|
201
191
|
static async create(env, requestFn, mfaReceipt) {
|
|
202
192
|
const seed = await requestFn(this.getMfaHeaders(mfaReceipt));
|
|
203
|
-
return new CubeSignerResponse(
|
|
193
|
+
return new CubeSignerResponse(MultiRegionEnv.create(env), requestFn, seed);
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Similar to {@link create} except that unwraps the {@link JsonRpcResponse}
|
|
197
|
+
* to throw an {@link ErrResponse} on error
|
|
198
|
+
*
|
|
199
|
+
* @param env The environment where the response comes from
|
|
200
|
+
* @param reqFn
|
|
201
|
+
* The request function that this response is from.
|
|
202
|
+
* This argument is used to resend requests with different headers if needed.
|
|
203
|
+
* @param mfaReceipt Optional MFA receipt(s)
|
|
204
|
+
* @returns New instance of this class.
|
|
205
|
+
* @internal
|
|
206
|
+
*/
|
|
207
|
+
static async createForJsonRpc(env, reqFn, mfaReceipt) {
|
|
208
|
+
const requestFn = async (headers) => {
|
|
209
|
+
const resp = await reqFn(headers);
|
|
210
|
+
if (resp.result)
|
|
211
|
+
return resp.result;
|
|
212
|
+
const errResp = resp.error?.data;
|
|
213
|
+
// return AcceptedResponse if accepted
|
|
214
|
+
if (errResp?.accepted) {
|
|
215
|
+
return errResp;
|
|
216
|
+
}
|
|
217
|
+
// otherwise it's an error
|
|
218
|
+
throw new ErrResponse({
|
|
219
|
+
message: errResp?.message ?? resp.error?.message ?? "JSON-RPC error",
|
|
220
|
+
errorCode: errResp?.error_code,
|
|
221
|
+
requestId: errResp?.request_id,
|
|
222
|
+
});
|
|
223
|
+
};
|
|
224
|
+
const seed = await requestFn(this.getMfaHeaders(mfaReceipt));
|
|
225
|
+
return new CubeSignerResponse(MultiRegionEnv.create(env), requestFn, seed);
|
|
204
226
|
}
|
|
205
227
|
/**
|
|
206
228
|
* Return HTTP headers containing a given MFA receipt.
|
|
@@ -213,7 +235,7 @@ class CubeSignerResponse {
|
|
|
213
235
|
if (mfaReceipt === undefined) {
|
|
214
236
|
return undefined;
|
|
215
237
|
}
|
|
216
|
-
const rec =
|
|
238
|
+
const rec = isManyMfaReceipts(mfaReceipt)
|
|
217
239
|
? mfaReceipt
|
|
218
240
|
: {
|
|
219
241
|
orgId: mfaReceipt.mfaOrgId,
|
|
@@ -230,11 +252,10 @@ class CubeSignerResponse {
|
|
|
230
252
|
const textEncoder = new TextEncoder();
|
|
231
253
|
return {
|
|
232
254
|
"x-cubist-mfa-org-id": rec.orgId,
|
|
233
|
-
"x-cubist-mfa-receipts":
|
|
255
|
+
"x-cubist-mfa-receipts": encodeToBase64Url(textEncoder.encode(JSON.stringify(rec.receipts))),
|
|
234
256
|
};
|
|
235
257
|
}
|
|
236
258
|
}
|
|
237
|
-
exports.CubeSignerResponse = CubeSignerResponse;
|
|
238
259
|
_CubeSignerResponse_env = new WeakMap(), _CubeSignerResponse_requestFn = new WeakMap(), _CubeSignerResponse_resp = new WeakMap(), _CubeSignerResponse_instances = new WeakSet(), _CubeSignerResponse_mfaTotpVote =
|
|
239
260
|
/**
|
|
240
261
|
* Approve or reject an MFA request using a given session and a TOTP code.
|
|
@@ -277,4 +298,4 @@ async function _CubeSignerResponse_mfaVote(client, mfaVote) {
|
|
|
277
298
|
}
|
|
278
299
|
return await this.execWithMfaApproval({ mfaId, mfaOrgId, mfaConf });
|
|
279
300
|
};
|
|
280
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVzcG9uc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBOEJBLGtDQU1DO0FBbkNELHdCQUF3RTtBQUN4RSxpQ0FBMkM7QUFvQjNDOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixXQUFXLENBQU8sSUFBaUIsRUFBRSxLQUFrQjtJQUNyRSxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUNuQyxPQUFPLElBQXdCLENBQUM7SUFDbEMsQ0FBQztTQUFNLENBQUM7UUFDTixPQUFPLEtBQUssQ0FBQyxJQUFTLENBQUMsQ0FBQztJQUMxQixDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQVMsVUFBVSxDQUFJLElBQWlCO0lBQ3RDLE1BQU0sWUFBWSxHQUFHLElBQXdCLENBQUM7SUFDOUMsT0FBTyxZQUFZLENBQUMsVUFBVSxLQUFLLFlBQVksSUFBSSxZQUFZLENBQUMsVUFBVSxLQUFLLGFBQWE7UUFDMUYsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsSUFBSSxTQUFTLENBQUM7UUFDdEMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNoQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLGtCQUFrQjtJQUs3Qjs7T0FFRztJQUNILFVBQVU7UUFDUixPQUFPLFVBQVUsQ0FBQyx1QkFBQSxJQUFJLGdDQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsV0FBVyxJQUFJLFNBQVMsQ0FBQztJQUNyRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxZQUFZO1FBQ1YsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLEVBQUUsVUFBVSxJQUFJLFNBQVMsQ0FBQztJQUNwRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxlQUFlO1FBQ2Is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T0FBZ0I7SUFDdkQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzNCLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFZLENBQUMsTUFBTSxDQUFDO0lBRTFDLE1BQU0sV0FBVyxHQUFHLE1BQU0sTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3JFLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDO0lBRWxELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNiLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU8sTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7QUFDdEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTWZhVm90ZSwgRW52SW50ZXJmYWNlLCBNZmFSZWNlaXB0cywgTWZhUmVxdWlyZWQgfSBmcm9tIFwiLlwiO1xuaW1wb3J0IHsgQ3ViZVNpZ25lckNsaWVudCwgTXVsdGlSZWdpb25FbnYsIGlzTWFueU1mYVJlY2VpcHRzIH0gZnJvbSBcIi5cIjtcbmltcG9ydCB7IGVuY29kZVRvQmFzZTY0VXJsIH0gZnJvbSBcIi4vdXRpbFwiO1xuaW1wb3J0IHR5cGUgeyBBY2NlcHRlZFJlc3BvbnNlLCBBY2NlcHRlZFZhbHVlLCBCaW5hbmNlRHJ5UnVuLCBTaWduRHJ5UnVuIH0gZnJvbSBcIi4vc2NoZW1hX3R5cGVzXCI7XG5cbi8qKlxuICogUmVzcG9uc2UgdHlwZSwgd2hpY2ggY2FuIGJlIGVpdGhlciBhIHZhbHVlIG9mIHR5cGUge0BsaW5rIFV9XG4gKiBvciB7QGxpbmsgQWNjZXB0ZWRSZXNwb25zZX0gKHN0YXR1cyBjb2RlIDIwMikgd2hpY2ggcmVxdWlyZXMgTUZBLlxuICovXG5leHBvcnQgdHlwZSBSZXNwb25zZTxVPiA9IFUgfCBBY2NlcHRlZFJlc3BvbnNlO1xuXG4vKipcbiAqIFJlcXVlc3QgZnVuY3Rpb24gd2hpY2ggb3B0aW9uYWxseSB0YWtlcyBhZGRpdGlvbmFsIGhlYWRlcnNcbiAqICh3aGljaCwgZm9yIGV4YW1wbGUsIGNhbiBiZSB1c2VkIHRvIGF0dGFjaCBhbiBNRkEgcmVjZWlwdCkuXG4gKi9cbmV4cG9ydCB0eXBlIFJlcXVlc3RGbjxVPiA9IChoZWFkZXJzPzogSGVhZGVyc0luaXQpID0+IFByb21pc2U8UmVzcG9uc2U8VT4+O1xuXG4vKipcbiAqIE1hcCBmdW5jdGlvbiBvY2Nhc2lvbmFsbHkgdXNlZCB0byBtYXAgYSByZXNwb25zZSBmcm9tIHRoZSBBUEkgaW50byBhIGhpZ2hlci1sZXZlbCB0eXBlLlxuICovXG5leHBvcnQgdHlwZSBNYXBGbjxVLCBWPiA9ICh1OiBVKSA9PiBWO1xuXG4vKipcbiAqIFRha2UgYSB7QGxpbmsgUmVzcG9uc2U8VT59IGFuZCBhIHtAbGluayBNYXBGbjxVLCBWPn0gZnVuY3Rpb24gYW5kIHJldHVyblxuICogYSB7QGxpbmsgUmVzcG9uc2U8Vj59IHRoYXQgbWFwcyB0aGUgdmFsdWUgb2YgdGhlIG9yaWdpbmFsIHJlc3BvbnNlIHdoZW4gaXRzIHN0YXR1cyBjb2RlIGlzIDIwMC5cbiAqXG4gKiBAcGFyYW0gcmVzcCBPcmlnaW5hbCByZXNwb25zZVxuICogQHBhcmFtIG1hcEZuIE1hcCB0byBhcHBseSB0byB0aGUgcmVzcG9uc2UgdmFsdWUgd2hlbiBpdHMgc3RhdHVzIGNvZGUgaXMgMjAwLlxuICogQHJldHVybnMgUmVzcG9uc2Ugd2hvc2UgdmFsdWUgZm9yIHN0YXR1cyBjb2RlIDIwMCBpcyBtYXBwZWQgZnJvbSBVIHRvIFZcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hcFJlc3BvbnNlPFUsIFY+KHJlc3A6IFJlc3BvbnNlPFU+LCBtYXBGbjogTWFwRm48VSwgVj4pOiBSZXNwb25zZTxWPiB7XG4gIGlmIChhc0FjY2VwdGVkKHJlc3ApICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gcmVzcCBhcyBBY2NlcHRlZFJlc3BvbnNlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBtYXBGbihyZXNwIGFzIFUpO1xuICB9XG59XG5cbi8qKlxuICogQHBhcmFtIHJlc3AgVGhlIHJlc3BvbnNlIHRvIGNoZWNrXG4gKiBAcmV0dXJucyBUaGUge0BsaW5rIEFjY2VwdGVkVmFsdWV9IGlmIHRoZSByZXNwb25zZSBzdGF0dXMgY29kZSBpcyAyMDIuXG4gKi9cbmZ1bmN0aW9uIGFzQWNjZXB0ZWQ8VT4ocmVzcDogUmVzcG9uc2U8VT4pOiBBY2NlcHRlZFZhbHVlIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgYWNjZXB0ZWRSZXNwID0gcmVzcCBhcyBBY2NlcHRlZFJlc3BvbnNlO1xuICByZXR1cm4gYWNjZXB0ZWRSZXNwLmVycm9yX2NvZGUgPT09IFwiU2lnbkRyeVJ1blwiIHx8IGFjY2VwdGVkUmVzcC5lcnJvcl9jb2RlID09PSBcIk1mYVJlcXVpcmVkXCJcbiAgICA/IChhY2NlcHRlZFJlc3AuYWNjZXB0ZWQgPz8gdW5kZWZpbmVkKVxuICAgIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEEgcmVzcG9uc2Ugb2YgYSBDdWJlU2lnbmVyIHJlcXVlc3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBDdWJlU2lnbmVyUmVzcG9uc2U8VT4ge1xuICByZWFkb25seSAjZW52OiBNdWx0aVJlZ2lvbkVudjtcbiAgcmVhZG9ubHkgI3JlcXVlc3RGbjogUmVxdWVzdEZuPFU+O1xuICByZWFkb25seSAjcmVzcDogUmVzcG9uc2U8VT47XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIFRoZSB7QGxpbmsgQWNjZXB0ZWRWYWx1ZX0gaWYgdGhlIHJlc3BvbnNlIHN0YXR1cyBjb2RlIGlzIDIwMi5cbiAgICovXG4gIGFzQWNjZXB0ZWQoKTogQWNjZXB0ZWRWYWx1ZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGFzQWNjZXB0ZWQodGhpcy4jcmVzcCk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgVGhlIGFzc29jaWF0ZWQge0BsaW5rIE1mYVJlcXVpcmVkfSB2YWx1ZSwgaWYgdGhlIHJlc3BvbnNlIHN0YXR1cyBjb2RlIGlzIDIwMiBhbmQgdGhlIHJlc3BvbnNlIGluZGljYXRlcyB0aGF0IE1GQSBpcyByZXF1aXJlZC5cbiAgICovXG4gIGFzTWZhUmVxdWlyZWQoKTogTWZhUmVxdWlyZWQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmFzQWNjZXB0ZWQoKT8uTWZhUmVxdWlyZWQgPz8gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIFRoZSBhc3NvY2lhdGVkIHtAbGluayBTaWduRHJ5UnVufSB2YWx1ZSwgaWYgdGhlIHJlc3BvbnNlIHN0YXR1cyBjb2RlIGlzIDIwMiBhbmQgdGhlIHJlc3BvbnNlIGlzIGEgZHJ5IHJ1biBvZiBhIHNpZ24gb3BlcmF0aW9uLlxuICAgKi9cbiAgYXNTaWduRHJ5UnVuKCk6IFNpZ25EcnlSdW4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmFzQWNjZXB0ZWQoKT8uU2lnbkRyeVJ1biA/PyB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgVGhlIGFzc29jaWF0ZWQge0BsaW5rIEJpbmFuY2VEcnlSdW59IHZhbHVlLCBpZiB0aGUgcmVzcG9uc2Ugc3RhdHVzIGNvZGUgaXMgMjAyIGFuZCB0aGUgcmVzcG9uc2UgaXMgYSBkcnkgcnVuIG9mIGEgc2lnbiBvcGVyYXRpb24uXG4gICAqL1xuICBhc0JpbmFuY2VEcnlSdW4oKTogQmluYW5jZURyeVJ1biB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuYXNBY2NlcHRlZCgpPy5CaW5hbmNlRHJ5UnVuID8/IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBXaGV0aGVyIHRoaXMgcmVzcG9uc2UgaXMgYSBcIjIwMCBTdWNjZXNzXCIgKGluIHdoaWNoIGNhc2UgaXQgaXMgc2FmZSB0byBjYWxsIHtAbGluayBkYXRhfSlcbiAgICovXG4gIGlzU3VjY2VzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5hc0FjY2VwdGVkKCkgPT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcmV0dXJucyBUaGUgdW5kZXJseWluZyB7QGxpbmsgTWZhUmVxdWlyZWR9IHJlc3BvbnNlIChpZiBhbnkpLlxuICAgKi9cbiAgcHJpdmF0ZSBnZXQgbWZhUmVxdWlyZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXNBY2NlcHRlZCgpPy5NZmFSZXF1aXJlZDtcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyBUaGUgZmlyc3QgTUZBIGlkIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlcXVlc3QgKGlmIGFueSkgKi9cbiAgbWZhSWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5tZmFSZXF1aXJlZD8uaWQ7XG4gIH1cblxuICAvKiogQHJldHVybnMgVGhlIE1GQSBpZHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcmVxdWVzdCAoaWYgYW55KSAqL1xuICBtZmFJZHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLm1mYVJlcXVpcmVkPy5pZHMgPz8gW107XG4gIH1cblxuICAvKiogQHJldHVybnMgVHJ1ZSBpZiB0aGlzIHJlcXVlc3QgcmVxdWlyZXMgYW4gTUZBIGFwcHJvdmFsICovXG4gIHJlcXVpcmVzTWZhKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm1mYVJlcXVpcmVkICE9PSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgU2Vzc2lvbiBpbmZvcm1hdGlvbiB0byB1c2UgZm9yIGFueSBNRkEgYXBwcm92YWwgcmVxdWVzdHMgKGlmIGFueSB3YXMgaW5jbHVkZWQgaW4gdGhlIHJlc3BvbnNlKS5cbiAgICovXG4gIGFzeW5jIG1mYUNsaWVudCgpOiBQcm9taXNlPEN1YmVTaWduZXJDbGllbnQgfCB1bmRlZmluZWQ+IHtcbiAgICBpZiAodGhpcy5tZmFSZXF1aXJlZCA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgY29uc3Qgc2Vzc2lvbiA9IHRoaXMuYXNNZmFSZXF1aXJlZCgpPy5zZXNzaW9uID8/IHVuZGVmaW5lZDtcbiAgICBpZiAoc2Vzc2lvbiA9PT0gdW5kZWZpbmVkKSByZXR1cm47XG5cbiAgICByZXR1cm4gYXdhaXQgQ3ViZVNpZ25lckNsaWVudC5jcmVhdGUoe1xuICAgICAgZW52OiB0aGlzLiNlbnYuc3BlYyxcbiAgICAgIG9yZ19pZDogdGhpcy5tZmFSZXF1aXJlZC5vcmdfaWQsXG4gICAgICBzZXNzaW9uX2V4cDogc2Vzc2lvbi5leHBpcmF0aW9uLFxuICAgICAgc2Vzc2lvbl9pbmZvOiBzZXNzaW9uLnNlc3Npb25faW5mbyxcbiAgICAgIHRva2VuOiBzZXNzaW9uLnRva2VuLFxuICAgICAgcmVmcmVzaF90b2tlbjogc2Vzc2lvbi5yZWZyZXNoX3Rva2VuLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqIEByZXR1cm5zIFRoZSByZXNwb25zZSBkYXRhLCBpZiBubyBNRkEgaXMgcmVxdWlyZWQgKi9cbiAgZGF0YSgpOiBVIHtcbiAgICBpZiAoIXRoaXMuaXNTdWNjZXNzKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJDYW5ub3QgY2FsbCBgZGF0YSgpYCBvbiBhIDIwMiBBY2NlcHRlZCByZXNwb25zZTsgdXNlIGBhc01mYVJlcXVpcmVkKClgIG9yIGBhc1NpZ25EcnlSdW4oKWBcIixcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLiNyZXNwIGFzIFU7XG4gIH1cblxuICAvKipcbiAgICogQXBwcm92ZSB0aGUgTUZBIHJlcXVlc3QgdXNpbmcgYSBnaXZlbiBzZXNzaW9uIGFuZCBhIFRPVFAgY29kZS5cbiAgICpcbiAgICogQHBhcmFtIGNsaWVudCBDdWJlU2lnbmVyIHdob3NlIHNlc3Npb24gdG8gdXNlXG4gICAqIEBwYXJhbSBjb2RlIDYtZGlnaXQgVE9UUCBjb2RlXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgcmVzdWJtaXR0aW5nIHRoZSByZXF1ZXN0IHdpdGggdGhlIGFwcHJvdmFsXG4gICAqL1xuICBhc3luYyB0b3RwQXBwcm92ZShjbGllbnQ6IEN1YmVTaWduZXJDbGllbnQsIGNvZGU6IHN0cmluZyk6IFByb21pc2U8Q3ViZVNpZ25lclJlc3BvbnNlPFU+PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuI21mYVRvdHBWb3RlKGNsaWVudCwgY29kZSwgXCJhcHByb3ZlXCIpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlamVjdCB0aGUgTUZBIHJlcXVlc3QgdXNpbmcgYSBnaXZlbiBzZXNzaW9uIGFuZCBhIFRPVFAgY29kZS5cbiAgICpcbiAgICogQHBhcmFtIGNsaWVudCBDdWJlU2lnbmVyIHdob3NlIHNlc3Npb24gdG8gdXNlXG4gICAqIEBwYXJhbSBjb2RlIDYtZGlnaXQgVE9UUCBjb2RlXG4gICAqL1xuICBhc3luYyB0b3RwUmVqZWN0KGNsaWVudDogQ3ViZVNpZ25lckNsaWVudCwgY29kZTogc3RyaW5nKSB7XG4gICAgYXdhaXQgdGhpcy4jbWZhVG90cFZvdGUoY2xpZW50LCBjb2RlLCBcInJlamVjdFwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHByb3ZlIG9yIHJlamVjdCBhbiBNRkEgcmVxdWVzdCB1c2luZyBhIGdpdmVuIHNlc3Npb24gYW5kIGEgVE9UUCBjb2RlLlxuICAgKlxuICAgKiBAcGFyYW0gY2xpZW50IEN1YmVTaWduZXIgd2hvc2Ugc2Vzc2lvbiB0byB1c2VcbiAgICogQHBhcmFtIGNvZGUgNi1kaWdpdCBUT1RQIGNvZGVcbiAgICogQHBhcmFtIHZvdGUgQXBwcm92ZSBvciByZWplY3RcbiAgICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiByZXN1Ym1pdHRpbmcgdGhlIHJlcXVlc3Qgd2l0aCB0aGUgYXBwcm92YWxcbiAgICovXG4gIGFzeW5jICNtZmFUb3RwVm90ZShcbiAgICBjbGllbnQ6IEN1YmVTaWduZXJDbGllbnQsXG4gICAgY29kZTogc3RyaW5nLFxuICAgIHZvdGU6IE1mYVZvdGUsXG4gICk6IFByb21pc2U8Q3ViZVNpZ25lclJlc3BvbnNlPFU+PiB7XG4gICAgY29uc3QgbWZhSWQgPSB0aGlzLm1mYUlkKCk7XG4gICAgaWYgKG1mYUlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGNvbnN0IG1mYU9yZ0lkID0gdGhpcy5tZmFSZXF1aXJlZCEub3JnX2lkO1xuICAgIGNvbnN0IG1mYUFwcHJvdmFsID0gYXdhaXQgY2xpZW50LmFwaUNsaWVudC5tZmFWb3RlVG90cChtZmFJZCwgY29kZSwgdm90ZSk7XG4gICAgY29uc3QgbWZhQ29uZiA9IG1mYUFwcHJvdmFsLnJlY2VpcHQ/LmNvbmZpcm1hdGlvbjtcblxuICAgIGlmICghbWZhQ29uZikge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY1dpdGhNZmFBcHByb3ZhbCh7IG1mYUlkLCBtZmFPcmdJZCwgbWZhQ29uZiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHByb3ZlIHRoZSBNRkEgcmVxdWVzdCB1c2luZyBhIGdpdmVuIHtAbGluayBDdWJlU2lnbmVyQ2xpZW50fSBpbnN0YW5jZSAoaS5lLiwgaXRzIHNlc3Npb24pLlxuICAgKlxuICAgKiBAcGFyYW0gY2xpZW50IEN1YmVTaWduZXIgd2hvc2Ugc2Vzc2lvbiB0byB1c2VcbiAgICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiByZXN1Ym1pdHRpbmcgdGhlIHJlcXVlc3Qgd2l0aCB0aGUgYXBwcm92YWxcbiAgICovXG4gIGFzeW5jIGFwcHJvdmUoY2xpZW50OiBDdWJlU2lnbmVyQ2xpZW50KTogUHJvbWlzZTxDdWJlU2lnbmVyUmVzcG9uc2U8VT4+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy4jbWZhVm90ZShjbGllbnQsIFwiYXBwcm92ZVwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWplY3QgdGhlIE1GQSByZXF1ZXN0IHVzaW5nIGEgZ2l2ZW4ge0BsaW5rIEN1YmVTaWduZXJDbGllbnR9IGluc3RhbmNlIChpLmUuLCBpdHMgc2Vzc2lvbikuXG4gICAqXG4gICAqIEBwYXJhbSBjbGllbnQgQ3ViZVNpZ25lciB3aG9zZSBzZXNzaW9uIHRvIHVzZVxuICAgKi9cbiAgYXN5bmMgcmVqZWN0KGNsaWVudDogQ3ViZVNpZ25lckNsaWVudCkge1xuICAgIGF3YWl0IHRoaXMuI21mYVZvdGUoY2xpZW50LCBcInJlamVjdFwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHByb3ZlIG9yIHJlamVjdCBhbiBNRkEgcmVxdWVzdCB1c2luZyBhIGdpdmVuIHtAbGluayBDdWJlU2lnbmVyQ2xpZW50fSBpbnN0YW5jZSAoaS5lLiwgaXRzIHNlc3Npb24pLlxuICAgKlxuICAgKiBAcGFyYW0gY2xpZW50IEN1YmVTaWduZXIgd2hvc2Ugc2Vzc2lvbiB0byB1c2VcbiAgICogQHBhcmFtIG1mYVZvdGUgQXBwcm92ZSBvciByZWplY3RcbiAgICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiByZXN1Ym1pdHRpbmcgdGhlIHJlcXVlc3Qgd2l0aCB0aGUgYXBwcm92YWxcbiAgICovXG4gIGFzeW5jICNtZmFWb3RlKGNsaWVudDogQ3ViZVNpZ25lckNsaWVudCwgbWZhVm90ZTogTWZhVm90ZSk6IFByb21pc2U8Q3ViZVNpZ25lclJlc3BvbnNlPFU+PiB7XG4gICAgY29uc3QgbWZhSWQgPSB0aGlzLm1mYUlkKCk7XG4gICAgaWYgKG1mYUlkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIGNvbnN0IG1mYU9yZ0lkID0gdGhpcy5tZmFSZXF1aXJlZCEub3JnX2lkO1xuXG4gICAgY29uc3QgbWZhQXBwcm92YWwgPSBhd2FpdCBjbGllbnQuYXBpQ2xpZW50Lm1mYVZvdGVDcyhtZmFJZCwgbWZhVm90ZSk7XG4gICAgY29uc3QgbWZhQ29uZiA9IG1mYUFwcHJvdmFsLnJlY2VpcHQ/LmNvbmZpcm1hdGlvbjtcblxuICAgIGlmICghbWZhQ29uZikge1xuICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY1dpdGhNZmFBcHByb3ZhbCh7IG1mYUlkLCBtZmFPcmdJZCwgbWZhQ29uZiB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXN1Ym1pdHMgdGhlIHJlcXVlc3Qgd2l0aCBhIGdpdmVuIE1GQSByZWNlaXB0KHMpIGF0dGFjaGVkLlxuICAgKlxuICAgKiBAcGFyYW0gbWZhUmVjZWlwdCBUaGUgTUZBIHJlY2VpcHQocylcbiAgICogQHJldHVybnMgVGhlIHJlc3VsdCBvZiBzaWduaW5nIGFmdGVyIE1GQSBhcHByb3ZhbFxuICAgKi9cbiAgYXN5bmMgZXhlY1dpdGhNZmFBcHByb3ZhbChtZmFSZWNlaXB0OiBNZmFSZWNlaXB0cyk6IFByb21pc2U8Q3ViZVNpZ25lclJlc3BvbnNlPFU+PiB7XG4gICAgY29uc3QgaGVhZGVycyA9IEN1YmVTaWduZXJSZXNwb25zZS5nZXRNZmFIZWFkZXJzKG1mYVJlY2VpcHQpO1xuICAgIHJldHVybiBuZXcgQ3ViZVNpZ25lclJlc3BvbnNlKHRoaXMuI2VudiwgdGhpcy4jcmVxdWVzdEZuLCBhd2FpdCB0aGlzLiNyZXF1ZXN0Rm4oaGVhZGVycykpO1xuICB9XG5cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gLS0gSU5URVJOQUwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvKipcbiAgICogQ29uc3RydWN0b3IuXG4gICAqXG4gICAqIEBwYXJhbSBlbnYgVGhlIGVudmlyb25tZW50IHdoZXJlIHRoZSByZXNwb25zZSBjb21lcyBmcm9tXG4gICAqIEBwYXJhbSByZXF1ZXN0Rm5cbiAgICogICAgVGhlIGZ1bmN0aW9uIHRoYXQgdGhpcyByZXNwb25zZSBpcyBmcm9tLlxuICAgKiAgICBUaGlzIGFyZ3VtZW50IGlzIHVzZWQgdG8gcmVzZW5kIHJlcXVlc3RzIHdpdGggZGlmZmVyZW50IGhlYWRlcnMgaWYgbmVlZGVkLlxuICAgKiBAcGFyYW0gcmVzcCBUaGUgcmVzcG9uc2UgYXMgcmV0dXJuZWQgYnkgdGhlIE9wZW5BUEkgY2xpZW50LlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihlbnY6IE11bHRpUmVnaW9uRW52LCByZXF1ZXN0Rm46IFJlcXVlc3RGbjxVPiwgcmVzcDogUmVzcG9uc2U8VT4pIHtcbiAgICB0aGlzLiNlbnYgPSBlbnY7XG4gICAgdGhpcy4jcmVxdWVzdEZuID0gcmVxdWVzdEZuO1xuICAgIHRoaXMuI3Jlc3AgPSByZXNwO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXRpYyBjb25zdHJ1Y3Rvci5cbiAgICpcbiAgICogQHBhcmFtIGVudiBUaGUgZW52aXJvbm1lbnQgd2hlcmUgdGhlIHJlc3BvbnNlIGNvbWVzIGZyb21cbiAgICogQHBhcmFtIHJlcXVlc3RGblxuICAgKiAgICBUaGUgcmVxdWVzdCBmdW5jdGlvbiB0aGF0IHRoaXMgcmVzcG9uc2UgaXMgZnJvbS5cbiAgICogICAgVGhpcyBhcmd1bWVudCBpcyB1c2VkIHRvIHJlc2VuZCByZXF1ZXN0cyB3aXRoIGRpZmZlcmVudCBoZWFkZXJzIGlmIG5lZWRlZC5cbiAgICogQHBhcmFtIG1mYVJlY2VpcHQgT3B0aW9uYWwgTUZBIHJlY2VpcHQocylcbiAgICogQHJldHVybnMgTmV3IGluc3RhbmNlIG9mIHRoaXMgY2xhc3MuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgc3RhdGljIGFzeW5jIGNyZWF0ZTxVPihcbiAgICBlbnY6IEVudkludGVyZmFjZSB8IE11bHRpUmVnaW9uRW52LFxuICAgIHJlcXVlc3RGbjogUmVxdWVzdEZuPFU+LFxuICAgIG1mYVJlY2VpcHQ/OiBNZmFSZWNlaXB0cyxcbiAgKTogUHJvbWlzZTxDdWJlU2lnbmVyUmVzcG9uc2U8VT4+IHtcbiAgICBjb25zdCBzZWVkID0gYXdhaXQgcmVxdWVzdEZuKHRoaXMuZ2V0TWZhSGVhZGVycyhtZmFSZWNlaXB0KSk7XG4gICAgcmV0dXJuIG5ldyBDdWJlU2lnbmVyUmVzcG9uc2UoTXVsdGlSZWdpb25FbnYuY3JlYXRlKGVudiksIHJlcXVlc3RGbiwgc2VlZCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIEhUVFAgaGVhZGVycyBjb250YWluaW5nIGEgZ2l2ZW4gTUZBIHJlY2VpcHQuXG4gICAqXG4gICAqIEBwYXJhbSBtZmFSZWNlaXB0IE1GQSByZWNlaXB0KHMpXG4gICAqIEByZXR1cm5zIEhlYWRlcnMgaW5jbHVkaW5nIHtAbGluayBtZmFSZWNlaXB0fVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHN0YXRpYyBnZXRNZmFIZWFkZXJzKG1mYVJlY2VpcHQ/OiBNZmFSZWNlaXB0cyk6IEhlYWRlcnNJbml0IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAobWZhUmVjZWlwdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IHJlYyA9IGlzTWFueU1mYVJlY2VpcHRzKG1mYVJlY2VpcHQpXG4gICAgICA/IG1mYVJlY2VpcHRcbiAgICAgIDoge1xuICAgICAgICAgIG9yZ0lkOiBtZmFSZWNlaXB0Lm1mYU9yZ0lkLFxuICAgICAgICAgIHJlY2VpcHRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiBtZmFSZWNlaXB0Lm1mYUlkLFxuICAgICAgICAgICAgICBjb25maXJtYXRpb246IG1mYVJlY2VpcHQubWZhQ29uZixcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfTtcblxuICAgIGlmIChyZWMucmVjZWlwdHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IHRleHRFbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIFwieC1jdWJpc3QtbWZhLW9yZy1pZFwiOiByZWMub3JnSWQsXG4gICAgICBcIngtY3ViaXN0LW1mYS1yZWNlaXB0c1wiOiBlbmNvZGVUb0Jhc2U2NFVybCh0ZXh0RW5jb2Rlci5lbmNvZGUoSlNPTi5zdHJpbmdpZnkocmVjLnJlY2VpcHRzKSkpLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
301
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVzcG9uc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQ0EsT0FBTyxFQUNMLGtCQUFrQixFQUNsQixnQkFBZ0IsRUFDaEIsV0FBVyxFQUNYLGNBQWMsRUFDZCxpQkFBaUIsR0FDbEIsTUFBTSxZQUFZLENBQUM7QUFDcEIsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sV0FBVyxDQUFDO0FBNEI5Qzs7Ozs7OztHQU9HO0FBQ0gsTUFBTSxVQUFVLFdBQVcsQ0FBTyxJQUFpQixFQUFFLEtBQWtCO0lBQ3JFLElBQUksVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ25DLE9BQU8sSUFBd0IsQ0FBQztJQUNsQyxDQUFDO1NBQU0sQ0FBQztRQUNOLE9BQU8sS0FBSyxDQUFDLElBQVMsQ0FBQyxDQUFDO0lBQzFCLENBQUM7QUFDSCxDQUFDO0FBRUQ7OztHQUdHO0FBQ0gsU0FBUyxVQUFVLENBQUksSUFBaUI7SUFDdEMsTUFBTSxZQUFZLEdBQUcsSUFBd0IsQ0FBQztJQUM5QyxPQUFPLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsVUFBK0IsQ0FBQztRQUM5RSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxJQUFJLFNBQVMsQ0FBQztRQUN0QyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ2hCLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUFLN0I7O09BRUc7SUFDSCxVQUFVO1FBQ1IsT0FBTyxVQUFVLENBQUMsdUJBQUEsSUFBSSxnQ0FBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLFdBQVcsSUFBSSxTQUFTLENBQUM7SUFDckQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWTtRQUNW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QUFDO0lBRTFDLE1BQU0sV0FBVyxHQUFHLE1BQU0sTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3JFLE1BQU0sT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFPLEVBQUUsWUFBWSxDQUFDO0lBRWxELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNiLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU8sTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7QUFDdEUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTWZhVm90ZSwgRW52SW50ZXJmYWNlLCBNZmFSZWNlaXB0cywgTWZhUmVxdWlyZWQgfSBmcm9tIFwiLi9pbmRleC50c1wiO1xuaW1wb3J0IHtcbiAgQUxMX0FDQ0VQVEVEX0NPREVTLFxuICBDdWJlU2lnbmVyQ2xpZW50LFxuICBFcnJSZXNwb25zZSxcbiAgTXVsdGlSZWdpb25FbnYsXG4gIGlzTWFueU1mYVJlY2VpcHRzLFxufSBmcm9tIFwiLi9pbmRleC50c1wiO1xuaW1wb3J0IHsgZW5jb2RlVG9CYXNlNjRVcmwgfSBmcm9tIFwiLi91dGlsLnRzXCI7XG5pbXBvcnQgdHlwZSB7XG4gIEFjY2VwdGVkUmVzcG9uc2UsXG4gIEFjY2VwdGVkVmFsdWUsXG4gIFNpZ25EcnlSdW4sXG4gIEpzb25ScGNSZXNwb25zZSxcbiAgSnNvblJwY1Jlc3VsdCxcbiAgRXJyb3JSZXNwb25zZSxcbiAgQWNjZXB0ZWRWYWx1ZUNvZGUsXG59IGZyb20gXCIuL3NjaGVtYV90eXBlcy50c1wiO1xuXG4vKipcbiAqIFJlc3BvbnNlIHR5cGUsIHdoaWNoIGNhbiBiZSBlaXRoZXIgYSB2YWx1ZSBvZiB0eXBlIHtAbGluayBVfVxuICogb3Ige0BsaW5rIEFjY2VwdGVkUmVzcG9uc2V9IChzdGF0dXMgY29kZSAyMDIpIHdoaWNoIHJlcXVpcmVzIE1GQS5cbiAqL1xuZXhwb3J0IHR5cGUgUmVzcG9uc2U8VT4gPSBVIHwgQWNjZXB0ZWRSZXNwb25zZTtcblxuLyoqXG4gKiBSZXF1ZXN0IGZ1bmN0aW9uIHdoaWNoIG9wdGlvbmFsbHkgdGFrZXMgYWRkaXRpb25hbCBoZWFkZXJzXG4gKiAod2hpY2gsIGZvciBleGFtcGxlLCBjYW4gYmUgdXNlZCB0byBhdHRhY2ggYW4gTUZBIHJlY2VpcHQpLlxuICovXG5leHBvcnQgdHlwZSBSZXF1ZXN0Rm48VT4gPSAoaGVhZGVycz86IEhlYWRlcnNJbml0KSA9PiBQcm9taXNlPFJlc3BvbnNlPFU+PjtcblxuLyoqXG4gKiBNYXAgZnVuY3Rpb24gb2NjYXNpb25hbGx5IHVzZWQgdG8gbWFwIGEgcmVzcG9uc2UgZnJvbSB0aGUgQVBJIGludG8gYSBoaWdoZXItbGV2ZWwgdHlwZS5cbiAqL1xuZXhwb3J0IHR5cGUgTWFwRm48VSwgVj4gPSAodTogVSkgPT4gVjtcblxuLyoqXG4gKiBUYWtlIGEge0BsaW5rIFJlc3BvbnNlPFU+fSBhbmQgYSB7QGxpbmsgTWFwRm48VSwgVj59IGZ1bmN0aW9uIGFuZCByZXR1cm5cbiAqIGEge0BsaW5rIFJlc3BvbnNlPFY+fSB0aGF0IG1hcHMgdGhlIHZhbHVlIG9mIHRoZSBvcmlnaW5hbCByZXNwb25zZSB3aGVuIGl0cyBzdGF0dXMgY29kZSBpcyAyMDAuXG4gKlxuICogQHBhcmFtIHJlc3AgT3JpZ2luYWwgcmVzcG9uc2VcbiAqIEBwYXJhbSBtYXBGbiBNYXAgdG8gYXBwbHkgdG8gdGhlIHJlc3BvbnNlIHZhbHVlIHdoZW4gaXRzIHN0YXR1cyBjb2RlIGlzIDIwMC5cbiAqIEByZXR1cm5zIFJlc3BvbnNlIHdob3NlIHZhbHVlIGZvciBzdGF0dXMgY29kZSAyMDAgaXMgbWFwcGVkIGZyb20gVSB0byBWXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYXBSZXNwb25zZTxVLCBWPihyZXNwOiBSZXNwb25zZTxVPiwgbWFwRm46IE1hcEZuPFUsIFY+KTogUmVzcG9uc2U8Vj4ge1xuICBpZiAoYXNBY2NlcHRlZChyZXNwKSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHJlc3AgYXMgQWNjZXB0ZWRSZXNwb25zZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbWFwRm4ocmVzcCBhcyBVKTtcbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSByZXNwIFRoZSByZXNwb25zZSB0byBjaGVja1xuICogQHJldHVybnMgVGhlIHtAbGluayBBY2NlcHRlZFZhbHVlfSBpZiB0aGUgcmVzcG9uc2Ugc3RhdHVzIGNvZGUgaXMgMjAyLlxuICovXG5mdW5jdGlvbiBhc0FjY2VwdGVkPFU+KHJlc3A6IFJlc3BvbnNlPFU+KTogQWNjZXB0ZWRWYWx1ZSB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IGFjY2VwdGVkUmVzcCA9IHJlc3AgYXMgQWNjZXB0ZWRSZXNwb25zZTtcbiAgcmV0dXJuIEFMTF9BQ0NFUFRFRF9DT0RFUy5pbmNsdWRlcyhhY2NlcHRlZFJlc3AuZXJyb3JfY29kZSBhcyBBY2NlcHRlZFZhbHVlQ29kZSlcbiAgICA/IChhY2NlcHRlZFJlc3AuYWNjZXB0ZWQgPz8gdW5kZWZpbmVkKVxuICAgIDogdW5kZWZpbmVkO1xufVxuXG4vKipcbiAqIEEgcmVzcG9uc2Ugb2YgYSBDdWJlU2lnbmVyIHJlcXVlc3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBDdWJlU2lnbmVyUmVzcG9uc2U8VT4ge1xuICByZWFkb25seSAjZW52OiBNdWx0aVJlZ2lvbkVudjtcbiAgcmVhZG9ubHkgI3JlcXVlc3RGbjogUmVxdWVzdEZuPFU+O1xuICByZWFkb25seSAjcmVzcDogUmVzcG9uc2U8VT47XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIFRoZSB7QGxpbmsgQWNjZXB0ZWRWYWx1ZX0gaWYgdGhlIHJlc3BvbnNlIHN0YXR1cyBjb2RlIGlzIDIwMi5cbiAgICovXG4gIGFzQWNjZXB0ZWQoKTogQWNjZXB0ZWRWYWx1ZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGFzQWNjZXB0ZWQodGhpcy4jcmVzcCk7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgVGhlIGFzc29jaWF0ZWQge0BsaW5rIE1mYVJlcXVpcmVkfSB2YWx1ZSwgaWYgdGhlIHJlc3BvbnNlIHN0YXR1cyBjb2RlIGlzIDIwMiBhbmQgdGhlIHJlc3BvbnNlIGluZGljYXRlcyB0aGF0IE1GQSBpcyByZXF1aXJlZC5cbiAgICovXG4gIGFzTWZhUmVxdWlyZWQoKTogTWZhUmVxdWlyZWQgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmFzQWNjZXB0ZWQoKT8uTWZhUmVxdWlyZWQgPz8gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIFRoZSBhc3NvY2lhdGVkIHtAbGluayBTaWduRHJ5UnVufSB2YWx1ZSwgaWYgdGhlIHJlc3BvbnNlIHN0YXR1cyBjb2RlIGlzIDIwMiBhbmQgdGhlIHJlc3BvbnNlIGlzIGEgZHJ5IHJ1biBvZiBhIHNpZ24gb3BlcmF0aW9uLlxuICAgKi9cbiAgYXNTaWduRHJ5UnVuKCk6IFNpZ25EcnlSdW4gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLmFzQWNjZXB0ZWQoKT8uU2lnbkRyeVJ1biA/PyB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgV2hldGhlciB0aGlzIHJlc3BvbnNlIGlzIGEgXCIyMDAgU3VjY2Vzc1wiIChpbiB3aGljaCBjYXNlIGl0IGlzIHNhZmUgdG8gY2FsbCB7QGxpbmsgZGF0YX0pXG4gICAqL1xuICBpc1N1Y2Nlc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuYXNBY2NlcHRlZCgpID09PSB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogQHJldHVybnMgVGhlIHVuZGVybHlpbmcge0BsaW5rIE1mYVJlcXVpcmVkfSByZXNwb25zZSAoaWYgYW55KS5cbiAgICovXG4gIHByaXZhdGUgZ2V0IG1mYVJlcXVpcmVkKCkge1xuICAgIHJldHVybiB0aGlzLmFzQWNjZXB0ZWQoKT8uTWZhUmVxdWlyZWQ7XG4gIH1cblxuICAvKiogQHJldHVybnMgVGhlIGZpcnN0IE1GQSBpZCBhc3NvY2lhdGVkIHdpdGggdGhpcyByZXF1ZXN0IChpZiBhbnkpICovXG4gIG1mYUlkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubWZhUmVxdWlyZWQ/LmlkO1xuICB9XG5cbiAgLyoqIEByZXR1cm5zIFRoZSBNRkEgaWRzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlcXVlc3QgKGlmIGFueSkgKi9cbiAgbWZhSWRzKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5tZmFSZXF1aXJlZD8uaWRzID8/IFtdO1xuICB9XG5cbiAgLyoqIEByZXR1cm5zIFRydWUgaWYgdGhpcyByZXF1ZXN0IHJlcXVpcmVzIGFuIE1GQSBhcHByb3ZhbCAqL1xuICByZXF1aXJlc01mYSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5tZmFSZXF1aXJlZCAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEByZXR1cm5zIFNlc3Npb24gaW5mb3JtYXRpb24gdG8gdXNlIGZvciBhbnkgTUZBIGFwcHJvdmFsIHJlcXVlc3RzIChpZiBhbnkgd2FzIGluY2x1ZGVkIGluIHRoZSByZXNwb25zZSkuXG4gICAqL1xuICBhc3luYyBtZmFDbGllbnQoKTogUHJvbWlzZTxDdWJlU2lnbmVyQ2xpZW50IHwgdW5kZWZpbmVkPiB7XG4gICAgaWYgKHRoaXMubWZhUmVxdWlyZWQgPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgIGNvbnN0IHNlc3Npb24gPSB0aGlzLmFzTWZhUmVxdWlyZWQoKT8uc2Vzc2lvbiA/PyB1bmRlZmluZWQ7XG4gICAgaWYgKHNlc3Npb24gPT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuXG4gICAgcmV0dXJuIGF3YWl0IEN1YmVTaWduZXJDbGllbnQuY3JlYXRlKHtcbiAgICAgIGVudjogdGhpcy4jZW52LnNwZWMsXG4gICAgICBvcmdfaWQ6IHRoaXMubWZhUmVxdWlyZWQub3JnX2lkLFxuICAgICAgc2Vzc2lvbl9leHA6IHNlc3Npb24uZXhwaXJhdGlvbixcbiAgICAgIHNlc3Npb25faW5mbzogc2Vzc2lvbi5zZXNzaW9uX2luZm8sXG4gICAgICB0b2tlbjogc2Vzc2lvbi50b2tlbixcbiAgICAgIHJlZnJlc2hfdG9rZW46IHNlc3Npb24ucmVmcmVzaF90b2tlbixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyBUaGUgcmVzcG9uc2UgZGF0YSwgaWYgbm8gTUZBIGlzIHJlcXVpcmVkICovXG4gIGRhdGEoKTogVSB7XG4gICAgaWYgKCF0aGlzLmlzU3VjY2VzcygpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiQ2Fubm90IGNhbGwgYGRhdGEoKWAgb24gYSAyMDIgQWNjZXB0ZWQgcmVzcG9uc2U7IHVzZSBgYXNNZmFSZXF1aXJlZCgpYCBvciBgYXNTaWduRHJ5UnVuKClgXCIsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy4jcmVzcCBhcyBVO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcHJvdmUgdGhlIE1GQSByZXF1ZXN0IHVzaW5nIGEgZ2l2ZW4gc2Vzc2lvbiBhbmQgYSBUT1RQIGNvZGUuXG4gICAqXG4gICAqIEBwYXJhbSBjbGllbnQgQ3ViZVNpZ25lciB3aG9zZSBzZXNzaW9uIHRvIHVzZVxuICAgKiBAcGFyYW0gY29kZSA2LWRpZ2l0IFRPVFAgY29kZVxuICAgKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHJlc3VibWl0dGluZyB0aGUgcmVxdWVzdCB3aXRoIHRoZSBhcHByb3ZhbFxuICAgKi9cbiAgYXN5bmMgdG90cEFwcHJvdmUoY2xpZW50OiBDdWJlU2lnbmVyQ2xpZW50LCBjb2RlOiBzdHJpbmcpOiBQcm9taXNlPEN1YmVTaWduZXJSZXNwb25zZTxVPj4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLiNtZmFUb3RwVm90ZShjbGllbnQsIGNvZGUsIFwiYXBwcm92ZVwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWplY3QgdGhlIE1GQSByZXF1ZXN0IHVzaW5nIGEgZ2l2ZW4gc2Vzc2lvbiBhbmQgYSBUT1RQIGNvZGUuXG4gICAqXG4gICAqIEBwYXJhbSBjbGllbnQgQ3ViZVNpZ25lciB3aG9zZSBzZXNzaW9uIHRvIHVzZVxuICAgKiBAcGFyYW0gY29kZSA2LWRpZ2l0IFRPVFAgY29kZVxuICAgKi9cbiAgYXN5bmMgdG90cFJlamVjdChjbGllbnQ6IEN1YmVTaWduZXJDbGllbnQsIGNvZGU6IHN0cmluZykge1xuICAgIGF3YWl0IHRoaXMuI21mYVRvdHBWb3RlKGNsaWVudCwgY29kZSwgXCJyZWplY3RcIik7XG4gIH1cblxuICAvKipcbiAgICogQXBwcm92ZSBvciByZWplY3QgYW4gTUZBIHJlcXVlc3QgdXNpbmcgYSBnaXZlbiBzZXNzaW9uIGFuZCBhIFRPVFAgY29kZS5cbiAgICpcbiAgICogQHBhcmFtIGNsaWVudCBDdWJlU2lnbmVyIHdob3NlIHNlc3Npb24gdG8gdXNlXG4gICAqIEBwYXJhbSBjb2RlIDYtZGlnaXQgVE9UUCBjb2RlXG4gICAqIEBwYXJhbSB2b3RlIEFwcHJvdmUgb3IgcmVqZWN0XG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgcmVzdWJtaXR0aW5nIHRoZSByZXF1ZXN0IHdpdGggdGhlIGFwcHJvdmFsXG4gICAqL1xuICBhc3luYyAjbWZhVG90cFZvdGUoXG4gICAgY2xpZW50OiBDdWJlU2lnbmVyQ2xpZW50LFxuICAgIGNvZGU6IHN0cmluZyxcbiAgICB2b3RlOiBNZmFWb3RlLFxuICApOiBQcm9taXNlPEN1YmVTaWduZXJSZXNwb25zZTxVPj4ge1xuICAgIGNvbnN0IG1mYUlkID0gdGhpcy5tZmFJZCgpO1xuICAgIGlmIChtZmFJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBjb25zdCBtZmFPcmdJZCA9IHRoaXMubWZhUmVxdWlyZWQhLm9yZ19pZDtcbiAgICBjb25zdCBtZmFBcHByb3ZhbCA9IGF3YWl0IGNsaWVudC5hcGlDbGllbnQubWZhVm90ZVRvdHAobWZhSWQsIGNvZGUsIHZvdGUpO1xuICAgIGNvbnN0IG1mYUNvbmYgPSBtZmFBcHByb3ZhbC5yZWNlaXB0Py5jb25maXJtYXRpb247XG5cbiAgICBpZiAoIW1mYUNvbmYpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmV4ZWNXaXRoTWZhQXBwcm92YWwoeyBtZmFJZCwgbWZhT3JnSWQsIG1mYUNvbmYgfSk7XG4gIH1cblxuICAvKipcbiAgICogQXBwcm92ZSB0aGUgTUZBIHJlcXVlc3QgdXNpbmcgYSBnaXZlbiB7QGxpbmsgQ3ViZVNpZ25lckNsaWVudH0gaW5zdGFuY2UgKGkuZS4sIGl0cyBzZXNzaW9uKS5cbiAgICpcbiAgICogQHBhcmFtIGNsaWVudCBDdWJlU2lnbmVyIHdob3NlIHNlc3Npb24gdG8gdXNlXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgcmVzdWJtaXR0aW5nIHRoZSByZXF1ZXN0IHdpdGggdGhlIGFwcHJvdmFsXG4gICAqL1xuICBhc3luYyBhcHByb3ZlKGNsaWVudDogQ3ViZVNpZ25lckNsaWVudCk6IFByb21pc2U8Q3ViZVNpZ25lclJlc3BvbnNlPFU+PiB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuI21mYVZvdGUoY2xpZW50LCBcImFwcHJvdmVcIik7XG4gIH1cblxuICAvKipcbiAgICogUmVqZWN0IHRoZSBNRkEgcmVxdWVzdCB1c2luZyBhIGdpdmVuIHtAbGluayBDdWJlU2lnbmVyQ2xpZW50fSBpbnN0YW5jZSAoaS5lLiwgaXRzIHNlc3Npb24pLlxuICAgKlxuICAgKiBAcGFyYW0gY2xpZW50IEN1YmVTaWduZXIgd2hvc2Ugc2Vzc2lvbiB0byB1c2VcbiAgICovXG4gIGFzeW5jIHJlamVjdChjbGllbnQ6IEN1YmVTaWduZXJDbGllbnQpIHtcbiAgICBhd2FpdCB0aGlzLiNtZmFWb3RlKGNsaWVudCwgXCJyZWplY3RcIik7XG4gIH1cblxuICAvKipcbiAgICogQXBwcm92ZSBvciByZWplY3QgYW4gTUZBIHJlcXVlc3QgdXNpbmcgYSBnaXZlbiB7QGxpbmsgQ3ViZVNpZ25lckNsaWVudH0gaW5zdGFuY2UgKGkuZS4sIGl0cyBzZXNzaW9uKS5cbiAgICpcbiAgICogQHBhcmFtIGNsaWVudCBDdWJlU2lnbmVyIHdob3NlIHNlc3Npb24gdG8gdXNlXG4gICAqIEBwYXJhbSBtZmFWb3RlIEFwcHJvdmUgb3IgcmVqZWN0XG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgcmVzdWJtaXR0aW5nIHRoZSByZXF1ZXN0IHdpdGggdGhlIGFwcHJvdmFsXG4gICAqL1xuICBhc3luYyAjbWZhVm90ZShjbGllbnQ6IEN1YmVTaWduZXJDbGllbnQsIG1mYVZvdGU6IE1mYVZvdGUpOiBQcm9taXNlPEN1YmVTaWduZXJSZXNwb25zZTxVPj4ge1xuICAgIGNvbnN0IG1mYUlkID0gdGhpcy5tZmFJZCgpO1xuICAgIGlmIChtZmFJZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBjb25zdCBtZmFPcmdJZCA9IHRoaXMubWZhUmVxdWlyZWQhLm9yZ19pZDtcblxuICAgIGNvbnN0IG1mYUFwcHJvdmFsID0gYXdhaXQgY2xpZW50LmFwaUNsaWVudC5tZmFWb3RlQ3MobWZhSWQsIG1mYVZvdGUpO1xuICAgIGNvbnN0IG1mYUNvbmYgPSBtZmFBcHByb3ZhbC5yZWNlaXB0Py5jb25maXJtYXRpb247XG5cbiAgICBpZiAoIW1mYUNvbmYpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHJldHVybiBhd2FpdCB0aGlzLmV4ZWNXaXRoTWZhQXBwcm92YWwoeyBtZmFJZCwgbWZhT3JnSWQsIG1mYUNvbmYgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmVzdWJtaXRzIHRoZSByZXF1ZXN0IHdpdGggYSBnaXZlbiBNRkEgcmVjZWlwdChzKSBhdHRhY2hlZC5cbiAgICpcbiAgICogQHBhcmFtIG1mYVJlY2VpcHQgVGhlIE1GQSByZWNlaXB0KHMpXG4gICAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2Ygc2lnbmluZyBhZnRlciBNRkEgYXBwcm92YWxcbiAgICovXG4gIGFzeW5jIGV4ZWNXaXRoTWZhQXBwcm92YWwobWZhUmVjZWlwdDogTWZhUmVjZWlwdHMpOiBQcm9taXNlPEN1YmVTaWduZXJSZXNwb25zZTxVPj4ge1xuICAgIGNvbnN0IGhlYWRlcnMgPSBDdWJlU2lnbmVyUmVzcG9uc2UuZ2V0TWZhSGVhZGVycyhtZmFSZWNlaXB0KTtcbiAgICByZXR1cm4gbmV3IEN1YmVTaWduZXJSZXNwb25zZSh0aGlzLiNlbnYsIHRoaXMuI3JlcXVlc3RGbiwgYXdhaXQgdGhpcy4jcmVxdWVzdEZuKGhlYWRlcnMpKTtcbiAgfVxuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIC0tIElOVEVSTkFMIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdG9yLlxuICAgKlxuICAgKiBAcGFyYW0gZW52IFRoZSBlbnZpcm9ubWVudCB3aGVyZSB0aGUgcmVzcG9uc2UgY29tZXMgZnJvbVxuICAgKiBAcGFyYW0gcmVxdWVzdEZuXG4gICAqICAgIFRoZSBmdW5jdGlvbiB0aGF0IHRoaXMgcmVzcG9uc2UgaXMgZnJvbS5cbiAgICogICAgVGhpcyBhcmd1bWVudCBpcyB1c2VkIHRvIHJlc2VuZCByZXF1ZXN0cyB3aXRoIGRpZmZlcmVudCBoZWFkZXJzIGlmIG5lZWRlZC5cbiAgICogQHBhcmFtIHJlc3AgVGhlIHJlc3BvbnNlIGFzIHJldHVybmVkIGJ5IHRoZSBPcGVuQVBJIGNsaWVudC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoZW52OiBNdWx0aVJlZ2lvbkVudiwgcmVxdWVzdEZuOiBSZXF1ZXN0Rm48VT4sIHJlc3A6IFJlc3BvbnNlPFU+KSB7XG4gICAgdGhpcy4jZW52ID0gZW52O1xuICAgIHRoaXMuI3JlcXVlc3RGbiA9IHJlcXVlc3RGbjtcbiAgICB0aGlzLiNyZXNwID0gcmVzcDtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdGF0aWMgY29uc3RydWN0b3IuXG4gICAqXG4gICAqIEBwYXJhbSBlbnYgVGhlIGVudmlyb25tZW50IHdoZXJlIHRoZSByZXNwb25zZSBjb21lcyBmcm9tXG4gICAqIEBwYXJhbSByZXF1ZXN0Rm5cbiAgICogICAgVGhlIHJlcXVlc3QgZnVuY3Rpb24gdGhhdCB0aGlzIHJlc3BvbnNlIGlzIGZyb20uXG4gICAqICAgIFRoaXMgYXJndW1lbnQgaXMgdXNlZCB0byByZXNlbmQgcmVxdWVzdHMgd2l0aCBkaWZmZXJlbnQgaGVhZGVycyBpZiBuZWVkZWQuXG4gICAqIEBwYXJhbSBtZmFSZWNlaXB0IE9wdGlvbmFsIE1GQSByZWNlaXB0KHMpXG4gICAqIEByZXR1cm5zIE5ldyBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHN0YXRpYyBhc3luYyBjcmVhdGU8VT4oXG4gICAgZW52OiBFbnZJbnRlcmZhY2UgfCBNdWx0aVJlZ2lvbkVudixcbiAgICByZXF1ZXN0Rm46IFJlcXVlc3RGbjxVPixcbiAgICBtZmFSZWNlaXB0PzogTWZhUmVjZWlwdHMsXG4gICk6IFByb21pc2U8Q3ViZVNpZ25lclJlc3BvbnNlPFU+PiB7XG4gICAgY29uc3Qgc2VlZCA9IGF3YWl0IHJlcXVlc3RGbih0aGlzLmdldE1mYUhlYWRlcnMobWZhUmVjZWlwdCkpO1xuICAgIHJldHVybiBuZXcgQ3ViZVNpZ25lclJlc3BvbnNlKE11bHRpUmVnaW9uRW52LmNyZWF0ZShlbnYpLCByZXF1ZXN0Rm4sIHNlZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpbWlsYXIgdG8ge0BsaW5rIGNyZWF0ZX0gZXhjZXB0IHRoYXQgdW53cmFwcyB0aGUge0BsaW5rIEpzb25ScGNSZXNwb25zZX1cbiAgICogdG8gdGhyb3cgYW4ge0BsaW5rIEVyclJlc3BvbnNlfSBvbiBlcnJvclxuICAgKlxuICAgKiBAcGFyYW0gZW52IFRoZSBlbnZpcm9ubWVudCB3aGVyZSB0aGUgcmVzcG9uc2UgY29tZXMgZnJvbVxuICAgKiBAcGFyYW0gcmVxRm5cbiAgICogICAgVGhlIHJlcXVlc3QgZnVuY3Rpb24gdGhhdCB0aGlzIHJlc3BvbnNlIGlzIGZyb20uXG4gICAqICAgIFRoaXMgYXJndW1lbnQgaXMgdXNlZCB0byByZXNlbmQgcmVxdWVzdHMgd2l0aCBkaWZmZXJlbnQgaGVhZGVycyBpZiBuZWVkZWQuXG4gICAqIEBwYXJhbSBtZmFSZWNlaXB0IE9wdGlvbmFsIE1GQSByZWNlaXB0KHMpXG4gICAqIEByZXR1cm5zIE5ldyBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHN0YXRpYyBhc3luYyBjcmVhdGVGb3JKc29uUnBjKFxuICAgIGVudjogRW52SW50ZXJmYWNlIHwgTXVsdGlSZWdpb25FbnYsXG4gICAgcmVxRm46IFJlcXVlc3RGbjxKc29uUnBjUmVzcG9uc2U+LFxuICAgIG1mYVJlY2VpcHQ/OiBNZmFSZWNlaXB0cyxcbiAgKTogUHJvbWlzZTxDdWJlU2lnbmVyUmVzcG9uc2U8SnNvblJwY1Jlc3VsdD4+IHtcbiAgICBjb25zdCByZXF1ZXN0Rm46IFJlcXVlc3RGbjxKc29uUnBjUmVzdWx0PiA9IGFzeW5jIChoZWFkZXJzKSA9PiB7XG4gICAgICBjb25zdCByZXNwID0gYXdhaXQgcmVxRm4oaGVhZGVycyk7XG4gICAgICBpZiAocmVzcC5yZXN1bHQpIHJldHVybiByZXNwLnJlc3VsdDtcbiAgICAgIGNvbnN0IGVyclJlc3AgPSByZXNwLmVycm9yPy5kYXRhIGFzIEVycm9yUmVzcG9uc2UgfCB1bmRlZmluZWQ7XG5cbiAgICAgIC8vIHJldHVybiBBY2NlcHRlZFJlc3BvbnNlIGlmIGFjY2VwdGVkXG4gICAgICBpZiAoZXJyUmVzcD8uYWNjZXB0ZWQpIHtcbiAgICAgICAgcmV0dXJuIGVyclJlc3A7XG4gICAgICB9XG5cbiAgICAgIC8vIG90aGVyd2lzZSBpdCdzIGFuIGVycm9yXG4gICAgICB0aHJvdyBuZXcgRXJyUmVzcG9uc2Uoe1xuICAgICAgICBtZXNzYWdlOiBlcnJSZXNwPy5tZXNzYWdlID8/IHJlc3AuZXJyb3I/Lm1lc3NhZ2UgPz8gXCJKU09OLVJQQyBlcnJvclwiLFxuICAgICAgICBlcnJvckNvZGU6IGVyclJlc3A/LmVycm9yX2NvZGUsXG4gICAgICAgIHJlcXVlc3RJZDogZXJyUmVzcD8ucmVxdWVzdF9pZCxcbiAgICAgIH0pO1xuICAgIH07XG4gICAgY29uc3Qgc2VlZCA9IGF3YWl0IHJlcXVlc3RGbih0aGlzLmdldE1mYUhlYWRlcnMobWZhUmVjZWlwdCkpO1xuICAgIHJldHVybiBuZXcgQ3ViZVNpZ25lclJlc3BvbnNlKE11bHRpUmVnaW9uRW52LmNyZWF0ZShlbnYpLCByZXF1ZXN0Rm4sIHNlZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBIVFRQIGhlYWRlcnMgY29udGFpbmluZyBhIGdpdmVuIE1GQSByZWNlaXB0LlxuICAgKlxuICAgKiBAcGFyYW0gbWZhUmVjZWlwdCBNRkEgcmVjZWlwdChzKVxuICAgKiBAcmV0dXJucyBIZWFkZXJzIGluY2x1ZGluZyB7QGxpbmsgbWZhUmVjZWlwdH1cbiAgICogQGludGVybmFsXG4gICAqL1xuICBzdGF0aWMgZ2V0TWZhSGVhZGVycyhtZmFSZWNlaXB0PzogTWZhUmVjZWlwdHMpOiBIZWFkZXJzSW5pdCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKG1mYVJlY2VpcHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCByZWMgPSBpc01hbnlNZmFSZWNlaXB0cyhtZmFSZWNlaXB0KVxuICAgICAgPyBtZmFSZWNlaXB0XG4gICAgICA6IHtcbiAgICAgICAgICBvcmdJZDogbWZhUmVjZWlwdC5tZmFPcmdJZCxcbiAgICAgICAgICByZWNlaXB0czogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogbWZhUmVjZWlwdC5tZmFJZCxcbiAgICAgICAgICAgICAgY29uZmlybWF0aW9uOiBtZmFSZWNlaXB0Lm1mYUNvbmYsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH07XG5cbiAgICBpZiAocmVjLnJlY2VpcHRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCB0ZXh0RW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuICAgIHJldHVybiB7XG4gICAgICBcIngtY3ViaXN0LW1mYS1vcmctaWRcIjogcmVjLm9yZ0lkLFxuICAgICAgXCJ4LWN1YmlzdC1tZmEtcmVjZWlwdHNcIjogZW5jb2RlVG9CYXNlNjRVcmwodGV4dEVuY29kZXIuZW5jb2RlKEpTT04uc3RyaW5naWZ5KHJlYy5yZWNlaXB0cykpKSxcbiAgICB9O1xuICB9XG59XG4iXX0=
|
package/dist/src/retry.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/retry.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;IAC5B,sGAAsG;IACtG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAOF;;;;;;;;GAQG;AACH,wBAAsB,KAAK,CAAC,CAAC,EAC3B,CAAC,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACnB,EAAE,IAAa,EAAE,MAAwB,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,GAC3D,OAAO,CAAC,CAAC,CAAC,CAUZ;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAAC,CAAC,SAAS;IAAE,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EACzE,CAAC,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACnB,MAAM,CAAC,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,CAAC,CAAC,CAEZ;AAED;;;;;GAKG;AACH,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/retry.ts"],"names":[],"mappings":"AAAA,8DAA8D;AAC9D,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;IAC5B,sGAAsG;IACtG,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACpC,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB,CAAC;AAOF;;;;;;;;GAQG;AACH,wBAAsB,KAAK,CAAC,CAAC,EAC3B,CAAC,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACnB,EAAE,IAAa,EAAE,MAAwB,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,GAC3D,OAAO,CAAC,CAAC,CAAC,CAUZ;AAED;;;;;;GAMG;AACH,wBAAsB,UAAU,CAAC,CAAC,SAAS;IAAE,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,EACzE,CAAC,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACnB,MAAM,CAAC,EAAE,MAAM,EAAE,GAChB,OAAO,CAAC,CAAC,CAAC,CAEZ;AAED;;;;;GAKG;AACH,eAAO,MAAM,YAAY,GACtB,QAAO,MAAM,EAA+C,MACtD,GAAG;IAAE,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,qBACP,CAAC"}
|
package/dist/src/retry.js
CHANGED
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.onErrorCodes = void 0;
|
|
4
|
-
exports.retry = retry;
|
|
5
|
-
exports.retryOn5XX = retryOn5XX;
|
|
6
1
|
// By default we will always retry
|
|
7
2
|
const always = async () => true;
|
|
8
3
|
const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
@@ -15,7 +10,7 @@ const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
|
15
10
|
* @param opts.delays Sequence of millisecond delays to perform, defaulting to 100, 200, 400
|
|
16
11
|
* @returns A resolved async function
|
|
17
12
|
*/
|
|
18
|
-
async function retry(f, { pred = always, delays = [100, 200, 400] }) {
|
|
13
|
+
export async function retry(f, { pred = always, delays = [100, 200, 400] }) {
|
|
19
14
|
let resp = await f();
|
|
20
15
|
let i = 0;
|
|
21
16
|
while ((await pred(resp)) && i < delays.length) {
|
|
@@ -32,8 +27,8 @@ async function retry(f, { pred = always, delays = [100, 200, 400] }) {
|
|
|
32
27
|
* @param delays The sequence of delays (in milliseconds) between retries
|
|
33
28
|
* @returns The result of the function
|
|
34
29
|
*/
|
|
35
|
-
async function retryOn5XX(f, delays) {
|
|
36
|
-
return retry(f, { pred:
|
|
30
|
+
export async function retryOn5XX(f, delays) {
|
|
31
|
+
return retry(f, { pred: onErrorCodes(), delays });
|
|
37
32
|
}
|
|
38
33
|
/**
|
|
39
34
|
* Generates a predicate that matches response status codes
|
|
@@ -41,6 +36,5 @@ async function retryOn5XX(f, delays) {
|
|
|
41
36
|
* @param codes The response codes on which we want to retry
|
|
42
37
|
* @returns To be used as a predicate on retry
|
|
43
38
|
*/
|
|
44
|
-
const onErrorCodes = (codes = [...Array(100).keys()].map((i) => 500 + i)) => async (r) => codes.includes(r.response.status);
|
|
45
|
-
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmV0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBc0JBLHNCQWFDO0FBU0QsZ0NBS0M7QUF6Q0Qsa0NBQWtDO0FBQ2xDLE1BQU0sTUFBTSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDO0FBRWhDLE1BQU0sS0FBSyxHQUFHLENBQUMsRUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRWhGOzs7Ozs7OztHQVFHO0FBQ0ksS0FBSyxVQUFVLEtBQUssQ0FDekIsQ0FBbUIsRUFDbkIsRUFBRSxJQUFJLEdBQUcsTUFBTSxFQUFFLE1BQU0sR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQW1CO0lBRTVELElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUM7SUFDckIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ1YsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMvQyxNQUFNLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN2QixJQUFJLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNqQixDQUFDLEVBQUUsQ0FBQztJQUNOLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRDs7Ozs7O0dBTUc7QUFDSSxLQUFLLFVBQVUsVUFBVSxDQUM5QixDQUFtQixFQUNuQixNQUFpQjtJQUVqQixPQUFPLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBQSxvQkFBWSxHQUFFLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztBQUNwRCxDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSSxNQUFNLFlBQVksR0FDdkIsQ0FBQyxRQUFrQixDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNqRSxLQUFLLEVBQUUsQ0FBbUMsRUFBRSxFQUFFLENBQzVDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUh6QixRQUFBLFlBQVksZ0JBR2EiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogT3B0aW9ucyB0byBjb25maWd1cmUgdGhlIGJlaGF2aW9yIG9mIHRoZSByZXRyeSBmdW5jdGlvbiAqL1xuZXhwb3J0IHR5cGUgUmV0cnlPcHRpb25zPFQ+ID0ge1xuICAvKiogQWNjZXB0cyB0aGUgcmVzdWx0IG9mIHRoZSBmYWxsaWJsZSBvcGVyYXRpb24gYW5kIHJldHVybnMgd2hldGhlciBvciBub3QgdG8gcmV0cnkgKHRydWUgPSByZXRyeSkgKi9cbiAgcHJlZD86ICh2YWw6IFQpID0+IFByb21pc2U8Ym9vbGVhbj47XG4gIC8qKiBBIHNlcXVlbmNlIG9mIG1pbGxpc2Vjb25kIGRlbGF5cyB0byBwZXJmb3JtICovXG4gIGRlbGF5cz86IG51bWJlcltdO1xufTtcblxuLy8gQnkgZGVmYXVsdCB3ZSB3aWxsIGFsd2F5cyByZXRyeVxuY29uc3QgYWx3YXlzID0gYXN5bmMgKCkgPT4gdHJ1ZTtcblxuY29uc3QgZGVsYXkgPSAobXM6IG51bWJlcikgPT4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTtcblxuLyoqXG4gKiBSZXRyeSBhbiBhc3luYyBmdW5jdGlvblxuICpcbiAqIEBwYXJhbSBmIFRoZSBmdW5jdGlvbiB0aGF0IG1heSBvciBtYXkgbm90IGZhaWxcbiAqIEBwYXJhbSBvcHRzIHNwZWNpZnlpbmcgd2hlbiwgaG93IGxvbmcsIGFuZCBob3cgbWFueSB0aW1lcyB0byByZXRyeVxuICogQHBhcmFtIG9wdHMucHJlZCBUYWtlcyByZXN1bHQgb2YgZmFsbGlibGUgb3BlcmF0aW9uIGFuZCByZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRvIHJldHJ5LCBkZWZhdWx0cyB0byBhbHdheXMgcmV0cnlpbmdcbiAqIEBwYXJhbSBvcHRzLmRlbGF5cyBTZXF1ZW5jZSBvZiBtaWxsaXNlY29uZCBkZWxheXMgdG8gcGVyZm9ybSwgZGVmYXVsdGluZyB0byAxMDAsIDIwMCwgNDAwXG4gKiBAcmV0dXJucyBBIHJlc29sdmVkIGFzeW5jIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXRyeTxUPihcbiAgZjogKCkgPT4gUHJvbWlzZTxUPixcbiAgeyBwcmVkID0gYWx3YXlzLCBkZWxheXMgPSBbMTAwLCAyMDAsIDQwMF0gfTogUmV0cnlPcHRpb25zPFQ+LFxuKTogUHJvbWlzZTxUPiB7XG4gIGxldCByZXNwID0gYXdhaXQgZigpO1xuICBsZXQgaSA9IDA7XG4gIHdoaWxlICgoYXdhaXQgcHJlZChyZXNwKSkgJiYgaSA8IGRlbGF5cy5sZW5ndGgpIHtcbiAgICBhd2FpdCBkZWxheShkZWxheXNbaV0pO1xuICAgIHJlc3AgPSBhd2FpdCBmKCk7XG4gICAgaSsrO1xuICB9XG5cbiAgcmV0dXJuIHJlc3A7XG59XG5cbi8qKlxuICogQSBzcGVjaWFsaXphdGlvbiBvZiByZXRyeSB0aGF0IHJldHJpZXMgb24gNVhYIGVycm9yc1xuICpcbiAqIEBwYXJhbSBmIFRoZSBmdW5jdGlvbiB0aGF0IG1heSByZXR1cm4gYSBmYWlsaW5nIHJlc3BvbnNlXG4gKiBAcGFyYW0gZGVsYXlzIFRoZSBzZXF1ZW5jZSBvZiBkZWxheXMgKGluIG1pbGxpc2Vjb25kcykgYmV0d2VlbiByZXRyaWVzXG4gKiBAcmV0dXJucyBUaGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvblxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcmV0cnlPbjVYWDxUIGV4dGVuZHMgeyByZXNwb25zZTogeyBzdGF0dXM6IG51bWJlciB9IH0+KFxuICBmOiAoKSA9PiBQcm9taXNlPFQ+LFxuICBkZWxheXM/OiBudW1iZXJbXSxcbik6IFByb21pc2U8VD4ge1xuICByZXR1cm4gcmV0cnkoZiwgeyBwcmVkOiBvbkVycm9yQ29kZXMoKSwgZGVsYXlzIH0pO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlcyBhIHByZWRpY2F0ZSB0aGF0IG1hdGNoZXMgcmVzcG9uc2Ugc3RhdHVzIGNvZGVzXG4gKlxuICogQHBhcmFtIGNvZGVzIFRoZSByZXNwb25zZSBjb2RlcyBvbiB3aGljaCB3ZSB3YW50IHRvIHJldHJ5XG4gKiBAcmV0dXJucyBUbyBiZSB1c2VkIGFzIGEgcHJlZGljYXRlIG9uIHJldHJ5XG4gKi9cbmV4cG9ydCBjb25zdCBvbkVycm9yQ29kZXMgPVxuICAoY29kZXM6IG51bWJlcltdID0gWy4uLkFycmF5KDEwMCkua2V5cygpXS5tYXAoKGkpID0+IDUwMCArIGkpKSA9PlxuICBhc3luYyAocjogeyByZXNwb25zZTogeyBzdGF0dXM6IG51bWJlciB9IH0pID0+XG4gICAgY29kZXMuaW5jbHVkZXMoci5yZXNwb25zZS5zdGF0dXMpO1xuIl19
|
|
39
|
+
export const onErrorCodes = (codes = [...Array(100).keys()].map((i) => 500 + i)) => async (r) => codes.includes(r.response.status);
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV0cnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcmV0cnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsa0NBQWtDO0FBQ2xDLE1BQU0sTUFBTSxHQUFHLEtBQUssSUFBSSxFQUFFLENBQUMsSUFBSSxDQUFDO0FBRWhDLE1BQU0sS0FBSyxHQUFHLENBQUMsRUFBVSxFQUFFLEVBQUUsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBRWhGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxLQUFLLENBQ3pCLENBQW1CLEVBQ25CLEVBQUUsSUFBSSxHQUFHLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFtQjtJQUU1RCxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsRUFBRSxDQUFDO0lBQ3JCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNWLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDL0MsTUFBTSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkIsSUFBSSxHQUFHLE1BQU0sQ0FBQyxFQUFFLENBQUM7UUFDakIsQ0FBQyxFQUFFLENBQUM7SUFDTixDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxDQUFDLEtBQUssVUFBVSxVQUFVLENBQzlCLENBQW1CLEVBQ25CLE1BQWlCO0lBRWpCLE9BQU8sS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ3BELENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FDdkIsQ0FBQyxRQUFrQixDQUFDLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUNqRSxLQUFLLEVBQUUsQ0FBbUMsRUFBRSxFQUFFLENBQzVDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBPcHRpb25zIHRvIGNvbmZpZ3VyZSB0aGUgYmVoYXZpb3Igb2YgdGhlIHJldHJ5IGZ1bmN0aW9uICovXG5leHBvcnQgdHlwZSBSZXRyeU9wdGlvbnM8VD4gPSB7XG4gIC8qKiBBY2NlcHRzIHRoZSByZXN1bHQgb2YgdGhlIGZhbGxpYmxlIG9wZXJhdGlvbiBhbmQgcmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0byByZXRyeSAodHJ1ZSA9IHJldHJ5KSAqL1xuICBwcmVkPzogKHZhbDogVCkgPT4gUHJvbWlzZTxib29sZWFuPjtcbiAgLyoqIEEgc2VxdWVuY2Ugb2YgbWlsbGlzZWNvbmQgZGVsYXlzIHRvIHBlcmZvcm0gKi9cbiAgZGVsYXlzPzogbnVtYmVyW107XG59O1xuXG4vLyBCeSBkZWZhdWx0IHdlIHdpbGwgYWx3YXlzIHJldHJ5XG5jb25zdCBhbHdheXMgPSBhc3luYyAoKSA9PiB0cnVlO1xuXG5jb25zdCBkZWxheSA9IChtczogbnVtYmVyKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xuXG4vKipcbiAqIFJldHJ5IGFuIGFzeW5jIGZ1bmN0aW9uXG4gKlxuICogQHBhcmFtIGYgVGhlIGZ1bmN0aW9uIHRoYXQgbWF5IG9yIG1heSBub3QgZmFpbFxuICogQHBhcmFtIG9wdHMgc3BlY2lmeWluZyB3aGVuLCBob3cgbG9uZywgYW5kIGhvdyBtYW55IHRpbWVzIHRvIHJldHJ5XG4gKiBAcGFyYW0gb3B0cy5wcmVkIFRha2VzIHJlc3VsdCBvZiBmYWxsaWJsZSBvcGVyYXRpb24gYW5kIHJldHVybnMgd2hldGhlciBvciBub3QgdG8gcmV0cnksIGRlZmF1bHRzIHRvIGFsd2F5cyByZXRyeWluZ1xuICogQHBhcmFtIG9wdHMuZGVsYXlzIFNlcXVlbmNlIG9mIG1pbGxpc2Vjb25kIGRlbGF5cyB0byBwZXJmb3JtLCBkZWZhdWx0aW5nIHRvIDEwMCwgMjAwLCA0MDBcbiAqIEByZXR1cm5zIEEgcmVzb2x2ZWQgYXN5bmMgZnVuY3Rpb25cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHJldHJ5PFQ+KFxuICBmOiAoKSA9PiBQcm9taXNlPFQ+LFxuICB7IHByZWQgPSBhbHdheXMsIGRlbGF5cyA9IFsxMDAsIDIwMCwgNDAwXSB9OiBSZXRyeU9wdGlvbnM8VD4sXG4pOiBQcm9taXNlPFQ+IHtcbiAgbGV0IHJlc3AgPSBhd2FpdCBmKCk7XG4gIGxldCBpID0gMDtcbiAgd2hpbGUgKChhd2FpdCBwcmVkKHJlc3ApKSAmJiBpIDwgZGVsYXlzLmxlbmd0aCkge1xuICAgIGF3YWl0IGRlbGF5KGRlbGF5c1tpXSk7XG4gICAgcmVzcCA9IGF3YWl0IGYoKTtcbiAgICBpKys7XG4gIH1cblxuICByZXR1cm4gcmVzcDtcbn1cblxuLyoqXG4gKiBBIHNwZWNpYWxpemF0aW9uIG9mIHJldHJ5IHRoYXQgcmV0cmllcyBvbiA1WFggZXJyb3JzXG4gKlxuICogQHBhcmFtIGYgVGhlIGZ1bmN0aW9uIHRoYXQgbWF5IHJldHVybiBhIGZhaWxpbmcgcmVzcG9uc2VcbiAqIEBwYXJhbSBkZWxheXMgVGhlIHNlcXVlbmNlIG9mIGRlbGF5cyAoaW4gbWlsbGlzZWNvbmRzKSBiZXR3ZWVuIHJldHJpZXNcbiAqIEByZXR1cm5zIFRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiByZXRyeU9uNVhYPFQgZXh0ZW5kcyB7IHJlc3BvbnNlOiB7IHN0YXR1czogbnVtYmVyIH0gfT4oXG4gIGY6ICgpID0+IFByb21pc2U8VD4sXG4gIGRlbGF5cz86IG51bWJlcltdLFxuKTogUHJvbWlzZTxUPiB7XG4gIHJldHVybiByZXRyeShmLCB7IHByZWQ6IG9uRXJyb3JDb2RlcygpLCBkZWxheXMgfSk7XG59XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgcHJlZGljYXRlIHRoYXQgbWF0Y2hlcyByZXNwb25zZSBzdGF0dXMgY29kZXNcbiAqXG4gKiBAcGFyYW0gY29kZXMgVGhlIHJlc3BvbnNlIGNvZGVzIG9uIHdoaWNoIHdlIHdhbnQgdG8gcmV0cnlcbiAqIEByZXR1cm5zIFRvIGJlIHVzZWQgYXMgYSBwcmVkaWNhdGUgb24gcmV0cnlcbiAqL1xuZXhwb3J0IGNvbnN0IG9uRXJyb3JDb2RlcyA9XG4gIChjb2RlczogbnVtYmVyW10gPSBbLi4uQXJyYXkoMTAwKS5rZXlzKCldLm1hcCgoaSkgPT4gNTAwICsgaSkpID0+XG4gIGFzeW5jIChyOiB7IHJlc3BvbnNlOiB7IHN0YXR1czogbnVtYmVyIH0gfSkgPT5cbiAgICBjb2Rlcy5pbmNsdWRlcyhyLnJlc3BvbnNlLnN0YXR1cyk7XG4iXX0=
|
package/dist/src/role.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { ApiClient, ContractAddress, EvmTxCmp, SolanaTxCmp, KeyWithPoliciesInfo, PageOpts, RoleInfo, Scope, SessionData, SessionLifetime, BabylonStakingRequest, OperationKind, MfaReceipts, CubeSignerResponse, Empty, RestrictedActionsMap, GetRoleKeyOptions, EditPolicy, MfaPolicy, RoleInfoJwt } from ".";
|
|
2
|
-
import { Key, SignerSessionInfo } from ".";
|
|
3
|
-
import type { RoleAttestationQuery } from "./schema_types";
|
|
1
|
+
import type { ApiClient, ContractAddress, EvmTxCmp, SolanaTxCmp, KeyWithPoliciesInfo, PageOpts, RoleInfo, Scope, SessionData, SessionLifetime, BabylonStakingRequest, OperationKind, MfaReceipts, CubeSignerResponse, Empty, RestrictedActionsMap, GetRoleKeyOptions, EditPolicy, MfaPolicy, RoleInfoJwt } from "./index.ts";
|
|
2
|
+
import { Key, SignerSessionInfo } from "./index.ts";
|
|
3
|
+
import type { RoleAttestationQuery } from "./schema_types.ts";
|
|
4
4
|
type NameOrAddressOrNull = string | null;
|
|
5
5
|
/** Only allow the following operations */
|
|
6
6
|
export type OperationAllowlist = {
|
package/dist/src/role.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"role.d.ts","sourceRoot":"","sources":["../../src/role.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,eAAe,EACf,QAAQ,EACR,WAAW,EACX,mBAAmB,EACnB,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,WAAW,EACX,eAAe,EAEf,qBAAqB,EACrB,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,KAAK,EACL,oBAAoB,EACpB,iBAAiB,EACjB,UAAU,EACV,SAAS,EACT,WAAW,EACZ,MAAM,
|
|
1
|
+
{"version":3,"file":"role.d.ts","sourceRoot":"","sources":["../../src/role.ts"],"names":[],"mappings":"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"}
|