@doctorus/common 0.0.15 β†’ 0.0.17

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 CHANGED
@@ -1,9 +1,10 @@
1
1
  # @doctorus/common
2
2
 
3
- Common TypeScript utilities for Doctorus - A shared library for managing operations, SSM parameters, and access control across infrastructure stacks and frontend applications.
3
+ Common TypeScript utilities for Doctorus - A comprehensive shared library providing operations management, status handling, SSM parameters, audit logging, and internationalization across the platform.
4
4
 
5
5
  [![npm version](https://img.shields.io/npm/v/@doctorus/common.svg)](https://www.npmjs.com/package/@doctorus/common)
6
6
  [![License](https://img.shields.io/npm/l/@doctorus/common.svg)](https://github.com/DoctorusRepoOwner/common/blob/main/LICENSE)
7
+ [![Test Coverage](https://img.shields.io/badge/coverage-99%25-brightgreen.svg)](https://github.com/DoctorusRepoOwner/common)
7
8
 
8
9
  ## Installation
9
10
 
@@ -17,11 +18,238 @@ yarn add @doctorus/common
17
18
 
18
19
  ## Features
19
20
 
20
- - πŸ” **Operations Module** - Resource-Action pattern for access control and audit logging
21
- - πŸ—„οΈ **SSM Parameters** - AWS SSM Parameter Store utilities with environment support
22
- - πŸ“‹ **Type Safety** - Full TypeScript support with comprehensive type definitions
23
- - πŸ₯ **Medical & Public Resources** - Separate categorization for HIPAA compliance
24
- - βœ… **100% Test Coverage** - Thoroughly tested and production-ready
21
+ - 🎯 **Operations Module** - Type-safe resource-action patterns with i18n support (English/French)
22
+ - πŸ“Š **Status Module** - Rich status management with icons, colors, and translations
23
+ - πŸ” **Audit Module** - Comprehensive audit logging and compliance tracking
24
+ - πŸ—„οΈ **SSM Module** - AWS SSM Parameter Store utilities with hierarchical keys
25
+ - 🌍 **Internationalization** - Full bilingual support (us-EN, fr-FR) for all user-facing text
26
+ - πŸ₯ **Medical Compliance** - Separate categorization for HIPAA-compliant resources
27
+ - βœ… **100% Test Coverage** - Production-ready with comprehensive testing
28
+
29
+ ## Quick Start
30
+
31
+ ```typescript
32
+ import {
33
+ // Operations
34
+ Operation,
35
+ Action,
36
+ Resource,
37
+ getOperationLabel,
38
+
39
+ // Status
40
+ MedicalServiceStatus,
41
+ getStatusLabel,
42
+ getStatusIcon,
43
+
44
+ // SSM
45
+ buildSSMKey,
46
+ SSM_CATEGORIES,
47
+
48
+ // Audit
49
+ AuditEvent,
50
+ } from '@doctorus/common';
51
+
52
+ // Create and label an operation
53
+ const op = new Operation(Action.CREATE, Resource.PRESCRIPTION);
54
+ console.log(getOperationLabel(op, 'us-EN')); // "Create Prescription"
55
+ console.log(getOperationLabel(op, 'fr-FR')); // "CrΓ©er Ordonnance"
56
+
57
+ // Get status information
58
+ const status = MedicalServiceStatus.IN_PROGRESS;
59
+ console.log(getStatusLabel(status, 'us-EN')); // "In Progress"
60
+ console.log(getStatusIcon(status)); // "medical_services"
61
+
62
+ // Build SSM key
63
+ const key = buildSSMKey({
64
+ environment: 'production',
65
+ application: 'doctorus',
66
+ category: SSM_CATEGORIES.DATABASE,
67
+ subcategory: 'postgres',
68
+ name: 'connection-string',
69
+ });
70
+ // "/production/doctorus/database/postgres/connection-string"
71
+ ```
72
+
73
+ ## Modules Overview
74
+
75
+ ### 🎯 [Operations Module](src/operations/README.md)
76
+
77
+ Resource-action based system for permissions, operations, and audit logging with full internationalization.
78
+
79
+ **Key Features:**
80
+
81
+ - 67 predefined actions (CRUD, medical-specific, system operations)
82
+ - 49 categorized resources (medical + public)
83
+ - Bilingual labels (English/French)
84
+ - Predefined operation combinations
85
+ - Resource categorization helpers
86
+
87
+ **Quick Example:**
88
+
89
+ ```typescript
90
+ import { Action, Resource, getActionLabel, isMedicalResource } from '@doctorus/common';
91
+
92
+ const action = Action.PRESCRIBE;
93
+ console.log(getActionLabel(action, 'us-EN')); // "Prescribe"
94
+ console.log(getActionLabel(action, 'fr-FR')); // "Prescrire"
95
+
96
+ console.log(isMedicalResource(Resource.PATIENT)); // true
97
+ console.log(isMedicalResource(Resource.ACCOUNT)); // false
98
+ ```
99
+
100
+ [πŸ“– Full Operations Documentation](src/operations/README.md)
101
+
102
+ ---
103
+
104
+ ### πŸ“Š [Status Module](src/status/README.md)
105
+
106
+ Comprehensive status management with rich metadata, visual elements, and validation.
107
+
108
+ **Key Features:**
109
+
110
+ - Type-safe status enums
111
+ - Material Design icons and color schemes
112
+ - Short and long labels in English/French
113
+ - Detailed descriptions
114
+ - Status transition validation
115
+ - Reusable pattern for multiple entity types
116
+
117
+ **Quick Example:**
118
+
119
+ ```typescript
120
+ import {
121
+ MedicalServiceStatus,
122
+ getStatusLabel,
123
+ getStatusColor,
124
+ getStatusIcon,
125
+ isValidTransition,
126
+ } from '@doctorus/common';
127
+
128
+ const status = MedicalServiceStatus.IN_PROGRESS;
129
+ console.log(getStatusLabel(status, 'us-EN', 'long')); // "Service In Progress"
130
+ console.log(getStatusColor(status)); // "#2196F3"
131
+ console.log(getStatusIcon(status)); // "medical_services"
132
+
133
+ // Validate transitions
134
+ isValidTransition(MedicalServiceStatus.PENDING, MedicalServiceStatus.IN_PROGRESS); // true
135
+ ```
136
+
137
+ [πŸ“– Full Status Documentation](src/status/README.md)
138
+
139
+ ---
140
+
141
+ ### πŸ” [Audit Module](src/audit/README.md)
142
+
143
+ Enterprise-grade audit logging for compliance, security, and debugging.
144
+
145
+ **Key Features:**
146
+
147
+ - Comprehensive event tracking
148
+ - User and system action logging
149
+ - Data change tracking (before/after states)
150
+ - Correlation and tracing support
151
+ - HIPAA/GDPR compliance ready
152
+ - Integration with Operations module
153
+
154
+ **Quick Example:**
155
+
156
+ ```typescript
157
+ import { AuditEvent, Action, Resource } from '@doctorus/common';
158
+
159
+ const event: AuditEvent = {
160
+ id: uuidv4(),
161
+ timestamp: new Date(),
162
+ userId: 'user-123',
163
+ action: Action.CREATE,
164
+ resource: Resource.PRESCRIPTION,
165
+ resourceId: 'prescription-789',
166
+ result: 'success',
167
+ metadata: { medication: 'Amoxicillin' },
168
+ };
169
+
170
+ await auditLogger.log(event);
171
+ ```
172
+
173
+ [πŸ“– Full Audit Documentation](src/audit/README.md)
174
+
175
+ ---
176
+
177
+ ### πŸ—„οΈ [SSM Module](src/ssm/README.md)
178
+
179
+ Type-safe AWS Systems Manager Parameter Store key management.
180
+
181
+ **Key Features:**
182
+
183
+ - Hierarchical key structure
184
+ - Environment-aware configuration
185
+ - Key parsing and validation
186
+ - Predefined key categories
187
+ - Prefix building for batch operations
188
+
189
+ **Quick Example:**
190
+
191
+ ```typescript
192
+ import { buildSSMKey, parseSSMKey, SSM_CATEGORIES } from '@doctorus/common';
193
+
194
+ // Build a key
195
+ const key = buildSSMKey({
196
+ environment: 'production',
197
+ application: 'doctorus',
198
+ category: SSM_CATEGORIES.API,
199
+ subcategory: 'stripe',
200
+ name: 'secret-key',
201
+ });
202
+ // "/production/doctorus/api/stripe/secret-key"
203
+
204
+ // Parse a key
205
+ const parsed = parseSSMKey(key);
206
+ console.log(parsed.category); // "api"
207
+ console.log(parsed.subcategory); // "stripe"
208
+ ```
209
+
210
+ [πŸ“– Full SSM Documentation](src/ssm/README.md)
211
+
212
+ ---
213
+
214
+ ## Internationalization (i18n)
215
+
216
+ All user-facing text supports English (us-EN) and French (fr-FR):
217
+
218
+ ```typescript
219
+ import { getActionLabel, getResourceLabel, getStatusLabel } from '@doctorus/common';
220
+
221
+ // Action labels
222
+ getActionLabel(Action.CREATE, 'us-EN'); // "Create"
223
+ getActionLabel(Action.CREATE, 'fr-FR'); // "CrΓ©er"
224
+
225
+ // Resource labels
226
+ getResourceLabel(Resource.PATIENT, 'us-EN'); // "Patient"
227
+ getResourceLabel(Resource.PATIENT, 'fr-FR'); // "Patient"
228
+
229
+ // Status labels
230
+ getStatusLabel(MedicalServiceStatus.COMPLETED, 'us-EN'); // "Completed"
231
+ getStatusLabel(MedicalServiceStatus.COMPLETED, 'fr-FR'); // "TerminΓ©"
232
+ ```
233
+
234
+ ## Medical Service Status Actions
235
+
236
+ Special actions for medical service workflow management:
237
+
238
+ ```typescript
239
+ import { Action } from '@doctorus/common';
240
+
241
+ // Status transition actions
242
+ Action.CHECK_IN; // Move patient to waiting room
243
+ Action.UNDO_CHECK_IN; // Revert check-in
244
+ Action.START_SERVICE; // Begin consultation
245
+ Action.UNSTART_SERVICE; // Undo service start
246
+ Action.COMPLETE_SERVICE; // Mark as completed
247
+ Action.REOPEN_COMPLETED_SERVICE; // Reopen completed service
248
+ Action.CANCEL_SERVICE; // Cancel the service
249
+ Action.UNDO_CANCEL_SERVICE; // Uncancel
250
+ Action.FORCE_RESET_STATUS; // Admin: reset all (dangerous)
251
+ Action.CORRECT_TIMESTAMPS; // Admin: modify timestamps
252
+ ```
25
253
 
26
254
  ## Modules
27
255
 
@@ -43,7 +271,7 @@ const customOp = new Operation(Resource.PRESCRIPTION, Action.PRESCRIBE);
43
271
  console.log(customOp.toString()); // "PRESCRIPTION:PRESCRIBE"
44
272
 
45
273
  // Parse from string
46
- const parsed = Operation.fromString("MEDICAL_SERVICE:SCHEDULE");
274
+ const parsed = Operation.fromString('MEDICAL_SERVICE:SCHEDULE');
47
275
  if (parsed) {
48
276
  console.log(parsed.resource); // Resource.MEDICAL_SERVICE
49
277
  console.log(parsed.action); // Action.SCHEDULE
@@ -64,6 +292,7 @@ const json = operation.toJSON();
64
292
  Resources are categorized as **Medical** (require special access control) or **Public** (standard access control):
65
293
 
66
294
  **Medical Resources:**
295
+
67
296
  - Patient: `PATIENT`, `PATIENT_MEDICAL_NOTES`, `PATIENT_MEDICAL_PROPERTIES`, `PATIENT_PAYMENT`
68
297
  - Medical Services: `MEDICAL_SERVICE`, `MEDICAL_SERVICE_NOTE`, `MEDICAL_SERVICE_SCHEDULE`, `MEDICAL_SERVICE_FEES`, `MEDICAL_SERVICE_STATUS`
69
298
  - Clinical: `MEDICAL_RECORD`, `MEDICAL_HISTORY`, `PRESCRIPTION`, `DIAGNOSIS`, `OBSERVATION`, `MEDICATION`, `ALLERGY`, `IMMUNIZATION`, `PROCEDURE`
@@ -71,6 +300,7 @@ Resources are categorized as **Medical** (require special access control) or **P
71
300
  - Diagnostics: `LAB_RESULT`, `IMAGING`
72
301
 
73
302
  **Public Resources:**
303
+
74
304
  - Account: `ACCOUNT`, `ACCOUNT_OWNERSHIP`, `ACCOUNT_PREFERENCES`
75
305
  - User: `USER`, `CONTACT`
76
306
  - Documents: `UPLOADED_DOCUMENT`, `DOCUMENT_LAYOUT`, `GENERATED_DOCUMENT`, `DOCUMENT_MODEL`, `SNIPPET`
@@ -80,39 +310,43 @@ Resources are categorized as **Medical** (require special access control) or **P
80
310
 
81
311
  ```typescript
82
312
  // CRUD operations
83
- Action.CREATE, Action.READ, Action.UPDATE, Action.DELETE, Action.PUT, Action.LIST
313
+ (Action.CREATE, Action.READ, Action.UPDATE, Action.DELETE, Action.PUT, Action.LIST);
84
314
 
85
315
  // General actions
86
- Action.MANAGE, Action.VIEW, Action.SEARCH
316
+ (Action.MANAGE, Action.VIEW, Action.SEARCH);
87
317
 
88
318
  // Medical-specific actions
89
- Action.PRESCRIBE, Action.DIAGNOSE, Action.SIGN, Action.VERIFY,
90
- Action.SCHEDULE, Action.CANCEL, Action.APPROVE, Action.REJECT
319
+ (Action.PRESCRIBE,
320
+ Action.DIAGNOSE,
321
+ Action.SIGN,
322
+ Action.VERIFY,
323
+ Action.SCHEDULE,
324
+ Action.CANCEL,
325
+ Action.APPROVE,
326
+ Action.REJECT);
91
327
 
92
328
  // Medical service actions
93
- Action.SET_MEDICAL_SERVICE_STATUS, Action.SET_MEDICAL_SERVICE_FEES
329
+ (Action.SET_MEDICAL_SERVICE_STATUS, Action.SET_MEDICAL_SERVICE_FEES);
94
330
 
95
331
  // Patient-specific actions
96
- Action.UPDATE_STATUS, Action.VIEW_PATIENTS,
97
- Action.PUT_PATIENT_PAYMENT, Action.DELETE_PATIENT_PAYMENT
332
+ (Action.UPDATE_STATUS, Action.VIEW_PATIENTS, Action.PUT_PATIENT_PAYMENT, Action.DELETE_PATIENT_PAYMENT);
98
333
 
99
334
  // Data operations
100
- Action.EXPORT, Action.IMPORT, Action.ARCHIVE, Action.RESTORE,
101
- Action.SHARE, Action.DOWNLOAD, Action.UPLOAD
335
+ (Action.EXPORT, Action.IMPORT, Action.ARCHIVE, Action.RESTORE, Action.SHARE, Action.DOWNLOAD, Action.UPLOAD);
102
336
 
103
337
  // System operations
104
- Action.LOGIN, Action.LOGOUT, Action.CONFIGURE, Action.AUDIT
338
+ (Action.LOGIN, Action.LOGOUT, Action.CONFIGURE, Action.AUDIT);
105
339
  ```
106
340
 
107
341
  #### Helper Functions
108
342
 
109
343
  ```typescript
110
- import {
111
- isMedicalResource,
344
+ import {
345
+ isMedicalResource,
112
346
  isPublicResource,
113
347
  getAllOperations,
114
348
  getOperationsByResource,
115
- getOperationsByAction
349
+ getOperationsByAction,
116
350
  } from '@doctorus/common';
117
351
 
118
352
  // Check resource type
@@ -142,29 +376,46 @@ Commonly used operations are predefined for convenience:
142
376
 
143
377
  ```typescript
144
378
  // Account operations
145
- Operations.ACCOUNT_CREATE, Operations.ACCOUNT_READ, Operations.ACCOUNT_UPDATE,
146
- Operations.ACCOUNT_DELETE, Operations.ACCOUNT_MANAGE
379
+ (Operations.ACCOUNT_CREATE,
380
+ Operations.ACCOUNT_READ,
381
+ Operations.ACCOUNT_UPDATE,
382
+ Operations.ACCOUNT_DELETE,
383
+ Operations.ACCOUNT_MANAGE);
147
384
 
148
385
  // Patient operations
149
- Operations.PATIENT_CREATE, Operations.PATIENT_READ, Operations.PATIENT_UPDATE,
150
- Operations.PATIENT_DELETE, Operations.PATIENT_LIST, Operations.PATIENT_VIEW,
151
- Operations.PATIENT_UPDATE_STATUS
386
+ (Operations.PATIENT_CREATE,
387
+ Operations.PATIENT_READ,
388
+ Operations.PATIENT_UPDATE,
389
+ Operations.PATIENT_DELETE,
390
+ Operations.PATIENT_LIST,
391
+ Operations.PATIENT_VIEW,
392
+ Operations.PATIENT_UPDATE_STATUS);
152
393
 
153
394
  // Medical service operations
154
- Operations.MEDICAL_SERVICE_CREATE, Operations.MEDICAL_SERVICE_READ,
155
- Operations.MEDICAL_SERVICE_UPDATE, Operations.MEDICAL_SERVICE_DELETE,
156
- Operations.MEDICAL_SERVICE_MANAGE, Operations.MEDICAL_SERVICE_SCHEDULE,
157
- Operations.MEDICAL_SERVICE_CANCEL, Operations.MEDICAL_SERVICE_SET_STATUS,
158
- Operations.MEDICAL_SERVICE_SET_FEES
395
+ (Operations.MEDICAL_SERVICE_CREATE,
396
+ Operations.MEDICAL_SERVICE_READ,
397
+ Operations.MEDICAL_SERVICE_UPDATE,
398
+ Operations.MEDICAL_SERVICE_DELETE,
399
+ Operations.MEDICAL_SERVICE_MANAGE,
400
+ Operations.MEDICAL_SERVICE_SCHEDULE,
401
+ Operations.MEDICAL_SERVICE_CANCEL,
402
+ Operations.MEDICAL_SERVICE_SET_STATUS,
403
+ Operations.MEDICAL_SERVICE_SET_FEES);
159
404
 
160
405
  // Prescription operations
161
- Operations.PRESCRIPTION_CREATE, Operations.PRESCRIPTION_READ,
162
- Operations.PRESCRIPTION_UPDATE, Operations.PRESCRIPTION_SIGN,
163
- Operations.PRESCRIPTION_PRESCRIBE
406
+ (Operations.PRESCRIPTION_CREATE,
407
+ Operations.PRESCRIPTION_READ,
408
+ Operations.PRESCRIPTION_UPDATE,
409
+ Operations.PRESCRIPTION_SIGN,
410
+ Operations.PRESCRIPTION_PRESCRIBE);
164
411
 
165
412
  // User operations
166
- Operations.USER_CREATE, Operations.USER_READ, Operations.USER_UPDATE,
167
- Operations.USER_DELETE, Operations.USER_LOGIN, Operations.USER_LOGOUT
413
+ (Operations.USER_CREATE,
414
+ Operations.USER_READ,
415
+ Operations.USER_UPDATE,
416
+ Operations.USER_DELETE,
417
+ Operations.USER_LOGIN,
418
+ Operations.USER_LOGOUT);
168
419
 
169
420
  // ... and many more
170
421
  ```
@@ -176,13 +427,13 @@ Utilities for managing AWS SSM Parameter Store keys with environment support.
176
427
  #### Basic Usage
177
428
 
178
429
  ```typescript
179
- import {
180
- SSM_PARAM_KEY,
181
- buildSSMPath,
430
+ import {
431
+ SSM_PARAM_KEY,
432
+ buildSSMPath,
182
433
  buildSSMPathWithPrefix,
183
434
  extractEnvFromPath,
184
435
  extractKeyFromPath,
185
- isEnvAgnostic
436
+ isEnvAgnostic,
186
437
  } from '@doctorus/common';
187
438
 
188
439
  // Build environment-specific path
@@ -194,10 +445,7 @@ const sharedPath = buildSSMPath(null, SSM_PARAM_KEY.DB_USER);
194
445
  console.log(sharedPath); // "/db-user"
195
446
 
196
447
  // Build path with custom prefix
197
- const customPath = buildSSMPathWithPrefix(
198
- '/myapp/prod',
199
- SSM_PARAM_KEY.GRAPHQL_API_ID
200
- );
448
+ const customPath = buildSSMPathWithPrefix('/myapp/prod', SSM_PARAM_KEY.GRAPHQL_API_ID);
201
449
  console.log(customPath); // "/myapp/prod/graphql-api-id"
202
450
 
203
451
  // Extract environment from path
@@ -216,28 +464,28 @@ console.log(isEnvAgnostic('/prod/user-pool-id')); // false
216
464
  #### Available SSM Parameter Keys
217
465
 
218
466
  ```typescript
219
- SSM_PARAM_KEY.COGNITO_USER_POOL_ID
220
- SSM_PARAM_KEY.COGNITO_USER_POOL_WEB_CLIENT_ID
221
- SSM_PARAM_KEY.COGNITO_OAUTH_DOMAIN
222
- SSM_PARAM_KEY.RUM_GUEST_ROLE_ARN
223
- SSM_PARAM_KEY.RUM_IDENTITY_POOL_ID
224
- SSM_PARAM_KEY.RUM_APP_ID
225
- SSM_PARAM_KEY.GRAPHQL_HTTP_URL
226
- SSM_PARAM_KEY.GRAPHQL_WS_URL
227
- SSM_PARAM_KEY.GRAPHQL_HOST
228
- SSM_PARAM_KEY.GRAPHQL_API_ID
229
- SSM_PARAM_KEY.MEDICAL_ASSETS_AWS_CLOUDFRONT_PRIVATE_KEY
230
- SSM_PARAM_KEY.MEDICAL_ASSETS_AWS_CLOUDFRONT_KEY_ID
231
- SSM_PARAM_KEY.MEDICAL_ASSETS_BUCKET_NAME
232
- SSM_PARAM_KEY.PUBLIC_ASSETS_BUCKET_NAME
233
- SSM_PARAM_KEY.DB_USER
234
- SSM_PARAM_KEY.DB_PASSWORD
235
- SSM_PARAM_KEY.MEDICAL_ASSETS_DISTRIBUTION_DOMAIN_NAME
236
- SSM_PARAM_KEY.BASE_HOST
237
- SSM_PARAM_KEY.EMAIL_FROM_ADDRESS
238
- SSM_PARAM_KEY.EVENT_API_REAL_TIME_DNS
239
- SSM_PARAM_KEY.EVENT_API_HTTP_DNS
240
- SSM_PARAM_KEY.NOTIFIED_EVENT_ACTIONS
467
+ SSM_PARAM_KEY.COGNITO_USER_POOL_ID;
468
+ SSM_PARAM_KEY.COGNITO_USER_POOL_WEB_CLIENT_ID;
469
+ SSM_PARAM_KEY.COGNITO_OAUTH_DOMAIN;
470
+ SSM_PARAM_KEY.RUM_GUEST_ROLE_ARN;
471
+ SSM_PARAM_KEY.RUM_IDENTITY_POOL_ID;
472
+ SSM_PARAM_KEY.RUM_APP_ID;
473
+ SSM_PARAM_KEY.GRAPHQL_HTTP_URL;
474
+ SSM_PARAM_KEY.GRAPHQL_WS_URL;
475
+ SSM_PARAM_KEY.GRAPHQL_HOST;
476
+ SSM_PARAM_KEY.GRAPHQL_API_ID;
477
+ SSM_PARAM_KEY.MEDICAL_ASSETS_AWS_CLOUDFRONT_PRIVATE_KEY;
478
+ SSM_PARAM_KEY.MEDICAL_ASSETS_AWS_CLOUDFRONT_KEY_ID;
479
+ SSM_PARAM_KEY.MEDICAL_ASSETS_BUCKET_NAME;
480
+ SSM_PARAM_KEY.PUBLIC_ASSETS_BUCKET_NAME;
481
+ SSM_PARAM_KEY.DB_USER;
482
+ SSM_PARAM_KEY.DB_PASSWORD;
483
+ SSM_PARAM_KEY.MEDICAL_ASSETS_DISTRIBUTION_DOMAIN_NAME;
484
+ SSM_PARAM_KEY.BASE_HOST;
485
+ SSM_PARAM_KEY.EMAIL_FROM_ADDRESS;
486
+ SSM_PARAM_KEY.EVENT_API_REAL_TIME_DNS;
487
+ SSM_PARAM_KEY.EVENT_API_HTTP_DNS;
488
+ SSM_PARAM_KEY.NOTIFIED_EVENT_ACTIONS;
241
489
  ```
242
490
 
243
491
  ## Use Cases
@@ -250,21 +498,18 @@ import { Operation, isMedicalResource } from '@doctorus/common';
250
498
  function checkPermission(userPermissions: string[], operation: Operation): boolean {
251
499
  // Check if user has permission for this operation
252
500
  const hasPermission = userPermissions.includes(operation.toString());
253
-
501
+
254
502
  // Apply additional checks for medical resources
255
503
  if (isMedicalResource(operation.resource)) {
256
504
  // Enforce HIPAA compliance, additional logging, etc.
257
505
  return hasPermission && user.hasHIPAAAccess;
258
506
  }
259
-
507
+
260
508
  return hasPermission;
261
509
  }
262
510
 
263
511
  // Usage
264
- const canRead = checkPermission(
265
- userPermissions,
266
- Operations.PATIENT_READ
267
- );
512
+ const canRead = checkPermission(userPermissions, Operations.PATIENT_READ);
268
513
  ```
269
514
 
270
515
  ### 2. Audit Logging
@@ -280,20 +525,15 @@ interface AuditLog {
280
525
  success: boolean;
281
526
  }
282
527
 
283
- function logAudit(
284
- userId: string,
285
- operation: Operation,
286
- resourceId: string,
287
- success: boolean
288
- ) {
528
+ function logAudit(userId: string, operation: Operation, resourceId: string, success: boolean) {
289
529
  const log: AuditLog = {
290
530
  timestamp: new Date(),
291
531
  userId,
292
532
  operation: operation.toString(),
293
533
  resourceId,
294
- success
534
+ success,
295
535
  };
296
-
536
+
297
537
  // Store in audit log database
298
538
  auditLogService.create(log);
299
539
  }
@@ -311,15 +551,9 @@ import { StringParameter } from 'aws-cdk-lib/aws-ssm';
311
551
  // In your CDK stack
312
552
  const env = 'prod';
313
553
 
314
- const userPoolId = StringParameter.valueFromLookup(
315
- this,
316
- buildSSMPath(env, SSM_PARAM_KEY.COGNITO_USER_POOL_ID)
317
- );
554
+ const userPoolId = StringParameter.valueFromLookup(this, buildSSMPath(env, SSM_PARAM_KEY.COGNITO_USER_POOL_ID));
318
555
 
319
- const graphqlUrl = StringParameter.valueFromLookup(
320
- this,
321
- buildSSMPath(env, SSM_PARAM_KEY.GRAPHQL_HTTP_URL)
322
- );
556
+ const graphqlUrl = StringParameter.valueFromLookup(this, buildSSMPath(env, SSM_PARAM_KEY.GRAPHQL_HTTP_URL));
323
557
  ```
324
558
 
325
559
  ### 4. Frontend Configuration
@@ -330,21 +564,17 @@ import { SSM } from '@aws-sdk/client-ssm';
330
564
 
331
565
  async function loadConfig(environment: string) {
332
566
  const ssm = new SSM();
333
-
334
- const params = [
335
- SSM_PARAM_KEY.COGNITO_USER_POOL_ID,
336
- SSM_PARAM_KEY.GRAPHQL_HTTP_URL,
337
- SSM_PARAM_KEY.RUM_APP_ID
338
- ];
339
-
567
+
568
+ const params = [SSM_PARAM_KEY.COGNITO_USER_POOL_ID, SSM_PARAM_KEY.GRAPHQL_HTTP_URL, SSM_PARAM_KEY.RUM_APP_ID];
569
+
340
570
  const config: Record<string, string> = {};
341
-
571
+
342
572
  for (const param of params) {
343
573
  const path = buildSSMPath(environment, param);
344
574
  const response = await ssm.getParameter({ Name: path });
345
575
  config[param] = response.Parameter?.Value || '';
346
576
  }
347
-
577
+
348
578
  return config;
349
579
  }
350
580
  ```
@@ -388,4 +618,4 @@ Apache-2.0
388
618
 
389
619
  ---
390
620
 
391
- Built with ❀️ for Doctorus
621
+ Built with ❀️ for Doctorus
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Account Location Status enumeration and metadata
3
+ * Defines availability policies for medical service locations
4
+ */
5
+ import type { StatusMetadata, Locale } from './types';
6
+ export declare enum AccountLocationStatus {
7
+ INHERIT = "inherit",
8
+ ALWAYS_OPEN = "always_open",
9
+ CLOSED = "closed",
10
+ PERIODS = "periods"
11
+ }
12
+ /**
13
+ * Account Location Status metadata configuration
14
+ */
15
+ export declare const ACCOUNT_LOCATION_STATUS_METADATA: Record<AccountLocationStatus, StatusMetadata>;
16
+ /**
17
+ * Get status metadata
18
+ */
19
+ export declare function getStatusMetadata(status: AccountLocationStatus): StatusMetadata;
20
+ /**
21
+ * Get status icon
22
+ */
23
+ export declare function getStatusIcon(status: AccountLocationStatus): string;
24
+ /**
25
+ * Get status color
26
+ */
27
+ export declare function getStatusColor(status: AccountLocationStatus): string;
28
+ /**
29
+ * Get status label (short or long)
30
+ */
31
+ export declare function getStatusLabel(status: AccountLocationStatus, locale?: Locale, format?: 'short' | 'long'): string;
32
+ /**
33
+ * Get status description
34
+ */
35
+ export declare function getStatusDescription(status: AccountLocationStatus, locale?: Locale): string;
36
+ /**
37
+ * Get all available statuses
38
+ */
39
+ export declare function getAllAccountLocationStatuses(): AccountLocationStatus[];
40
+ /**
41
+ * Check if a value is a valid AccountLocationStatus
42
+ */
43
+ export declare function isValidAccountLocationStatus(value: string): value is AccountLocationStatus;
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ /**
3
+ * Account Location Status enumeration and metadata
4
+ * Defines availability policies for medical service locations
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.ACCOUNT_LOCATION_STATUS_METADATA = exports.AccountLocationStatus = void 0;
8
+ exports.getStatusMetadata = getStatusMetadata;
9
+ exports.getStatusIcon = getStatusIcon;
10
+ exports.getStatusColor = getStatusColor;
11
+ exports.getStatusLabel = getStatusLabel;
12
+ exports.getStatusDescription = getStatusDescription;
13
+ exports.getAllAccountLocationStatuses = getAllAccountLocationStatuses;
14
+ exports.isValidAccountLocationStatus = isValidAccountLocationStatus;
15
+ var AccountLocationStatus;
16
+ (function (AccountLocationStatus) {
17
+ AccountLocationStatus["INHERIT"] = "inherit";
18
+ AccountLocationStatus["ALWAYS_OPEN"] = "always_open";
19
+ AccountLocationStatus["CLOSED"] = "closed";
20
+ AccountLocationStatus["PERIODS"] = "periods";
21
+ })(AccountLocationStatus || (exports.AccountLocationStatus = AccountLocationStatus = {}));
22
+ /**
23
+ * Account Location Status metadata configuration
24
+ */
25
+ exports.ACCOUNT_LOCATION_STATUS_METADATA = {
26
+ [AccountLocationStatus.INHERIT]: {
27
+ icon: 'settings_backup_restore',
28
+ color: '#808080', // Gray
29
+ label: {
30
+ short: {
31
+ 'us-EN': 'Inherit',
32
+ 'fr-FR': 'HΓ©riter',
33
+ },
34
+ long: {
35
+ 'us-EN': 'Inherit Settings',
36
+ 'fr-FR': 'Hériter des paramètres',
37
+ },
38
+ },
39
+ description: {
40
+ 'us-EN': 'Location inherits availability settings from parent',
41
+ 'fr-FR': 'Le lieu hérite les paramètres de disponibilité du parent',
42
+ },
43
+ },
44
+ [AccountLocationStatus.ALWAYS_OPEN]: {
45
+ icon: 'public',
46
+ color: '#4CAF50', // Green
47
+ label: {
48
+ short: {
49
+ 'us-EN': 'Always Open',
50
+ 'fr-FR': 'Toujours ouvert',
51
+ },
52
+ long: {
53
+ 'us-EN': 'Always Open',
54
+ 'fr-FR': 'Toujours ouvert',
55
+ },
56
+ },
57
+ description: {
58
+ 'us-EN': 'Location is available 24/7 without restrictions',
59
+ 'fr-FR': 'Le lieu est disponible 24h/24, 7j/7 sans restrictions',
60
+ },
61
+ },
62
+ [AccountLocationStatus.CLOSED]: {
63
+ icon: 'block',
64
+ color: '#F44336', // Red
65
+ label: {
66
+ short: {
67
+ 'us-EN': 'Closed',
68
+ 'fr-FR': 'FermΓ©',
69
+ },
70
+ long: {
71
+ 'us-EN': 'Closed',
72
+ 'fr-FR': 'FermΓ©',
73
+ },
74
+ },
75
+ description: {
76
+ 'us-EN': 'Location is closed and unavailable for services',
77
+ 'fr-FR': 'Le lieu est fermΓ© et indisponible pour les services',
78
+ },
79
+ },
80
+ [AccountLocationStatus.PERIODS]: {
81
+ icon: 'schedule',
82
+ color: '#2196F3', // Blue
83
+ label: {
84
+ short: {
85
+ 'us-EN': 'Periods',
86
+ 'fr-FR': 'PΓ©riodes',
87
+ },
88
+ long: {
89
+ 'us-EN': 'Custom Periods',
90
+ 'fr-FR': 'PΓ©riodes personnalisΓ©es',
91
+ },
92
+ },
93
+ description: {
94
+ 'us-EN': 'Location has custom availability periods',
95
+ 'fr-FR': 'Le lieu a des pΓ©riodes de disponibilitΓ© personnalisΓ©es',
96
+ },
97
+ },
98
+ };
99
+ /**
100
+ * Get status metadata
101
+ */
102
+ function getStatusMetadata(status) {
103
+ return exports.ACCOUNT_LOCATION_STATUS_METADATA[status];
104
+ }
105
+ /**
106
+ * Get status icon
107
+ */
108
+ function getStatusIcon(status) {
109
+ return exports.ACCOUNT_LOCATION_STATUS_METADATA[status].icon;
110
+ }
111
+ /**
112
+ * Get status color
113
+ */
114
+ function getStatusColor(status) {
115
+ return exports.ACCOUNT_LOCATION_STATUS_METADATA[status].color;
116
+ }
117
+ /**
118
+ * Get status label (short or long)
119
+ */
120
+ function getStatusLabel(status, locale = 'us-EN', format = 'short') {
121
+ return exports.ACCOUNT_LOCATION_STATUS_METADATA[status].label[format][locale];
122
+ }
123
+ /**
124
+ * Get status description
125
+ */
126
+ function getStatusDescription(status, locale = 'us-EN') {
127
+ return exports.ACCOUNT_LOCATION_STATUS_METADATA[status].description[locale];
128
+ }
129
+ /**
130
+ * Get all available statuses
131
+ */
132
+ function getAllAccountLocationStatuses() {
133
+ return Object.values(AccountLocationStatus);
134
+ }
135
+ /**
136
+ * Check if a value is a valid AccountLocationStatus
137
+ */
138
+ function isValidAccountLocationStatus(value) {
139
+ return Object.values(AccountLocationStatus).includes(value);
140
+ }
141
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC1sb2NhdGlvbi1zdGF0dXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RhdHVzL2FjY291bnQtbG9jYXRpb24tc3RhdHVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7OztBQTRGSCw4Q0FFQztBQUtELHNDQUVDO0FBS0Qsd0NBRUM7QUFLRCx3Q0FNQztBQUtELG9EQUVDO0FBS0Qsc0VBRUM7QUFLRCxvRUFFQztBQXhJRCxJQUFZLHFCQUtYO0FBTEQsV0FBWSxxQkFBcUI7SUFDL0IsNENBQW1CLENBQUE7SUFDbkIsb0RBQTJCLENBQUE7SUFDM0IsMENBQWlCLENBQUE7SUFDakIsNENBQW1CLENBQUE7QUFDckIsQ0FBQyxFQUxXLHFCQUFxQixxQ0FBckIscUJBQXFCLFFBS2hDO0FBRUQ7O0dBRUc7QUFDVSxRQUFBLGdDQUFnQyxHQUFrRDtJQUM3RixDQUFDLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQy9CLElBQUksRUFBRSx5QkFBeUI7UUFDL0IsS0FBSyxFQUFFLFNBQVMsRUFBRSxPQUFPO1FBQ3pCLEtBQUssRUFBRTtZQUNMLEtBQUssRUFBRTtnQkFDTCxPQUFPLEVBQUUsU0FBUztnQkFDbEIsT0FBTyxFQUFFLFNBQVM7YUFDbkI7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osT0FBTyxFQUFFLGtCQUFrQjtnQkFDM0IsT0FBTyxFQUFFLHdCQUF3QjthQUNsQztTQUNGO1FBQ0QsV0FBVyxFQUFFO1lBQ1gsT0FBTyxFQUFFLHFEQUFxRDtZQUM5RCxPQUFPLEVBQUUsMERBQTBEO1NBQ3BFO0tBQ0Y7SUFDRCxDQUFDLHFCQUFxQixDQUFDLFdBQVcsQ0FBQyxFQUFFO1FBQ25DLElBQUksRUFBRSxRQUFRO1FBQ2QsS0FBSyxFQUFFLFNBQVMsRUFBRSxRQUFRO1FBQzFCLEtBQUssRUFBRTtZQUNMLEtBQUssRUFBRTtnQkFDTCxPQUFPLEVBQUUsYUFBYTtnQkFDdEIsT0FBTyxFQUFFLGlCQUFpQjthQUMzQjtZQUNELElBQUksRUFBRTtnQkFDSixPQUFPLEVBQUUsYUFBYTtnQkFDdEIsT0FBTyxFQUFFLGlCQUFpQjthQUMzQjtTQUNGO1FBQ0QsV0FBVyxFQUFFO1lBQ1gsT0FBTyxFQUFFLGlEQUFpRDtZQUMxRCxPQUFPLEVBQUUsdURBQXVEO1NBQ2pFO0tBQ0Y7SUFDRCxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQzlCLElBQUksRUFBRSxPQUFPO1FBQ2IsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNO1FBQ3hCLEtBQUssRUFBRTtZQUNMLEtBQUssRUFBRTtnQkFDTCxPQUFPLEVBQUUsUUFBUTtnQkFDakIsT0FBTyxFQUFFLE9BQU87YUFDakI7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osT0FBTyxFQUFFLFFBQVE7Z0JBQ2pCLE9BQU8sRUFBRSxPQUFPO2FBQ2pCO1NBQ0Y7UUFDRCxXQUFXLEVBQUU7WUFDWCxPQUFPLEVBQUUsaURBQWlEO1lBQzFELE9BQU8sRUFBRSxxREFBcUQ7U0FDL0Q7S0FDRjtJQUNELENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDL0IsSUFBSSxFQUFFLFVBQVU7UUFDaEIsS0FBSyxFQUFFLFNBQVMsRUFBRSxPQUFPO1FBQ3pCLEtBQUssRUFBRTtZQUNMLEtBQUssRUFBRTtnQkFDTCxPQUFPLEVBQUUsU0FBUztnQkFDbEIsT0FBTyxFQUFFLFVBQVU7YUFDcEI7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osT0FBTyxFQUFFLGdCQUFnQjtnQkFDekIsT0FBTyxFQUFFLHlCQUF5QjthQUNuQztTQUNGO1FBQ0QsV0FBVyxFQUFFO1lBQ1gsT0FBTyxFQUFFLDBDQUEwQztZQUNuRCxPQUFPLEVBQUUsd0RBQXdEO1NBQ2xFO0tBQ0Y7Q0FDRixDQUFDO0FBRUY7O0dBRUc7QUFDSCxTQUFnQixpQkFBaUIsQ0FBQyxNQUE2QjtJQUM3RCxPQUFPLHdDQUFnQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2xELENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGFBQWEsQ0FBQyxNQUE2QjtJQUN6RCxPQUFPLHdDQUFnQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQztBQUN2RCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixjQUFjLENBQUMsTUFBNkI7SUFDMUQsT0FBTyx3Q0FBZ0MsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDeEQsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsY0FBYyxDQUM1QixNQUE2QixFQUM3QixTQUFpQixPQUFPLEVBQ3hCLFNBQTJCLE9BQU87SUFFbEMsT0FBTyx3Q0FBZ0MsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDeEUsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0Isb0JBQW9CLENBQUMsTUFBNkIsRUFBRSxTQUFpQixPQUFPO0lBQzFGLE9BQU8sd0NBQWdDLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3RFLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLDZCQUE2QjtJQUMzQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQiw0QkFBNEIsQ0FBQyxLQUFhO0lBQ3hELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUE4QixDQUFDLENBQUM7QUFDdkYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQWNjb3VudCBMb2NhdGlvbiBTdGF0dXMgZW51bWVyYXRpb24gYW5kIG1ldGFkYXRhXG4gKiBEZWZpbmVzIGF2YWlsYWJpbGl0eSBwb2xpY2llcyBmb3IgbWVkaWNhbCBzZXJ2aWNlIGxvY2F0aW9uc1xuICovXG5cbmltcG9ydCB0eXBlIHsgU3RhdHVzTWV0YWRhdGEsIExvY2FsZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgZW51bSBBY2NvdW50TG9jYXRpb25TdGF0dXMge1xuICBJTkhFUklUID0gJ2luaGVyaXQnLFxuICBBTFdBWVNfT1BFTiA9ICdhbHdheXNfb3BlbicsXG4gIENMT1NFRCA9ICdjbG9zZWQnLFxuICBQRVJJT0RTID0gJ3BlcmlvZHMnLFxufVxuXG4vKipcbiAqIEFjY291bnQgTG9jYXRpb24gU3RhdHVzIG1ldGFkYXRhIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IEFDQ09VTlRfTE9DQVRJT05fU1RBVFVTX01FVEFEQVRBOiBSZWNvcmQ8QWNjb3VudExvY2F0aW9uU3RhdHVzLCBTdGF0dXNNZXRhZGF0YT4gPSB7XG4gIFtBY2NvdW50TG9jYXRpb25TdGF0dXMuSU5IRVJJVF06IHtcbiAgICBpY29uOiAnc2V0dGluZ3NfYmFja3VwX3Jlc3RvcmUnLFxuICAgIGNvbG9yOiAnIzgwODA4MCcsIC8vIEdyYXlcbiAgICBsYWJlbDoge1xuICAgICAgc2hvcnQ6IHtcbiAgICAgICAgJ3VzLUVOJzogJ0luaGVyaXQnLFxuICAgICAgICAnZnItRlInOiAnSMOpcml0ZXInLFxuICAgICAgfSxcbiAgICAgIGxvbmc6IHtcbiAgICAgICAgJ3VzLUVOJzogJ0luaGVyaXQgU2V0dGluZ3MnLFxuICAgICAgICAnZnItRlInOiAnSMOpcml0ZXIgZGVzIHBhcmFtw6h0cmVzJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgJ3VzLUVOJzogJ0xvY2F0aW9uIGluaGVyaXRzIGF2YWlsYWJpbGl0eSBzZXR0aW5ncyBmcm9tIHBhcmVudCcsXG4gICAgICAnZnItRlInOiAnTGUgbGlldSBow6lyaXRlIGxlcyBwYXJhbcOodHJlcyBkZSBkaXNwb25pYmlsaXTDqSBkdSBwYXJlbnQnLFxuICAgIH0sXG4gIH0sXG4gIFtBY2NvdW50TG9jYXRpb25TdGF0dXMuQUxXQVlTX09QRU5dOiB7XG4gICAgaWNvbjogJ3B1YmxpYycsXG4gICAgY29sb3I6ICcjNENBRjUwJywgLy8gR3JlZW5cbiAgICBsYWJlbDoge1xuICAgICAgc2hvcnQ6IHtcbiAgICAgICAgJ3VzLUVOJzogJ0Fsd2F5cyBPcGVuJyxcbiAgICAgICAgJ2ZyLUZSJzogJ1RvdWpvdXJzIG91dmVydCcsXG4gICAgICB9LFxuICAgICAgbG9uZzoge1xuICAgICAgICAndXMtRU4nOiAnQWx3YXlzIE9wZW4nLFxuICAgICAgICAnZnItRlInOiAnVG91am91cnMgb3V2ZXJ0JyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgJ3VzLUVOJzogJ0xvY2F0aW9uIGlzIGF2YWlsYWJsZSAyNC83IHdpdGhvdXQgcmVzdHJpY3Rpb25zJyxcbiAgICAgICdmci1GUic6ICdMZSBsaWV1IGVzdCBkaXNwb25pYmxlIDI0aC8yNCwgN2ovNyBzYW5zIHJlc3RyaWN0aW9ucycsXG4gICAgfSxcbiAgfSxcbiAgW0FjY291bnRMb2NhdGlvblN0YXR1cy5DTE9TRURdOiB7XG4gICAgaWNvbjogJ2Jsb2NrJyxcbiAgICBjb2xvcjogJyNGNDQzMzYnLCAvLyBSZWRcbiAgICBsYWJlbDoge1xuICAgICAgc2hvcnQ6IHtcbiAgICAgICAgJ3VzLUVOJzogJ0Nsb3NlZCcsXG4gICAgICAgICdmci1GUic6ICdGZXJtw6knLFxuICAgICAgfSxcbiAgICAgIGxvbmc6IHtcbiAgICAgICAgJ3VzLUVOJzogJ0Nsb3NlZCcsXG4gICAgICAgICdmci1GUic6ICdGZXJtw6knLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAndXMtRU4nOiAnTG9jYXRpb24gaXMgY2xvc2VkIGFuZCB1bmF2YWlsYWJsZSBmb3Igc2VydmljZXMnLFxuICAgICAgJ2ZyLUZSJzogJ0xlIGxpZXUgZXN0IGZlcm3DqSBldCBpbmRpc3BvbmlibGUgcG91ciBsZXMgc2VydmljZXMnLFxuICAgIH0sXG4gIH0sXG4gIFtBY2NvdW50TG9jYXRpb25TdGF0dXMuUEVSSU9EU106IHtcbiAgICBpY29uOiAnc2NoZWR1bGUnLFxuICAgIGNvbG9yOiAnIzIxOTZGMycsIC8vIEJsdWVcbiAgICBsYWJlbDoge1xuICAgICAgc2hvcnQ6IHtcbiAgICAgICAgJ3VzLUVOJzogJ1BlcmlvZHMnLFxuICAgICAgICAnZnItRlInOiAnUMOpcmlvZGVzJyxcbiAgICAgIH0sXG4gICAgICBsb25nOiB7XG4gICAgICAgICd1cy1FTic6ICdDdXN0b20gUGVyaW9kcycsXG4gICAgICAgICdmci1GUic6ICdQw6lyaW9kZXMgcGVyc29ubmFsaXPDqWVzJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgJ3VzLUVOJzogJ0xvY2F0aW9uIGhhcyBjdXN0b20gYXZhaWxhYmlsaXR5IHBlcmlvZHMnLFxuICAgICAgJ2ZyLUZSJzogJ0xlIGxpZXUgYSBkZXMgcMOpcmlvZGVzIGRlIGRpc3BvbmliaWxpdMOpIHBlcnNvbm5hbGlzw6llcycsXG4gICAgfSxcbiAgfSxcbn07XG5cbi8qKlxuICogR2V0IHN0YXR1cyBtZXRhZGF0YVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzTWV0YWRhdGEoc3RhdHVzOiBBY2NvdW50TG9jYXRpb25TdGF0dXMpOiBTdGF0dXNNZXRhZGF0YSB7XG4gIHJldHVybiBBQ0NPVU5UX0xPQ0FUSU9OX1NUQVRVU19NRVRBREFUQVtzdGF0dXNdO1xufVxuXG4vKipcbiAqIEdldCBzdGF0dXMgaWNvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzSWNvbihzdGF0dXM6IEFjY291bnRMb2NhdGlvblN0YXR1cyk6IHN0cmluZyB7XG4gIHJldHVybiBBQ0NPVU5UX0xPQ0FUSU9OX1NUQVRVU19NRVRBREFUQVtzdGF0dXNdLmljb247XG59XG5cbi8qKlxuICogR2V0IHN0YXR1cyBjb2xvclxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzQ29sb3Ioc3RhdHVzOiBBY2NvdW50TG9jYXRpb25TdGF0dXMpOiBzdHJpbmcge1xuICByZXR1cm4gQUNDT1VOVF9MT0NBVElPTl9TVEFUVVNfTUVUQURBVEFbc3RhdHVzXS5jb2xvcjtcbn1cblxuLyoqXG4gKiBHZXQgc3RhdHVzIGxhYmVsIChzaG9ydCBvciBsb25nKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzTGFiZWwoXG4gIHN0YXR1czogQWNjb3VudExvY2F0aW9uU3RhdHVzLFxuICBsb2NhbGU6IExvY2FsZSA9ICd1cy1FTicsXG4gIGZvcm1hdDogJ3Nob3J0JyB8ICdsb25nJyA9ICdzaG9ydCcsXG4pOiBzdHJpbmcge1xuICByZXR1cm4gQUNDT1VOVF9MT0NBVElPTl9TVEFUVVNfTUVUQURBVEFbc3RhdHVzXS5sYWJlbFtmb3JtYXRdW2xvY2FsZV07XG59XG5cbi8qKlxuICogR2V0IHN0YXR1cyBkZXNjcmlwdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzRGVzY3JpcHRpb24oc3RhdHVzOiBBY2NvdW50TG9jYXRpb25TdGF0dXMsIGxvY2FsZTogTG9jYWxlID0gJ3VzLUVOJyk6IHN0cmluZyB7XG4gIHJldHVybiBBQ0NPVU5UX0xPQ0FUSU9OX1NUQVRVU19NRVRBREFUQVtzdGF0dXNdLmRlc2NyaXB0aW9uW2xvY2FsZV07XG59XG5cbi8qKlxuICogR2V0IGFsbCBhdmFpbGFibGUgc3RhdHVzZXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbEFjY291bnRMb2NhdGlvblN0YXR1c2VzKCk6IEFjY291bnRMb2NhdGlvblN0YXR1c1tdIHtcbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMoQWNjb3VudExvY2F0aW9uU3RhdHVzKTtcbn1cblxuLyoqXG4gKiBDaGVjayBpZiBhIHZhbHVlIGlzIGEgdmFsaWQgQWNjb3VudExvY2F0aW9uU3RhdHVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkQWNjb3VudExvY2F0aW9uU3RhdHVzKHZhbHVlOiBzdHJpbmcpOiB2YWx1ZSBpcyBBY2NvdW50TG9jYXRpb25TdGF0dXMge1xuICByZXR1cm4gT2JqZWN0LnZhbHVlcyhBY2NvdW50TG9jYXRpb25TdGF0dXMpLmluY2x1ZGVzKHZhbHVlIGFzIEFjY291bnRMb2NhdGlvblN0YXR1cyk7XG59XG4iXX0=
@@ -1,4 +1,7 @@
1
1
  /**
2
2
  * Status module exports
3
3
  */
4
+ export * from './types';
4
5
  export * from './medical-service-status';
6
+ export * as AccountLocationStatus from './account-location-status';
7
+ export * as MedicalHistoryStatus from './medical-history-status';
@@ -10,12 +10,38 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
10
10
  if (k2 === undefined) k2 = k;
11
11
  o[k2] = m[k];
12
12
  }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
13
18
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
19
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
20
  };
21
+ var __importStar = (this && this.__importStar) || (function () {
22
+ var ownKeys = function(o) {
23
+ ownKeys = Object.getOwnPropertyNames || function (o) {
24
+ var ar = [];
25
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
+ return ar;
27
+ };
28
+ return ownKeys(o);
29
+ };
30
+ return function (mod) {
31
+ if (mod && mod.__esModule) return mod;
32
+ var result = {};
33
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
+ __setModuleDefault(result, mod);
35
+ return result;
36
+ };
37
+ })();
16
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.MedicalHistoryStatus = exports.AccountLocationStatus = void 0;
17
40
  /**
18
41
  * Status module exports
19
42
  */
43
+ __exportStar(require("./types"), exports);
20
44
  __exportStar(require("./medical-service-status"), exports);
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RhdHVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7R0FFRztBQUNILDJEQUF5QyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU3RhdHVzIG1vZHVsZSBleHBvcnRzXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vbWVkaWNhbC1zZXJ2aWNlLXN0YXR1cyc7XG4iXX0=
45
+ exports.AccountLocationStatus = __importStar(require("./account-location-status"));
46
+ exports.MedicalHistoryStatus = __importStar(require("./medical-history-status"));
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RhdHVzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztHQUVHO0FBQ0gsMENBQXdCO0FBQ3hCLDJEQUF5QztBQUN6QyxtRkFBbUU7QUFDbkUsaUZBQWlFIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTdGF0dXMgbW9kdWxlIGV4cG9ydHNcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL21lZGljYWwtc2VydmljZS1zdGF0dXMnO1xuZXhwb3J0ICogYXMgQWNjb3VudExvY2F0aW9uU3RhdHVzIGZyb20gJy4vYWNjb3VudC1sb2NhdGlvbi1zdGF0dXMnO1xuZXhwb3J0ICogYXMgTWVkaWNhbEhpc3RvcnlTdGF0dXMgZnJvbSAnLi9tZWRpY2FsLWhpc3Rvcnktc3RhdHVzJztcbiJdfQ==
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Medical History Status enumeration and metadata
3
+ * Defines the status of medical history records (active or expired)
4
+ */
5
+ import type { StatusMetadata, Locale } from './types';
6
+ export declare enum MedicalHistoryStatus {
7
+ CURRENT = "current",
8
+ EXPIRED = "expired"
9
+ }
10
+ /**
11
+ * Medical History Status metadata configuration
12
+ */
13
+ export declare const MEDICAL_HISTORY_STATUS_METADATA: Record<MedicalHistoryStatus, StatusMetadata>;
14
+ /**
15
+ * Get status metadata
16
+ */
17
+ export declare function getStatusMetadata(status: MedicalHistoryStatus): StatusMetadata;
18
+ /**
19
+ * Get status icon
20
+ */
21
+ export declare function getStatusIcon(status: MedicalHistoryStatus): string;
22
+ /**
23
+ * Get status color
24
+ */
25
+ export declare function getStatusColor(status: MedicalHistoryStatus): string;
26
+ /**
27
+ * Get status label (short or long)
28
+ */
29
+ export declare function getStatusLabel(status: MedicalHistoryStatus, locale?: Locale, format?: 'short' | 'long'): string;
30
+ /**
31
+ * Get status description
32
+ */
33
+ export declare function getStatusDescription(status: MedicalHistoryStatus, locale?: Locale): string;
34
+ /**
35
+ * Get all available statuses
36
+ */
37
+ export declare function getAllMedicalHistoryStatuses(): MedicalHistoryStatus[];
38
+ /**
39
+ * Check if a value is a valid MedicalHistoryStatus
40
+ */
41
+ export declare function isValidMedicalHistoryStatus(value: string): value is MedicalHistoryStatus;
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ /**
3
+ * Medical History Status enumeration and metadata
4
+ * Defines the status of medical history records (active or expired)
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.MEDICAL_HISTORY_STATUS_METADATA = exports.MedicalHistoryStatus = void 0;
8
+ exports.getStatusMetadata = getStatusMetadata;
9
+ exports.getStatusIcon = getStatusIcon;
10
+ exports.getStatusColor = getStatusColor;
11
+ exports.getStatusLabel = getStatusLabel;
12
+ exports.getStatusDescription = getStatusDescription;
13
+ exports.getAllMedicalHistoryStatuses = getAllMedicalHistoryStatuses;
14
+ exports.isValidMedicalHistoryStatus = isValidMedicalHistoryStatus;
15
+ var MedicalHistoryStatus;
16
+ (function (MedicalHistoryStatus) {
17
+ MedicalHistoryStatus["CURRENT"] = "current";
18
+ MedicalHistoryStatus["EXPIRED"] = "expired";
19
+ })(MedicalHistoryStatus || (exports.MedicalHistoryStatus = MedicalHistoryStatus = {}));
20
+ /**
21
+ * Medical History Status metadata configuration
22
+ */
23
+ exports.MEDICAL_HISTORY_STATUS_METADATA = {
24
+ [MedicalHistoryStatus.CURRENT]: {
25
+ icon: 'check_circle',
26
+ color: '#4CAF50', // Green
27
+ label: {
28
+ short: {
29
+ 'us-EN': 'Active',
30
+ 'fr-FR': 'Actif',
31
+ },
32
+ long: {
33
+ 'us-EN': 'Currently Active',
34
+ 'fr-FR': 'Actuellement actif',
35
+ },
36
+ },
37
+ description: {
38
+ 'us-EN': 'Medical history record is currently active and relevant',
39
+ 'fr-FR': "L'historique mΓ©dical est actuellement actif et pertinent",
40
+ },
41
+ },
42
+ [MedicalHistoryStatus.EXPIRED]: {
43
+ icon: 'do_not_disturb_on',
44
+ color: '#808080', // Gray
45
+ label: {
46
+ short: {
47
+ 'us-EN': 'Expired',
48
+ 'fr-FR': 'ExpirΓ©',
49
+ },
50
+ long: {
51
+ 'us-EN': 'Expired Record',
52
+ 'fr-FR': 'Enregistrement expirΓ©',
53
+ },
54
+ },
55
+ description: {
56
+ 'us-EN': 'Medical history record has expired and is no longer current',
57
+ 'fr-FR': "L'historique mΓ©dical a expirΓ© et n'est plus actuel",
58
+ },
59
+ },
60
+ };
61
+ /**
62
+ * Get status metadata
63
+ */
64
+ function getStatusMetadata(status) {
65
+ return exports.MEDICAL_HISTORY_STATUS_METADATA[status];
66
+ }
67
+ /**
68
+ * Get status icon
69
+ */
70
+ function getStatusIcon(status) {
71
+ return exports.MEDICAL_HISTORY_STATUS_METADATA[status].icon;
72
+ }
73
+ /**
74
+ * Get status color
75
+ */
76
+ function getStatusColor(status) {
77
+ return exports.MEDICAL_HISTORY_STATUS_METADATA[status].color;
78
+ }
79
+ /**
80
+ * Get status label (short or long)
81
+ */
82
+ function getStatusLabel(status, locale = 'us-EN', format = 'short') {
83
+ return exports.MEDICAL_HISTORY_STATUS_METADATA[status].label[format][locale];
84
+ }
85
+ /**
86
+ * Get status description
87
+ */
88
+ function getStatusDescription(status, locale = 'us-EN') {
89
+ return exports.MEDICAL_HISTORY_STATUS_METADATA[status].description[locale];
90
+ }
91
+ /**
92
+ * Get all available statuses
93
+ */
94
+ function getAllMedicalHistoryStatuses() {
95
+ return Object.values(MedicalHistoryStatus);
96
+ }
97
+ /**
98
+ * Check if a value is a valid MedicalHistoryStatus
99
+ */
100
+ function isValidMedicalHistoryStatus(value) {
101
+ return Object.values(MedicalHistoryStatus).includes(value);
102
+ }
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWNhbC1oaXN0b3J5LXN0YXR1cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGF0dXMvbWVkaWNhbC1oaXN0b3J5LXN0YXR1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7QUFzREgsOENBRUM7QUFLRCxzQ0FFQztBQUtELHdDQUVDO0FBS0Qsd0NBTUM7QUFLRCxvREFFQztBQUtELG9FQUVDO0FBS0Qsa0VBRUM7QUFsR0QsSUFBWSxvQkFHWDtBQUhELFdBQVksb0JBQW9CO0lBQzlCLDJDQUFtQixDQUFBO0lBQ25CLDJDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxvQkFBb0Isb0NBQXBCLG9CQUFvQixRQUcvQjtBQUVEOztHQUVHO0FBQ1UsUUFBQSwrQkFBK0IsR0FBaUQ7SUFDM0YsQ0FBQyxvQkFBb0IsQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUM5QixJQUFJLEVBQUUsY0FBYztRQUNwQixLQUFLLEVBQUUsU0FBUyxFQUFFLFFBQVE7UUFDMUIsS0FBSyxFQUFFO1lBQ0wsS0FBSyxFQUFFO2dCQUNMLE9BQU8sRUFBRSxRQUFRO2dCQUNqQixPQUFPLEVBQUUsT0FBTzthQUNqQjtZQUNELElBQUksRUFBRTtnQkFDSixPQUFPLEVBQUUsa0JBQWtCO2dCQUMzQixPQUFPLEVBQUUsb0JBQW9CO2FBQzlCO1NBQ0Y7UUFDRCxXQUFXLEVBQUU7WUFDWCxPQUFPLEVBQUUseURBQXlEO1lBQ2xFLE9BQU8sRUFBRSwwREFBMEQ7U0FDcEU7S0FDRjtJQUNELENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDOUIsSUFBSSxFQUFFLG1CQUFtQjtRQUN6QixLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU87UUFDekIsS0FBSyxFQUFFO1lBQ0wsS0FBSyxFQUFFO2dCQUNMLE9BQU8sRUFBRSxTQUFTO2dCQUNsQixPQUFPLEVBQUUsUUFBUTthQUNsQjtZQUNELElBQUksRUFBRTtnQkFDSixPQUFPLEVBQUUsZ0JBQWdCO2dCQUN6QixPQUFPLEVBQUUsdUJBQXVCO2FBQ2pDO1NBQ0Y7UUFDRCxXQUFXLEVBQUU7WUFDWCxPQUFPLEVBQUUsNkRBQTZEO1lBQ3RFLE9BQU8sRUFBRSxvREFBb0Q7U0FDOUQ7S0FDRjtDQUNGLENBQUM7QUFFRjs7R0FFRztBQUNILFNBQWdCLGlCQUFpQixDQUFDLE1BQTRCO0lBQzVELE9BQU8sdUNBQStCLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDakQsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsYUFBYSxDQUFDLE1BQTRCO0lBQ3hELE9BQU8sdUNBQStCLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3RELENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxNQUE0QjtJQUN6RCxPQUFPLHVDQUErQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUN2RCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixjQUFjLENBQzVCLE1BQTRCLEVBQzVCLFNBQWlCLE9BQU8sRUFDeEIsU0FBMkIsT0FBTztJQUVsQyxPQUFPLHVDQUErQixDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN2RSxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixvQkFBb0IsQ0FBQyxNQUE0QixFQUFFLFNBQWlCLE9BQU87SUFDekYsT0FBTyx1Q0FBK0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDckUsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsNEJBQTRCO0lBQzFDLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBQzdDLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLDJCQUEyQixDQUFDLEtBQWE7SUFDdkQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUMsUUFBUSxDQUFDLEtBQTZCLENBQUMsQ0FBQztBQUNyRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNZWRpY2FsIEhpc3RvcnkgU3RhdHVzIGVudW1lcmF0aW9uIGFuZCBtZXRhZGF0YVxuICogRGVmaW5lcyB0aGUgc3RhdHVzIG9mIG1lZGljYWwgaGlzdG9yeSByZWNvcmRzIChhY3RpdmUgb3IgZXhwaXJlZClcbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFN0YXR1c01ldGFkYXRhLCBMb2NhbGUgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGVudW0gTWVkaWNhbEhpc3RvcnlTdGF0dXMge1xuICBDVVJSRU5UID0gJ2N1cnJlbnQnLFxuICBFWFBJUkVEID0gJ2V4cGlyZWQnLFxufVxuXG4vKipcbiAqIE1lZGljYWwgSGlzdG9yeSBTdGF0dXMgbWV0YWRhdGEgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgY29uc3QgTUVESUNBTF9ISVNUT1JZX1NUQVRVU19NRVRBREFUQTogUmVjb3JkPE1lZGljYWxIaXN0b3J5U3RhdHVzLCBTdGF0dXNNZXRhZGF0YT4gPSB7XG4gIFtNZWRpY2FsSGlzdG9yeVN0YXR1cy5DVVJSRU5UXToge1xuICAgIGljb246ICdjaGVja19jaXJjbGUnLFxuICAgIGNvbG9yOiAnIzRDQUY1MCcsIC8vIEdyZWVuXG4gICAgbGFiZWw6IHtcbiAgICAgIHNob3J0OiB7XG4gICAgICAgICd1cy1FTic6ICdBY3RpdmUnLFxuICAgICAgICAnZnItRlInOiAnQWN0aWYnLFxuICAgICAgfSxcbiAgICAgIGxvbmc6IHtcbiAgICAgICAgJ3VzLUVOJzogJ0N1cnJlbnRseSBBY3RpdmUnLFxuICAgICAgICAnZnItRlInOiAnQWN0dWVsbGVtZW50IGFjdGlmJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgJ3VzLUVOJzogJ01lZGljYWwgaGlzdG9yeSByZWNvcmQgaXMgY3VycmVudGx5IGFjdGl2ZSBhbmQgcmVsZXZhbnQnLFxuICAgICAgJ2ZyLUZSJzogXCJMJ2hpc3RvcmlxdWUgbcOpZGljYWwgZXN0IGFjdHVlbGxlbWVudCBhY3RpZiBldCBwZXJ0aW5lbnRcIixcbiAgICB9LFxuICB9LFxuICBbTWVkaWNhbEhpc3RvcnlTdGF0dXMuRVhQSVJFRF06IHtcbiAgICBpY29uOiAnZG9fbm90X2Rpc3R1cmJfb24nLFxuICAgIGNvbG9yOiAnIzgwODA4MCcsIC8vIEdyYXlcbiAgICBsYWJlbDoge1xuICAgICAgc2hvcnQ6IHtcbiAgICAgICAgJ3VzLUVOJzogJ0V4cGlyZWQnLFxuICAgICAgICAnZnItRlInOiAnRXhwaXLDqScsXG4gICAgICB9LFxuICAgICAgbG9uZzoge1xuICAgICAgICAndXMtRU4nOiAnRXhwaXJlZCBSZWNvcmQnLFxuICAgICAgICAnZnItRlInOiAnRW5yZWdpc3RyZW1lbnQgZXhwaXLDqScsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVzY3JpcHRpb246IHtcbiAgICAgICd1cy1FTic6ICdNZWRpY2FsIGhpc3RvcnkgcmVjb3JkIGhhcyBleHBpcmVkIGFuZCBpcyBubyBsb25nZXIgY3VycmVudCcsXG4gICAgICAnZnItRlInOiBcIkwnaGlzdG9yaXF1ZSBtw6lkaWNhbCBhIGV4cGlyw6kgZXQgbidlc3QgcGx1cyBhY3R1ZWxcIixcbiAgICB9LFxuICB9LFxufTtcblxuLyoqXG4gKiBHZXQgc3RhdHVzIG1ldGFkYXRhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0dXNNZXRhZGF0YShzdGF0dXM6IE1lZGljYWxIaXN0b3J5U3RhdHVzKTogU3RhdHVzTWV0YWRhdGEge1xuICByZXR1cm4gTUVESUNBTF9ISVNUT1JZX1NUQVRVU19NRVRBREFUQVtzdGF0dXNdO1xufVxuXG4vKipcbiAqIEdldCBzdGF0dXMgaWNvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzSWNvbihzdGF0dXM6IE1lZGljYWxIaXN0b3J5U3RhdHVzKTogc3RyaW5nIHtcbiAgcmV0dXJuIE1FRElDQUxfSElTVE9SWV9TVEFUVVNfTUVUQURBVEFbc3RhdHVzXS5pY29uO1xufVxuXG4vKipcbiAqIEdldCBzdGF0dXMgY29sb3JcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXR1c0NvbG9yKHN0YXR1czogTWVkaWNhbEhpc3RvcnlTdGF0dXMpOiBzdHJpbmcge1xuICByZXR1cm4gTUVESUNBTF9ISVNUT1JZX1NUQVRVU19NRVRBREFUQVtzdGF0dXNdLmNvbG9yO1xufVxuXG4vKipcbiAqIEdldCBzdGF0dXMgbGFiZWwgKHNob3J0IG9yIGxvbmcpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0dXNMYWJlbChcbiAgc3RhdHVzOiBNZWRpY2FsSGlzdG9yeVN0YXR1cyxcbiAgbG9jYWxlOiBMb2NhbGUgPSAndXMtRU4nLFxuICBmb3JtYXQ6ICdzaG9ydCcgfCAnbG9uZycgPSAnc2hvcnQnLFxuKTogc3RyaW5nIHtcbiAgcmV0dXJuIE1FRElDQUxfSElTVE9SWV9TVEFUVVNfTUVUQURBVEFbc3RhdHVzXS5sYWJlbFtmb3JtYXRdW2xvY2FsZV07XG59XG5cbi8qKlxuICogR2V0IHN0YXR1cyBkZXNjcmlwdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzRGVzY3JpcHRpb24oc3RhdHVzOiBNZWRpY2FsSGlzdG9yeVN0YXR1cywgbG9jYWxlOiBMb2NhbGUgPSAndXMtRU4nKTogc3RyaW5nIHtcbiAgcmV0dXJuIE1FRElDQUxfSElTVE9SWV9TVEFUVVNfTUVUQURBVEFbc3RhdHVzXS5kZXNjcmlwdGlvbltsb2NhbGVdO1xufVxuXG4vKipcbiAqIEdldCBhbGwgYXZhaWxhYmxlIHN0YXR1c2VzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBbGxNZWRpY2FsSGlzdG9yeVN0YXR1c2VzKCk6IE1lZGljYWxIaXN0b3J5U3RhdHVzW10ge1xuICByZXR1cm4gT2JqZWN0LnZhbHVlcyhNZWRpY2FsSGlzdG9yeVN0YXR1cyk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSB2YWx1ZSBpcyBhIHZhbGlkIE1lZGljYWxIaXN0b3J5U3RhdHVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1ZhbGlkTWVkaWNhbEhpc3RvcnlTdGF0dXModmFsdWU6IHN0cmluZyk6IHZhbHVlIGlzIE1lZGljYWxIaXN0b3J5U3RhdHVzIHtcbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMoTWVkaWNhbEhpc3RvcnlTdGF0dXMpLmluY2x1ZGVzKHZhbHVlIGFzIE1lZGljYWxIaXN0b3J5U3RhdHVzKTtcbn1cbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Medical Service Status enumeration and metadata
3
3
  */
4
- import type { Locale } from '../operations/labels';
4
+ import type { StatusMetadata, Locale } from './types';
5
5
  export declare enum MedicalServiceStatus {
6
6
  PENDING = "pending",
7
7
  IN_PROGRESS = "in_progress",
@@ -9,27 +9,6 @@ export declare enum MedicalServiceStatus {
9
9
  CANCELED = "canceled",
10
10
  COMPLETED = "completed"
11
11
  }
12
- /**
13
- * Status metadata including icons, colors, and translations
14
- */
15
- export interface StatusMetadata {
16
- icon: string;
17
- color: string;
18
- label: {
19
- short: {
20
- 'us-EN': string;
21
- 'fr-FR': string;
22
- };
23
- long: {
24
- 'us-EN': string;
25
- 'fr-FR': string;
26
- };
27
- };
28
- description: {
29
- 'us-EN': string;
30
- 'fr-FR': string;
31
- };
32
- }
33
12
  /**
34
13
  * Medical Service Status metadata configuration
35
14
  */
@@ -44,7 +44,7 @@ exports.MEDICAL_SERVICE_STATUS_METADATA = {
44
44
  },
45
45
  },
46
46
  [MedicalServiceStatus.ON_WAITING_ROOM]: {
47
- icon: 'person_pin_circle',
47
+ icon: 'event_busy',
48
48
  color: '#FF9800', // Orange
49
49
  label: {
50
50
  short: {
@@ -188,4 +188,4 @@ function isValidTransition(from, to) {
188
188
  function getAllowedTransitions(status) {
189
189
  return exports.MEDICAL_SERVICE_STATUS_TRANSITIONS[status] ?? [];
190
190
  }
191
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWNhbC1zZXJ2aWNlLXN0YXR1cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGF0dXMvbWVkaWNhbC1zZXJ2aWNlLXN0YXR1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQXFJSCw4Q0FFQztBQUtELHNDQUVDO0FBS0Qsd0NBRUM7QUFLRCx3Q0FNQztBQUtELG9EQUVDO0FBS0Qsb0VBRUM7QUFLRCxrRUFFQztBQXdCRCw4Q0FFQztBQUtELHNEQUVDO0FBbE5ELElBQVksb0JBTVg7QUFORCxXQUFZLG9CQUFvQjtJQUM5QiwyQ0FBbUIsQ0FBQTtJQUNuQixtREFBMkIsQ0FBQTtJQUMzQiwyREFBbUMsQ0FBQTtJQUNuQyw2Q0FBcUIsQ0FBQTtJQUNyQiwrQ0FBdUIsQ0FBQTtBQUN6QixDQUFDLEVBTlcsb0JBQW9CLG9DQUFwQixvQkFBb0IsUUFNL0I7QUF3QkQ7O0dBRUc7QUFDVSxRQUFBLCtCQUErQixHQUFpRDtJQUMzRixDQUFDLG9CQUFvQixDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzlCLElBQUksRUFBRSxVQUFVO1FBQ2hCLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTztRQUN6QixLQUFLLEVBQUU7WUFDTCxLQUFLLEVBQUU7Z0JBQ0wsT0FBTyxFQUFFLFNBQVM7Z0JBQ2xCLE9BQU8sRUFBRSxZQUFZO2FBQ3RCO1lBQ0QsSUFBSSxFQUFFO2dCQUNKLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLE9BQU8sRUFBRSxvQkFBb0I7YUFDOUI7U0FDRjtRQUNELFdBQVcsRUFBRTtZQUNYLE9BQU8sRUFBRSx1REFBdUQ7WUFDaEUsT0FBTyxFQUFFLDREQUE0RDtTQUN0RTtLQUNGO0lBQ0QsQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsRUFBRTtRQUN0QyxJQUFJLEVBQUUsbUJBQW1CO1FBQ3pCLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUztRQUMzQixLQUFLLEVBQUU7WUFDTCxLQUFLLEVBQUU7Z0JB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ZWRpY2FsIFNlcnZpY2UgU3RhdHVzIGVudW1lcmF0aW9uIGFuZCBtZXRhZGF0YVxuICovXG5cbmltcG9ydCB0eXBlIHsgTG9jYWxlIH0gZnJvbSAnLi4vb3BlcmF0aW9ucy9sYWJlbHMnO1xuXG5leHBvcnQgZW51bSBNZWRpY2FsU2VydmljZVN0YXR1cyB7XG4gIFBFTkRJTkcgPSAncGVuZGluZycsXG4gIElOX1BST0dSRVNTID0gJ2luX3Byb2dyZXNzJyxcbiAgT05fV0FJVElOR19ST09NID0gJ29uX3dhaXRpbmdfcm9vbScsXG4gIENBTkNFTEVEID0gJ2NhbmNlbGVkJyxcbiAgQ09NUExFVEVEID0gJ2NvbXBsZXRlZCcsXG59XG5cbi8qKlxuICogU3RhdHVzIG1ldGFkYXRhIGluY2x1ZGluZyBpY29ucywgY29sb3JzLCBhbmQgdHJhbnNsYXRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhdHVzTWV0YWRhdGEge1xuICBpY29uOiBzdHJpbmc7IC8vIE1hdGVyaWFsIGljb24gbmFtZVxuICBjb2xvcjogc3RyaW5nOyAvLyBIZXggY29sb3Igb3IgQ1NTIGNvbG9yIG5hbWVcbiAgbGFiZWw6IHtcbiAgICBzaG9ydDoge1xuICAgICAgJ3VzLUVOJzogc3RyaW5nO1xuICAgICAgJ2ZyLUZSJzogc3RyaW5nO1xuICAgIH07XG4gICAgbG9uZzoge1xuICAgICAgJ3VzLUVOJzogc3RyaW5nO1xuICAgICAgJ2ZyLUZSJzogc3RyaW5nO1xuICAgIH07XG4gIH07XG4gIGRlc2NyaXB0aW9uOiB7XG4gICAgJ3VzLUVOJzogc3RyaW5nO1xuICAgICdmci1GUic6IHN0cmluZztcbiAgfTtcbn1cblxuLyoqXG4gKiBNZWRpY2FsIFNlcnZpY2UgU3RhdHVzIG1ldGFkYXRhIGNvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGNvbnN0IE1FRElDQUxfU0VSVklDRV9TVEFUVVNfTUVUQURBVEE6IFJlY29yZDxNZWRpY2FsU2VydmljZVN0YXR1cywgU3RhdHVzTWV0YWRhdGE+ID0ge1xuICBbTWVkaWNhbFNlcnZpY2VTdGF0dXMuUEVORElOR106IHtcbiAgICBpY29uOiAnc2NoZWR1bGUnLFxuICAgIGNvbG9yOiAnIzlFOUU5RScsIC8vIEdyYXlcbiAgICBsYWJlbDoge1xuICAgICAgc2hvcnQ6IHtcbiAgICAgICAgJ3VzLUVOJzogJ1BlbmRpbmcnLFxuICAgICAgICAnZnItRlInOiAnRW4gYXR0ZW50ZScsXG4gICAgICB9LFxuICAgICAgbG9uZzoge1xuICAgICAgICAndXMtRU4nOiAnUGVuZGluZyBTZXJ2aWNlJyxcbiAgICAgICAgJ2ZyLUZSJzogJ1NlcnZpY2UgZW4gYXR0ZW50ZScsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVzY3JpcHRpb246IHtcbiAgICAgICd1cy1FTic6ICdUaGUgbWVkaWNhbCBzZXJ2aWNlIGlzIHNjaGVkdWxlZCBhbmQgd2FpdGluZyB0byBiZWdpbicsXG4gICAgICAnZnItRlInOiAnTGUgc2VydmljZSBtw6lkaWNhbCBlc3QgcGxhbmlmacOpIGV0IGVuIGF0dGVudGUgZGUgZMOpbWFycmFnZScsXG4gICAgfSxcbiAgfSxcbiAgW01lZGljYWxTZXJ2aWNlU3RhdHVzLk9OX1dBSVRJTkdfUk9PTV06IHtcbiAgICBpY29uOiAncGVyc29uX3Bpbl9jaXJjbGUnLFxuICAgIGNvbG9yOiAnI0ZGOTgwMCcsIC8vIE9yYW5nZVxuICAgIGxhYmVsOiB7XG4gICAgICBzaG9ydDoge1xuICAgICAgICAndXMtRU4nOiAnV2FpdGluZycsXG4gICAgICAgICdmci1GUic6ICdFbiBhdHRlbnRlJyxcbiAgICAgIH0sXG4gICAgICBsb25nOiB7XG4gICAgICAgICd1cy1FTic6ICdJbiBXYWl0aW5nIFJvb20nLFxuICAgICAgICAnZnItRlInOiBcIkRhbnMgbGEgc2FsbGUgZCdhdHRlbnRlXCIsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVzY3JpcHRpb246IHtcbiAgICAgICd1cy1FTic6ICdQYXRpZW50IGhhcyBjaGVja2VkIGluIGFuZCBpcyB3YWl0aW5nIGluIHRoZSB3YWl0aW5nIHJvb20nLFxuICAgICAgJ2ZyLUZSJzogXCJMZSBwYXRpZW50IHMnZXN0IGVucmVnaXN0csOpIGV0IGF0dGVuZCBkYW5zIGxhIHNhbGxlIGQnYXR0ZW50ZVwiLFxuICAgIH0sXG4gIH0sXG4gIFtNZWRpY2FsU2VydmljZVN0YXR1cy5JTl9QUk9HUkVTU106IHtcbiAgICBpY29uOiAnbWVkaWNhbF9zZXJ2aWNlcycsXG4gICAgY29sb3I6ICcjMjE5NkYzJywgLy8gQmx1ZVxuICAgIGxhYmVsOiB7XG4gICAgICBzaG9ydDoge1xuICAgICAgICAndXMtRU4nOiAnSW4gUHJvZ3Jlc3MnLFxuICAgICAgICAnZnItRlInOiAnRW4gY291cnMnLFxuICAgICAgfSxcbiAgICAgIGxvbmc6IHtcbiAgICAgICAgJ3VzLUVOJzogJ1NlcnZpY2UgSW4gUHJvZ3Jlc3MnLFxuICAgICAgICAnZnItRlInOiAnU2VydmljZSBlbiBjb3VycycsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVzY3JpcHRpb246IHtcbiAgICAgICd1cy1FTic6ICdUaGUgbWVkaWNhbCBzZXJ2aWNlIGNvbnN1bHRhdGlvbiBpcyBjdXJyZW50bHkgaW4gcHJvZ3Jlc3MnLFxuICAgICAgJ2ZyLUZSJzogJ0xhIGNvbnN1bHRhdGlvbiBkdSBzZXJ2aWNlIG3DqWRpY2FsIGVzdCBhY3R1ZWxsZW1lbnQgZW4gY291cnMnLFxuICAgIH0sXG4gIH0sXG4gIFtNZWRpY2FsU2VydmljZVN0YXR1cy5DT01QTEVURURdOiB7XG4gICAgaWNvbjogJ2NoZWNrX2NpcmNsZScsXG4gICAgY29sb3I6ICcjNENBRjUwJywgLy8gR3JlZW5cbiAgICBsYWJlbDoge1xuICAgICAgc2hvcnQ6IHtcbiAgICAgICAgJ3VzLUVOJzogJ0NvbXBsZXRlZCcsXG4gICAgICAgICdmci1GUic6ICdUZXJtaW7DqScsXG4gICAgICB9LFxuICAgICAgbG9uZzoge1xuICAgICAgICAndXMtRU4nOiAnU2VydmljZSBDb21wbGV0ZWQnLFxuICAgICAgICAnZnItRlInOiAnU2VydmljZSB0ZXJtaW7DqScsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVzY3JpcHRpb246IHtcbiAgICAgICd1cy1FTic6ICdUaGUgbWVkaWNhbCBzZXJ2aWNlIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQnLFxuICAgICAgJ2ZyLUZSJzogJ0xlIHNlcnZpY2UgbcOpZGljYWwgYSDDqXTDqSB0ZXJtaW7DqSBhdmVjIHN1Y2PDqHMnLFxuICAgIH0sXG4gIH0sXG4gIFtNZWRpY2FsU2VydmljZVN0YXR1cy5DQU5DRUxFRF06IHtcbiAgICBpY29uOiAnY2FuY2VsJyxcbiAgICBjb2xvcjogJyNGNDQzMzYnLCAvLyBSZWRcbiAgICBsYWJlbDoge1xuICAgICAgc2hvcnQ6IHtcbiAgICAgICAgJ3VzLUVOJzogJ0NhbmNlbGVkJyxcbiAgICAgICAgJ2ZyLUZSJzogJ0FubnVsw6knLFxuICAgICAgfSxcbiAgICAgIGxvbmc6IHtcbiAgICAgICAgJ3VzLUVOJzogJ1NlcnZpY2UgQ2FuY2VsZWQnLFxuICAgICAgICAnZnItRlInOiAnU2VydmljZSBhbm51bMOpJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgJ3VzLUVOJzogJ1RoZSBtZWRpY2FsIHNlcnZpY2UgaGFzIGJlZW4gY2FuY2VsZWQgYW5kIHdpbGwgbm90IHByb2NlZWQnLFxuICAgICAgJ2ZyLUZSJzogJ0xlIHNlcnZpY2UgbcOpZGljYWwgYSDDqXTDqSBhbm51bMOpIGV0IG5lIHNlcmEgcGFzIGVmZmVjdHXDqScsXG4gICAgfSxcbiAgfSxcbn07XG5cbi8qKlxuICogR2V0IHN0YXR1cyBtZXRhZGF0YVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzTWV0YWRhdGEoc3RhdHVzOiBNZWRpY2FsU2VydmljZVN0YXR1cyk6IFN0YXR1c01ldGFkYXRhIHtcbiAgcmV0dXJuIE1FRElDQUxfU0VSVklDRV9TVEFUVVNfTUVUQURBVEFbc3RhdHVzXTtcbn1cblxuLyoqXG4gKiBHZXQgc3RhdHVzIGljb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXR1c0ljb24oc3RhdHVzOiBNZWRpY2FsU2VydmljZVN0YXR1cyk6IHN0cmluZyB7XG4gIHJldHVybiBNRURJQ0FMX1NFUlZJQ0VfU1RBVFVTX01FVEFEQVRBW3N0YXR1c10uaWNvbjtcbn1cblxuLyoqXG4gKiBHZXQgc3RhdHVzIGNvbG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0dXNDb2xvcihzdGF0dXM6IE1lZGljYWxTZXJ2aWNlU3RhdHVzKTogc3RyaW5nIHtcbiAgcmV0dXJuIE1FRElDQUxfU0VSVklDRV9TVEFUVVNfTUVUQURBVEFbc3RhdHVzXS5jb2xvcjtcbn1cblxuLyoqXG4gKiBHZXQgc3RhdHVzIGxhYmVsIChzaG9ydCBvciBsb25nKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzTGFiZWwoXG4gIHN0YXR1czogTWVkaWNhbFNlcnZpY2VTdGF0dXMsXG4gIGxvY2FsZTogTG9jYWxlID0gJ3VzLUVOJyxcbiAgZm9ybWF0OiAnc2hvcnQnIHwgJ2xvbmcnID0gJ3Nob3J0Jyxcbik6IHN0cmluZyB7XG4gIHJldHVybiBNRURJQ0FMX1NFUlZJQ0VfU1RBVFVTX01FVEFEQVRBW3N0YXR1c10ubGFiZWxbZm9ybWF0XVtsb2NhbGVdO1xufVxuXG4vKipcbiAqIEdldCBzdGF0dXMgZGVzY3JpcHRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXR1c0Rlc2NyaXB0aW9uKHN0YXR1czogTWVkaWNhbFNlcnZpY2VTdGF0dXMsIGxvY2FsZTogTG9jYWxlID0gJ3VzLUVOJyk6IHN0cmluZyB7XG4gIHJldHVybiBNRURJQ0FMX1NFUlZJQ0VfU1RBVFVTX01FVEFEQVRBW3N0YXR1c10uZGVzY3JpcHRpb25bbG9jYWxlXTtcbn1cblxuLyoqXG4gKiBHZXQgYWxsIGF2YWlsYWJsZSBzdGF0dXNlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsTWVkaWNhbFNlcnZpY2VTdGF0dXNlcygpOiBNZWRpY2FsU2VydmljZVN0YXR1c1tdIHtcbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMoTWVkaWNhbFNlcnZpY2VTdGF0dXMpO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgdmFsdWUgaXMgYSB2YWxpZCBNZWRpY2FsU2VydmljZVN0YXR1c1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZE1lZGljYWxTZXJ2aWNlU3RhdHVzKHZhbHVlOiBzdHJpbmcpOiB2YWx1ZSBpcyBNZWRpY2FsU2VydmljZVN0YXR1cyB7XG4gIHJldHVybiBPYmplY3QudmFsdWVzKE1lZGljYWxTZXJ2aWNlU3RhdHVzKS5pbmNsdWRlcyh2YWx1ZSBhcyBNZWRpY2FsU2VydmljZVN0YXR1cyk7XG59XG5cbi8qKlxuICogU3RhdHVzIHRyYW5zaXRpb24gcnVsZXMgKG9wdGlvbmFsOiBkZWZpbmUgd2hpY2ggdHJhbnNpdGlvbnMgYXJlIGFsbG93ZWQpXG4gKi9cbmV4cG9ydCBjb25zdCBNRURJQ0FMX1NFUlZJQ0VfU1RBVFVTX1RSQU5TSVRJT05TOiBSZWNvcmQ8TWVkaWNhbFNlcnZpY2VTdGF0dXMsIE1lZGljYWxTZXJ2aWNlU3RhdHVzW10+ID0ge1xuICBbTWVkaWNhbFNlcnZpY2VTdGF0dXMuUEVORElOR106IFtcbiAgICBNZWRpY2FsU2VydmljZVN0YXR1cy5PTl9XQUlUSU5HX1JPT00sXG4gICAgTWVkaWNhbFNlcnZpY2VTdGF0dXMuSU5fUFJPR1JFU1MsXG4gICAgTWVkaWNhbFNlcnZpY2VTdGF0dXMuQ0FOQ0VMRUQsXG4gIF0sXG4gIFtNZWRpY2FsU2VydmljZVN0YXR1cy5PTl9XQUlUSU5HX1JPT01dOiBbXG4gICAgTWVkaWNhbFNlcnZpY2VTdGF0dXMuSU5fUFJPR1JFU1MsXG4gICAgTWVkaWNhbFNlcnZpY2VTdGF0dXMuQ0FOQ0VMRUQsXG4gICAgTWVkaWNhbFNlcnZpY2VTdGF0dXMuUEVORElORyxcbiAgXSxcbiAgW01lZGljYWxTZXJ2aWNlU3RhdHVzLklOX1BST0dSRVNTXTogW01lZGljYWxTZXJ2aWNlU3RhdHVzLkNPTVBMRVRFRCwgTWVkaWNhbFNlcnZpY2VTdGF0dXMuQ0FOQ0VMRURdLFxuICBbTWVkaWNhbFNlcnZpY2VTdGF0dXMuQ09NUExFVEVEXTogW01lZGljYWxTZXJ2aWNlU3RhdHVzLklOX1BST0dSRVNTXSwgLy8gQWxsb3cgcmVvcGVuaW5nXG4gIFtNZWRpY2FsU2VydmljZVN0YXR1cy5DQU5DRUxFRF06IFtNZWRpY2FsU2VydmljZVN0YXR1cy5QRU5ESU5HXSwgLy8gQWxsb3cgdW5jYW5jZWxpbmdcbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBzdGF0dXMgdHJhbnNpdGlvbiBpcyB2YWxpZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFRyYW5zaXRpb24oZnJvbTogTWVkaWNhbFNlcnZpY2VTdGF0dXMsIHRvOiBNZWRpY2FsU2VydmljZVN0YXR1cyk6IGJvb2xlYW4ge1xuICByZXR1cm4gTUVESUNBTF9TRVJWSUNFX1NUQVRVU19UUkFOU0lUSU9OU1tmcm9tXT8uaW5jbHVkZXModG8pID8/IGZhbHNlO1xufVxuXG4vKipcbiAqIEdldCBhbGxvd2VkIHRyYW5zaXRpb25zIGZyb20gYSBzdGF0dXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbG93ZWRUcmFuc2l0aW9ucyhzdGF0dXM6IE1lZGljYWxTZXJ2aWNlU3RhdHVzKTogTWVkaWNhbFNlcnZpY2VTdGF0dXNbXSB7XG4gIHJldHVybiBNRURJQ0FMX1NFUlZJQ0VfU1RBVFVTX1RSQU5TSVRJT05TW3N0YXR1c10gPz8gW107XG59XG4iXX0=
191
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVkaWNhbC1zZXJ2aWNlLXN0YXR1cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zdGF0dXMvbWVkaWNhbC1zZXJ2aWNlLXN0YXR1cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7OztBQStHSCw4Q0FFQztBQUtELHNDQUVDO0FBS0Qsd0NBRUM7QUFLRCx3Q0FNQztBQUtELG9EQUVDO0FBS0Qsb0VBRUM7QUFLRCxrRUFFQztBQXdCRCw4Q0FFQztBQUtELHNEQUVDO0FBNUxELElBQVksb0JBTVg7QUFORCxXQUFZLG9CQUFvQjtJQUM5QiwyQ0FBbUIsQ0FBQTtJQUNuQixtREFBMkIsQ0FBQTtJQUMzQiwyREFBbUMsQ0FBQTtJQUNuQyw2Q0FBcUIsQ0FBQTtJQUNyQiwrQ0FBdUIsQ0FBQTtBQUN6QixDQUFDLEVBTlcsb0JBQW9CLG9DQUFwQixvQkFBb0IsUUFNL0I7QUFFRDs7R0FFRztBQUNVLFFBQUEsK0JBQStCLEdBQWlEO0lBQzNGLENBQUMsb0JBQW9CLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDOUIsSUFBSSxFQUFFLFVBQVU7UUFDaEIsS0FBSyxFQUFFLFNBQVMsRUFBRSxPQUFPO1FBQ3pCLEtBQUssRUFBRTtZQUNMLEtBQUssRUFBRTtnQkFDTCxPQUFPLEVBQUUsU0FBUztnQkFDbEIsT0FBTyxFQUFFLFlBQVk7YUFDdEI7WUFDRCxJQUFJLEVBQUU7Z0JBQ0osT0FBTyxFQUFFLGlCQUFpQjtnQkFDMUIsT0FBTyxFQUFFLG9CQUFvQjthQUM5QjtTQUNGO1FBQ0QsV0FBVyxFQUFFO1lBQ1gsT0FBTyxFQUFFLHVEQUF1RDtZQUNoRSxPQUFPLEVBQUUsNERBQTREO1NBQ3RFO0tBQ0Y7SUFDRCxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxFQUFFO1FBQ3RDLElBQUksRUFBRSxZQUFZO1FBQ2xCLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUztRQUMzQixLQUFLLEVBQUU7WUFDTCxLQUFLLEVBQUU7Z0JBQ0ws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Y2FsIFNlcnZpY2UgU3RhdHVzIGVudW1lcmF0aW9uIGFuZCBtZXRhZGF0YVxuICovXG5cbmltcG9ydCB0eXBlIHsgU3RhdHVzTWV0YWRhdGEsIExvY2FsZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgZW51bSBNZWRpY2FsU2VydmljZVN0YXR1cyB7XG4gIFBFTkRJTkcgPSAncGVuZGluZycsXG4gIElOX1BST0dSRVNTID0gJ2luX3Byb2dyZXNzJyxcbiAgT05fV0FJVElOR19ST09NID0gJ29uX3dhaXRpbmdfcm9vbScsXG4gIENBTkNFTEVEID0gJ2NhbmNlbGVkJyxcbiAgQ09NUExFVEVEID0gJ2NvbXBsZXRlZCcsXG59XG5cbi8qKlxuICogTWVkaWNhbCBTZXJ2aWNlIFN0YXR1cyBtZXRhZGF0YSBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBNRURJQ0FMX1NFUlZJQ0VfU1RBVFVTX01FVEFEQVRBOiBSZWNvcmQ8TWVkaWNhbFNlcnZpY2VTdGF0dXMsIFN0YXR1c01ldGFkYXRhPiA9IHtcbiAgW01lZGljYWxTZXJ2aWNlU3RhdHVzLlBFTkRJTkddOiB7XG4gICAgaWNvbjogJ3NjaGVkdWxlJyxcbiAgICBjb2xvcjogJyM5RTlFOUUnLCAvLyBHcmF5XG4gICAgbGFiZWw6IHtcbiAgICAgIHNob3J0OiB7XG4gICAgICAgICd1cy1FTic6ICdQZW5kaW5nJyxcbiAgICAgICAgJ2ZyLUZSJzogJ0VuIGF0dGVudGUnLFxuICAgICAgfSxcbiAgICAgIGxvbmc6IHtcbiAgICAgICAgJ3VzLUVOJzogJ1BlbmRpbmcgU2VydmljZScsXG4gICAgICAgICdmci1GUic6ICdTZXJ2aWNlIGVuIGF0dGVudGUnLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGRlc2NyaXB0aW9uOiB7XG4gICAgICAndXMtRU4nOiAnVGhlIG1lZGljYWwgc2VydmljZSBpcyBzY2hlZHVsZWQgYW5kIHdhaXRpbmcgdG8gYmVnaW4nLFxuICAgICAgJ2ZyLUZSJzogJ0xlIHNlcnZpY2UgbcOpZGljYWwgZXN0IHBsYW5pZmnDqSBldCBlbiBhdHRlbnRlIGRlIGTDqW1hcnJhZ2UnLFxuICAgIH0sXG4gIH0sXG4gIFtNZWRpY2FsU2VydmljZVN0YXR1cy5PTl9XQUlUSU5HX1JPT01dOiB7XG4gICAgaWNvbjogJ2V2ZW50X2J1c3knLFxuICAgIGNvbG9yOiAnI0ZGOTgwMCcsIC8vIE9yYW5nZVxuICAgIGxhYmVsOiB7XG4gICAgICBzaG9ydDoge1xuICAgICAgICAndXMtRU4nOiAnV2FpdGluZycsXG4gICAgICAgICdmci1GUic6ICdFbiBhdHRlbnRlJyxcbiAgICAgIH0sXG4gICAgICBsb25nOiB7XG4gICAgICAgICd1cy1FTic6ICdJbiBXYWl0aW5nIFJvb20nLFxuICAgICAgICAnZnItRlInOiBcIkRhbnMgbGEgc2FsbGUgZCdhdHRlbnRlXCIsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVzY3JpcHRpb246IHtcbiAgICAgICd1cy1FTic6ICdQYXRpZW50IGhhcyBjaGVja2VkIGluIGFuZCBpcyB3YWl0aW5nIGluIHRoZSB3YWl0aW5nIHJvb20nLFxuICAgICAgJ2ZyLUZSJzogXCJMZSBwYXRpZW50IHMnZXN0IGVucmVnaXN0csOpIGV0IGF0dGVuZCBkYW5zIGxhIHNhbGxlIGQnYXR0ZW50ZVwiLFxuICAgIH0sXG4gIH0sXG4gIFtNZWRpY2FsU2VydmljZVN0YXR1cy5JTl9QUk9HUkVTU106IHtcbiAgICBpY29uOiAnbWVkaWNhbF9zZXJ2aWNlcycsXG4gICAgY29sb3I6ICcjMjE5NkYzJywgLy8gQmx1ZVxuICAgIGxhYmVsOiB7XG4gICAgICBzaG9ydDoge1xuICAgICAgICAndXMtRU4nOiAnSW4gUHJvZ3Jlc3MnLFxuICAgICAgICAnZnItRlInOiAnRW4gY291cnMnLFxuICAgICAgfSxcbiAgICAgIGxvbmc6IHtcbiAgICAgICAgJ3VzLUVOJzogJ1NlcnZpY2UgSW4gUHJvZ3Jlc3MnLFxuICAgICAgICAnZnItRlInOiAnU2VydmljZSBlbiBjb3VycycsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVzY3JpcHRpb246IHtcbiAgICAgICd1cy1FTic6ICdUaGUgbWVkaWNhbCBzZXJ2aWNlIGNvbnN1bHRhdGlvbiBpcyBjdXJyZW50bHkgaW4gcHJvZ3Jlc3MnLFxuICAgICAgJ2ZyLUZSJzogJ0xhIGNvbnN1bHRhdGlvbiBkdSBzZXJ2aWNlIG3DqWRpY2FsIGVzdCBhY3R1ZWxsZW1lbnQgZW4gY291cnMnLFxuICAgIH0sXG4gIH0sXG4gIFtNZWRpY2FsU2VydmljZVN0YXR1cy5DT01QTEVURURdOiB7XG4gICAgaWNvbjogJ2NoZWNrX2NpcmNsZScsXG4gICAgY29sb3I6ICcjNENBRjUwJywgLy8gR3JlZW5cbiAgICBsYWJlbDoge1xuICAgICAgc2hvcnQ6IHtcbiAgICAgICAgJ3VzLUVOJzogJ0NvbXBsZXRlZCcsXG4gICAgICAgICdmci1GUic6ICdUZXJtaW7DqScsXG4gICAgICB9LFxuICAgICAgbG9uZzoge1xuICAgICAgICAndXMtRU4nOiAnU2VydmljZSBDb21wbGV0ZWQnLFxuICAgICAgICAnZnItRlInOiAnU2VydmljZSB0ZXJtaW7DqScsXG4gICAgICB9LFxuICAgIH0sXG4gICAgZGVzY3JpcHRpb246IHtcbiAgICAgICd1cy1FTic6ICdUaGUgbWVkaWNhbCBzZXJ2aWNlIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSBjb21wbGV0ZWQnLFxuICAgICAgJ2ZyLUZSJzogJ0xlIHNlcnZpY2UgbcOpZGljYWwgYSDDqXTDqSB0ZXJtaW7DqSBhdmVjIHN1Y2PDqHMnLFxuICAgIH0sXG4gIH0sXG4gIFtNZWRpY2FsU2VydmljZVN0YXR1cy5DQU5DRUxFRF06IHtcbiAgICBpY29uOiAnY2FuY2VsJyxcbiAgICBjb2xvcjogJyNGNDQzMzYnLCAvLyBSZWRcbiAgICBsYWJlbDoge1xuICAgICAgc2hvcnQ6IHtcbiAgICAgICAgJ3VzLUVOJzogJ0NhbmNlbGVkJyxcbiAgICAgICAgJ2ZyLUZSJzogJ0FubnVsw6knLFxuICAgICAgfSxcbiAgICAgIGxvbmc6IHtcbiAgICAgICAgJ3VzLUVOJzogJ1NlcnZpY2UgQ2FuY2VsZWQnLFxuICAgICAgICAnZnItRlInOiAnU2VydmljZSBhbm51bMOpJyxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBkZXNjcmlwdGlvbjoge1xuICAgICAgJ3VzLUVOJzogJ1RoZSBtZWRpY2FsIHNlcnZpY2UgaGFzIGJlZW4gY2FuY2VsZWQgYW5kIHdpbGwgbm90IHByb2NlZWQnLFxuICAgICAgJ2ZyLUZSJzogJ0xlIHNlcnZpY2UgbcOpZGljYWwgYSDDqXTDqSBhbm51bMOpIGV0IG5lIHNlcmEgcGFzIGVmZmVjdHXDqScsXG4gICAgfSxcbiAgfSxcbn07XG5cbi8qKlxuICogR2V0IHN0YXR1cyBtZXRhZGF0YVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzTWV0YWRhdGEoc3RhdHVzOiBNZWRpY2FsU2VydmljZVN0YXR1cyk6IFN0YXR1c01ldGFkYXRhIHtcbiAgcmV0dXJuIE1FRElDQUxfU0VSVklDRV9TVEFUVVNfTUVUQURBVEFbc3RhdHVzXTtcbn1cblxuLyoqXG4gKiBHZXQgc3RhdHVzIGljb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXR1c0ljb24oc3RhdHVzOiBNZWRpY2FsU2VydmljZVN0YXR1cyk6IHN0cmluZyB7XG4gIHJldHVybiBNRURJQ0FMX1NFUlZJQ0VfU1RBVFVTX01FVEFEQVRBW3N0YXR1c10uaWNvbjtcbn1cblxuLyoqXG4gKiBHZXQgc3RhdHVzIGNvbG9yXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRTdGF0dXNDb2xvcihzdGF0dXM6IE1lZGljYWxTZXJ2aWNlU3RhdHVzKTogc3RyaW5nIHtcbiAgcmV0dXJuIE1FRElDQUxfU0VSVklDRV9TVEFUVVNfTUVUQURBVEFbc3RhdHVzXS5jb2xvcjtcbn1cblxuLyoqXG4gKiBHZXQgc3RhdHVzIGxhYmVsIChzaG9ydCBvciBsb25nKVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3RhdHVzTGFiZWwoXG4gIHN0YXR1czogTWVkaWNhbFNlcnZpY2VTdGF0dXMsXG4gIGxvY2FsZTogTG9jYWxlID0gJ3VzLUVOJyxcbiAgZm9ybWF0OiAnc2hvcnQnIHwgJ2xvbmcnID0gJ3Nob3J0Jyxcbik6IHN0cmluZyB7XG4gIHJldHVybiBNRURJQ0FMX1NFUlZJQ0VfU1RBVFVTX01FVEFEQVRBW3N0YXR1c10ubGFiZWxbZm9ybWF0XVtsb2NhbGVdO1xufVxuXG4vKipcbiAqIEdldCBzdGF0dXMgZGVzY3JpcHRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFN0YXR1c0Rlc2NyaXB0aW9uKHN0YXR1czogTWVkaWNhbFNlcnZpY2VTdGF0dXMsIGxvY2FsZTogTG9jYWxlID0gJ3VzLUVOJyk6IHN0cmluZyB7XG4gIHJldHVybiBNRURJQ0FMX1NFUlZJQ0VfU1RBVFVTX01FVEFEQVRBW3N0YXR1c10uZGVzY3JpcHRpb25bbG9jYWxlXTtcbn1cblxuLyoqXG4gKiBHZXQgYWxsIGF2YWlsYWJsZSBzdGF0dXNlc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWxsTWVkaWNhbFNlcnZpY2VTdGF0dXNlcygpOiBNZWRpY2FsU2VydmljZVN0YXR1c1tdIHtcbiAgcmV0dXJuIE9iamVjdC52YWx1ZXMoTWVkaWNhbFNlcnZpY2VTdGF0dXMpO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIGEgdmFsdWUgaXMgYSB2YWxpZCBNZWRpY2FsU2VydmljZVN0YXR1c1xuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZE1lZGljYWxTZXJ2aWNlU3RhdHVzKHZhbHVlOiBzdHJpbmcpOiB2YWx1ZSBpcyBNZWRpY2FsU2VydmljZVN0YXR1cyB7XG4gIHJldHVybiBPYmplY3QudmFsdWVzKE1lZGljYWxTZXJ2aWNlU3RhdHVzKS5pbmNsdWRlcyh2YWx1ZSBhcyBNZWRpY2FsU2VydmljZVN0YXR1cyk7XG59XG5cbi8qKlxuICogU3RhdHVzIHRyYW5zaXRpb24gcnVsZXMgKG9wdGlvbmFsOiBkZWZpbmUgd2hpY2ggdHJhbnNpdGlvbnMgYXJlIGFsbG93ZWQpXG4gKi9cbmV4cG9ydCBjb25zdCBNRURJQ0FMX1NFUlZJQ0VfU1RBVFVTX1RSQU5TSVRJT05TOiBSZWNvcmQ8TWVkaWNhbFNlcnZpY2VTdGF0dXMsIE1lZGljYWxTZXJ2aWNlU3RhdHVzW10+ID0ge1xuICBbTWVkaWNhbFNlcnZpY2VTdGF0dXMuUEVORElOR106IFtcbiAgICBNZWRpY2FsU2VydmljZVN0YXR1cy5PTl9XQUlUSU5HX1JPT00sXG4gICAgTWVkaWNhbFNlcnZpY2VTdGF0dXMuSU5fUFJPR1JFU1MsXG4gICAgTWVkaWNhbFNlcnZpY2VTdGF0dXMuQ0FOQ0VMRUQsXG4gIF0sXG4gIFtNZWRpY2FsU2VydmljZVN0YXR1cy5PTl9XQUlUSU5HX1JPT01dOiBbXG4gICAgTWVkaWNhbFNlcnZpY2VTdGF0dXMuSU5fUFJPR1JFU1MsXG4gICAgTWVkaWNhbFNlcnZpY2VTdGF0dXMuQ0FOQ0VMRUQsXG4gICAgTWVkaWNhbFNlcnZpY2VTdGF0dXMuUEVORElORyxcbiAgXSxcbiAgW01lZGljYWxTZXJ2aWNlU3RhdHVzLklOX1BST0dSRVNTXTogW01lZGljYWxTZXJ2aWNlU3RhdHVzLkNPTVBMRVRFRCwgTWVkaWNhbFNlcnZpY2VTdGF0dXMuQ0FOQ0VMRURdLFxuICBbTWVkaWNhbFNlcnZpY2VTdGF0dXMuQ09NUExFVEVEXTogW01lZGljYWxTZXJ2aWNlU3RhdHVzLklOX1BST0dSRVNTXSwgLy8gQWxsb3cgcmVvcGVuaW5nXG4gIFtNZWRpY2FsU2VydmljZVN0YXR1cy5DQU5DRUxFRF06IFtNZWRpY2FsU2VydmljZVN0YXR1cy5QRU5ESU5HXSwgLy8gQWxsb3cgdW5jYW5jZWxpbmdcbn07XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBzdGF0dXMgdHJhbnNpdGlvbiBpcyB2YWxpZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNWYWxpZFRyYW5zaXRpb24oZnJvbTogTWVkaWNhbFNlcnZpY2VTdGF0dXMsIHRvOiBNZWRpY2FsU2VydmljZVN0YXR1cyk6IGJvb2xlYW4ge1xuICByZXR1cm4gTUVESUNBTF9TRVJWSUNFX1NUQVRVU19UUkFOU0lUSU9OU1tmcm9tXT8uaW5jbHVkZXModG8pID8/IGZhbHNlO1xufVxuXG4vKipcbiAqIEdldCBhbGxvd2VkIHRyYW5zaXRpb25zIGZyb20gYSBzdGF0dXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbG93ZWRUcmFuc2l0aW9ucyhzdGF0dXM6IE1lZGljYWxTZXJ2aWNlU3RhdHVzKTogTWVkaWNhbFNlcnZpY2VTdGF0dXNbXSB7XG4gIHJldHVybiBNRURJQ0FMX1NFUlZJQ0VfU1RBVFVTX1RSQU5TSVRJT05TW3N0YXR1c10gPz8gW107XG59XG4iXX0=
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Shared status types for all status modules
3
+ * Provides common interfaces and types used across status definitions
4
+ */
5
+ import type { Locale } from '../operations/labels';
6
+ /**
7
+ * Status metadata interface
8
+ * Defines the structure for all status metadata including icons, colors, and translations
9
+ */
10
+ export interface StatusMetadata {
11
+ icon: string;
12
+ color: string;
13
+ label: {
14
+ short: {
15
+ 'us-EN': string;
16
+ 'fr-FR': string;
17
+ };
18
+ long: {
19
+ 'us-EN': string;
20
+ 'fr-FR': string;
21
+ };
22
+ };
23
+ description: {
24
+ 'us-EN': string;
25
+ 'fr-FR': string;
26
+ };
27
+ }
28
+ /**
29
+ * Generic status configuration type
30
+ * Used to define metadata for any enum-based status
31
+ */
32
+ export type StatusConfiguration<T extends string | number> = Record<T, StatusMetadata>;
33
+ /**
34
+ * Utility type for locale parameter
35
+ */
36
+ export type { Locale };
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * Shared status types for all status modules
4
+ * Provides common interfaces and types used across status definitions
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RhdHVzL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0ciLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNoYXJlZCBzdGF0dXMgdHlwZXMgZm9yIGFsbCBzdGF0dXMgbW9kdWxlc1xuICogUHJvdmlkZXMgY29tbW9uIGludGVyZmFjZXMgYW5kIHR5cGVzIHVzZWQgYWNyb3NzIHN0YXR1cyBkZWZpbml0aW9uc1xuICovXG5cbmltcG9ydCB0eXBlIHsgTG9jYWxlIH0gZnJvbSAnLi4vb3BlcmF0aW9ucy9sYWJlbHMnO1xuXG4vKipcbiAqIFN0YXR1cyBtZXRhZGF0YSBpbnRlcmZhY2VcbiAqIERlZmluZXMgdGhlIHN0cnVjdHVyZSBmb3IgYWxsIHN0YXR1cyBtZXRhZGF0YSBpbmNsdWRpbmcgaWNvbnMsIGNvbG9ycywgYW5kIHRyYW5zbGF0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YXR1c01ldGFkYXRhIHtcbiAgaWNvbjogc3RyaW5nOyAvLyBNYXRlcmlhbCBpY29uIG5hbWVcbiAgY29sb3I6IHN0cmluZzsgLy8gSGV4IGNvbG9yIG9yIENTUyBjb2xvciBuYW1lXG4gIGxhYmVsOiB7XG4gICAgc2hvcnQ6IHtcbiAgICAgICd1cy1FTic6IHN0cmluZztcbiAgICAgICdmci1GUic6IHN0cmluZztcbiAgICB9O1xuICAgIGxvbmc6IHtcbiAgICAgICd1cy1FTic6IHN0cmluZztcbiAgICAgICdmci1GUic6IHN0cmluZztcbiAgICB9O1xuICB9O1xuICBkZXNjcmlwdGlvbjoge1xuICAgICd1cy1FTic6IHN0cmluZztcbiAgICAnZnItRlInOiBzdHJpbmc7XG4gIH07XG59XG5cbi8qKlxuICogR2VuZXJpYyBzdGF0dXMgY29uZmlndXJhdGlvbiB0eXBlXG4gKiBVc2VkIHRvIGRlZmluZSBtZXRhZGF0YSBmb3IgYW55IGVudW0tYmFzZWQgc3RhdHVzXG4gKi9cbmV4cG9ydCB0eXBlIFN0YXR1c0NvbmZpZ3VyYXRpb248VCBleHRlbmRzIHN0cmluZyB8IG51bWJlcj4gPSBSZWNvcmQ8VCwgU3RhdHVzTWV0YWRhdGE+O1xuXG4vKipcbiAqIFV0aWxpdHkgdHlwZSBmb3IgbG9jYWxlIHBhcmFtZXRlclxuICovXG5leHBvcnQgdHlwZSB7IExvY2FsZSB9O1xuIl19
package/package.json CHANGED
@@ -32,7 +32,7 @@
32
32
  "publishConfig": {
33
33
  "access": "public"
34
34
  },
35
- "version": "0.0.15",
35
+ "version": "0.0.17",
36
36
  "jest": {
37
37
  "coverageProvider": "v8",
38
38
  "testMatch": [