@doctorus/common 0.0.2 → 0.0.3

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.
@@ -1,4 +1,4 @@
1
1
  export { Resource, MEDICAL_RESOURCES, PUBLIC_RESOURCES, isMedicalResource, isPublicResource, } from "./resources";
2
2
  export { Action } from "./actions";
3
- export { Operation } from "./operation";
3
+ export { Operation, OPERATION, getResourceFromOperation, getActionFromOperation, } from "./operation";
4
4
  export { Operations, getAllOperations, getOperationsByResource, getOperationsByAction, } from "./predefined";
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getOperationsByAction = exports.getOperationsByResource = exports.getAllOperations = exports.Operations = exports.Operation = exports.Action = exports.isPublicResource = exports.isMedicalResource = exports.PUBLIC_RESOURCES = exports.MEDICAL_RESOURCES = exports.Resource = void 0;
3
+ exports.getOperationsByAction = exports.getOperationsByResource = exports.getAllOperations = exports.Operations = exports.getActionFromOperation = exports.getResourceFromOperation = exports.Operation = exports.Action = exports.isPublicResource = exports.isMedicalResource = exports.PUBLIC_RESOURCES = exports.MEDICAL_RESOURCES = exports.Resource = void 0;
4
4
  var resources_1 = require("./resources");
5
5
  Object.defineProperty(exports, "Resource", { enumerable: true, get: function () { return resources_1.Resource; } });
6
6
  Object.defineProperty(exports, "MEDICAL_RESOURCES", { enumerable: true, get: function () { return resources_1.MEDICAL_RESOURCES; } });
@@ -11,9 +11,11 @@ var actions_1 = require("./actions");
11
11
  Object.defineProperty(exports, "Action", { enumerable: true, get: function () { return actions_1.Action; } });
12
12
  var operation_1 = require("./operation");
13
13
  Object.defineProperty(exports, "Operation", { enumerable: true, get: function () { return operation_1.Operation; } });
14
+ Object.defineProperty(exports, "getResourceFromOperation", { enumerable: true, get: function () { return operation_1.getResourceFromOperation; } });
15
+ Object.defineProperty(exports, "getActionFromOperation", { enumerable: true, get: function () { return operation_1.getActionFromOperation; } });
14
16
  var predefined_1 = require("./predefined");
15
17
  Object.defineProperty(exports, "Operations", { enumerable: true, get: function () { return predefined_1.Operations; } });
16
18
  Object.defineProperty(exports, "getAllOperations", { enumerable: true, get: function () { return predefined_1.getAllOperations; } });
17
19
  Object.defineProperty(exports, "getOperationsByResource", { enumerable: true, get: function () { return predefined_1.getOperationsByResource; } });
