@doctorus/common 0.0.45 → 0.0.46
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/README.md +8 -4
- package/lib/status/index.d.ts +1 -0
- package/lib/status/index.js +3 -2
- package/lib/status/membership-status.d.ts +51 -0
- package/lib/status/membership-status.js +155 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -28,6 +28,7 @@ import {
|
|
|
28
28
|
|
|
29
29
|
// Status
|
|
30
30
|
MedicalServiceStatus,
|
|
31
|
+
MembershipStatus,
|
|
31
32
|
getStatusLabel,
|
|
32
33
|
getStatusMetadata,
|
|
33
34
|
|
|
@@ -64,12 +65,15 @@ getOperationLabel(operation, 'fr-FR'); // "Creer Ordonnance"
|
|
|
64
65
|
Provides reusable status enums and metadata with labels, descriptions, colors, and icons.
|
|
65
66
|
|
|
66
67
|
```ts
|
|
67
|
-
import { MedicalServiceStatus, getStatusLabel, getStatusMetadata } from '@doctorus/common';
|
|
68
|
+
import { MedicalServiceStatus, MembershipStatus, getStatusLabel, getStatusMetadata } from '@doctorus/common';
|
|
68
69
|
|
|
69
|
-
const
|
|
70
|
+
const serviceStatus = MedicalServiceStatus.IN_PROGRESS;
|
|
71
|
+
getStatusLabel(serviceStatus, 'us-EN'); // "In Progress"
|
|
72
|
+
getStatusMetadata(serviceStatus).icon; // e.g. "medical_services"
|
|
70
73
|
|
|
71
|
-
|
|
72
|
-
|
|
74
|
+
const membershipStatus = MembershipStatus.ACTIVE;
|
|
75
|
+
getStatusLabel(membershipStatus, 'us-EN'); // "Active"
|
|
76
|
+
getStatusMetadata(membershipStatus).color; // "#4CAF50"
|
|
73
77
|
```
|
|
74
78
|
|
|
75
79
|
[Status documentation](src/status/README.md)
|
package/lib/status/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export * from './types';
|
|
5
5
|
export * from './medical-service-status';
|
|
6
|
+
export * as MembershipStatus from './membership-status';
|
|
6
7
|
export * as AccountLocationStatus from './account-location-status';
|
|
7
8
|
export * as MedicalHistoryStatus from './medical-history-status';
|
|
8
9
|
export * from './boolean-status';
|
package/lib/status/index.js
CHANGED
|
@@ -36,14 +36,15 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
36
36
|
};
|
|
37
37
|
})();
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.MedicalHistoryStatus = exports.AccountLocationStatus = void 0;
|
|
39
|
+
exports.MedicalHistoryStatus = exports.AccountLocationStatus = exports.MembershipStatus = void 0;
|
|
40
40
|
/**
|
|
41
41
|
* Status module exports
|
|
42
42
|
*/
|
|
43
43
|
__exportStar(require("./types"), exports);
|
|
44
44
|
__exportStar(require("./medical-service-status"), exports);
|
|
45
|
+
exports.MembershipStatus = __importStar(require("./membership-status"));
|
|
45
46
|
exports.AccountLocationStatus = __importStar(require("./account-location-status"));
|
|
46
47
|
exports.MedicalHistoryStatus = __importStar(require("./medical-history-status"));
|
|
47
48
|
__exportStar(require("./boolean-status"), exports);
|
|
48
49
|
__exportStar(require("./utils"), exports);
|
|
49
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RhdHVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztHQUVHO0FBQ0gsMENBQXdCO0FBQ3hCLDJEQUF5QztBQUN6Qyx3RUFBd0Q7QUFDeEQsbUZBQW1FO0FBQ25FLGlGQUFpRTtBQUNqRSxtREFBaUM7QUFDakMsMENBQXdCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTdGF0dXMgbW9kdWxlIGV4cG9ydHNcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL21lZGljYWwtc2VydmljZS1zdGF0dXMnO1xuZXhwb3J0ICogYXMgTWVtYmVyc2hpcFN0YXR1cyBmcm9tICcuL21lbWJlcnNoaXAtc3RhdHVzJztcbmV4cG9ydCAqIGFzIEFjY291bnRMb2NhdGlvblN0YXR1cyBmcm9tICcuL2FjY291bnQtbG9jYXRpb24tc3RhdHVzJztcbmV4cG9ydCAqIGFzIE1lZGljYWxIaXN0b3J5U3RhdHVzIGZyb20gJy4vbWVkaWNhbC1oaXN0b3J5LXN0YXR1cyc7XG5leHBvcnQgKiBmcm9tICcuL2Jvb2xlYW4tc3RhdHVzJztcbmV4cG9ydCAqIGZyb20gJy4vdXRpbHMnO1xuIl19
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Membership Status enumeration and metadata
|
|
3
|
+
* Describes the lifecycle state of a user's membership in an account
|
|
4
|
+
*/
|
|
5
|
+
import type { StatusMetadata, Locale } from './types';
|
|
6
|
+
export declare enum MembershipStatus {
|
|
7
|
+
ACTIVE = "active",
|
|
8
|
+
PENDING = "pending",
|
|
9
|
+
REVOKED = "revoked",
|
|
10
|
+
REFUSED = "refused"
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Membership Status metadata configuration
|
|
14
|
+
*/
|
|
15
|
+
export declare const MEMBERSHIP_STATUS_METADATA: Record<MembershipStatus, StatusMetadata>;
|
|
16
|
+
/**
|
|
17
|
+
* Get status metadata
|
|
18
|
+
*/
|
|
19
|
+
export declare function getStatusMetadata(status: MembershipStatus): StatusMetadata;
|
|
20
|
+
/**
|
|
21
|
+
* Get status icon
|
|
22
|
+
*/
|
|
23
|
+
export declare function getStatusIcon(status: MembershipStatus): string;
|
|
24
|
+
/**
|
|
25
|
+
* Get status color
|
|
26
|
+
*/
|
|
27
|
+
export declare function getStatusColor(status: MembershipStatus): string;
|
|
28
|
+
/**
|
|
29
|
+
* Get status short label
|
|
30
|
+
*/
|
|
31
|
+
export declare function getStatusLabel(status: MembershipStatus, locale: Locale): string;
|
|
32
|
+
/**
|
|
33
|
+
* Get status long label
|
|
34
|
+
*/
|
|
35
|
+
export declare function getStatusLongLabel(status: MembershipStatus, locale: Locale): string;
|
|
36
|
+
/**
|
|
37
|
+
* Get status description
|
|
38
|
+
*/
|
|
39
|
+
export declare function getStatusDescription(status: MembershipStatus, locale: Locale): string;
|
|
40
|
+
/**
|
|
41
|
+
* Check if membership is in an active usable state
|
|
42
|
+
*/
|
|
43
|
+
export declare function isActiveMembership(status: MembershipStatus): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Check if membership is in a pending incomplete state
|
|
46
|
+
*/
|
|
47
|
+
export declare function isPendingMembership(status: MembershipStatus): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Check if membership is in an inactive end state (revoked or refused)
|
|
50
|
+
*/
|
|
51
|
+
export declare function isInactiveMembership(status: MembershipStatus): boolean;
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Membership Status enumeration and metadata
|
|
4
|
+
* Describes the lifecycle state of a user's membership in an account
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.MEMBERSHIP_STATUS_METADATA = exports.MembershipStatus = void 0;
|
|
8
|
+
exports.getStatusMetadata = getStatusMetadata;
|
|
9
|
+
exports.getStatusIcon = getStatusIcon;
|
|
10
|
+
exports.getStatusColor = getStatusColor;
|
|
11
|
+
exports.getStatusLabel = getStatusLabel;
|
|
12
|
+
exports.getStatusLongLabel = getStatusLongLabel;
|
|
13
|
+
exports.getStatusDescription = getStatusDescription;
|
|
14
|
+
exports.isActiveMembership = isActiveMembership;
|
|
15
|
+
exports.isPendingMembership = isPendingMembership;
|
|
16
|
+
exports.isInactiveMembership = isInactiveMembership;
|
|
17
|
+
var MembershipStatus;
|
|
18
|
+
(function (MembershipStatus) {
|
|
19
|
+
MembershipStatus["ACTIVE"] = "active";
|
|
20
|
+
MembershipStatus["PENDING"] = "pending";
|
|
21
|
+
MembershipStatus["REVOKED"] = "revoked";
|
|
22
|
+
MembershipStatus["REFUSED"] = "refused";
|
|
23
|
+
})(MembershipStatus || (exports.MembershipStatus = MembershipStatus = {}));
|
|
24
|
+
/**
|
|
25
|
+
* Membership Status metadata configuration
|
|
26
|
+
*/
|
|
27
|
+
exports.MEMBERSHIP_STATUS_METADATA = {
|
|
28
|
+
[MembershipStatus.ACTIVE]: {
|
|
29
|
+
icon: 'check_circle',
|
|
30
|
+
color: '#4CAF50', // Green
|
|
31
|
+
label: {
|
|
32
|
+
short: {
|
|
33
|
+
'us-EN': 'Active',
|
|
34
|
+
'fr-FR': 'Actif',
|
|
35
|
+
},
|
|
36
|
+
long: {
|
|
37
|
+
'us-EN': 'Active Membership',
|
|
38
|
+
'fr-FR': 'Adhésion active',
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
description: {
|
|
42
|
+
'us-EN': 'The membership is valid and grants normal access',
|
|
43
|
+
'fr-FR': "L'adhésion est valide et accorde un accès normal",
|
|
44
|
+
},
|
|
45
|
+
},
|
|
46
|
+
[MembershipStatus.PENDING]: {
|
|
47
|
+
icon: 'schedule',
|
|
48
|
+
color: '#FF9800', // Orange
|
|
49
|
+
label: {
|
|
50
|
+
short: {
|
|
51
|
+
'us-EN': 'Pending',
|
|
52
|
+
'fr-FR': 'En attente',
|
|
53
|
+
},
|
|
54
|
+
long: {
|
|
55
|
+
'us-EN': 'Pending Membership',
|
|
56
|
+
'fr-FR': 'Adhésion en attente',
|
|
57
|
+
},
|
|
58
|
+
},
|
|
59
|
+
description: {
|
|
60
|
+
'us-EN': 'The membership exists but setup/invitation is not fully completed yet',
|
|
61
|
+
'fr-FR': "L'adhésion existe mais la configuration/invitation n'est pas encore complètement terminée",
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
[MembershipStatus.REVOKED]: {
|
|
65
|
+
icon: 'cancel',
|
|
66
|
+
color: '#F44336', // Red
|
|
67
|
+
label: {
|
|
68
|
+
short: {
|
|
69
|
+
'us-EN': 'Revoked',
|
|
70
|
+
'fr-FR': 'Révoqué',
|
|
71
|
+
},
|
|
72
|
+
long: {
|
|
73
|
+
'us-EN': 'Revoked Membership',
|
|
74
|
+
'fr-FR': 'Adhésion révoquée',
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
description: {
|
|
78
|
+
'us-EN': 'The membership was removed and no longer grants access',
|
|
79
|
+
'fr-FR': "L'adhésion a été supprimée et n'accorde plus d'accès",
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
[MembershipStatus.REFUSED]: {
|
|
83
|
+
icon: 'block',
|
|
84
|
+
color: '#9C27B0', // Purple
|
|
85
|
+
label: {
|
|
86
|
+
short: {
|
|
87
|
+
'us-EN': 'Refused',
|
|
88
|
+
'fr-FR': 'Refusé',
|
|
89
|
+
},
|
|
90
|
+
long: {
|
|
91
|
+
'us-EN': 'Refused Membership',
|
|
92
|
+
'fr-FR': 'Adhésion refusée',
|
|
93
|
+
},
|
|
94
|
+
},
|
|
95
|
+
description: {
|
|
96
|
+
'us-EN': 'The invitation or membership was explicitly declined and grants no access',
|
|
97
|
+
'fr-FR': "L'invitation ou l'adhésion a été explicitement refusée et n'accorde pas d'accès",
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Get status metadata
|
|
103
|
+
*/
|
|
104
|
+
function getStatusMetadata(status) {
|
|
105
|
+
return exports.MEMBERSHIP_STATUS_METADATA[status];
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Get status icon
|
|
109
|
+
*/
|
|
110
|
+
function getStatusIcon(status) {
|
|
111
|
+
return getStatusMetadata(status).icon;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Get status color
|
|
115
|
+
*/
|
|
116
|
+
function getStatusColor(status) {
|
|
117
|
+
return getStatusMetadata(status).color;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Get status short label
|
|
121
|
+
*/
|
|
122
|
+
function getStatusLabel(status, locale) {
|
|
123
|
+
return getStatusMetadata(status).label.short[locale];
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Get status long label
|
|
127
|
+
*/
|
|
128
|
+
function getStatusLongLabel(status, locale) {
|
|
129
|
+
return getStatusMetadata(status).label.long[locale];
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Get status description
|
|
133
|
+
*/
|
|
134
|
+
function getStatusDescription(status, locale) {
|
|
135
|
+
return getStatusMetadata(status).description[locale];
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Check if membership is in an active usable state
|
|
139
|
+
*/
|
|
140
|
+
function isActiveMembership(status) {
|
|
141
|
+
return status === MembershipStatus.ACTIVE;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Check if membership is in a pending incomplete state
|
|
145
|
+
*/
|
|
146
|
+
function isPendingMembership(status) {
|
|
147
|
+
return status === MembershipStatus.PENDING;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Check if membership is in an inactive end state (revoked or refused)
|
|
151
|
+
*/
|
|
152
|
+
function isInactiveMembership(status) {
|
|
153
|
+
return status === MembershipStatus.REVOKED || status === MembershipStatus.REFUSED;
|
|
154
|
+
}
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYmVyc2hpcC1zdGF0dXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RhdHVzL21lbWJlcnNoaXAtc3RhdHVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7OztBQTRGSCw4Q0FFQztBQUtELHNDQUVDO0FBS0Qsd0NBRUM7QUFLRCx3Q0FFQztBQUtELGdEQUVDO0FBS0Qsb0RBRUM7QUFLRCxnREFFQztBQUtELGtEQUVDO0FBS0Qsb0RBRUM7QUFsSkQsSUFBWSxnQkFLWDtBQUxELFdBQVksZ0JBQWdCO0lBQzFCLHFDQUFpQixDQUFBO0lBQ2pCLHVDQUFtQixDQUFBO0lBQ25CLHVDQUFtQixDQUFBO0lBQ25CLHVDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFMVyxnQkFBZ0IsZ0NBQWhCLGdCQUFnQixRQUszQjtBQUVEOztHQUVHO0FBQ1UsUUFBQSwwQkFBMEIsR0FBNkM7SUFDbEYsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUN6QixJQUFJLEVBQUUsY0FBYztRQUNwQixLQUFLLEVBQUUsU0FBUyxFQUFFLFFBQVE7UUFDMUIsS0FBSyxFQUFFO1lBQ0wsS0FBSyxFQUFFO2dCQUNMLE9BQU8sRUFBRSxRQUFRO2dCQUNqQixPQUFPLEVBQUUsT0FBTzthQUNqQjtZQUNELElBQUksRUFBRTtnQkFDSixPQUFPLEVBQUUsbUJBQW1CO2dCQUM1QixPQUFPLEVBQUUsaUJBQWlCO2FBQzNCO1NBQ0Y7UUFDRCxXQUFXLEVBQUU7WUFDWCxPQUFPLEVBQUUsa0RBQWtEO1lBQzNELE9BQU8sRUFBRSxrREFBa0Q7U0FDNUQ7S0FDRjtJQUNELENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDMUIsSUFBSSxFQUFFLFVBQVU7UUFDaEIsS0FBSyxFQUFFLFNBQVMsRUFBRSxTQUFTO1FBQzNCLEtBQUssRUFBRTtZQUNMLEtBQUssRUFBRTtnQkFDTCxPQUFPLEVBQUUsU0FBUztnQkFDbEIsT0FBTyxF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LyoqXG4gKiBNZW1iZXJzaGlwIFN0YXR1cyBlbnVtZXJhdGlvbiBhbmQgbWV0YWRhdGFcbiAqIERlc2NyaWJlcyB0aGUgbGlmZWN5Y2xlIHN0YXRlIG9mIGEgdXNlcidzIG1lbWJlcnNoaXAgaW4gYW4gYWNjb3VudFxuICovXG5cbmltcG9ydCB0eXBlIHsgU3RhdHVzTWV0YWRhdGEsIExvY2FsZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgZW51bSBNZW1iZXJzaGlwU3RhdHVzIHtcbiAgQUNUSVZFID0gJ2FjdGl2ZScsXG4gIFBFTkRJTkcgPSAncGVuZGluZycsXG4gIFJFVk9LRUQgPSAncmV2b2tlZCcsXG4gIFJFRlVTRUQgPSAncmVmdXNlZCcsXG59XG5cbi8qKlxuICogTWVtYmVyc2hpcCBTdGF0dXMgbWV0YWRhdGEgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgY29uc3QgTUVNQkVSU0hJUF9TVEFUVVNfTUVUQURBVEE6IFJlY29yZDxNZW1iZXJzaGlwU3RhdHVzLCBTdGF0dXNNZXRhZGF0YT4gPSB7XG4gIFtNZW1iZXJzaGlwU3RhdHVzLkFDVElWRV06IHtcbiAgICBpY29uOiAnY2hlY2tfY2lyY2xlJyxcbiAgICBjb2xvcjogJyM0Q0FGNTAnLCAvLyBHcmVlblxuICAgIGxhYmVsOiB7XG4gICAgICBzaG9ydDoge1xuICAgICAgICAndXMtRU4nOiAnQWN0aXZlJyxcbiAgICAgICAgJ2ZyLUZSJzogJ0FjdGlmJyxcbiAgICAgIH0sXG4gICAgICBsb25nOiB7XG4gICAgICAgICd1cy1FTic6ICdBY3RpdmUgTWVtYmVyc2hpcCcsXG4gICAgICAgICdmci1GUic6ICdBZGjDqXNpb24gYWN0aXZlJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgJ3VzLUVOJzogJ1RoZSBtZW1iZXJzaGlwIGlzIHZhbGlkIGFuZCBncmFudHMgbm9ybWFsIGFjY2VzcycsXG4gICAgICAnZnItRlInOiBcIkwnYWRow6lzaW9uIGVzdCB2YWxpZGUgZXQgYWNjb3JkZSB1biBhY2PDqHMgbm9ybWFsXCIsXG4gICAgfSxcbiAgfSxcbiAgW01lbWJlcnNoaXBTdGF0dXMuUEVORElOR106IHtcbiAgICBpY29uOiAnc2NoZWR1bGUnLFxuICAgIGNvbG9yOiAnI0ZGOTgwMCcsIC8vIE9yYW5nZVxuICAgIGxhYmVsOiB7XG4gICAgICBzaG9ydDoge1xuICAgICAgICAndXMtRU4nOiAnUGVuZGluZycsXG4gICAgICAgICdmci1GUic6ICdFbiBhdHRlbnRlJyxcbiAgICAgIH0sXG4gICAgICBsb25nOiB7XG4gICAgICAgICd1cy1FTic6ICdQZW5kaW5nIE1lbWJlcnNoaXAnLFxuICAgICAgICAnZnItRlInOiAnQWRow6lzaW9uIGVuIGF0dGVudGUnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAndXMtRU4nOiAnVGhlIG1lbWJlcnNoaXAgZXhpc3RzIGJ1dCBzZXR1cC9pbnZpdGF0aW9uIGlzIG5vdCBmdWxseSBjb21wbGV0ZWQgeWV0JyxcbiAgICAgICdmci1GUic6IFwiTCdhZGjDqXNpb24gZXhpc3RlIG1haXMgbGEgY29uZmlndXJhdGlvbi9pbnZpdGF0aW9uIG4nZXN0IHBhcyBlbmNvcmUgY29tcGzDqHRlbWVudCB0ZXJtaW7DqWVcIixcbiAgICB9LFxuICB9LFxuICBbTWVtYmVyc2hpcFN0YXR1cy5SRVZPS0VEXToge1xuICAgIGljb246ICdjYW5jZWwnLFxuICAgIGNvbG9yOiAnI0Y0NDMzNicsIC8vIFJlZFxuICAgIGxhYmVsOiB7XG4gICAgICBzaG9ydDoge1xuICAgICAgICAndXMtRU4nOiAnUmV2b2tlZCcsXG4gICAgICAgICdmci1GUic6ICdSw6l2b3F1w6knLFxuICAgICAgfSxcbiAgICAgIGxvbmc6IHtcbiAgICAgICAgJ3VzLUVOJzogJ1Jldm9rZWQgTWVtYmVyc2hpcCcsXG4gICAgICAgICdmci1GUic6ICdBZGjDqXNpb24gcsOpdm9xdcOpZScsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVzY3JpcHRpb246IHtcbiAgICAgICd1cy1FTic6ICdUaGUgbWVtYmVyc2hpcCB3YXMgcmVtb3ZlZCBhbmQgbm8gbG9uZ2VyIGdyYW50cyBhY2Nlc3MnLFxuICAgICAgJ2ZyLUZSJzogXCJMJ2FkaMOpc2lvbiBhIMOpdMOpIHN1cHByaW3DqWUgZXQgbidhY2NvcmRlIHBsdXMgZCdhY2PDqHNcIixcbiAgICB9LFxuICB9LFxuICBbTWVtYmVyc2hpcFN0YXR1cy5SRUZVU0VEXToge1xuICAgIGljb246ICdibG9jaycsXG4gICAgY29sb3I6ICcjOUMyN0IwJywgLy8gUHVycGxlXG4gICAgbGFiZWw6IHtcbiAgICAgIHNob3J0OiB7XG4gICAgICAgICd1cy1FTic6ICdSZWZ1c2VkJyxcbiAgICAgICAgJ2ZyLUZSJzogJ1JlZnVzw6knLFxuICAgICAgfSxcbiAgICAgIGxvbmc6IHtcbiAgICAgICAgJ3VzLUVOJzogJ1JlZnVzZWQgTWVtYmVyc2hpcCcsXG4gICAgICAgICdmci1GUic6ICdBZGjDqXNpb24gcmVmdXPDqWUnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAndXMtRU4nOiAnVGhlIGludml0YXRpb24gb3IgbWVtYmVyc2hpcCB3YXMgZXhwbGljaXRseSBkZWNsaW5lZCBhbmQgZ3JhbnRzIG5vIGFjY2VzcycsXG4gICAgICAnZnItRlInOiBcIkwnaW52aXRhdGlvbiBvdSBsJ2FkaMOpc2lvbiBhIMOpdMOpIGV4cGxpY2l0ZW1lbnQgcmVmdXPDqWUgZXQgbidhY2NvcmRlIHBhcyBkJ2FjY8Ooc1wiLFxuICAgIH0sXG4gIH0sXG59O1xuXG4vKipcbiAqIEdldCBzdGF0dXMgbWV0YWRhdGFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXR1c01ldGFkYXRhKHN0YXR1czogTWVtYmVyc2hpcFN0YXR1cyk6IFN0YXR1c01ldGFkYXRhIHtcbiAgcmV0dXJuIE1FTUJFUlNISVBfU1RBVFVTX01FVEFEQVRBW3N0YXR1c107XG59XG5cbi8qKlxuICogR2V0IHN0YXR1cyBpY29uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0dXNJY29uKHN0YXR1czogTWVtYmVyc2hpcFN0YXR1cyk6IHN0cmluZyB7XG4gIHJldHVybiBnZXRTdGF0dXNNZXRhZGF0YShzdGF0dXMpLmljb247XG59XG5cbi8qKlxuICogR2V0IHN0YXR1cyBjb2xvclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzQ29sb3Ioc3RhdHVzOiBNZW1iZXJzaGlwU3RhdHVzKTogc3RyaW5nIHtcbiAgcmV0dXJuIGdldFN0YXR1c01ldGFkYXRhKHN0YXR1cykuY29sb3I7XG59XG5cbi8qKlxuICogR2V0IHN0YXR1cyBzaG9ydCBsYWJlbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzTGFiZWwoc3RhdHVzOiBNZW1iZXJzaGlwU3RhdHVzLCBsb2NhbGU6IExvY2FsZSk6IHN0cmluZyB7XG4gIHJldHVybiBnZXRTdGF0dXNNZXRhZGF0YShzdGF0dXMpLmxhYmVsLnNob3J0W2xvY2FsZV07XG59XG5cbi8qKlxuICogR2V0IHN0YXR1cyBsb25nIGxhYmVsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0dXNMb25nTGFiZWwoc3RhdHVzOiBNZW1iZXJzaGlwU3RhdHVzLCBsb2NhbGU6IExvY2FsZSk6IHN0cmluZyB7XG4gIHJldHVybiBnZXRTdGF0dXNNZXRhZGF0YShzdGF0dXMpLmxhYmVsLmxvbmdbbG9jYWxlXTtcbn1cblxuLyoqXG4gKiBHZXQgc3RhdHVzIGRlc2NyaXB0aW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0dXNEZXNjcmlwdGlvbihzdGF0dXM6IE1lbWJlcnNoaXBTdGF0dXMsIGxvY2FsZTogTG9jYWxlKTogc3RyaW5nIHtcbiAgcmV0dXJuIGdldFN0YXR1c01ldGFkYXRhKHN0YXR1cykuZGVzY3JpcHRpb25bbG9jYWxlXTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBtZW1iZXJzaGlwIGlzIGluIGFuIGFjdGl2ZSB1c2FibGUgc3RhdGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzQWN0aXZlTWVtYmVyc2hpcChzdGF0dXM6IE1lbWJlcnNoaXBTdGF0dXMpOiBib29sZWFuIHtcbiAgcmV0dXJuIHN0YXR1cyA9PT0gTWVtYmVyc2hpcFN0YXR1cy5BQ1RJVkU7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgbWVtYmVyc2hpcCBpcyBpbiBhIHBlbmRpbmcgaW5jb21wbGV0ZSBzdGF0ZVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNQZW5kaW5nTWVtYmVyc2hpcChzdGF0dXM6IE1lbWJlcnNoaXBTdGF0dXMpOiBib29sZWFuIHtcbiAgcmV0dXJuIHN0YXR1cyA9PT0gTWVtYmVyc2hpcFN0YXR1cy5QRU5ESU5HO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIG1lbWJlcnNoaXAgaXMgaW4gYW4gaW5hY3RpdmUgZW5kIHN0YXRlIChyZXZva2VkIG9yIHJlZnVzZWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0luYWN0aXZlTWVtYmVyc2hpcChzdGF0dXM6IE1lbWJlcnNoaXBTdGF0dXMpOiBib29sZWFuIHtcbiAgcmV0dXJuIHN0YXR1cyA9PT0gTWVtYmVyc2hpcFN0YXR1cy5SRVZPS0VEIHx8IHN0YXR1cyA9PT0gTWVtYmVyc2hpcFN0YXR1cy5SRUZVU0VEO1xufVxuIl19
|