@thunderid/javascript 1.19.1 → 1.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api/management/user-types/getUserType.d.ts +8 -0
- package/dist/api/management/user-types/getUserType.d.ts.map +1 -1
- package/dist/api/management/users/sendUserAttributeVerification.d.ts +59 -0
- package/dist/api/management/users/sendUserAttributeVerification.d.ts.map +1 -0
- package/dist/cjs/index.cjs +212 -31
- package/dist/constants/AdministrationConstants.d.ts +3 -1
- package/dist/constants/AdministrationConstants.d.ts.map +1 -1
- package/dist/constants/AttributeVerificationConstants.d.ts +5 -2
- package/dist/constants/AttributeVerificationConstants.d.ts.map +1 -1
- package/dist/edge/index.js +209 -32
- package/dist/i18n/models/i18n.d.ts +7 -0
- package/dist/i18n/models/i18n.d.ts.map +1 -1
- package/dist/i18n/translations/en-US.d.ts.map +1 -1
- package/dist/i18n/translations/fr-FR.d.ts.map +1 -1
- package/dist/i18n/translations/hi-IN.d.ts.map +1 -1
- package/dist/i18n/translations/ja-JP.d.ts.map +1 -1
- package/dist/i18n/translations/pt-BR.d.ts.map +1 -1
- package/dist/i18n/translations/pt-PT.d.ts.map +1 -1
- package/dist/i18n/translations/si-LK.d.ts.map +1 -1
- package/dist/i18n/translations/ta-IN.d.ts.map +1 -1
- package/dist/i18n/translations/te-IN.d.ts.map +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +209 -32
- package/dist/models/embedded-flow.d.ts +1 -0
- package/dist/models/embedded-flow.d.ts.map +1 -1
- package/dist/models/managed-user.d.ts +6 -0
- package/dist/models/managed-user.d.ts.map +1 -1
- package/dist/utils/isAdminVerifiableAttribute.d.ts +22 -0
- package/dist/utils/isAdminVerifiableAttribute.d.ts.map +1 -0
- package/package.json +1 -1
|
@@ -10,5 +10,13 @@ export interface GetUserTypeConfig extends ManagementRequestConfig {
|
|
|
10
10
|
* Fetches a user type with its attribute schema.
|
|
11
11
|
*/
|
|
12
12
|
declare const getUserType: ({ userTypeId, ...config }: GetUserTypeConfig) => Promise<ManagedUserTypeDetails>;
|
|
13
|
+
/**
|
|
14
|
+
* Looks up the schema for the type handle reported by the users API.
|
|
15
|
+
*
|
|
16
|
+
* @internal Shared by the SDK packages. It is not part of the public API and can change in any release.
|
|
17
|
+
*/
|
|
18
|
+
export declare const getUserTypeByHandle: (config: ManagementRequestConfig & {
|
|
19
|
+
handle: string;
|
|
20
|
+
}) => Promise<ManagedUserTypeDetails | undefined>;
|
|
13
21
|
export default getUserType;
|
|
14
22
|
//# sourceMappingURL=getUserType.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getUserType.d.ts","sourceRoot":"","sources":["../../../../src/api/management/user-types/getUserType.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,uBAAuB,EAAC,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAC,sBAAsB,EAAC,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"getUserType.d.ts","sourceRoot":"","sources":["../../../../src/api/management/user-types/getUserType.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,uBAAuB,EAAC,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAC,sBAAsB,EAAC,MAAM,6BAA6B,CAAC;AAKnE,MAAM,WAAW,iBAAkB,SAAQ,uBAAuB;IAChE;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,QAAA,MAAM,WAAW,GAAU,2BAAyB,iBAAiB,KAAG,OAAO,CAAC,sBAAsB,CAQlG,CAAC;AAEL;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAC9B,QAAQ,uBAAuB,GAAG;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,KACjD,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAa5C,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { ManagementRequestConfig } from '../../../models/api';
|
|
2
|
+
/**
|
|
3
|
+
* Configuration for the sendUserAttributeVerification request.
|
|
4
|
+
*/
|
|
5
|
+
export interface SendUserAttributeVerificationConfig extends ManagementRequestConfig {
|
|
6
|
+
/**
|
|
7
|
+
* The attribute to verify, such as `email`.
|
|
8
|
+
*/
|
|
9
|
+
attribute: string;
|
|
10
|
+
/**
|
|
11
|
+
* Handle of the administrator-initiated verification flow to run. When omitted, the handle the server
|
|
12
|
+
* names under `adminAttributeVerificationFlow` in its `flow` configuration is used.
|
|
13
|
+
*/
|
|
14
|
+
handle?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Identifier of the user.
|
|
17
|
+
*/
|
|
18
|
+
userId: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* What the flow reports once it has sent the verification link. It never returns the link or the address.
|
|
22
|
+
*/
|
|
23
|
+
export interface SendUserAttributeVerificationResult {
|
|
24
|
+
/**
|
|
25
|
+
* The channel the link went out on, such as `email`.
|
|
26
|
+
*/
|
|
27
|
+
channel: string;
|
|
28
|
+
/**
|
|
29
|
+
* Whether the flow's email step sent the link. `false` means the flow ran but no email went out, so check it
|
|
30
|
+
* before telling the administrator the link was sent. Absent when the flow does not report it.
|
|
31
|
+
*/
|
|
32
|
+
emailSent?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* The masked address the link was sent to, such as `j***@example.com`.
|
|
35
|
+
*/
|
|
36
|
+
maskedDestination?: string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Sends a user a link to verify one of their attributes, through the server's administrator-initiated
|
|
40
|
+
* verification flow. The flow pauses once the link is sent; the user finishes it from the link, without
|
|
41
|
+
* the administrator. A refused step raises {@link AdministrationFlowError} with the step's code, such as
|
|
42
|
+
* `FET-1114` for a suspended user. Without a `handle`, the flow is the one the server's
|
|
43
|
+
* `adminAttributeVerificationFlow` setting names; when that is unset the call fails with
|
|
44
|
+
* `sendUserAttributeVerification-NotConfiguredError-001`. A flow whose email step sends nothing still
|
|
45
|
+
* resolves, with `emailSent: false`, as the account lifecycle actions do, so callers must check `emailSent`.
|
|
46
|
+
*
|
|
47
|
+
* @param config - Request configuration. Requires `baseUrl` and a token with the root `system` permission.
|
|
48
|
+
* @returns The channel, masked destination and delivery flag reported by the flow.
|
|
49
|
+
* @throws {ThunderIDAPIError} If required input is missing or the request fails.
|
|
50
|
+
* @throws {AdministrationFlowError} If no flow is configured, the flow refuses the start or it does not return the delivery step.
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* ```typescript
|
|
54
|
+
* const {emailSent, maskedDestination} = await sendUserAttributeVerification({baseUrl, attribute: 'email', userId});
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
declare const sendUserAttributeVerification: ({ attribute, handle, userId, ...config }: SendUserAttributeVerificationConfig) => Promise<SendUserAttributeVerificationResult>;
|
|
58
|
+
export default sendUserAttributeVerification;
|
|
59
|
+
//# sourceMappingURL=sendUserAttributeVerification.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sendUserAttributeVerification.d.ts","sourceRoot":"","sources":["../../../../src/api/management/users/sendUserAttributeVerification.ts"],"names":[],"mappings":"AAQA,OAAO,EAAC,uBAAuB,EAAC,MAAM,qBAAqB,CAAC;AAM5D;;GAEG;AACH,MAAM,WAAW,mCAAoC,SAAQ,uBAAuB;IAClF;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,mCAAmC;IAClD;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAID;;;;;;;;;;;;;;;;;;GAkBG;AACH,QAAA,MAAM,6BAA6B,GAAU,0CAK1C,mCAAmC,KAAG,OAAO,CAAC,mCAAmC,CAyEnF,CAAC;AAEF,eAAe,6BAA6B,CAAC"}
|
package/dist/cjs/index.cjs
CHANGED
|
@@ -886,6 +886,7 @@ var executeEmbeddedSignInFlow_default = executeEmbeddedSignInFlow;
|
|
|
886
886
|
//#endregion
|
|
887
887
|
//#region src/models/embedded-flow.ts
|
|
888
888
|
let EmbeddedFlowType = /* @__PURE__ */ function(EmbeddedFlowType$1) {
|
|
889
|
+
EmbeddedFlowType$1["AdminInitiated"] = "ADMIN_INITIATED";
|
|
889
890
|
EmbeddedFlowType$1["Authentication"] = "AUTHENTICATION";
|
|
890
891
|
EmbeddedFlowType$1["DeviceGrant"] = "DEVICE_GRANT";
|
|
891
892
|
EmbeddedFlowType$1["Recovery"] = "RECOVERY";
|
|
@@ -2234,10 +2235,12 @@ const AdministrationModes = {
|
|
|
2234
2235
|
};
|
|
2235
2236
|
/**
|
|
2236
2237
|
* Keys of the `flow` server-config section that name the administration flow for each operation. An
|
|
2237
|
-
* unset key is the opt-out: the operation calls the management API directly.
|
|
2238
|
+
* unset key is the opt-out: the operation calls the management API directly. `adminAttributeVerificationFlow`
|
|
2239
|
+
* names an administrator-initiated flow, started by its handle, and has no such fallback.
|
|
2238
2240
|
*/
|
|
2239
2241
|
const AdministrationFlowConfigKey = {
|
|
2240
2242
|
ACTION_DELETION: "actionDeletionFlow",
|
|
2243
|
+
ADMIN_ATTRIBUTE_VERIFICATION: "adminAttributeVerificationFlow",
|
|
2241
2244
|
AGENT_SUSPEND: "agentSuspendFlow",
|
|
2242
2245
|
AGENT_UNLOCK: "agentUnlockFlow",
|
|
2243
2246
|
AGENT_UNSUSPEND: "agentUnsuspendFlow",
|
|
@@ -3540,6 +3543,21 @@ const updateUserCredentials = async ({ payload, userId,...config }) => {
|
|
|
3540
3543
|
};
|
|
3541
3544
|
var updateUserCredentials_default = updateUserCredentials;
|
|
3542
3545
|
|
|
3546
|
+
//#endregion
|
|
3547
|
+
//#region src/utils/computeNextPageOffset.ts
|
|
3548
|
+
/**
|
|
3549
|
+
* Offset of the next page: the request offset plus the number of items the backend returned, or
|
|
3550
|
+
* `null` once the list is exhausted.
|
|
3551
|
+
*
|
|
3552
|
+
* @internal Shared by the SDK packages. It is not part of the public API and can change in any release.
|
|
3553
|
+
*/
|
|
3554
|
+
const computeNextPageOffset = (offset, count, totalResults) => {
|
|
3555
|
+
if (!Number.isInteger(offset) || offset < 0 || !Number.isInteger(count) || count <= 0) return null;
|
|
3556
|
+
const next = offset + count;
|
|
3557
|
+
return totalResults !== void 0 && next >= totalResults ? null : next;
|
|
3558
|
+
};
|
|
3559
|
+
var computeNextPageOffset_default = computeNextPageOffset;
|
|
3560
|
+
|
|
3543
3561
|
//#endregion
|
|
3544
3562
|
//#region src/api/management/user-types/getUserType.ts
|
|
3545
3563
|
/**
|
|
@@ -3553,6 +3571,28 @@ const getUserType = async ({ userTypeId,...config }) => requestManagementResourc
|
|
|
3553
3571
|
operation: "getUserType",
|
|
3554
3572
|
query: { include: "display" }
|
|
3555
3573
|
});
|
|
3574
|
+
/**
|
|
3575
|
+
* Looks up the schema for the type handle reported by the users API.
|
|
3576
|
+
*
|
|
3577
|
+
* @internal Shared by the SDK packages. It is not part of the public API and can change in any release.
|
|
3578
|
+
*/
|
|
3579
|
+
const getUserTypeByHandle = async (config) => {
|
|
3580
|
+
const { handle,...endpoint } = config;
|
|
3581
|
+
let offset = 0;
|
|
3582
|
+
while (offset !== null) {
|
|
3583
|
+
const page = await getUserTypes_default({
|
|
3584
|
+
...endpoint,
|
|
3585
|
+
limit: 100,
|
|
3586
|
+
offset
|
|
3587
|
+
});
|
|
3588
|
+
const type = page.types.find((candidate) => candidate.handle === handle);
|
|
3589
|
+
if (type) return getUserType({
|
|
3590
|
+
...endpoint,
|
|
3591
|
+
userTypeId: type.id
|
|
3592
|
+
});
|
|
3593
|
+
offset = computeNextPageOffset_default(offset, page.count, page.totalResults);
|
|
3594
|
+
}
|
|
3595
|
+
};
|
|
3556
3596
|
var getUserType_default = getUserType;
|
|
3557
3597
|
|
|
3558
3598
|
//#endregion
|
|
@@ -8216,6 +8256,85 @@ const unlockUser = async ({ userId, operatorNote,...config }) => runAccountLifec
|
|
|
8216
8256
|
});
|
|
8217
8257
|
var unlockUser_default = unlockUser;
|
|
8218
8258
|
|
|
8259
|
+
//#endregion
|
|
8260
|
+
//#region src/constants/AttributeVerificationConstants.ts
|
|
8261
|
+
/**
|
|
8262
|
+
* Wire names and eligibility rules for user attribute verification, by the user or by an administrator.
|
|
8263
|
+
*/
|
|
8264
|
+
const AttributeVerificationConstants = {
|
|
8265
|
+
ADMIN_VERIFIABLE_ATTRIBUTES: ["email"],
|
|
8266
|
+
ATTRIBUTE_INPUT: "attribute",
|
|
8267
|
+
CHANNEL_KEY: "channel",
|
|
8268
|
+
DEFAULT_FLOW_HANDLE: "default-self-attribute-verification-flow",
|
|
8269
|
+
EMAIL_SENT_KEY: "emailSent",
|
|
8270
|
+
MASKED_DESTINATION_KEY: "maskedDestination",
|
|
8271
|
+
SUBJECT_INPUT: "subject",
|
|
8272
|
+
VERIFIABLE_ATTRIBUTE_TYPES: ["email", "mobile"],
|
|
8273
|
+
VERIFIED_ATTRIBUTES_KEY: "verifiedAttributes"
|
|
8274
|
+
};
|
|
8275
|
+
var AttributeVerificationConstants_default = AttributeVerificationConstants;
|
|
8276
|
+
|
|
8277
|
+
//#endregion
|
|
8278
|
+
//#region src/api/management/users/sendUserAttributeVerification.ts
|
|
8279
|
+
const OPERATION = "sendUserAttributeVerification";
|
|
8280
|
+
/**
|
|
8281
|
+
* Sends a user a link to verify one of their attributes, through the server's administrator-initiated
|
|
8282
|
+
* verification flow. The flow pauses once the link is sent; the user finishes it from the link, without
|
|
8283
|
+
* the administrator. A refused step raises {@link AdministrationFlowError} with the step's code, such as
|
|
8284
|
+
* `FET-1114` for a suspended user. Without a `handle`, the flow is the one the server's
|
|
8285
|
+
* `adminAttributeVerificationFlow` setting names; when that is unset the call fails with
|
|
8286
|
+
* `sendUserAttributeVerification-NotConfiguredError-001`. A flow whose email step sends nothing still
|
|
8287
|
+
* resolves, with `emailSent: false`, as the account lifecycle actions do, so callers must check `emailSent`.
|
|
8288
|
+
*
|
|
8289
|
+
* @param config - Request configuration. Requires `baseUrl` and a token with the root `system` permission.
|
|
8290
|
+
* @returns The channel, masked destination and delivery flag reported by the flow.
|
|
8291
|
+
* @throws {ThunderIDAPIError} If required input is missing or the request fails.
|
|
8292
|
+
* @throws {AdministrationFlowError} If no flow is configured, the flow refuses the start or it does not return the delivery step.
|
|
8293
|
+
*
|
|
8294
|
+
* @example
|
|
8295
|
+
* ```typescript
|
|
8296
|
+
* const {emailSent, maskedDestination} = await sendUserAttributeVerification({baseUrl, attribute: 'email', userId});
|
|
8297
|
+
* ```
|
|
8298
|
+
*/
|
|
8299
|
+
const sendUserAttributeVerification = async ({ attribute, handle, userId,...config }) => {
|
|
8300
|
+
if (typeof userId !== "string" || userId.trim() === "" || typeof attribute !== "string" || !attribute.trim()) throw new ThunderIDAPIError("A user identifier and an attribute are required.", `${OPERATION}-ValidationError-002`, "javascript", 400, "The provided user identifier or attribute is empty.");
|
|
8301
|
+
const flowHandle = handle ?? (await resolveAdministrationFlowHandles_default(config, [AdministrationFlowConfigKey.ADMIN_ATTRIBUTE_VERIFICATION]))[AdministrationFlowConfigKey.ADMIN_ATTRIBUTE_VERIFICATION];
|
|
8302
|
+
if (!flowHandle) throw new AdministrationFlowError(`No administrator verification flow is configured, so no link was sent. Configure a flow for "${AdministrationFlowConfigKey.ADMIN_ATTRIBUTE_VERIFICATION}" in the server's flow configuration.`, `${OPERATION}-NotConfiguredError-001`);
|
|
8303
|
+
const result = await requestManagementResource_default(toServerConfig_default(config, OPERATION), {
|
|
8304
|
+
body: {
|
|
8305
|
+
flowType: EmbeddedFlowType.AdminInitiated,
|
|
8306
|
+
handle: flowHandle,
|
|
8307
|
+
inputs: {
|
|
8308
|
+
[AttributeVerificationConstants_default.ATTRIBUTE_INPUT]: attribute,
|
|
8309
|
+
[AttributeVerificationConstants_default.SUBJECT_INPUT]: userId
|
|
8310
|
+
},
|
|
8311
|
+
verbose: true
|
|
8312
|
+
},
|
|
8313
|
+
collection: "flow",
|
|
8314
|
+
failureMessage: "Failed to send the verification link",
|
|
8315
|
+
id: "execute",
|
|
8316
|
+
method: "POST",
|
|
8317
|
+
operation: OPERATION
|
|
8318
|
+
});
|
|
8319
|
+
const data = result?.data?.additionalData ?? {};
|
|
8320
|
+
const channel = data[AttributeVerificationConstants_default.CHANNEL_KEY];
|
|
8321
|
+
if (result?.flowStatus === "INCOMPLETE" && channel) {
|
|
8322
|
+
const emailSent = data[AttributeVerificationConstants_default.EMAIL_SENT_KEY];
|
|
8323
|
+
const maskedDestination = data[AttributeVerificationConstants_default.MASKED_DESTINATION_KEY];
|
|
8324
|
+
return {
|
|
8325
|
+
channel,
|
|
8326
|
+
...emailSent !== void 0 ? { emailSent: emailSent === "true" } : {},
|
|
8327
|
+
...maskedDestination ? { maskedDestination } : {}
|
|
8328
|
+
};
|
|
8329
|
+
}
|
|
8330
|
+
if (result?.flowStatus === "ERROR") {
|
|
8331
|
+
const flowError = result.error ?? {};
|
|
8332
|
+
throw new AdministrationFlowError(flowError.message?.defaultValue ?? flowError.description?.defaultValue ?? "The verification link was not sent.", flowError.code ?? `${OPERATION}-FlowError-001`, flowError);
|
|
8333
|
+
}
|
|
8334
|
+
throw new AdministrationFlowError("The verification flow did not report a sent link.", `${OPERATION}-UnexpectedStateError-001`);
|
|
8335
|
+
};
|
|
8336
|
+
var sendUserAttributeVerification_default = sendUserAttributeVerification;
|
|
8337
|
+
|
|
8219
8338
|
//#endregion
|
|
8220
8339
|
//#region src/api/management/agents/suspendAgent.ts
|
|
8221
8340
|
/**
|
|
@@ -8828,21 +8947,6 @@ const SelectConstants = {
|
|
|
8828
8947
|
};
|
|
8829
8948
|
var SelectConstants_default = SelectConstants;
|
|
8830
8949
|
|
|
8831
|
-
//#endregion
|
|
8832
|
-
//#region src/constants/AttributeVerificationConstants.ts
|
|
8833
|
-
/**
|
|
8834
|
-
* Wire names and eligibility rules for self user attribute verification.
|
|
8835
|
-
*/
|
|
8836
|
-
const AttributeVerificationConstants = {
|
|
8837
|
-
ATTRIBUTE_INPUT: "attribute",
|
|
8838
|
-
DEFAULT_FLOW_HANDLE: "default-self-attribute-verification-flow",
|
|
8839
|
-
MASKED_DESTINATION_KEY: "maskedDestination",
|
|
8840
|
-
VERIFIABLE_ATTRIBUTE_TYPES: ["email", "mobile"],
|
|
8841
|
-
VERIFIED_ATTRIBUTES_KEY: "verifiedAttributes",
|
|
8842
|
-
VERIFY_AFTER_SAVE_ATTRIBUTE_TYPES: ["email"]
|
|
8843
|
-
};
|
|
8844
|
-
var AttributeVerificationConstants_default = AttributeVerificationConstants;
|
|
8845
|
-
|
|
8846
8950
|
//#endregion
|
|
8847
8951
|
//#region src/errors/ThunderIDRuntimeError.ts
|
|
8848
8952
|
/**
|
|
@@ -12713,6 +12817,38 @@ const getVerifiedAttributes = (user) => {
|
|
|
12713
12817
|
};
|
|
12714
12818
|
var getVerifiedAttributes_default = getVerifiedAttributes;
|
|
12715
12819
|
|
|
12820
|
+
//#endregion
|
|
12821
|
+
//#region src/utils/isAdminVerifiableAttribute.ts
|
|
12822
|
+
const hasReportedStatus = (user, attribute) => {
|
|
12823
|
+
const value = user?.attributes?.[attribute];
|
|
12824
|
+
const verified = user?.verifiedAttributes;
|
|
12825
|
+
return typeof value === "string" && value.trim() !== "" && !!verified && typeof verified === "object" && !Array.isArray(verified);
|
|
12826
|
+
};
|
|
12827
|
+
const getContactType = (schema, attribute) => {
|
|
12828
|
+
if (!Object.prototype.hasOwnProperty.call(schema, attribute)) return;
|
|
12829
|
+
const field = schema[attribute];
|
|
12830
|
+
return (field?.type === "email" || field?.type === "mobile") && !field.credential ? field.type : void 0;
|
|
12831
|
+
};
|
|
12832
|
+
/**
|
|
12833
|
+
* Whether the administrator view knows the verification status of a stored contact.
|
|
12834
|
+
* A recorded verification remains visible when the schema cannot be read.
|
|
12835
|
+
*
|
|
12836
|
+
* @internal Shared by the SDK packages. It is not part of the public API and can change in any release.
|
|
12837
|
+
*/
|
|
12838
|
+
const hasAdminVerificationStatus = (user, attribute, schema) => hasReportedStatus(user, attribute) && (Object.prototype.hasOwnProperty.call(user?.verifiedAttributes, attribute) || (schema ? getContactType(schema, attribute) !== void 0 : AttributeVerificationConstants_default.ADMIN_VERIFIABLE_ATTRIBUTES.includes(attribute)));
|
|
12839
|
+
/**
|
|
12840
|
+
* Whether the stored attribute can be verified through the shipped administrator email flow.
|
|
12841
|
+
* With a schema, the property must be a top-level email. Without one, the base view recognizes
|
|
12842
|
+
* the default email field for applications that supply their own send callback.
|
|
12843
|
+
*
|
|
12844
|
+
* @param user - The user, as read from `GET /users/{id}`.
|
|
12845
|
+
* @param attribute - The concrete attribute name, such as `workEmail`.
|
|
12846
|
+
* @param schema - The user's type schema.
|
|
12847
|
+
* @returns Whether the administrator email flow supports the attribute.
|
|
12848
|
+
*/
|
|
12849
|
+
const isAdminVerifiableAttribute = (user, attribute, schema) => hasReportedStatus(user, attribute) && (schema ? getContactType(schema, attribute) === "email" : AttributeVerificationConstants_default.ADMIN_VERIFIABLE_ATTRIBUTES.includes(attribute));
|
|
12850
|
+
var isAdminVerifiableAttribute_default = isAdminVerifiableAttribute;
|
|
12851
|
+
|
|
12716
12852
|
//#endregion
|
|
12717
12853
|
//#region src/utils/isVerifiableAttribute.ts
|
|
12718
12854
|
/**
|
|
@@ -13207,21 +13343,6 @@ const resolveRequestBaseUrl = (config) => {
|
|
|
13207
13343
|
};
|
|
13208
13344
|
var resolveRequestBaseUrl_default = resolveRequestBaseUrl;
|
|
13209
13345
|
|
|
13210
|
-
//#endregion
|
|
13211
|
-
//#region src/utils/computeNextPageOffset.ts
|
|
13212
|
-
/**
|
|
13213
|
-
* Offset of the next page: the request offset plus the number of items the backend returned, or
|
|
13214
|
-
* `null` once the list is exhausted.
|
|
13215
|
-
*
|
|
13216
|
-
* @internal Shared by the SDK packages. It is not part of the public API and can change in any release.
|
|
13217
|
-
*/
|
|
13218
|
-
const computeNextPageOffset = (offset, count, totalResults) => {
|
|
13219
|
-
if (!Number.isInteger(offset) || offset < 0 || !Number.isInteger(count) || count <= 0) return null;
|
|
13220
|
-
const next = offset + count;
|
|
13221
|
-
return totalResults !== void 0 && next >= totalResults ? null : next;
|
|
13222
|
-
};
|
|
13223
|
-
var computeNextPageOffset_default = computeNextPageOffset;
|
|
13224
|
-
|
|
13225
13346
|
//#endregion
|
|
13226
13347
|
//#region src/utils/isAdvancingPageOffset.ts
|
|
13227
13348
|
/**
|
|
@@ -13863,6 +13984,13 @@ const en_US = {
|
|
|
13863
13984
|
"admin.users.details.edit.action": "Edit",
|
|
13864
13985
|
"admin.users.details.edit.save": "Save changes",
|
|
13865
13986
|
"admin.users.details.edit.error": "Could not save the user. Please try again.",
|
|
13987
|
+
"admin.users.details.verification.status.verified": "Verified",
|
|
13988
|
+
"admin.users.details.verification.status.unverified": "Unverified",
|
|
13989
|
+
"admin.users.details.verification.verify": "Verify",
|
|
13990
|
+
"admin.users.details.verification.sent": "Verification link sent to {destination}.",
|
|
13991
|
+
"admin.users.details.verification.sent_generic": "Verification link sent.",
|
|
13992
|
+
"admin.users.details.verification.error": "Could not send the verification link. Please try again.",
|
|
13993
|
+
"admin.users.details.verification.load_error": "The verification settings could not be loaded.",
|
|
13866
13994
|
"admin.groups.list.title": "Groups",
|
|
13867
13995
|
"admin.groups.list.columns.name": "Name",
|
|
13868
13996
|
"admin.groups.list.columns.description": "Description",
|
|
@@ -14415,6 +14543,13 @@ const fr_FR = {
|
|
|
14415
14543
|
"admin.users.details.edit.action": "Modifier",
|
|
14416
14544
|
"admin.users.details.edit.save": "Enregistrer les modifications",
|
|
14417
14545
|
"admin.users.details.edit.error": "Impossible d'enregistrer l'utilisateur. Veuillez réessayer.",
|
|
14546
|
+
"admin.users.details.verification.status.verified": "Vérifié",
|
|
14547
|
+
"admin.users.details.verification.status.unverified": "Non vérifié",
|
|
14548
|
+
"admin.users.details.verification.verify": "Vérifier",
|
|
14549
|
+
"admin.users.details.verification.sent": "Lien de vérification envoyé à {destination}.",
|
|
14550
|
+
"admin.users.details.verification.sent_generic": "Lien de vérification envoyé.",
|
|
14551
|
+
"admin.users.details.verification.error": "Impossible d'envoyer le lien de vérification. Veuillez réessayer.",
|
|
14552
|
+
"admin.users.details.verification.load_error": "Les paramètres de vérification n'ont pas pu être chargés.",
|
|
14418
14553
|
"admin.groups.list.title": "Groupes",
|
|
14419
14554
|
"admin.groups.list.columns.name": "Nom",
|
|
14420
14555
|
"admin.groups.list.columns.description": "Description",
|
|
@@ -14967,6 +15102,13 @@ const te_IN = {
|
|
|
14967
15102
|
"admin.users.details.edit.action": "సవరించు",
|
|
14968
15103
|
"admin.users.details.edit.save": "మార్పులను సేవ్ చేయి",
|
|
14969
15104
|
"admin.users.details.edit.error": "వినియోగదారుని సేవ్ చేయలేకపోయాము. దయచేసి మళ్లీ ప్రయత్నించండి.",
|
|
15105
|
+
"admin.users.details.verification.status.verified": "ధృవీకరించబడింది",
|
|
15106
|
+
"admin.users.details.verification.status.unverified": "ధృవీకరించబడలేదు",
|
|
15107
|
+
"admin.users.details.verification.verify": "ధృవీకరించండి",
|
|
15108
|
+
"admin.users.details.verification.sent": "ధృవీకరణ లింక్ {destination}కి పంపబడింది.",
|
|
15109
|
+
"admin.users.details.verification.sent_generic": "ధృవీకరణ లింక్ పంపబడింది.",
|
|
15110
|
+
"admin.users.details.verification.error": "ధృవీకరణ లింక్ను పంపలేకపోయాము. దయచేసి మళ్లీ ప్రయత్నించండి.",
|
|
15111
|
+
"admin.users.details.verification.load_error": "ధృవీకరణ సెట్టింగ్లను లోడ్ చేయలేకపోయాము.",
|
|
14970
15112
|
"admin.groups.list.title": "సమూహాలు",
|
|
14971
15113
|
"admin.groups.list.columns.name": "పేరు",
|
|
14972
15114
|
"admin.groups.list.columns.description": "వివరణ",
|
|
@@ -15519,6 +15661,13 @@ const hi_IN = {
|
|
|
15519
15661
|
"admin.users.details.edit.action": "संपादित करें",
|
|
15520
15662
|
"admin.users.details.edit.save": "परिवर्तन सहेजें",
|
|
15521
15663
|
"admin.users.details.edit.error": "उपयोगकर्ता को सहेजा नहीं जा सका। कृपया फिर से प्रयास करें।",
|
|
15664
|
+
"admin.users.details.verification.status.verified": "सत्यापित",
|
|
15665
|
+
"admin.users.details.verification.status.unverified": "सत्यापित नहीं",
|
|
15666
|
+
"admin.users.details.verification.verify": "सत्यापित करें",
|
|
15667
|
+
"admin.users.details.verification.sent": "सत्यापन लिंक {destination} पर भेजा गया।",
|
|
15668
|
+
"admin.users.details.verification.sent_generic": "सत्यापन लिंक भेजा गया।",
|
|
15669
|
+
"admin.users.details.verification.error": "सत्यापन लिंक नहीं भेजा जा सका। कृपया फिर से प्रयास करें।",
|
|
15670
|
+
"admin.users.details.verification.load_error": "सत्यापन सेटिंग्स लोड नहीं हो सकीं।",
|
|
15522
15671
|
"admin.groups.list.title": "समूह",
|
|
15523
15672
|
"admin.groups.list.columns.name": "नाम",
|
|
15524
15673
|
"admin.groups.list.columns.description": "विवरण",
|
|
@@ -16071,6 +16220,13 @@ const pt_BR = {
|
|
|
16071
16220
|
"admin.users.details.edit.action": "Editar",
|
|
16072
16221
|
"admin.users.details.edit.save": "Salvar alterações",
|
|
16073
16222
|
"admin.users.details.edit.error": "Não foi possível salvar o usuário. Tente novamente.",
|
|
16223
|
+
"admin.users.details.verification.status.verified": "Verificado",
|
|
16224
|
+
"admin.users.details.verification.status.unverified": "Não verificado",
|
|
16225
|
+
"admin.users.details.verification.verify": "Verificar",
|
|
16226
|
+
"admin.users.details.verification.sent": "Link de verificação enviado para {destination}.",
|
|
16227
|
+
"admin.users.details.verification.sent_generic": "Link de verificação enviado.",
|
|
16228
|
+
"admin.users.details.verification.error": "Não foi possível enviar o link de verificação. Tente novamente.",
|
|
16229
|
+
"admin.users.details.verification.load_error": "Não foi possível carregar as configurações de verificação.",
|
|
16074
16230
|
"admin.groups.list.title": "Grupos",
|
|
16075
16231
|
"admin.groups.list.columns.name": "Nome",
|
|
16076
16232
|
"admin.groups.list.columns.description": "Descrição",
|
|
@@ -16623,6 +16779,13 @@ const pt_PT = {
|
|
|
16623
16779
|
"admin.users.details.edit.action": "Editar",
|
|
16624
16780
|
"admin.users.details.edit.save": "Guardar alterações",
|
|
16625
16781
|
"admin.users.details.edit.error": "Não foi possível guardar o utilizador. Tente novamente.",
|
|
16782
|
+
"admin.users.details.verification.status.verified": "Verificado",
|
|
16783
|
+
"admin.users.details.verification.status.unverified": "Não verificado",
|
|
16784
|
+
"admin.users.details.verification.verify": "Verificar",
|
|
16785
|
+
"admin.users.details.verification.sent": "Ligação de verificação enviada para {destination}.",
|
|
16786
|
+
"admin.users.details.verification.sent_generic": "Ligação de verificação enviada.",
|
|
16787
|
+
"admin.users.details.verification.error": "Não foi possível enviar a ligação de verificação. Tente novamente.",
|
|
16788
|
+
"admin.users.details.verification.load_error": "Não foi possível carregar as definições de verificação.",
|
|
16626
16789
|
"admin.groups.list.title": "Grupos",
|
|
16627
16790
|
"admin.groups.list.columns.name": "Nome",
|
|
16628
16791
|
"admin.groups.list.columns.description": "Descrição",
|
|
@@ -17175,6 +17338,13 @@ const ta_IN = {
|
|
|
17175
17338
|
"admin.users.details.edit.action": "திருத்து",
|
|
17176
17339
|
"admin.users.details.edit.save": "மாற்றங்களைச் சேமி",
|
|
17177
17340
|
"admin.users.details.edit.error": "பயனரைச் சேமிக்க முடியவில்லை. மீண்டும் முயற்சிக்கவும்.",
|
|
17341
|
+
"admin.users.details.verification.status.verified": "சரிபார்க்கப்பட்டது",
|
|
17342
|
+
"admin.users.details.verification.status.unverified": "சரிபார்க்கப்படவில்லை",
|
|
17343
|
+
"admin.users.details.verification.verify": "சரிபார்",
|
|
17344
|
+
"admin.users.details.verification.sent": "சரிபார்ப்பு இணைப்பு {destination} க்கு அனுப்பப்பட்டது.",
|
|
17345
|
+
"admin.users.details.verification.sent_generic": "சரிபார்ப்பு இணைப்பு அனுப்பப்பட்டது.",
|
|
17346
|
+
"admin.users.details.verification.error": "சரிபார்ப்பு இணைப்பை அனுப்ப முடியவில்லை. மீண்டும் முயற்சிக்கவும்.",
|
|
17347
|
+
"admin.users.details.verification.load_error": "சரிபார்ப்பு அமைப்புகளை ஏற்ற முடியவில்லை.",
|
|
17178
17348
|
"admin.groups.list.title": "குழுக்கள்",
|
|
17179
17349
|
"admin.groups.list.columns.name": "பெயர்",
|
|
17180
17350
|
"admin.groups.list.columns.description": "விளக்கம்",
|
|
@@ -17727,6 +17897,13 @@ const si_LK = {
|
|
|
17727
17897
|
"admin.users.details.edit.action": "සංස්කරණය",
|
|
17728
17898
|
"admin.users.details.edit.save": "වෙනස්කම් සුරකින්න",
|
|
17729
17899
|
"admin.users.details.edit.error": "පරිශීලකයා සුරැකිය නොහැකි විය. නැවත උත්සාහ කරන්න.",
|
|
17900
|
+
"admin.users.details.verification.status.verified": "සත්යාපනය කර ඇත",
|
|
17901
|
+
"admin.users.details.verification.status.unverified": "සත්යාපනය කර නැත",
|
|
17902
|
+
"admin.users.details.verification.verify": "සත්යාපනය කරන්න",
|
|
17903
|
+
"admin.users.details.verification.sent": "සත්යාපන සබැඳිය {destination} වෙත යවන ලදී.",
|
|
17904
|
+
"admin.users.details.verification.sent_generic": "සත්යාපන සබැඳිය යවන ලදී.",
|
|
17905
|
+
"admin.users.details.verification.error": "සත්යාපන සබැඳිය යැවිය නොහැකි විය. නැවත උත්සාහ කරන්න.",
|
|
17906
|
+
"admin.users.details.verification.load_error": "සත්යාපන සැකසුම් පූරණය කළ නොහැකි විය.",
|
|
17730
17907
|
"admin.groups.list.title": "කණ්ඩායම්",
|
|
17731
17908
|
"admin.groups.list.columns.name": "නම",
|
|
17732
17909
|
"admin.groups.list.columns.description": "විස්තරය",
|
|
@@ -19383,6 +19560,7 @@ exports.getUserOverlayRules = getUserOverlayRules_default;
|
|
|
19383
19560
|
exports.getUserSharingPolicies = getUserSharingPolicies_default;
|
|
19384
19561
|
exports.getUserSharingPolicy = getUserSharingPolicy_default;
|
|
19385
19562
|
exports.getUserType = getUserType_default;
|
|
19563
|
+
exports.getUserTypeByHandle = getUserTypeByHandle;
|
|
19386
19564
|
exports.getUserTypes = getUserTypes_default;
|
|
19387
19565
|
exports.getUserUsages = getUserUsages_default;
|
|
19388
19566
|
exports.getUsers = getUsers_default;
|
|
@@ -19393,10 +19571,12 @@ exports.getVariable = getVariable_default;
|
|
|
19393
19571
|
exports.getVariables = getVariables_default;
|
|
19394
19572
|
exports.getVendorPrefix = getVendorPrefix_default;
|
|
19395
19573
|
exports.getVerifiedAttributes = getVerifiedAttributes_default;
|
|
19574
|
+
exports.hasAdminVerificationStatus = hasAdminVerificationStatus;
|
|
19396
19575
|
exports.hasPermission = hasPermission_default;
|
|
19397
19576
|
exports.hasUnresolvedTranslationParams = hasUnresolvedTranslationParams;
|
|
19398
19577
|
exports.importConfiguration = importConfiguration_default;
|
|
19399
19578
|
exports.info = info;
|
|
19579
|
+
exports.isAdminVerifiableAttribute = isAdminVerifiableAttribute_default;
|
|
19400
19580
|
exports.isAdvancingPageOffset = isAdvancingPageOffset_default;
|
|
19401
19581
|
exports.isApplicationSubmissionValid = isApplicationSubmissionValid_default;
|
|
19402
19582
|
exports.isEmojiUri = isEmojiUri_default;
|
|
@@ -19454,6 +19634,7 @@ exports.restoreFlowVersion = restoreFlowVersion_default;
|
|
|
19454
19634
|
exports.revertGatewayConfiguration = revertGatewayConfiguration_default;
|
|
19455
19635
|
exports.runAccountLifecycleAction = runAccountLifecycleAction_default;
|
|
19456
19636
|
exports.runAdministrationFlow = runAdministrationFlow_default;
|
|
19637
|
+
exports.sendUserAttributeVerification = sendUserAttributeVerification_default;
|
|
19457
19638
|
exports.set = set_default;
|
|
19458
19639
|
exports.setTranslation = setTranslation_default;
|
|
19459
19640
|
exports.setTranslations = setTranslations_default;
|
|
@@ -12,10 +12,12 @@ declare const AdministrationModes: {
|
|
|
12
12
|
};
|
|
13
13
|
/**
|
|
14
14
|
* Keys of the `flow` server-config section that name the administration flow for each operation. An
|
|
15
|
-
* unset key is the opt-out: the operation calls the management API directly.
|
|
15
|
+
* unset key is the opt-out: the operation calls the management API directly. `adminAttributeVerificationFlow`
|
|
16
|
+
* names an administrator-initiated flow, started by its handle, and has no such fallback.
|
|
16
17
|
*/
|
|
17
18
|
export declare const AdministrationFlowConfigKey: {
|
|
18
19
|
ACTION_DELETION: 'actionDeletionFlow';
|
|
20
|
+
ADMIN_ATTRIBUTE_VERIFICATION: 'adminAttributeVerificationFlow';
|
|
19
21
|
AGENT_SUSPEND: 'agentSuspendFlow';
|
|
20
22
|
AGENT_UNLOCK: 'agentUnlockFlow';
|
|
21
23
|
AGENT_UNSUSPEND: 'agentUnsuspendFlow';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdministrationConstants.d.ts","sourceRoot":"","sources":["../../src/constants/AdministrationConstants.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,QAAA,MAAM,mBAAmB,EAAE;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,CAAC;CAIlB,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"AdministrationConstants.d.ts","sourceRoot":"","sources":["../../src/constants/AdministrationConstants.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,QAAA,MAAM,mBAAmB,EAAE;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,CAAC;CAIlB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,EAAE;IACxC,eAAe,EAAE,oBAAoB,CAAC;IACtC,4BAA4B,EAAE,gCAAgC,CAAC;IAC/D,aAAa,EAAE,kBAAkB,CAAC;IAClC,YAAY,EAAE,iBAAiB,CAAC;IAChC,eAAe,EAAE,oBAAoB,CAAC;IACtC,oBAAoB,EAAE,yBAAyB,CAAC;IAChD,mBAAmB,EAAE,wBAAwB,CAAC;IAC9C,qBAAqB,EAAE,0BAA0B,CAAC;IAClD,cAAc,EAAE,mBAAmB,CAAC;IACpC,wBAAwB,EAAE,4BAA4B,CAAC;IACvD,uBAAuB,EAAE,2BAA2B,CAAC;IACrD,aAAa,EAAE,kBAAkB,CAAC;IAClC,uBAAuB,EAAE,2BAA2B,CAAC;IACrD,mBAAmB,EAAE,wBAAwB,CAAC;IAC9C,aAAa,EAAE,kBAAkB,CAAC;IAClC,YAAY,EAAE,iBAAiB,CAAC;IAChC,WAAW,EAAE,gBAAgB,CAAC;IAC9B,cAAc,EAAE,mBAAmB,CAAC;CAoBrC,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,6BAA6B,EAAE;IAC1C,KAAK,EAAE;QAAC,OAAO,EAAE,kBAAkB,CAAC;QAAC,MAAM,EAAE,iBAAiB,CAAC;QAAC,SAAS,EAAE,oBAAoB,CAAA;KAAC,CAAC;IACjG,WAAW,EAAE;QAAC,OAAO,EAAE,wBAAwB,CAAC;QAAC,SAAS,EAAE,0BAA0B,CAAA;KAAC,CAAC;IACxF,IAAI,EAAE;QAAC,OAAO,EAAE,iBAAiB,CAAC;QAAC,MAAM,EAAE,gBAAgB,CAAC;QAAC,SAAS,EAAE,mBAAmB,CAAA;KAAC,CAAC;CAgB9F,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,EAAE;IACpC,MAAM,EAAE,gBAAgB,CAAC;IACzB,WAAW,EAAE,qBAAqB,CAAC;IACnC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,KAAK,EAAE,eAAe,CAAC;IACvB,MAAM,EAAE,gBAAgB,CAAC;IACzB,aAAa,EAAE,cAAc,CAAC;IAC9B,WAAW,EAAE,mBAAmB,CAAC;IACjC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,eAAe,EAAE,wBAAwB,CAAC;IAC1C,IAAI,EAAE,cAAc,CAAC;IACrB,OAAO,EAAE,SAAS,CAAC;CAapB,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,sBAAsB,EAAE;IACnC,aAAa,EAAE,cAAc,CAAC;IAC9B,UAAU,EAAE,WAAW,CAAC;CAIzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,wBAAwB,mBAAmB,CAAC;AAEzD,eAAe,mBAAmB,CAAC"}
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Wire names and eligibility rules for
|
|
2
|
+
* Wire names and eligibility rules for user attribute verification, by the user or by an administrator.
|
|
3
3
|
*/
|
|
4
4
|
declare const AttributeVerificationConstants: {
|
|
5
|
+
ADMIN_VERIFIABLE_ATTRIBUTES: readonly string[];
|
|
5
6
|
ATTRIBUTE_INPUT: string;
|
|
7
|
+
CHANNEL_KEY: string;
|
|
6
8
|
DEFAULT_FLOW_HANDLE: string;
|
|
9
|
+
EMAIL_SENT_KEY: string;
|
|
7
10
|
MASKED_DESTINATION_KEY: string;
|
|
11
|
+
SUBJECT_INPUT: string;
|
|
8
12
|
VERIFIABLE_ATTRIBUTE_TYPES: readonly string[];
|
|
9
13
|
VERIFIED_ATTRIBUTES_KEY: string;
|
|
10
|
-
VERIFY_AFTER_SAVE_ATTRIBUTE_TYPES: readonly string[];
|
|
11
14
|
};
|
|
12
15
|
export default AttributeVerificationConstants;
|
|
13
16
|
//# sourceMappingURL=AttributeVerificationConstants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AttributeVerificationConstants.d.ts","sourceRoot":"","sources":["../../src/constants/AttributeVerificationConstants.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,QAAA,MAAM,8BAA8B,EAAE;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,
|
|
1
|
+
{"version":3,"file":"AttributeVerificationConstants.d.ts","sourceRoot":"","sources":["../../src/constants/AttributeVerificationConstants.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,QAAA,MAAM,8BAA8B,EAAE;IACpC,2BAA2B,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,0BAA0B,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9C,uBAAuB,EAAE,MAAM,CAAC;CAsCjC,CAAC;AAEF,eAAe,8BAA8B,CAAC"}
|