@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 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==
@@ -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==
@@ -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=
@@ -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.4",
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
+ }