@doctorus/common 0.0.17 → 0.0.19
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/lib/ssm/keys.d.ts +1 -0
- package/lib/ssm/keys.js +2 -1
- package/lib/status/index.d.ts +1 -0
- package/lib/status/index.js +2 -1
- package/lib/status/utils.d.ts +118 -0
- package/lib/status/utils.js +197 -0
- package/package.json +2 -2
package/lib/ssm/keys.d.ts
CHANGED
|
@@ -17,6 +17,7 @@ export declare enum SSM_PARAM_KEY {
|
|
|
17
17
|
MEDICAL_ASSETS_AWS_CLOUDFRONT_PUB_KEY = "medical-assets-dist-public-key",
|
|
18
18
|
MEDICAL_ASSETS_BUCKET_NAME = "medical-assets-bucket-name",
|
|
19
19
|
PUBLIC_ASSETS_BUCKET_NAME = "public-assets-bucket-name",
|
|
20
|
+
PUBLIC_ASSETS_DISTRIBUTION_DOMAIN_NAME = "public-assets-dist-domain-name",
|
|
20
21
|
DB_USER = "db-user",
|
|
21
22
|
DB_PASSWORD = "db-password",
|
|
22
23
|
MEDICAL_ASSETS_DISTRIBUTION_DOMAIN_NAME = "medical-assets-dist-domain-name",
|
package/lib/ssm/keys.js
CHANGED
|
@@ -21,6 +21,7 @@ var SSM_PARAM_KEY;
|
|
|
21
21
|
SSM_PARAM_KEY["MEDICAL_ASSETS_AWS_CLOUDFRONT_PUB_KEY"] = "medical-assets-dist-public-key";
|
|
22
22
|
SSM_PARAM_KEY["MEDICAL_ASSETS_BUCKET_NAME"] = "medical-assets-bucket-name";
|
|
23
23
|
SSM_PARAM_KEY["PUBLIC_ASSETS_BUCKET_NAME"] = "public-assets-bucket-name";
|
|
24
|
+
SSM_PARAM_KEY["PUBLIC_ASSETS_DISTRIBUTION_DOMAIN_NAME"] = "public-assets-dist-domain-name";
|
|
24
25
|
SSM_PARAM_KEY["DB_USER"] = "db-user";
|
|
25
26
|
SSM_PARAM_KEY["DB_PASSWORD"] = "db-password";
|
|
26
27
|
SSM_PARAM_KEY["MEDICAL_ASSETS_DISTRIBUTION_DOMAIN_NAME"] = "medical-assets-dist-domain-name";
|
|
@@ -30,4 +31,4 @@ var SSM_PARAM_KEY;
|
|
|
30
31
|
SSM_PARAM_KEY["EVENT_API_HTTP_DNS"] = "event-api-http-dns";
|
|
31
32
|
SSM_PARAM_KEY["NOTIFIED_EVENT_ACTIONS"] = "notified-event-actions";
|
|
32
33
|
})(SSM_PARAM_KEY || (exports.SSM_PARAM_KEY = SSM_PARAM_KEY = {}));
|
|
33
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zc20va2V5cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7R0FFRztBQUNILElBQVksYUF5Qlg7QUF6QkQsV0FBWSxhQUFhO0lBQ3ZCLHNEQUFxQyxDQUFBO0lBQ3JDLDRFQUEyRCxDQUFBO0lBQzNELHNEQUFxQyxDQUFBO0lBQ3JDLDBEQUF5QyxDQUFBO0lBQ3pDLDhEQUE2QyxDQUFBO0lBQzdDLDBDQUF5QixDQUFBO0lBQ3pCLHNEQUFxQyxDQUFBO0lBQ3JDLGtEQUFpQyxDQUFBO0lBQ2pDLDhDQUE2QixDQUFBO0lBQzdCLGtEQUFpQyxDQUFBO0lBQ2pDLDhGQUE2RSxDQUFBO0lBQzdFLDJGQUEwRSxDQUFBO0lBQzFFLHlGQUF3RSxDQUFBO0lBQ3hFLDBFQUF5RCxDQUFBO0lBQ3pELHdFQUF1RCxDQUFBO0lBQ3ZELDBGQUF5RSxDQUFBO0lBQ3pFLG9DQUFtQixDQUFBO0lBQ25CLDRDQUEyQixDQUFBO0lBQzNCLDRGQUEyRSxDQUFBO0lBQzNFLHdDQUF1QixDQUFBO0lBQ3ZCLDBEQUF5QyxDQUFBO0lBQ3pDLG9FQUFtRCxDQUFBO0lBQ25ELDBEQUF5QyxDQUFBO0lBQ3pDLGtFQUFpRCxDQUFBO0FBQ25ELENBQUMsRUF6QlcsYUFBYSw2QkFBYixhQUFhLFFBeUJ4QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU1NNIFBhcmFtZXRlciBTdG9yZSBrZXlzIHVzZWQgYWNyb3NzIEFXUyBzdGFja3NcbiAqL1xuZXhwb3J0IGVudW0gU1NNX1BBUkFNX0tFWSB7XG4gIENPR05JVE9fVVNFUl9QT09MX0lEID0gJ3VzZXItcG9vbC1pZCcsXG4gIENPR05JVE9fVVNFUl9QT09MX1dFQl9DTElFTlRfSUQgPSAndXNlci1wb29sLXdlYi1jbGllbnQtaWQnLFxuICBDT0dOSVRPX09BVVRIX0RPTUFJTiA9ICdvYXV0aC1kb21haW4nLFxuICBSVU1fR1VFU1RfUk9MRV9BUk4gPSAncnVtLWd1ZXN0LXJvbWUtYXJuJyxcbiAgUlVNX0lERU5USVRZX1BPT0xfSUQgPSAncnVtLWlkZW50aXR5LXBvb2wtaWQnLFxuICBSVU1fQVBQX0lEID0gJ3J1bS1hcHAtaWQnLFxuICBHUkFQSFFMX0hUVFBfVVJMID0gJ2dyYXBocWwtaHR0cC11cmwnLFxuICBHUkFQSFFMX1dTX1VSTCA9ICdncmFwaHFsLXdzLXVybCcsXG4gIEdSQVBIUUxfSE9TVCA9ICdncmFwaHFsLWhvc3QnLFxuICBHUkFQSFFMX0FQSV9JRCA9ICdncmFwaHFsLWFwaS1pZCcsXG4gIE1FRElDQUxfQVNTRVRTX0FXU19DTE9VREZST05UX1BSSVZBVEVfS0VZID0gJ21lZGljYWwtYXNzZXRzLWRpc3QtcHJpdmF0ZS1rZXknLFxuICBNRURJQ0FMX0FTU0VUU19BV1NfQ0xPVURGUk9OVF9LRVlfSUQgPSAnbWVkaWNhbC1hc3NldHMtZGlzdC1wdWJsaWMta2V5LWlkJyxcbiAgTUVESUNBTF9BU1NFVFNfQVdTX0NMT1VERlJPTlRfUFVCX0tFWSA9ICdtZWRpY2FsLWFzc2V0cy1kaXN0LXB1YmxpYy1rZXknLFxuICBNRURJQ0FMX0FTU0VUU19CVUNLRVRfTkFNRSA9ICdtZWRpY2FsLWFzc2V0cy1idWNrZXQtbmFtZScsXG4gIFBVQkxJQ19BU1NFVFNfQlVDS0VUX05BTUUgPSAncHVibGljLWFzc2V0cy1idWNrZXQtbmFtZScsXG4gIFBVQkxJQ19BU1NFVFNfRElTVFJJQlVUSU9OX0RPTUFJTl9OQU1FID0gJ3B1YmxpYy1hc3NldHMtZGlzdC1kb21haW4tbmFtZScsXG4gIERCX1VTRVIgPSAnZGItdXNlcicsXG4gIERCX1BBU1NXT1JEID0gJ2RiLXBhc3N3b3JkJyxcbiAgTUVESUNBTF9BU1NFVFNfRElTVFJJQlVUSU9OX0RPTUFJTl9OQU1FID0gJ21lZGljYWwtYXNzZXRzLWRpc3QtZG9tYWluLW5hbWUnLFxuICBCQVNFX0hPU1QgPSAnYmFzZS1ob3N0JyxcbiAgRU1BSUxfRlJPTV9BRERSRVNTID0gJ2VtYWlsLWZyb20tYWRkcmVzcycsXG4gIEVWRU5UX0FQSV9SRUFMX1RJTUVfRE5TID0gJ2V2ZW50LWFwaS1yZWFsLXRpbWUtZG5zJyxcbiAgRVZFTlRfQVBJX0hUVFBfRE5TID0gJ2V2ZW50LWFwaS1odHRwLWRucycsXG4gIE5PVElGSUVEX0VWRU5UX0FDVElPTlMgPSAnbm90aWZpZWQtZXZlbnQtYWN0aW9ucycsXG59XG4iXX0=
|
package/lib/status/index.d.ts
CHANGED
package/lib/status/index.js
CHANGED
|
@@ -44,4 +44,5 @@ __exportStar(require("./types"), exports);
|
|
|
44
44
|
__exportStar(require("./medical-service-status"), exports);
|
|
45
45
|
exports.AccountLocationStatus = __importStar(require("./account-location-status"));
|
|
46
46
|
exports.MedicalHistoryStatus = __importStar(require("./medical-history-status"));
|
|
47
|
-
|
|
47
|
+
__exportStar(require("./utils"), exports);
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RhdHVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztHQUVHO0FBQ0gsMENBQXdCO0FBQ3hCLDJEQUF5QztBQUN6QyxtRkFBbUU7QUFDbkUsaUZBQWlFO0FBQ2pFLDBDQUF3QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU3RhdHVzIG1vZHVsZSBleHBvcnRzXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9tZWRpY2FsLXNlcnZpY2Utc3RhdHVzJztcbmV4cG9ydCAqIGFzIEFjY291bnRMb2NhdGlvblN0YXR1cyBmcm9tICcuL2FjY291bnQtbG9jYXRpb24tc3RhdHVzJztcbmV4cG9ydCAqIGFzIE1lZGljYWxIaXN0b3J5U3RhdHVzIGZyb20gJy4vbWVkaWNhbC1oaXN0b3J5LXN0YXR1cyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzJztcbiJdfQ==
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Status utilities for extracting and querying status metadata
|
|
3
|
+
* Provides common functions to work with status configurations
|
|
4
|
+
*/
|
|
5
|
+
import type { AccountLocationStatus } from './account-location-status';
|
|
6
|
+
import type { MedicalHistoryStatus } from './medical-history-status';
|
|
7
|
+
import type { MedicalServiceStatus } from './medical-service-status';
|
|
8
|
+
import type { StatusMetadata, Locale } from './types';
|
|
9
|
+
/**
|
|
10
|
+
* Feature type for status selection
|
|
11
|
+
*/
|
|
12
|
+
export type StatusFeature = 'medicalService' | 'accountLocation' | 'medicalHistory';
|
|
13
|
+
/**
|
|
14
|
+
* Status type mapping for each feature
|
|
15
|
+
*/
|
|
16
|
+
export type StatusTypeMap = {
|
|
17
|
+
medicalService: MedicalServiceStatus;
|
|
18
|
+
accountLocation: AccountLocationStatus;
|
|
19
|
+
medicalHistory: MedicalHistoryStatus;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Get status metadata for a specific feature and status
|
|
23
|
+
* @param feature - The feature name (e.g., 'medicalService', 'accountLocation')
|
|
24
|
+
* @param status - The status value
|
|
25
|
+
* @returns The complete StatusMetadata for the given feature and status
|
|
26
|
+
* @throws Error if feature or status is not found
|
|
27
|
+
*/
|
|
28
|
+
export declare function getStatusMetadataForFeature<T extends StatusFeature>(feature: T, status: StatusTypeMap[T]): StatusMetadata;
|
|
29
|
+
/**
|
|
30
|
+
* Get status icon for a specific feature and status
|
|
31
|
+
* @param feature - The feature name
|
|
32
|
+
* @param status - The status value
|
|
33
|
+
* @returns The Material icon name
|
|
34
|
+
*/
|
|
35
|
+
export declare function getStatusIconForFeature<T extends StatusFeature>(feature: T, status: StatusTypeMap[T]): string;
|
|
36
|
+
/**
|
|
37
|
+
* Get status color for a specific feature and status
|
|
38
|
+
* @param feature - The feature name
|
|
39
|
+
* @param status - The status value
|
|
40
|
+
* @returns The hex color code
|
|
41
|
+
*/
|
|
42
|
+
export declare function getStatusColorForFeature<T extends StatusFeature>(feature: T, status: StatusTypeMap[T]): string;
|
|
43
|
+
/**
|
|
44
|
+
* Get status label for a specific feature and status
|
|
45
|
+
* @param feature - The feature name
|
|
46
|
+
* @param status - The status value
|
|
47
|
+
* @param locale - The language locale (default: 'us-EN')
|
|
48
|
+
* @param format - Label format: 'short' or 'long' (default: 'short')
|
|
49
|
+
* @returns The translated label
|
|
50
|
+
*/
|
|
51
|
+
export declare function getStatusLabelForFeature<T extends StatusFeature>(feature: T, status: StatusTypeMap[T], locale?: Locale, format?: 'short' | 'long'): string;
|
|
52
|
+
/**
|
|
53
|
+
* Get status description for a specific feature and status
|
|
54
|
+
* @param feature - The feature name
|
|
55
|
+
* @param status - The status value
|
|
56
|
+
* @param locale - The language locale (default: 'us-EN')
|
|
57
|
+
* @returns The translated description
|
|
58
|
+
*/
|
|
59
|
+
export declare function getStatusDescriptionForFeature<T extends StatusFeature>(feature: T, status: StatusTypeMap[T], locale?: Locale): string;
|
|
60
|
+
/**
|
|
61
|
+
* Get all metadata for a specific feature
|
|
62
|
+
* @param feature - The feature name
|
|
63
|
+
* @returns Record of all statuses and their metadata for the feature
|
|
64
|
+
*/
|
|
65
|
+
export declare function getAllStatusMetadataForFeature<T extends StatusFeature>(feature: T): Record<StatusTypeMap[T], StatusMetadata>;
|
|
66
|
+
/**
|
|
67
|
+
* Get all statuses for a specific feature
|
|
68
|
+
* @param feature - The feature name
|
|
69
|
+
* @returns Array of all status values for the feature
|
|
70
|
+
*/
|
|
71
|
+
export declare function getAllStatusesForFeature<T extends StatusFeature>(feature: T): StatusTypeMap[T][];
|
|
72
|
+
/**
|
|
73
|
+
* Filter statuses by criteria
|
|
74
|
+
* @param feature - The feature name
|
|
75
|
+
* @param predicate - Function to test each status metadata
|
|
76
|
+
* @returns Array of statuses that match the predicate
|
|
77
|
+
*/
|
|
78
|
+
export declare function filterStatusesByFeature<T extends StatusFeature>(feature: T, predicate: (metadata: StatusMetadata, status: StatusTypeMap[T]) => boolean): StatusTypeMap[T][];
|
|
79
|
+
/**
|
|
80
|
+
* Map statuses to a specific value using a transform function
|
|
81
|
+
* @param feature - The feature name
|
|
82
|
+
* @param transform - Function to transform each status metadata
|
|
83
|
+
* @returns Record of statuses mapped to the transformed values
|
|
84
|
+
*/
|
|
85
|
+
export declare function mapStatusesByFeature<T extends StatusFeature, U>(feature: T, transform: (metadata: StatusMetadata, status: StatusTypeMap[T]) => U): Record<StatusTypeMap[T], U>;
|
|
86
|
+
/**
|
|
87
|
+
* Get status metadata with computed properties
|
|
88
|
+
* @param feature - The feature name
|
|
89
|
+
* @param status - The status value
|
|
90
|
+
* @param locale - The language locale
|
|
91
|
+
* @returns Extended metadata with computed labels and description
|
|
92
|
+
*/
|
|
93
|
+
export interface ExtendedStatusMetadata extends Omit<StatusMetadata, 'description'> {
|
|
94
|
+
shortLabel: string;
|
|
95
|
+
longLabel: string;
|
|
96
|
+
description: string;
|
|
97
|
+
}
|
|
98
|
+
export declare function getExtendedStatusMetadataForFeature<T extends StatusFeature>(feature: T, status: StatusTypeMap[T], locale?: Locale): ExtendedStatusMetadata;
|
|
99
|
+
/**
|
|
100
|
+
* Search statuses by label
|
|
101
|
+
* @param feature - The feature name
|
|
102
|
+
* @param searchTerm - The search term (case-insensitive)
|
|
103
|
+
* @param locale - The language locale
|
|
104
|
+
* @returns Array of statuses matching the search term
|
|
105
|
+
*/
|
|
106
|
+
export declare function searchStatusesByFeature<T extends StatusFeature>(feature: T, searchTerm: string, locale?: Locale): StatusTypeMap[T][];
|
|
107
|
+
/**
|
|
108
|
+
* Get status metadata grouped by color
|
|
109
|
+
* @param feature - The feature name
|
|
110
|
+
* @returns Record of colors mapped to arrays of statuses
|
|
111
|
+
*/
|
|
112
|
+
export declare function groupStatusesByColorForFeature<T extends StatusFeature>(feature: T): Record<string, StatusTypeMap[T][]>;
|
|
113
|
+
/**
|
|
114
|
+
* Get status metadata grouped by icon
|
|
115
|
+
* @param feature - The feature name
|
|
116
|
+
* @returns Record of icons mapped to arrays of statuses
|
|
117
|
+
*/
|
|
118
|
+
export declare function groupStatusesByIconForFeature<T extends StatusFeature>(feature: T): Record<string, StatusTypeMap[T][]>;
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Status utilities for extracting and querying status metadata
|
|
4
|
+
* Provides common functions to work with status configurations
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.getStatusMetadataForFeature = getStatusMetadataForFeature;
|
|
8
|
+
exports.getStatusIconForFeature = getStatusIconForFeature;
|
|
9
|
+
exports.getStatusColorForFeature = getStatusColorForFeature;
|
|
10
|
+
exports.getStatusLabelForFeature = getStatusLabelForFeature;
|
|
11
|
+
exports.getStatusDescriptionForFeature = getStatusDescriptionForFeature;
|
|
12
|
+
exports.getAllStatusMetadataForFeature = getAllStatusMetadataForFeature;
|
|
13
|
+
exports.getAllStatusesForFeature = getAllStatusesForFeature;
|
|
14
|
+
exports.filterStatusesByFeature = filterStatusesByFeature;
|
|
15
|
+
exports.mapStatusesByFeature = mapStatusesByFeature;
|
|
16
|
+
exports.getExtendedStatusMetadataForFeature = getExtendedStatusMetadataForFeature;
|
|
17
|
+
exports.searchStatusesByFeature = searchStatusesByFeature;
|
|
18
|
+
exports.groupStatusesByColorForFeature = groupStatusesByColorForFeature;
|
|
19
|
+
exports.groupStatusesByIconForFeature = groupStatusesByIconForFeature;
|
|
20
|
+
const account_location_status_1 = require("./account-location-status");
|
|
21
|
+
const medical_history_status_1 = require("./medical-history-status");
|
|
22
|
+
const medical_service_status_1 = require("./medical-service-status");
|
|
23
|
+
/**
|
|
24
|
+
* Metadata registry mapping features to their status configurations
|
|
25
|
+
*/
|
|
26
|
+
const METADATA_REGISTRY = {
|
|
27
|
+
medicalService: medical_service_status_1.MEDICAL_SERVICE_STATUS_METADATA,
|
|
28
|
+
accountLocation: account_location_status_1.ACCOUNT_LOCATION_STATUS_METADATA,
|
|
29
|
+
medicalHistory: medical_history_status_1.MEDICAL_HISTORY_STATUS_METADATA,
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Get status metadata for a specific feature and status
|
|
33
|
+
* @param feature - The feature name (e.g., 'medicalService', 'accountLocation')
|
|
34
|
+
* @param status - The status value
|
|
35
|
+
* @returns The complete StatusMetadata for the given feature and status
|
|
36
|
+
* @throws Error if feature or status is not found
|
|
37
|
+
*/
|
|
38
|
+
function getStatusMetadataForFeature(feature, status) {
|
|
39
|
+
const registry = METADATA_REGISTRY[feature];
|
|
40
|
+
if (!registry) {
|
|
41
|
+
throw new Error(`Unknown status feature: ${feature}`);
|
|
42
|
+
}
|
|
43
|
+
const metadata = registry[status];
|
|
44
|
+
if (!metadata) {
|
|
45
|
+
throw new Error(`Unknown status for feature ${feature}: ${status}`);
|
|
46
|
+
}
|
|
47
|
+
return metadata;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get status icon for a specific feature and status
|
|
51
|
+
* @param feature - The feature name
|
|
52
|
+
* @param status - The status value
|
|
53
|
+
* @returns The Material icon name
|
|
54
|
+
*/
|
|
55
|
+
function getStatusIconForFeature(feature, status) {
|
|
56
|
+
return getStatusMetadataForFeature(feature, status).icon;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Get status color for a specific feature and status
|
|
60
|
+
* @param feature - The feature name
|
|
61
|
+
* @param status - The status value
|
|
62
|
+
* @returns The hex color code
|
|
63
|
+
*/
|
|
64
|
+
function getStatusColorForFeature(feature, status) {
|
|
65
|
+
return getStatusMetadataForFeature(feature, status).color;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Get status label for a specific feature and status
|
|
69
|
+
* @param feature - The feature name
|
|
70
|
+
* @param status - The status value
|
|
71
|
+
* @param locale - The language locale (default: 'us-EN')
|
|
72
|
+
* @param format - Label format: 'short' or 'long' (default: 'short')
|
|
73
|
+
* @returns The translated label
|
|
74
|
+
*/
|
|
75
|
+
function getStatusLabelForFeature(feature, status, locale = 'us-EN', format = 'short') {
|
|
76
|
+
const metadata = getStatusMetadataForFeature(feature, status);
|
|
77
|
+
return metadata.label[format][locale];
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get status description for a specific feature and status
|
|
81
|
+
* @param feature - The feature name
|
|
82
|
+
* @param status - The status value
|
|
83
|
+
* @param locale - The language locale (default: 'us-EN')
|
|
84
|
+
* @returns The translated description
|
|
85
|
+
*/
|
|
86
|
+
function getStatusDescriptionForFeature(feature, status, locale = 'us-EN') {
|
|
87
|
+
return getStatusMetadataForFeature(feature, status).description[locale];
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Get all metadata for a specific feature
|
|
91
|
+
* @param feature - The feature name
|
|
92
|
+
* @returns Record of all statuses and their metadata for the feature
|
|
93
|
+
*/
|
|
94
|
+
function getAllStatusMetadataForFeature(feature) {
|
|
95
|
+
const registry = METADATA_REGISTRY[feature];
|
|
96
|
+
if (!registry) {
|
|
97
|
+
throw new Error(`Unknown status feature: ${feature}`);
|
|
98
|
+
}
|
|
99
|
+
return registry;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Get all statuses for a specific feature
|
|
103
|
+
* @param feature - The feature name
|
|
104
|
+
* @returns Array of all status values for the feature
|
|
105
|
+
*/
|
|
106
|
+
function getAllStatusesForFeature(feature) {
|
|
107
|
+
const metadata = getAllStatusMetadataForFeature(feature);
|
|
108
|
+
return Object.keys(metadata);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Filter statuses by criteria
|
|
112
|
+
* @param feature - The feature name
|
|
113
|
+
* @param predicate - Function to test each status metadata
|
|
114
|
+
* @returns Array of statuses that match the predicate
|
|
115
|
+
*/
|
|
116
|
+
function filterStatusesByFeature(feature, predicate) {
|
|
117
|
+
const metadata = getAllStatusMetadataForFeature(feature);
|
|
118
|
+
return Object.entries(metadata)
|
|
119
|
+
.filter(([status, meta]) => predicate(meta, status))
|
|
120
|
+
.map(([status]) => status);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Map statuses to a specific value using a transform function
|
|
124
|
+
* @param feature - The feature name
|
|
125
|
+
* @param transform - Function to transform each status metadata
|
|
126
|
+
* @returns Record of statuses mapped to the transformed values
|
|
127
|
+
*/
|
|
128
|
+
function mapStatusesByFeature(feature, transform) {
|
|
129
|
+
const metadata = getAllStatusMetadataForFeature(feature);
|
|
130
|
+
const result = {};
|
|
131
|
+
Object.entries(metadata).forEach(([status, meta]) => {
|
|
132
|
+
result[status] = transform(meta, status);
|
|
133
|
+
});
|
|
134
|
+
return result;
|
|
135
|
+
}
|
|
136
|
+
function getExtendedStatusMetadataForFeature(feature, status, locale = 'us-EN') {
|
|
137
|
+
const metadata = getStatusMetadataForFeature(feature, status);
|
|
138
|
+
return {
|
|
139
|
+
icon: metadata.icon,
|
|
140
|
+
color: metadata.color,
|
|
141
|
+
label: metadata.label,
|
|
142
|
+
shortLabel: metadata.label.short[locale],
|
|
143
|
+
longLabel: metadata.label.long[locale],
|
|
144
|
+
description: metadata.description[locale],
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Search statuses by label
|
|
149
|
+
* @param feature - The feature name
|
|
150
|
+
* @param searchTerm - The search term (case-insensitive)
|
|
151
|
+
* @param locale - The language locale
|
|
152
|
+
* @returns Array of statuses matching the search term
|
|
153
|
+
*/
|
|
154
|
+
function searchStatusesByFeature(feature, searchTerm, locale = 'us-EN') {
|
|
155
|
+
const lowerSearch = searchTerm.toLowerCase();
|
|
156
|
+
return filterStatusesByFeature(feature, (metadata) => {
|
|
157
|
+
const shortLabel = metadata.label.short[locale].toLowerCase();
|
|
158
|
+
const longLabel = metadata.label.long[locale].toLowerCase();
|
|
159
|
+
const description = metadata.description[locale].toLowerCase();
|
|
160
|
+
return shortLabel.includes(lowerSearch) || longLabel.includes(lowerSearch) || description.includes(lowerSearch);
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Get status metadata grouped by color
|
|
165
|
+
* @param feature - The feature name
|
|
166
|
+
* @returns Record of colors mapped to arrays of statuses
|
|
167
|
+
*/
|
|
168
|
+
function groupStatusesByColorForFeature(feature) {
|
|
169
|
+
const metadata = getAllStatusMetadataForFeature(feature);
|
|
170
|
+
const grouped = {};
|
|
171
|
+
Object.entries(metadata).forEach(([status, meta]) => {
|
|
172
|
+
const metaTyped = meta;
|
|
173
|
+
if (!grouped[metaTyped.color]) {
|
|
174
|
+
grouped[metaTyped.color] = [];
|
|
175
|
+
}
|
|
176
|
+
grouped[metaTyped.color].push(status);
|
|
177
|
+
});
|
|
178
|
+
return grouped;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Get status metadata grouped by icon
|
|
182
|
+
* @param feature - The feature name
|
|
183
|
+
* @returns Record of icons mapped to arrays of statuses
|
|
184
|
+
*/
|
|
185
|
+
function groupStatusesByIconForFeature(feature) {
|
|
186
|
+
const metadata = getAllStatusMetadataForFeature(feature);
|
|
187
|
+
const grouped = {};
|
|
188
|
+
Object.entries(metadata).forEach(([status, meta]) => {
|
|
189
|
+
const metaTyped = meta;
|
|
190
|
+
if (!grouped[metaTyped.icon]) {
|
|
191
|
+
grouped[metaTyped.icon] = [];
|
|
192
|
+
}
|
|
193
|
+
grouped[metaTyped.icon].push(status);
|
|
194
|
+
});
|
|
195
|
+
return grouped;
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RhdHVzL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7O0FBd0NILGtFQWVDO0FBUUQsMERBRUM7QUFRRCw0REFFQztBQVVELDREQVFDO0FBU0Qsd0VBTUM7QUFPRCx3RUFRQztBQU9ELDREQUdDO0FBUUQsMERBUUM7QUFRRCxvREFZQztBQWVELGtGQWVDO0FBU0QsMERBY0M7QUFPRCx3RUFlQztBQU9ELHNFQWFDO0FBbFFELHVFQUE2RTtBQUM3RSxxRUFBMkU7QUFDM0UscUVBQTJFO0FBZ0IzRTs7R0FFRztBQUNILE1BQU0saUJBQWlCLEdBQW1FO0lBQ3hGLGNBQWMsRUFBRSx3REFBK0I7SUFDL0MsZUFBZSxFQUFFLDBEQUFnQztJQUNqRCxjQUFjLEVBQUUsd0RBQStCO0NBQ2hELENBQUM7QUFFRjs7Ozs7O0dBTUc7QUFDSCxTQUFnQiwyQkFBMkIsQ0FDekMsT0FBVSxFQUNWLE1BQXdCO0lBRXhCLE1BQU0sUUFBUSxHQUFHLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDZCxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixPQUFPLEtBQUssTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBRUQsT0FBTyxRQUFRLENBQUM7QUFDbEIsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBZ0IsdUJBQXVCLENBQTBCLE9BQVUsRUFBRSxNQUF3QjtJQUNuRyxPQUFPLDJCQUEyQixDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FB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RUFBRSxFQUFFO1FBQ2xELE1BQU0sU0FBUyxHQUFHLElBQXNCLENBQUM7UUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM5QixPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBMEIsQ0FBQyxDQUFDO0lBQzVELENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTyxPQUFPLENBQUM7QUFDakIsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQiw2QkFBNkIsQ0FBMEIsT0FBVTtJQUMvRSxNQUFNLFFBQVEsR0FBRyw4QkFBOEIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN6RCxNQUFNLE9BQU8sR0FBdUMsRUFBRSxDQUFDO0lBRXZELE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRTtRQUNsRCxNQUFNLFNBQVMsR0FBRyxJQUFzQixDQUFDO1FBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDN0IsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDL0IsQ0FBQztRQUNELE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQTBCLENBQUMsQ0FBQztJQUMzRCxDQUFDLENBQUMsQ0FBQztJQUVILE9BQU8sT0FBTyxDQUFDO0FBQ2pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFN0YXR1cyB1dGlsaXRpZXMgZm9yIGV4dHJhY3RpbmcgYW5kIHF1ZXJ5aW5nIHN0YXR1cyBtZXRhZGF0YVxuICogUHJvdmlkZXMgY29tbW9uIGZ1bmN0aW9ucyB0byB3b3JrIHdpdGggc3RhdHVzIGNvbmZpZ3VyYXRpb25zXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBBY2NvdW50TG9jYXRpb25TdGF0dXMgfSBmcm9tICcuL2FjY291bnQtbG9jYXRpb24tc3RhdHVzJztcbmltcG9ydCB0eXBlIHsgTWVkaWNhbEhpc3RvcnlTdGF0dXMgfSBmcm9tICcuL21lZGljYWwtaGlzdG9yeS1zdGF0dXMnO1xuaW1wb3J0IHR5cGUgeyBNZWRpY2FsU2VydmljZVN0YXR1cyB9IGZyb20gJy4vbWVkaWNhbC1zZXJ2aWNlLXN0YXR1cyc7XG5pbXBvcnQgdHlwZSB7IFN0YXR1c01ldGFkYXRhLCBMb2NhbGUgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IEFDQ09VTlRfTE9DQVRJT05fU1RBVFVTX01FVEFEQVRBIH0gZnJvbSAnLi9hY2NvdW50LWxvY2F0aW9uLXN0YXR1cyc7XG5pbXBvcnQgeyBNRURJQ0FMX0hJU1RPUllfU1RBVFVTX01FVEFEQVRBIH0gZnJvbSAnLi9tZWRpY2FsLWhpc3Rvcnktc3RhdHVzJztcbmltcG9ydCB7IE1FRElDQUxfU0VSVklDRV9TVEFUVVNfTUVUQURBVEEgfSBmcm9tICcuL21lZGljYWwtc2VydmljZS1zdGF0dXMnO1xuXG4vKipcbiAqIEZlYXR1cmUgdHlwZSBmb3Igc3RhdHVzIHNlbGVjdGlvblxuICovXG5leHBvcnQgdHlwZSBTdGF0dXNGZWF0dXJlID0gJ21lZGljYWxTZXJ2aWNlJyB8ICdhY2NvdW50TG9jYXRpb24nIHwgJ21lZGljYWxIaXN0b3J5JztcblxuLyoqXG4gKiBTdGF0dXMgdHlwZSBtYXBwaW5nIGZvciBlYWNoIGZlYXR1cmVcbiAqL1xuZXhwb3J0IHR5cGUgU3RhdHVzVHlwZU1hcCA9IHtcbiAgbWVkaWNhbFNlcnZpY2U6IE1lZGljYWxTZXJ2aWNlU3RhdHVzO1xuICBhY2NvdW50TG9jYXRpb246IEFjY291bnRMb2NhdGlvblN0YXR1cztcbiAgbWVkaWNhbEhpc3Rvcnk6IE1lZGljYWxIaXN0b3J5U3RhdHVzO1xufTtcblxuLyoqXG4gKiBNZXRhZGF0YSByZWdpc3RyeSBtYXBwaW5nIGZlYXR1cmVzIHRvIHRoZWlyIHN0YXR1cyBjb25maWd1cmF0aW9uc1xuICovXG5jb25zdCBNRVRBREFUQV9SRUdJU1RSWTogUmVjb3JkPFN0YXR1c0ZlYXR1cmUsIFJlY29yZDxzdHJpbmcgfCBudW1iZXIsIFN0YXR1c01ldGFkYXRhPj4gPSB7XG4gIG1lZGljYWxTZXJ2aWNlOiBNRURJQ0FMX1NFUlZJQ0VfU1RBVFVTX01FVEFEQVRBLFxuICBhY2NvdW50TG9jYXRpb246IEFDQ09VTlRfTE9DQVRJT05fU1RBVFVTX01FVEFEQVRBLFxuICBtZWRpY2FsSGlzdG9yeTogTUVESUNBTF9ISVNUT1JZX1NUQVRVU19NRVRBREFUQSxcbn07XG5cbi8qKlxuICogR2V0IHN0YXR1cyBtZXRhZGF0YSBmb3IgYSBzcGVjaWZpYyBmZWF0dXJlIGFuZCBzdGF0dXNcbiAqIEBwYXJhbSBmZWF0dXJlIC0gVGhlIGZlYXR1cmUgbmFtZSAoZS5nLiwgJ21lZGljYWxTZXJ2aWNlJywgJ2FjY291bnRMb2NhdGlvbicpXG4gKiBAcGFyYW0gc3RhdHVzIC0gVGhlIHN0YXR1cyB2YWx1ZVxuICogQHJldHVybnMgVGhlIGNvbXBsZXRlIFN0YXR1c01ldGFkYXRhIGZvciB0aGUgZ2l2ZW4gZmVhdHVyZSBhbmQgc3RhdHVzXG4gKiBAdGhyb3dzIEVycm9yIGlmIGZlYXR1cmUgb3Igc3RhdHVzIGlzIG5vdCBmb3VuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzTWV0YWRhdGFGb3JGZWF0dXJlPFQgZXh0ZW5kcyBTdGF0dXNGZWF0dXJlPihcbiAgZmVhdHVyZTogVCxcbiAgc3RhdHVzOiBTdGF0dXNUeXBlTWFwW1RdLFxuKTogU3RhdHVzTWV0YWRhdGEge1xuICBjb25zdCByZWdpc3RyeSA9IE1FVEFEQVRBX1JFR0lTVFJZW2ZlYXR1cmVdO1xuICBpZiAoIXJlZ2lzdHJ5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHN0YXR1cyBmZWF0dXJlOiAke2ZlYXR1cmV9YCk7XG4gIH1cblxuICBjb25zdCBtZXRhZGF0YSA9IHJlZ2lzdHJ5W3N0YXR1c107XG4gIGlmICghbWV0YWRhdGEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gc3RhdHVzIGZvciBmZWF0dXJlICR7ZmVhdHVyZX06ICR7c3RhdHVzfWApO1xuICB9XG5cbiAgcmV0dXJuIG1ldGFkYXRhO1xufVxuXG4vKipcbiAqIEdldCBzdGF0dXMgaWNvbiBmb3IgYSBzcGVjaWZpYyBmZWF0dXJlIGFuZCBzdGF0dXNcbiAqIEBwYXJhbSBmZWF0dXJlIC0gVGhlIGZlYXR1cmUgbmFtZVxuICogQHBhcmFtIHN0YXR1cyAtIFRoZSBzdGF0dXMgdmFsdWVcbiAqIEByZXR1cm5zIFRoZSBNYXRlcmlhbCBpY29uIG5hbWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXR1c0ljb25Gb3JGZWF0dXJlPFQgZXh0ZW5kcyBTdGF0dXNGZWF0dXJlPihmZWF0dXJlOiBULCBzdGF0dXM6IFN0YXR1c1R5cGVNYXBbVF0pOiBzdHJpbmcge1xuICByZXR1cm4gZ2V0U3RhdHVzTWV0YWRhdGFGb3JGZWF0dXJlKGZlYXR1cmUsIHN0YXR1cykuaWNvbjtcbn1cblxuLyoqXG4gKiBHZXQgc3RhdHVzIGNvbG9yIGZvciBhIHNwZWNpZmljIGZlYXR1cmUgYW5kIHN0YXR1c1xuICogQHBhcmFtIGZlYXR1cmUgLSBUaGUgZmVhdHVyZSBuYW1lXG4gKiBAcGFyYW0gc3RhdHVzIC0gVGhlIHN0YXR1cyB2YWx1ZVxuICogQHJldHVybnMgVGhlIGhleCBjb2xvciBjb2RlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0dXNDb2xvckZvckZlYXR1cmU8VCBleHRlbmRzIFN0YXR1c0ZlYXR1cmU+KGZlYXR1cmU6IFQsIHN0YXR1czogU3RhdHVzVHlwZU1hcFtUXSk6IHN0cmluZyB7XG4gIHJldHVybiBnZXRTdGF0dXNNZXRhZGF0YUZvckZlYXR1cmUoZmVhdHVyZSwgc3RhdHVzKS5jb2xvcjtcbn1cblxuLyoqXG4gKiBHZXQgc3RhdHVzIGxhYmVsIGZvciBhIHNwZWNpZmljIGZlYXR1cmUgYW5kIHN0YXR1c1xuICogQHBhcmFtIGZlYXR1cmUgLSBUaGUgZmVhdHVyZSBuYW1lXG4gKiBAcGFyYW0gc3RhdHVzIC0gVGhlIHN0YXR1cyB2YWx1ZVxuICogQHBhcmFtIGxvY2FsZSAtIFRoZSBsYW5ndWFnZSBsb2NhbGUgKGRlZmF1bHQ6ICd1cy1FTicpXG4gKiBAcGFyYW0gZm9ybWF0IC0gTGFiZWwgZm9ybWF0OiAnc2hvcnQnIG9yICdsb25nJyAoZGVmYXVsdDogJ3Nob3J0JylcbiAqIEByZXR1cm5zIFRoZSB0cmFuc2xhdGVkIGxhYmVsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0dXNMYWJlbEZvckZlYXR1cmU8VCBleHRlbmRzIFN0YXR1c0ZlYXR1cmU+KFxuICBmZWF0dXJlOiBULFxuICBzdGF0dXM6IFN0YXR1c1R5cGVNYXBbVF0sXG4gIGxvY2FsZTogTG9jYWxlID0gJ3VzLUVOJyxcbiAgZm9ybWF0OiAnc2hvcnQnIHwgJ2xvbmcnID0gJ3Nob3J0Jyxcbik6IHN0cmluZyB7XG4gIGNvbnN0IG1ldGFkYXRhID0gZ2V0U3RhdHVzTWV0YWRhdGFGb3JGZWF0dXJlKGZlYXR1cmUsIHN0YXR1cyk7XG4gIHJldHVybiBtZXRhZGF0YS5sYWJlbFtmb3JtYXRdW2xvY2FsZV07XG59XG5cbi8qKlxuICogR2V0IHN0YXR1cyBkZXNjcmlwdGlvbiBmb3IgYSBzcGVjaWZpYyBmZWF0dXJlIGFuZCBzdGF0dXNcbiAqIEBwYXJhbSBmZWF0dXJlIC0gVGhlIGZlYXR1cmUgbmFtZVxuICogQHBhcmFtIHN0YXR1cyAtIFRoZSBzdGF0dXMgdmFsdWVcbiAqIEBwYXJhbSBsb2NhbGUgLSBUaGUgbGFuZ3VhZ2UgbG9jYWxlIChkZWZhdWx0OiAndXMtRU4nKVxuICogQHJldHVybnMgVGhlIHRyYW5zbGF0ZWQgZGVzY3JpcHRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXR1c0Rlc2NyaXB0aW9uRm9yRmVhdHVyZTxUIGV4dGVuZHMgU3RhdHVzRmVhdHVyZT4oXG4gIGZlYXR1cmU6IFQsXG4gIHN0YXR1czogU3RhdHVzVHlwZU1hcFtUXSxcbiAgbG9jYWxlOiBMb2NhbGUgPSAndXMtRU4nLFxuKTogc3RyaW5nIHtcbiAgcmV0dXJuIGdldFN0YXR1c01ldGFkYXRhRm9yRmVhdHVyZShmZWF0dXJlLCBzdGF0dXMpLmRlc2NyaXB0aW9uW2xvY2FsZV07XG59XG5cbi8qKlxuICogR2V0IGFsbCBtZXRhZGF0YSBmb3IgYSBzcGVjaWZpYyBmZWF0dXJlXG4gKiBAcGFyYW0gZmVhdHVyZSAtIFRoZSBmZWF0dXJlIG5hbWVcbiAqIEByZXR1cm5zIFJlY29yZCBvZiBhbGwgc3RhdHVzZXMgYW5kIHRoZWlyIG1ldGFkYXRhIGZvciB0aGUgZmVhdHVyZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsU3RhdHVzTWV0YWRhdGFGb3JGZWF0dXJlPFQgZXh0ZW5kcyBTdGF0dXNGZWF0dXJlPihcbiAgZmVhdHVyZTogVCxcbik6IFJlY29yZDxTdGF0dXNUeXBlTWFwW1RdLCBTdGF0dXNNZXRhZGF0YT4ge1xuICBjb25zdCByZWdpc3RyeSA9IE1FVEFEQVRBX1JFR0lTVFJZW2ZlYXR1cmVdO1xuICBpZiAoIXJlZ2lzdHJ5KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHN0YXR1cyBmZWF0dXJlOiAke2ZlYXR1cmV9YCk7XG4gIH1cbiAgcmV0dXJuIHJlZ2lzdHJ5IGFzIFJlY29yZDxTdGF0dXNUeXBlTWFwW1RdLCBTdGF0dXNNZXRhZGF0YT47XG59XG5cbi8qKlxuICogR2V0IGFsbCBzdGF0dXNlcyBmb3IgYSBzcGVjaWZpYyBmZWF0dXJlXG4gKiBAcGFyYW0gZmVhdHVyZSAtIFRoZSBmZWF0dXJlIG5hbWVcbiAqIEByZXR1cm5zIEFycmF5IG9mIGFsbCBzdGF0dXMgdmFsdWVzIGZvciB0aGUgZmVhdHVyZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsU3RhdHVzZXNGb3JGZWF0dXJlPFQgZXh0ZW5kcyBTdGF0dXNGZWF0dXJlPihmZWF0dXJlOiBUKTogU3RhdHVzVHlwZU1hcFtUXVtdIHtcbiAgY29uc3QgbWV0YWRhdGEgPSBnZXRBbGxTdGF0dXNNZXRhZGF0YUZvckZlYXR1cmUoZmVhdHVyZSk7XG4gIHJldHVybiBPYmplY3Qua2V5cyhtZXRhZGF0YSkgYXMgU3RhdHVzVHlwZU1hcFtUXVtdO1xufVxuXG4vKipcbiAqIEZpbHRlciBzdGF0dXNlcyBieSBjcml0ZXJpYVxuICogQHBhcmFtIGZlYXR1cmUgLSBUaGUgZmVhdHVyZSBuYW1lXG4gKiBAcGFyYW0gcHJlZGljYXRlIC0gRnVuY3Rpb24gdG8gdGVzdCBlYWNoIHN0YXR1cyBtZXRhZGF0YVxuICogQHJldHVybnMgQXJyYXkgb2Ygc3RhdHVzZXMgdGhhdCBtYXRjaCB0aGUgcHJlZGljYXRlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaWx0ZXJTdGF0dXNlc0J5RmVhdHVyZTxUIGV4dGVuZHMgU3RhdHVzRmVhdHVyZT4oXG4gIGZlYXR1cmU6IFQsXG4gIHByZWRpY2F0ZTogKG1ldGFkYXRhOiBTdGF0dXNNZXRhZGF0YSwgc3RhdHVzOiBTdGF0dXNUeXBlTWFwW1RdKSA9PiBib29sZWFuLFxuKTogU3RhdHVzVHlwZU1hcFtUXVtdIHtcbiAgY29uc3QgbWV0YWRhdGEgPSBnZXRBbGxTdGF0dXNNZXRhZGF0YUZvckZlYXR1cmUoZmVhdHVyZSk7XG4gIHJldHVybiBPYmplY3QuZW50cmllcyhtZXRhZGF0YSlcbiAgICAuZmlsdGVyKChbc3RhdHVzLCBtZXRhXSkgPT4gcHJlZGljYXRlKG1ldGEgYXMgU3RhdHVzTWV0YWRhdGEsIHN0YXR1cyBhcyBTdGF0dXNUeXBlTWFwW1RdKSlcbiAgICAubWFwKChbc3RhdHVzXSkgPT4gc3RhdHVzIGFzIFN0YXR1c1R5cGVNYXBbVF0pO1xufVxuXG4vKipcbiAqIE1hcCBzdGF0dXNlcyB0byBhIHNwZWNpZmljIHZhbHVlIHVzaW5nIGEgdHJhbnNmb3JtIGZ1bmN0aW9uXG4gKiBAcGFyYW0gZmVhdHVyZSAtIFRoZSBmZWF0dXJlIG5hbWVcbiAqIEBwYXJhbSB0cmFuc2Zvcm0gLSBGdW5jdGlvbiB0byB0cmFuc2Zvcm0gZWFjaCBzdGF0dXMgbWV0YWRhdGFcbiAqIEByZXR1cm5zIFJlY29yZCBvZiBzdGF0dXNlcyBtYXBwZWQgdG8gdGhlIHRyYW5zZm9ybWVkIHZhbHVlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gbWFwU3RhdHVzZXNCeUZlYXR1cmU8VCBleHRlbmRzIFN0YXR1c0ZlYXR1cmUsIFU+KFxuICBmZWF0dXJlOiBULFxuICB0cmFuc2Zvcm06IChtZXRhZGF0YTogU3RhdHVzTWV0YWRhdGEsIHN0YXR1czogU3RhdHVzVHlwZU1hcFtUXSkgPT4gVSxcbik6IFJlY29yZDxTdGF0dXNUeXBlTWFwW1RdLCBVPiB7XG4gIGNvbnN0IG1ldGFkYXRhID0gZ2V0QWxsU3RhdHVzTWV0YWRhdGFGb3JGZWF0dXJlKGZlYXR1cmUpO1xuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIFU+ID0ge307XG5cbiAgT2JqZWN0LmVudHJpZXMobWV0YWRhdGEpLmZvckVhY2goKFtzdGF0dXMsIG1ldGFdKSA9PiB7XG4gICAgcmVzdWx0W3N0YXR1c10gPSB0cmFuc2Zvcm0obWV0YSBhcyBTdGF0dXNNZXRhZGF0YSwgc3RhdHVzIGFzIFN0YXR1c1R5cGVNYXBbVF0pO1xuICB9KTtcblxuICByZXR1cm4gcmVzdWx0IGFzIFJlY29yZDxTdGF0dXNUeXBlTWFwW1RdLCBVPjtcbn1cblxuLyoqXG4gKiBHZXQgc3RhdHVzIG1ldGFkYXRhIHdpdGggY29tcHV0ZWQgcHJvcGVydGllc1xuICogQHBhcmFtIGZlYXR1cmUgLSBUaGUgZmVhdHVyZSBuYW1lXG4gKiBAcGFyYW0gc3RhdHVzIC0gVGhlIHN0YXR1cyB2YWx1ZVxuICogQHBhcmFtIGxvY2FsZSAtIFRoZSBsYW5ndWFnZSBsb2NhbGVcbiAqIEByZXR1cm5zIEV4dGVuZGVkIG1ldGFkYXRhIHdpdGggY29tcHV0ZWQgbGFiZWxzIGFuZCBkZXNjcmlwdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuZGVkU3RhdHVzTWV0YWRhdGEgZXh0ZW5kcyBPbWl0PFN0YXR1c01ldGFkYXRhLCAnZGVzY3JpcHRpb24nPiB7XG4gIHNob3J0TGFiZWw6IHN0cmluZztcbiAgbG9uZ0xhYmVsOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFeHRlbmRlZFN0YXR1c01ldGFkYXRhRm9yRmVhdHVyZTxUIGV4dGVuZHMgU3RhdHVzRmVhdHVyZT4oXG4gIGZlYXR1cmU6IFQsXG4gIHN0YXR1czogU3RhdHVzVHlwZU1hcFtUXSxcbiAgbG9jYWxlOiBMb2NhbGUgPSAndXMtRU4nLFxuKTogRXh0ZW5kZWRTdGF0dXNNZXRhZGF0YSB7XG4gIGNvbnN0IG1ldGFkYXRhID0gZ2V0U3RhdHVzTWV0YWRhdGFGb3JGZWF0dXJlKGZlYXR1cmUsIHN0YXR1cyk7XG5cbiAgcmV0dXJuIHtcbiAgICBpY29uOiBtZXRhZGF0YS5pY29uLFxuICAgIGNvbG9yOiBtZXRhZGF0YS5jb2xvcixcbiAgICBsYWJlbDogbWV0YWRhdGEubGFiZWwsXG4gICAgc2hvcnRMYWJlbDogbWV0YWRhdGEubGFiZWwuc2hvcnRbbG9jYWxlXSxcbiAgICBsb25nTGFiZWw6IG1ldGFkYXRhLmxhYmVsLmxvbmdbbG9jYWxlXSxcbiAgICBkZXNjcmlwdGlvbjogbWV0YWRhdGEuZGVzY3JpcHRpb25bbG9jYWxlXSxcbiAgfTtcbn1cblxuLyoqXG4gKiBTZWFyY2ggc3RhdHVzZXMgYnkgbGFiZWxcbiAqIEBwYXJhbSBmZWF0dXJlIC0gVGhlIGZlYXR1cmUgbmFtZVxuICogQHBhcmFtIHNlYXJjaFRlcm0gLSBUaGUgc2VhcmNoIHRlcm0gKGNhc2UtaW5zZW5zaXRpdmUpXG4gKiBAcGFyYW0gbG9jYWxlIC0gVGhlIGxhbmd1YWdlIGxvY2FsZVxuICogQHJldHVybnMgQXJyYXkgb2Ygc3RhdHVzZXMgbWF0Y2hpbmcgdGhlIHNlYXJjaCB0ZXJtXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzZWFyY2hTdGF0dXNlc0J5RmVhdHVyZTxUIGV4dGVuZHMgU3RhdHVzRmVhdHVyZT4oXG4gIGZlYXR1cmU6IFQsXG4gIHNlYXJjaFRlcm06IHN0cmluZyxcbiAgbG9jYWxlOiBMb2NhbGUgPSAndXMtRU4nLFxuKTogU3RhdHVzVHlwZU1hcFtUXVtdIHtcbiAgY29uc3QgbG93ZXJTZWFyY2ggPSBzZWFyY2hUZXJtLnRvTG93ZXJDYXNlKCk7XG5cbiAgcmV0dXJuIGZpbHRlclN0YXR1c2VzQnlGZWF0dXJlKGZlYXR1cmUsIChtZXRhZGF0YSkgPT4ge1xuICAgIGNvbnN0IHNob3J0TGFiZWwgPSBtZXRhZGF0YS5sYWJlbC5zaG9ydFtsb2NhbGVdLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgbG9uZ0xhYmVsID0gbWV0YWRhdGEubGFiZWwubG9uZ1tsb2NhbGVdLnRvTG93ZXJDYXNlKCk7XG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSBtZXRhZGF0YS5kZXNjcmlwdGlvbltsb2NhbGVdLnRvTG93ZXJDYXNlKCk7XG5cbiAgICByZXR1cm4gc2hvcnRMYWJlbC5pbmNsdWRlcyhsb3dlclNlYXJjaCkgfHwgbG9uZ0xhYmVsLmluY2x1ZGVzKGxvd2VyU2VhcmNoKSB8fCBkZXNjcmlwdGlvbi5pbmNsdWRlcyhsb3dlclNlYXJjaCk7XG4gIH0pO1xufVxuXG4vKipcbiAqIEdldCBzdGF0dXMgbWV0YWRhdGEgZ3JvdXBlZCBieSBjb2xvclxuICogQHBhcmFtIGZlYXR1cmUgLSBUaGUgZmVhdHVyZSBuYW1lXG4gKiBAcmV0dXJucyBSZWNvcmQgb2YgY29sb3JzIG1hcHBlZCB0byBhcnJheXMgb2Ygc3RhdHVzZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdyb3VwU3RhdHVzZXNCeUNvbG9yRm9yRmVhdHVyZTxUIGV4dGVuZHMgU3RhdHVzRmVhdHVyZT4oXG4gIGZlYXR1cmU6IFQsXG4pOiBSZWNvcmQ8c3RyaW5nLCBTdGF0dXNUeXBlTWFwW1RdW10+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBnZXRBbGxTdGF0dXNNZXRhZGF0YUZvckZlYXR1cmUoZmVhdHVyZSk7XG4gIGNvbnN0IGdyb3VwZWQ6IFJlY29yZDxzdHJpbmcsIFN0YXR1c1R5cGVNYXBbVF1bXT4gPSB7fTtcblxuICBPYmplY3QuZW50cmllcyhtZXRhZGF0YSkuZm9yRWFjaCgoW3N0YXR1cywgbWV0YV0pID0+IHtcbiAgICBjb25zdCBtZXRhVHlwZWQgPSBtZXRhIGFzIFN0YXR1c01ldGFkYXRhO1xuICAgIGlmICghZ3JvdXBlZFttZXRhVHlwZWQuY29sb3JdKSB7XG4gICAgICBncm91cGVkW21ldGFUeXBlZC5jb2xvcl0gPSBbXTtcbiAgICB9XG4gICAgZ3JvdXBlZFttZXRhVHlwZWQuY29sb3JdLnB1c2goc3RhdHVzIGFzIFN0YXR1c1R5cGVNYXBbVF0pO1xuICB9KTtcblxuICByZXR1cm4gZ3JvdXBlZDtcbn1cblxuLyoqXG4gKiBHZXQgc3RhdHVzIG1ldGFkYXRhIGdyb3VwZWQgYnkgaWNvblxuICogQHBhcmFtIGZlYXR1cmUgLSBUaGUgZmVhdHVyZSBuYW1lXG4gKiBAcmV0dXJucyBSZWNvcmQgb2YgaWNvbnMgbWFwcGVkIHRvIGFycmF5cyBvZiBzdGF0dXNlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ3JvdXBTdGF0dXNlc0J5SWNvbkZvckZlYXR1cmU8VCBleHRlbmRzIFN0YXR1c0ZlYXR1cmU+KGZlYXR1cmU6IFQpOiBSZWNvcmQ8c3RyaW5nLCBTdGF0dXNUeXBlTWFwW1RdW10+IHtcbiAgY29uc3QgbWV0YWRhdGEgPSBnZXRBbGxTdGF0dXNNZXRhZGF0YUZvckZlYXR1cmUoZmVhdHVyZSk7XG4gIGNvbnN0IGdyb3VwZWQ6IFJlY29yZDxzdHJpbmcsIFN0YXR1c1R5cGVNYXBbVF1bXT4gPSB7fTtcblxuICBPYmplY3QuZW50cmllcyhtZXRhZGF0YSkuZm9yRWFjaCgoW3N0YXR1cywgbWV0YV0pID0+IHtcbiAgICBjb25zdCBtZXRhVHlwZWQgPSBtZXRhIGFzIFN0YXR1c01ldGFkYXRhO1xuICAgIGlmICghZ3JvdXBlZFttZXRhVHlwZWQuaWNvbl0pIHtcbiAgICAgIGdyb3VwZWRbbWV0YVR5cGVkLmljb25dID0gW107XG4gICAgfVxuICAgIGdyb3VwZWRbbWV0YVR5cGVkLmljb25dLnB1c2goc3RhdHVzIGFzIFN0YXR1c1R5cGVNYXBbVF0pO1xuICB9KTtcblxuICByZXR1cm4gZ3JvdXBlZDtcbn1cbiJdfQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@doctorus/common",
|
|
3
|
-
"description": "Common utilities and libraries for the
|
|
3
|
+
"description": "Common utilities and libraries for the DOCTORUS project",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "git@github.com:DoctorusRepoOwner/common.git"
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"publishConfig": {
|
|
33
33
|
"access": "public"
|
|
34
34
|
},
|
|
35
|
-
"version": "0.0.
|
|
35
|
+
"version": "0.0.19",
|
|
36
36
|
"jest": {
|
|
37
37
|
"coverageProvider": "v8",
|
|
38
38
|
"testMatch": [
|