@doctorus/common 0.0.4 → 0.0.5
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/esm/index.js +3 -0
- package/esm/operations/actions.js +51 -0
- package/esm/operations/index.js +5 -0
- package/esm/operations/operation.js +103 -0
- package/esm/operations/predefined.js +106 -0
- package/esm/operations/resources.js +135 -0
- package/esm/ssm/index.js +3 -0
- package/esm/ssm/keys.js +29 -0
- package/esm/ssm/utils.js +98 -0
- package/package.json +4 -2
- package/tsconfig.esm.json +18 -0
package/esm/index.js
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from "./ssm";
|
|
2
|
+
export * from "./operations";
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxPQUFPLENBQUM7QUFDdEIsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9zc21cIjtcbmV4cG9ydCAqIGZyb20gXCIuL29wZXJhdGlvbnNcIjtcbiJdfQ==
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Action types for operations
|
|
3
|
+
*/
|
|
4
|
+
export var Action;
|
|
5
|
+
(function (Action) {
|
|
6
|
+
// CRUD operations
|
|
7
|
+
Action["CREATE"] = "CREATE";
|
|
8
|
+
Action["READ"] = "READ";
|
|
9
|
+
Action["UPDATE"] = "UPDATE";
|
|
10
|
+
Action["DELETE"] = "DELETE";
|
|
11
|
+
Action["PUT"] = "PUT";
|
|
12
|
+
Action["LIST"] = "LIST";
|
|
13
|
+
// General actions
|
|
14
|
+
Action["MANAGE"] = "MANAGE";
|
|
15
|
+
Action["VIEW"] = "VIEW";
|
|
16
|
+
Action["SEARCH"] = "SEARCH";
|
|
17
|
+
// Access control
|
|
18
|
+
Action["GRANT"] = "GRANT";
|
|
19
|
+
Action["REVOKE"] = "REVOKE";
|
|
20
|
+
// Medical specific
|
|
21
|
+
Action["PRESCRIBE"] = "PRESCRIBE";
|
|
22
|
+
Action["DIAGNOSE"] = "DIAGNOSE";
|
|
23
|
+
Action["SCHEDULE"] = "SCHEDULE";
|
|
24
|
+
Action["CANCEL"] = "CANCEL";
|
|
25
|
+
Action["APPROVE"] = "APPROVE";
|
|
26
|
+
Action["REJECT"] = "REJECT";
|
|
27
|
+
Action["SIGN"] = "SIGN";
|
|
28
|
+
Action["VERIFY"] = "VERIFY";
|
|
29
|
+
// Medical service specific
|
|
30
|
+
Action["SET_MEDICAL_SERVICE_STATUS"] = "SET_MEDICAL_SERVICE_STATUS";
|
|
31
|
+
Action["SET_MEDICAL_SERVICE_FEES"] = "SET_MEDICAL_SERVICE_FEES";
|
|
32
|
+
// Patient specific
|
|
33
|
+
Action["UPDATE_STATUS"] = "UPDATE_STATUS";
|
|
34
|
+
Action["VIEW_PATIENTS"] = "VIEW_PATIENTS";
|
|
35
|
+
Action["PUT_PATIENT_PAYMENT"] = "PUT_PATIENT_PAYMENT";
|
|
36
|
+
Action["DELETE_PATIENT_PAYMENT"] = "DELETE_PATIENT_PAYMENT";
|
|
37
|
+
// Data operations
|
|
38
|
+
Action["EXPORT"] = "EXPORT";
|
|
39
|
+
Action["IMPORT"] = "IMPORT";
|
|
40
|
+
Action["ARCHIVE"] = "ARCHIVE";
|
|
41
|
+
Action["RESTORE"] = "RESTORE";
|
|
42
|
+
Action["SHARE"] = "SHARE";
|
|
43
|
+
Action["DOWNLOAD"] = "DOWNLOAD";
|
|
44
|
+
Action["UPLOAD"] = "UPLOAD";
|
|
45
|
+
// System operations
|
|
46
|
+
Action["LOGIN"] = "LOGIN";
|
|
47
|
+
Action["LOGOUT"] = "LOGOUT";
|
|
48
|
+
Action["CONFIGURE"] = "CONFIGURE";
|
|
49
|
+
Action["AUDIT"] = "AUDIT";
|
|
50
|
+
})(Action || (Action = {}));
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcGVyYXRpb25zL2FjdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxNQW9EWDtBQXBERCxXQUFZLE1BQU07SUFDaEIsa0JBQWtCO0lBQ2xCLDJCQUFpQixDQUFBO0lBQ2pCLHVCQUFhLENBQUE7SUFDYiwyQkFBaUIsQ0FBQTtJQUNqQiwyQkFBaUIsQ0FBQTtJQUNqQixxQkFBVyxDQUFBO0lBQ1gsdUJBQWEsQ0FBQTtJQUViLGtCQUFrQjtJQUNsQiwyQkFBaUIsQ0FBQTtJQUNqQix1QkFBYSxDQUFBO0lBQ2IsMkJBQWlCLENBQUE7SUFFakIsaUJBQWlCO0lBQ2pCLHlCQUFlLENBQUE7SUFDZiwyQkFBaUIsQ0FBQTtJQUVqQixtQkFBbUI7SUFDbkIsaUNBQXVCLENBQUE7SUFDdkIsK0JBQXFCLENBQUE7SUFDckIsK0JBQXFCLENBQUE7SUFDckIsMkJBQWlCLENBQUE7SUFDakIsNkJBQW1CLENBQUE7SUFDbkIsMkJBQWlCLENBQUE7SUFDakIsdUJBQWEsQ0FBQTtJQUNiLDJCQUFpQixDQUFBO0lBRWpCLDJCQUEyQjtJQUMzQixtRUFBeUQsQ0FBQTtJQUN6RCwrREFBcUQsQ0FBQTtJQUVyRCxtQkFBbUI7SUFDbkIseUNBQStCLENBQUE7SUFDL0IseUNBQStCLENBQUE7SUFDL0IscURBQTJDLENBQUE7SUFDM0MsMkRBQWlELENBQUE7SUFFakQsa0JBQWtCO0lBQ2xCLDJCQUFpQixDQUFBO0lBQ2pCLDJCQUFpQixDQUFBO0lBQ2pCLDZCQUFtQixDQUFBO0lBQ25CLDZCQUFtQixDQUFBO0lBQ25CLHlCQUFlLENBQUE7SUFDZiwrQkFBcUIsQ0FBQTtJQUNyQiwyQkFBaUIsQ0FBQTtJQUVqQixvQkFBb0I7SUFDcEIseUJBQWUsQ0FBQTtJQUNmLDJCQUFpQixDQUFBO0lBQ2pCLGlDQUF1QixDQUFBO0lBQ3ZCLHlCQUFlLENBQUE7QUFDakIsQ0FBQyxFQXBEVyxNQUFNLEtBQU4sTUFBTSxRQW9EakIiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEFjdGlvbiB0eXBlcyBmb3Igb3BlcmF0aW9uc1xuICovXG5leHBvcnQgZW51bSBBY3Rpb24ge1xuICAvLyBDUlVEIG9wZXJhdGlvbnNcbiAgQ1JFQVRFID0gXCJDUkVBVEVcIixcbiAgUkVBRCA9IFwiUkVBRFwiLFxuICBVUERBVEUgPSBcIlVQREFURVwiLFxuICBERUxFVEUgPSBcIkRFTEVURVwiLFxuICBQVVQgPSBcIlBVVFwiLFxuICBMSVNUID0gXCJMSVNUXCIsXG5cbiAgLy8gR2VuZXJhbCBhY3Rpb25zXG4gIE1BTkFHRSA9IFwiTUFOQUdFXCIsXG4gIFZJRVcgPSBcIlZJRVdcIixcbiAgU0VBUkNIID0gXCJTRUFSQ0hcIixcblxuICAvLyBBY2Nlc3MgY29udHJvbFxuICBHUkFOVCA9IFwiR1JBTlRcIixcbiAgUkVWT0tFID0gXCJSRVZPS0VcIixcblxuICAvLyBNZWRpY2FsIHNwZWNpZmljXG4gIFBSRVNDUklCRSA9IFwiUFJFU0NSSUJFXCIsXG4gIERJQUdOT1NFID0gXCJESUFHTk9TRVwiLFxuICBTQ0hFRFVMRSA9IFwiU0NIRURVTEVcIixcbiAgQ0FOQ0VMID0gXCJDQU5DRUxcIixcbiAgQVBQUk9WRSA9IFwiQVBQUk9WRVwiLFxuICBSRUpFQ1QgPSBcIlJFSkVDVFwiLFxuICBTSUdOID0gXCJTSUdOXCIsXG4gIFZFUklGWSA9IFwiVkVSSUZZXCIsXG5cbiAgLy8gTWVkaWNhbCBzZXJ2aWNlIHNwZWNpZmljXG4gIFNFVF9NRURJQ0FMX1NFUlZJQ0VfU1RBVFVTID0gXCJTRVRfTUVESUNBTF9TRVJWSUNFX1NUQVRVU1wiLFxuICBTRVRfTUVESUNBTF9TRVJWSUNFX0ZFRVMgPSBcIlNFVF9NRURJQ0FMX1NFUlZJQ0VfRkVFU1wiLFxuXG4gIC8vIFBhdGllbnQgc3BlY2lmaWNcbiAgVVBEQVRFX1NUQVRVUyA9IFwiVVBEQVRFX1NUQVRVU1wiLFxuICBWSUVXX1BBVElFTlRTID0gXCJWSUVXX1BBVElFTlRTXCIsXG4gIFBVVF9QQVRJRU5UX1BBWU1FTlQgPSBcIlBVVF9QQVRJRU5UX1BBWU1FTlRcIixcbiAgREVMRVRFX1BBVElFTlRfUEFZTUVOVCA9IFwiREVMRVRFX1BBVElFTlRfUEFZTUVOVFwiLFxuXG4gIC8vIERhdGEgb3BlcmF0aW9uc1xuICBFWFBPUlQgPSBcIkVYUE9SVFwiLFxuICBJTVBPUlQgPSBcIklNUE9SVFwiLFxuICBBUkNISVZFID0gXCJBUkNISVZFXCIsXG4gIFJFU1RPUkUgPSBcIlJFU1RPUkVcIixcbiAgU0hBUkUgPSBcIlNIQVJFXCIsXG4gIERPV05MT0FEID0gXCJET1dOTE9BRFwiLFxuICBVUExPQUQgPSBcIlVQTE9BRFwiLFxuXG4gIC8vIFN5c3RlbSBvcGVyYXRpb25zXG4gIExPR0lOID0gXCJMT0dJTlwiLFxuICBMT0dPVVQgPSBcIkxPR09VVFwiLFxuICBDT05GSUdVUkUgPSBcIkNPTkZJR1VSRVwiLFxuICBBVURJVCA9IFwiQVVESVRcIixcbn1cbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { Resource, MEDICAL_RESOURCES, PUBLIC_RESOURCES, isMedicalResource, isPublicResource, } from "./resources";
|
|
2
|
+
export { Action } from "./actions";
|
|
3
|
+
export { Operation, getResourceFromOperation, getActionFromOperation, } from "./operation";
|
|
4
|
+
export { Operations, getAllOperations, getOperationsByResource, getOperationsByAction, } from "./predefined";
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3BlcmF0aW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsUUFBUSxFQUNSLGlCQUFpQixFQUNqQixnQkFBZ0IsRUFDaEIsaUJBQWlCLEVBQ2pCLGdCQUFnQixHQUNqQixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ25DLE9BQU8sRUFDTCxTQUFTLEVBRVQsd0JBQXdCLEVBQ3hCLHNCQUFzQixHQUN2QixNQUFNLGFBQWEsQ0FBQztBQUNyQixPQUFPLEVBQ0wsVUFBVSxFQUNWLGdCQUFnQixFQUNoQix1QkFBdUIsRUFDdkIscUJBQXFCLEdBQ3RCLE1BQU0sY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtcbiAgUmVzb3VyY2UsXG4gIE1FRElDQUxfUkVTT1VSQ0VTLFxuICBQVUJMSUNfUkVTT1VSQ0VTLFxuICBpc01lZGljYWxSZXNvdXJjZSxcbiAgaXNQdWJsaWNSZXNvdXJjZSxcbn0gZnJvbSBcIi4vcmVzb3VyY2VzXCI7XG5leHBvcnQgeyBBY3Rpb24gfSBmcm9tIFwiLi9hY3Rpb25zXCI7XG5leHBvcnQge1xuICBPcGVyYXRpb24sXG4gIE9QRVJBVElPTixcbiAgZ2V0UmVzb3VyY2VGcm9tT3BlcmF0aW9uLFxuICBnZXRBY3Rpb25Gcm9tT3BlcmF0aW9uLFxufSBmcm9tIFwiLi9vcGVyYXRpb25cIjtcbmV4cG9ydCB7XG4gIE9wZXJhdGlvbnMsXG4gIGdldEFsbE9wZXJhdGlvbnMsXG4gIGdldE9wZXJhdGlvbnNCeVJlc291cmNlLFxuICBnZXRPcGVyYXRpb25zQnlBY3Rpb24sXG59IGZyb20gXCIuL3ByZWRlZmluZWRcIjtcbiJdfQ==
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { Action } from "./actions";
|
|
2
|
+
import { Resource } from "./resources";
|
|
3
|
+
/**
|
|
4
|
+
* Operation in RESOURCE:ACTION format
|
|
5
|
+
*/
|
|
6
|
+
export class Operation {
|
|
7
|
+
resource;
|
|
8
|
+
action;
|
|
9
|
+
/**
|
|
10
|
+
* Create operation from string
|
|
11
|
+
* @param operationString - String in RESOURCE:ACTION format
|
|
12
|
+
* @returns Operation instance or null if invalid
|
|
13
|
+
*/
|
|
14
|
+
static fromString(operationString) {
|
|
15
|
+
const parts = operationString.split(":");
|
|
16
|
+
if (parts.length !== 2) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
const [resourceStr, actionStr] = parts;
|
|
20
|
+
// Validate resource
|
|
21
|
+
if (!Object.values(Resource).includes(resourceStr)) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
// Validate action
|
|
25
|
+
if (!Object.values(Action).includes(actionStr)) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
return new Operation(resourceStr, actionStr);
|
|
29
|
+
}
|
|
30
|
+
constructor(resource, action) {
|
|
31
|
+
this.resource = resource;
|
|
32
|
+
this.action = action;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Get operation string in RESOURCE:ACTION format
|
|
36
|
+
*/
|
|
37
|
+
toString() {
|
|
38
|
+
return `${this.resource}:${this.action}`;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Check if two operations are equal
|
|
42
|
+
*/
|
|
43
|
+
equals(other) {
|
|
44
|
+
return this.resource === other.resource && this.action === other.action;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Convert to JSON representation
|
|
48
|
+
*/
|
|
49
|
+
toJSON() {
|
|
50
|
+
return {
|
|
51
|
+
resource: this.resource,
|
|
52
|
+
action: this.action,
|
|
53
|
+
operation: this.toString(),
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Extract Resource from an OPERATION string
|
|
59
|
+
* @param operation - Operation string in RESOURCE:ACTION format
|
|
60
|
+
* @returns Resource or null if invalid
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```ts
|
|
64
|
+
* getResourceFromOperation("PATIENT:READ") // Returns: Resource.PATIENT
|
|
65
|
+
* getResourceFromOperation("INVALID:ACTION") // Returns: null
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export function getResourceFromOperation(operation) {
|
|
69
|
+
const parts = operation.split(":");
|
|
70
|
+
if (parts.length !== 2) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
const [resourceStr] = parts;
|
|
74
|
+
// Validate resource
|
|
75
|
+
if (Object.values(Resource).includes(resourceStr)) {
|
|
76
|
+
return resourceStr;
|
|
77
|
+
}
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Extract Action from an OPERATION string
|
|
82
|
+
* @param operation - Operation string in RESOURCE:ACTION format
|
|
83
|
+
* @returns Action or null if invalid
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```ts
|
|
87
|
+
* getActionFromOperation("PATIENT:READ") // Returns: Action.READ
|
|
88
|
+
* getActionFromOperation("PATIENT:INVALID") // Returns: null
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
export function getActionFromOperation(operation) {
|
|
92
|
+
const parts = operation.split(":");
|
|
93
|
+
if (parts.length !== 2) {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
const [, actionStr] = parts;
|
|
97
|
+
// Validate action
|
|
98
|
+
if (Object.values(Action).includes(actionStr)) {
|
|
99
|
+
return actionStr;
|
|
100
|
+
}
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29wZXJhdGlvbnMvb3BlcmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQU92Qzs7R0FFRztBQUNILE1BQU0sT0FBTyxTQUFTO0lBNEJGO0lBQ0E7SUE1QmxCOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLGVBQXVCO1FBQ3ZDLE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDekMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3ZCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELE1BQU0sQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDO1FBRXZDLG9CQUFvQjtRQUNwQixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBdUIsQ0FBQyxFQUFFLENBQUM7WUFDL0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsa0JBQWtCO1FBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFtQixDQUFDLEVBQUUsQ0FBQztZQUN6RCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7UUFFRCxPQUFPLElBQUksU0FBUyxDQUFDLFdBQXVCLEVBQUUsU0FBbUIsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFRCxZQUNrQixRQUFrQixFQUNsQixNQUFjO1FBRGQsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNsQixXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQzdCLENBQUM7SUFFSjs7T0FFRztJQUNILFFBQVE7UUFDTixPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFlLENBQUM7SUFDeEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTSxDQUFDLEtBQWdCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxLQUFLLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLE1BQU0sQ0FBQztJQUMxRSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNO1FBQ0osT0FBTztZQUNMLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7U0FDM0IsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLFVBQVUsd0JBQXdCLENBQUMsU0FBaUI7SUFDeEQsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDdkIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUU1QixvQkFBb0I7SUFDcEIsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxXQUF1QixDQUFDLEVBQUUsQ0FBQztRQUM5RCxPQUFPLFdBQXVCLENBQUM7SUFDakMsQ0FBQztJQUVELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVEOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsU0FBaUI7SUFDdEQsTUFBTSxLQUFLLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNuQyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDdkIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxDQUFDLEVBQUUsU0FBUyxDQUFDLEdBQUcsS0FBSyxDQUFDO0lBRTVCLGtCQUFrQjtJQUNsQixJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQW1CLENBQUMsRUFBRSxDQUFDO1FBQ3hELE9BQU8sU0FBbUIsQ0FBQztJQUM3QixDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgUmVzb3VyY2UgfSBmcm9tIFwiLi9yZXNvdXJjZXNcIjtcblxuLyoqXG4gKiBPcGVyYXRpb24gc3RyaW5nIHR5cGUgaW4gUkVTT1VSQ0U6QUNUSU9OIGZvcm1hdFxuICovXG5leHBvcnQgdHlwZSBPUEVSQVRJT04gPSBgJHtSZXNvdXJjZX06JHtBY3Rpb259YDtcblxuLyoqXG4gKiBPcGVyYXRpb24gaW4gUkVTT1VSQ0U6QUNUSU9OIGZvcm1hdFxuICovXG5leHBvcnQgY2xhc3MgT3BlcmF0aW9uIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBvcGVyYXRpb24gZnJvbSBzdHJpbmdcbiAgICogQHBhcmFtIG9wZXJhdGlvblN0cmluZyAtIFN0cmluZyBpbiBSRVNPVVJDRTpBQ1RJT04gZm9ybWF0XG4gICAqIEByZXR1cm5zIE9wZXJhdGlvbiBpbnN0YW5jZSBvciBudWxsIGlmIGludmFsaWRcbiAgICovXG4gIHN0YXRpYyBmcm9tU3RyaW5nKG9wZXJhdGlvblN0cmluZzogc3RyaW5nKTogT3BlcmF0aW9uIHwgbnVsbCB7XG4gICAgY29uc3QgcGFydHMgPSBvcGVyYXRpb25TdHJpbmcuc3BsaXQoXCI6XCIpO1xuICAgIGlmIChwYXJ0cy5sZW5ndGggIT09IDIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IFtyZXNvdXJjZVN0ciwgYWN0aW9uU3RyXSA9IHBhcnRzO1xuXG4gICAgLy8gVmFsaWRhdGUgcmVzb3VyY2VcbiAgICBpZiAoIU9iamVjdC52YWx1ZXMoUmVzb3VyY2UpLmluY2x1ZGVzKHJlc291cmNlU3RyIGFzIFJlc291cmNlKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGUgYWN0aW9uXG4gICAgaWYgKCFPYmplY3QudmFsdWVzKEFjdGlvbikuaW5jbHVkZXMoYWN0aW9uU3RyIGFzIEFjdGlvbikpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgT3BlcmF0aW9uKHJlc291cmNlU3RyIGFzIFJlc291cmNlLCBhY3Rpb25TdHIgYXMgQWN0aW9uKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogUmVzb3VyY2UsXG4gICAgcHVibGljIHJlYWRvbmx5IGFjdGlvbjogQWN0aW9uLFxuICApIHt9XG5cbiAgLyoqXG4gICAqIEdldCBvcGVyYXRpb24gc3RyaW5nIGluIFJFU09VUkNFOkFDVElPTiBmb3JtYXRcbiAgICovXG4gIHRvU3RyaW5nKCk6IE9QRVJBVElPTiB7XG4gICAgcmV0dXJuIGAke3RoaXMucmVzb3VyY2V9OiR7dGhpcy5hY3Rpb259YCBhcyBPUEVSQVRJT047XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgaWYgdHdvIG9wZXJhdGlvbnMgYXJlIGVxdWFsXG4gICAqL1xuICBlcXVhbHMob3RoZXI6IE9wZXJhdGlvbik6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlID09PSBvdGhlci5yZXNvdXJjZSAmJiB0aGlzLmFjdGlvbiA9PT0gb3RoZXIuYWN0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdG8gSlNPTiByZXByZXNlbnRhdGlvblxuICAgKi9cbiAgdG9KU09OKCk6IHsgcmVzb3VyY2U6IFJlc291cmNlOyBhY3Rpb246IEFjdGlvbjsgb3BlcmF0aW9uOiBPUEVSQVRJT04gfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlc291cmNlOiB0aGlzLnJlc291cmNlLFxuICAgICAgYWN0aW9uOiB0aGlzLmFjdGlvbixcbiAgICAgIG9wZXJhdGlvbjogdGhpcy50b1N0cmluZygpLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBFeHRyYWN0IFJlc291cmNlIGZyb20gYW4gT1BFUkFUSU9OIHN0cmluZ1xuICogQHBhcmFtIG9wZXJhdGlvbiAtIE9wZXJhdGlvbiBzdHJpbmcgaW4gUkVTT1VSQ0U6QUNUSU9OIGZvcm1hdFxuICogQHJldHVybnMgUmVzb3VyY2Ugb3IgbnVsbCBpZiBpbnZhbGlkXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBnZXRSZXNvdXJjZUZyb21PcGVyYXRpb24oXCJQQVRJRU5UOlJFQURcIikgLy8gUmV0dXJuczogUmVzb3VyY2UuUEFUSUVOVFxuICogZ2V0UmVzb3VyY2VGcm9tT3BlcmF0aW9uKFwiSU5WQUxJRDpBQ1RJT05cIikgLy8gUmV0dXJuczogbnVsbFxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXNvdXJjZUZyb21PcGVyYXRpb24ob3BlcmF0aW9uOiBzdHJpbmcpOiBSZXNvdXJjZSB8IG51bGwge1xuICBjb25zdCBwYXJ0cyA9IG9wZXJhdGlvbi5zcGxpdChcIjpcIik7XG4gIGlmIChwYXJ0cy5sZW5ndGggIT09IDIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IFtyZXNvdXJjZVN0cl0gPSBwYXJ0cztcblxuICAvLyBWYWxpZGF0ZSByZXNvdXJjZVxuICBpZiAoT2JqZWN0LnZhbHVlcyhSZXNvdXJjZSkuaW5jbHVkZXMocmVzb3VyY2VTdHIgYXMgUmVzb3VyY2UpKSB7XG4gICAgcmV0dXJuIHJlc291cmNlU3RyIGFzIFJlc291cmNlO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogRXh0cmFjdCBBY3Rpb24gZnJvbSBhbiBPUEVSQVRJT04gc3RyaW5nXG4gKiBAcGFyYW0gb3BlcmF0aW9uIC0gT3BlcmF0aW9uIHN0cmluZyBpbiBSRVNPVVJDRTpBQ1RJT04gZm9ybWF0XG4gKiBAcmV0dXJucyBBY3Rpb24gb3IgbnVsbCBpZiBpbnZhbGlkXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBnZXRBY3Rpb25Gcm9tT3BlcmF0aW9uKFwiUEFUSUVOVDpSRUFEXCIpIC8vIFJldHVybnM6IEFjdGlvbi5SRUFEXG4gKiBnZXRBY3Rpb25Gcm9tT3BlcmF0aW9uKFwiUEFUSUVOVDpJTlZBTElEXCIpIC8vIFJldHVybnM6IG51bGxcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QWN0aW9uRnJvbU9wZXJhdGlvbihvcGVyYXRpb246IHN0cmluZyk6IEFjdGlvbiB8IG51bGwge1xuICBjb25zdCBwYXJ0cyA9IG9wZXJhdGlvbi5zcGxpdChcIjpcIik7XG4gIGlmIChwYXJ0cy5sZW5ndGggIT09IDIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IFssIGFjdGlvblN0cl0gPSBwYXJ0cztcblxuICAvLyBWYWxpZGF0ZSBhY3Rpb25cbiAgaWYgKE9iamVjdC52YWx1ZXMoQWN0aW9uKS5pbmNsdWRlcyhhY3Rpb25TdHIgYXMgQWN0aW9uKSkge1xuICAgIHJldHVybiBhY3Rpb25TdHIgYXMgQWN0aW9uO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG4iXX0=
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { Action } from "./actions";
|
|
2
|
+
import { Operation } from "./operation";
|
|
3
|
+
import { Resource } from "./resources";
|
|
4
|
+
/**
|
|
5
|
+
* Predefined common operations for convenience
|
|
6
|
+
*/
|
|
7
|
+
export const Operations = {
|
|
8
|
+
// Account operations
|
|
9
|
+
ACCOUNT_CREATE: new Operation(Resource.ACCOUNT, Action.CREATE),
|
|
10
|
+
ACCOUNT_READ: new Operation(Resource.ACCOUNT, Action.READ),
|
|
11
|
+
ACCOUNT_UPDATE: new Operation(Resource.ACCOUNT, Action.UPDATE),
|
|
12
|
+
ACCOUNT_DELETE: new Operation(Resource.ACCOUNT, Action.DELETE),
|
|
13
|
+
ACCOUNT_MANAGE: new Operation(Resource.ACCOUNT, Action.MANAGE),
|
|
14
|
+
// Patient operations
|
|
15
|
+
PATIENT_CREATE: new Operation(Resource.PATIENT, Action.CREATE),
|
|
16
|
+
PATIENT_READ: new Operation(Resource.PATIENT, Action.READ),
|
|
17
|
+
PATIENT_UPDATE: new Operation(Resource.PATIENT, Action.UPDATE),
|
|
18
|
+
PATIENT_DELETE: new Operation(Resource.PATIENT, Action.DELETE),
|
|
19
|
+
PATIENT_LIST: new Operation(Resource.PATIENT, Action.LIST),
|
|
20
|
+
PATIENT_VIEW: new Operation(Resource.PATIENT, Action.VIEW_PATIENTS),
|
|
21
|
+
PATIENT_UPDATE_STATUS: new Operation(Resource.PATIENT, Action.UPDATE_STATUS),
|
|
22
|
+
// Patient payment operations
|
|
23
|
+
PATIENT_PAYMENT_PUT: new Operation(Resource.PATIENT_PAYMENT, Action.PUT_PATIENT_PAYMENT),
|
|
24
|
+
PATIENT_PAYMENT_DELETE: new Operation(Resource.PATIENT_PAYMENT, Action.DELETE_PATIENT_PAYMENT),
|
|
25
|
+
// Medical service operations
|
|
26
|
+
MEDICAL_SERVICE_CREATE: new Operation(Resource.MEDICAL_SERVICE, Action.CREATE),
|
|
27
|
+
MEDICAL_SERVICE_READ: new Operation(Resource.MEDICAL_SERVICE, Action.READ),
|
|
28
|
+
MEDICAL_SERVICE_UPDATE: new Operation(Resource.MEDICAL_SERVICE, Action.UPDATE),
|
|
29
|
+
MEDICAL_SERVICE_DELETE: new Operation(Resource.MEDICAL_SERVICE, Action.DELETE),
|
|
30
|
+
MEDICAL_SERVICE_MANAGE: new Operation(Resource.MEDICAL_SERVICE, Action.MANAGE),
|
|
31
|
+
MEDICAL_SERVICE_SET_STATUS: new Operation(Resource.MEDICAL_SERVICE_STATUS, Action.SET_MEDICAL_SERVICE_STATUS),
|
|
32
|
+
MEDICAL_SERVICE_SET_FEES: new Operation(Resource.MEDICAL_SERVICE_FEES, Action.SET_MEDICAL_SERVICE_FEES),
|
|
33
|
+
// Medical record operations
|
|
34
|
+
MEDICAL_RECORD_CREATE: new Operation(Resource.MEDICAL_RECORD, Action.CREATE),
|
|
35
|
+
MEDICAL_RECORD_READ: new Operation(Resource.MEDICAL_RECORD, Action.READ),
|
|
36
|
+
MEDICAL_RECORD_UPDATE: new Operation(Resource.MEDICAL_RECORD, Action.UPDATE),
|
|
37
|
+
MEDICAL_RECORD_DELETE: new Operation(Resource.MEDICAL_RECORD, Action.DELETE),
|
|
38
|
+
MEDICAL_RECORD_SHARE: new Operation(Resource.MEDICAL_RECORD, Action.SHARE),
|
|
39
|
+
MEDICAL_RECORD_EXPORT: new Operation(Resource.MEDICAL_RECORD, Action.EXPORT),
|
|
40
|
+
// Prescription operations
|
|
41
|
+
PRESCRIPTION_CREATE: new Operation(Resource.PRESCRIPTION, Action.CREATE),
|
|
42
|
+
PRESCRIPTION_READ: new Operation(Resource.PRESCRIPTION, Action.READ),
|
|
43
|
+
PRESCRIPTION_UPDATE: new Operation(Resource.PRESCRIPTION, Action.UPDATE),
|
|
44
|
+
PRESCRIPTION_SIGN: new Operation(Resource.PRESCRIPTION, Action.SIGN),
|
|
45
|
+
PRESCRIPTION_PRESCRIBE: new Operation(Resource.PRESCRIPTION, Action.PRESCRIBE),
|
|
46
|
+
// Diagnosis operations
|
|
47
|
+
DIAGNOSIS_CREATE: new Operation(Resource.DIAGNOSIS, Action.CREATE),
|
|
48
|
+
DIAGNOSIS_READ: new Operation(Resource.DIAGNOSIS, Action.READ),
|
|
49
|
+
DIAGNOSIS_UPDATE: new Operation(Resource.DIAGNOSIS, Action.UPDATE),
|
|
50
|
+
DIAGNOSIS_DIAGNOSE: new Operation(Resource.DIAGNOSIS, Action.DIAGNOSE),
|
|
51
|
+
DIAGNOSIS_VERIFY: new Operation(Resource.DIAGNOSIS, Action.VERIFY),
|
|
52
|
+
// Medical history operations
|
|
53
|
+
MEDICAL_HISTORY_CREATE: new Operation(Resource.MEDICAL_HISTORY, Action.CREATE),
|
|
54
|
+
MEDICAL_HISTORY_READ: new Operation(Resource.MEDICAL_HISTORY, Action.READ),
|
|
55
|
+
MEDICAL_HISTORY_UPDATE: new Operation(Resource.MEDICAL_HISTORY, Action.UPDATE),
|
|
56
|
+
// Document operations
|
|
57
|
+
UPLOADED_DOCUMENT_CREATE: new Operation(Resource.UPLOADED_DOCUMENT, Action.CREATE),
|
|
58
|
+
UPLOADED_DOCUMENT_READ: new Operation(Resource.UPLOADED_DOCUMENT, Action.READ),
|
|
59
|
+
UPLOADED_DOCUMENT_DELETE: new Operation(Resource.UPLOADED_DOCUMENT, Action.DELETE),
|
|
60
|
+
GENERATED_DOCUMENT_CREATE: new Operation(Resource.GENERATED_DOCUMENT, Action.CREATE),
|
|
61
|
+
GENERATED_DOCUMENT_READ: new Operation(Resource.GENERATED_DOCUMENT, Action.READ),
|
|
62
|
+
// Medical service scheduling operations (appointments)
|
|
63
|
+
MEDICAL_SERVICE_SCHEDULE: new Operation(Resource.MEDICAL_SERVICE, Action.SCHEDULE),
|
|
64
|
+
MEDICAL_SERVICE_CANCEL: new Operation(Resource.MEDICAL_SERVICE, Action.CANCEL),
|
|
65
|
+
MEDICAL_SERVICE_LIST: new Operation(Resource.MEDICAL_SERVICE, Action.LIST),
|
|
66
|
+
// User operations
|
|
67
|
+
USER_CREATE: new Operation(Resource.USER, Action.CREATE),
|
|
68
|
+
USER_READ: new Operation(Resource.USER, Action.READ),
|
|
69
|
+
USER_UPDATE: new Operation(Resource.USER, Action.UPDATE),
|
|
70
|
+
USER_DELETE: new Operation(Resource.USER, Action.DELETE),
|
|
71
|
+
USER_LIST: new Operation(Resource.USER, Action.LIST),
|
|
72
|
+
USER_LOGIN: new Operation(Resource.USER, Action.LOGIN),
|
|
73
|
+
USER_LOGOUT: new Operation(Resource.USER, Action.LOGOUT),
|
|
74
|
+
// Membership operations
|
|
75
|
+
MEMBERSHIP_CREATE: new Operation(Resource.MEMBERSHIP, Action.CREATE),
|
|
76
|
+
MEMBERSHIP_READ: new Operation(Resource.MEMBERSHIP, Action.READ),
|
|
77
|
+
MEMBERSHIP_UPDATE: new Operation(Resource.MEMBERSHIP, Action.UPDATE),
|
|
78
|
+
MEMBERSHIP_DELETE: new Operation(Resource.MEMBERSHIP, Action.DELETE),
|
|
79
|
+
// Audit log operations
|
|
80
|
+
AUDIT_LOG_CREATE: new Operation(Resource.AUDIT_LOG, Action.CREATE),
|
|
81
|
+
AUDIT_LOG_READ: new Operation(Resource.AUDIT_LOG, Action.READ),
|
|
82
|
+
AUDIT_LOG_LIST: new Operation(Resource.AUDIT_LOG, Action.LIST),
|
|
83
|
+
AUDIT_LOG_AUDIT: new Operation(Resource.AUDIT_LOG, Action.AUDIT),
|
|
84
|
+
// System operations
|
|
85
|
+
SYSTEM_CONFIGURE: new Operation(Resource.SYSTEM, Action.CONFIGURE),
|
|
86
|
+
SYSTEM_AUDIT: new Operation(Resource.SYSTEM, Action.AUDIT),
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* Get all predefined operations as an array
|
|
90
|
+
*/
|
|
91
|
+
export function getAllOperations() {
|
|
92
|
+
return Object.values(Operations);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Get all operations for a specific resource
|
|
96
|
+
*/
|
|
97
|
+
export function getOperationsByResource(resource) {
|
|
98
|
+
return getAllOperations().filter((op) => op.resource === resource);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Get all operations for a specific action
|
|
102
|
+
*/
|
|
103
|
+
export function getOperationsByAction(action) {
|
|
104
|
+
return getAllOperations().filter((op) => op.action === action);
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJlZGVmaW5lZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9vcGVyYXRpb25zL3ByZWRlZmluZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUNuQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFdkM7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIscUJBQXFCO0lBQ3JCLGNBQWMsRUFBRSxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDOUQsWUFBWSxFQUFFLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQztJQUMxRCxjQUFjLEVBQUUsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQzlELGNBQWMsRUFBRSxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDOUQsY0FBYyxFQUFFLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUU5RCxxQkFBcUI7SUFDckIsY0FBYyxFQUFFLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUM5RCxZQUFZLEVBQUUsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDO0lBQzFELGNBQWMsRUFBRSxJQUFJLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUM7SUFDOUQsY0FBYyxFQUFFLElB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LEVBQUUsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQztBQUNyRSxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQUMsTUFBYztJQUNsRCxPQUFPLGdCQUFnQixFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxDQUFDO0FBQ2pFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb24gfSBmcm9tIFwiLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9vcGVyYXRpb25cIjtcbmltcG9ydCB7IFJlc291cmNlIH0gZnJvbSBcIi4vcmVzb3VyY2VzXCI7XG5cbi8qKlxuICogUHJlZGVmaW5lZCBjb21tb24gb3BlcmF0aW9ucyBmb3IgY29udmVuaWVuY2VcbiAqL1xuZXhwb3J0IGNvbnN0IE9wZXJhdGlvbnMgPSB7XG4gIC8vIEFjY291bnQgb3BlcmF0aW9uc1xuICBBQ0NPVU5UX0NSRUFURTogbmV3IE9wZXJhdGlvbihSZXNvdXJjZS5BQ0NPVU5ULCBBY3Rpb24uQ1JFQVRFKSxcbiAgQUNDT1VOVF9SRUFEOiBuZXcgT3BlcmF0aW9uKFJlc291cmNlLkFDQ09VTlQsIEFjdGlvbi5SRUFEKSxcbiAgQUNDT1VOVF9VUERBVEU6IG5ldyBPcGVyYXRpb24oUmVzb3VyY2UuQUNDT1VOVCwgQWN0aW9uLlVQREFURSksXG4gIEFDQ09VTlRfREVMRVRFOiBuZXcgT3BlcmF0aW9uKFJlc291cmNlLkFDQ09VTlQsIEFjdGlvbi5ERUxFVEUpLFxuICBBQ0NPVU5UX01BTkFHRTogbmV3IE9wZXJhdGlvbihSZXNvdXJjZS5BQ0NPVU5ULCBBY3Rpb24uTUFOQUdFKSxcblxuICAvLyBQYXRpZW50IG9wZXJhdGlvbnNcbiAgUEFUSUVOVF9DUkVBVEU6IG5ldyBPcGVyYXRpb24oUmVzb3VyY2UuUEFUSUVOVCwgQWN0aW9uLkNSRUFURSksXG4gIFBBVElFTlRfUkVBRDogbmV3IE9wZXJhdGlvbihSZXNvdXJjZS5QQVRJRU5ULCBBY3Rpb24uUkVBRCksXG4gIFBBVElFTlRfVVBEQVRFOiBuZXcgT3BlcmF0aW9uKFJlc291cmNlLlBBVElFTlQsIEFjdGlvbi5VUERBVEUpLFxuICBQQVRJRU5UX0RFTEVURTogbmV3IE9wZXJhdGlvbihSZXNvdXJjZS5QQVRJRU5ULCBBY3Rpb24uREVMRVRFKSxcbiAgUEFUSUVOVF9MSVNUOiBuZXcgT3BlcmF0aW9uKFJlc291cmNlLlBBVElFTlQsIEFjdGlvbi5MSVNUKSxcbiAgUEFUSUVOVF9WSUVXOiBuZXcgT3BlcmF0aW9uKFJlc291cmNlLlBBVElFTlQsIEFjdGlvbi5WSUVXX1BBVElFTlRTKSxcbiAgUEFUSUVOVF9VUERBVEVfU1RBVFVTOiBuZXcgT3BlcmF0aW9uKFJlc291cmNlLlBBVElFTlQsIEFjdGlvbi5VUERBVEVfU1RBVFVTKSxcblxuICAvLyBQYXRpZW50IHBheW1lbnQgb3BlcmF0aW9uc1xuICBQQVRJRU5UX1BBWU1FTlRfUFVUOiBuZXcgT3BlcmF0aW9uKFxuICAgIFJlc291cmNlLlBBVElFTlRfUEFZTUVOVCxcbiAgICBBY3Rpb24uUFVUX1BBVElFTlRfUEFZTUVOVCxcbiAgKSxcbiAgUEFUSUVOVF9QQVlNRU5UX0RFTEVURTogbmV3IE9wZXJhdGlvbihcbiAgICBSZXNvdXJjZS5QQVRJRU5UX1BBWU1FTlQsXG4gICAgQWN0aW9uLkRFTEVURV9QQVRJRU5UX1BBWU1FTlQsXG4gICksXG5cbiAgLy8gTWVkaWNhbCBzZXJ2aWNlIG9wZXJhdGlvbnNcbiAgTUVESUNBTF9TRVJWSUNFX0NSRUFURTogbmV3IE9wZXJhdGlvbihcbiAgICBSZXNvdXJjZS5NRURJQ0FMX1NFUlZJQ0UsXG4gICAgQWN0aW9uLkNSRUFURSxcbiAgKSxcbiAgTUVESUNBTF9TRVJWSUNFX1JFQUQ6IG5ldyBPcGVyYXRpb24oUmVzb3VyY2UuTUVESUNBTF9TRVJWSUNFLCBBY3Rpb24uUkVBRCksXG4gIE1FRElDQUxfU0VSVklDRV9VUERBVEU6IG5ldyBPcGVyYXRpb24oXG4gICAgUmVzb3VyY2UuTUVESUNBTF9TRVJWSUNFLFxuICAgIEFjdGlvbi5VUERBVEUsXG4gICksXG4gIE1FRElDQUxfU0VSVklDRV9ERUxFVEU6IG5ldyBPcGVyYXRpb24oXG4gICAgUmVzb3VyY2UuTUVESUNBTF9TRVJWSUNFLFxuICAgIEFjdGlvbi5ERUxFVEUsXG4gICksXG4gIE1FRElDQUxfU0VSVklDRV9NQU5BR0U6IG5ldyBPcGVyYXRpb24oXG4gICAgUmVzb3VyY2UuTUVESUNBTF9TRVJWSUNFLFxuICAgIEFjdGlvbi5NQU5BR0UsXG4gICksXG4gIE1FRElDQUxfU0VSVklDRV9TRVRfU1RBVFVTOiBuZXcgT3BlcmF0aW9uKFxuICAgIFJlc291cmNlLk1FRElDQUxfU0VSVklDRV9TVEFUVVMsXG4gICAgQWN0aW9uLlNFVF9NRURJQ0FMX1NFUlZJQ0VfU1RBVFVTLFxuICApLFxuICBNRURJQ0FMX1NFUlZJQ0VfU0VUX0ZFRVM6IG5ldyBPcGVyYXRpb24oXG4gICAgUmVzb3VyY2UuTUVESUNBTF9TRVJWSUNFX0ZFRVMsXG4gICAgQWN0aW9uLlNFVF9NRURJQ0FMX1NFUlZJQ0VfRkVFUyxcbiAgKSxcblxuICAvLyBNZWRpY2FsIHJlY29yZCBvcGVyYXRpb25zXG4gIE1FRElDQUxfUkVDT1JEX0NSRUFURTogbmV3IE9wZXJhdGlvbihSZXNvdXJjZS5NRURJQ0FMX1JFQ09SRCwgQWN0aW9uLkNSRUFURSksXG4gIE1FRElDQUxfUkVDT1JEX1JFQUQ6IG5ldyBPcGVyYXRpb24oUmVzb3VyY2UuTUVESUNBTF9SRUNPUkQsIEFjdGlvbi5SRUFEKSxcbiAgTUVESUNBTF9SRUNPUkRfVVBEQVRFOiBuZXcgT3BlcmF0aW9uKFJlc291cmNlLk1FRElDQUxfUkVDT1JELCBBY3Rpb24uVVBEQVRFKSxcbiAgTUVESUNBTF9SRUNPUkRfREVMRVRFOiBuZXcgT3BlcmF0aW9uKFJlc291cmNlLk1FRElDQUxfUkVDT1JELCBBY3Rpb24uREVMRVRFKSxcbiAgTUVESUNBTF9SRUNPUkRfU0hBUkU6IG5ldyBPcGVyYXRpb24oUmVzb3VyY2UuTUVESUNBTF9SRUNPUkQsIEFjdGlvbi5TSEFSRSksXG4gIE1FRElDQUxfUkVDT1JEX0VYUE9SVDogbmV3IE9wZXJhdGlvbihSZXNvdXJjZS5NRURJQ0FMX1JFQ09SRCwgQWN0aW9uLkVYUE9SVCksXG5cbiAgLy8gUHJlc2NyaXB0aW9uIG9wZXJhdGlvbnNcbiAgUFJFU0NSSVBUSU9OX0NSRUFURTogbmV3IE9wZXJhdGlvbihSZXNvdXJjZS5QUkVTQ1JJUFRJT04sIEFjdGlvbi5DUkVBVEUpLFxuICBQUkVTQ1JJUFRJT05fUkVBRDogbmV3IE9wZXJhdGlvbihSZXNvdXJjZS5QUkVTQ1JJUFRJT04sIEFjdGlvbi5SRUFEKSxcbiAgUFJFU0NSSVBUSU9OX1VQREFURTogbmV3IE9wZXJhdGlvbihSZXNvdXJjZS5QUkVTQ1JJUFRJT04sIEFjdGlvbi5VUERBVEUpLFxuICBQUkVTQ1JJUFRJT05fU0lHTjogbmV3IE9wZXJhdGlvbihSZXNvdXJjZS5QUkVTQ1JJUFRJT04sIEFjdGlvbi5TSUdOKSxcbiAgUFJFU0NSSVBUSU9OX1BSRVNDUklCRTogbmV3IE9wZXJhdGlvbihcbiAgICBSZXNvdXJjZS5QUkVTQ1JJUFRJT04sXG4gICAgQWN0aW9uLlBSRVNDUklCRSxcbiAgKSxcblxuICAvLyBEaWFnbm9zaXMgb3BlcmF0aW9uc1xuICBESUFHTk9TSVNfQ1JFQVRFOiBuZXcgT3BlcmF0aW9uKFJlc291cmNlLkRJQUdOT1NJUywgQWN0aW9uLkNSRUFURSksXG4gIERJQUdOT1NJU19SRUFEOiBuZXcgT3BlcmF0aW9uKFJlc291cmNlLkRJQUdOT1NJUywgQWN0aW9uLlJFQUQpLFxuICBESUFHTk9TSVNfVVBEQVRFOiBuZXcgT3BlcmF0aW9uKFJlc291cmNlLkRJQUdOT1NJUywgQWN0aW9uLlVQREFURSksXG4gIERJQUdOT1NJU19ESUFHTk9TRTogbmV3IE9wZXJhdGlvbihSZXNvdXJjZS5ESUFHTk9TSVMsIEFjdGlvbi5ESUFHTk9TRSksXG4gIERJQUdOT1NJU19WRVJJRlk6IG5ldyBPcGVyYXRpb24oUmVzb3VyY2UuRElBR05PU0lTLCBBY3Rpb24uVkVSSUZZKSxcblxuICAvLyBNZWRpY2FsIGhpc3Rvcnkgb3BlcmF0aW9uc1xuICBNRURJQ0FMX0hJU1RPUllfQ1JFQVRFOiBuZXcgT3BlcmF0aW9uKFxuICAgIFJlc291cmNlLk1FRElDQUxfSElTVE9SWSxcbiAgICBBY3Rpb24uQ1JFQVRFLFxuICApLFxuICBNRURJQ0FMX0hJU1RPUllfUkVBRDogbmV3IE9wZXJhdGlvbihSZXNvdXJjZS5NRURJQ0FMX0hJU1RPUlksIEFjdGlvbi5SRUFEKSxcbiAgTUVESUNBTF9ISVNUT1JZX1VQREFURTogbmV3IE9wZXJhdGlvbihcbiAgICBSZXNvdXJjZS5NRURJQ0FMX0hJU1RPUlksXG4gICAgQWN0aW9uLlVQREFURSxcbiAgKSxcblxuICAvLyBEb2N1bWVudCBvcGVyYXRpb25zXG4gIFVQTE9BREVEX0RPQ1VNRU5UX0NSRUFURTogbmV3IE9wZXJhdGlvbihcbiAgICBSZXNvdXJjZS5VUExPQURFRF9ET0NVTUVOVCxcbiAgICBBY3Rpb24uQ1JFQVRFLFxuICApLFxuICBVUExPQURFRF9ET0NVTUVOVF9SRUFEOiBuZXcgT3BlcmF0aW9uKFxuICAgIFJlc291cmNlLlVQTE9BREVEX0RPQ1VNRU5ULFxuICAgIEFjdGlvbi5SRUFELFxuICApLFxuICBVUExPQURFRF9ET0NVTUVOVF9ERUxFVEU6IG5ldyBPcGVyYXRpb24oXG4gICAgUmVzb3VyY2UuVVBMT0FERURfRE9DVU1FTlQsXG4gICAgQWN0aW9uLkRFTEVURSxcbiAgKSxcbiAgR0VORVJBVEVEX0RPQ1VNRU5UX0NSRUFURTogbmV3IE9wZXJhdGlvbihcbiAgICBSZXNvdXJjZS5HRU5FUkFURURfRE9DVU1FTlQsXG4gICAgQWN0aW9uLkNSRUFURSxcbiAgKSxcbiAgR0VORVJBVEVEX0RPQ1VNRU5UX1JFQUQ6IG5ldyBPcGVyYXRpb24oXG4gICAgUmVzb3VyY2UuR0VORVJBVEVEX0RPQ1VNRU5ULFxuICAgIEFjdGlvbi5SRUFELFxuICApLFxuXG4gIC8vIE1lZGljYWwgc2VydmljZSBzY2hlZHVsaW5nIG9wZXJhdGlvbnMgKGFwcG9pbnRtZW50cylcbiAgTUVESUNBTF9TRVJWSUNFX1NDSEVEVUxFOiBuZXcgT3BlcmF0aW9uKFxuICAgIFJlc291cmNlLk1FRElDQUxfU0VSVklDRSxcbiAgICBBY3Rpb24uU0NIRURVTEUsXG4gICksXG4gIE1FRElDQUxfU0VSVklDRV9DQU5DRUw6IG5ldyBPcGVyYXRpb24oXG4gICAgUmVzb3VyY2UuTUVESUNBTF9TRVJWSUNFLFxuICAgIEFjdGlvbi5DQU5DRUwsXG4gICksXG4gIE1FRElDQUxfU0VSVklDRV9MSVNUOiBuZXcgT3BlcmF0aW9uKFJlc291cmNlLk1FRElDQUxfU0VSVklDRSwgQWN0aW9uLkxJU1QpLFxuXG4gIC8vIFVzZXIgb3BlcmF0aW9uc1xuICBVU0VSX0NSRUFURTogbmV3IE9wZXJhdGlvbihSZXNvdXJjZS5VU0VSLCBBY3Rpb24uQ1JFQVRFKSxcbiAgVVNFUl9SRUFEOiBuZXcgT3BlcmF0aW9uKFJlc291cmNlLlVTRVIsIEFjdGlvbi5SRUFEKSxcbiAgVVNFUl9VUERBVEU6IG5ldyBPcGVyYXRpb24oUmVzb3VyY2UuVVNFUiwgQWN0aW9uLlVQREFURSksXG4gIFVTRVJfREVMRVRFOiBuZXcgT3BlcmF0aW9uKFJlc291cmNlLlVTRVIsIEFjdGlvbi5ERUxFVEUpLFxuICBVU0VSX0xJU1Q6IG5ldyBPcGVyYXRpb24oUmVzb3VyY2UuVVNFUiwgQWN0aW9uLkxJU1QpLFxuICBVU0VSX0xPR0lOOiBuZXcgT3BlcmF0aW9uKFJlc291cmNlLlVTRVIsIEFjdGlvbi5MT0dJTiksXG4gIFVTRVJfTE9HT1VUOiBuZXcgT3BlcmF0aW9uKFJlc291cmNlLlVTRVIsIEFjdGlvbi5MT0dPVVQpLFxuXG4gIC8vIE1lbWJlcnNoaXAgb3BlcmF0aW9uc1xuICBNRU1CRVJTSElQX0NSRUFURTogbmV3IE9wZXJhdGlvbihSZXNvdXJjZS5NRU1CRVJTSElQLCBBY3Rpb24uQ1JFQVRFKSxcbiAgTUVNQkVSU0hJUF9SRUFEOiBuZXcgT3BlcmF0aW9uKFJlc291cmNlLk1FTUJFUlNISVAsIEFjdGlvbi5SRUFEKSxcbiAgTUVNQkVSU0hJUF9VUERBVEU6IG5ldyBPcGVyYXRpb24oUmVzb3VyY2UuTUVNQkVSU0hJUCwgQWN0aW9uLlVQREFURSksXG4gIE1FTUJFUlNISVBfREVMRVRFOiBuZXcgT3BlcmF0aW9uKFJlc291cmNlLk1FTUJFUlNISVAsIEFjdGlvbi5ERUxFVEUpLFxuXG4gIC8vIEF1ZGl0IGxvZyBvcGVyYXRpb25zXG4gIEFVRElUX0xPR19DUkVBVEU6IG5ldyBPcGVyYXRpb24oUmVzb3VyY2UuQVVESVRfTE9HLCBBY3Rpb24uQ1JFQVRFKSxcbiAgQVVESVRfTE9HX1JFQUQ6IG5ldyBPcGVyYXRpb24oUmVzb3VyY2UuQVVESVRfTE9HLCBBY3Rpb24uUkVBRCksXG4gIEFVRElUX0xPR19MSVNUOiBuZXcgT3BlcmF0aW9uKFJlc291cmNlLkFVRElUX0xPRywgQWN0aW9uLkxJU1QpLFxuICBBVURJVF9MT0dfQVVESVQ6IG5ldyBPcGVyYXRpb24oUmVzb3VyY2UuQVVESVRfTE9HLCBBY3Rpb24uQVVESVQpLFxuXG4gIC8vIFN5c3RlbSBvcGVyYXRpb25zXG4gIFNZU1RFTV9DT05GSUdVUkU6IG5ldyBPcGVyYXRpb24oUmVzb3VyY2UuU1lTVEVNLCBBY3Rpb24uQ09ORklHVVJFKSxcbiAgU1lTVEVNX0FVRElUOiBuZXcgT3BlcmF0aW9uKFJlc291cmNlLlNZU1RFTSwgQWN0aW9uLkFVRElUKSxcbn0gYXMgY29uc3Q7XG5cbi8qKlxuICogR2V0IGFsbCBwcmVkZWZpbmVkIG9wZXJhdGlvbnMgYXMgYW4gYXJyYXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsbE9wZXJhdGlvbnMoKTogT3BlcmF0aW9uW10ge1xuICByZXR1cm4gT2JqZWN0LnZhbHVlcyhPcGVyYXRpb25zKTtcbn1cblxuLyoqXG4gKiBHZXQgYWxsIG9wZXJhdGlvbnMgZm9yIGEgc3BlY2lmaWMgcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE9wZXJhdGlvbnNCeVJlc291cmNlKHJlc291cmNlOiBSZXNvdXJjZSk6IE9wZXJhdGlvbltdIHtcbiAgcmV0dXJuIGdldEFsbE9wZXJhdGlvbnMoKS5maWx0ZXIoKG9wKSA9PiBvcC5yZXNvdXJjZSA9PT0gcmVzb3VyY2UpO1xufVxuXG4vKipcbiAqIEdldCBhbGwgb3BlcmF0aW9ucyBmb3IgYSBzcGVjaWZpYyBhY3Rpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldE9wZXJhdGlvbnNCeUFjdGlvbihhY3Rpb246IEFjdGlvbik6IE9wZXJhdGlvbltdIHtcbiAgcmV0dXJuIGdldEFsbE9wZXJhdGlvbnMoKS5maWx0ZXIoKG9wKSA9PiBvcC5hY3Rpb24gPT09IGFjdGlvbik7XG59XG4iXX0=
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resource types for operations
|
|
3
|
+
*/
|
|
4
|
+
export var Resource;
|
|
5
|
+
(function (Resource) {
|
|
6
|
+
// Account & Ownership
|
|
7
|
+
Resource["ACCOUNT"] = "ACCOUNT";
|
|
8
|
+
Resource["ACCOUNT_OWNERSHIP"] = "ACCOUNT_OWNERSHIP";
|
|
9
|
+
Resource["ACCOUNT_PREFERENCES"] = "ACCOUNT_PREFERENCES";
|
|
10
|
+
// User & Contact
|
|
11
|
+
Resource["USER"] = "USER";
|
|
12
|
+
Resource["CONTACT"] = "CONTACT";
|
|
13
|
+
// Patient resources
|
|
14
|
+
Resource["PATIENT"] = "PATIENT";
|
|
15
|
+
Resource["PATIENT_MEDICAL_NOTES"] = "PATIENT_MEDICAL_NOTES";
|
|
16
|
+
Resource["PATIENT_MEDICAL_PROPERTIES"] = "PATIENT_MEDICAL_PROPERTIES";
|
|
17
|
+
Resource["PATIENT_PUBLIC_PROPERTIES"] = "PATIENT_PUBLIC_PROPERTIES";
|
|
18
|
+
Resource["PATIENT_PAYMENT"] = "PATIENT_PAYMENT";
|
|
19
|
+
// Medical Service
|
|
20
|
+
Resource["MEDICAL_SERVICE"] = "MEDICAL_SERVICE";
|
|
21
|
+
Resource["MEDICAL_SERVICE_NOTE"] = "MEDICAL_SERVICE_NOTE";
|
|
22
|
+
Resource["MEDICAL_SERVICE_SCHEDULE"] = "MEDICAL_SERVICE_SCHEDULE";
|
|
23
|
+
Resource["MEDICAL_SERVICE_FEES"] = "MEDICAL_SERVICE_FEES";
|
|
24
|
+
Resource["MEDICAL_SERVICE_STATUS"] = "MEDICAL_SERVICE_STATUS";
|
|
25
|
+
// Medical resources
|
|
26
|
+
Resource["MEDICAL_NOTE"] = "MEDICAL_NOTE";
|
|
27
|
+
Resource["MEDICAL_RECORD"] = "MEDICAL_RECORD";
|
|
28
|
+
Resource["MEDICAL_HISTORY"] = "MEDICAL_HISTORY";
|
|
29
|
+
Resource["MEDICAL_HISTORY_MODEL"] = "MEDICAL_HISTORY_MODEL";
|
|
30
|
+
Resource["PRESCRIPTION"] = "PRESCRIPTION";
|
|
31
|
+
Resource["DIAGNOSIS"] = "DIAGNOSIS";
|
|
32
|
+
Resource["OBSERVATION"] = "OBSERVATION";
|
|
33
|
+
Resource["MEDICATION"] = "MEDICATION";
|
|
34
|
+
Resource["ALLERGY"] = "ALLERGY";
|
|
35
|
+
Resource["IMMUNIZATION"] = "IMMUNIZATION";
|
|
36
|
+
Resource["PROCEDURE"] = "PROCEDURE";
|
|
37
|
+
// Clinical & Measurements
|
|
38
|
+
Resource["CLINICAL_NOTE"] = "CLINICAL_NOTE";
|
|
39
|
+
Resource["VITAL_SIGNS"] = "VITAL_SIGNS";
|
|
40
|
+
Resource["MEASURE_MODEL"] = "MEASURE_MODEL";
|
|
41
|
+
Resource["CALCULATED_MEASURE_MODEL"] = "CALCULATED_MEASURE_MODEL";
|
|
42
|
+
// Documents
|
|
43
|
+
Resource["UPLOADED_DOCUMENT"] = "UPLOADED_DOCUMENT";
|
|
44
|
+
Resource["DOCUMENT_LAYOUT"] = "DOCUMENT_LAYOUT";
|
|
45
|
+
Resource["GENERATED_DOCUMENT"] = "GENERATED_DOCUMENT";
|
|
46
|
+
Resource["DOCUMENT_MODEL"] = "DOCUMENT_MODEL";
|
|
47
|
+
Resource["SNIPPET"] = "SNIPPET";
|
|
48
|
+
// Scheduling & Location
|
|
49
|
+
Resource["LOCATION"] = "LOCATION";
|
|
50
|
+
Resource["TASK_TYPE"] = "TASK_TYPE";
|
|
51
|
+
// Diagnostic
|
|
52
|
+
Resource["LAB_RESULT"] = "LAB_RESULT";
|
|
53
|
+
Resource["IMAGING"] = "IMAGING";
|
|
54
|
+
// Membership & Settings
|
|
55
|
+
Resource["MEMBERSHIP"] = "MEMBERSHIP";
|
|
56
|
+
Resource["SETTINGS"] = "SETTINGS";
|
|
57
|
+
// System
|
|
58
|
+
Resource["NOTIFICATION"] = "NOTIFICATION";
|
|
59
|
+
Resource["REPORT"] = "REPORT";
|
|
60
|
+
Resource["AUDIT_LOG"] = "AUDIT_LOG";
|
|
61
|
+
Resource["SYSTEM"] = "SYSTEM";
|
|
62
|
+
// Generic resources
|
|
63
|
+
Resource["PUBLIC_RESOURCE"] = "PUBLIC_RESOURCE";
|
|
64
|
+
Resource["MEDICAL_RESOURCE"] = "MEDICAL_RESOURCE";
|
|
65
|
+
})(Resource || (Resource = {}));
|
|
66
|
+
/**
|
|
67
|
+
* Medical resources - require special access control
|
|
68
|
+
*/
|
|
69
|
+
export const MEDICAL_RESOURCES = [
|
|
70
|
+
Resource.PATIENT,
|
|
71
|
+
Resource.PATIENT_MEDICAL_NOTES,
|
|
72
|
+
Resource.PATIENT_MEDICAL_PROPERTIES,
|
|
73
|
+
Resource.PATIENT_PAYMENT,
|
|
74
|
+
Resource.MEDICAL_SERVICE,
|
|
75
|
+
Resource.MEDICAL_SERVICE_NOTE,
|
|
76
|
+
Resource.MEDICAL_SERVICE_SCHEDULE,
|
|
77
|
+
Resource.MEDICAL_SERVICE_FEES,
|
|
78
|
+
Resource.MEDICAL_SERVICE_STATUS,
|
|
79
|
+
Resource.MEDICAL_NOTE,
|
|
80
|
+
Resource.MEDICAL_RECORD,
|
|
81
|
+
Resource.MEDICAL_HISTORY,
|
|
82
|
+
Resource.MEDICAL_HISTORY_MODEL,
|
|
83
|
+
Resource.PRESCRIPTION,
|
|
84
|
+
Resource.DIAGNOSIS,
|
|
85
|
+
Resource.OBSERVATION,
|
|
86
|
+
Resource.MEDICATION,
|
|
87
|
+
Resource.ALLERGY,
|
|
88
|
+
Resource.IMMUNIZATION,
|
|
89
|
+
Resource.PROCEDURE,
|
|
90
|
+
Resource.CLINICAL_NOTE,
|
|
91
|
+
Resource.VITAL_SIGNS,
|
|
92
|
+
Resource.MEASURE_MODEL,
|
|
93
|
+
Resource.CALCULATED_MEASURE_MODEL,
|
|
94
|
+
Resource.LAB_RESULT,
|
|
95
|
+
Resource.IMAGING,
|
|
96
|
+
Resource.MEDICAL_RESOURCE,
|
|
97
|
+
];
|
|
98
|
+
/**
|
|
99
|
+
* Public resources - standard access control
|
|
100
|
+
*/
|
|
101
|
+
export const PUBLIC_RESOURCES = [
|
|
102
|
+
Resource.ACCOUNT,
|
|
103
|
+
Resource.ACCOUNT_OWNERSHIP,
|
|
104
|
+
Resource.ACCOUNT_PREFERENCES,
|
|
105
|
+
Resource.USER,
|
|
106
|
+
Resource.CONTACT,
|
|
107
|
+
Resource.PATIENT_PUBLIC_PROPERTIES,
|
|
108
|
+
Resource.UPLOADED_DOCUMENT,
|
|
109
|
+
Resource.DOCUMENT_LAYOUT,
|
|
110
|
+
Resource.GENERATED_DOCUMENT,
|
|
111
|
+
Resource.DOCUMENT_MODEL,
|
|
112
|
+
Resource.SNIPPET,
|
|
113
|
+
Resource.LOCATION,
|
|
114
|
+
Resource.TASK_TYPE,
|
|
115
|
+
Resource.MEMBERSHIP,
|
|
116
|
+
Resource.SETTINGS,
|
|
117
|
+
Resource.NOTIFICATION,
|
|
118
|
+
Resource.REPORT,
|
|
119
|
+
Resource.AUDIT_LOG,
|
|
120
|
+
Resource.SYSTEM,
|
|
121
|
+
Resource.PUBLIC_RESOURCE,
|
|
122
|
+
];
|
|
123
|
+
/**
|
|
124
|
+
* Check if a resource is medical
|
|
125
|
+
*/
|
|
126
|
+
export function isMedicalResource(resource) {
|
|
127
|
+
return MEDICAL_RESOURCES.includes(resource);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Check if a resource is public
|
|
131
|
+
*/
|
|
132
|
+
export function isPublicResource(resource) {
|
|
133
|
+
return PUBLIC_RESOURCES.includes(resource);
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29wZXJhdGlvbnMvcmVzb3VyY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFOLElBQVksUUF1RVg7QUF2RUQsV0FBWSxRQUFRO0lBQ2xCLHNCQUFzQjtJQUN0QiwrQkFBbUIsQ0FBQTtJQUNuQixtREFBdUMsQ0FBQTtJQUN2Qyx1REFBMkMsQ0FBQTtJQUUzQyxpQkFBaUI7SUFDakIseUJBQWEsQ0FBQTtJQUNiLCtCQUFtQixDQUFBO0lBRW5CLG9CQUFvQjtJQUNwQiwrQkFBbUIsQ0FBQTtJQUNuQiwyREFBK0MsQ0FBQTtJQUMvQyxxRUFBeUQsQ0FBQTtJQUN6RCxtRUFBdUQsQ0FBQTtJQUN2RCwrQ0FBbUMsQ0FBQTtJQUVuQyxrQkFBa0I7SUFDbEIsK0NBQW1DLENBQUE7SUFDbkMseURBQTZDLENBQUE7SUFDN0MsaUVBQXFELENBQUE7SUFDckQseURBQTZDLENBQUE7SUFDN0MsNkRBQWlELENBQUE7SUFFakQsb0JBQW9CO0lBQ3BCLHlDQUE2QixDQUFBO0lBQzdCLDZDQUFpQyxDQUFBO0lBQ2pDLCtDQUFtQyxDQUFBO0lBQ25DLDJEQUErQyxDQUFBO0lBQy9DLHlDQUE2QixDQUFBO0lBQzdCLG1DQUF1QixDQUFBO0lBQ3ZCLHVDQUEyQixDQUFBO0lBQzNCLHFDQUF5QixDQUFBO0lBQ3pCLCtCQUFtQixDQUFBO0lBQ25CLHlDQUE2QixDQUFBO0lBQzdCLG1DQUF1QixDQUFBO0lBRXZCLDBCQUEwQjtJQUMxQiwyQ0FBK0IsQ0FBQTtJQUMvQix1Q0FBMkIsQ0FBQTtJQUMzQiwyQ0FBK0IsQ0FBQTtJQUMvQixpRUFBcUQsQ0FBQTtJQUVyRCxZQUFZO0lBQ1osbURBQXVDLENBQUE7SUFDdkMsK0NBQW1DLENBQUE7SUFDbkMscURBQXlDLENBQUE7SUFDekMsNkNBQWlDLENBQUE7SUFDakMsK0JBQW1CLENBQUE7SUFFbkIsd0JBQXdCO0lBQ3hCLGlDQUFxQixDQUFBO0lBQ3JCLG1DQUF1QixDQUFBO0lBRXZCLGFBQWE7SUFDYixxQ0FBeUIsQ0FBQTtJQUN6QiwrQkFBbUIsQ0FBQTtJQUVuQix3QkFBd0I7SUFDeEIscUNBQXlCLENBQUE7SUFDekIsaUNBQXFCLENBQUE7SUFFckIsU0FBUztJQUNULHlDQUE2QixDQUFBO0lBQzdCLDZCQUFpQixDQUFBO0lBQ2pCLG1DQUF1QixDQUFBO0lBQ3ZCLDZCQUFpQixDQUFBO0lBRWpCLG9CQUFvQjtJQUNwQiwrQ0FBbUMsQ0FBQTtJQUNuQyxpREFBcUMsQ0FBQTtBQUN2QyxDQUFDLEVBdkVXLFFBQVEsS0FBUixRQUFRLFFBdUVuQjtBQUVEOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQWU7SUFDM0MsUUFBUSxDQUFDLE9BQU87SUFDaEIsUUFBUSxDQUFDLHFCQUFxQjtJQUM5QixRQUFRLENBQUMsMEJBQTBCO0lBQ25DLFFBQVEsQ0FBQyxlQUFlO0lBQ3hCLFFBQVEsQ0FBQyxlQUFlO0lBQ3hCLFFBQVEsQ0FBQyxvQkFBb0I7SUFDN0IsUUFBUSxDQUFDLHdCQUF3QjtJQUNqQyxRQUFRLENBQUMsb0JBQW9CO0lBQzdCLFFBQVEsQ0FBQyxzQkFBc0I7SUFDL0IsUUFBUSxDQUFDLFlBQVk7SUFDckIsUUFBUSxDQUFDLGNBQWM7SUFDdkIsUUFBUSxDQUFDLGVBQWU7SUFDeEIsUUFBUSxDQUFDLHFCQUFxQjtJQUM5QixRQUFRLENBQUMsWUFBWTtJQUNyQixRQUFRLENBQUMsU0FBUztJQUNsQixRQUFRLENBQUMsV0FBVztJQUNwQixRQUFRLENBQUMsVUFBVTtJQUNuQixRQUFRLENBQUMsT0FBTztJQUNoQixRQUFRLENBQUMsWUFBWTtJQUNyQixRQUFRLENBQUMsU0FBUztJQUNsQixRQUFRLENBQUMsYUFBYTtJQUN0QixRQUFRLENBQUMsV0FBVztJQUNwQixRQUFRLENBQUMsYUFBYTtJQUN0QixRQUFRLENBQUMsd0JBQXdCO0lBQ2pDLFFBQVEsQ0FBQyxVQUFVO0lBQ25CLFFBQVEsQ0FBQyxPQUFPO0lBQ2hCLFFBQVEsQ0FBQyxnQkFBZ0I7Q0FDMUIsQ0FBQztBQUVGOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQWU7SUFDMUMsUUFBUSxDQUFDLE9BQU87SUFDaEIsUUFBUSxDQUFDLGlCQUFpQjtJQUMxQixRQUFRLENBQUMsbUJBQW1CO0lBQzVCLFFBQVEsQ0FBQyxJQUFJO0lBQ2IsUUFBUSxDQUFDLE9BQU87SUFDaEIsUUFBUSxDQUFDLHlCQUF5QjtJQUNsQyxRQUFRLENBQUMsaUJBQWlCO0lBQzFCLFFBQVEsQ0FBQyxlQUFlO0lBQ3hCLFFBQVEsQ0FBQyxrQkFBa0I7SUFDM0IsUUFBUSxDQUFDLGNBQWM7SUFDdkIsUUFBUSxDQUFDLE9BQU87SUFDaEIsUUFBUSxDQUFDLFFBQVE7SUFDakIsUUFBUSxDQUFDLFNBQVM7SUFDbEIsUUFBUSxDQUFDLFVBQVU7SUFDbkIsUUFBUSxDQUFDLFFBQVE7SUFDakIsUUFBUSxDQUFDLFlBQVk7SUFDckIsUUFBUSxDQUFDLE1BQU07SUFDZixRQUFRLENBQUMsU0FBUztJQUNsQixRQUFRLENBQUMsTUFBTTtJQUNmLFFBQVEsQ0FBQyxlQUFlO0NBQ3pCLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxRQUFrQjtJQUNsRCxPQUFPLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsUUFBa0I7SUFDakQsT0FBTyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUmVzb3VyY2UgdHlwZXMgZm9yIG9wZXJhdGlvbnNcbiAqL1xuZXhwb3J0IGVudW0gUmVzb3VyY2Uge1xuICAvLyBBY2NvdW50ICYgT3duZXJzaGlwXG4gIEFDQ09VTlQgPSBcIkFDQ09VTlRcIixcbiAgQUNDT1VOVF9PV05FUlNISVAgPSBcIkFDQ09VTlRfT1dORVJTSElQXCIsXG4gIEFDQ09VTlRfUFJFRkVSRU5DRVMgPSBcIkFDQ09VTlRfUFJFRkVSRU5DRVNcIixcblxuICAvLyBVc2VyICYgQ29udGFjdFxuICBVU0VSID0gXCJVU0VSXCIsXG4gIENPTlRBQ1QgPSBcIkNPTlRBQ1RcIixcblxuICAvLyBQYXRpZW50IHJlc291cmNlc1xuICBQQVRJRU5UID0gXCJQQVRJRU5UXCIsXG4gIFBBVElFTlRfTUVESUNBTF9OT1RFUyA9IFwiUEFUSUVOVF9NRURJQ0FMX05PVEVTXCIsXG4gIFBBVElFTlRfTUVESUNBTF9QUk9QRVJUSUVTID0gXCJQQVRJRU5UX01FRElDQUxfUFJPUEVSVElFU1wiLFxuICBQQVRJRU5UX1BVQkxJQ19QUk9QRVJUSUVTID0gXCJQQVRJRU5UX1BVQkxJQ19QUk9QRVJUSUVTXCIsXG4gIFBBVElFTlRfUEFZTUVOVCA9IFwiUEFUSUVOVF9QQVlNRU5UXCIsXG5cbiAgLy8gTWVkaWNhbCBTZXJ2aWNlXG4gIE1FRElDQUxfU0VSVklDRSA9IFwiTUVESUNBTF9TRVJWSUNFXCIsXG4gIE1FRElDQUxfU0VSVklDRV9OT1RFID0gXCJNRURJQ0FMX1NFUlZJQ0VfTk9URVwiLFxuICBNRURJQ0FMX1NFUlZJQ0VfU0NIRURVTEUgPSBcIk1FRElDQUxfU0VSVklDRV9TQ0hFRFVMRVwiLFxuICBNRURJQ0FMX1NFUlZJQ0VfRkVFUyA9IFwiTUVESUNBTF9TRVJWSUNFX0ZFRVNcIixcbiAgTUVESUNBTF9TRVJWSUNFX1NUQVRVUyA9IFwiTUVESUNBTF9TRVJWSUNFX1NUQVRVU1wiLFxuXG4gIC8vIE1lZGljYWwgcmVzb3VyY2VzXG4gIE1FRElDQUxfTk9URSA9IFwiTUVESUNBTF9OT1RFXCIsXG4gIE1FRElDQUxfUkVDT1JEID0gXCJNRURJQ0FMX1JFQ09SRFwiLFxuICBNRURJQ0FMX0hJU1RPUlkgPSBcIk1FRElDQUxfSElTVE9SWVwiLFxuICBNRURJQ0FMX0hJU1RPUllfTU9ERUwgPSBcIk1FRElDQUxfSElTVE9SWV9NT0RFTFwiLFxuICBQUkVTQ1JJUFRJT04gPSBcIlBSRVNDUklQVElPTlwiLFxuICBESUFHTk9TSVMgPSBcIkRJQUdOT1NJU1wiLFxuICBPQlNFUlZBVElPTiA9IFwiT0JTRVJWQVRJT05cIixcbiAgTUVESUNBVElPTiA9IFwiTUVESUNBVElPTlwiLFxuICBBTExFUkdZID0gXCJBTExFUkdZXCIsXG4gIElNTVVOSVpBVElPTiA9IFwiSU1NVU5JWkFUSU9OXCIsXG4gIFBST0NFRFVSRSA9IFwiUFJPQ0VEVVJFXCIsXG5cbiAgLy8gQ2xpbmljYWwgJiBNZWFzdXJlbWVudHNcbiAgQ0xJTklDQUxfTk9URSA9IFwiQ0xJTklDQUxfTk9URVwiLFxuICBWSVRBTF9TSUdOUyA9IFwiVklUQUxfU0lHTlNcIixcbiAgTUVBU1VSRV9NT0RFTCA9IFwiTUVBU1VSRV9NT0RFTFwiLFxuICBDQUxDVUxBVEVEX01FQVNVUkVfTU9ERUwgPSBcIkNBTENVTEFURURfTUVBU1VSRV9NT0RFTFwiLFxuXG4gIC8vIERvY3VtZW50c1xuICBVUExPQURFRF9ET0NVTUVOVCA9IFwiVVBMT0FERURfRE9DVU1FTlRcIixcbiAgRE9DVU1FTlRfTEFZT1VUID0gXCJET0NVTUVOVF9MQVlPVVRcIixcbiAgR0VORVJBVEVEX0RPQ1VNRU5UID0gXCJHRU5FUkFURURfRE9DVU1FTlRcIixcbiAgRE9DVU1FTlRfTU9ERUwgPSBcIkRPQ1VNRU5UX01PREVMXCIsXG4gIFNOSVBQRVQgPSBcIlNOSVBQRVRcIixcblxuICAvLyBTY2hlZHVsaW5nICYgTG9jYXRpb25cbiAgTE9DQVRJT04gPSBcIkxPQ0FUSU9OXCIsXG4gIFRBU0tfVFlQRSA9IFwiVEFTS19UWVBFXCIsXG5cbiAgLy8gRGlhZ25vc3RpY1xuICBMQUJfUkVTVUxUID0gXCJMQUJfUkVTVUxUXCIsXG4gIElNQUdJTkcgPSBcIklNQUdJTkdcIixcblxuICAvLyBNZW1iZXJzaGlwICYgU2V0dGluZ3NcbiAgTUVNQkVSU0hJUCA9IFwiTUVNQkVSU0hJUFwiLFxuICBTRVRUSU5HUyA9IFwiU0VUVElOR1NcIixcblxuICAvLyBTeXN0ZW1cbiAgTk9USUZJQ0FUSU9OID0gXCJOT1RJRklDQVRJT05cIixcbiAgUkVQT1JUID0gXCJSRVBPUlRcIixcbiAgQVVESVRfTE9HID0gXCJBVURJVF9MT0dcIixcbiAgU1lTVEVNID0gXCJTWVNURU1cIixcblxuICAvLyBHZW5lcmljIHJlc291cmNlc1xuICBQVUJMSUNfUkVTT1VSQ0UgPSBcIlBVQkxJQ19SRVNPVVJDRVwiLFxuICBNRURJQ0FMX1JFU09VUkNFID0gXCJNRURJQ0FMX1JFU09VUkNFXCIsXG59XG5cbi8qKlxuICogTWVkaWNhbCByZXNvdXJjZXMgLSByZXF1aXJlIHNwZWNpYWwgYWNjZXNzIGNvbnRyb2xcbiAqL1xuZXhwb3J0IGNvbnN0IE1FRElDQUxfUkVTT1VSQ0VTOiBSZXNvdXJjZVtdID0gW1xuICBSZXNvdXJjZS5QQVRJRU5ULFxuICBSZXNvdXJjZS5QQVRJRU5UX01FRElDQUxfTk9URVMsXG4gIFJlc291cmNlLlBBVElFTlRfTUVESUNBTF9QUk9QRVJUSUVTLFxuICBSZXNvdXJjZS5QQVRJRU5UX1BBWU1FTlQsXG4gIFJlc291cmNlLk1FRElDQUxfU0VSVklDRSxcbiAgUmVzb3VyY2UuTUVESUNBTF9TRVJWSUNFX05PVEUsXG4gIFJlc291cmNlLk1FRElDQUxfU0VSVklDRV9TQ0hFRFVMRSxcbiAgUmVzb3VyY2UuTUVESUNBTF9TRVJWSUNFX0ZFRVMsXG4gIFJlc291cmNlLk1FRElDQUxfU0VSVklDRV9TVEFUVVMsXG4gIFJlc291cmNlLk1FRElDQUxfTk9URSxcbiAgUmVzb3VyY2UuTUVESUNBTF9SRUNPUkQsXG4gIFJlc291cmNlLk1FRElDQUxfSElTVE9SWSxcbiAgUmVzb3VyY2UuTUVESUNBTF9ISVNUT1JZX01PREVMLFxuICBSZXNvdXJjZS5QUkVTQ1JJUFRJT04sXG4gIFJlc291cmNlLkRJQUdOT1NJUyxcbiAgUmVzb3VyY2UuT0JTRVJWQVRJT04sXG4gIFJlc291cmNlLk1FRElDQVRJT04sXG4gIFJlc291cmNlLkFMTEVSR1ksXG4gIFJlc291cmNlLklNTVVOSVpBVElPTixcbiAgUmVzb3VyY2UuUFJPQ0VEVVJFLFxuICBSZXNvdXJjZS5DTElOSUNBTF9OT1RFLFxuICBSZXNvdXJjZS5WSVRBTF9TSUdOUyxcbiAgUmVzb3VyY2UuTUVBU1VSRV9NT0RFTCxcbiAgUmVzb3VyY2UuQ0FMQ1VMQVRFRF9NRUFTVVJFX01PREVMLFxuICBSZXNvdXJjZS5MQUJfUkVTVUxULFxuICBSZXNvdXJjZS5JTUFHSU5HLFxuICBSZXNvdXJjZS5NRURJQ0FMX1JFU09VUkNFLFxuXTtcblxuLyoqXG4gKiBQdWJsaWMgcmVzb3VyY2VzIC0gc3RhbmRhcmQgYWNjZXNzIGNvbnRyb2xcbiAqL1xuZXhwb3J0IGNvbnN0IFBVQkxJQ19SRVNPVVJDRVM6IFJlc291cmNlW10gPSBbXG4gIFJlc291cmNlLkFDQ09VTlQsXG4gIFJlc291cmNlLkFDQ09VTlRfT1dORVJTSElQLFxuICBSZXNvdXJjZS5BQ0NPVU5UX1BSRUZFUkVOQ0VTLFxuICBSZXNvdXJjZS5VU0VSLFxuICBSZXNvdXJjZS5DT05UQUNULFxuICBSZXNvdXJjZS5QQVRJRU5UX1BVQkxJQ19QUk9QRVJUSUVTLFxuICBSZXNvdXJjZS5VUExPQURFRF9ET0NVTUVOVCxcbiAgUmVzb3VyY2UuRE9DVU1FTlRfTEFZT1VULFxuICBSZXNvdXJjZS5HRU5FUkFURURfRE9DVU1FTlQsXG4gIFJlc291cmNlLkRPQ1VNRU5UX01PREVMLFxuICBSZXNvdXJjZS5TTklQUEVULFxuICBSZXNvdXJjZS5MT0NBVElPTixcbiAgUmVzb3VyY2UuVEFTS19UWVBFLFxuICBSZXNvdXJjZS5NRU1CRVJTSElQLFxuICBSZXNvdXJjZS5TRVRUSU5HUyxcbiAgUmVzb3VyY2UuTk9USUZJQ0FUSU9OLFxuICBSZXNvdXJjZS5SRVBPUlQsXG4gIFJlc291cmNlLkFVRElUX0xPRyxcbiAgUmVzb3VyY2UuU1lTVEVNLFxuICBSZXNvdXJjZS5QVUJMSUNfUkVTT1VSQ0UsXG5dO1xuXG4vKipcbiAqIENoZWNrIGlmIGEgcmVzb3VyY2UgaXMgbWVkaWNhbFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNNZWRpY2FsUmVzb3VyY2UocmVzb3VyY2U6IFJlc291cmNlKTogYm9vbGVhbiB7XG4gIHJldHVybiBNRURJQ0FMX1JFU09VUkNFUy5pbmNsdWRlcyhyZXNvdXJjZSk7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYSByZXNvdXJjZSBpcyBwdWJsaWNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUHVibGljUmVzb3VyY2UocmVzb3VyY2U6IFJlc291cmNlKTogYm9vbGVhbiB7XG4gIHJldHVybiBQVUJMSUNfUkVTT1VSQ0VTLmluY2x1ZGVzKHJlc291cmNlKTtcbn1cbiJdfQ==
|
package/esm/ssm/index.js
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { SSM_PARAM_KEY } from "./keys";
|
|
2
|
+
export { buildSSMPath, buildSSMPathWithPrefix, extractEnvFromPath, extractKeyFromPath, isEnvAgnostic, } from "./utils";
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3NtL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDdkMsT0FBTyxFQUNMLFlBQVksRUFDWixzQkFBc0IsRUFDdEIsa0JBQWtCLEVBQ2xCLGtCQUFrQixFQUNsQixhQUFhLEdBQ2QsTUFBTSxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBTU01fUEFSQU1fS0VZIH0gZnJvbSBcIi4va2V5c1wiO1xuZXhwb3J0IHtcbiAgYnVpbGRTU01QYXRoLFxuICBidWlsZFNTTVBhdGhXaXRoUHJlZml4LFxuICBleHRyYWN0RW52RnJvbVBhdGgsXG4gIGV4dHJhY3RLZXlGcm9tUGF0aCxcbiAgaXNFbnZBZ25vc3RpYyxcbn0gZnJvbSBcIi4vdXRpbHNcIjtcbiJdfQ==
|
package/esm/ssm/keys.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SSM Parameter Store keys used across AWS stacks
|
|
3
|
+
*/
|
|
4
|
+
export var SSM_PARAM_KEY;
|
|
5
|
+
(function (SSM_PARAM_KEY) {
|
|
6
|
+
SSM_PARAM_KEY["COGNITO_USER_POOL_ID"] = "user-pool-id";
|
|
7
|
+
SSM_PARAM_KEY["COGNITO_USER_POOL_WEB_CLIENT_ID"] = "user-pool-web-client-id";
|
|
8
|
+
SSM_PARAM_KEY["COGNITO_OAUTH_DOMAIN"] = "oauth-domain";
|
|
9
|
+
SSM_PARAM_KEY["RUM_GUEST_ROLE_ARN"] = "rum-guest-rome-arn";
|
|
10
|
+
SSM_PARAM_KEY["RUM_IDENTITY_POOL_ID"] = "rum-identity-pool-id";
|
|
11
|
+
SSM_PARAM_KEY["RUM_APP_ID"] = "rum-app-id";
|
|
12
|
+
SSM_PARAM_KEY["GRAPHQL_HTTP_URL"] = "graphql-http-url";
|
|
13
|
+
SSM_PARAM_KEY["GRAPHQL_WS_URL"] = "graphql-ws-url";
|
|
14
|
+
SSM_PARAM_KEY["GRAPHQL_HOST"] = "graphql-host";
|
|
15
|
+
SSM_PARAM_KEY["GRAPHQL_API_ID"] = "graphql-api-id";
|
|
16
|
+
SSM_PARAM_KEY["MEDICAL_ASSETS_AWS_CLOUDFRONT_PRIVATE_KEY"] = "medical-assets-dist-private-key";
|
|
17
|
+
SSM_PARAM_KEY["MEDICAL_ASSETS_AWS_CLOUDFRONT_KEY_ID"] = "medical-assets-dist-public-key-id";
|
|
18
|
+
SSM_PARAM_KEY["MEDICAL_ASSETS_BUCKET_NAME"] = "medical-assets-bucket-name";
|
|
19
|
+
SSM_PARAM_KEY["PUBLIC_ASSETS_BUCKET_NAME"] = "public-assets-bucket-name";
|
|
20
|
+
SSM_PARAM_KEY["DB_USER"] = "db-user";
|
|
21
|
+
SSM_PARAM_KEY["DB_PASSWORD"] = "db-password";
|
|
22
|
+
SSM_PARAM_KEY["MEDICAL_ASSETS_DISTRIBUTION_DOMAIN_NAME"] = "medical-assets-dist-domain-name";
|
|
23
|
+
SSM_PARAM_KEY["BASE_HOST"] = "base-host";
|
|
24
|
+
SSM_PARAM_KEY["EMAIL_FROM_ADDRESS"] = "email-from-address";
|
|
25
|
+
SSM_PARAM_KEY["EVENT_API_REAL_TIME_DNS"] = "event-api-real-time-dns";
|
|
26
|
+
SSM_PARAM_KEY["EVENT_API_HTTP_DNS"] = "event-api-http-dns";
|
|
27
|
+
SSM_PARAM_KEY["NOTIFIED_EVENT_ACTIONS"] = "notified-event-actions";
|
|
28
|
+
})(SSM_PARAM_KEY || (SSM_PARAM_KEY = {}));
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zc20va2V5cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sQ0FBTixJQUFZLGFBdUJYO0FBdkJELFdBQVksYUFBYTtJQUN2QixzREFBcUMsQ0FBQTtJQUNyQyw0RUFBMkQsQ0FBQTtJQUMzRCxzREFBcUMsQ0FBQTtJQUNyQywwREFBeUMsQ0FBQTtJQUN6Qyw4REFBNkMsQ0FBQTtJQUM3QywwQ0FBeUIsQ0FBQTtJQUN6QixzREFBcUMsQ0FBQTtJQUNyQyxrREFBaUMsQ0FBQTtJQUNqQyw4Q0FBNkIsQ0FBQTtJQUM3QixrREFBaUMsQ0FBQTtJQUNqQyw4RkFBNkUsQ0FBQTtJQUM3RSwyRkFBMEUsQ0FBQTtJQUMxRSwwRUFBeUQsQ0FBQTtJQUN6RCx3RUFBdUQsQ0FBQTtJQUN2RCxvQ0FBbUIsQ0FBQTtJQUNuQiw0Q0FBMkIsQ0FBQTtJQUMzQiw0RkFBMkUsQ0FBQTtJQUMzRSx3Q0FBdUIsQ0FBQTtJQUN2QiwwREFBeUMsQ0FBQTtJQUN6QyxvRUFBbUQsQ0FBQTtJQUNuRCwwREFBeUMsQ0FBQTtJQUN6QyxrRUFBaUQsQ0FBQTtBQUNuRCxDQUFDLEVBdkJXLGFBQWEsS0FBYixhQUFhLFFBdUJ4QiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU1NNIFBhcmFtZXRlciBTdG9yZSBrZXlzIHVzZWQgYWNyb3NzIEFXUyBzdGFja3NcbiAqL1xuZXhwb3J0IGVudW0gU1NNX1BBUkFNX0tFWSB7XG4gIENPR05JVE9fVVNFUl9QT09MX0lEID0gXCJ1c2VyLXBvb2wtaWRcIixcbiAgQ09HTklUT19VU0VSX1BPT0xfV0VCX0NMSUVOVF9JRCA9IFwidXNlci1wb29sLXdlYi1jbGllbnQtaWRcIixcbiAgQ09HTklUT19PQVVUSF9ET01BSU4gPSBcIm9hdXRoLWRvbWFpblwiLFxuICBSVU1fR1VFU1RfUk9MRV9BUk4gPSBcInJ1bS1ndWVzdC1yb21lLWFyblwiLFxuICBSVU1fSURFTlRJVFlfUE9PTF9JRCA9IFwicnVtLWlkZW50aXR5LXBvb2wtaWRcIixcbiAgUlVNX0FQUF9JRCA9IFwicnVtLWFwcC1pZFwiLFxuICBHUkFQSFFMX0hUVFBfVVJMID0gXCJncmFwaHFsLWh0dHAtdXJsXCIsXG4gIEdSQVBIUUxfV1NfVVJMID0gXCJncmFwaHFsLXdzLXVybFwiLFxuICBHUkFQSFFMX0hPU1QgPSBcImdyYXBocWwtaG9zdFwiLFxuICBHUkFQSFFMX0FQSV9JRCA9IFwiZ3JhcGhxbC1hcGktaWRcIixcbiAgTUVESUNBTF9BU1NFVFNfQVdTX0NMT1VERlJPTlRfUFJJVkFURV9LRVkgPSBcIm1lZGljYWwtYXNzZXRzLWRpc3QtcHJpdmF0ZS1rZXlcIixcbiAgTUVESUNBTF9BU1NFVFNfQVdTX0NMT1VERlJPTlRfS0VZX0lEID0gXCJtZWRpY2FsLWFzc2V0cy1kaXN0LXB1YmxpYy1rZXktaWRcIixcbiAgTUVESUNBTF9BU1NFVFNfQlVDS0VUX05BTUUgPSBcIm1lZGljYWwtYXNzZXRzLWJ1Y2tldC1uYW1lXCIsXG4gIFBVQkxJQ19BU1NFVFNfQlVDS0VUX05BTUUgPSBcInB1YmxpYy1hc3NldHMtYnVja2V0LW5hbWVcIixcbiAgREJfVVNFUiA9IFwiZGItdXNlclwiLFxuICBEQl9QQVNTV09SRCA9IFwiZGItcGFzc3dvcmRcIixcbiAgTUVESUNBTF9BU1NFVFNfRElTVFJJQlVUSU9OX0RPTUFJTl9OQU1FID0gXCJtZWRpY2FsLWFzc2V0cy1kaXN0LWRvbWFpbi1uYW1lXCIsXG4gIEJBU0VfSE9TVCA9IFwiYmFzZS1ob3N0XCIsXG4gIEVNQUlMX0ZST01fQUREUkVTUyA9IFwiZW1haWwtZnJvbS1hZGRyZXNzXCIsXG4gIEVWRU5UX0FQSV9SRUFMX1RJTUVfRE5TID0gXCJldmVudC1hcGktcmVhbC10aW1lLWRuc1wiLFxuICBFVkVOVF9BUElfSFRUUF9ETlMgPSBcImV2ZW50LWFwaS1odHRwLWRuc1wiLFxuICBOT1RJRklFRF9FVkVOVF9BQ1RJT05TID0gXCJub3RpZmllZC1ldmVudC1hY3Rpb25zXCIsXG59XG4iXX0=
|
package/esm/ssm/utils.js
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { SSM_PARAM_KEY } from "./keys";
|
|
2
|
+
/**
|
|
3
|
+
* Build SSM parameter path with optional environment prefix
|
|
4
|
+
* @param env - Environment name (e.g., 'dev', 'staging', 'prod'), or null for env-agnostic parameters
|
|
5
|
+
* @param key - SSM parameter key
|
|
6
|
+
* @returns Full SSM parameter path
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```ts
|
|
10
|
+
* buildSSMPath('prod', SSM_PARAM_KEY.COGNITO_USER_POOL_ID)
|
|
11
|
+
* // Returns: '/prod/user-pool-id'
|
|
12
|
+
*
|
|
13
|
+
* buildSSMPath(null, SSM_PARAM_KEY.DB_USER)
|
|
14
|
+
* // Returns: '/db-user' (env-agnostic)
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export function buildSSMPath(env, key) {
|
|
18
|
+
return env ? `/${env}/${key}` : `/${key}`;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Build SSM parameter path with custom prefix
|
|
22
|
+
* @param prefix - Custom prefix (e.g., '/myapp/prod')
|
|
23
|
+
* @param key - SSM parameter key
|
|
24
|
+
* @returns Full SSM parameter path
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```ts
|
|
28
|
+
* buildSSMPathWithPrefix('/myapp/prod', SSM_PARAM_KEY.DB_USER)
|
|
29
|
+
* // Returns: '/myapp/prod/db-user'
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export function buildSSMPathWithPrefix(prefix, key) {
|
|
33
|
+
const normalizedPrefix = prefix.endsWith("/") ? prefix.slice(0, -1) : prefix;
|
|
34
|
+
const normalizedKey = key.startsWith("/") ? key : `/${key}`;
|
|
35
|
+
return `${normalizedPrefix}${normalizedKey}`;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Extract environment from SSM parameter path
|
|
39
|
+
* @param path - SSM parameter path
|
|
40
|
+
* @returns Environment name or null if env-agnostic or not found
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```ts
|
|
44
|
+
* extractEnvFromPath('/prod/user-pool-id')
|
|
45
|
+
* // Returns: 'prod'
|
|
46
|
+
*
|
|
47
|
+
* extractEnvFromPath('/db-user')
|
|
48
|
+
* // Returns: null (env-agnostic parameter)
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
export function extractEnvFromPath(path) {
|
|
52
|
+
const match = path.match(/^\/([^/]+)\//);
|
|
53
|
+
return match ? match[1] : null;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Parse SSM parameter path to extract key
|
|
57
|
+
* @param path - SSM parameter path
|
|
58
|
+
* @returns SSM parameter key or null if not found
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```ts
|
|
62
|
+
* extractKeyFromPath('/prod/user-pool-id')
|
|
63
|
+
* // Returns: SSM_PARAM_KEY.COGNITO_USER_POOL_ID
|
|
64
|
+
*
|
|
65
|
+
* extractKeyFromPath('/db-user')
|
|
66
|
+
* // Returns: SSM_PARAM_KEY.DB_USER (env-agnostic)
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
export function extractKeyFromPath(path) {
|
|
70
|
+
const parts = path.split("/");
|
|
71
|
+
const keyValue = parts[parts.length - 1];
|
|
72
|
+
// Check if the key value matches any enum value
|
|
73
|
+
const enumValues = Object.values(SSM_PARAM_KEY);
|
|
74
|
+
if (enumValues.includes(keyValue)) {
|
|
75
|
+
return keyValue;
|
|
76
|
+
}
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Check if an SSM parameter path is environment-agnostic
|
|
81
|
+
* @param path - SSM parameter path
|
|
82
|
+
* @returns true if the path is env-agnostic (no environment prefix)
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```ts
|
|
86
|
+
* isEnvAgnostic('/db-user')
|
|
87
|
+
* // Returns: true
|
|
88
|
+
*
|
|
89
|
+
* isEnvAgnostic('/prod/user-pool-id')
|
|
90
|
+
* // Returns: false
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
export function isEnvAgnostic(path) {
|
|
94
|
+
// Env-agnostic paths have format: /key (only 2 parts when split by /)
|
|
95
|
+
const parts = path.split("/").filter((p) => p.length > 0);
|
|
96
|
+
return parts.length === 1;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc3NtL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFdkM7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLFVBQVUsWUFBWSxDQUFDLEdBQWtCLEVBQUUsR0FBa0I7SUFDakUsT0FBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQzVDLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sVUFBVSxzQkFBc0IsQ0FDcEMsTUFBYyxFQUNkLEdBQWtCO0lBRWxCLE1BQU0sZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO0lBQzdFLE1BQU0sYUFBYSxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUM1RCxPQUFPLEdBQUcsZ0JBQWdCLEdBQUcsYUFBYSxFQUFFLENBQUM7QUFDL0MsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLFVBQVUsa0JBQWtCLENBQUMsSUFBWTtJQUM3QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3pDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUNqQyxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sVUFBVSxrQkFBa0IsQ0FBQyxJQUFZO0lBQzdDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDOUIsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFekMsZ0RBQWdEO0lBQ2hELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFhLENBQUM7SUFDNUQsSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7UUFDbEMsT0FBTyxRQUF5QixDQUFDO0lBQ25DLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxJQUFZO0lBQ3hDLHNFQUFzRTtJQUN0RSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMxRCxPQUFPLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0FBQzVCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTU01fUEFSQU1fS0VZIH0gZnJvbSBcIi4va2V5c1wiO1xuXG4vKipcbiAqIEJ1aWxkIFNTTSBwYXJhbWV0ZXIgcGF0aCB3aXRoIG9wdGlvbmFsIGVudmlyb25tZW50IHByZWZpeFxuICogQHBhcmFtIGVudiAtIEVudmlyb25tZW50IG5hbWUgKGUuZy4sICdkZXYnLCAnc3RhZ2luZycsICdwcm9kJyksIG9yIG51bGwgZm9yIGVudi1hZ25vc3RpYyBwYXJhbWV0ZXJzXG4gKiBAcGFyYW0ga2V5IC0gU1NNIHBhcmFtZXRlciBrZXlcbiAqIEByZXR1cm5zIEZ1bGwgU1NNIHBhcmFtZXRlciBwYXRoXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBidWlsZFNTTVBhdGgoJ3Byb2QnLCBTU01fUEFSQU1fS0VZLkNPR05JVE9fVVNFUl9QT09MX0lEKVxuICogLy8gUmV0dXJuczogJy9wcm9kL3VzZXItcG9vbC1pZCdcbiAqXG4gKiBidWlsZFNTTVBhdGgobnVsbCwgU1NNX1BBUkFNX0tFWS5EQl9VU0VSKVxuICogLy8gUmV0dXJuczogJy9kYi11c2VyJyAoZW52LWFnbm9zdGljKVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFNTTVBhdGgoZW52OiBzdHJpbmcgfCBudWxsLCBrZXk6IFNTTV9QQVJBTV9LRVkpOiBzdHJpbmcge1xuICByZXR1cm4gZW52ID8gYC8ke2Vudn0vJHtrZXl9YCA6IGAvJHtrZXl9YDtcbn1cblxuLyoqXG4gKiBCdWlsZCBTU00gcGFyYW1ldGVyIHBhdGggd2l0aCBjdXN0b20gcHJlZml4XG4gKiBAcGFyYW0gcHJlZml4IC0gQ3VzdG9tIHByZWZpeCAoZS5nLiwgJy9teWFwcC9wcm9kJylcbiAqIEBwYXJhbSBrZXkgLSBTU00gcGFyYW1ldGVyIGtleVxuICogQHJldHVybnMgRnVsbCBTU00gcGFyYW1ldGVyIHBhdGhcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGJ1aWxkU1NNUGF0aFdpdGhQcmVmaXgoJy9teWFwcC9wcm9kJywgU1NNX1BBUkFNX0tFWS5EQl9VU0VSKVxuICogLy8gUmV0dXJuczogJy9teWFwcC9wcm9kL2RiLXVzZXInXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkU1NNUGF0aFdpdGhQcmVmaXgoXG4gIHByZWZpeDogc3RyaW5nLFxuICBrZXk6IFNTTV9QQVJBTV9LRVksXG4pOiBzdHJpbmcge1xuICBjb25zdCBub3JtYWxpemVkUHJlZml4ID0gcHJlZml4LmVuZHNXaXRoKFwiL1wiKSA/IHByZWZpeC5zbGljZSgwLCAtMSkgOiBwcmVmaXg7XG4gIGNvbnN0IG5vcm1hbGl6ZWRLZXkgPSBrZXkuc3RhcnRzV2l0aChcIi9cIikgPyBrZXkgOiBgLyR7a2V5fWA7XG4gIHJldHVybiBgJHtub3JtYWxpemVkUHJlZml4fSR7bm9ybWFsaXplZEtleX1gO1xufVxuXG4vKipcbiAqIEV4dHJhY3QgZW52aXJvbm1lbnQgZnJvbSBTU00gcGFyYW1ldGVyIHBhdGhcbiAqIEBwYXJhbSBwYXRoIC0gU1NNIHBhcmFtZXRlciBwYXRoXG4gKiBAcmV0dXJucyBFbnZpcm9ubWVudCBuYW1lIG9yIG51bGwgaWYgZW52LWFnbm9zdGljIG9yIG5vdCBmb3VuZFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c1xuICogZXh0cmFjdEVudkZyb21QYXRoKCcvcHJvZC91c2VyLXBvb2wtaWQnKVxuICogLy8gUmV0dXJuczogJ3Byb2QnXG4gKlxuICogZXh0cmFjdEVudkZyb21QYXRoKCcvZGItdXNlcicpXG4gKiAvLyBSZXR1cm5zOiBudWxsIChlbnYtYWdub3N0aWMgcGFyYW1ldGVyKVxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0RW52RnJvbVBhdGgocGF0aDogc3RyaW5nKTogc3RyaW5nIHwgbnVsbCB7XG4gIGNvbnN0IG1hdGNoID0gcGF0aC5tYXRjaCgvXlxcLyhbXi9dKylcXC8vKTtcbiAgcmV0dXJuIG1hdGNoID8gbWF0Y2hbMV0gOiBudWxsO1xufVxuXG4vKipcbiAqIFBhcnNlIFNTTSBwYXJhbWV0ZXIgcGF0aCB0byBleHRyYWN0IGtleVxuICogQHBhcmFtIHBhdGggLSBTU00gcGFyYW1ldGVyIHBhdGhcbiAqIEByZXR1cm5zIFNTTSBwYXJhbWV0ZXIga2V5IG9yIG51bGwgaWYgbm90IGZvdW5kXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiBleHRyYWN0S2V5RnJvbVBhdGgoJy9wcm9kL3VzZXItcG9vbC1pZCcpXG4gKiAvLyBSZXR1cm5zOiBTU01fUEFSQU1fS0VZLkNPR05JVE9fVVNFUl9QT09MX0lEXG4gKlxuICogZXh0cmFjdEtleUZyb21QYXRoKCcvZGItdXNlcicpXG4gKiAvLyBSZXR1cm5zOiBTU01fUEFSQU1fS0VZLkRCX1VTRVIgKGVudi1hZ25vc3RpYylcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZXh0cmFjdEtleUZyb21QYXRoKHBhdGg6IHN0cmluZyk6IFNTTV9QQVJBTV9LRVkgfCBudWxsIHtcbiAgY29uc3QgcGFydHMgPSBwYXRoLnNwbGl0KFwiL1wiKTtcbiAgY29uc3Qga2V5VmFsdWUgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXTtcblxuICAvLyBDaGVjayBpZiB0aGUga2V5IHZhbHVlIG1hdGNoZXMgYW55IGVudW0gdmFsdWVcbiAgY29uc3QgZW51bVZhbHVlcyA9IE9iamVjdC52YWx1ZXMoU1NNX1BBUkFNX0tFWSkgYXMgc3RyaW5nW107XG4gIGlmIChlbnVtVmFsdWVzLmluY2x1ZGVzKGtleVZhbHVlKSkge1xuICAgIHJldHVybiBrZXlWYWx1ZSBhcyBTU01fUEFSQU1fS0VZO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogQ2hlY2sgaWYgYW4gU1NNIHBhcmFtZXRlciBwYXRoIGlzIGVudmlyb25tZW50LWFnbm9zdGljXG4gKiBAcGFyYW0gcGF0aCAtIFNTTSBwYXJhbWV0ZXIgcGF0aFxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgcGF0aCBpcyBlbnYtYWdub3N0aWMgKG5vIGVudmlyb25tZW50IHByZWZpeClcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGlzRW52QWdub3N0aWMoJy9kYi11c2VyJylcbiAqIC8vIFJldHVybnM6IHRydWVcbiAqXG4gKiBpc0VudkFnbm9zdGljKCcvcHJvZC91c2VyLXBvb2wtaWQnKVxuICogLy8gUmV0dXJuczogZmFsc2VcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNFbnZBZ25vc3RpYyhwYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgLy8gRW52LWFnbm9zdGljIHBhdGhzIGhhdmUgZm9ybWF0OiAva2V5IChvbmx5IDIgcGFydHMgd2hlbiBzcGxpdCBieSAvKVxuICBjb25zdCBwYXJ0cyA9IHBhdGguc3BsaXQoXCIvXCIpLmZpbHRlcigocCkgPT4gcC5sZW5ndGggPiAwKTtcbiAgcmV0dXJuIHBhcnRzLmxlbmd0aCA9PT0gMTtcbn1cbiJdfQ==
|
package/package.json
CHANGED
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"publishConfig": {
|
|
33
33
|
"access": "public"
|
|
34
34
|
},
|
|
35
|
-
"version": "0.0.
|
|
35
|
+
"version": "0.0.5",
|
|
36
36
|
"jest": {
|
|
37
37
|
"coverageProvider": "v8",
|
|
38
38
|
"testMatch": [
|
|
@@ -82,9 +82,11 @@
|
|
|
82
82
|
"exports": {
|
|
83
83
|
".": {
|
|
84
84
|
"types": "./lib/index.d.ts",
|
|
85
|
-
"require": "./lib/index.js"
|
|
85
|
+
"require": "./lib/index.js",
|
|
86
|
+
"import": "./esm/index.js"
|
|
86
87
|
}
|
|
87
88
|
},
|
|
89
|
+
"module": "./esm/index.js",
|
|
88
90
|
"lint-staged": {
|
|
89
91
|
"*.ts": [
|
|
90
92
|
"prettier --write"
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json.schemastore.org/tsconfig",
|
|
3
|
+
"extends": "./tsconfig.dev.json",
|
|
4
|
+
"compilerOptions": {
|
|
5
|
+
"module": "ES2022",
|
|
6
|
+
"moduleResolution": "node",
|
|
7
|
+
"outDir": "esm",
|
|
8
|
+
"declaration": false,
|
|
9
|
+
"emitDeclarationOnly": false,
|
|
10
|
+
"target": "ES2022",
|
|
11
|
+
"esModuleInterop": true,
|
|
12
|
+
"skipLibCheck": true
|
|
13
|
+
},
|
|
14
|
+
"include": [
|
|
15
|
+
"src/**/*.ts"
|
|
16
|
+
],
|
|
17
|
+
"//": "~~ Generated by projen. To modify, edit .projenrc.ts and run \"npx projen\"."
|
|
18
|
+
}
|