18
20
  Object.defineProperty(exports, "getOperationsByAction", { enumerable: true, get: function () { return predefined_1.getOperationsByAction; } });
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3BlcmF0aW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FNcUI7QUFMbkIscUdBQUEsUUFBUSxPQUFBO0FBQ1IsOEdBQUEsaUJBQWlCLE9BQUE7QUFDakIsNkdBQUEsZ0JBQWdCLE9BQUE7QUFDaEIsOEdBQUEsaUJBQWlCLE9BQUE7QUFDakIsNkdBQUEsZ0JBQWdCLE9BQUE7QUFFbEIscUNBQW1DO0FBQTFCLGlHQUFBLE1BQU0sT0FBQTtBQUNmLHlDQUF3QztBQUEvQixzR0FBQSxTQUFTLE9BQUE7QUFDbEIsMkNBS3NCO0FBSnBCLHdHQUFBLFVBQVUsT0FBQTtBQUNWLDhHQUFBLGdCQUFnQixPQUFBO0FBQ2hCLHFIQUFBLHVCQUF1QixPQUFBO0FBQ3ZCLG1IQUFBLHFCQUFxQixPQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHtcbiAgUmVzb3VyY2UsXG4gIE1FRElDQUxfUkVTT1VSQ0VTLFxuICBQVUJMSUNfUkVTT1VSQ0VTLFxuICBpc01lZGljYWxSZXNvdXJjZSxcbiAgaXNQdWJsaWNSZXNvdXJjZSxcbn0gZnJvbSBcIi4vcmVzb3VyY2VzXCI7XG5leHBvcnQgeyBBY3Rpb24gfSBmcm9tIFwiLi9hY3Rpb25zXCI7XG5leHBvcnQgeyBPcGVyYXRpb24gfSBmcm9tIFwiLi9vcGVyYXRpb25cIjtcbmV4cG9ydCB7XG4gIE9wZXJhdGlvbnMsXG4gIGdldEFsbE9wZXJhdGlvbnMsXG4gIGdldE9wZXJhdGlvbnNCeVJlc291cmNlLFxuICBnZXRPcGVyYXRpb25zQnlBY3Rpb24sXG59IGZyb20gXCIuL3ByZWRlZmluZWRcIjtcbiJdfQ==
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvb3BlcmF0aW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FNcUI7QUFMbkIscUdBQUEsUUFBUSxPQUFBO0FBQ1IsOEdBQUEsaUJBQWlCLE9BQUE7QUFDakIsNkdBQUEsZ0JBQWdCLE9BQUE7QUFDaEIsOEdBQUEsaUJBQWlCLE9BQUE7QUFDakIsNkdBQUEsZ0JBQWdCLE9BQUE7QUFFbEIscUNBQW1DO0FBQTFCLGlHQUFBLE1BQU0sT0FBQTtBQUNmLHlDQUtxQjtBQUpuQixzR0FBQSxTQUFTLE9BQUE7QUFFVCxxSEFBQSx3QkFBd0IsT0FBQTtBQUN4QixtSEFBQSxzQkFBc0IsT0FBQTtBQUV4QiwyQ0FLc0I7QUFKcEIsd0dBQUEsVUFBVSxPQUFBO0FBQ1YsOEdBQUEsZ0JBQWdCLE9BQUE7QUFDaEIscUhBQUEsdUJBQXVCLE9BQUE7QUFDdkIsbUhBQUEscUJBQXFCLE9BQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQge1xuICBSZXNvdXJjZSxcbiAgTUVESUNBTF9SRVNPVVJDRVMsXG4gIFBVQkxJQ19SRVNPVVJDRVMsXG4gIGlzTWVkaWNhbFJlc291cmNlLFxuICBpc1B1YmxpY1Jlc291cmNlLFxufSBmcm9tIFwiLi9yZXNvdXJjZXNcIjtcbmV4cG9ydCB7IEFjdGlvbiB9IGZyb20gXCIuL2FjdGlvbnNcIjtcbmV4cG9ydCB7XG4gIE9wZXJhdGlvbixcbiAgT1BFUkFUSU9OLFxuICBnZXRSZXNvdXJjZUZyb21PcGVyYXRpb24sXG4gIGdldEFjdGlvbkZyb21PcGVyYXRpb24sXG59IGZyb20gXCIuL29wZXJhdGlvblwiO1xuZXhwb3J0IHtcbiAgT3BlcmF0aW9ucyxcbiAgZ2V0QWxsT3BlcmF0aW9ucyxcbiAgZ2V0T3BlcmF0aW9uc0J5UmVzb3VyY2UsXG4gIGdldE9wZXJhdGlvbnNCeUFjdGlvbixcbn0gZnJvbSBcIi4vcHJlZGVmaW5lZFwiO1xuIl19
@@ -1,5 +1,9 @@
1
1
  import { Action } from "./actions";
2
2
  import { Resource } from "./resources";
3
+ /**
4
+ * Operation string type in RESOURCE:ACTION format
5
+ */
6
+ export type OPERATION = `${Resource}:${Action}`;
3
7
  /**
4
8
  * Operation in RESOURCE:ACTION format
5
9
  */
