@aerokit/sdk 14.6.0 → 14.9.0
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.
|
@@ -37,6 +37,9 @@ class Command {
|
|
|
37
37
|
if (options?.workingDirectory) {
|
|
38
38
|
processExecutionOptions.setWorkingDirectory(options.workingDirectory);
|
|
39
39
|
}
|
|
40
|
+
if (options?.timeoutMillis) {
|
|
41
|
+
processExecutionOptions.setTimeoutMillis(options.timeoutMillis);
|
|
42
|
+
}
|
|
40
43
|
const resultJson = CommandFacade.execute(command, add, remove, processExecutionOptions);
|
|
41
44
|
return JSON.parse(resultJson);
|
|
42
45
|
}
|
|
@@ -44,4 +47,4 @@ class Command {
|
|
|
44
47
|
if (typeof module !== "undefined") {
|
|
45
48
|
module.exports = Command;
|
|
46
49
|
}
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3BsYXRmb3JtL2NvbW1hbmQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQG1vZHVsZSBwbGF0Zm9ybS9jb21tYW5kXG4gKiBAcGFja2FnZSBAYWVyb2tpdC9zZGsvcGxhdGZvcm1cbiAqIEBuYW1lIENvbW1hbmRcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGUgQ29tbWFuZCBtb2R1bGUgcHJvdmlkZXMgYSBzdGF0aWMgdXRpbGl0eSBjbGFzcyBmb3IgZXhlY3V0aW5nIHN5c3RlbSBjb21tYW5kcyB0aHJvdWdoIHRoZSBwbGF0Zm9ybSdzIENvbW1hbmRFbmdpbmUuIEl0IGFsbG93cyBkZXZlbG9wZXJzIHRvIHJ1biBzaGVsbCBjb21tYW5kcyB3aXRoIGNvbmZpZ3VyYWJsZSBvcHRpb25zLCBpbmNsdWRpbmcgd29ya2luZyBkaXJlY3RvcnksIGV4ZWN1dGlvbiB0aW1lb3V0IGFuZCBlbnZpcm9ubWVudCB2YXJpYWJsZSBtYW5hZ2VtZW50LiBUaGUgbW9kdWxlIGFic3RyYWN0cyB0aGUgY29tcGxleGl0aWVzIG9mIHByb2Nlc3MgZXhlY3V0aW9uLCBwcm92aWRpbmcgYSBzaW1wbGUgaW50ZXJmYWNlIGZvciBpbnRlZ3JhdGluZyBjb21tYW5kIGV4ZWN1dGlvbiBpbnRvIGFwcGxpY2F0aW9ucy5cbiAqXG4gKiAjIyMgS2V5IEZlYXR1cmVzOlxuICogLSAqKkNvbW1hbmQgRXhlY3V0aW9uKio6IFRoZSBgZXhlY3V0ZWAgbWV0aG9kIGFsbG93cyBmb3IgcnVubmluZyBzeXN0ZW0gY29tbWFuZHMgd2l0aCBzcGVjaWZpZWQgb3B0aW9ucyBhbmQgZW52aXJvbm1lbnQgdmFyaWFibGUgY29uZmlndXJhdGlvbnMuXG4gKiAtICoqU3RydWN0dXJlZCBPdXRwdXQqKjogVGhlIG1ldGhvZCByZXR1cm5zIGEgc3RydWN0dXJlZCBvdXRwdXQgY29udGFpbmluZyB0aGUgZXhpdCBjb2RlLCBzdGFuZGFyZCBvdXRwdXQsIGFuZCBlcnJvciBvdXRwdXQgb2YgdGhlIGV4ZWN1dGVkIGNvbW1hbmQuXG4gKiAtICoqVGltZW91dHMqKjogQSBgdGltZW91dE1pbGxpc2Agb3B0aW9uIGRlc3Ryb3lzIGEgY29tbWFuZCB0aGF0IG91dGxpdmVzIGl0LCBzbyBhIGh1bmcgcHJvY2VzcyBjYW5ub3QgYmxvY2sgdGhlIGNhbGxlciBpbmRlZmluaXRlbHkuXG4gKiBcbiAqICMjIyBVc2UgQ2FzZXM6XG4gKiAtICoqU3lzdGVtIEludGVncmF0aW9uKio6IFRoaXMgbW9kdWxlIGlzIGlkZWFsIGZvciBhcHBsaWNhdGlvbnMgdGhhdCBuZWVkIHRvIGludGVyYWN0IHdpdGggdGhlIHVuZGVybHlpbmcgb3BlcmF0aW5nIHN5c3RlbSBvciBleGVjdXRlIGV4dGVybmFsIHByb2Nlc3NlcyBhcyBwYXJ0IG9mIHRoZWlyIGZ1bmN0aW9uYWxpdHkuXG4gKiAtICoqQXV0b21hdGlvbiBhbmQgU2NyaXB0aW5nKio6IERldmVsb3BlcnMgY2FuIHVzZSB0aGlzIG1vZHVsZSB0byBhdXRvbWF0ZSB0YXNrcyBieSBleGVjdXRpbmcgc2hlbGwgY29tbWFuZHMgZnJvbSB3aXRoaW4gdGhlaXIgYXBwbGljYXRpb25zLlxuICogXG4gKiAjIyMgRXhhbXBsZSBVc2FnZTpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcIkBhZXJva2l0L3Nkay9wbGF0Zm9ybVwiO1xuICogXG4gKiBjb25zdCByZXN1bHQgPSBDb21tYW5kLmV4ZWN1dGUoXCJscyAtbFwiLCB7IHdvcmtpbmdEaXJlY3Rvcnk6IFwiL2hvbWUvdXNlclwiIH0sIHsgXCJFTlZfVkFSXCI6IFwidmFsdWVcIiB9LCBbXCJPTERfRU5WX1ZBUlwiXSk7XG4gKiBjb25zb2xlLmxvZyhcIkV4aXQgQ29kZTpcIiwgcmVzdWx0LmV4aXRDb2RlKTtcbiAqIGNvbnNvbGUubG9nKFwiU3RhbmRhcmQgT3V0cHV0OlwiLCByZXN1bHQuc3RhbmRhcmRPdXRwdXQpO1xuICogY29uc29sZS5sb2coXCJFcnJvciBPdXRwdXQ6XCIsIHJlc3VsdC5lcnJvck91dHB1dCk7XG4gKlxuICogLy8gR2l2ZSB1cCBvbiBhIGNvbW1hbmQgdGhhdCB0YWtlcyBsb25nZXIgdGhhbiBmaXZlIHNlY29uZHNcbiAqIENvbW1hbmQuZXhlY3V0ZShcIi4vbG9uZy1ydW5uaW5nLnNoXCIsIHsgdGltZW91dE1pbGxpczogNTAwMCB9KTtcbiAqIGBgYFxuICovXG5cbmNvbnN0IENvbW1hbmRGYWNhZGUgPSBKYXZhLnR5cGUoXCJvcmcuZWNsaXBzZS5kaXJpZ2libGUuY29tcG9uZW50cy5hcGkucGxhdGZvcm0uQ29tbWFuZEZhY2FkZVwiKTtcbmNvbnN0IFByb2Nlc3NFeGVjdXRpb25PcHRpb25zID0gSmF2YS50eXBlKFwib3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbW1vbnMucHJvY2Vzcy5leGVjdXRpb24uUHJvY2Vzc0V4ZWN1dGlvbk9wdGlvbnNcIik7XG5cbi8qKlxuICogRGVmaW5lcyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgY29tbWFuZCBleGVjdXRpb24gcHJvY2Vzcy5cbiAqL1xuaW50ZXJmYWNlIENvbW1hbmRPcHRpb25zIHtcblx0LyoqIFRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdGhlIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZC4gKi9cblx0d29ya2luZ0RpcmVjdG9yeT86IHN0cmluZ1xuXHQvKipcblx0ICogVGhlIG1heGltdW0gdGltZSBpbiBtaWxsaXNlY29uZHMgdGhlIGNvbW1hbmQgaXMgYWxsb3dlZCB0byBydW4uIEEgY29tbWFuZCBzdGlsbCBydW5uaW5nIHdoZW4gdGhlXG5cdCAqIHRpbWVvdXQgZWxhcHNlcyBpcyBkZXN0cm95ZWQgYW5kIHRoZSBleGVjdXRpb24gdGhyb3dzIGluc3RlYWQgb2YgcmV0dXJuaW5nIGFuIGV4aXQgY29kZS5cblx0ICogT21pdCB0byBsZXQgdGhlIGNvbW1hbmQgcnVuIGZvciBhcyBsb25nIGFzIGl0IG5lZWRzLlxuXHQgKi9cblx0dGltZW91dE1pbGxpcz86IG51bWJlclxufVxuXG4vKipcbiAqIERlZmluZXMga2V5LXZhbHVlIHBhaXJzIGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gYWRkIGR1cmluZyBleGVjdXRpb24uXG4gKi9cbmludGVyZmFjZSBFbnZpcm9ubWVudFZhcmlhYmxlcyB7XG5cdFtrZXk6IHN0cmluZ106IHN0cmluZ1xufVxuXG4vKipcbiAqIERlZmluZXMgdGhlIHN0cnVjdHVyZWQgb3V0cHV0IHJldHVybmVkIGFmdGVyIGNvbW1hbmQgZXhlY3V0aW9uLlxuICovXG5pbnRlcmZhY2UgQ29tbWFuZE91dHB1dCB7XG5cdC8qKiBUaGUgZXhpdCBjb2RlIHJldHVybmVkIGJ5IHRoZSBleGVjdXRlZCBwcm9jZXNzICgwIHVzdWFsbHkgbWVhbnMgc3VjY2VzcykuICovXG5cdGV4aXRDb2RlOiBudW1iZXI7XG5cdC8qKiBUaGUgc3RhbmRhcmQgb3V0cHV0IHN0cmVhbSBjb250ZW50LiAqL1xuXHRzdGFuZGFyZE91dHB1dDogc3RyaW5nO1xuXHQvKiogVGhlIHN0YW5kYXJkIGVycm9yIHN0cmVhbSBjb250ZW50LiAqL1xuXHRlcnJvck91dHB1dDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEBjbGFzcyBDb21tYW5kXG4gKiBAZGVzY3JpcHRpb24gU3RhdGljIHV0aWxpdHkgY2xhc3MgZm9yIGV4ZWN1dGluZyBzeXN0ZW0gY29tbWFuZHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb21tYW5kIHtcblxuXHQvKipcblx0ICogRXhlY3V0ZXMgYSBzeXN0ZW0gY29tbWFuZCB3aXRoIHNwZWNpZmllZCBjb25maWd1cmF0aW9uLCBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGFuZCBleGNsdXNpb25zLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gY29tbWFuZCBUaGUgY29tbWFuZCBzdHJpbmcgdG8gZXhlY3V0ZSAoZS5nLiwgXCJscyAtbFwiKS5cblx0ICogQHBhcmFtIHtDb21tYW5kT3B0aW9uc30gW29wdGlvbnNdIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBleGVjdXRpb24gZW52aXJvbm1lbnQuXG5cdCAqIEBwYXJhbSB7RW52aXJvbm1lbnRWYXJpYWJsZXN9IFthZGRdIE9wdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBhZGQgdG8gdGhlIHByb2Nlc3MuXG5cdCAqIEBwYXJhbSB7c3RyaW5nW119IFtyZW1vdmVdIE9wdGlvbmFsIGxpc3Qgb2YgZW52aXJvbm1lbnQgdmFyaWFibGUga2V5cyB0byByZW1vdmUgZnJvbSB0aGUgcHJvY2Vzcy5cblx0ICogQHJldHVybnMge0NvbW1hbmRPdXRwdXR9IEEgc3RydWN0dXJlZCBvYmplY3QgY29udGFpbmluZyB0aGUgZXhpdCBjb2RlIGFuZCBvdXRwdXQgc3RyZWFtcy5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZXhlY3V0ZShjb21tYW5kOiBzdHJpbmcsIG9wdGlvbnM/OiBDb21tYW5kT3B0aW9ucywgYWRkPzogRW52aXJvbm1lbnRWYXJpYWJsZXMsIHJlbW92ZT86IHN0cmluZ1tdKTogQ29tbWFuZE91dHB1dCB7XG5cdFx0Ly8gSW5zdGFudGlhdGUgdGhlIG5hdGl2ZSBKYXZhIFByb2Nlc3NFeGVjdXRpb25PcHRpb25zIG9iamVjdFxuXHRcdGNvbnN0IHByb2Nlc3NFeGVjdXRpb25PcHRpb25zID0gbmV3IFByb2Nlc3NFeGVjdXRpb25PcHRpb25zKCk7XG5cblx0XHRpZiAob3B0aW9ucz8ud29ya2luZ0RpcmVjdG9yeSkge1xuXHRcdFx0cHJvY2Vzc0V4ZWN1dGlvbk9wdGlvbnMuc2V0V29ya2luZ0RpcmVjdG9yeShvcHRpb25zLndvcmtpbmdEaXJlY3RvcnkpO1xuXHRcdH1cblxuXHRcdGlmIChvcHRpb25zPy50aW1lb3V0TWlsbGlzKSB7XG5cdFx0XHRwcm9jZXNzRXhlY3V0aW9uT3B0aW9ucy5zZXRUaW1lb3V0TWlsbGlzKG9wdGlvbnMudGltZW91dE1pbGxpcyk7XG5cdFx0fVxuXG5cdFx0Ly8gVGhlIGZhY2FkZSByZXR1cm5zIGEgSlNPTiBzdHJpbmcsIHdoaWNoIHdlIHBhcnNlIGludG8gdGhlIENvbW1hbmRPdXRwdXQgaW50ZXJmYWNlXG5cdFx0Y29uc3QgcmVzdWx0SnNvbiA9IENvbW1hbmRGYWNhZGUuZXhlY3V0ZShjb21tYW5kLCBhZGQsIHJlbW92ZSwgcHJvY2Vzc0V4ZWN1dGlvbk9wdGlvbnMpO1xuXHRcdHJldHVybiBKU09OLnBhcnNlKHJlc3VsdEpzb24pIGFzIENvbW1hbmRPdXRwdXQ7XG5cdH1cbn1cblxuLy8gQHRzLWlnbm9yZVxuaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnKSB7XG5cdC8vIEB0cy1pZ25vcmVcblx0bW9kdWxlLmV4cG9ydHMgPSBDb21tYW5kO1xufSJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQStCQSxNQUFNLGdCQUFnQixLQUFLLEtBQUssNkRBQTZEO0FBQzdGLE1BQU0sMEJBQTBCLEtBQUssS0FBSyx5RUFBeUU7QUF1QzVHLE1BQU0sUUFBUTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBV3BCLE9BQWMsUUFBUSxTQUFpQixTQUEwQixLQUE0QixRQUFrQztBQUU5SCxVQUFNLDBCQUEwQixJQUFJLHdCQUF3QjtBQUU1RCxRQUFJLFNBQVMsa0JBQWtCO0FBQzlCLDhCQUF3QixvQkFBb0IsUUFBUSxnQkFBZ0I7QUFBQSxJQUNyRTtBQUVBLFFBQUksU0FBUyxlQUFlO0FBQzNCLDhCQUF3QixpQkFBaUIsUUFBUSxhQUFhO0FBQUEsSUFDL0Q7QUFHQSxVQUFNLGFBQWEsY0FBYyxRQUFRLFNBQVMsS0FBSyxRQUFRLHVCQUF1QjtBQUN0RixXQUFPLEtBQUssTUFBTSxVQUFVO0FBQUEsRUFDN0I7QUFDRDtBQUdBLElBQUksT0FBTyxXQUFXLGFBQWE7QUFFbEMsU0FBTyxVQUFVO0FBQ2xCOyIsCiAgIm5hbWVzIjogW10KfQo=
|
|
@@ -4,11 +4,12 @@
|
|
|
4
4
|
* @name Command
|
|
5
5
|
* @overview
|
|
6
6
|
*
|
|
7
|
-
* The Command module provides a static utility class for executing system commands through the platform's CommandEngine. It allows developers to run shell commands with configurable options, including working directory and environment variable management. The module abstracts the complexities of process execution, providing a simple interface for integrating command execution into applications.
|
|
7
|
+
* The Command module provides a static utility class for executing system commands through the platform's CommandEngine. It allows developers to run shell commands with configurable options, including working directory, execution timeout and environment variable management. The module abstracts the complexities of process execution, providing a simple interface for integrating command execution into applications.
|
|
8
8
|
*
|
|
9
9
|
* ### Key Features:
|
|
10
10
|
* - **Command Execution**: The `execute` method allows for running system commands with specified options and environment variable configurations.
|
|
11
11
|
* - **Structured Output**: The method returns a structured output containing the exit code, standard output, and error output of the executed command.
|
|
12
|
+
* - **Timeouts**: A `timeoutMillis` option destroys a command that outlives it, so a hung process cannot block the caller indefinitely.
|
|
12
13
|
*
|
|
13
14
|
* ### Use Cases:
|
|
14
15
|
* - **System Integration**: This module is ideal for applications that need to interact with the underlying operating system or execute external processes as part of their functionality.
|
|
@@ -22,6 +23,9 @@
|
|
|
22
23
|
* console.log("Exit Code:", result.exitCode);
|
|
23
24
|
* console.log("Standard Output:", result.standardOutput);
|
|
24
25
|
* console.log("Error Output:", result.errorOutput);
|
|
26
|
+
*
|
|
27
|
+
* // Give up on a command that takes longer than five seconds
|
|
28
|
+
* Command.execute("./long-running.sh", { timeoutMillis: 5000 });
|
|
25
29
|
* ```
|
|
26
30
|
*/
|
|
27
31
|
/**
|
|
@@ -29,7 +33,13 @@
|
|
|
29
33
|
*/
|
|
30
34
|
interface CommandOptions {
|
|
31
35
|
/** The directory in which the command will be executed. */
|
|
32
|
-
workingDirectory
|
|
36
|
+
workingDirectory?: string;
|
|
37
|
+
/**
|
|
38
|
+
* The maximum time in milliseconds the command is allowed to run. A command still running when the
|
|
39
|
+
* timeout elapses is destroyed and the execution throws instead of returning an exit code.
|
|
40
|
+
* Omit to let the command run for as long as it needs.
|
|
41
|
+
*/
|
|
42
|
+
timeoutMillis?: number;
|
|
33
43
|
}
|
|
34
44
|
/**
|
|
35
45
|
* Defines key-value pairs for environment variables to add during execution.
|
|
@@ -15,6 +15,9 @@ class Command {
|
|
|
15
15
|
if (options?.workingDirectory) {
|
|
16
16
|
processExecutionOptions.setWorkingDirectory(options.workingDirectory);
|
|
17
17
|
}
|
|
18
|
+
if (options?.timeoutMillis) {
|
|
19
|
+
processExecutionOptions.setTimeoutMillis(options.timeoutMillis);
|
|
20
|
+
}
|
|
18
21
|
const resultJson = CommandFacade.execute(command, add, remove, processExecutionOptions);
|
|
19
22
|
return JSON.parse(resultJson);
|
|
20
23
|
}
|
|
@@ -25,4 +28,4 @@ if (typeof module !== "undefined") {
|
|
|
25
28
|
export {
|
|
26
29
|
Command
|
|
27
30
|
};
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vc3JjL3BsYXRmb3JtL2NvbW1hbmQudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQG1vZHVsZSBwbGF0Zm9ybS9jb21tYW5kXG4gKiBAcGFja2FnZSBAYWVyb2tpdC9zZGsvcGxhdGZvcm1cbiAqIEBuYW1lIENvbW1hbmRcbiAqIEBvdmVydmlld1xuICogXG4gKiBUaGUgQ29tbWFuZCBtb2R1bGUgcHJvdmlkZXMgYSBzdGF0aWMgdXRpbGl0eSBjbGFzcyBmb3IgZXhlY3V0aW5nIHN5c3RlbSBjb21tYW5kcyB0aHJvdWdoIHRoZSBwbGF0Zm9ybSdzIENvbW1hbmRFbmdpbmUuIEl0IGFsbG93cyBkZXZlbG9wZXJzIHRvIHJ1biBzaGVsbCBjb21tYW5kcyB3aXRoIGNvbmZpZ3VyYWJsZSBvcHRpb25zLCBpbmNsdWRpbmcgd29ya2luZyBkaXJlY3RvcnksIGV4ZWN1dGlvbiB0aW1lb3V0IGFuZCBlbnZpcm9ubWVudCB2YXJpYWJsZSBtYW5hZ2VtZW50LiBUaGUgbW9kdWxlIGFic3RyYWN0cyB0aGUgY29tcGxleGl0aWVzIG9mIHByb2Nlc3MgZXhlY3V0aW9uLCBwcm92aWRpbmcgYSBzaW1wbGUgaW50ZXJmYWNlIGZvciBpbnRlZ3JhdGluZyBjb21tYW5kIGV4ZWN1dGlvbiBpbnRvIGFwcGxpY2F0aW9ucy5cbiAqXG4gKiAjIyMgS2V5IEZlYXR1cmVzOlxuICogLSAqKkNvbW1hbmQgRXhlY3V0aW9uKio6IFRoZSBgZXhlY3V0ZWAgbWV0aG9kIGFsbG93cyBmb3IgcnVubmluZyBzeXN0ZW0gY29tbWFuZHMgd2l0aCBzcGVjaWZpZWQgb3B0aW9ucyBhbmQgZW52aXJvbm1lbnQgdmFyaWFibGUgY29uZmlndXJhdGlvbnMuXG4gKiAtICoqU3RydWN0dXJlZCBPdXRwdXQqKjogVGhlIG1ldGhvZCByZXR1cm5zIGEgc3RydWN0dXJlZCBvdXRwdXQgY29udGFpbmluZyB0aGUgZXhpdCBjb2RlLCBzdGFuZGFyZCBvdXRwdXQsIGFuZCBlcnJvciBvdXRwdXQgb2YgdGhlIGV4ZWN1dGVkIGNvbW1hbmQuXG4gKiAtICoqVGltZW91dHMqKjogQSBgdGltZW91dE1pbGxpc2Agb3B0aW9uIGRlc3Ryb3lzIGEgY29tbWFuZCB0aGF0IG91dGxpdmVzIGl0LCBzbyBhIGh1bmcgcHJvY2VzcyBjYW5ub3QgYmxvY2sgdGhlIGNhbGxlciBpbmRlZmluaXRlbHkuXG4gKiBcbiAqICMjIyBVc2UgQ2FzZXM6XG4gKiAtICoqU3lzdGVtIEludGVncmF0aW9uKio6IFRoaXMgbW9kdWxlIGlzIGlkZWFsIGZvciBhcHBsaWNhdGlvbnMgdGhhdCBuZWVkIHRvIGludGVyYWN0IHdpdGggdGhlIHVuZGVybHlpbmcgb3BlcmF0aW5nIHN5c3RlbSBvciBleGVjdXRlIGV4dGVybmFsIHByb2Nlc3NlcyBhcyBwYXJ0IG9mIHRoZWlyIGZ1bmN0aW9uYWxpdHkuXG4gKiAtICoqQXV0b21hdGlvbiBhbmQgU2NyaXB0aW5nKio6IERldmVsb3BlcnMgY2FuIHVzZSB0aGlzIG1vZHVsZSB0byBhdXRvbWF0ZSB0YXNrcyBieSBleGVjdXRpbmcgc2hlbGwgY29tbWFuZHMgZnJvbSB3aXRoaW4gdGhlaXIgYXBwbGljYXRpb25zLlxuICogXG4gKiAjIyMgRXhhbXBsZSBVc2FnZTpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcIkBhZXJva2l0L3Nkay9wbGF0Zm9ybVwiO1xuICogXG4gKiBjb25zdCByZXN1bHQgPSBDb21tYW5kLmV4ZWN1dGUoXCJscyAtbFwiLCB7IHdvcmtpbmdEaXJlY3Rvcnk6IFwiL2hvbWUvdXNlclwiIH0sIHsgXCJFTlZfVkFSXCI6IFwidmFsdWVcIiB9LCBbXCJPTERfRU5WX1ZBUlwiXSk7XG4gKiBjb25zb2xlLmxvZyhcIkV4aXQgQ29kZTpcIiwgcmVzdWx0LmV4aXRDb2RlKTtcbiAqIGNvbnNvbGUubG9nKFwiU3RhbmRhcmQgT3V0cHV0OlwiLCByZXN1bHQuc3RhbmRhcmRPdXRwdXQpO1xuICogY29uc29sZS5sb2coXCJFcnJvciBPdXRwdXQ6XCIsIHJlc3VsdC5lcnJvck91dHB1dCk7XG4gKlxuICogLy8gR2l2ZSB1cCBvbiBhIGNvbW1hbmQgdGhhdCB0YWtlcyBsb25nZXIgdGhhbiBmaXZlIHNlY29uZHNcbiAqIENvbW1hbmQuZXhlY3V0ZShcIi4vbG9uZy1ydW5uaW5nLnNoXCIsIHsgdGltZW91dE1pbGxpczogNTAwMCB9KTtcbiAqIGBgYFxuICovXG5cbmNvbnN0IENvbW1hbmRGYWNhZGUgPSBKYXZhLnR5cGUoXCJvcmcuZWNsaXBzZS5kaXJpZ2libGUuY29tcG9uZW50cy5hcGkucGxhdGZvcm0uQ29tbWFuZEZhY2FkZVwiKTtcbmNvbnN0IFByb2Nlc3NFeGVjdXRpb25PcHRpb25zID0gSmF2YS50eXBlKFwib3JnLmVjbGlwc2UuZGlyaWdpYmxlLmNvbW1vbnMucHJvY2Vzcy5leGVjdXRpb24uUHJvY2Vzc0V4ZWN1dGlvbk9wdGlvbnNcIik7XG5cbi8qKlxuICogRGVmaW5lcyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgY29tbWFuZCBleGVjdXRpb24gcHJvY2Vzcy5cbiAqL1xuaW50ZXJmYWNlIENvbW1hbmRPcHRpb25zIHtcblx0LyoqIFRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggdGhlIGNvbW1hbmQgd2lsbCBiZSBleGVjdXRlZC4gKi9cblx0d29ya2luZ0RpcmVjdG9yeT86IHN0cmluZ1xuXHQvKipcblx0ICogVGhlIG1heGltdW0gdGltZSBpbiBtaWxsaXNlY29uZHMgdGhlIGNvbW1hbmQgaXMgYWxsb3dlZCB0byBydW4uIEEgY29tbWFuZCBzdGlsbCBydW5uaW5nIHdoZW4gdGhlXG5cdCAqIHRpbWVvdXQgZWxhcHNlcyBpcyBkZXN0cm95ZWQgYW5kIHRoZSBleGVjdXRpb24gdGhyb3dzIGluc3RlYWQgb2YgcmV0dXJuaW5nIGFuIGV4aXQgY29kZS5cblx0ICogT21pdCB0byBsZXQgdGhlIGNvbW1hbmQgcnVuIGZvciBhcyBsb25nIGFzIGl0IG5lZWRzLlxuXHQgKi9cblx0dGltZW91dE1pbGxpcz86IG51bWJlclxufVxuXG4vKipcbiAqIERlZmluZXMga2V5LXZhbHVlIHBhaXJzIGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gYWRkIGR1cmluZyBleGVjdXRpb24uXG4gKi9cbmludGVyZmFjZSBFbnZpcm9ubWVudFZhcmlhYmxlcyB7XG5cdFtrZXk6IHN0cmluZ106IHN0cmluZ1xufVxuXG4vKipcbiAqIERlZmluZXMgdGhlIHN0cnVjdHVyZWQgb3V0cHV0IHJldHVybmVkIGFmdGVyIGNvbW1hbmQgZXhlY3V0aW9uLlxuICovXG5pbnRlcmZhY2UgQ29tbWFuZE91dHB1dCB7XG5cdC8qKiBUaGUgZXhpdCBjb2RlIHJldHVybmVkIGJ5IHRoZSBleGVjdXRlZCBwcm9jZXNzICgwIHVzdWFsbHkgbWVhbnMgc3VjY2VzcykuICovXG5cdGV4aXRDb2RlOiBudW1iZXI7XG5cdC8qKiBUaGUgc3RhbmRhcmQgb3V0cHV0IHN0cmVhbSBjb250ZW50LiAqL1xuXHRzdGFuZGFyZE91dHB1dDogc3RyaW5nO1xuXHQvKiogVGhlIHN0YW5kYXJkIGVycm9yIHN0cmVhbSBjb250ZW50LiAqL1xuXHRlcnJvck91dHB1dDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEBjbGFzcyBDb21tYW5kXG4gKiBAZGVzY3JpcHRpb24gU3RhdGljIHV0aWxpdHkgY2xhc3MgZm9yIGV4ZWN1dGluZyBzeXN0ZW0gY29tbWFuZHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb21tYW5kIHtcblxuXHQvKipcblx0ICogRXhlY3V0ZXMgYSBzeXN0ZW0gY29tbWFuZCB3aXRoIHNwZWNpZmllZCBjb25maWd1cmF0aW9uLCBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGFuZCBleGNsdXNpb25zLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gY29tbWFuZCBUaGUgY29tbWFuZCBzdHJpbmcgdG8gZXhlY3V0ZSAoZS5nLiwgXCJscyAtbFwiKS5cblx0ICogQHBhcmFtIHtDb21tYW5kT3B0aW9uc30gW29wdGlvbnNdIE9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBleGVjdXRpb24gZW52aXJvbm1lbnQuXG5cdCAqIEBwYXJhbSB7RW52aXJvbm1lbnRWYXJpYWJsZXN9IFthZGRdIE9wdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlcyB0byBhZGQgdG8gdGhlIHByb2Nlc3MuXG5cdCAqIEBwYXJhbSB7c3RyaW5nW119IFtyZW1vdmVdIE9wdGlvbmFsIGxpc3Qgb2YgZW52aXJvbm1lbnQgdmFyaWFibGUga2V5cyB0byByZW1vdmUgZnJvbSB0aGUgcHJvY2Vzcy5cblx0ICogQHJldHVybnMge0NvbW1hbmRPdXRwdXR9IEEgc3RydWN0dXJlZCBvYmplY3QgY29udGFpbmluZyB0aGUgZXhpdCBjb2RlIGFuZCBvdXRwdXQgc3RyZWFtcy5cblx0ICovXG5cdHB1YmxpYyBzdGF0aWMgZXhlY3V0ZShjb21tYW5kOiBzdHJpbmcsIG9wdGlvbnM/OiBDb21tYW5kT3B0aW9ucywgYWRkPzogRW52aXJvbm1lbnRWYXJpYWJsZXMsIHJlbW92ZT86IHN0cmluZ1tdKTogQ29tbWFuZE91dHB1dCB7XG5cdFx0Ly8gSW5zdGFudGlhdGUgdGhlIG5hdGl2ZSBKYXZhIFByb2Nlc3NFeGVjdXRpb25PcHRpb25zIG9iamVjdFxuXHRcdGNvbnN0IHByb2Nlc3NFeGVjdXRpb25PcHRpb25zID0gbmV3IFByb2Nlc3NFeGVjdXRpb25PcHRpb25zKCk7XG5cblx0XHRpZiAob3B0aW9ucz8ud29ya2luZ0RpcmVjdG9yeSkge1xuXHRcdFx0cHJvY2Vzc0V4ZWN1dGlvbk9wdGlvbnMuc2V0V29ya2luZ0RpcmVjdG9yeShvcHRpb25zLndvcmtpbmdEaXJlY3RvcnkpO1xuXHRcdH1cblxuXHRcdGlmIChvcHRpb25zPy50aW1lb3V0TWlsbGlzKSB7XG5cdFx0XHRwcm9jZXNzRXhlY3V0aW9uT3B0aW9ucy5zZXRUaW1lb3V0TWlsbGlzKG9wdGlvbnMudGltZW91dE1pbGxpcyk7XG5cdFx0fVxuXG5cdFx0Ly8gVGhlIGZhY2FkZSByZXR1cm5zIGEgSlNPTiBzdHJpbmcsIHdoaWNoIHdlIHBhcnNlIGludG8gdGhlIENvbW1hbmRPdXRwdXQgaW50ZXJmYWNlXG5cdFx0Y29uc3QgcmVzdWx0SnNvbiA9IENvbW1hbmRGYWNhZGUuZXhlY3V0ZShjb21tYW5kLCBhZGQsIHJlbW92ZSwgcHJvY2Vzc0V4ZWN1dGlvbk9wdGlvbnMpO1xuXHRcdHJldHVybiBKU09OLnBhcnNlKHJlc3VsdEpzb24pIGFzIENvbW1hbmRPdXRwdXQ7XG5cdH1cbn1cblxuLy8gQHRzLWlnbm9yZVxuaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnKSB7XG5cdC8vIEB0cy1pZ25vcmVcblx0bW9kdWxlLmV4cG9ydHMgPSBDb21tYW5kO1xufSJdLAogICJtYXBwaW5ncyI6ICJBQStCQSxNQUFNLGdCQUFnQixLQUFLLEtBQUssNkRBQTZEO0FBQzdGLE1BQU0sMEJBQTBCLEtBQUssS0FBSyx5RUFBeUU7QUF1QzVHLE1BQU0sUUFBUTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBV3BCLE9BQWMsUUFBUSxTQUFpQixTQUEwQixLQUE0QixRQUFrQztBQUU5SCxVQUFNLDBCQUEwQixJQUFJLHdCQUF3QjtBQUU1RCxRQUFJLFNBQVMsa0JBQWtCO0FBQzlCLDhCQUF3QixvQkFBb0IsUUFBUSxnQkFBZ0I7QUFBQSxJQUNyRTtBQUVBLFFBQUksU0FBUyxlQUFlO0FBQzNCLDhCQUF3QixpQkFBaUIsUUFBUSxhQUFhO0FBQUEsSUFDL0Q7QUFHQSxVQUFNLGFBQWEsY0FBYyxRQUFRLFNBQVMsS0FBSyxRQUFRLHVCQUF1QjtBQUN0RixXQUFPLEtBQUssTUFBTSxVQUFVO0FBQUEsRUFDN0I7QUFDRDtBQUdBLElBQUksT0FBTyxXQUFXLGFBQWE7QUFFbEMsU0FBTyxVQUFVO0FBQ2xCOyIsCiAgIm5hbWVzIjogW10KfQo=
|