@doctorus/common 0.0.9 → 0.0.10

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.
@@ -0,0 +1,10 @@
1
+ import { Action } from './actions';
2
+ import { Operation } from './operation';
3
+ import { Resource } from './resources';
4
+ export type LocaleInput = string;
5
+ export declare function getActionLabel(action: Action, locale?: LocaleInput): string;
6
+ export declare function getResourceLabel(resource: Resource, locale?: LocaleInput): string;
7
+ export declare function getOperationLabel(operation: Operation | string, locale?: LocaleInput, opts?: {
8
+ order?: 'action-resource' | 'resource-action';
9
+ separator?: string;
10
+ }): string;
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getActionLabel = getActionLabel;
4
+ exports.getResourceLabel = getResourceLabel;
5
+ exports.getOperationLabel = getOperationLabel;
6
+ const actions_1 = require("./actions");
7
+ const operation_1 = require("./operation");
8
+ const resources_1 = require("./resources");
9
+ function normalizeLocale(locale) {
10
+ if (!locale)
11
+ return 'en';
12
+ const lower = locale.toLowerCase();
13
+ if (lower.startsWith('fr'))
14
+ return 'fr';
15
+ return 'en';
16
+ }
17
+ const enAction = {
18
+ [actions_1.Action.CREATE]: 'Create',
19
+ [actions_1.Action.READ]: 'Read',
20
+ [actions_1.Action.UPDATE]: 'Update',
21
+ [actions_1.Action.DELETE]: 'Delete',
22
+ [actions_1.Action.PUT]: 'Put',
23
+ [actions_1.Action.LIST]: 'List',
24
+ [actions_1.Action.MANAGE]: 'Manage',
25
+ [actions_1.Action.VIEW]: 'View',
26
+ [actions_1.Action.SEARCH]: 'Search',
27
+ [actions_1.Action.GRANT]: 'Grant',
28
+ [actions_1.Action.REVOKE]: 'Revoke',
29
+ [actions_1.Action.PRESCRIBE]: 'Prescribe',
30
+ [actions_1.Action.DIAGNOSE]: 'Diagnose',
31
+ [actions_1.Action.SCHEDULE]: 'Schedule',
32
+ [actions_1.Action.CANCEL]: 'Cancel',
33
+ [actions_1.Action.APPROVE]: 'Approve',
34
+ [actions_1.Action.REJECT]: 'Reject',
35
+ [actions_1.Action.SIGN]: 'Sign',
36
+ [actions_1.Action.VERIFY]: 'Verify',
37
+ [actions_1.Action.SET_MEDICAL_SERVICE_STATUS]: 'Set medical service status',
38
+ [actions_1.Action.SET_MEDICAL_SERVICE_FEES]: 'Set medical service fees',
39
+ [actions_1.Action.UPDATE_STATUS]: 'Update status',
40
+ [actions_1.Action.VIEW_PATIENTS]: 'View patients',
41
+ [actions_1.Action.PUT_PATIENT_PAYMENT]: 'Put patient payment',
42
+ [actions_1.Action.DELETE_PATIENT_PAYMENT]: 'Delete patient payment',
43
+ [actions_1.Action.EXPORT]: 'Export',
44
+ [actions_1.Action.IMPORT]: 'Import',
45
+ [actions_1.Action.ARCHIVE]: 'Archive',
46
+ [actions_1.Action.RESTORE]: 'Restore',
47
+ [actions_1.Action.SHARE]: 'Share',
48
+ [actions_1.Action.DOWNLOAD]: 'Download',
49
+ [actions_1.Action.UPLOAD]: 'Upload',
50
+ [actions_1.Action.LOGIN]: 'Login',
51
+ [actions_1.Action.LOGOUT]: 'Logout',
52
+ [actions_1.Action.CONFIGURE]: 'Configure',
53
+ [actions_1.Action.AUDIT]: 'Audit',
54
+ };
55
+ const frAction = {
56
+ [actions_1.Action.CREATE]: 'Créer',
57
+ [actions_1.Action.READ]: 'Lire',
58
+ [actions_1.Action.UPDATE]: 'Mettre à jour',
59
+ [actions_1.Action.DELETE]: 'Supprimer',
60
+ [actions_1.Action.PUT]: 'Mettre',
61
+ [actions_1.Action.LIST]: 'Lister',
62
+ [actions_1.Action.MANAGE]: 'Gérer',
63
+ [actions_1.Action.VIEW]: 'Voir',
64
+ [actions_1.Action.SEARCH]: 'Rechercher',
65
+ [actions_1.Action.GRANT]: 'Accorder',
66
+ [actions_1.Action.REVOKE]: 'Révoquer',
67
+ [actions_1.Action.PRESCRIBE]: 'Prescrire',
68
+ [actions_1.Action.DIAGNOSE]: 'Diagnostiquer',
69
+ [actions_1.Action.SCHEDULE]: 'Planifier',
70
+ [actions_1.Action.CANCEL]: 'Annuler',
71
+ [actions_1.Action.APPROVE]: 'Approuver',
72
+ [actions_1.Action.REJECT]: 'Rejeter',
73
+ [actions_1.Action.SIGN]: 'Signer',
74
+ [actions_1.Action.VERIFY]: 'Vérifier',
75
+ [actions_1.Action.SET_MEDICAL_SERVICE_STATUS]: 'Définir le statut du service médical',
76
+ [actions_1.Action.SET_MEDICAL_SERVICE_FEES]: 'Définir les frais du service médical',
77
+ [actions_1.Action.UPDATE_STATUS]: 'Mettre à jour le statut',
78
+ [actions_1.Action.VIEW_PATIENTS]: 'Voir les patients',
79
+ [actions_1.Action.PUT_PATIENT_PAYMENT]: 'Enregistrer le paiement patient',
80
+ [actions_1.Action.DELETE_PATIENT_PAYMENT]: 'Supprimer le paiement patient',
81
+ [actions_1.Action.EXPORT]: 'Exporter',
82
+ [actions_1.Action.IMPORT]: 'Importer',
83
+ [actions_1.Action.ARCHIVE]: 'Archiver',
84
+ [actions_1.Action.RESTORE]: 'Restaurer',
85
+ [actions_1.Action.SHARE]: 'Partager',
86
+ [actions_1.Action.DOWNLOAD]: 'Télécharger',
87
+ [actions_1.Action.UPLOAD]: 'Téléverser',
88
+ [actions_1.Action.LOGIN]: 'Connexion',
89
+ [actions_1.Action.LOGOUT]: 'Déconnexion',
90
+ [actions_1.Action.CONFIGURE]: 'Configurer',
91
+ [actions_1.Action.AUDIT]: 'Auditer',
92
+ };
93
+ // For resources we provide a few explicit French overrides and default to humanized names
94
+ const frResourceOverrides = {
95
+ [resources_1.Resource.ACCOUNT]: 'Compte',
96
+ [resources_1.Resource.ACCOUNT_OWNERSHIP]: 'Propriété du compte',
97
+ [resources_1.Resource.ACCOUNT_PREFERENCES]: 'Préférences du compte',
98
+ [resources_1.Resource.USER]: 'Utilisateur',
99
+ [resources_1.Resource.CONTACT]: 'Contact',
100
+ [resources_1.Resource.PATIENT]: 'Patient',
101
+ [resources_1.Resource.PATIENT_MEDICAL_NOTES]: 'Notes médicales du patient',
102
+ [resources_1.Resource.PATIENT_MEDICAL_PROPERTIES]: 'Propriétés médicales du patient',
103
+ [resources_1.Resource.PATIENT_PUBLIC_PROPERTIES]: 'Propriétés publiques du patient',
104
+ [resources_1.Resource.PATIENT_PAYMENT]: 'Paiement du patient',
105
+ [resources_1.Resource.MEDICAL_SERVICE]: 'Service médical',
106
+ [resources_1.Resource.MEDICAL_SERVICE_NOTE]: 'Note du service médical',
107
+ [resources_1.Resource.MEDICAL_SERVICE_SCHEDULE]: 'Planification du service médical',
108
+ [resources_1.Resource.MEDICAL_SERVICE_FEES]: 'Frais du service médical',
109
+ [resources_1.Resource.MEDICAL_SERVICE_STATUS]: 'Statut du service médical',
110
+ [resources_1.Resource.MEDICAL_NOTE]: 'Note médicale',
111
+ [resources_1.Resource.MEDICAL_RECORD]: 'Dossier médical',
112
+ [resources_1.Resource.MEDICAL_HISTORY]: 'Antécédents médicaux',
113
+ [resources_1.Resource.MEDICAL_HISTORY_MODEL]: "Modèle d'antécédents médicaux",
114
+ [resources_1.Resource.PRESCRIPTION]: 'Ordonnance',
115
+ [resources_1.Resource.DIAGNOSIS]: 'Diagnostic',
116
+ [resources_1.Resource.OBSERVATION]: 'Observation',
117
+ [resources_1.Resource.MEDICATION]: 'Médication',
118
+ [resources_1.Resource.ALLERGY]: 'Allergie',
119
+ [resources_1.Resource.IMMUNIZATION]: 'Vaccination',
120
+ [resources_1.Resource.PROCEDURE]: 'Procédure',
121
+ [resources_1.Resource.CLINICAL_NOTE]: 'Note clinique',
122
+ [resources_1.Resource.VITAL_SIGNS]: 'Signes vitaux',
123
+ [resources_1.Resource.MEASURE_MODEL]: 'Modèle de mesure',
124
+ [resources_1.Resource.CALCULATED_MEASURE_MODEL]: 'Modèle de mesure calculée',
125
+ [resources_1.Resource.UPLOADED_DOCUMENT]: 'Document téléversé',
126
+ [resources_1.Resource.DOCUMENT_LAYOUT]: 'Mise en page du document',
127
+ [resources_1.Resource.GENERATED_DOCUMENT]: 'Document généré',
128
+ [resources_1.Resource.DOCUMENT_MODEL]: 'Modèle de document',
129
+ [resources_1.Resource.SNIPPET]: 'Extrait',
130
+ [resources_1.Resource.LOCATION]: 'Lieu',
131
+ [resources_1.Resource.TASK_TYPE]: 'Type de tâche',
132
+ [resources_1.Resource.LAB_RESULT]: 'Résultat de laboratoire',
133
+ [resources_1.Resource.IMAGING]: 'Imagerie',
134
+ [resources_1.Resource.MEMBERSHIP]: 'Adhésion',
135
+ [resources_1.Resource.SETTINGS]: 'Paramètres',
136
+ [resources_1.Resource.NOTIFICATION]: 'Notification',
137
+ [resources_1.Resource.REPORT]: 'Rapport',
138
+ [resources_1.Resource.AUDIT_LOG]: "Journal d'audit",
139
+ [resources_1.Resource.SYSTEM]: 'Système',
140
+ [resources_1.Resource.PUBLIC_RESOURCE]: 'Ressource publique',
141
+ [resources_1.Resource.MEDICAL_RESOURCE]: 'Ressource médicale',
142
+ };
143
+ function humanizeKey(key) {
144
+ return key
145
+ .toLowerCase()
146
+ .split('_')
147
+ .map((w) => w.charAt(0).toUpperCase() + w.slice(1))
148
+ .join(' ');
149
+ }
150
+ function getActionLabel(action, locale = 'en') {
151
+ const norm = normalizeLocale(locale);
152
+ if (norm === 'fr')
153
+ return frAction[action] ?? humanizeKey(action);
154
+ return enAction[action] ?? humanizeKey(action);
155
+ }
156
+ function getResourceLabel(resource, locale = 'en') {
157
+ const norm = normalizeLocale(locale);
158
+ if (norm === 'fr')
159
+ return frResourceOverrides[resource] ?? humanizeKey(resource);
160
+ return humanizeKey(resource);
161
+ }
162
+ function getOperationLabel(operation, locale = 'en', opts) {
163
+ const norm = normalizeLocale(locale);
164
+ const order = opts?.order ?? 'action-resource';
165
+ const sep = opts?.separator ?? ' ';
166
+ const op = typeof operation === 'string' ? operation_1.Operation.fromString(operation) : operation;
167
+ if (!op)
168
+ return '';
169
+ const a = getActionLabel(op.action, norm);
170
+ const r = getResourceLabel(op.resource, norm);
171
+ return order === 'resource-action' ? `${r}${sep}${a}` : `${a}${sep}${r}`;
172
+ }
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGFiZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29wZXJhdGlvbnMvbGFiZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBdUpBLHdDQUlDO0FBRUQsNENBSUM7QUFFRCw4Q0FjQztBQWpMRCx1Q0FBbUM7QUFDbkMsMkNBQXdDO0FBQ3hDLDJDQUF1QztBQUt2QyxTQUFTLGVBQWUsQ0FBQyxNQUFvQjtJQUMzQyxJQUFJLENBQUMsTUFBTTtRQUFFLE9BQU8sSUFBSSxDQUFDO0lBQ3pCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUNuQyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDeEMsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsTUFBTSxRQUFRLEdBQW9DO0lBQ2hELENBQUMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRO0lBQ3pCLENBQUMsZ0JBQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNO0lBQ3JCLENBQUMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRO0lBQ3pCLENBQUMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRO0lBQ3pCLENBQUMsZ0JBQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxLQUFLO0lBQ25CLENBQUMsZ0JBQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNO0lBQ3JCLENBQUMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRO0lBQ3pCLENBQUMsZ0JBQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNO0lBQ3JCLENBQUMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRO0lBQ3pCLENBQUMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxPQUFPO0lBQ3ZCLENBQUMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRO0lBQ3pCLENBQUMsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxXQUFXO0lBQy9CLENBQUMsZ0JBQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxVQUFVO0lBQzdCLENBQUMsZ0JBQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxVQUFVO0lBQzdCLENBQUMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRO0lBQ3pCLENBQUMsZ0JBQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxTQUFTO0lBQzNCLENBQUMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRO0lBQ3pCLENBQUMsZ0JBQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNO0lBQ3JCLENBQUMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxRQUFRO0lBQ3pCLENBQUMsZ0JBQU0sQ0FBQywwQkFBMEIsQ0FBQyxFQUFFLDRCQUE0QjtJQUNqRSxDQUFDLGdCQUFNLENBQUMsd0JBQXdCLENBQUMsRUFBRSwwQkFBMEI7SUFDN0QsQ0FBQyxnQkFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFFLGVBQWU7SUFDdkMsQ0FBQyxnQkFBTSxDQUFDLGFBQWEsQ0FBQyxFQUFFLGVBQWU7SUFDdkMsQ0FBQyxnQkFBTSxDQUFDLG1CQUFtQixDQUFDLEVBQUUscUJBQXFCO0lBQ25ELENBQUMsZ0JBQU0sQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLHdCQUF3QjtJQUN6RCxDQUFDLGdCQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUTtJQUN6QixDQUFDLGdCQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUTtJQUN6QixDQUFDLGdCQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsU0FBUztJQUMzQixDQUFDLGdCQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsU0FBUztJQUMzQixDQUFDLGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTztJQUN2QixDQUFDLGdCQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsVUFBVTtJQUM3QixDQUFDLGdCQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUTtJQUN6QixDQUFDLGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTztJQUN2QixDQUFDLGdCQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBUTtJQUN6QixDQUFDLGdCQUFNLENBQUMsU0FBUyxDQUFDLEVBQUUsV0FBVztJQUMvQixDQUFDLGdCQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTztDQUN4QixDQUFDO0FBRUYsTUFBTSxRQUFRLEdBQW9DO0lBQ2hELENBQUMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPO0lBQ3hCLENBQUMsZ0JBQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNO0lBQ3JCLENBQUMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxlQUFlO0lBQ2hDLENBQUMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxXQUFXO0lBQzVCLENBQUMsZ0JBQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxRQUFRO0lBQ3RCLENBQUMsZ0JBQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRO0lBQ3ZCLENBQUMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPO0lBQ3hCLENBQUMsZ0JBQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNO0lBQ3JCLENBQUMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxZQUFZO0lBQzdCLENBQUMsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxVQUFVO0lBQzFCLENBQUMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxVQUFVO0lBQzNCLENBQUMsZ0JBQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxXQUFXO0lBQy9CLENBQUMsZ0JBQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxlQUFlO0lBQ2xDLENBQUMsZ0JBQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxXQUFXO0lBQzlCLENBQUMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxTQUFTO0lBQzFCLENBQUMsZ0JBQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxXQUFXO0lBQzdCLENBQUMsZ0JBQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxTQUFTO0lBQzFCLENB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LFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMvQixDQUFDO0FBRUQsU0FBZ0IsaUJBQWlCLENBQy9CLFNBQTZCLEVBQzdCLFNBQXNCLElBQUksRUFDMUIsSUFBNEU7SUFFNUUsTUFBTSxJQUFJLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JDLE1BQU0sS0FBSyxHQUFHLElBQUksRUFBRSxLQUFLLElBQUksaUJBQWlCLENBQUM7SUFDL0MsTUFBTSxHQUFHLEdBQUcsSUFBSSxFQUFFLFNBQVMsSUFBSSxHQUFHLENBQUM7SUFFbkMsTUFBTSxFQUFFLEdBQUcsT0FBTyxTQUFTLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxxQkFBUyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3ZGLElBQUksQ0FBQyxFQUFFO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDbkIsTUFBTSxDQUFDLEdBQUcsY0FBYyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDMUMsTUFBTSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM5QyxPQUFPLEtBQUssS0FBSyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDM0UsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFjdGlvbiB9IGZyb20gJy4vYWN0aW9ucyc7XG5pbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tICcuL29wZXJhdGlvbic7XG5pbXBvcnQgeyBSZXNvdXJjZSB9IGZyb20gJy4vcmVzb3VyY2VzJztcblxuLy8gQWNjZXB0IGZ1bGwgQkNQLTQ3IGxvY2FsZSBjb2RlcyBsaWtlIGVuLVVTLCBmci1GUiBidXQgaW50ZXJuYWxseSBub3JtYWxpemUgdG8gYmFzZSBsYW5ndWFnZVxuZXhwb3J0IHR5cGUgTG9jYWxlSW5wdXQgPSBzdHJpbmc7IC8vIGUuZy4gJ2VuJywgJ2VuLVVTJywgJ2ZyJywgJ2ZyLUZSJ1xuXG5mdW5jdGlvbiBub3JtYWxpemVMb2NhbGUobG9jYWxlPzogTG9jYWxlSW5wdXQpOiAnZW4nIHwgJ2ZyJyB7XG4gIGlmICghbG9jYWxlKSByZXR1cm4gJ2VuJztcbiAgY29uc3QgbG93ZXIgPSBsb2NhbGUudG9Mb3dlckNhc2UoKTtcbiAgaWYgKGxvd2VyLnN0YXJ0c1dpdGgoJ2ZyJykpIHJldHVybiAnZnInO1xuICByZXR1cm4gJ2VuJztcbn1cblxuY29uc3QgZW5BY3Rpb246IFBhcnRpYWw8UmVjb3JkPEFjdGlvbiwgc3RyaW5nPj4gPSB7XG4gIFtBY3Rpb24uQ1JFQVRFXTogJ0NyZWF0ZScsXG4gIFtBY3Rpb24uUkVBRF06ICdSZWFkJyxcbiAgW0FjdGlvbi5VUERBVEVdOiAnVXBkYXRlJyxcbiAgW0FjdGlvbi5ERUxFVEVdOiAnRGVsZXRlJyxcbiAgW0FjdGlvbi5QVVRdOiAnUHV0JyxcbiAgW0FjdGlvbi5MSVNUXTogJ0xpc3QnLFxuICBbQWN0aW9uLk1BTkFHRV06ICdNYW5hZ2UnLFxuICBbQWN0aW9uLlZJRVddOiAnVmlldycsXG4gIFtBY3Rpb24uU0VBUkNIXTogJ1NlYXJjaCcsXG4gIFtBY3Rpb24uR1JBTlRdOiAnR3JhbnQnLFxuICBbQWN0aW9uLlJFVk9LRV06ICdSZXZva2UnLFxuICBbQWN0aW9uLlBSRVNDUklCRV06ICdQcmVzY3JpYmUnLFxuICBbQWN0aW9uLkRJQUdOT1NFXTogJ0RpYWdub3NlJyxcbiAgW0FjdGlvbi5TQ0hFRFVMRV06ICdTY2hlZHVsZScsXG4gIFtBY3Rpb24uQ0FOQ0VMXTogJ0NhbmNlbCcsXG4gIFtBY3Rpb24uQVBQUk9WRV06ICdBcHByb3ZlJyxcbiAgW0FjdGlvbi5SRUpFQ1RdOiAnUmVqZWN0JyxcbiAgW0FjdGlvbi5TSUdOXTogJ1NpZ24nLFxuICBbQWN0aW9uLlZFUklGWV06ICdWZXJpZnknLFxuICBbQWN0aW9uLlNFVF9NRURJQ0FMX1NFUlZJQ0VfU1RBVFVTXTogJ1NldCBtZWRpY2FsIHNlcnZpY2Ugc3RhdHVzJyxcbiAgW0FjdGlvbi5TRVRfTUVESUNBTF9TRVJWSUNFX0ZFRVNdOiAnU2V0IG1lZGljYWwgc2VydmljZSBmZWVzJyxcbiAgW0FjdGlvbi5VUERBVEVfU1RBVFVTXTogJ1VwZGF0ZSBzdGF0dXMnLFxuICBbQWN0aW9uLlZJRVdfUEFUSUVOVFNdOiAnVmlldyBwYXRpZW50cycsXG4gIFtBY3Rpb24uUFVUX1BBVElFTlRfUEFZTUVOVF06ICdQdXQgcGF0aWVudCBwYXltZW50JyxcbiAgW0FjdGlvbi5ERUxFVEVfUEFUSUVOVF9QQVlNRU5UXTogJ0RlbGV0ZSBwYXRpZW50IHBheW1lbnQnLFxuICBbQWN0aW9uLkVYUE9SVF06ICdFeHBvcnQnLFxuICBbQWN0aW9uLklNUE9SVF06ICdJbXBvcnQnLFxuICBbQWN0aW9uLkFSQ0hJVkVdOiAnQXJjaGl2ZScsXG4gIFtBY3Rpb24uUkVTVE9SRV06ICdSZXN0b3JlJyxcbiAgW0FjdGlvbi5TSEFSRV06ICdTaGFyZScsXG4gIFtBY3Rpb24uRE9XTkxPQURdOiAnRG93bmxvYWQnLFxuICBbQWN0aW9uLlVQTE9BRF06ICdVcGxvYWQnLFxuICBbQWN0aW9uLkxPR0lOXTogJ0xvZ2luJyxcbiAgW0FjdGlvbi5MT0dPVVRdOiAnTG9nb3V0JyxcbiAgW0FjdGlvbi5DT05GSUdVUkVdOiAnQ29uZmlndXJlJyxcbiAgW0FjdGlvbi5BVURJVF06ICdBdWRpdCcsXG59O1xuXG5jb25zdCBmckFjdGlvbjogUGFydGlhbDxSZWNvcmQ8QWN0aW9uLCBzdHJpbmc+PiA9IHtcbiAgW0FjdGlvbi5DUkVBVEVdOiAnQ3LDqWVyJyxcbiAgW0FjdGlvbi5SRUFEXTogJ0xpcmUnLFxuICBbQWN0aW9uLlVQREFURV06ICdNZXR0cmUgw6Agam91cicsXG4gIFtBY3Rpb24uREVMRVRFXTogJ1N1cHByaW1lcicsXG4gIFtBY3Rpb24uUFVUXTogJ01ldHRyZScsXG4gIFtBY3Rpb24uTElTVF06ICdMaXN0ZXInLFxuICBbQWN0aW9uLk1BTkFHRV06ICdHw6lyZXInLFxuICBbQWN0aW9uLlZJRVddOiAnVm9pcicsXG4gIFtBY3Rpb24uU0VBUkNIXTogJ1JlY2hlcmNoZXInLFxuICBbQWN0aW9uLkdSQU5UXTogJ0FjY29yZGVyJyxcbiAgW0FjdGlvbi5SRVZPS0VdOiAnUsOpdm9xdWVyJyxcbiAgW0FjdGlvbi5QUkVTQ1JJQkVdOiAnUHJlc2NyaXJlJyxcbiAgW0FjdGlvbi5ESUFHTk9TRV06ICdEaWFnbm9zdGlxdWVyJyxcbiAgW0FjdGlvbi5TQ0hFRFVMRV06ICdQbGFuaWZpZXInLFxuICBbQWN0aW9uLkNBTkNFTF06ICdBbm51bGVyJyxcbiAgW0FjdGlvbi5BUFBST1ZFXTogJ0FwcHJvdXZlcicsXG4gIFtBY3Rpb24uUkVKRUNUXTogJ1JlamV0ZXInLFxuICBbQWN0aW9uLlNJR05dOiAnU2lnbmVyJyxcbiAgW0FjdGlvbi5WRVJJRlldOiAnVsOpcmlmaWVyJyxcbiAgW0FjdGlvbi5TRVRfTUVESUNBTF9TRVJWSUNFX1NUQVRVU106ICdEw6lmaW5pciBsZSBzdGF0dXQgZHUgc2VydmljZSBtw6lkaWNhbCcsXG4gIFtBY3Rpb24uU0VUX01FRElDQUxfU0VSVklDRV9GRUVTXTogJ0TDqWZpbmlyIGxlcyBmcmFpcyBkdSBzZXJ2aWNlIG3DqWRpY2FsJyxcbiAgW0FjdGlvbi5VUERBVEVfU1RBVFVTXTogJ01ldHRyZSDDoCBqb3VyIGxlIHN0YXR1dCcsXG4gIFtBY3Rpb24uVklFV19QQVRJRU5UU106ICdWb2lyIGxlcyBwYXRpZW50cycsXG4gIFtBY3Rpb24uUFVUX1BBVElFTlRfUEFZTUVOVF06ICdFbnJlZ2lzdHJlciBsZSBwYWllbWVudCBwYXRpZW50JyxcbiAgW0FjdGlvbi5ERUxFVEVfUEFUSUVOVF9QQVlNRU5UXTogJ1N1cHByaW1lciBsZSBwYWllbWVudCBwYXRpZW50JyxcbiAgW0FjdGlvbi5FWFBPUlRdOiAnRXhwb3J0ZXInLFxuICBbQWN0aW9uLklNUE9SVF06ICdJbXBvcnRlcicsXG4gIFtBY3Rpb24uQVJDSElWRV06ICdBcmNoaXZlcicsXG4gIFtBY3Rpb24uUkVTVE9SRV06ICdSZXN0YXVyZXInLFxuICBbQWN0aW9uLlNIQVJFXTogJ1BhcnRhZ2VyJyxcbiAgW0FjdGlvbi5ET1dOTE9BRF06ICdUw6lsw6ljaGFyZ2VyJyxcbiAgW0FjdGlvbi5VUExPQURdOiAnVMOpbMOpdmVyc2VyJyxcbiAgW0FjdGlvbi5MT0dJTl06ICdDb25uZXhpb24nLFxuICBbQWN0aW9uLkxPR09VVF06ICdEw6ljb25uZXhpb24nLFxuICBbQWN0aW9uLkNPTkZJR1VSRV06ICdDb25maWd1cmVyJyxcbiAgW0FjdGlvbi5BVURJVF06ICdBdWRpdGVyJyxcbn07XG5cbi8vIEZvciByZXNvdXJjZXMgd2UgcHJvdmlkZSBhIGZldyBleHBsaWNpdCBGcmVuY2ggb3ZlcnJpZGVzIGFuZCBkZWZhdWx0IHRvIGh1bWFuaXplZCBuYW1lc1xuY29uc3QgZnJSZXNvdXJjZU92ZXJyaWRlczogUGFydGlhbDxSZWNvcmQ8UmVzb3VyY2UsIHN0cmluZz4+ID0ge1xuICBbUmVzb3VyY2UuQUNDT1VOVF06ICdDb21wdGUnLFxuICBbUmVzb3VyY2UuQUNDT1VOVF9PV05FUlNISVBdOiAnUHJvcHJpw6l0w6kgZHUgY29tcHRlJyxcbiAgW1Jlc291cmNlLkFDQ09VTlRfUFJFRkVSRU5DRVNdOiAnUHLDqWbDqXJlbmNlcyBkdSBjb21wdGUnLFxuICBbUmVzb3VyY2UuVVNFUl06ICdVdGlsaXNhdGV1cicsXG4gIFtSZXNvdXJjZS5DT05UQUNUXTogJ0NvbnRhY3QnLFxuICBbUmVzb3VyY2UuUEFUSUVOVF06ICdQYXRpZW50JyxcbiAgW1Jlc291cmNlLlBBVElFTlRfTUVESUNBTF9OT1RFU106ICdOb3RlcyBtw6lkaWNhbGVzIGR1IHBhdGllbnQnLFxuICBbUmVzb3VyY2UuUEFUSUVOVF9NRURJQ0FMX1BST1BFUlRJRVNdOiAnUHJvcHJpw6l0w6lzIG3DqWRpY2FsZXMgZHUgcGF0aWVudCcsXG4gIFtSZXNvdXJjZS5QQVRJRU5UX1BVQkxJQ19QUk9QRVJUSUVTXTogJ1Byb3ByacOpdMOpcyBwdWJsaXF1ZXMgZHUgcGF0aWVudCcsXG4gIFtSZXNvdXJjZS5QQVRJRU5UX1BBWU1FTlRdOiAnUGFpZW1lbnQgZHUgcGF0aWVudCcsXG4gIFtSZXNvdXJjZS5NRURJQ0FMX1NFUlZJQ0VdOiAnU2VydmljZSBtw6lkaWNhbCcsXG4gIFtSZXNvdXJjZS5NRURJQ0FMX1NFUlZJQ0VfTk9URV06ICdOb3RlIGR1IHNlcnZpY2UgbcOpZGljYWwnLFxuICBbUmVzb3VyY2UuTUVESUNBTF9TRVJWSUNFX1NDSEVEVUxFXTogJ1BsYW5pZmljYXRpb24gZHUgc2VydmljZSBtw6lkaWNhbCcsXG4gIFtSZXNvdXJjZS5NRURJQ0FMX1NFUlZJQ0VfRkVFU106ICdGcmFpcyBkdSBzZXJ2aWNlIG3DqWRpY2FsJyxcbiAgW1Jlc291cmNlLk1FRElDQUxfU0VSVklDRV9TVEFUVVNdOiAnU3RhdHV0IGR1IHNlcnZpY2UgbcOpZGljYWwnLFxuICBbUmVzb3VyY2UuTUVESUNBTF9OT1RFXTogJ05vdGUgbcOpZGljYWxlJyxcbiAgW1Jlc291cmNlLk1FRElDQUxfUkVDT1JEXTogJ0Rvc3NpZXIgbcOpZGljYWwnLFxuICBbUmVzb3VyY2UuTUVESUNBTF9ISVNUT1JZXTogJ0FudMOpY8OpZGVudHMgbcOpZGljYXV4JyxcbiAgW1Jlc291cmNlLk1FRElDQUxfSElTVE9SWV9NT0RFTF06IFwiTW9kw6hsZSBkJ2FudMOpY8OpZGVudHMgbcOpZGljYXV4XCIsXG4gIFtSZXNvdXJjZS5QUkVTQ1JJUFRJT05dOiAnT3Jkb25uYW5jZScsXG4gIFtSZXNvdXJjZS5ESUFHTk9TSVNdOiAnRGlhZ25vc3RpYycsXG4gIFtSZXNvdXJjZS5PQlNFUlZBVElPTl06ICdPYnNlcnZhdGlvbicsXG4gIFtSZXNvdXJjZS5NRURJQ0FUSU9OXTogJ03DqWRpY2F0aW9uJyxcbiAgW1Jlc291cmNlLkFMTEVSR1ldOiAnQWxsZXJnaWUnLFxuICBbUmVzb3VyY2UuSU1NVU5JWkFUSU9OXTogJ1ZhY2NpbmF0aW9uJyxcbiAgW1Jlc291cmNlLlBST0NFRFVSRV06ICdQcm9jw6lkdXJlJyxcbiAgW1Jlc291cmNlLkNMSU5JQ0FMX05PVEVdOiAnTm90ZSBjbGluaXF1ZScsXG4gIFtSZXNvdXJjZS5WSVRBTF9TSUdOU106ICdTaWduZXMgdml0YXV4JyxcbiAgW1Jlc291cmNlLk1FQVNVUkVfTU9ERUxdOiAnTW9kw6hsZSBkZSBtZXN1cmUnLFxuICBbUmVzb3VyY2UuQ0FMQ1VMQVRFRF9NRUFTVVJFX01PREVMXTogJ01vZMOobGUgZGUgbWVzdXJlIGNhbGN1bMOpZScsXG4gIFtSZXNvdXJjZS5VUExPQURFRF9ET0NVTUVOVF06ICdEb2N1bWVudCB0w6lsw6l2ZXJzw6knLFxuICBbUmVzb3VyY2UuRE9DVU1FTlRfTEFZT1VUXTogJ01pc2UgZW4gcGFnZSBkdSBkb2N1bWVudCcsXG4gIFtSZXNvdXJjZS5HRU5FUkFURURfRE9DVU1FTlRdOiAnRG9jdW1lbnQgZ8OpbsOpcsOpJyxcbiAgW1Jlc291cmNlLkRPQ1VNRU5UX01PREVMXTogJ01vZMOobGUgZGUgZG9jdW1lbnQnLFxuICBbUmVzb3VyY2UuU05JUFBFVF06ICdFeHRyYWl0JyxcbiAgW1Jlc291cmNlLkxPQ0FUSU9OXTogJ0xpZXUnLFxuICBbUmVzb3VyY2UuVEFTS19UWVBFXTogJ1R5cGUgZGUgdMOiY2hlJyxcbiAgW1Jlc291cmNlLkxBQl9SRVNVTFRdOiAnUsOpc3VsdGF0IGRlIGxhYm9yYXRvaXJlJyxcbiAgW1Jlc291cmNlLklNQUdJTkddOiAnSW1hZ2VyaWUnLFxuICBbUmVzb3VyY2UuTUVNQkVSU0hJUF06ICdBZGjDqXNpb24nLFxuICBbUmVzb3VyY2UuU0VUVElOR1NdOiAnUGFyYW3DqHRyZXMnLFxuICBbUmVzb3VyY2UuTk9USUZJQ0FUSU9OXTogJ05vdGlmaWNhdGlvbicsXG4gIFtSZXNvdXJjZS5SRVBPUlRdOiAnUmFwcG9ydCcsXG4gIFtSZXNvdXJjZS5BVURJVF9MT0ddOiBcIkpvdXJuYWwgZCdhdWRpdFwiLFxuICBbUmVzb3VyY2UuU1lTVEVNXTogJ1N5c3TDqG1lJyxcbiAgW1Jlc291cmNlLlBVQkxJQ19SRVNPVVJDRV06ICdSZXNzb3VyY2UgcHVibGlxdWUnLFxuICBbUmVzb3VyY2UuTUVESUNBTF9SRVNPVVJDRV06ICdSZXNzb3VyY2UgbcOpZGljYWxlJyxcbn07XG5cbmZ1bmN0aW9uIGh1bWFuaXplS2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGtleVxuICAgIC50b0xvd2VyQ2FzZSgpXG4gICAgLnNwbGl0KCdfJylcbiAgICAubWFwKCh3KSA9PiB3LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdy5zbGljZSgxKSlcbiAgICAuam9pbignICcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWN0aW9uTGFiZWwoYWN0aW9uOiBBY3Rpb24sIGxvY2FsZTogTG9jYWxlSW5wdXQgPSAnZW4nKTogc3RyaW5nIHtcbiAgY29uc3Qgbm9ybSA9IG5vcm1hbGl6ZUxvY2FsZShsb2NhbGUpO1xuICBpZiAobm9ybSA9PT0gJ2ZyJykgcmV0dXJuIGZyQWN0aW9uW2FjdGlvbl0gPz8gaHVtYW5pemVLZXkoYWN0aW9uKTtcbiAgcmV0dXJuIGVuQWN0aW9uW2FjdGlvbl0gPz8gaHVtYW5pemVLZXkoYWN0aW9uKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc291cmNlTGFiZWwocmVzb3VyY2U6IFJlc291cmNlLCBsb2NhbGU6IExvY2FsZUlucHV0ID0gJ2VuJyk6IHN0cmluZyB7XG4gIGNvbnN0IG5vcm0gPSBub3JtYWxpemVMb2NhbGUobG9jYWxlKTtcbiAgaWYgKG5vcm0gPT09ICdmcicpIHJldHVybiBmclJlc291cmNlT3ZlcnJpZGVzW3Jlc291cmNlXSA/PyBodW1hbml6ZUtleShyZXNvdXJjZSk7XG4gIHJldHVybiBodW1hbml6ZUtleShyZXNvdXJjZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRPcGVyYXRpb25MYWJlbChcbiAgb3BlcmF0aW9uOiBPcGVyYXRpb24gfCBzdHJpbmcsXG4gIGxvY2FsZTogTG9jYWxlSW5wdXQgPSAnZW4nLFxuICBvcHRzPzogeyBvcmRlcj86ICdhY3Rpb24tcmVzb3VyY2UnIHwgJ3Jlc291cmNlLWFjdGlvbic7IHNlcGFyYXRvcj86IHN0cmluZyB9LFxuKTogc3RyaW5nIHtcbiAgY29uc3Qgbm9ybSA9IG5vcm1hbGl6ZUxvY2FsZShsb2NhbGUpO1xuICBjb25zdCBvcmRlciA9IG9wdHM/Lm9yZGVyID8/ICdhY3Rpb24tcmVzb3VyY2UnO1xuICBjb25zdCBzZXAgPSBvcHRzPy5zZXBhcmF0b3IgPz8gJyAnO1xuXG4gIGNvbnN0IG9wID0gdHlwZW9mIG9wZXJhdGlvbiA9PT0gJ3N0cmluZycgPyBPcGVyYXRpb24uZnJvbVN0cmluZyhvcGVyYXRpb24pIDogb3BlcmF0aW9uO1xuICBpZiAoIW9wKSByZXR1cm4gJyc7XG4gIGNvbnN0IGEgPSBnZXRBY3Rpb25MYWJlbChvcC5hY3Rpb24sIG5vcm0pO1xuICBjb25zdCByID0gZ2V0UmVzb3VyY2VMYWJlbChvcC5yZXNvdXJjZSwgbm9ybSk7XG4gIHJldHVybiBvcmRlciA9PT0gJ3Jlc291cmNlLWFjdGlvbicgPyBgJHtyfSR7c2VwfSR7YX1gIDogYCR7YX0ke3NlcH0ke3J9YDtcbn1cbiJdfQ==
package/package.json CHANGED
@@ -32,7 +32,7 @@
32
32
  "publishConfig": {
33
33
  "access": "public"
34
34
  },
35
- "version": "0.0.9",
35
+ "version": "0.0.10",
36
36
  "jest": {
37
37
  "coverageProvider": "v8",
38
38
  "testMatch": [