@@ -16,7 +20,7 @@ export declare class Operation {
16
20
  /**
17
21
  * Get operation string in RESOURCE:ACTION format
18
22
  */
19
- toString(): string;
23
+ toString(): OPERATION;
20
24
  /**
21
25
  * Check if two operations are equal
22
26
  */
@@ -27,6 +31,30 @@ export declare class Operation {
27
31
  toJSON(): {
28
32
  resource: Resource;
29
33
  action: Action;
30
- operation: string;
34
+ operation: OPERATION;
31
35
  };
32
36
  }
37
+ /**
38
+ * Extract Resource from an OPERATION string
39
+ * @param operation - Operation string in RESOURCE:ACTION format
40
+ * @returns Resource or null if invalid
41
+ *
42
+ * @example
43
+ * ```ts
44
+ * getResourceFromOperation("PATIENT:READ") // Returns: Resource.PATIENT
45
+ * getResourceFromOperation("INVALID:ACTION") // Returns: null
46
+ * ```
47
+ */
48
+ export declare function getResourceFromOperation(operation: string): Resource | null;
49
+ /**
50
+ * Extract Action from an OPERATION string
51
+ * @param operation - Operation string in RESOURCE:ACTION format
52
+ * @returns Action or null if invalid
53
+ *
54
+ * @example
55
+ * ```ts
56
+ * getActionFromOperation("PATIENT:READ") // Returns: Action.READ
57
+ * getActionFromOperation("PATIENT:INVALID") // Returns: null
58
+ * ```
59
+ */
60
+ export declare function getActionFromOperation(operation: string): Action | null;
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Operation = void 0;
4
+ exports.getResourceFromOperation = getResourceFromOperation;
5
+ exports.getActionFromOperation = getActionFromOperation;
4
6
  const actions_1 = require("./actions");
5
7
  const resources_1 = require("./resources");
6
8
  /**
@@ -58,4 +60,50 @@ class Operation {
58
60
  }
59
61
  }
60
62
  exports.Operation = Operation;
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29wZXJhdGlvbnMvb3BlcmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVDQUFtQztBQUNuQywyQ0FBdUM7QUFFdkM7O0dBRUc7QUFDSCxNQUFhLFNBQVM7SUE0QkY7SUFDQTtJQTVCbEI7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsZUFBdUI7UUFDdkMsTUFBTSxLQUFLLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsTUFBTSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUM7UUFFdkMsb0JBQW9CO1FBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLG9CQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBdUIsQ0FBQyxFQUFFLENBQUM7WUFDL0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsa0JBQWtCO1FBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGdCQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBbUIsQ0FBQyxFQUFFLENBQUM7WUFDekQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxJQUFJLFNBQVMsQ0FBQyxXQUF1QixFQUFFLFNBQW1CLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsWUFDa0IsUUFBa0IsRUFDbEIsTUFBYztRQURkLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUM3QixDQUFDO0lBRUo7O09BRUc7SUFDSCxRQUFRO1FBQ04sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxLQUFnQjtRQUNyQixPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDMUUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTTtRQUNKLE9BQU87WUFDTCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO1NBQzNCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF4REQsOEJBd0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aW9uIH0gZnJvbSBcIi4vYWN0aW9uc1wiO1xuaW1wb3J0IHsgUmVzb3VyY2UgfSBmcm9tIFwiLi9yZXNvdXJjZXNcIjtcblxuLyoqXG4gKiBPcGVyYXRpb24gaW4gUkVTT1VSQ0U6QUNUSU9OIGZvcm1hdFxuICovXG5leHBvcnQgY2xhc3MgT3BlcmF0aW9uIHtcbiAgLyoqXG4gICAqIENyZWF0ZSBvcGVyYXRpb24gZnJvbSBzdHJpbmdcbiAgICogQHBhcmFtIG9wZXJhdGlvblN0cmluZyAtIFN0cmluZyBpbiBSRVNPVVJDRTpBQ1RJT04gZm9ybWF0XG4gICAqIEByZXR1cm5zIE9wZXJhdGlvbiBpbnN0YW5jZSBvciBudWxsIGlmIGludmFsaWRcbiAgICovXG4gIHN0YXRpYyBmcm9tU3RyaW5nKG9wZXJhdGlvblN0cmluZzogc3RyaW5nKTogT3BlcmF0aW9uIHwgbnVsbCB7XG4gICAgY29uc3QgcGFydHMgPSBvcGVyYXRpb25TdHJpbmcuc3BsaXQoXCI6XCIpO1xuICAgIGlmIChwYXJ0cy5sZW5ndGggIT09IDIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IFtyZXNvdXJjZVN0ciwgYWN0aW9uU3RyXSA9IHBhcnRzO1xuXG4gICAgLy8gVmFsaWRhdGUgcmVzb3VyY2VcbiAgICBpZiAoIU9iamVjdC52YWx1ZXMoUmVzb3VyY2UpLmluY2x1ZGVzKHJlc291cmNlU3RyIGFzIFJlc291cmNlKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gVmFsaWRhdGUgYWN0aW9uXG4gICAgaWYgKCFPYmplY3QudmFsdWVzKEFjdGlvbikuaW5jbHVkZXMoYWN0aW9uU3RyIGFzIEFjdGlvbikpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgT3BlcmF0aW9uKHJlc291cmNlU3RyIGFzIFJlc291cmNlLCBhY3Rpb25TdHIgYXMgQWN0aW9uKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogUmVzb3VyY2UsXG4gICAgcHVibGljIHJlYWRvbmx5IGFjdGlvbjogQWN0aW9uLFxuICApIHt9XG5cbiAgLyoqXG4gICAqIEdldCBvcGVyYXRpb24gc3RyaW5nIGluIFJFU09VUkNFOkFDVElPTiBmb3JtYXRcbiAgICovXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMucmVzb3VyY2V9OiR7dGhpcy5hY3Rpb259YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0d28gb3BlcmF0aW9ucyBhcmUgZXF1YWxcbiAgICovXG4gIGVxdWFscyhvdGhlcjogT3BlcmF0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2UgPT09IG90aGVyLnJlc291cmNlICYmIHRoaXMuYWN0aW9uID09PSBvdGhlci5hY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCB0byBKU09OIHJlcHJlc2VudGF0aW9uXG4gICAqL1xuICB0b0pTT04oKTogeyByZXNvdXJjZTogUmVzb3VyY2U7IGFjdGlvbjogQWN0aW9uOyBvcGVyYXRpb246IHN0cmluZyB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgcmVzb3VyY2U6IHRoaXMucmVzb3VyY2UsXG4gICAgICBhY3Rpb246IHRoaXMuYWN0aW9uLFxuICAgICAgb3BlcmF0aW9uOiB0aGlzLnRvU3RyaW5nKCksXG4gICAgfTtcbiAgfVxufVxuIl19
63
+ /**
64
+ * Extract Resource from an OPERATION string
65
+ * @param operation - Operation string in RESOURCE:ACTION format
66
+ * @returns Resource or null if invalid
67
+ *
68
+ * @example
69
+ * ```ts
70
+ * getResourceFromOperation("PATIENT:READ") // Returns: Resource.PATIENT
71
+ * getResourceFromOperation("INVALID:ACTION") // Returns: null
72
+ * ```
73
+ */
74
+ function getResourceFromOperation(operation) {
75
+ const parts = operation.split(":");
76
+ if (parts.length !== 2) {
77
+ return null;
78
+ }
79
+ const [resourceStr] = parts;
80
+ // Validate resource
81
+ if (Object.values(resources_1.Resource).includes(resourceStr)) {
82
+ return resourceStr;
83
+ }
84
+ return null;
85
+ }
86
+ /**
87
+ * Extract Action from an OPERATION string
88
+ * @param operation - Operation string in RESOURCE:ACTION format
89
+ * @returns Action or null if invalid
90
+ *
91
+ * @example
92
+ * ```ts
93
+ * getActionFromOperation("PATIENT:READ") // Returns: Action.READ
94
+ * getActionFromOperation("PATIENT:INVALID") // Returns: null
95
+ * ```
96
+ */
97
+ function getActionFromOperation(operation) {
98
+ const parts = operation.split(":");
99
+ if (parts.length !== 2) {
100
+ return null;
101
+ }
102
+ const [, actionStr] = parts;
103
+ // Validate action
104
+ if (Object.values(actions_1.Action).includes(actionStr)) {
105
+ return actionStr;
106
+ }
107
+ return null;
108
+ }
109
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL29wZXJhdGlvbnMvb3BlcmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWdGQSw0REFjQztBQWFELHdEQWNDO0FBekhELHVDQUFtQztBQUNuQywyQ0FBdUM7QUFPdkM7O0dBRUc7QUFDSCxNQUFhLFNBQVM7SUE0QkY7SUFDQTtJQTVCbEI7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsZUFBdUI7UUFDdkMsTUFBTSxLQUFLLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QyxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkIsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsTUFBTSxDQUFDLFdBQVcsRUFBRSxTQUFTLENBQUMsR0FBRyxLQUFLLENBQUM7UUFFdkMsb0JBQW9CO1FBQ3BCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLG9CQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsV0FBdUIsQ0FBQyxFQUFFLENBQUM7WUFDL0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsa0JBQWtCO1FBQ2xCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGdCQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBbUIsQ0FBQyxFQUFFLENBQUM7WUFDekQsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBRUQsT0FBTyxJQUFJLFNBQVMsQ0FBQyxXQUF1QixFQUFFLFNBQW1CLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsWUFDa0IsUUFBa0IsRUFDbEIsTUFBYztRQURkLGFBQVEsR0FBUixRQUFRLENBQVU7UUFDbEIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtJQUM3QixDQUFDO0lBRUo7O09BRUc7SUFDSCxRQUFRO1FBQ04sT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBZSxDQUFDO0lBQ3hELENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU0sQ0FBQyxLQUFnQjtRQUNyQixPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDMUUsQ0FBQztJQUVEOztPQUVHO0lBQ0gsTUFBTTtRQUNKLE9BQU87WUFDTCxRQUFRLEVBQUUsSUFBSSxDQUFDLFFBQVE7WUFDdkIsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNO1lBQ25CLFNBQVMsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFO1NBQzNCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF4REQsOEJBd0RDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILFNBQWdCLHdCQUF3QixDQUFDLFNBQWlCO0lBQ3hELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxLQUFLLENBQUM7SUFFNUIsb0JBQW9CO0lBQ3BCLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxvQkFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFdBQXVCLENBQUMsRUFBRSxDQUFDO1FBQzlELE9BQU8sV0FBdUIsQ0FBQztJQUNqQyxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQ7Ozs7Ozs7Ozs7R0FVRztBQUNILFNBQWdCLHNCQUFzQixDQUFDLFNBQWlCO0lBQ3RELE1BQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELE1BQU0sQ0FBQyxFQUFFLFNBQVMsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUU1QixrQkFBa0I7SUFDbEIsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLGdCQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsU0FBbUIsQ0FBQyxFQUFFLENBQUM7UUFDeEQsT0FBTyxTQUFtQixDQUFDO0lBQzdCLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBY3Rpb24gfSBmcm9tIFwiLi9hY3Rpb25zXCI7XG5pbXBvcnQgeyBSZXNvdXJjZSB9IGZyb20gXCIuL3Jlc291cmNlc1wiO1xuXG4vKipcbiAqIE9wZXJhdGlvbiBzdHJpbmcgdHlwZSBpbiBSRVNPVVJDRTpBQ1RJT04gZm9ybWF0XG4gKi9cbmV4cG9ydCB0eXBlIE9QRVJBVElPTiA9IGAke1Jlc291cmNlfToke0FjdGlvbn1gO1xuXG4vKipcbiAqIE9wZXJhdGlvbiBpbiBSRVNPVVJDRTpBQ1RJT04gZm9ybWF0XG4gKi9cbmV4cG9ydCBjbGFzcyBPcGVyYXRpb24ge1xuICAvKipcbiAgICogQ3JlYXRlIG9wZXJhdGlvbiBmcm9tIHN0cmluZ1xuICAgKiBAcGFyYW0gb3BlcmF0aW9uU3RyaW5nIC0gU3RyaW5nIGluIFJFU09VUkNFOkFDVElPTiBmb3JtYXRcbiAgICogQHJldHVybnMgT3BlcmF0aW9uIGluc3RhbmNlIG9yIG51bGwgaWYgaW52YWxpZFxuICAgKi9cbiAgc3RhdGljIGZyb21TdHJpbmcob3BlcmF0aW9uU3RyaW5nOiBzdHJpbmcpOiBPcGVyYXRpb24gfCBudWxsIHtcbiAgICBjb25zdCBwYXJ0cyA9IG9wZXJhdGlvblN0cmluZy5zcGxpdChcIjpcIik7XG4gICAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMikge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgY29uc3QgW3Jlc291cmNlU3RyLCBhY3Rpb25TdHJdID0gcGFydHM7XG5cbiAgICAvLyBWYWxpZGF0ZSByZXNvdXJjZVxuICAgIGlmICghT2JqZWN0LnZhbHVlcyhSZXNvdXJjZSkuaW5jbHVkZXMocmVzb3VyY2VTdHIgYXMgUmVzb3VyY2UpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICAvLyBWYWxpZGF0ZSBhY3Rpb25cbiAgICBpZiAoIU9iamVjdC52YWx1ZXMoQWN0aW9uKS5pbmNsdWRlcyhhY3Rpb25TdHIgYXMgQWN0aW9uKSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBPcGVyYXRpb24ocmVzb3VyY2VTdHIgYXMgUmVzb3VyY2UsIGFjdGlvblN0ciBhcyBBY3Rpb24pO1xuICB9XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlOiBSZXNvdXJjZSxcbiAgICBwdWJsaWMgcmVhZG9ubHkgYWN0aW9uOiBBY3Rpb24sXG4gICkge31cblxuICAvKipcbiAgICogR2V0IG9wZXJhdGlvbiBzdHJpbmcgaW4gUkVTT1VSQ0U6QUNUSU9OIGZvcm1hdFxuICAgKi9cbiAgdG9TdHJpbmcoKTogT1BFUkFUSU9OIHtcbiAgICByZXR1cm4gYCR7dGhpcy5yZXNvdXJjZX06JHt0aGlzLmFjdGlvbn1gIGFzIE9QRVJBVElPTjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiB0d28gb3BlcmF0aW9ucyBhcmUgZXF1YWxcbiAgICovXG4gIGVxdWFscyhvdGhlcjogT3BlcmF0aW9uKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2UgPT09IG90aGVyLnJlc291cmNlICYmIHRoaXMuYWN0aW9uID09PSBvdGhlci5hY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCB0byBKU09OIHJlcHJlc2VudGF0aW9uXG4gICAqL1xuICB0b0pTT04oKTogeyByZXNvdXJjZTogUmVzb3VyY2U7IGFjdGlvbjogQWN0aW9uOyBvcGVyYXRpb246IE9QRVJBVElPTiB9IHtcbiAgICByZXR1cm4ge1xuICAgICAgcmVzb3VyY2U6IHRoaXMucmVzb3VyY2UsXG4gICAgICBhY3Rpb246IHRoaXMuYWN0aW9uLFxuICAgICAgb3BlcmF0aW9uOiB0aGlzLnRvU3RyaW5nKCksXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIEV4dHJhY3QgUmVzb3VyY2UgZnJvbSBhbiBPUEVSQVRJT04gc3RyaW5nXG4gKiBAcGFyYW0gb3BlcmF0aW9uIC0gT3BlcmF0aW9uIHN0cmluZyBpbiBSRVNPVVJDRTpBQ1RJT04gZm9ybWF0XG4gKiBAcmV0dXJucyBSZXNvdXJjZSBvciBudWxsIGlmIGludmFsaWRcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGdldFJlc291cmNlRnJvbU9wZXJhdGlvbihcIlBBVElFTlQ6UkVBRFwiKSAvLyBSZXR1cm5zOiBSZXNvdXJjZS5QQVRJRU5UXG4gKiBnZXRSZXNvdXJjZUZyb21PcGVyYXRpb24oXCJJTlZBTElEOkFDVElPTlwiKSAvLyBSZXR1cm5zOiBudWxsXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc291cmNlRnJvbU9wZXJhdGlvbihvcGVyYXRpb246IHN0cmluZyk6IFJlc291cmNlIHwgbnVsbCB7XG4gIGNvbnN0IHBhcnRzID0gb3BlcmF0aW9uLnNwbGl0KFwiOlwiKTtcbiAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgW3Jlc291cmNlU3RyXSA9IHBhcnRzO1xuXG4gIC8vIFZhbGlkYXRlIHJlc291cmNlXG4gIGlmIChPYmplY3QudmFsdWVzKFJlc291cmNlKS5pbmNsdWRlcyhyZXNvdXJjZVN0ciBhcyBSZXNvdXJjZSkpIHtcbiAgICByZXR1cm4gcmVzb3VyY2VTdHIgYXMgUmVzb3VyY2U7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBFeHRyYWN0IEFjdGlvbiBmcm9tIGFuIE9QRVJBVElPTiBzdHJpbmdcbiAqIEBwYXJhbSBvcGVyYXRpb24gLSBPcGVyYXRpb24gc3RyaW5nIGluIFJFU09VUkNFOkFDVElPTiBmb3JtYXRcbiAqIEByZXR1cm5zIEFjdGlvbiBvciBudWxsIGlmIGludmFsaWRcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIGdldEFjdGlvbkZyb21PcGVyYXRpb24oXCJQQVRJRU5UOlJFQURcIikgLy8gUmV0dXJuczogQWN0aW9uLlJFQURcbiAqIGdldEFjdGlvbkZyb21PcGVyYXRpb24oXCJQQVRJRU5UOklOVkFMSURcIikgLy8gUmV0dXJuczogbnVsbFxuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRBY3Rpb25Gcm9tT3BlcmF0aW9uKG9wZXJhdGlvbjogc3RyaW5nKTogQWN0aW9uIHwgbnVsbCB7XG4gIGNvbnN0IHBhcnRzID0gb3BlcmF0aW9uLnNwbGl0KFwiOlwiKTtcbiAgaWYgKHBhcnRzLmxlbmd0aCAhPT0gMikge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgWywgYWN0aW9uU3RyXSA9IHBhcnRzO1xuXG4gIC8vIFZhbGlkYXRlIGFjdGlvblxuICBpZiAoT2JqZWN0LnZhbHVlcyhBY3Rpb24pLmluY2x1ZGVzKGFjdGlvblN0ciBhcyBBY3Rpb24pKSB7XG4gICAgcmV0dXJuIGFjdGlvblN0ciBhcyBBY3Rpb247XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cbiJdfQ==
package/package.json CHANGED
@@ -30,7 +30,7 @@
30
30
  "publishConfig": {
31
31
  "access": "public"
32
32
  },
33
- "version": "0.0.2",
33
+ "version": "0.0.3",
34
34
  "jest": {
35
35
  "coverageProvider": "v8",
36
36
  "testMatch": [