@lifeready/core 9.0.8 → 10.0.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/fesm2022/lifeready-core.mjs +10522 -0
- package/fesm2022/lifeready-core.mjs.map +1 -0
- package/package.json +21 -16
- package/types/lifeready-core.d.ts +5329 -0
- package/bundles/lifeready-core.umd.js +0 -13231
- package/bundles/lifeready-core.umd.js.map +0 -1
- package/bundles/lifeready-core.umd.min.js +0 -2
- package/bundles/lifeready-core.umd.min.js.map +0 -1
- package/esm2015/lib/_common/ast.js +0 -41
- package/esm2015/lib/_common/deferred-promise.js +0 -24
- package/esm2015/lib/_common/exceptions.js +0 -186
- package/esm2015/lib/_common/index.js +0 -3
- package/esm2015/lib/_common/kc-lodash.js +0 -11
- package/esm2015/lib/_common/key.js +0 -28
- package/esm2015/lib/_common/queries.gql.js +0 -43
- package/esm2015/lib/_common/run-outside-angular.js +0 -80
- package/esm2015/lib/_common/storage.js +0 -28
- package/esm2015/lib/_common/types.js +0 -2
- package/esm2015/lib/_common/utils.js +0 -73
- package/esm2015/lib/api/lr-apollo.service.js +0 -47
- package/esm2015/lib/api/lr-graphql/index.js +0 -6
- package/esm2015/lib/api/lr-graphql/lr-graphql.service.js +0 -170
- package/esm2015/lib/api/lr-graphql/lr-merged-mutation.js +0 -216
- package/esm2015/lib/api/lr-graphql/lr-mutation-base.js +0 -51
- package/esm2015/lib/api/lr-graphql/lr-mutation.js +0 -91
- package/esm2015/lib/api/lr-graphql/lr.service.js +0 -18
- package/esm2015/lib/api/query-processor/common-processors.service.js +0 -94
- package/esm2015/lib/api/query-processor/index.js +0 -3
- package/esm2015/lib/api/query-processor/query-processor.service.js +0 -307
- package/esm2015/lib/api/query-processor/tp-password-reset-processor.service.js +0 -110
- package/esm2015/lib/api/types/graphql.types.js +0 -8
- package/esm2015/lib/api/types/index.js +0 -3
- package/esm2015/lib/api/types/lr-graphql.types.js +0 -182
- package/esm2015/lib/auth/auth.config.js +0 -57
- package/esm2015/lib/auth/auth.gql.private.js +0 -85
- package/esm2015/lib/auth/auth.service.js +0 -616
- package/esm2015/lib/auth/auth.types.js +0 -19
- package/esm2015/lib/contact-card/contact-card.gql.js +0 -79
- package/esm2015/lib/contact-card/contact-card.service.js +0 -156
- package/esm2015/lib/contact-card/contact-card2.gql.js +0 -29
- package/esm2015/lib/contact-card/contact-card2.service.js +0 -103
- package/esm2015/lib/encryption/encryption.service.js +0 -188
- package/esm2015/lib/file-upload/file-upload.service.js +0 -70
- package/esm2015/lib/file-upload/file-upload.types.js +0 -2
- package/esm2015/lib/idle/idle.service.js +0 -159
- package/esm2015/lib/idle/idle.types.js +0 -7
- package/esm2015/lib/item/item.gql.js +0 -166
- package/esm2015/lib/item/item.gql.private.js +0 -41
- package/esm2015/lib/item/item.service.js +0 -662
- package/esm2015/lib/item/item.types.js +0 -2
- package/esm2015/lib/key/key-factory.service.js +0 -226
- package/esm2015/lib/key/key-graph.service.js +0 -314
- package/esm2015/lib/key/key-meta.service.js +0 -153
- package/esm2015/lib/key/key.service.js +0 -124
- package/esm2015/lib/key/key.types.js +0 -16
- package/esm2015/lib/key-exchange/key-exchange.gql.js +0 -174
- package/esm2015/lib/key-exchange/key-exchange.service.js +0 -496
- package/esm2015/lib/lbop/lbop.service.js +0 -351
- package/esm2015/lib/life-ready.config.js +0 -96
- package/esm2015/lib/life-ready.module.js +0 -42
- package/esm2015/lib/lock/lock.gql.js +0 -40
- package/esm2015/lib/lock/lock.service.js +0 -64
- package/esm2015/lib/notification/notification.gql.js +0 -43
- package/esm2015/lib/notification/notification.service.js +0 -118
- package/esm2015/lib/password/password.gql.js +0 -28
- package/esm2015/lib/password/password.service.js +0 -309
- package/esm2015/lib/persist/persist.service.js +0 -181
- package/esm2015/lib/plan/plan.gql.js +0 -91
- package/esm2015/lib/plan/plan.service.js +0 -191
- package/esm2015/lib/plan/plan.types.js +0 -2
- package/esm2015/lib/profile/profile-details.service.js +0 -261
- package/esm2015/lib/profile/profile.gql.js +0 -170
- package/esm2015/lib/profile/profile.service.js +0 -166
- package/esm2015/lib/profile/profile.types.js +0 -45
- package/esm2015/lib/register/register.service.js +0 -173
- package/esm2015/lib/register/register.types.js +0 -3
- package/esm2015/lib/reminder/reminder.gql.js +0 -27
- package/esm2015/lib/reminder/reminder.service.js +0 -85
- package/esm2015/lib/reminder/reminder.types.js +0 -2
- package/esm2015/lib/scenario/scenario.constants.js +0 -2
- package/esm2015/lib/scenario/scenario.controller.js +0 -34
- package/esm2015/lib/scenario/scenario.gql.js +0 -90
- package/esm2015/lib/scenario/scenario.private.gql.js +0 -200
- package/esm2015/lib/scenario/scenario.service.js +0 -679
- package/esm2015/lib/scenario/scenario.types.js +0 -2
- package/esm2015/lib/server-config/server-config.gql.js +0 -9
- package/esm2015/lib/server-config/server-config.service.js +0 -41
- package/esm2015/lib/shared-contact-card/shared-contact-card.service.js +0 -119
- package/esm2015/lib/shared-contact-card/shared-contact-card2.gql.js +0 -41
- package/esm2015/lib/shared-contact-card/shared-contact-card2.service.js +0 -117
- package/esm2015/lib/slip39/slip39.service.js +0 -167
- package/esm2015/lib/time/time.service.js +0 -152
- package/esm2015/lib/tp-assembly/tp-assembly.js +0 -363
- package/esm2015/lib/tp-assembly/tp-assembly.private.gql.js +0 -22
- package/esm2015/lib/tp-assembly/tp-assembly.types.js +0 -2
- package/esm2015/lib/tp-password-reset/tp-password-reset-request.service.js +0 -98
- package/esm2015/lib/tp-password-reset/tp-password-reset-user.service.js +0 -121
- package/esm2015/lib/tp-password-reset/tp-password-reset.constants.js +0 -4
- package/esm2015/lib/tp-password-reset/tp-password-reset.controller.js +0 -34
- package/esm2015/lib/tp-password-reset/tp-password-reset.gql.js +0 -74
- package/esm2015/lib/tp-password-reset/tp-password-reset.private.gql.js +0 -166
- package/esm2015/lib/tp-password-reset/tp-password-reset.private.service.js +0 -54
- package/esm2015/lib/tp-password-reset/tp-password-reset.service.js +0 -110
- package/esm2015/lib/tp-password-reset/tp-password-reset.types.js +0 -2
- package/esm2015/lib/trusted-party/trusted-party.gql.js +0 -96
- package/esm2015/lib/trusted-party/trusted-party.gql.private.js +0 -51
- package/esm2015/lib/trusted-party/trusted-party.service.js +0 -461
- package/esm2015/lib/trusted-party/trusted-party.types.js +0 -2
- package/esm2015/lib/two-factor/two-factor.service.js +0 -74
- package/esm2015/lib/user/user.gql.js +0 -32
- package/esm2015/lib/user/user.service.js +0 -58
- package/esm2015/lib/user/user.types.js +0 -2
- package/esm2015/lib/web-crypto/web-crypto.service.js +0 -29
- package/esm2015/lifeready-core.js +0 -17
- package/esm2015/public-api.js +0 -60
- package/fesm2015/lifeready-core.js +0 -10970
- package/fesm2015/lifeready-core.js.map +0 -1
- package/lib/_common/ast.d.ts +0 -11
- package/lib/_common/deferred-promise.d.ts +0 -12
- package/lib/_common/exceptions.d.ts +0 -126
- package/lib/_common/index.d.ts +0 -2
- package/lib/_common/kc-lodash.d.ts +0 -5
- package/lib/_common/key.d.ts +0 -14
- package/lib/_common/queries.gql.d.ts +0 -4
- package/lib/_common/run-outside-angular.d.ts +0 -14
- package/lib/_common/storage.d.ts +0 -13
- package/lib/_common/types.d.ts +0 -15
- package/lib/_common/utils.d.ts +0 -12
- package/lib/api/lr-apollo.service.d.ts +0 -15
- package/lib/api/lr-graphql/index.d.ts +0 -5
- package/lib/api/lr-graphql/lr-graphql.service.d.ts +0 -81
- package/lib/api/lr-graphql/lr-merged-mutation.d.ts +0 -46
- package/lib/api/lr-graphql/lr-mutation-base.d.ts +0 -28
- package/lib/api/lr-graphql/lr-mutation.d.ts +0 -48
- package/lib/api/lr-graphql/lr.service.d.ts +0 -9
- package/lib/api/query-processor/common-processors.service.d.ts +0 -36
- package/lib/api/query-processor/index.d.ts +0 -2
- package/lib/api/query-processor/query-processor.service.d.ts +0 -18
- package/lib/api/query-processor/tp-password-reset-processor.service.d.ts +0 -15
- package/lib/api/types/graphql.types.d.ts +0 -30
- package/lib/api/types/index.d.ts +0 -2
- package/lib/api/types/lr-graphql.types.d.ts +0 -807
- package/lib/auth/auth.config.d.ts +0 -5
- package/lib/auth/auth.gql.private.d.ts +0 -25
- package/lib/auth/auth.service.d.ts +0 -72
- package/lib/auth/auth.types.d.ts +0 -70
- package/lib/contact-card/contact-card.gql.d.ts +0 -7
- package/lib/contact-card/contact-card.service.d.ts +0 -53
- package/lib/contact-card/contact-card2.gql.d.ts +0 -25
- package/lib/contact-card/contact-card2.service.d.ts +0 -64
- package/lib/encryption/encryption.service.d.ts +0 -42
- package/lib/file-upload/file-upload.service.d.ts +0 -15
- package/lib/file-upload/file-upload.types.d.ts +0 -5
- package/lib/idle/idle.service.d.ts +0 -47
- package/lib/idle/idle.types.d.ts +0 -10
- package/lib/item/item.gql.d.ts +0 -134
- package/lib/item/item.gql.private.d.ts +0 -35
- package/lib/item/item.service.d.ts +0 -201
- package/lib/item/item.types.d.ts +0 -95
- package/lib/key/key-factory.service.d.ts +0 -40
- package/lib/key/key-graph.service.d.ts +0 -41
- package/lib/key/key-meta.service.d.ts +0 -51
- package/lib/key/key.service.d.ts +0 -36
- package/lib/key/key.types.d.ts +0 -86
- package/lib/key-exchange/key-exchange.gql.d.ts +0 -141
- package/lib/key-exchange/key-exchange.service.d.ts +0 -179
- package/lib/lbop/lbop.service.d.ts +0 -99
- package/lib/life-ready.config.d.ts +0 -26
- package/lib/life-ready.module.d.ts +0 -5
- package/lib/lock/lock.gql.d.ts +0 -27
- package/lib/lock/lock.service.d.ts +0 -34
- package/lib/notification/notification.gql.d.ts +0 -37
- package/lib/notification/notification.service.d.ts +0 -64
- package/lib/password/password.gql.d.ts +0 -3
- package/lib/password/password.service.d.ts +0 -79
- package/lib/persist/persist.service.d.ts +0 -31
- package/lib/plan/plan.gql.d.ts +0 -69
- package/lib/plan/plan.service.d.ts +0 -111
- package/lib/plan/plan.types.d.ts +0 -16
- package/lib/profile/profile-details.service.d.ts +0 -20
- package/lib/profile/profile.gql.d.ts +0 -21
- package/lib/profile/profile.service.d.ts +0 -32
- package/lib/profile/profile.types.d.ts +0 -121
- package/lib/register/register.service.d.ts +0 -25
- package/lib/register/register.types.d.ts +0 -6
- package/lib/reminder/reminder.gql.d.ts +0 -23
- package/lib/reminder/reminder.service.d.ts +0 -33
- package/lib/reminder/reminder.types.d.ts +0 -17
- package/lib/scenario/scenario.constants.d.ts +0 -1
- package/lib/scenario/scenario.controller.d.ts +0 -10
- package/lib/scenario/scenario.gql.d.ts +0 -78
- package/lib/scenario/scenario.private.gql.d.ts +0 -16
- package/lib/scenario/scenario.service.d.ts +0 -655
- package/lib/scenario/scenario.types.d.ts +0 -64
- package/lib/server-config/server-config.gql.d.ts +0 -5
- package/lib/server-config/server-config.service.d.ts +0 -9
- package/lib/shared-contact-card/shared-contact-card.service.d.ts +0 -33
- package/lib/shared-contact-card/shared-contact-card2.gql.d.ts +0 -36
- package/lib/shared-contact-card/shared-contact-card2.service.d.ts +0 -45
- package/lib/slip39/slip39.service.d.ts +0 -42
- package/lib/time/time.service.d.ts +0 -26
- package/lib/tp-assembly/tp-assembly.d.ts +0 -177
- package/lib/tp-assembly/tp-assembly.private.gql.d.ts +0 -5
- package/lib/tp-assembly/tp-assembly.types.d.ts +0 -40
- package/lib/tp-password-reset/tp-password-reset-request.service.d.ts +0 -16
- package/lib/tp-password-reset/tp-password-reset-user.service.d.ts +0 -29
- package/lib/tp-password-reset/tp-password-reset.constants.d.ts +0 -3
- package/lib/tp-password-reset/tp-password-reset.controller.d.ts +0 -10
- package/lib/tp-password-reset/tp-password-reset.gql.d.ts +0 -63
- package/lib/tp-password-reset/tp-password-reset.private.gql.d.ts +0 -163
- package/lib/tp-password-reset/tp-password-reset.private.service.d.ts +0 -59
- package/lib/tp-password-reset/tp-password-reset.service.d.ts +0 -112
- package/lib/tp-password-reset/tp-password-reset.types.d.ts +0 -40
- package/lib/trusted-party/trusted-party.gql.d.ts +0 -85
- package/lib/trusted-party/trusted-party.gql.private.d.ts +0 -40
- package/lib/trusted-party/trusted-party.service.d.ts +0 -192
- package/lib/trusted-party/trusted-party.types.d.ts +0 -31
- package/lib/two-factor/two-factor.service.d.ts +0 -15
- package/lib/user/user.gql.d.ts +0 -8
- package/lib/user/user.service.d.ts +0 -9
- package/lib/user/user.types.d.ts +0 -16
- package/lib/web-crypto/web-crypto.service.d.ts +0 -5
- package/lifeready-core.d.ts +0 -16
- package/lifeready-core.metadata.json +0 -1
- package/public-api.d.ts +0 -56
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
// Abstract Syntax Tree
|
|
3
|
-
import gql from 'graphql-tag';
|
|
4
|
-
import { KcBadArgumentException, KcBadLogicException } from './exceptions';
|
|
5
|
-
export function getAstOperation(astDocument, operation) {
|
|
6
|
-
const operations = astDocument.definitions.filter((def) => def.kind === 'OperationDefinition');
|
|
7
|
-
if (operations.length > 1) {
|
|
8
|
-
throw new KcBadLogicException(`There can be only one '${operation}' operation, instead there are ${operations.length}`);
|
|
9
|
-
}
|
|
10
|
-
return operations[0];
|
|
11
|
-
}
|
|
12
|
-
export function getQuery(doc) {
|
|
13
|
-
return getAstOperation(doc, 'query');
|
|
14
|
-
}
|
|
15
|
-
export function getMutation(doc) {
|
|
16
|
-
return getAstOperation(doc, 'mutation');
|
|
17
|
-
}
|
|
18
|
-
export function getFragments(doc) {
|
|
19
|
-
return doc.definitions.filter((def) => def.kind === 'FragmentDefinition');
|
|
20
|
-
}
|
|
21
|
-
export function getFragment(astDocument) {
|
|
22
|
-
const fragments = getFragments(astDocument);
|
|
23
|
-
if (fragments.length > 1) {
|
|
24
|
-
throw new KcBadArgumentException('GraphQL document can only contain one fragment.');
|
|
25
|
-
}
|
|
26
|
-
return fragments[0];
|
|
27
|
-
}
|
|
28
|
-
export function name(value) {
|
|
29
|
-
return {
|
|
30
|
-
kind: 'Name',
|
|
31
|
-
value,
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
export function getAliasOrName(field) {
|
|
35
|
-
var _a;
|
|
36
|
-
return ((_a = field.alias) === null || _a === void 0 ? void 0 : _a.value) || field.name.value;
|
|
37
|
-
}
|
|
38
|
-
export function gqlTyped(literals, ...placeholders) {
|
|
39
|
-
return gql(literals, ...placeholders);
|
|
40
|
-
}
|
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL19jb21tb24vYXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCx1QkFBdUI7QUFVdkIsT0FBTyxHQUFHLE1BQU0sYUFBYSxDQUFDO0FBQzlCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUUzRSxNQUFNLFVBQVUsZUFBZSxDQUM3QixXQUFXLEVBQ1gsU0FBNEI7SUFFNUIsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQy9DLENBQUMsR0FBNEIsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxxQkFBcUIsQ0FDckUsQ0FBQztJQUVGLElBQUksVUFBVSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDekIsTUFBTSxJQUFJLG1CQUFtQixDQUMzQiwwQkFBMEIsU0FBUyxrQ0FBa0MsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUN6RixDQUFDO0tBQ0g7SUFFRCxPQUFPLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QixDQUFDO0FBRUQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxHQUFpQjtJQUN4QyxPQUFPLGVBQWUsQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDdkMsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsR0FBaUI7SUFDM0MsT0FBTyxlQUFlLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQzFDLENBQUM7QUFFRCxNQUFNLFVBQVUsWUFBWSxDQUFDLEdBQWlCO0lBQzVDLE9BQU8sR0FBRyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQzNCLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLG9CQUFvQixDQUNmLENBQUM7QUFDaEMsQ0FBQztBQUVELE1BQU0sVUFBVSxXQUFXLENBQUMsV0FBeUI7SUFDbkQsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzVDLElBQUksU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDeEIsTUFBTSxJQUFJLHNCQUFzQixDQUM5QixpREFBaUQsQ0FDbEQsQ0FBQztLQUNIO0lBQ0QsT0FBTyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEIsQ0FBQztBQUVELE1BQU0sVUFBVSxJQUFJLENBQUMsS0FBYTtJQUNoQyxPQUFPO1FBQ0wsSUFBSSxFQUFFLE1BQU07UUFDWixLQUFLO0tBQ04sQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLEtBQWdCOztJQUM3QyxPQUFPLE9BQUEsS0FBSyxDQUFDLEtBQUssMENBQUUsS0FBSyxLQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO0FBQ2hELENBQUM7QUFNRCxNQUFNLFVBQVUsUUFBUSxDQUN0QixRQUFrRCxFQUNsRCxHQUFHLFlBQW1CO0lBRXRCLE9BQU8sR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLFlBQVksQ0FBeUIsQ0FBQztBQUNoRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLy8gQWJzdHJhY3QgU3ludGF4IFRyZWVcblxuaW1wb3J0IHtcbiAgRG9jdW1lbnROb2RlLFxuICBGaWVsZE5vZGUsXG4gIEZyYWdtZW50RGVmaW5pdGlvbk5vZGUsXG4gIE5hbWVOb2RlLFxuICBPcGVyYXRpb25EZWZpbml0aW9uTm9kZSxcbiAgT3BlcmF0aW9uVHlwZU5vZGUsXG59IGZyb20gJ2dyYXBocWwnO1xuaW1wb3J0IGdxbCBmcm9tICdncmFwaHFsLXRhZyc7XG5pbXBvcnQgeyBLY0JhZEFyZ3VtZW50RXhjZXB0aW9uLCBLY0JhZExvZ2ljRXhjZXB0aW9uIH0gZnJvbSAnLi9leGNlcHRpb25zJztcblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFzdE9wZXJhdGlvbihcbiAgYXN0RG9jdW1lbnQsXG4gIG9wZXJhdGlvbjogT3BlcmF0aW9uVHlwZU5vZGVcbik6IE9wZXJhdGlvbkRlZmluaXRpb25Ob2RlIHtcbiAgY29uc3Qgb3BlcmF0aW9ucyA9IGFzdERvY3VtZW50LmRlZmluaXRpb25zLmZpbHRlcihcbiAgICAoZGVmOiBPcGVyYXRpb25EZWZpbml0aW9uTm9kZSkgPT4gZGVmLmtpbmQgPT09ICdPcGVyYXRpb25EZWZpbml0aW9uJ1xuICApO1xuXG4gIGlmIChvcGVyYXRpb25zLmxlbmd0aCA+IDEpIHtcbiAgICB0aHJvdyBuZXcgS2NCYWRMb2dpY0V4Y2VwdGlvbihcbiAgICAgIGBUaGVyZSBjYW4gYmUgb25seSBvbmUgJyR7b3BlcmF0aW9ufScgb3BlcmF0aW9uLCBpbnN0ZWFkIHRoZXJlIGFyZSAke29wZXJhdGlvbnMubGVuZ3RofWBcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIG9wZXJhdGlvbnNbMF07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRRdWVyeShkb2M6IERvY3VtZW50Tm9kZSk6IE9wZXJhdGlvbkRlZmluaXRpb25Ob2RlIHtcbiAgcmV0dXJuIGdldEFzdE9wZXJhdGlvbihkb2MsICdxdWVyeScpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TXV0YXRpb24oZG9jOiBEb2N1bWVudE5vZGUpOiBPcGVyYXRpb25EZWZpbml0aW9uTm9kZSB7XG4gIHJldHVybiBnZXRBc3RPcGVyYXRpb24oZG9jLCAnbXV0YXRpb24nKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZyYWdtZW50cyhkb2M6IERvY3VtZW50Tm9kZSk6IEZyYWdtZW50RGVmaW5pdGlvbk5vZGVbXSB7XG4gIHJldHVybiBkb2MuZGVmaW5pdGlvbnMuZmlsdGVyKFxuICAgIChkZWYpID0+IGRlZi5raW5kID09PSAnRnJhZ21lbnREZWZpbml0aW9uJ1xuICApIGFzIEZyYWdtZW50RGVmaW5pdGlvbk5vZGVbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEZyYWdtZW50KGFzdERvY3VtZW50OiBEb2N1bWVudE5vZGUpOiBGcmFnbWVudERlZmluaXRpb25Ob2RlIHtcbiAgY29uc3QgZnJhZ21lbnRzID0gZ2V0RnJhZ21lbnRzKGFzdERvY3VtZW50KTtcbiAgaWYgKGZyYWdtZW50cy5sZW5ndGggPiAxKSB7XG4gICAgdGhyb3cgbmV3IEtjQmFkQXJndW1lbnRFeGNlcHRpb24oXG4gICAgICAnR3JhcGhRTCBkb2N1bWVudCBjYW4gb25seSBjb250YWluIG9uZSBmcmFnbWVudC4nXG4gICAgKTtcbiAgfVxuICByZXR1cm4gZnJhZ21lbnRzWzBdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbmFtZSh2YWx1ZTogc3RyaW5nKTogTmFtZU5vZGUge1xuICByZXR1cm4ge1xuICAgIGtpbmQ6ICdOYW1lJyxcbiAgICB2YWx1ZSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEFsaWFzT3JOYW1lKGZpZWxkOiBGaWVsZE5vZGUpIHtcbiAgcmV0dXJuIGZpZWxkLmFsaWFzPy52YWx1ZSB8fCBmaWVsZC5uYW1lLnZhbHVlO1xufVxuXG4vLyBDb2xsb2NhdGVzIHRoZSB0eXBlIHdpdGggdGhlIGRvY3VtZW50LlxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1pbnRlcmZhY2UsIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuZXhwb3J0IGludGVyZmFjZSBUeXBlZERvY3VtZW50Tm9kZTxUPiBleHRlbmRzIERvY3VtZW50Tm9kZSB7fVxuXG5leHBvcnQgZnVuY3Rpb24gZ3FsVHlwZWQ8VCA9IGFueT4oXG4gIGxpdGVyYWxzOiBSZWFkb25seUFycmF5PHN0cmluZz4gfCBSZWFkb25seTxzdHJpbmc+LFxuICAuLi5wbGFjZWhvbGRlcnM6IGFueVtdXG4pOiBUeXBlZERvY3VtZW50Tm9kZTxUPiB7XG4gIHJldHVybiBncWwobGl0ZXJhbHMsIC4uLnBsYWNlaG9sZGVycykgYXMgVHlwZWREb2N1bWVudE5vZGU8VD47XG59XG4iXX0=
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
export class DeferredPromise {
|
|
2
|
-
constructor() {
|
|
3
|
-
/* tslint:disable: variable-name */
|
|
4
|
-
this._fulfilled = false;
|
|
5
|
-
this.promise = new Promise((resolve, reject) => {
|
|
6
|
-
this._resolve = resolve;
|
|
7
|
-
this._reject = reject;
|
|
8
|
-
}).finally(() => {
|
|
9
|
-
// finally() simply gets called on both then() and catch(). The promise
|
|
10
|
-
// chain continues on.
|
|
11
|
-
this._fulfilled = true;
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
get resolve() {
|
|
15
|
-
return this._resolve;
|
|
16
|
-
}
|
|
17
|
-
get reject() {
|
|
18
|
-
return this._reject;
|
|
19
|
-
}
|
|
20
|
-
get fulfilled() {
|
|
21
|
-
return this._fulfilled;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVmZXJyZWQtcHJvbWlzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9fY29tbW9uL2RlZmVycmVkLXByb21pc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxPQUFPLGVBQWU7SUFTMUI7UUFIQSxtQ0FBbUM7UUFDM0IsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUd6QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksT0FBTyxDQUFJLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ2hELElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUU7WUFDZCx1RUFBdUU7WUFDdkUsc0JBQXNCO1lBQ3RCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELElBQUksT0FBTztRQUNULE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUM7SUFDekIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuZXhwb3J0IHR5cGUgUmVzb2x2ZVByb21pc2U8VD4gPSAodmFsdWU/OiBUIHwgUHJvbWlzZUxpa2U8VD4pID0+IHZvaWQ7XG5leHBvcnQgdHlwZSBSZWplY3RQcm9taXNlID0gKHJlYXNvbj86IGFueSkgPT4gdm9pZDtcblxuZXhwb3J0IGNsYXNzIERlZmVycmVkUHJvbWlzZTxUPiB7XG4gIHB1YmxpYyByZWFkb25seSBwcm9taXNlOiBQcm9taXNlPFQ+O1xuICAvKiB0c2xpbnQ6ZGlzYWJsZTogdmFyaWFibGUtbmFtZSAqL1xuICBwcml2YXRlIF9yZXNvbHZlOiBSZXNvbHZlUHJvbWlzZTxUPjtcbiAgLyogdHNsaW50OmRpc2FibGU6IHZhcmlhYmxlLW5hbWUgKi9cbiAgcHJpdmF0ZSBfcmVqZWN0OiBSZWplY3RQcm9taXNlO1xuICAvKiB0c2xpbnQ6ZGlzYWJsZTogdmFyaWFibGUtbmFtZSAqL1xuICBwcml2YXRlIF9mdWxmaWxsZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLnByb21pc2UgPSBuZXcgUHJvbWlzZTxUPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLl9yZXNvbHZlID0gcmVzb2x2ZTtcbiAgICAgIHRoaXMuX3JlamVjdCA9IHJlamVjdDtcbiAgICB9KS5maW5hbGx5KCgpID0+IHtcbiAgICAgIC8vIGZpbmFsbHkoKSBzaW1wbHkgZ2V0cyBjYWxsZWQgb24gYm90aCB0aGVuKCkgYW5kIGNhdGNoKCkuIFRoZSBwcm9taXNlXG4gICAgICAvLyBjaGFpbiBjb250aW51ZXMgb24uXG4gICAgICB0aGlzLl9mdWxmaWxsZWQgPSB0cnVlO1xuICAgIH0pO1xuICB9XG5cbiAgZ2V0IHJlc29sdmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Jlc29sdmU7XG4gIH1cblxuICBnZXQgcmVqZWN0KCkge1xuICAgIHJldHVybiB0aGlzLl9yZWplY3Q7XG4gIH1cblxuICBnZXQgZnVsZmlsbGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9mdWxmaWxsZWQ7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
import { lodash } from '.';
|
|
2
|
-
export function handleApolloError(errors) {
|
|
3
|
-
if (!errors || !errors.length)
|
|
4
|
-
return;
|
|
5
|
-
const kcErrors = errors.map((x) => {
|
|
6
|
-
return new KcError({
|
|
7
|
-
code: x.extensions && x.extensions.code,
|
|
8
|
-
source: x.extensions && x.extensions.source,
|
|
9
|
-
data: x.extensions && lodash.omit(x.extensions, ['code', 'source']),
|
|
10
|
-
message: x.message,
|
|
11
|
-
debug: {
|
|
12
|
-
locations: x.locations,
|
|
13
|
-
path: x.path,
|
|
14
|
-
},
|
|
15
|
-
});
|
|
16
|
-
});
|
|
17
|
-
throw new KcException(...kcErrors);
|
|
18
|
-
}
|
|
19
|
-
export class KcError {
|
|
20
|
-
constructor(options) {
|
|
21
|
-
/**
|
|
22
|
-
* The _tag prevents being able to return an object when a class is required:
|
|
23
|
-
* ref: https://medium.com/decathlondevelopers/whats-the-problem-with-typescript-s-classes-2e60aaad3f6
|
|
24
|
-
* Example:
|
|
25
|
-
* // This works because KcError is being treated as a type.
|
|
26
|
-
* function test(): KcError {
|
|
27
|
-
* return {message: "123"};
|
|
28
|
-
* }
|
|
29
|
-
* With the private _tag property, the above will cause a compiler error because _tag property is missing
|
|
30
|
-
* from the returned object.
|
|
31
|
-
*
|
|
32
|
-
* The _type property also provides a type indicator when serialising the class to POJO.
|
|
33
|
-
*/
|
|
34
|
-
this._type = 'KcError';
|
|
35
|
-
this.code = options.code;
|
|
36
|
-
this.source = options.source;
|
|
37
|
-
this.data = options.data;
|
|
38
|
-
this.message = options.message;
|
|
39
|
-
this.debug = options.debug;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
export class KcException {
|
|
43
|
-
/**
|
|
44
|
-
*
|
|
45
|
-
* @param errors Each argument is a KcError.
|
|
46
|
-
*/
|
|
47
|
-
constructor(...errors) {
|
|
48
|
-
this._type = 'KcException';
|
|
49
|
-
this.errors = errors;
|
|
50
|
-
}
|
|
51
|
-
toString() {
|
|
52
|
-
return this.errors.map((t) => JSON.stringify(t, null, 2));
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
export var KcErrorCode;
|
|
56
|
-
(function (KcErrorCode) {
|
|
57
|
-
// API errors
|
|
58
|
-
KcErrorCode["ARCHIVED_RESOURCE"] = "ARCHIVED_RESOURCE";
|
|
59
|
-
KcErrorCode["BAD_ARGUMENT"] = "BAD_ARGUMENT";
|
|
60
|
-
KcErrorCode["BAD_SIGNATURE"] = "BAD_SIGNATURE";
|
|
61
|
-
KcErrorCode["BAD_STATE"] = "BAD_STATE";
|
|
62
|
-
KcErrorCode["CHANGED_PERMISSIONS"] = "CHANGED_PERMISSIONS";
|
|
63
|
-
KcErrorCode["CONCURRENT_ACCESS"] = "CONCURRENT_ACCESS";
|
|
64
|
-
KcErrorCode["CONFIG_ERROR"] = "CONFIG_ERROR";
|
|
65
|
-
KcErrorCode["CYCLE_DETECTED"] = "CYCLE_DETECTED";
|
|
66
|
-
KcErrorCode["EXPIRED"] = "EXPIRED";
|
|
67
|
-
KcErrorCode["INVALID_TOKEN"] = "INVALID_TOKEN";
|
|
68
|
-
KcErrorCode["INTERNAL_ERROR"] = "INTERNAL_ERROR";
|
|
69
|
-
KcErrorCode["JSON_DECODE_ERROR"] = "JSON_DECODE_ERROR";
|
|
70
|
-
KcErrorCode["KEY_MISMATCH"] = "KEY_MISMATCH";
|
|
71
|
-
KcErrorCode["LIMIT_REACHED"] = "LIMIT_REACHED";
|
|
72
|
-
KcErrorCode["LOCKED"] = "LOCKED";
|
|
73
|
-
KcErrorCode["LOGIC_ERROR"] = "LOGIC_ERROR";
|
|
74
|
-
KcErrorCode["LR_DEBUG_ONLY"] = "LR_DEBUG_ONLY";
|
|
75
|
-
KcErrorCode["MIN_DELAY"] = "MIN_DELAY";
|
|
76
|
-
KcErrorCode["MISSING_FIELD"] = "MISSING_FIELD";
|
|
77
|
-
KcErrorCode["MISSING_FIELD_VALUE"] = "MISSING_FIELD_VALUE";
|
|
78
|
-
KcErrorCode["MISSING_QUERY_PARAM"] = "MISSING_QUERY_PARAM";
|
|
79
|
-
KcErrorCode["NOT_IMPLEMENTED"] = "NOT_IMPLEMENTED";
|
|
80
|
-
KcErrorCode["OBJECT_DOES_NOT_EXIST"] = "OBJECT_DOES_NOT_EXIST";
|
|
81
|
-
KcErrorCode["OBJECT_EXISTS"] = "OBJECT_EXISTS";
|
|
82
|
-
KcErrorCode["RANGE_ERROR"] = "RANGE_ERROR";
|
|
83
|
-
KcErrorCode["TRUSTED_PARTY_NOT_FOUND"] = "TRUSTED_PARTY_NOT_FOUND";
|
|
84
|
-
KcErrorCode["UNAUTHENTICATED_USER"] = "UNAUTHENTICATED_USER";
|
|
85
|
-
KcErrorCode["USER_NOT_FOUND"] = "USER_NOT_FOUND";
|
|
86
|
-
KcErrorCode["VERSION_MISMATCH"] = "VERSION_MISMATCH";
|
|
87
|
-
KcErrorCode["WRONG_PERMISSIONS"] = "WRONG_PERMISSIONS";
|
|
88
|
-
// KC client errors
|
|
89
|
-
KcErrorCode["AUTH"] = "AUTH";
|
|
90
|
-
KcErrorCode["BAD_LOGIC"] = "BAD_LOGIC";
|
|
91
|
-
KcErrorCode["BAD_REQUEST"] = "BAD_REQUEST";
|
|
92
|
-
KcErrorCode["BAD_TIME_SYNC"] = "BAD_TIME_SYNC";
|
|
93
|
-
KcErrorCode["CODE_MISMATCH"] = "CODE_MISMATCH";
|
|
94
|
-
KcErrorCode["ENCRYPTION"] = "ENCRYPTION";
|
|
95
|
-
KcErrorCode["NOT_FOUND"] = "NOT_FOUND";
|
|
96
|
-
KcErrorCode["SUSPICIOUS_OPERATION"] = "SUSPICIOUS_OPERATION";
|
|
97
|
-
KcErrorCode["UNSUPPORTED"] = "UNSUPPORTED";
|
|
98
|
-
})(KcErrorCode || (KcErrorCode = {}));
|
|
99
|
-
export class KcAuthException extends KcException {
|
|
100
|
-
constructor(message) {
|
|
101
|
-
super(new KcError({ code: KcErrorCode.AUTH, message }));
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
export class KcBadArgumentException extends KcException {
|
|
105
|
-
constructor(message) {
|
|
106
|
-
super(new KcError({ code: KcErrorCode.BAD_ARGUMENT, message }));
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
export class KcBadLogicException extends KcException {
|
|
110
|
-
constructor(message) {
|
|
111
|
-
super(new KcError({ code: KcErrorCode.BAD_LOGIC, message }));
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
export class KcBadRequestException extends KcException {
|
|
115
|
-
constructor(message) {
|
|
116
|
-
super(new KcError({ code: KcErrorCode.BAD_REQUEST, message }));
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
export class KcBadSignatureException extends KcException {
|
|
120
|
-
constructor(message) {
|
|
121
|
-
super(new KcError({ code: KcErrorCode.BAD_SIGNATURE, message }));
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
export class KcBadStateException extends KcException {
|
|
125
|
-
constructor(message) {
|
|
126
|
-
super(new KcError({
|
|
127
|
-
code: KcErrorCode.BAD_STATE,
|
|
128
|
-
message,
|
|
129
|
-
}));
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
export class KcBadTimeSyncException extends KcException {
|
|
133
|
-
constructor(message) {
|
|
134
|
-
super(new KcError({
|
|
135
|
-
code: KcErrorCode.BAD_TIME_SYNC,
|
|
136
|
-
message,
|
|
137
|
-
}));
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
export class KcCodeMismatchException extends KcException {
|
|
141
|
-
constructor(message) {
|
|
142
|
-
super(new KcError({ code: KcErrorCode.CODE_MISMATCH, message }));
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
export class KcConcurrentAccessException extends KcException {
|
|
146
|
-
constructor(message) {
|
|
147
|
-
super(new KcError({ code: KcErrorCode.CONCURRENT_ACCESS, message }));
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
export class KcEncryptionException extends KcException {
|
|
151
|
-
constructor(message) {
|
|
152
|
-
super(new KcError({ code: KcErrorCode.ENCRYPTION, message }));
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
export class KcInternalErrorException extends KcException {
|
|
156
|
-
constructor(message) {
|
|
157
|
-
super(new KcError({ code: KcErrorCode.INTERNAL_ERROR, message }));
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
export class KcLockedException extends KcException {
|
|
161
|
-
constructor(message) {
|
|
162
|
-
super(new KcError({
|
|
163
|
-
code: KcErrorCode.LOCKED,
|
|
164
|
-
message,
|
|
165
|
-
}));
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
export class KcNotFoundException extends KcException {
|
|
169
|
-
constructor(message) {
|
|
170
|
-
super(new KcError({ code: KcErrorCode.NOT_FOUND, message }));
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
export class KcSuspiciousOperationException extends KcException {
|
|
174
|
-
constructor(message) {
|
|
175
|
-
super(new KcError({ code: KcErrorCode.SUSPICIOUS_OPERATION, message }));
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
export class KcUnsupportedException extends KcException {
|
|
179
|
-
constructor(message) {
|
|
180
|
-
super(new KcError({
|
|
181
|
-
code: KcErrorCode.UNSUPPORTED,
|
|
182
|
-
message,
|
|
183
|
-
}));
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZXB0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9fY29tbW9uL2V4Y2VwdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEdBQUcsQ0FBQztBQUUzQixNQUFNLFVBQVUsaUJBQWlCLENBQUMsTUFBbUM7SUFDbkUsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNO1FBQUUsT0FBTztJQUV0QyxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDaEMsT0FBTyxJQUFJLE9BQU8sQ0FBQztZQUNqQixJQUFJLEVBQUUsQ0FBQyxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUk7WUFDdkMsTUFBTSxFQUFFLENBQUMsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNO1lBQzNDLElBQUksRUFBRSxDQUFDLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQztZQUNuRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU87WUFDbEIsS0FBSyxFQUFFO2dCQUNMLFNBQVMsRUFBRSxDQUFDLENBQUMsU0FBZ0I7Z0JBQzdCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBZ0I7YUFDekI7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILE1BQU0sSUFBSSxXQUFXLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztBQUNyQyxDQUFDO0FBRUQsTUFBTSxPQUFPLE9BQU87SUE0QmxCLFlBQVksT0FBeUI7UUEzQnJDOzs7Ozs7Ozs7Ozs7V0FZRztRQUNLLFVBQUssR0FBYyxTQUFTLENBQUM7UUFlbkMsSUFB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VztZQUM3QixPQUFPO1NBQ1IsQ0FBQyxDQUNILENBQUM7SUFDSixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyBHcmFwaFFMRXJyb3IgfSBmcm9tICdncmFwaHFsJztcbmltcG9ydCB7IGxvZGFzaCB9IGZyb20gJy4nO1xuXG5leHBvcnQgZnVuY3Rpb24gaGFuZGxlQXBvbGxvRXJyb3IoZXJyb3JzOiBSZWFkb25seUFycmF5PEdyYXBoUUxFcnJvcj4pIHtcbiAgaWYgKCFlcnJvcnMgfHwgIWVycm9ycy5sZW5ndGgpIHJldHVybjtcblxuICBjb25zdCBrY0Vycm9ycyA9IGVycm9ycy5tYXAoKHgpID0+IHtcbiAgICByZXR1cm4gbmV3IEtjRXJyb3Ioe1xuICAgICAgY29kZTogeC5leHRlbnNpb25zICYmIHguZXh0ZW5zaW9ucy5jb2RlLFxuICAgICAgc291cmNlOiB4LmV4dGVuc2lvbnMgJiYgeC5leHRlbnNpb25zLnNvdXJjZSxcbiAgICAgIGRhdGE6IHguZXh0ZW5zaW9ucyAmJiBsb2Rhc2gub21pdCh4LmV4dGVuc2lvbnMsIFsnY29kZScsICdzb3VyY2UnXSksXG4gICAgICBtZXNzYWdlOiB4Lm1lc3NhZ2UsXG4gICAgICBkZWJ1Zzoge1xuICAgICAgICBsb2NhdGlvbnM6IHgubG9jYXRpb25zIGFzIGFueSxcbiAgICAgICAgcGF0aDogeC5wYXRoIGFzIHN0cmluZ1tdLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgdGhyb3cgbmV3IEtjRXhjZXB0aW9uKC4uLmtjRXJyb3JzKTtcbn1cblxuZXhwb3J0IGNsYXNzIEtjRXJyb3Ige1xuICAvKipcbiAgICogVGhlIF90YWcgcHJldmVudHMgYmVpbmcgYWJsZSB0byByZXR1cm4gYW4gb2JqZWN0IHdoZW4gYSBjbGFzcyBpcyByZXF1aXJlZDpcbiAgICogcmVmOiBodHRwczovL21lZGl1bS5jb20vZGVjYXRobG9uZGV2ZWxvcGVycy93aGF0cy10aGUtcHJvYmxlbS13aXRoLXR5cGVzY3JpcHQtcy1jbGFzc2VzLTJlNjBhYWFkM2Y2XG4gICAqIEV4YW1wbGU6XG4gICAqICAgLy8gVGhpcyB3b3JrcyBiZWNhdXNlIEtjRXJyb3IgaXMgYmVpbmcgdHJlYXRlZCBhcyBhIHR5cGUuXG4gICAqICAgZnVuY3Rpb24gdGVzdCgpOiBLY0Vycm9yIHtcbiAgICogICAgIHJldHVybiB7bWVzc2FnZTogXCIxMjNcIn07XG4gICAqICAgfVxuICAgKiBXaXRoIHRoZSBwcml2YXRlIF90YWcgcHJvcGVydHksIHRoZSBhYm92ZSB3aWxsIGNhdXNlIGEgY29tcGlsZXIgZXJyb3IgYmVjYXVzZSBfdGFnIHByb3BlcnR5IGlzIG1pc3NpbmdcbiAgICogZnJvbSB0aGUgcmV0dXJuZWQgb2JqZWN0LlxuICAgKlxuICAgKiBUaGUgX3R5cGUgcHJvcGVydHkgYWxzbyBwcm92aWRlcyBhIHR5cGUgaW5kaWNhdG9yIHdoZW4gc2VyaWFsaXNpbmcgdGhlIGNsYXNzIHRvIFBPSk8uXG4gICAqL1xuICBwcml2YXRlIF90eXBlOiAnS2NFcnJvcicgPSAnS2NFcnJvcic7XG5cbiAgY29kZT86IHN0cmluZztcbiAgc291cmNlPzogc3RyaW5nO1xuICBkYXRhPzogYW55O1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGRlYnVnPzoge1xuICAgIGxvY2F0aW9uczoge1xuICAgICAgbGluZTogbnVtYmVyO1xuICAgICAgY29sdW1uOiBudW1iZXI7XG4gICAgfVtdO1xuICAgIHBhdGg6IHN0cmluZ1tdO1xuICB9O1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFBhcnRpYWw8S2NFcnJvcj4pIHtcbiAgICB0aGlzLmNvZGUgPSBvcHRpb25zLmNvZGU7XG4gICAgdGhpcy5zb3VyY2UgPSBvcHRpb25zLnNvdXJjZTtcbiAgICB0aGlzLmRhdGEgPSBvcHRpb25zLmRhdGE7XG4gICAgdGhpcy5tZXNzYWdlID0gb3B0aW9ucy5tZXNzYWdlO1xuICAgIHRoaXMuZGVidWcgPSBvcHRpb25zLmRlYnVnO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBLY0V4Y2VwdGlvbiB7XG4gIHByaXZhdGUgX3R5cGU6ICdLY0V4Y2VwdGlvbicgPSAnS2NFeGNlcHRpb24nO1xuXG4gIHB1YmxpYyBlcnJvcnM6IEtjRXJyb3JbXTtcblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGVycm9ycyBFYWNoIGFyZ3VtZW50IGlzIGEgS2NFcnJvci5cbiAgICovXG4gIGNvbnN0cnVjdG9yKC4uLmVycm9yczogS2NFcnJvcltdKSB7XG4gICAgdGhpcy5lcnJvcnMgPSBlcnJvcnM7XG4gIH1cblxuICBwdWJsaWMgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuZXJyb3JzLm1hcCgodCkgPT4gSlNPTi5zdHJpbmdpZnkodCwgbnVsbCwgMikpO1xuICB9XG59XG5cbmV4cG9ydCBlbnVtIEtjRXJyb3JDb2RlIHtcbiAgLy8gQVBJIGVycm9yc1xuICBBUkNISVZFRF9SRVNPVVJDRSA9ICdBUkNISVZFRF9SRVNPVVJDRScsXG4gIEJBRF9BUkdVTUVOVCA9ICdCQURfQVJHVU1FTlQnLFxuICBCQURfU0lHTkFUVVJFID0gJ0JBRF9TSUdOQVRVUkUnLFxuICBCQURfU1RBVEUgPSAnQkFEX1NUQVRFJyxcbiAgQ0hBTkdFRF9QRVJNSVNTSU9OUyA9ICdDSEFOR0VEX1BFUk1JU1NJT05TJyxcbiAgQ09OQ1VSUkVOVF9BQ0NFU1MgPSAnQ09OQ1VSUkVOVF9BQ0NFU1MnLFxuICBDT05GSUdfRVJST1IgPSAnQ09ORklHX0VSUk9SJyxcbiAgQ1lDTEVfREVURUNURUQgPSAnQ1lDTEVfREVURUNURUQnLFxuICBFWFBJUkVEID0gJ0VYUElSRUQnLFxuICBJTlZBTElEX1RPS0VOID0gJ0lOVkFMSURfVE9LRU4nLFxuICBJTlRFUk5BTF9FUlJPUiA9ICdJTlRFUk5BTF9FUlJPUicsXG4gIEpTT05fREVDT0RFX0VSUk9SID0gJ0pTT05fREVDT0RFX0VSUk9SJyxcbiAgS0VZX01JU01BVENIID0gJ0tFWV9NSVNNQVRDSCcsXG4gIExJTUlUX1JFQUNIRUQgPSAnTElNSVRfUkVBQ0hFRCcsXG4gIExPQ0tFRCA9ICdMT0NLRUQnLFxuICBMT0dJQ19FUlJPUiA9ICdMT0dJQ19FUlJPUicsXG4gIExSX0RFQlVHX09OTFkgPSAnTFJfREVCVUdfT05MWScsXG4gIE1JTl9ERUxBWSA9ICdNSU5fREVMQVknLFxuICBNSVNTSU5HX0ZJRUxEID0gJ01JU1NJTkdfRklFTEQnLFxuICBNSVNTSU5HX0ZJRUxEX1ZBTFVFID0gJ01JU1NJTkdfRklFTERfVkFMVUUnLFxuICBNSVNTSU5HX1FVRVJZX1BBUkFNID0gJ01JU1NJTkdfUVVFUllfUEFSQU0nLFxuICBOT1RfSU1QTEVNRU5URUQgPSAnTk9UX0lNUExFTUVOVEVEJyxcbiAgT0JKRUNUX0RPRVNfTk9UX0VYSVNUID0gJ09CSkVDVF9ET0VTX05PVF9FWElTVCcsXG4gIE9CSkVDVF9FWElTVFMgPSAnT0JKRUNUX0VYSVNUUycsXG4gIFJBTkdFX0VSUk9SID0gJ1JBTkdFX0VSUk9SJyxcbiAgVFJVU1RFRF9QQVJUWV9OT1RfRk9VTkQgPSAnVFJVU1RFRF9QQVJUWV9OT1RfRk9VTkQnLFxuICBVTkFVVEhFTlRJQ0FURURfVVNFUiA9ICdVTkFVVEhFTlRJQ0FURURfVVNFUicsXG4gIFVTRVJfTk9UX0ZPVU5EID0gJ1VTRVJfTk9UX0ZPVU5EJyxcbiAgVkVSU0lPTl9NSVNNQVRDSCA9ICdWRVJTSU9OX01JU01BVENIJyxcbiAgV1JPTkdfUEVSTUlTU0lPTlMgPSAnV1JPTkdfUEVSTUlTU0lPTlMnLFxuXG4gIC8vIEtDIGNsaWVudCBlcnJvcnNcbiAgQVVUSCA9ICdBVVRIJyxcbiAgQkFEX0xPR0lDID0gJ0JBRF9MT0dJQycsXG4gIEJBRF9SRVFVRVNUID0gJ0JBRF9SRVFVRVNUJyxcbiAgQkFEX1RJTUVfU1lOQyA9ICdCQURfVElNRV9TWU5DJyxcbiAgQ09ERV9NSVNNQVRDSCA9ICdDT0RFX01JU01BVENIJyxcbiAgRU5DUllQVElPTiA9ICdFTkNSWVBUSU9OJyxcbiAgTk9UX0ZPVU5EID0gJ05PVF9GT1VORCcsXG4gIFNVU1BJQ0lPVVNfT1BFUkFUSU9OID0gJ1NVU1BJQ0lPVVNfT1BFUkFUSU9OJyxcbiAgVU5TVVBQT1JURUQgPSAnVU5TVVBQT1JURUQnLFxufVxuXG5leHBvcnQgY2xhc3MgS2NBdXRoRXhjZXB0aW9uIGV4dGVuZHMgS2NFeGNlcHRpb24ge1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlKSB7XG4gICAgc3VwZXIobmV3IEtjRXJyb3IoeyBjb2RlOiBLY0Vycm9yQ29kZS5BVVRILCBtZXNzYWdlIH0pKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgS2NCYWRBcmd1bWVudEV4Y2VwdGlvbiBleHRlbmRzIEtjRXhjZXB0aW9uIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgc3VwZXIobmV3IEtjRXJyb3IoeyBjb2RlOiBLY0Vycm9yQ29kZS5CQURfQVJHVU1FTlQsIG1lc3NhZ2UgfSkpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBLY0JhZExvZ2ljRXhjZXB0aW9uIGV4dGVuZHMgS2NFeGNlcHRpb24ge1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlKSB7XG4gICAgc3VwZXIobmV3IEtjRXJyb3IoeyBjb2RlOiBLY0Vycm9yQ29kZS5CQURfTE9HSUMsIG1lc3NhZ2UgfSkpO1xuICB9XG59XG5leHBvcnQgY2xhc3MgS2NCYWRSZXF1ZXN0RXhjZXB0aW9uIGV4dGVuZHMgS2NFeGNlcHRpb24ge1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlKSB7XG4gICAgc3VwZXIobmV3IEtjRXJyb3IoeyBjb2RlOiBLY0Vycm9yQ29kZS5CQURfUkVRVUVTVCwgbWVzc2FnZSB9KSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEtjQmFkU2lnbmF0dXJlRXhjZXB0aW9uIGV4dGVuZHMgS2NFeGNlcHRpb24ge1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlKSB7XG4gICAgc3VwZXIobmV3IEtjRXJyb3IoeyBjb2RlOiBLY0Vycm9yQ29kZS5CQURfU0lHTkFUVVJFLCBtZXNzYWdlIH0pKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgS2NCYWRTdGF0ZUV4Y2VwdGlvbiBleHRlbmRzIEtjRXhjZXB0aW9uIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZSkge1xuICAgIHN1cGVyKFxuICAgICAgbmV3IEtjRXJyb3Ioe1xuICAgICAgICBjb2RlOiBLY0Vycm9yQ29kZS5CQURfU1RBVEUsXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEtjQmFkVGltZVN5bmNFeGNlcHRpb24gZXh0ZW5kcyBLY0V4Y2VwdGlvbiB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2UpIHtcbiAgICBzdXBlcihcbiAgICAgIG5ldyBLY0Vycm9yKHtcbiAgICAgICAgY29kZTogS2NFcnJvckNvZGUuQkFEX1RJTUVfU1lOQyxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgS2NDb2RlTWlzbWF0Y2hFeGNlcHRpb24gZXh0ZW5kcyBLY0V4Y2VwdGlvbiB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2UpIHtcbiAgICBzdXBlcihuZXcgS2NFcnJvcih7IGNvZGU6IEtjRXJyb3JDb2RlLkNPREVfTUlTTUFUQ0gsIG1lc3NhZ2UgfSkpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBLY0NvbmN1cnJlbnRBY2Nlc3NFeGNlcHRpb24gZXh0ZW5kcyBLY0V4Y2VwdGlvbiB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2UpIHtcbiAgICBzdXBlcihuZXcgS2NFcnJvcih7IGNvZGU6IEtjRXJyb3JDb2RlLkNPTkNVUlJFTlRfQUNDRVNTLCBtZXNzYWdlIH0pKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgS2NFbmNyeXB0aW9uRXhjZXB0aW9uIGV4dGVuZHMgS2NFeGNlcHRpb24ge1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlKSB7XG4gICAgc3VwZXIobmV3IEtjRXJyb3IoeyBjb2RlOiBLY0Vycm9yQ29kZS5FTkNSWVBUSU9OLCBtZXNzYWdlIH0pKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgS2NJbnRlcm5hbEVycm9yRXhjZXB0aW9uIGV4dGVuZHMgS2NFeGNlcHRpb24ge1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlKSB7XG4gICAgc3VwZXIobmV3IEtjRXJyb3IoeyBjb2RlOiBLY0Vycm9yQ29kZS5JTlRFUk5BTF9FUlJPUiwgbWVzc2FnZSB9KSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEtjTG9ja2VkRXhjZXB0aW9uIGV4dGVuZHMgS2NFeGNlcHRpb24ge1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlKSB7XG4gICAgc3VwZXIoXG4gICAgICBuZXcgS2NFcnJvcih7XG4gICAgICAgIGNvZGU6IEtjRXJyb3JDb2RlLkxPQ0tFRCxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgS2NOb3RGb3VuZEV4Y2VwdGlvbiBleHRlbmRzIEtjRXhjZXB0aW9uIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZSkge1xuICAgIHN1cGVyKG5ldyBLY0Vycm9yKHsgY29kZTogS2NFcnJvckNvZGUuTk9UX0ZPVU5ELCBtZXNzYWdlIH0pKTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgS2NTdXNwaWNpb3VzT3BlcmF0aW9uRXhjZXB0aW9uIGV4dGVuZHMgS2NFeGNlcHRpb24ge1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlKSB7XG4gICAgc3VwZXIobmV3IEtjRXJyb3IoeyBjb2RlOiBLY0Vycm9yQ29kZS5TVVNQSUNJT1VTX09QRVJBVElPTiwgbWVzc2FnZSB9KSk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEtjVW5zdXBwb3J0ZWRFeGNlcHRpb24gZXh0ZW5kcyBLY0V4Y2VwdGlvbiB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2UpIHtcbiAgICBzdXBlcihcbiAgICAgIG5ldyBLY0Vycm9yKHtcbiAgICAgICAgY29kZTogS2NFcnJvckNvZGUuVU5TVVBQT1JURUQsXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICB9KVxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import * as lodash from './kc-lodash';
|
|
2
|
-
export { lodash };
|
|
3
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvX2NvbW1vbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxNQUFNLGFBQWEsQ0FBQztBQUN0QyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBsb2Rhc2ggZnJvbSAnLi9rYy1sb2Rhc2gnO1xuZXhwb3J0IHsgbG9kYXNoIH07XG4iXX0=
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
// This file is in the "lr-lodash" directory so that we can use the barrel file
|
|
2
|
-
// to create the lodash namespace. If we put this into the "functions" folder, then
|
|
3
|
-
// other functions in there that uses lodash won't have the lodash namespace.
|
|
4
|
-
// The internet says this style of import improves bundle size. At least we only have to
|
|
5
|
-
// do this in a single place here.
|
|
6
|
-
import cloneDeep from 'lodash/cloneDeep';
|
|
7
|
-
import isEqual from 'lodash/isEqual';
|
|
8
|
-
import keyBy from 'lodash/keyBy';
|
|
9
|
-
import omit from 'lodash/omit';
|
|
10
|
-
export { cloneDeep, isEqual, keyBy, omit };
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2MtbG9kYXNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL19jb21tb24va2MtbG9kYXNoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLCtFQUErRTtBQUMvRSxtRkFBbUY7QUFDbkYsNkVBQTZFO0FBQzdFLHdGQUF3RjtBQUN4RixrQ0FBa0M7QUFDbEMsT0FBTyxTQUFTLE1BQU0sa0JBQWtCLENBQUM7QUFDekMsT0FBTyxPQUFPLE1BQU0sZ0JBQWdCLENBQUM7QUFDckMsT0FBTyxLQUFLLE1BQU0sY0FBYyxDQUFDO0FBQ2pDLE9BQU8sSUFBSSxNQUFNLGFBQWEsQ0FBQztBQUUvQixPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBUaGlzIGZpbGUgaXMgaW4gdGhlIFwibHItbG9kYXNoXCIgZGlyZWN0b3J5IHNvIHRoYXQgd2UgY2FuIHVzZSB0aGUgYmFycmVsIGZpbGVcbi8vIHRvIGNyZWF0ZSB0aGUgbG9kYXNoIG5hbWVzcGFjZS4gSWYgd2UgcHV0IHRoaXMgaW50byB0aGUgXCJmdW5jdGlvbnNcIiBmb2xkZXIsIHRoZW5cbi8vIG90aGVyIGZ1bmN0aW9ucyBpbiB0aGVyZSB0aGF0IHVzZXMgbG9kYXNoIHdvbid0IGhhdmUgdGhlIGxvZGFzaCBuYW1lc3BhY2UuXG4vLyBUaGUgaW50ZXJuZXQgc2F5cyB0aGlzIHN0eWxlIG9mIGltcG9ydCBpbXByb3ZlcyBidW5kbGUgc2l6ZS4gQXQgbGVhc3Qgd2Ugb25seSBoYXZlIHRvXG4vLyBkbyB0aGlzIGluIGEgc2luZ2xlIHBsYWNlIGhlcmUuXG5pbXBvcnQgY2xvbmVEZWVwIGZyb20gJ2xvZGFzaC9jbG9uZURlZXAnO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSAnbG9kYXNoL2lzRXF1YWwnO1xuaW1wb3J0IGtleUJ5IGZyb20gJ2xvZGFzaC9rZXlCeSc7XG5pbXBvcnQgb21pdCBmcm9tICdsb2Rhc2gvb21pdCc7XG5cbmV4cG9ydCB7IGNsb25lRGVlcCwgaXNFcXVhbCwga2V5QnksIG9taXQgfTtcbiJdfQ==
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
export class KeyContainer {
|
|
2
|
-
constructor(_key, timeout) {
|
|
3
|
-
this._key = _key;
|
|
4
|
-
this.timer = setTimeout(() => {
|
|
5
|
-
this._key = null;
|
|
6
|
-
}, timeout);
|
|
7
|
-
}
|
|
8
|
-
get key() {
|
|
9
|
-
return this._key;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Clears the reference to the key, clears the timer, return the key.
|
|
13
|
-
* It's important to call this function when the key is no longer needed because
|
|
14
|
-
* the anonymous function in setTimeout() holds a reference to "this", and hence
|
|
15
|
-
* keeps the "this._key" reference until the timer expired. So if we have used
|
|
16
|
-
* the key before it expired, we should clear the "this._key" reference immediately.
|
|
17
|
-
*/
|
|
18
|
-
pop() {
|
|
19
|
-
const ret = this._key;
|
|
20
|
-
this._key = null;
|
|
21
|
-
if (this.timer) {
|
|
22
|
-
clearTimeout(this.timer);
|
|
23
|
-
this.timer = null;
|
|
24
|
-
}
|
|
25
|
-
return ret;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9zcmMvbGliL19jb21tb24va2V5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxZQUFZO0lBR3ZCLFlBQW9CLElBQWUsRUFBRSxPQUFlO1FBQWhDLFNBQUksR0FBSixJQUFJLENBQVc7UUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQzNCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ25CLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNkLENBQUM7SUFDRCxJQUFJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEdBQUc7UUFDRCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ2pCLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7U0FDbkI7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBLZXlDb250YWluZXIge1xuICBwcml2YXRlIHRpbWVyOiBOb2RlSlMuVGltZW91dDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9rZXk6IENyeXB0b0tleSwgdGltZW91dDogbnVtYmVyKSB7XG4gICAgdGhpcy50aW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5fa2V5ID0gbnVsbDtcbiAgICB9LCB0aW1lb3V0KTtcbiAgfVxuICBnZXQga2V5KCk6IENyeXB0b0tleSB7XG4gICAgcmV0dXJuIHRoaXMuX2tleTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgdGhlIHJlZmVyZW5jZSB0byB0aGUga2V5LCBjbGVhcnMgdGhlIHRpbWVyLCByZXR1cm4gdGhlIGtleS5cbiAgICogSXQncyBpbXBvcnRhbnQgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uIHdoZW4gdGhlIGtleSBpcyBubyBsb25nZXIgbmVlZGVkIGJlY2F1c2VcbiAgICogdGhlIGFub255bW91cyBmdW5jdGlvbiBpbiBzZXRUaW1lb3V0KCkgaG9sZHMgYSByZWZlcmVuY2UgdG8gXCJ0aGlzXCIsIGFuZCBoZW5jZVxuICAgKiBrZWVwcyB0aGUgXCJ0aGlzLl9rZXlcIiByZWZlcmVuY2UgdW50aWwgdGhlIHRpbWVyIGV4cGlyZWQuIFNvIGlmIHdlIGhhdmUgdXNlZFxuICAgKiB0aGUga2V5IGJlZm9yZSBpdCBleHBpcmVkLCB3ZSBzaG91bGQgY2xlYXIgdGhlIFwidGhpcy5fa2V5XCIgcmVmZXJlbmNlIGltbWVkaWF0ZWx5LlxuICAgKi9cbiAgcG9wKCk6IENyeXB0b0tleSB7XG4gICAgY29uc3QgcmV0ID0gdGhpcy5fa2V5O1xuICAgIHRoaXMuX2tleSA9IG51bGw7XG4gICAgaWYgKHRoaXMudGltZXIpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKTtcbiAgICAgIHRoaXMudGltZXIgPSBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9XG59XG4iXX0=
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import gql from 'graphql-tag';
|
|
2
|
-
const KeyGraphFragmentBase = `
|
|
3
|
-
{
|
|
4
|
-
keys {
|
|
5
|
-
id
|
|
6
|
-
}
|
|
7
|
-
keyLinks {
|
|
8
|
-
keyId
|
|
9
|
-
wrappingKeyId
|
|
10
|
-
nestedWrappingKeyIds
|
|
11
|
-
wrappedKey
|
|
12
|
-
}
|
|
13
|
-
passKeys {
|
|
14
|
-
id
|
|
15
|
-
}
|
|
16
|
-
passKeyLinks {
|
|
17
|
-
keyId
|
|
18
|
-
passKeyId
|
|
19
|
-
wrappedKey
|
|
20
|
-
}
|
|
21
|
-
__typename
|
|
22
|
-
}
|
|
23
|
-
`;
|
|
24
|
-
export const KeyGraphFragment = gql `
|
|
25
|
-
fragment KeyGraphFragment on KeyGraphType ${KeyGraphFragmentBase}
|
|
26
|
-
`;
|
|
27
|
-
export const KeyGraphField = `keyGraph ${KeyGraphFragmentBase}`;
|
|
28
|
-
export const FetchKeyGraphField = `keyGraph: fetchKeyGraph ${KeyGraphFragmentBase}`;
|
|
29
|
-
export const DirectoryQuery = gql `
|
|
30
|
-
query Directory($id: LrRelayIdInput!, $cachedKeyIds: [LrRelayIdInput!]) {
|
|
31
|
-
directory(id: $id) {
|
|
32
|
-
id
|
|
33
|
-
keyId
|
|
34
|
-
plainMeta
|
|
35
|
-
cipherMeta
|
|
36
|
-
}
|
|
37
|
-
keyGraph(cachedKeyIds: $cachedKeyIds) {
|
|
38
|
-
...KeyGraphFragment
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
${KeyGraphFragment}
|
|
42
|
-
`;
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcmllcy5ncWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvX2NvbW1vbi9xdWVyaWVzLmdxbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEdBQUcsTUFBTSxhQUFhLENBQUM7QUFFOUIsTUFBTSxvQkFBb0IsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBcUI1QixDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsR0FBRyxDQUFBOzRDQUNTLG9CQUFvQjtDQUMvRCxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sYUFBYSxHQUFHLFlBQVksb0JBQW9CLEVBQUUsQ0FBQztBQUVoRSxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRywyQkFBMkIsb0JBQW9CLEVBQUUsQ0FBQztBQUVwRixNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7Ozs7SUFZN0IsZ0JBQWdCO0NBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZ3FsIGZyb20gJ2dyYXBocWwtdGFnJztcblxuY29uc3QgS2V5R3JhcGhGcmFnbWVudEJhc2UgPSBgXG57XG4gIGtleXMge1xuICAgIGlkXG4gIH1cbiAga2V5TGlua3Mge1xuICAgIGtleUlkXG4gICAgd3JhcHBpbmdLZXlJZFxuICAgIG5lc3RlZFdyYXBwaW5nS2V5SWRzXG4gICAgd3JhcHBlZEtleVxuICB9XG4gIHBhc3NLZXlzIHtcbiAgICBpZFxuICB9XG4gIHBhc3NLZXlMaW5rcyB7XG4gICAga2V5SWRcbiAgICBwYXNzS2V5SWRcbiAgICB3cmFwcGVkS2V5XG4gIH1cbiAgX190eXBlbmFtZVxufVxuYDtcblxuZXhwb3J0IGNvbnN0IEtleUdyYXBoRnJhZ21lbnQgPSBncWxgXG5mcmFnbWVudCBLZXlHcmFwaEZyYWdtZW50IG9uIEtleUdyYXBoVHlwZSAke0tleUdyYXBoRnJhZ21lbnRCYXNlfVxuYDtcblxuZXhwb3J0IGNvbnN0IEtleUdyYXBoRmllbGQgPSBga2V5R3JhcGggJHtLZXlHcmFwaEZyYWdtZW50QmFzZX1gO1xuXG5leHBvcnQgY29uc3QgRmV0Y2hLZXlHcmFwaEZpZWxkID0gYGtleUdyYXBoOiBmZXRjaEtleUdyYXBoICR7S2V5R3JhcGhGcmFnbWVudEJhc2V9YDtcblxuZXhwb3J0IGNvbnN0IERpcmVjdG9yeVF1ZXJ5ID0gZ3FsYFxuICBxdWVyeSBEaXJlY3RvcnkoJGlkOiBMclJlbGF5SWRJbnB1dCEsICRjYWNoZWRLZXlJZHM6IFtMclJlbGF5SWRJbnB1dCFdKSB7XG4gICAgZGlyZWN0b3J5KGlkOiAkaWQpIHtcbiAgICAgIGlkXG4gICAgICBrZXlJZFxuICAgICAgcGxhaW5NZXRhXG4gICAgICBjaXBoZXJNZXRhXG4gICAgfVxuICAgIGtleUdyYXBoKGNhY2hlZEtleUlkczogJGNhY2hlZEtleUlkcykge1xuICAgICAgLi4uS2V5R3JhcGhGcmFnbWVudFxuICAgIH1cbiAgfVxuICAke0tleUdyYXBoRnJhZ21lbnR9XG5gO1xuIl19
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { KcBadLogicException } from './exceptions';
|
|
3
|
-
/**
|
|
4
|
-
* If you wish to change the behaviour of those, you'll need to create a derived
|
|
5
|
-
* class and override the methods.
|
|
6
|
-
* However, can't figure out a way to call the super() in the derived class ctor, error says
|
|
7
|
-
* the super call can't be in tested function.
|
|
8
|
-
*/
|
|
9
|
-
export const EXCLUDE_METHODS = [
|
|
10
|
-
'constructor',
|
|
11
|
-
'ngOnChanges',
|
|
12
|
-
'ngOnInit',
|
|
13
|
-
'ngDoCheck',
|
|
14
|
-
'ngAfterContentInit',
|
|
15
|
-
'ngAfterContentChecked',
|
|
16
|
-
'ngAfterViewInit',
|
|
17
|
-
'ngAfterViewChecked',
|
|
18
|
-
'ngOnDestroy',
|
|
19
|
-
];
|
|
20
|
-
// Patch all methods of the class.
|
|
21
|
-
//
|
|
22
|
-
// Note, this will not patch functions in the base class, it only
|
|
23
|
-
// patches the function defined in the current class because it's
|
|
24
|
-
// using getOwnPropertyNames(). You should be using composition for
|
|
25
|
-
// services anyway.
|
|
26
|
-
//
|
|
27
|
-
// Ref: https://stackoverflow.com/a/44409244
|
|
28
|
-
// The above approach might be a bit old. Now that we have ngZone.runOutsideAngular(),
|
|
29
|
-
// we should probably use that and not touch any angular zone internals. But the approach
|
|
30
|
-
// above doesn't require injecting ngZone.
|
|
31
|
-
//
|
|
32
|
-
// Ref: https://github.com/2ng/run-outside-angular/blob/master/src/run-outside-angular.ts
|
|
33
|
-
export function RunOutsideAngular({ ngZoneName, exceptLastPromise = true, excludeMethods = [], patchSetters = true, }) {
|
|
34
|
-
return (target) => {
|
|
35
|
-
function run(original, args) {
|
|
36
|
-
if (!this[ngZoneName]) {
|
|
37
|
-
throw new KcBadLogicException(`RunOutsideAngular decorator requires that ${target.name} inject NgZone as ${ngZoneName}`);
|
|
38
|
-
}
|
|
39
|
-
// runOutsideAngular() synchronously runs the callback and returns the result.
|
|
40
|
-
const result = this[ngZoneName].runOutsideAngular(() => original.apply(this, args));
|
|
41
|
-
if (exceptLastPromise && (result === null || result === void 0 ? void 0 : result.then)) {
|
|
42
|
-
// Bring back into zone which will trigger change detection properly.
|
|
43
|
-
// If this doesn't work, then we'll have to trigger change detection explicitly.
|
|
44
|
-
return Promise.resolve(result);
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
return result;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
// There should be no reason to run any of the ones in EXCLUDE_METHODS outside angular.
|
|
51
|
-
// So we always exclude them from patching. You can always explicit implement these ones differently.
|
|
52
|
-
excludeMethods = [...excludeMethods, ...EXCLUDE_METHODS];
|
|
53
|
-
const methods = Object.getOwnPropertyNames(target.prototype);
|
|
54
|
-
methods
|
|
55
|
-
.filter((method) => !excludeMethods.includes(method))
|
|
56
|
-
.forEach((method) => {
|
|
57
|
-
// Patch setters
|
|
58
|
-
// Note that setters do not return any thing. But they can still issue async calls.
|
|
59
|
-
// These async calls are not visible to the wrapper. So we can't issue change detection
|
|
60
|
-
// for setters when they are running outside angular.
|
|
61
|
-
if (patchSetters &&
|
|
62
|
-
Object.getOwnPropertyDescriptor(target.prototype, method).set) {
|
|
63
|
-
const original = Object.getOwnPropertyDescriptor(target.prototype, method).set;
|
|
64
|
-
Object.defineProperty(target.prototype, method, {
|
|
65
|
-
set(...args) {
|
|
66
|
-
return run.apply(this, [original, args]);
|
|
67
|
-
},
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
if (typeof target.prototype[method] === 'function') {
|
|
71
|
-
const original = target.prototype[method];
|
|
72
|
-
target.prototype[method] = function (...args) {
|
|
73
|
-
return run.apply(this, [original, args]);
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
});
|
|
77
|
-
return target;
|
|
78
|
-
};
|
|
79
|
-
}
|
|
80
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVuLW91dHNpZGUtYW5ndWxhci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9fY29tbW9uL3J1bi1vdXRzaWRlLWFuZ3VsYXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsdURBQXVEO0FBQ3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQTBCbkQ7Ozs7O0dBS0c7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUc7SUFDN0IsYUFBYTtJQUNiLGFBQWE7SUFDYixVQUFVO0lBQ1YsV0FBVztJQUNYLG9CQUFvQjtJQUNwQix1QkFBdUI7SUFDdkIsaUJBQWlCO0lBQ2pCLG9CQUFvQjtJQUNwQixhQUFhO0NBQ2QsQ0FBQztBQUVGLGtDQUFrQztBQUNsQyxFQUFFO0FBQ0YsaUVBQWlFO0FBQ2pFLGlFQUFpRTtBQUNqRSxtRUFBbUU7QUFDbkUsbUJBQW1CO0FBQ25CLEVBQUU7QUFDRiw0Q0FBNEM7QUFDNUMsc0ZBQXNGO0FBQ3RGLHlGQUF5RjtBQUN6RiwwQ0FBMEM7QUFDMUMsRUFBRTtBQUNGLHlGQUF5RjtBQUN6RixNQUFNLFVBQVUsaUJBQWlCLENBQUMsRUFDaEMsVUFBVSxFQUNWLGlCQUFpQixHQUFHLElBQUksRUFDeEIsY0FBYyxHQUFHLEVBQUUsRUFDbkIsWUFBWSxHQUFHLElBQUksR0FDSztJQUN4QixPQUFPLENBQUMsTUFBVyxFQUFFLEVBQUU7UUFDckIsU0FBUyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUk7WUFDekIsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDckIsTUFBTSxJQUFJLG1CQUFtQixDQUMzQiw2Q0FBNkMsTUFBTSxDQUFDLElBQUkscUJBQXFCLFVBQVUsRUFBRSxDQUMxRixDQUFDO2FBQ0g7WUFDRCw4RUFBOEU7WUFDOUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxDQUNyRCxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FDM0IsQ0FBQztZQUVGLElBQUksaUJBQWlCLEtBQUksTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLElBQUksQ0FBQSxFQUFFO2dCQUNyQyxxRUFBcUU7Z0JBQ3JFLGdGQUFnRjtnQkFDaEYsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ2hDO2lCQUFNO2dCQUNMLE9BQU8sTUFBTSxDQUFDO2FBQ2Y7UUFDSCxDQUFDO1FBRUQsdUZBQXVGO1FBQ3ZGLHFHQUFxRztRQUNyRyxjQUFjLEdBQUcsQ0FBQyxHQUFHLGNBQWMsRUFBRSxHQUFHLGVBQWUsQ0FBQyxDQUFDO1FBRXpELE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFFN0QsT0FBTzthQUNKLE1BQU0sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ3BELE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ2xCLGdCQUFnQjtZQUNoQixtRkFBbUY7WUFDbkYsdUZBQXVGO1lBQ3ZGLHFEQUFxRDtZQUNyRCxJQUNFLFlBQVk7Z0JBQ1osTUFBTSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUM3RDtnQkFDQSxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQzlDLE1BQU0sQ0FBQyxTQUFTLEVBQ2hCLE1BQU0sQ0FDUCxDQUFDLEdBQUcsQ0FBQztnQkFFTixNQUFNLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFO29CQUM5QyxHQUFHLENBQUMsR0FBRyxJQUFJO3dCQUNULE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDM0MsQ0FBQztpQkFDRixDQUFDLENBQUM7YUFDSjtZQUVELElBQUksT0FBTyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLFVBQVUsRUFBRTtnQkFDbEQsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFFMUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxVQUFVLEdBQUcsSUFBSTtvQkFDMUMsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxDQUFDLENBQUM7YUFDSDtRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUwsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEtjQmFkTG9naWNFeGNlcHRpb24gfSBmcm9tICcuL2V4Y2VwdGlvbnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJ1bk91dHNpZGVBbmd1bGFyQ29uZmlnIHtcbiAgbmdab25lTmFtZTogc3RyaW5nO1xuICAvLyBJZiB0cnVlLCBhIHNpbmdsZSBjaGFuZ2UgZGV0ZWN0aW9uIGlzIHRyaWdnZXJlZCBvbiByZXNvbHZlIG9mIHRoZSBQcm9taXNlIHJldHVybmVkXG4gIC8vIGZyb20gdGhlIGZ1bmN0aW9uLlxuICAvLyBlbHNlLCB0aGUgZW50aXJlIGZ1bmN0aW9uIGlzIHJ1biBvdXRzaWRlIG9mIHpvbmUuXG4gIC8vIE5vdGUgdGhhdCBpZiB0aGlzIGlzIGRpc2FibGVkLCB0aGVuIGNoYW5nZSBkZXRlY3Rpb24gaXMgbm90IHRyaWdnZXJlZCBldmVuIGlmIHlvdVxuICAvLyB1c2UgYXN5bmMgcGlwZXMgdG8gc3Vic2NyaWJlIHRvIG9ic2VydmFibGVzIG9uIHRoZSByZXN1bHRpbmcgcHJvbWlzZS4gVGhpcyBpcyBiZWNhdXNlXG4gIC8vIGFzeW5jIHBpcGVzIG9ubHkgX21hcmtzXyBhIGNvbXBvbmVudCBmb3IgY2hhbmdlIGRldGVjdGlvbiwgaXQgZG9lc24ndCBhY3R1YWxseSBfdHJpZ2dlcl9cbiAgLy8gdGhlIGNoYW5nZSBkZXRlY3Rpb24gY3ljbGUuXG4gIGV4Y2VwdExhc3RQcm9taXNlPzogYm9vbGVhbjtcbiAgLy8gQW55IG1ldGhvZCBvciBwcm9wZXJ0eSB5b3Ugd2lzaCB0byBleGNsdWRlIGZyb20gcGF0Y2guIFRoZSBtZXRob2RzIGluIEVYQ0xVREVfTUVUSE9EUyBhcmVcbiAgLy8gbmV2ZXIgcGF0Y2hlZC5cbiAgZXhjbHVkZU1ldGhvZHM/OiBzdHJpbmdbXTtcbiAgLy8gSWYgdHJ1ZSwgcGF0Y2ggdGhlIHNldHRlcnMgYXMgd2VsbC4gU2V0dGluZ3MgYXJlIHNvbWVcbiAgLy8gTm90ZSB0aGF0IHNldHRlcnMgZG8gbm90IHJldHVybiBhbnkgdGhpbmcuIEJ1dCB0aGV5IGNhbiBzdGlsbCBpc3N1ZSBhc3luYyBjYWxscy5cbiAgLy8gVGhlc2UgYXN5bmMgY2FsbHMgYXJlIG5vdCB2aXNpYmxlIHRvIHRoZSB3cmFwcGVyLiBTbyB3ZSBjYW4ndCBpc3N1ZSBjaGFuZ2UgZGV0ZWN0aW9uXG4gIC8vIGZvciBzZXR0ZXJzIHdoZW4gdGhleSBhcmUgcnVubmluZyBvdXRzaWRlIGFuZ3VsYXIuXG4gIC8vIE5vdGUgdGhhdCBnZXR0ZXJzIGFyZSBub3QgcGF0Y2hlZCBiZWNhdXNlIGdldHRlciBhbmQgc2V0dGVyIG11c3QgdXNlIHRoZSBzYW1lIHR5cGUuIFNvIGlmXG4gIC8vIHRoZSBnZXR0ZXIgcmV0dXJucyBhIHByb21pc2UsIHRoZW4gdGhlIHNldHRpbmcgbXVzdCBhbHdheSB0YWtlIGEgcHJvbWlzZS4gSXQgZG9lc24ndCBtYWtlXG4gIC8vIG11Y2ggc2Vuc2UgdG8gdXNlIGdldHRlcnMgYW5kIHNldHRlcnMgdGhpcyB3YXkuIEFuZCBpZiBnZXR0ZXIgcmV0dXJucyBhIHZhbHVlLCB0aGVuIHRoZXJlJ3NcbiAgLy8gbm8gbmVlZCB0byBwYXRjaCBpdCB0byBydW4gb3V0c2lkZSBhbmd1bGFyLlxuICBwYXRjaFNldHRlcnM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIElmIHlvdSB3aXNoIHRvIGNoYW5nZSB0aGUgYmVoYXZpb3VyIG9mIHRob3NlLCB5b3UnbGwgbmVlZCB0byBjcmVhdGUgYSBkZXJpdmVkXG4gKiBjbGFzcyBhbmQgb3ZlcnJpZGUgdGhlIG1ldGhvZHMuXG4gKiBIb3dldmVyLCBjYW4ndCBmaWd1cmUgb3V0IGEgd2F5IHRvIGNhbGwgdGhlIHN1cGVyKCkgaW4gdGhlIGRlcml2ZWQgY2xhc3MgY3RvciwgZXJyb3Igc2F5c1xuICogdGhlIHN1cGVyIGNhbGwgY2FuJ3QgYmUgaW4gdGVzdGVkIGZ1bmN0aW9uLlxuICovXG5leHBvcnQgY29uc3QgRVhDTFVERV9NRVRIT0RTID0gW1xuICAnY29uc3RydWN0b3InLFxuICAnbmdPbkNoYW5nZXMnLFxuICAnbmdPbkluaXQnLFxuICAnbmdEb0NoZWNrJyxcbiAgJ25nQWZ0ZXJDb250ZW50SW5pdCcsXG4gICduZ0FmdGVyQ29udGVudENoZWNrZWQnLFxuICAnbmdBZnRlclZpZXdJbml0JyxcbiAgJ25nQWZ0ZXJWaWV3Q2hlY2tlZCcsXG4gICduZ09uRGVzdHJveScsXG5dO1xuXG4vLyBQYXRjaCBhbGwgbWV0aG9kcyBvZiB0aGUgY2xhc3MuXG4vL1xuLy8gTm90ZSwgdGhpcyB3aWxsIG5vdCBwYXRjaCBmdW5jdGlvbnMgaW4gdGhlIGJhc2UgY2xhc3MsIGl0IG9ubHlcbi8vIHBhdGNoZXMgdGhlIGZ1bmN0aW9uIGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgY2xhc3MgYmVjYXVzZSBpdCdzXG4vLyB1c2luZyBnZXRPd25Qcm9wZXJ0eU5hbWVzKCkuIFlvdSBzaG91bGQgYmUgdXNpbmcgY29tcG9zaXRpb24gZm9yXG4vLyBzZXJ2aWNlcyBhbnl3YXkuXG4vL1xuLy8gUmVmOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvNDQ0MDkyNDRcbi8vIFRoZSBhYm92ZSBhcHByb2FjaCBtaWdodCBiZSBhIGJpdCBvbGQuIE5vdyB0aGF0IHdlIGhhdmUgbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCksXG4vLyB3ZSBzaG91bGQgcHJvYmFibHkgdXNlIHRoYXQgYW5kIG5vdCB0b3VjaCBhbnkgYW5ndWxhciB6b25lIGludGVybmFscy4gQnV0IHRoZSBhcHByb2FjaFxuLy8gYWJvdmUgZG9lc24ndCByZXF1aXJlIGluamVjdGluZyBuZ1pvbmUuXG4vL1xuLy8gUmVmOiBodHRwczovL2dpdGh1Yi5jb20vMm5nL3J1bi1vdXRzaWRlLWFuZ3VsYXIvYmxvYi9tYXN0ZXIvc3JjL3J1bi1vdXRzaWRlLWFuZ3VsYXIudHNcbmV4cG9ydCBmdW5jdGlvbiBSdW5PdXRzaWRlQW5ndWxhcih7XG4gIG5nWm9uZU5hbWUsXG4gIGV4Y2VwdExhc3RQcm9taXNlID0gdHJ1ZSxcbiAgZXhjbHVkZU1ldGhvZHMgPSBbXSxcbiAgcGF0Y2hTZXR0ZXJzID0gdHJ1ZSxcbn06IFJ1bk91dHNpZGVBbmd1bGFyQ29uZmlnKSB7XG4gIHJldHVybiAodGFyZ2V0OiBhbnkpID0+IHtcbiAgICBmdW5jdGlvbiBydW4ob3JpZ2luYWwsIGFyZ3MpIHtcbiAgICAgIGlmICghdGhpc1tuZ1pvbmVOYW1lXSkge1xuICAgICAgICB0aHJvdyBuZXcgS2NCYWRMb2dpY0V4Y2VwdGlvbihcbiAgICAgICAgICBgUnVuT3V0c2lkZUFuZ3VsYXIgZGVjb3JhdG9yIHJlcXVpcmVzIHRoYXQgJHt0YXJnZXQubmFtZX0gaW5qZWN0IE5nWm9uZSBhcyAke25nWm9uZU5hbWV9YFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgLy8gcnVuT3V0c2lkZUFuZ3VsYXIoKSBzeW5jaHJvbm91c2x5IHJ1bnMgdGhlIGNhbGxiYWNrIGFuZCByZXR1cm5zIHRoZSByZXN1bHQuXG4gICAgICBjb25zdCByZXN1bHQgPSB0aGlzW25nWm9uZU5hbWVdLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+XG4gICAgICAgIG9yaWdpbmFsLmFwcGx5KHRoaXMsIGFyZ3MpXG4gICAgICApO1xuXG4gICAgICBpZiAoZXhjZXB0TGFzdFByb21pc2UgJiYgcmVzdWx0Py50aGVuKSB7XG4gICAgICAgIC8vIEJyaW5nIGJhY2sgaW50byB6b25lIHdoaWNoIHdpbGwgdHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uIHByb3Blcmx5LlxuICAgICAgICAvLyBJZiB0aGlzIGRvZXNuJ3Qgd29yaywgdGhlbiB3ZSdsbCBoYXZlIHRvIHRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbiBleHBsaWNpdGx5LlxuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRoZXJlIHNob3VsZCBiZSBubyByZWFzb24gdG8gcnVuIGFueSBvZiB0aGUgb25lcyBpbiBFWENMVURFX01FVEhPRFMgb3V0c2lkZSBhbmd1bGFyLlxuICAgIC8vIFNvIHdlIGFsd2F5cyBleGNsdWRlIHRoZW0gZnJvbSBwYXRjaGluZy4gWW91IGNhbiBhbHdheXMgZXhwbGljaXQgaW1wbGVtZW50IHRoZXNlIG9uZXMgZGlmZmVyZW50bHkuXG4gICAgZXhjbHVkZU1ldGhvZHMgPSBbLi4uZXhjbHVkZU1ldGhvZHMsIC4uLkVYQ0xVREVfTUVUSE9EU107XG5cbiAgICBjb25zdCBtZXRob2RzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGFyZ2V0LnByb3RvdHlwZSk7XG5cbiAgICBtZXRob2RzXG4gICAgICAuZmlsdGVyKChtZXRob2QpID0+ICFleGNsdWRlTWV0aG9kcy5pbmNsdWRlcyhtZXRob2QpKVxuICAgICAgLmZvckVhY2goKG1ldGhvZCkgPT4ge1xuICAgICAgICAvLyBQYXRjaCBzZXR0ZXJzXG4gICAgICAgIC8vIE5vdGUgdGhhdCBzZXR0ZXJzIGRvIG5vdCByZXR1cm4gYW55IHRoaW5nLiBCdXQgdGhleSBjYW4gc3RpbGwgaXNzdWUgYXN5bmMgY2FsbHMuXG4gICAgICAgIC8vIFRoZXNlIGFzeW5jIGNhbGxzIGFyZSBub3QgdmlzaWJsZSB0byB0aGUgd3JhcHBlci4gU28gd2UgY2FuJ3QgaXNzdWUgY2hhbmdlIGRldGVjdGlvblxuICAgICAgICAvLyBmb3Igc2V0dGVycyB3aGVuIHRoZXkgYXJlIHJ1bm5pbmcgb3V0c2lkZSBhbmd1bGFyLlxuICAgICAgICBpZiAoXG4gICAgICAgICAgcGF0Y2hTZXR0ZXJzICYmXG4gICAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQucHJvdG90eXBlLCBtZXRob2QpLnNldFxuICAgICAgICApIHtcbiAgICAgICAgICBjb25zdCBvcmlnaW5hbCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoXG4gICAgICAgICAgICB0YXJnZXQucHJvdG90eXBlLFxuICAgICAgICAgICAgbWV0aG9kXG4gICAgICAgICAgKS5zZXQ7XG5cbiAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LnByb3RvdHlwZSwgbWV0aG9kLCB7XG4gICAgICAgICAgICBzZXQoLi4uYXJncykge1xuICAgICAgICAgICAgICByZXR1cm4gcnVuLmFwcGx5KHRoaXMsIFtvcmlnaW5hbCwgYXJnc10pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2YgdGFyZ2V0LnByb3RvdHlwZVttZXRob2RdID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgY29uc3Qgb3JpZ2luYWwgPSB0YXJnZXQucHJvdG90eXBlW21ldGhvZF07XG5cbiAgICAgICAgICB0YXJnZXQucHJvdG90eXBlW21ldGhvZF0gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgICAgICAgICAgcmV0dXJuIHJ1bi5hcHBseSh0aGlzLCBbb3JpZ2luYWwsIGFyZ3NdKTtcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHJldHVybiB0YXJnZXQ7XG4gIH07XG59XG4iXX0=
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { KcBadArgumentException } from './exceptions';
|
|
2
|
-
const COGNITO_LOCALSTORAGE_PREFIX = 'CognitoIdentityServiceProvider';
|
|
3
|
-
/**
|
|
4
|
-
* Remove all keys in localstorage with matching prefix.
|
|
5
|
-
* A prefix must be specified. If you want to remove everything, then just use localStorage.clear().
|
|
6
|
-
*
|
|
7
|
-
* @param prefix Keys with this prefix will be removed.
|
|
8
|
-
*/
|
|
9
|
-
export function clearLocalStorage(prefix) {
|
|
10
|
-
if (!prefix) {
|
|
11
|
-
throw new KcBadArgumentException('You must specify a non empty prefix.');
|
|
12
|
-
}
|
|
13
|
-
// Remove all persisted session variables
|
|
14
|
-
Object.keys(localStorage).forEach((key) => {
|
|
15
|
-
if (key.startsWith(prefix)) {
|
|
16
|
-
localStorage.removeItem(key);
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Clear all items related to cognito in localstorage.
|
|
22
|
-
* The remember device function sometimes interferes with creating new users
|
|
23
|
-
* on TP based password reset.
|
|
24
|
-
*/
|
|
25
|
-
export function clearCognitoLocalStorage() {
|
|
26
|
-
clearLocalStorage(COGNITO_LOCALSTORAGE_PREFIX);
|
|
27
|
-
}
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvc3JjL2xpYi9fY29tbW9uL3N0b3JhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBRXRELE1BQU0sMkJBQTJCLEdBQUcsZ0NBQWdDLENBQUM7QUFFckU7Ozs7O0dBS0c7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsTUFBYztJQUM5QyxJQUFJLENBQUMsTUFBTSxFQUFFO1FBQ1gsTUFBTSxJQUFJLHNCQUFzQixDQUFDLHNDQUFzQyxDQUFDLENBQUM7S0FDMUU7SUFFRCx5Q0FBeUM7SUFDekMsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtRQUN4QyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDMUIsWUFBWSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUM5QjtJQUNILENBQUMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsd0JBQXdCO0lBQ3RDLGlCQUFpQixDQUFDLDJCQUEyQixDQUFDLENBQUM7QUFDakQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEtjQmFkQXJndW1lbnRFeGNlcHRpb24gfSBmcm9tICcuL2V4Y2VwdGlvbnMnO1xuXG5jb25zdCBDT0dOSVRPX0xPQ0FMU1RPUkFHRV9QUkVGSVggPSAnQ29nbml0b0lkZW50aXR5U2VydmljZVByb3ZpZGVyJztcblxuLyoqXG4gKiBSZW1vdmUgYWxsIGtleXMgaW4gbG9jYWxzdG9yYWdlIHdpdGggbWF0Y2hpbmcgcHJlZml4LlxuICogQSBwcmVmaXggbXVzdCBiZSBzcGVjaWZpZWQuIElmIHlvdSB3YW50IHRvIHJlbW92ZSBldmVyeXRoaW5nLCB0aGVuIGp1c3QgdXNlIGxvY2FsU3RvcmFnZS5jbGVhcigpLlxuICpcbiAqIEBwYXJhbSBwcmVmaXggS2V5cyB3aXRoIHRoaXMgcHJlZml4IHdpbGwgYmUgcmVtb3ZlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyTG9jYWxTdG9yYWdlKHByZWZpeDogc3RyaW5nKSB7XG4gIGlmICghcHJlZml4KSB7XG4gICAgdGhyb3cgbmV3IEtjQmFkQXJndW1lbnRFeGNlcHRpb24oJ1lvdSBtdXN0IHNwZWNpZnkgYSBub24gZW1wdHkgcHJlZml4LicpO1xuICB9XG5cbiAgLy8gUmVtb3ZlIGFsbCBwZXJzaXN0ZWQgc2Vzc2lvbiB2YXJpYWJsZXNcbiAgT2JqZWN0LmtleXMobG9jYWxTdG9yYWdlKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICBpZiAoa2V5LnN0YXJ0c1dpdGgocHJlZml4KSkge1xuICAgICAgbG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIENsZWFyIGFsbCBpdGVtcyByZWxhdGVkIHRvIGNvZ25pdG8gaW4gbG9jYWxzdG9yYWdlLlxuICogVGhlIHJlbWVtYmVyIGRldmljZSBmdW5jdGlvbiBzb21ldGltZXMgaW50ZXJmZXJlcyB3aXRoIGNyZWF0aW5nIG5ldyB1c2Vyc1xuICogb24gVFAgYmFzZWQgcGFzc3dvcmQgcmVzZXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhckNvZ25pdG9Mb2NhbFN0b3JhZ2UoKSB7XG4gIGNsZWFyTG9jYWxTdG9yYWdlKENPR05JVE9fTE9DQUxTVE9SQUdFX1BSRUZJWCk7XG59XG4iXX0=
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvX2NvbW1vbi90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDaGFuZ2UgYSBzZXQgb2Ygc3BlY2lmaWVkIGtleXMgdG8gb3B0aW9uYWwsIHdoaWxlIHRoZSByZXN0IHJlbWFpbiB1bmNoYW5nZWRcbiAqL1xuZXhwb3J0IHR5cGUgU29tZVBhcnRpYWw8VCwgSyBleHRlbmRzIGtleW9mIFQ+ID0gUGljazxQYXJ0aWFsPFQ+LCBLPiAmXG4gIE9taXQ8VCwgSz47XG5cbi8qKlxuICogQ2hhbmdlIGEgc2V0IG9mIHNwZWNpZmllZCBrZXlzIHRvIHJlcXVpcmVkLCB3aGlsZSB0aGUgcmVzdCByZW1haW4gdW5jaGFuZ2VkXG4gKi9cbmV4cG9ydCB0eXBlIFNvbWVSZXF1aXJlZDxULCBLIGV4dGVuZHMga2V5b2YgVD4gPSBQaWNrPFJlcXVpcmVkPFQ+LCBLPiAmXG4gIE9taXQ8VCwgSz47XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWRnZTxUPiB7XG4gIG5vZGU6IFQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSGFzRWRnZXM8VD4ge1xuICBlZGdlczogRWRnZTxUPltdO1xufVxuXG5leHBvcnQgdHlwZSBNYXlBc3luYzxUPiA9IFQgfCBQcm9taXNlPFQ+O1xuIl19
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import { __awaiter } from "tslib";
|
|
3
|
-
import { KcBadLogicException } from './exceptions';
|
|
4
|
-
// promote everything to a promise.
|
|
5
|
-
export function promiseAllMayAsync(values) {
|
|
6
|
-
if (!Array.isArray(values)) {
|
|
7
|
-
throw new Error('not array');
|
|
8
|
-
}
|
|
9
|
-
if (values.some((value) => value === null || value === void 0 ? void 0 : value.then)) {
|
|
10
|
-
const ret = Promise.all(values);
|
|
11
|
-
return ret;
|
|
12
|
-
}
|
|
13
|
-
else {
|
|
14
|
-
return values;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
function remap(obj, values) {
|
|
18
|
-
const ret = {};
|
|
19
|
-
for (const [i, key] of Object.keys(obj).entries()) {
|
|
20
|
-
ret[key] = values[i];
|
|
21
|
-
}
|
|
22
|
-
return ret;
|
|
23
|
-
}
|
|
24
|
-
export function mapValuesMayAsync(obj,
|
|
25
|
-
// callback can either return a Promise, or a value.
|
|
26
|
-
// The Promise<any> type is redundant but it shows that it can return a promise
|
|
27
|
-
callback) {
|
|
28
|
-
const values = promiseAllMayAsync(Object.entries(obj).map(([key, value]) => callback(value, key, obj)));
|
|
29
|
-
if (values.then) {
|
|
30
|
-
return values.then((resolvedValues) => remap(obj, resolvedValues));
|
|
31
|
-
}
|
|
32
|
-
else {
|
|
33
|
-
return remap(obj, values);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
export function mapValuesAsync(obj,
|
|
37
|
-
// callback can either return a Promise, or a value.
|
|
38
|
-
// The Promise<any> type is redundant but it shows that it can return a promise
|
|
39
|
-
// By default, it returns the value without any process, so you can use
|
|
40
|
-
// this to simply wait for all promises in an object to resolve.
|
|
41
|
-
callback) {
|
|
42
|
-
const values = Promise.all(Object.entries(obj).map(([key, value]) => callback ? callback(value, key, obj) : value));
|
|
43
|
-
return values.then((resolvedValues) => remap(obj, resolvedValues));
|
|
44
|
-
}
|
|
45
|
-
/**
|
|
46
|
-
* Returns the defaultValue when value is undefined
|
|
47
|
-
* @param value The value to check
|
|
48
|
-
* @param defaultValue The value to return if value is undefined.
|
|
49
|
-
*/
|
|
50
|
-
export function undefinedDefault(value, defaultValue) {
|
|
51
|
-
return value === undefined ? defaultValue : value;
|
|
52
|
-
}
|
|
53
|
-
export function getAccessJwtToken(auth) {
|
|
54
|
-
return __awaiter(this, void 0, void 0, function* () {
|
|
55
|
-
try {
|
|
56
|
-
return (yield auth.currentSession()).getAccessToken().getJwtToken();
|
|
57
|
-
}
|
|
58
|
-
catch (error) {
|
|
59
|
-
// The error thrown by Cognito is of type string.
|
|
60
|
-
return '';
|
|
61
|
-
}
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
export function assertExactlyOne(options) {
|
|
65
|
-
const keys = Object.keys(options);
|
|
66
|
-
if (keys.length < 2) {
|
|
67
|
-
throw new KcBadLogicException('You must provide 2 or more fields in the argument.');
|
|
68
|
-
}
|
|
69
|
-
if (keys.filter((key) => options[key] != null).length != 1) {
|
|
70
|
-
throw new KcBadLogicException(`You must provide exactly one argument that != null.`);
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlL3NyYy9saWIvX2NvbW1vbi91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7O0FBR3ZELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVuRCxtQ0FBbUM7QUFDbkMsTUFBTSxVQUFVLGtCQUFrQixDQUFDLE1BQWE7SUFDOUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDMUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztLQUM5QjtJQUNELElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLElBQUksQ0FBQyxFQUFFO1FBQ3ZDLE1BQU0sR0FBRyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDaEMsT0FBTyxHQUFHLENBQUM7S0FDWjtTQUFNO1FBQ0wsT0FBTyxNQUFNLENBQUM7S0FDZjtBQUNILENBQUM7QUFFRCxTQUFTLEtBQUssQ0FBQyxHQUFHLEVBQUUsTUFBTTtJQUN4QixNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7SUFDZixLQUFLLE1BQU0sQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtRQUNqRCxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ3RCO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsTUFBTSxVQUFVLGlCQUFpQixDQUMvQixHQUF3QjtBQUN4QixvREFBb0Q7QUFDcEQsK0VBQStFO0FBQy9FLFFBSXVCO0lBRXZCLE1BQU0sTUFBTSxHQUFHLGtCQUFrQixDQUMvQixNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUNyRSxDQUFDO0lBRUYsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFO1FBQ2YsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7S0FDcEU7U0FBTTtRQUNMLE9BQU8sS0FBSyxDQUFDLEdBQUcsRUFBRSxNQUFNLENBQUMsQ0FBQztLQUMzQjtBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUM1QixHQUF3QjtBQUN4QixvREFBb0Q7QUFDcEQsK0VBQStFO0FBQy9FLHVFQUF1RTtBQUN2RSxnRUFBZ0U7QUFDaEUsUUFJdUI7SUFFdkIsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FDeEIsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQ3ZDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FDN0MsQ0FDRixDQUFDO0lBRUYsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7QUFDckUsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsS0FBVSxFQUFFLFlBQWlCO0lBQzVELE9BQU8sS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDcEQsQ0FBQztBQUVELE1BQU0sVUFBZ0IsaUJBQWlCLENBQUMsSUFBZTs7UUFDckQsSUFBSTtZQUNGLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3JFO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxpREFBaUQ7WUFDakQsT0FBTyxFQUFFLENBQUM7U0FDWDtJQUNILENBQUM7Q0FBQTtBQUVELE1BQU0sVUFBVSxnQkFBZ0IsQ0FBQyxPQUFnQztJQUMvRCxNQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDbkIsTUFBTSxJQUFJLG1CQUFtQixDQUMzQixvREFBb0QsQ0FDckQsQ0FBQztLQUNIO0lBRUQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRTtRQUMxRCxNQUFNLElBQUksbUJBQW1CLENBQzNCLHFEQUFxRCxDQUN0RCxDQUFDO0tBQ0g7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuXG5pbXBvcnQgeyBBdXRoQ2xhc3MgfSBmcm9tICdAYXdzLWFtcGxpZnkvYXV0aC9saWItZXNtL0F1dGgnO1xuaW1wb3J0IHsgS2NCYWRMb2dpY0V4Y2VwdGlvbiB9IGZyb20gJy4vZXhjZXB0aW9ucyc7XG5cbi8vIHByb21vdGUgZXZlcnl0aGluZyB0byBhIHByb21pc2UuXG5leHBvcnQgZnVuY3Rpb24gcHJvbWlzZUFsbE1heUFzeW5jKHZhbHVlczogYW55W10pOiBQcm9taXNlPGFueT4gfCBhbnkge1xuICBpZiAoIUFycmF5LmlzQXJyYXkodmFsdWVzKSkge1xuICAgIHRocm93IG5ldyBFcnJvcignbm90IGFycmF5Jyk7XG4gIH1cbiAgaWYgKHZhbHVlcy5zb21lKCh2YWx1ZSkgPT4gdmFsdWU/LnRoZW4pKSB7XG4gICAgY29uc3QgcmV0ID0gUHJvbWlzZS5hbGwodmFsdWVzKTtcbiAgICByZXR1cm4gcmV0O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB2YWx1ZXM7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtYXAob2JqLCB2YWx1ZXMpIHtcbiAgY29uc3QgcmV0ID0ge307XG4gIGZvciAoY29uc3QgW2ksIGtleV0gb2YgT2JqZWN0LmtleXMob2JqKS5lbnRyaWVzKCkpIHtcbiAgICByZXRba2V5XSA9IHZhbHVlc1tpXTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWFwVmFsdWVzTWF5QXN5bmMoXG4gIG9iajogUmVjb3JkPHN0cmluZywgYW55PixcbiAgLy8gY2FsbGJhY2sgY2FuIGVpdGhlciByZXR1cm4gYSBQcm9taXNlLCBvciBhIHZhbHVlLlxuICAvLyBUaGUgUHJvbWlzZTxhbnk+IHR5cGUgaXMgcmVkdW5kYW50IGJ1dCBpdCBzaG93cyB0aGF0IGl0IGNhbiByZXR1cm4gYSBwcm9taXNlXG4gIGNhbGxiYWNrOiAoXG4gICAgdmFsdWU6IGFueSxcbiAgICBrZXk6IHN0cmluZyxcbiAgICBvYmo6IFJlY29yZDxzdHJpbmcsIGFueT5cbiAgKSA9PiBhbnkgfCBQcm9taXNlPGFueT5cbik6IFByb21pc2U8YW55PiB8IGFueSB7XG4gIGNvbnN0IHZhbHVlcyA9IHByb21pc2VBbGxNYXlBc3luYyhcbiAgICBPYmplY3QuZW50cmllcyhvYmopLm1hcCgoW2tleSwgdmFsdWVdKSA9PiBjYWxsYmFjayh2YWx1ZSwga2V5LCBvYmopKVxuICApO1xuXG4gIGlmICh2YWx1ZXMudGhlbikge1xuICAgIHJldHVybiB2YWx1ZXMudGhlbigocmVzb2x2ZWRWYWx1ZXMpID0+IHJlbWFwKG9iaiwgcmVzb2x2ZWRWYWx1ZXMpKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gcmVtYXAob2JqLCB2YWx1ZXMpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtYXBWYWx1ZXNBc3luYyhcbiAgb2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAvLyBjYWxsYmFjayBjYW4gZWl0aGVyIHJldHVybiBhIFByb21pc2UsIG9yIGEgdmFsdWUuXG4gIC8vIFRoZSBQcm9taXNlPGFueT4gdHlwZSBpcyByZWR1bmRhbnQgYnV0IGl0IHNob3dzIHRoYXQgaXQgY2FuIHJldHVybiBhIHByb21pc2VcbiAgLy8gQnkgZGVmYXVsdCwgaXQgcmV0dXJucyB0aGUgdmFsdWUgd2l0aG91dCBhbnkgcHJvY2Vzcywgc28geW91IGNhbiB1c2VcbiAgLy8gdGhpcyB0byBzaW1wbHkgd2FpdCBmb3IgYWxsIHByb21pc2VzIGluIGFuIG9iamVjdCB0byByZXNvbHZlLlxuICBjYWxsYmFjaz86IChcbiAgICB2YWx1ZTogYW55LFxuICAgIGtleTogc3RyaW5nLFxuICAgIG9iajogUmVjb3JkPHN0cmluZywgYW55PlxuICApID0+IGFueSB8IFByb21pc2U8YW55PlxuKTogUHJvbWlzZTxhbnk+IHtcbiAgY29uc3QgdmFsdWVzID0gUHJvbWlzZS5hbGwoXG4gICAgT2JqZWN0LmVudHJpZXMob2JqKS5tYXAoKFtrZXksIHZhbHVlXSkgPT5cbiAgICAgIGNhbGxiYWNrID8gY2FsbGJhY2sodmFsdWUsIGtleSwgb2JqKSA6IHZhbHVlXG4gICAgKVxuICApO1xuXG4gIHJldHVybiB2YWx1ZXMudGhlbigocmVzb2x2ZWRWYWx1ZXMpID0+IHJlbWFwKG9iaiwgcmVzb2x2ZWRWYWx1ZXMpKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBkZWZhdWx0VmFsdWUgd2hlbiB2YWx1ZSBpcyB1bmRlZmluZWRcbiAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2tcbiAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgVGhlIHZhbHVlIHRvIHJldHVybiBpZiB2YWx1ZSBpcyB1bmRlZmluZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmRlZmluZWREZWZhdWx0KHZhbHVlOiBhbnksIGRlZmF1bHRWYWx1ZTogYW55KSB7XG4gIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gZGVmYXVsdFZhbHVlIDogdmFsdWU7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRBY2Nlc3NKd3RUb2tlbihhdXRoOiBBdXRoQ2xhc3MpOiBQcm9taXNlPHN0cmluZz4ge1xuICB0cnkge1xuICAgIHJldHVybiAoYXdhaXQgYXV0aC5jdXJyZW50U2Vzc2lvbigpKS5nZXRBY2Nlc3NUb2tlbigpLmdldEp3dFRva2VuKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgLy8gVGhlIGVycm9yIHRocm93biBieSBDb2duaXRvIGlzIG9mIHR5cGUgc3RyaW5nLlxuICAgIHJldHVybiAnJztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0RXhhY3RseU9uZShvcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikge1xuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMob3B0aW9ucyk7XG4gIGlmIChrZXlzLmxlbmd0aCA8IDIpIHtcbiAgICB0aHJvdyBuZXcgS2NCYWRMb2dpY0V4Y2VwdGlvbihcbiAgICAgICdZb3UgbXVzdCBwcm92aWRlIDIgb3IgbW9yZSBmaWVsZHMgaW4gdGhlIGFyZ3VtZW50LidcbiAgICApO1xuICB9XG5cbiAgaWYgKGtleXMuZmlsdGVyKChrZXkpID0+IG9wdGlvbnNba2V5XSAhPSBudWxsKS5sZW5ndGggIT0gMSkge1xuICAgIHRocm93IG5ldyBLY0JhZExvZ2ljRXhjZXB0aW9uKFxuICAgICAgYFlvdSBtdXN0IHByb3ZpZGUgZXhhY3RseSBvbmUgYXJndW1lbnQgdGhhdCAhPSBudWxsLmBcbiAgICApO1xuICB9XG59XG4iXX0=
|