@appium/support 2.56.1 → 2.57.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.
- package/build/lib/env.d.ts +54 -0
- package/build/lib/env.d.ts.map +1 -0
- package/build/lib/fs.d.ts +221 -0
- package/build/lib/fs.d.ts.map +1 -0
- package/build/lib/fs.js +1 -1
- package/build/lib/image-util.d.ts +56 -0
- package/build/lib/image-util.d.ts.map +1 -0
- package/build/lib/image-util.js +2 -3
- package/build/lib/index.d.ts +38 -0
- package/build/lib/index.d.ts.map +1 -0
- package/build/lib/index.js +20 -14
- package/build/lib/log-internal.d.ts +74 -0
- package/build/lib/log-internal.d.ts.map +1 -0
- package/build/lib/log-internal.js +10 -18
- package/build/lib/logger.d.ts +3 -0
- package/build/lib/logger.d.ts.map +1 -0
- package/build/lib/logging.d.ts +45 -0
- package/build/lib/logging.d.ts.map +1 -0
- package/build/lib/logging.js +11 -13
- package/build/lib/mjpeg.d.ts +65 -0
- package/build/lib/mjpeg.d.ts.map +1 -0
- package/build/lib/mjpeg.js +11 -4
- package/build/lib/mkdirp.d.ts +3 -0
- package/build/lib/mkdirp.d.ts.map +1 -0
- package/build/lib/net.d.ts +95 -0
- package/build/lib/net.d.ts.map +1 -0
- package/build/lib/net.js +41 -23
- package/build/lib/node.d.ts +26 -0
- package/build/lib/node.d.ts.map +1 -0
- package/build/lib/node.js +4 -2
- package/build/lib/npm.d.ts +123 -0
- package/build/lib/npm.d.ts.map +1 -0
- package/build/lib/npm.js +18 -41
- package/build/lib/plist.d.ts +43 -0
- package/build/lib/plist.d.ts.map +1 -0
- package/build/lib/plist.js +1 -1
- package/build/lib/process.d.ts +3 -0
- package/build/lib/process.d.ts.map +1 -0
- package/build/lib/system.d.ts +7 -0
- package/build/lib/system.d.ts.map +1 -0
- package/build/lib/tempdir.d.ts +63 -0
- package/build/lib/tempdir.d.ts.map +1 -0
- package/build/lib/tempdir.js +3 -6
- package/build/lib/timing.d.ts +46 -0
- package/build/lib/timing.d.ts.map +1 -0
- package/build/lib/util.d.ts +183 -0
- package/build/lib/util.d.ts.map +1 -0
- package/build/lib/util.js +4 -8
- package/build/lib/zip.d.ts +180 -0
- package/build/lib/zip.d.ts.map +1 -0
- package/build/lib/zip.js +6 -2
- package/build/tsconfig.tsbuildinfo +1 -0
- package/lib/fs.js +9 -4
- package/lib/image-util.js +23 -7
- package/lib/index.js +2 -8
- package/lib/log-internal.js +31 -38
- package/lib/logging.js +40 -16
- package/lib/mjpeg.js +14 -5
- package/lib/net.js +116 -60
- package/lib/node.js +4 -4
- package/lib/npm.js +33 -90
- package/lib/plist.js +3 -1
- package/lib/tempdir.js +8 -7
- package/lib/util.js +10 -11
- package/lib/zip.js +24 -13
- package/package.json +14 -7
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns `true` if appium is installed as a dependency of a local package at `cwd`.
|
|
3
|
+
*
|
|
4
|
+
* The following special cases are considered:
|
|
5
|
+
*
|
|
6
|
+
* - If `resolved` starts with `file:`, then `cwd` likely points to `appium-monorepo`, and (for now) we expect `APPIUM_HOME` to be the default.
|
|
7
|
+
* - If the `version` begins with `0` or `1`, we're looking at an old version of `appium` (not this one!)
|
|
8
|
+
*
|
|
9
|
+
* Note that we are _not_ performing the check "is the currently running Appium the same one as found in the list of dependencies", because I'm not sure it actually matters (assuming the versions are compatible).
|
|
10
|
+
* Regardless we may want to make this more robust in the future, as we hit edge cases.
|
|
11
|
+
*
|
|
12
|
+
* _Also_ note that if `appium` appears as a dependency in `package.json` _but it is not yet installed_ this function will resolve `false`. This may not be exactly what we want.
|
|
13
|
+
*
|
|
14
|
+
* @param {string} cwd
|
|
15
|
+
* @returns {Promise<boolean>}
|
|
16
|
+
*/
|
|
17
|
+
export function hasAppiumDependency(cwd: string): Promise<boolean>;
|
|
18
|
+
/**
|
|
19
|
+
* Path to the default `APPIUM_HOME` dir (`~/.appium`).
|
|
20
|
+
* @type {string}
|
|
21
|
+
*/
|
|
22
|
+
export const DEFAULT_APPIUM_HOME: string;
|
|
23
|
+
/**
|
|
24
|
+
* Basename of extension manifest file.
|
|
25
|
+
* @type {string}
|
|
26
|
+
*/
|
|
27
|
+
export const MANIFEST_BASENAME: string;
|
|
28
|
+
/**
|
|
29
|
+
* Relative path to extension manifest file from `APPIUM_HOME`.
|
|
30
|
+
* @type {string}
|
|
31
|
+
*/
|
|
32
|
+
export const MANIFEST_RELATIVE_PATH: string;
|
|
33
|
+
/**
|
|
34
|
+
* Read a `package.json` in dir `cwd`. If none found, return `undefined`.
|
|
35
|
+
*/
|
|
36
|
+
export const readPackageInDir: ((cwd: string) => Promise<import('read-pkg').NormalizedPackageJson | undefined>) & _.MemoizedFunction;
|
|
37
|
+
/**
|
|
38
|
+
* Determines location of Appium's "home" dir
|
|
39
|
+
*
|
|
40
|
+
* - If `APPIUM_HOME` is set in the environment, use that
|
|
41
|
+
* - If we have an `extensions.yaml` in {@linkcode DEFAULT_APPIUM_HOME}, then use that.
|
|
42
|
+
* - If we find a `package.json` in or above `cwd` and {@linkcode shouldUseCwdForAppiumHome} returns `true`, then use the directory containing the `package.json`.
|
|
43
|
+
*/
|
|
44
|
+
export const resolveAppiumHome: ((cwd?: string | undefined) => Promise<string>) & _.MemoizedFunction;
|
|
45
|
+
/**
|
|
46
|
+
* Figure out manifest path based on `appiumHome`.
|
|
47
|
+
*
|
|
48
|
+
* The assumption is that, if `appiumHome` has been provided, it was resolved via {@link resolveAppiumHome `resolveAppiumHome()`}! If unsure,
|
|
49
|
+
* don't pass a parameter and let `resolveAppiumHome()` handle it.
|
|
50
|
+
*/
|
|
51
|
+
export const resolveManifestPath: ((appiumHome?: string | undefined) => Promise<string>) & _.MemoizedFunction;
|
|
52
|
+
export type NormalizedPackageJson = import('read-pkg').NormalizedPackageJson;
|
|
53
|
+
import _ from "lodash";
|
|
54
|
+
//# sourceMappingURL=env.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../lib/env.js"],"names":[],"mappings":"AA+BA;;;;;;;;;;;;;;;GAeG;AACH,yCAHW,MAAM,GACJ,QAAQ,OAAO,CAAC,CAqC5B;AA1ED;;;GAGG;AACH,kCAFU,MAAM,CAEsD;AAEtE;;;GAGG;AACH,gCAFU,MAAM,CAEmC;AAEnD;;;GAGG;AACH,qCAFU,MAAM,CAOd;AAuDF;;GAEG;AACH,sCAGa,MAAM,KACJ,QAAQ,OAAO,UAAU,EAAE,qBAAqB,GAAC,SAAS,CAAC,uBAKxE;AAEF;;;;;;GAMG;AACH,+DAGe,QAAQ,MAAM,CAAC,uBA+B5B;AAEF;;;;;GAKG;AACH,wEAGe,QAAQ,MAAM,CAAC,uBAO5B;oCAGW,OAAO,UAAU,EAAE,qBAAqB"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
export default fs;
|
|
3
|
+
/**
|
|
4
|
+
* The callback function which will be called during the directory walking
|
|
5
|
+
*/
|
|
6
|
+
export type WalkDirCallback = (itemPath: string, isDirectory: boolean) => boolean;
|
|
7
|
+
export type glob = typeof glob;
|
|
8
|
+
export type mv = typeof mv;
|
|
9
|
+
export namespace fs {
|
|
10
|
+
/**
|
|
11
|
+
* Resolves `true` if `path` is _readable_, which differs from Node.js' default behavior of "can we see it?"
|
|
12
|
+
* @param {import('fs').PathLike} path
|
|
13
|
+
* @returns {Promise<boolean>}
|
|
14
|
+
*/
|
|
15
|
+
export function hasAccess(path: import("fs").PathLike): Promise<boolean>;
|
|
16
|
+
/**
|
|
17
|
+
* Resolves `true` if `path` is _readable_, which differs from Node.js' default behavior of "can we see it?"
|
|
18
|
+
* @param {import('fs').PathLike} path
|
|
19
|
+
* @returns {Promise<boolean>}
|
|
20
|
+
*/
|
|
21
|
+
export function hasAccess(path: import("fs").PathLike): Promise<boolean>;
|
|
22
|
+
/**
|
|
23
|
+
* Alias for {@linkcode fs.hasAccess}
|
|
24
|
+
* @param {import('fs').PathLike} path
|
|
25
|
+
*/
|
|
26
|
+
export function exists(path: import("fs").PathLike): Promise<boolean>;
|
|
27
|
+
/**
|
|
28
|
+
* Alias for {@linkcode fs.hasAccess}
|
|
29
|
+
* @param {import('fs').PathLike} path
|
|
30
|
+
*/
|
|
31
|
+
export function exists(path: import("fs").PathLike): Promise<boolean>;
|
|
32
|
+
export function rimraf(dirpath: string, opts?: rimrafIdx.Options | undefined): Promise<void>;
|
|
33
|
+
export const rimrafSync: typeof rimrafIdx.sync;
|
|
34
|
+
/**
|
|
35
|
+
* Like Node.js' `fsPromises.mkdir()`, but will _not_ reject if the directory already exists.
|
|
36
|
+
*
|
|
37
|
+
* @param {string|Buffer|URL} filepath
|
|
38
|
+
* @param {import('fs').MakeDirectoryOptions} [opts]
|
|
39
|
+
* @returns {Promise<string|undefined>}
|
|
40
|
+
* @see https://nodejs.org/api/fs.html#fspromisesmkdirpath-options
|
|
41
|
+
*/
|
|
42
|
+
export function mkdir(filepath: string | Buffer | URL, opts?: import("fs").MakeDirectoryOptions | undefined): Promise<string | undefined>;
|
|
43
|
+
/**
|
|
44
|
+
* Like Node.js' `fsPromises.mkdir()`, but will _not_ reject if the directory already exists.
|
|
45
|
+
*
|
|
46
|
+
* @param {string|Buffer|URL} filepath
|
|
47
|
+
* @param {import('fs').MakeDirectoryOptions} [opts]
|
|
48
|
+
* @returns {Promise<string|undefined>}
|
|
49
|
+
* @see https://nodejs.org/api/fs.html#fspromisesmkdirpath-options
|
|
50
|
+
*/
|
|
51
|
+
export function mkdir(filepath: string | Buffer | URL, opts?: import("fs").MakeDirectoryOptions | undefined): Promise<string | undefined>;
|
|
52
|
+
/**
|
|
53
|
+
* Copies files _and entire directories_
|
|
54
|
+
* @param {string} source - Source to copy
|
|
55
|
+
* @param {string} destination - Destination to copy to
|
|
56
|
+
* @param {ncp.Options} [opts] - Additional arguments to pass to `ncp`
|
|
57
|
+
* @see https://npm.im/ncp
|
|
58
|
+
* @returns {Promise<void>}
|
|
59
|
+
*/
|
|
60
|
+
export function copyFile(source: string, destination: string, opts?: ncp.Options | undefined): Promise<void>;
|
|
61
|
+
/**
|
|
62
|
+
* Copies files _and entire directories_
|
|
63
|
+
* @param {string} source - Source to copy
|
|
64
|
+
* @param {string} destination - Destination to copy to
|
|
65
|
+
* @param {ncp.Options} [opts] - Additional arguments to pass to `ncp`
|
|
66
|
+
* @see https://npm.im/ncp
|
|
67
|
+
* @returns {Promise<void>}
|
|
68
|
+
*/
|
|
69
|
+
export function copyFile(source: string, destination: string, opts?: ncp.Options | undefined): Promise<void>;
|
|
70
|
+
/**
|
|
71
|
+
* Create an MD5 hash of a file.
|
|
72
|
+
* @param {import('fs').PathLike} filePath
|
|
73
|
+
* @returns {Promise<string>}
|
|
74
|
+
*/
|
|
75
|
+
export function md5(filePath: import("fs").PathLike): Promise<string>;
|
|
76
|
+
/**
|
|
77
|
+
* Create an MD5 hash of a file.
|
|
78
|
+
* @param {import('fs').PathLike} filePath
|
|
79
|
+
* @returns {Promise<string>}
|
|
80
|
+
*/
|
|
81
|
+
export function md5(filePath: import("fs").PathLike): Promise<string>;
|
|
82
|
+
export function mv_1(from: string, to: string, opts?: mv.Options | undefined): B<void>;
|
|
83
|
+
export { mv_1 as mv };
|
|
84
|
+
export { which };
|
|
85
|
+
export function glob_1(pattern: string, opts?: glob.IOptions | undefined): B<string[]>;
|
|
86
|
+
export { glob_1 as glob };
|
|
87
|
+
export { sanitize as sanitizeName };
|
|
88
|
+
/**
|
|
89
|
+
* Create a hex digest of some file at `filePath`
|
|
90
|
+
* @param {import('fs').PathLike} filePath
|
|
91
|
+
* @param {string} [algorithm]
|
|
92
|
+
* @returns {Promise<string>}
|
|
93
|
+
*/
|
|
94
|
+
export function hash(filePath: import("fs").PathLike, algorithm?: string | undefined): Promise<string>;
|
|
95
|
+
/**
|
|
96
|
+
* Create a hex digest of some file at `filePath`
|
|
97
|
+
* @param {import('fs').PathLike} filePath
|
|
98
|
+
* @param {string} [algorithm]
|
|
99
|
+
* @returns {Promise<string>}
|
|
100
|
+
*/
|
|
101
|
+
export function hash(filePath: import("fs").PathLike, algorithm?: string | undefined): Promise<string>;
|
|
102
|
+
/**
|
|
103
|
+
* Returns an `Walker` instance, which is a readable stream (and thusly an async iterator).
|
|
104
|
+
*
|
|
105
|
+
* @param {string} dir - Dir to start walking at
|
|
106
|
+
* @param {import('klaw').Options} [opts]
|
|
107
|
+
* @returns {import('klaw').Walker}
|
|
108
|
+
* @see https://www.npmjs.com/package/klaw
|
|
109
|
+
*/
|
|
110
|
+
export function walk(dir: string, opts?: klaw.Options | undefined): klaw.Walker;
|
|
111
|
+
/**
|
|
112
|
+
* Returns an `Walker` instance, which is a readable stream (and thusly an async iterator).
|
|
113
|
+
*
|
|
114
|
+
* @param {string} dir - Dir to start walking at
|
|
115
|
+
* @param {import('klaw').Options} [opts]
|
|
116
|
+
* @returns {import('klaw').Walker}
|
|
117
|
+
* @see https://www.npmjs.com/package/klaw
|
|
118
|
+
*/
|
|
119
|
+
export function walk(dir: string, opts?: klaw.Options | undefined): klaw.Walker;
|
|
120
|
+
/**
|
|
121
|
+
* Recursively create a directory.
|
|
122
|
+
* @param {import('fs').PathLike} dir
|
|
123
|
+
* @returns {Promise<string|undefined>}
|
|
124
|
+
*/
|
|
125
|
+
export function mkdirp(dir: import("fs").PathLike): Promise<string | undefined>;
|
|
126
|
+
/**
|
|
127
|
+
* Recursively create a directory.
|
|
128
|
+
* @param {import('fs').PathLike} dir
|
|
129
|
+
* @returns {Promise<string|undefined>}
|
|
130
|
+
*/
|
|
131
|
+
export function mkdirp(dir: import("fs").PathLike): Promise<string | undefined>;
|
|
132
|
+
/**
|
|
133
|
+
* Walks a directory given according to the parameters given. The callback will be invoked with a path joined with the dir parameter
|
|
134
|
+
* @param {string} dir Directory path where we will start walking
|
|
135
|
+
* @param {boolean} recursive Set it to true if you want to continue walking sub directories
|
|
136
|
+
* @param {WalkDirCallback} callback The callback to be called when a new path is found
|
|
137
|
+
* @throws {Error} If the `dir` parameter contains a path to an invalid folder
|
|
138
|
+
* @returns {Promise<string?>} returns the found path or null if the item was not found
|
|
139
|
+
*/
|
|
140
|
+
export function walkDir(dir: string, recursive: boolean, callback: WalkDirCallback): Promise<string | null>;
|
|
141
|
+
/**
|
|
142
|
+
* Walks a directory given according to the parameters given. The callback will be invoked with a path joined with the dir parameter
|
|
143
|
+
* @param {string} dir Directory path where we will start walking
|
|
144
|
+
* @param {boolean} recursive Set it to true if you want to continue walking sub directories
|
|
145
|
+
* @param {WalkDirCallback} callback The callback to be called when a new path is found
|
|
146
|
+
* @throws {Error} If the `dir` parameter contains a path to an invalid folder
|
|
147
|
+
* @returns {Promise<string?>} returns the found path or null if the item was not found
|
|
148
|
+
*/
|
|
149
|
+
export function walkDir(dir: string, recursive: boolean, callback: WalkDirCallback): Promise<string | null>;
|
|
150
|
+
/**
|
|
151
|
+
* Reads the closest `package.json` file from absolute path `dir`.
|
|
152
|
+
* @param {string} dir - Directory to search from
|
|
153
|
+
* @param {import('read-pkg').Options} [opts] - Additional options for `read-pkg`
|
|
154
|
+
* @throws {Error} If there were problems finding or reading a `package.json` file
|
|
155
|
+
* @returns {object} A parsed `package.json`
|
|
156
|
+
*/
|
|
157
|
+
export function readPackageJsonFrom(dir: string, opts?: readPkg.Options | undefined): any;
|
|
158
|
+
/**
|
|
159
|
+
* Reads the closest `package.json` file from absolute path `dir`.
|
|
160
|
+
* @param {string} dir - Directory to search from
|
|
161
|
+
* @param {import('read-pkg').Options} [opts] - Additional options for `read-pkg`
|
|
162
|
+
* @throws {Error} If there were problems finding or reading a `package.json` file
|
|
163
|
+
* @returns {object} A parsed `package.json`
|
|
164
|
+
*/
|
|
165
|
+
export function readPackageJsonFrom(dir: string, opts?: readPkg.Options | undefined): any;
|
|
166
|
+
/**
|
|
167
|
+
* Finds the project root directory from `dir`.
|
|
168
|
+
* @param {string} dir - Directory to search from
|
|
169
|
+
* @throws {TypeError} If `dir` is not a nonempty string or relative path
|
|
170
|
+
* @throws {Error} If there were problems finding the project root
|
|
171
|
+
* @returns {string} The closeset parent dir containing `package.json`
|
|
172
|
+
*/
|
|
173
|
+
export function findRoot(dir: string): string;
|
|
174
|
+
/**
|
|
175
|
+
* Finds the project root directory from `dir`.
|
|
176
|
+
* @param {string} dir - Directory to search from
|
|
177
|
+
* @throws {TypeError} If `dir` is not a nonempty string or relative path
|
|
178
|
+
* @throws {Error} If there were problems finding the project root
|
|
179
|
+
* @returns {string} The closeset parent dir containing `package.json`
|
|
180
|
+
*/
|
|
181
|
+
export function findRoot(dir: string): string;
|
|
182
|
+
export const access: typeof fsPromises.access;
|
|
183
|
+
export const appendFile: typeof fsPromises.appendFile;
|
|
184
|
+
export const chmod: typeof fsPromises.chmod;
|
|
185
|
+
export const close: (arg1: number) => B<any>;
|
|
186
|
+
export { constants };
|
|
187
|
+
export { createWriteStream };
|
|
188
|
+
export { createReadStream };
|
|
189
|
+
export const lstat: typeof fsPromises.lstat;
|
|
190
|
+
export const open: (path: import("fs").PathLike, flags: import("fs").OpenMode, mode?: import("fs").Mode | undefined) => Promise<number>;
|
|
191
|
+
export const openFile: typeof fsPromises.open;
|
|
192
|
+
export const readdir: typeof fsPromises.readdir;
|
|
193
|
+
export function read<TBuffer extends NodeJS.ArrayBufferView>(arg1: number, arg2: TBuffer, arg3: number, arg4: number, arg5: import("fs").ReadPosition | null): B<number>;
|
|
194
|
+
export const readFile: typeof fsPromises.readFile;
|
|
195
|
+
export const readlink: typeof fsPromises.readlink;
|
|
196
|
+
export const realpath: typeof fsPromises.realpath;
|
|
197
|
+
export const rename: typeof fsPromises.rename;
|
|
198
|
+
export const stat: typeof fsPromises.stat;
|
|
199
|
+
export const symlink: typeof fsPromises.symlink;
|
|
200
|
+
export const unlink: typeof fsPromises.unlink;
|
|
201
|
+
export const write: (arg1: number, arg2: string) => B<number>;
|
|
202
|
+
export const writeFile: typeof fsPromises.writeFile;
|
|
203
|
+
export const F_OK: number;
|
|
204
|
+
export const R_OK: number;
|
|
205
|
+
export const W_OK: number;
|
|
206
|
+
export const X_OK: number;
|
|
207
|
+
}
|
|
208
|
+
import glob from "glob";
|
|
209
|
+
import mv from "mv";
|
|
210
|
+
import rimrafIdx from "rimraf";
|
|
211
|
+
import ncp from "ncp";
|
|
212
|
+
import B from "bluebird";
|
|
213
|
+
import which from "which";
|
|
214
|
+
import sanitize from "sanitize-filename";
|
|
215
|
+
import klaw from "klaw";
|
|
216
|
+
import readPkg from "read-pkg";
|
|
217
|
+
import { promises as fsPromises } from "fs";
|
|
218
|
+
import { constants } from "fs";
|
|
219
|
+
import { createWriteStream } from "fs";
|
|
220
|
+
import { createReadStream } from "fs";
|
|
221
|
+
//# sourceMappingURL=fs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../lib/fs.js"],"names":[],"mappings":";;;;;yCA2UW,MAAM,eACN,OAAO,KACN,OAAO;;;;IArTjB;;;;OAIG;IACH,yEAOC;IAZD;;;;OAIG;IACH,yEAOC;IAED;;;OAGG;IACH,sEAEC;IAND;;;OAGG;IACH,sEAEC;IAMkB,6FAAmE;;IAQtF;;;;;;;OAOG;IACH,0IAQC;IAhBD;;;;;;;OAOG;IACH,0IAQC;IACD;;;;;;;OAOG;IACH,6GAKC;IAbD;;;;;;;OAOG;IACH,6GAKC;IAED;;;;OAIG;IACH,sEAEC;IAPD;;;;OAIG;IACH,sEAEC;IAKc,uFAAwD;;;IAYtD,uFAAsD;;;IAQvE;;;;;OAKG;IACH,uGASC;IAfD;;;;;OAKG;IACH,uGASC;IAED;;;;;;;OAOG;IACH,gFAEC;IAVD;;;;;;;OAOG;IACH,gFAEC;IAED;;;;OAIG;IACH,gFAEC;IAPD;;;;OAIG;IACH,gFAEC;IAED;;;;;;;OAOG;IACH,4GAmEC;IA3ED;;;;;;;OAOG;IACH,4GAmEC;IACD;;;;;;OAMG;IACH,0FAQC;IAfD;;;;;;OAMG;IACH,0FAQC;IACD;;;;;;OAMG;IACH,8CASC;IAhBD;;;;;;OAMG;IACH,8CASC;;;;;;;;;;;;IAwEoqnB,yKAAkE"}
|
package/build/lib/fs.js
CHANGED
|
@@ -235,4 +235,4 @@ const fs = {
|
|
|
235
235
|
exports.fs = fs;
|
|
236
236
|
var _default = fs;
|
|
237
237
|
exports.default = _default;
|
|
238
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9mcy5qcyJdLCJuYW1lcyI6WyJuY3BBc3luYyIsIkIiLCJwcm9taXNpZnkiLCJuY3AiLCJmaW5kUm9vdENhY2hlZCIsIl8iLCJtZW1vaXplIiwicGtnRGlyIiwic3luYyIsImZzIiwiaGFzQWNjZXNzIiwicGF0aCIsImZzUHJvbWlzZXMiLCJhY2Nlc3MiLCJjb25zdGFudHMiLCJSX09LIiwiZXJyIiwiZXhpc3RzIiwicmltcmFmIiwicmltcmFmU3luYyIsIm1rZGlyIiwiZmlsZXBhdGgiLCJvcHRzIiwiY29kZSIsImNvcHlGaWxlIiwic291cmNlIiwiZGVzdGluYXRpb24iLCJFcnJvciIsIm1kNSIsImZpbGVQYXRoIiwiaGFzaCIsIm12Iiwid2hpY2giLCJnbG9iIiwic2FuaXRpemVOYW1lIiwic2FuaXRpemUiLCJhbGdvcml0aG0iLCJyZXNvbHZlIiwicmVqZWN0IiwiZmlsZUhhc2giLCJjcnlwdG8iLCJjcmVhdGVIYXNoIiwicmVhZFN0cmVhbSIsIm9uIiwiZSIsIm1lc3NhZ2UiLCJjaHVuayIsInVwZGF0ZSIsImRpZ2VzdCIsIndhbGsiLCJkaXIiLCJta2RpcnAiLCJyZWN1cnNpdmUiLCJ3YWxrRGlyIiwiY2FsbGJhY2siLCJpc1ZhbGlkUm9vdCIsImVyck1zZyIsInN0YXQiLCJpc0RpcmVjdG9yeSIsIndhbGtlciIsImZpbGVDb3VudCIsImRpcmVjdG9yeUNvdW50IiwidGltZXIiLCJUaW1lciIsInN0YXJ0IiwibGFzdEZpbGVQcm9jZXNzZWQiLCJkZXB0aExpbWl0IiwiaXRlbSIsInBhdXNlIiwic3RhdHMiLCJ0cnkiLCJ0aGVuIiwiZG9uZSIsInJlc3VtZSIsImNhdGNoIiwibG9nIiwid2FybiIsImZpbGUiLCJmaW5hbGx5IiwiZGVidWciLCJnZXREdXJhdGlvbiIsImFzTWlsbGlTZWNvbmRzIiwidG9GaXhlZCIsImRlc3Ryb3kiLCJyZWFkUGFja2FnZUpzb25Gcm9tIiwiY3dkIiwiZmluZFJvb3QiLCJyZWFkUGtnIiwiaXNBYnNvbHV0ZSIsIlR5cGVFcnJvciIsInJlc3VsdCIsImFwcGVuZEZpbGUiLCJjaG1vZCIsImNsb3NlIiwiY3JlYXRlV3JpdGVTdHJlYW0iLCJjcmVhdGVSZWFkU3RyZWFtIiwibHN0YXQiLCJvcGVuIiwib3BlbkZpbGUiLCJyZWFkZGlyIiwicmVhZCIsInJlYWRGaWxlIiwicmVhZGxpbmsiLCJyZWFscGF0aCIsInJlbmFtZSIsInN5bWxpbmsiLCJ1bmxpbmsiLCJ3cml0ZSIsIndyaXRlRmlsZSIsIkZfT0siLCJXX09LIiwiWF9PSyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxRQUFRLEdBQXlGQyxrQkFBRUMsU0FBRixDQUFZQyxZQUFaLENBQXZHOztBQUNBLE1BQU1DLGNBQWMsR0FBR0MsZ0JBQUVDLE9BQUYsQ0FBVUMsZ0JBQU9DLElBQWpCLENBQXZCOztBQUVBLE1BQU1DLEVBQUUsR0FBRztBQU1ULFFBQU1DLFNBQU4sQ0FBaUJDLElBQWpCLEVBQXVCO0FBQ3JCLFFBQUk7QUFDRixZQUFNQyxhQUFXQyxNQUFYLENBQWtCRixJQUFsQixFQUF3QkcsY0FBVUMsSUFBbEMsQ0FBTjtBQUNELEtBRkQsQ0FFRSxPQUFPQyxHQUFQLEVBQVk7QUFDWixhQUFPLEtBQVA7QUFDRDs7QUFDRCxXQUFPLElBQVA7QUFDRCxHQWJROztBQW1CVCxRQUFNQyxNQUFOLENBQWNOLElBQWQsRUFBb0I7QUFDbEIsV0FBTyxNQUFNRixFQUFFLENBQUNDLFNBQUgsQ0FBYUMsSUFBYixDQUFiO0FBQ0QsR0FyQlE7O0FBMkJUTyxFQUFBQSxNQUFNLEVBQTJFakIsa0JBQUVDLFNBQUYsQ0FBWWdCLGVBQVosQ0EzQnhFO0FBaUNUQyxFQUFBQSxVQUFVLEVBQUVELGdCQUFPVixJQWpDVjs7QUEyQ1QsUUFBTVksS0FBTixDQUFhQyxRQUFi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RixFQUFBQSxJQUFJLEVBQUVELGNBQVVDLElBOVJQO0FBb1NUK0YsRUFBQUEsSUFBSSxFQUFFaEcsY0FBVWdHLElBcFNQO0FBMFNUQyxFQUFBQSxJQUFJLEVBQUVqRyxjQUFVaUc7QUExU1AsQ0FBWDs7ZUE4U2V0RyxFIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCBjcnlwdG8gZnJvbSAnY3J5cHRvJztcbmltcG9ydCB7IGNsb3NlLCBjb25zdGFudHMsIGNyZWF0ZVJlYWRTdHJlYW0sIGNyZWF0ZVdyaXRlU3RyZWFtLCBwcm9taXNlcyBhcyBmc1Byb21pc2VzLCByZWFkLCB3cml0ZSwgb3BlbiB9IGZyb20gJ2ZzJztcbmltcG9ydCBnbG9iIGZyb20gJ2dsb2InO1xuaW1wb3J0IGtsYXcgZnJvbSAna2xhdyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IG12IGZyb20gJ212JztcbmltcG9ydCBuY3AgZnJvbSAnbmNwJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHBrZ0RpciBmcm9tICdwa2ctZGlyJztcbmltcG9ydCByZWFkUGtnIGZyb20gJ3JlYWQtcGtnJztcbmltcG9ydCByaW1yYWYgZnJvbSAncmltcmFmJztcbmltcG9ydCBzYW5pdGl6ZSBmcm9tICdzYW5pdGl6ZS1maWxlbmFtZSc7XG5pbXBvcnQgd2hpY2ggZnJvbSAnd2hpY2gnO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgVGltZXIgZnJvbSAnLi90aW1pbmcnO1xuaW1wb3J0IHsgcGx1cmFsaXplIH0gZnJvbSAnLi91dGlsJztcblxuY29uc3QgbmNwQXN5bmMgPSAvKiogQHR5cGUgeyhzb3VyY2U6IHN0cmluZywgZGVzdDogc3RyaW5nLCBvcHRzOiBuY3AuT3B0aW9uc3x1bmRlZmluZWQpID0+IEI8dm9pZD59ICovKEIucHJvbWlzaWZ5KG5jcCkpO1xuY29uc3QgZmluZFJvb3RDYWNoZWQgPSBfLm1lbW9pemUocGtnRGlyLnN5bmMpO1xuXG5jb25zdCBmcyA9IHtcbiAgLyoqXG4gICAqIFJlc29sdmVzIGB0cnVlYCBpZiBgcGF0aGAgaXMgX3JlYWRhYmxlXywgd2hpY2ggZGlmZmVycyBmcm9tIE5vZGUuanMnIGRlZmF1bHQgYmVoYXZpb3Igb2YgXCJjYW4gd2Ugc2VlIGl0P1wiXG4gICAqIEBwYXJhbSB7aW1wb3J0KCdmcycpLlBhdGhMaWtlfSBwYXRoXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICAgKi9cbiAgYXN5bmMgaGFzQWNjZXNzIChwYXRoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZzUHJvbWlzZXMuYWNjZXNzKHBhdGgsIGNvbnN0YW50cy5SX09LKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEFsaWFzIGZvciB7QGxpbmtjb2RlIGZzLmhhc0FjY2Vzc31cbiAgICogQHBhcmFtIHtpbXBvcnQoJ2ZzJykuUGF0aExpa2V9IHBhdGhcbiAgICovXG4gIGFzeW5jIGV4aXN0cyAocGF0aCkge1xuICAgIHJldHVybiBhd2FpdCBmcy5oYXNBY2Nlc3MocGF0aCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlbW92ZSBhIGRpcmVjdG9yeSBhbmQgYWxsIGl0cyBjb250ZW50cywgcmVjdXJzaXZlbHlcbiAgICogQHRvZG8gUmVwbGFjZSB3aXRoIGBybSgpYCBmcm9tIGBmcy5wcm9taXNlc2Agd2hlbiBOb2RlLmpzIHYxMiBzdXBwb3J0IGlzIGRyb3BwZWQuXG4gICAqL1xuICByaW1yYWY6IC8qKiBAdHlwZSB7KGRpcnBhdGg6IHN0cmluZywgb3B0cz86IHJpbXJhZi5PcHRpb25zKSA9PiBQcm9taXNlPHZvaWQ+fSAqLyhCLnByb21pc2lmeShyaW1yYWYpKSxcblxuICAvKipcbiAgICogQWxpYXMgb2Yge0BsaW5rY29kZSByaW1yYWYuc3luY31cbiAgICogQHRvZG8gUmVwbGFjZSB3aXRoIGBybVN5bmMoKWAgZnJvbSBgZnNgIHdoZW4gTm9kZS5qcyB2MTIgc3VwcG9ydCBpcyBkcm9wcGVkLlxuICAgKi9cbiAgcmltcmFmU3luYzogcmltcmFmLnN5bmMsXG5cbiAgLyoqXG4gICAqIExpa2UgTm9kZS5qcycgYGZzUHJvbWlzZXMubWtkaXIoKWAsIGJ1dCB3aWxsIF9ub3RfIHJlamVjdCBpZiB0aGUgZGlyZWN0b3J5IGFscmVhZHkgZXhpc3RzLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ3xCdWZmZXJ8VVJMfSBmaWxlcGF0aFxuICAgKiBAcGFyYW0ge2ltcG9ydCgnZnMnKS5NYWtlRGlyZWN0b3J5T3B0aW9uc30gW29wdHNdXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZ3x1bmRlZmluZWQ+fVxuICAgKiBAc2VlIGh0dHBzOi8vbm9kZWpzLm9yZy9hcGkvZnMuaHRtbCNmc3Byb21pc2VzbWtkaXJwYXRoLW9wdGlvbnNcbiAgICovXG4gIGFzeW5jIG1rZGlyIChmaWxlcGF0aCwgb3B0cyA9IHt9KSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBmc1Byb21pc2VzLm1rZGlyKGZpbGVwYXRoLCBvcHRzKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChlcnI/LmNvZGUgIT09ICdFRVhJU1QnKSB7XG4gICAgICAgIHRocm93IGVycjtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIC8qKlxuICAgKiBDb3BpZXMgZmlsZXMgX2FuZCBlbnRpcmUgZGlyZWN0b3JpZXNfXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzb3VyY2UgLSBTb3VyY2UgdG8gY29weVxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGVzdGluYXRpb24gLSBEZXN0aW5hdGlvbiB0byBjb3B5IHRvXG4gICAqIEBwYXJhbSB7bmNwLk9wdGlvbnN9IFtvcHRzXSAtIEFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHBhc3MgdG8gYG5jcGBcbiAgICogQHNlZSBodHRwczovL25wbS5pbS9uY3BcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBhc3luYyBjb3B5RmlsZSAoc291cmNlLCBkZXN0aW5hdGlvbiwgb3B0cyA9IHt9KSB7XG4gICAgaWYgKCFhd2FpdCBmcy5oYXNBY2Nlc3Moc291cmNlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgZmlsZSBhdCAnJHtzb3VyY2V9JyBkb2VzIG5vdCBleGlzdCBvciBpcyBub3QgYWNjZXNzaWJsZWApO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgbmNwQXN5bmMoc291cmNlLCBkZXN0aW5hdGlvbiwgb3B0cyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBNRDUgaGFzaCBvZiBhIGZpbGUuXG4gICAqIEBwYXJhbSB7aW1wb3J0KCdmcycpLlBhdGhMaWtlfSBmaWxlUGF0aFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fVxuICAgKi9cbiAgYXN5bmMgbWQ1IChmaWxlUGF0aCkge1xuICAgIHJldHVybiBhd2FpdCBmcy5oYXNoKGZpbGVQYXRoLCAnbWQ1Jyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIE1vdmUgYSBmaWxlXG4gICAqL1xuICBtdjogLyoqIEB0eXBlIHsoZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nLCBvcHRzPzogbXYuT3B0aW9ucykgPT4gQjx2b2lkPn0gKi8oQi5wcm9taXNpZnkobXYpKSxcblxuICAvKipcbiAgICogRmluZCBwYXRoIHRvIGFuIGV4ZWN1dGFibGUgaW4gc3lzdGVtIGBQQVRIYFxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9ucG0vbm9kZS13aGljaFxuICAgKi9cbiAgd2hpY2gsXG5cbiAgLyoqXG4gICAqIEdpdmVuIGEgZ2xvYiBwYXR0ZXJuLCByZXNvbHZlIHdpdGggbGlzdCBvZiBmaWxlcyBtYXRjaGluZyB0aGF0IHBhdHRlcm5cbiAgICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vaXNhYWNzL25vZGUtZ2xvYlxuICAgKi9cbiAgZ2xvYjogLyoqIEB0eXBlIHsocGF0dGVybjogc3RyaW5nLCBvcHRzPzogZ2xvYi5JT3B0aW9ucykgPT4gQjxzdHJpbmdbXT59ICovKEIucHJvbWlzaWZ5KGdsb2IpKSxcblxuICAvKipcbiAgICogU2FuaXRpemUgYSBmaWxlbmFtZVxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJzaGFwL25vZGUtc2FuaXRpemUtZmlsZW5hbWVcbiAgICovXG4gIHNhbml0aXplTmFtZTogc2FuaXRpemUsXG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIGhleCBkaWdlc3Qgb2Ygc29tZSBmaWxlIGF0IGBmaWxlUGF0aGBcbiAgICogQHBhcmFtIHtpbXBvcnQoJ2ZzJykuUGF0aExpa2V9IGZpbGVQYXRoXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbYWxnb3JpdGhtXVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fVxuICAgKi9cbiAgYXN5bmMgaGFzaCAoZmlsZVBhdGgsIGFsZ29yaXRobSA9ICdzaGExJykge1xuICAgIHJldHVybiBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCBmaWxlSGFzaCA9IGNyeXB0by5jcmVhdGVIYXNoKGFsZ29yaXRobSk7XG4gICAgICBjb25zdCByZWFkU3RyZWFtID0gY3JlYXRlUmVhZFN0cmVhbShmaWxlUGF0aCk7XG4gICAgICByZWFkU3RyZWFtLm9uKCdlcnJvcicsIChlKSA9PiByZWplY3QoXG4gICAgICAgIG5ldyBFcnJvcihgQ2Fubm90IGNhbGN1bGF0ZSAke2FsZ29yaXRobX0gaGFzaCBmb3IgJyR7ZmlsZVBhdGh9Jy4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApKSk7XG4gICAgICByZWFkU3RyZWFtLm9uKCdkYXRhJywgKGNodW5rKSA9PiBmaWxlSGFzaC51cGRhdGUoY2h1bmspKTtcbiAgICAgIHJlYWRTdHJlYW0ub24oJ2VuZCcsICgpID0+IHJlc29sdmUoZmlsZUhhc2guZGlnZXN0KCdoZXgnKSkpO1xuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGFuIGBXYWxrZXJgIGluc3RhbmNlLCB3aGljaCBpcyBhIHJlYWRhYmxlIHN0cmVhbSAoYW5kIHRodXNseSBhbiBhc3luYyBpdGVyYXRvcikuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkaXIgLSBEaXIgdG8gc3RhcnQgd2Fsa2luZyBhdFxuICAgKiBAcGFyYW0ge2ltcG9ydCgna2xhdycpLk9wdGlvbnN9IFtvcHRzXVxuICAgKiBAcmV0dXJucyB7aW1wb3J0KCdrbGF3JykuV2Fsa2VyfVxuICAgKiBAc2VlIGh0dHBzOi8vd3d3Lm5wbWpzLmNvbS9wYWNrYWdlL2tsYXdcbiAgICovXG4gIHdhbGsgKGRpciwgb3B0cykge1xuICAgIHJldHVybiBrbGF3KGRpciwgb3B0cyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlY3Vyc2l2ZWx5IGNyZWF0ZSBhIGRpcmVjdG9yeS5cbiAgICogQHBhcmFtIHtpbXBvcnQoJ2ZzJykuUGF0aExpa2V9IGRpclxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmd8dW5kZWZpbmVkPn1cbiAgICovXG4gIGFzeW5jIG1rZGlycCAoZGlyKSB7XG4gICAgcmV0dXJuIGF3YWl0IGZzLm1rZGlyKGRpciwge3JlY3Vyc2l2ZTogdHJ1ZX0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBXYWxrcyBhIGRpcmVjdG9yeSBnaXZlbiBhY2NvcmRpbmcgdG8gdGhlIHBhcmFtZXRlcnMgZ2l2ZW4uIFRoZSBjYWxsYmFjayB3aWxsIGJlIGludm9rZWQgd2l0aCBhIHBhdGggam9pbmVkIHdpdGggdGhlIGRpciBwYXJhbWV0ZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRpciBEaXJlY3RvcnkgcGF0aCB3aGVyZSB3ZSB3aWxsIHN0YXJ0IHdhbGtpbmdcbiAgICogQHBhcmFtIHtib29sZWFufSByZWN1cnNpdmUgU2V0IGl0IHRvIHRydWUgaWYgeW91IHdhbnQgdG8gY29udGludWUgd2Fsa2luZyBzdWIgZGlyZWN0b3JpZXNcbiAgICogQHBhcmFtIHtXYWxrRGlyQ2FsbGJhY2t9IGNhbGxiYWNrIFRoZSBjYWxsYmFjayB0byBiZSBjYWxsZWQgd2hlbiBhIG5ldyBwYXRoIGlzIGZvdW5kXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYGRpcmAgcGFyYW1ldGVyIGNvbnRhaW5zIGEgcGF0aCB0byBhbiBpbnZhbGlkIGZvbGRlclxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc/Pn0gcmV0dXJucyB0aGUgZm91bmQgcGF0aCBvciBudWxsIGlmIHRoZSBpdGVtIHdhcyBub3QgZm91bmRcbiAgICovXG4gIGFzeW5jIHdhbGtEaXIgKGRpciwgcmVjdXJzaXZlLCBjYWxsYmFjaykgeyAvL2VzbGludC1kaXNhYmxlLWxpbmUgcHJvbWlzZS9wcmVmZXItYXdhaXQtdG8tY2FsbGJhY2tzXG4gICAgbGV0IGlzVmFsaWRSb290ID0gZmFsc2U7XG4gICAgbGV0IGVyck1zZyA9IG51bGw7XG4gICAgdHJ5IHtcbiAgICAgIGlzVmFsaWRSb290ID0gKGF3YWl0IGZzLnN0YXQoZGlyKSkuaXNEaXJlY3RvcnkoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBlcnJNc2cgPSBlLm1lc3NhZ2U7XG4gICAgfVxuICAgIGlmICghaXNWYWxpZFJvb3QpIHtcbiAgICAgIHRocm93IEVycm9yKGAnJHtkaXJ9JyBpcyBub3QgYSB2YWxpZCByb290IGRpcmVjdG9yeWAgKyAoZXJyTXNnID8gYC4gT3JpZ2luYWwgZXJyb3I6ICR7ZXJyTXNnfWAgOiAnJykpO1xuICAgIH1cblxuICAgIGxldCB3YWxrZXI7XG4gICAgbGV0IGZpbGVDb3VudCA9IDA7XG4gICAgbGV0IGRpcmVjdG9yeUNvdW50ID0gMDtcbiAgICBjb25zdCB0aW1lciA9IG5ldyBUaW1lcigpLnN0YXJ0KCk7XG4gICAgcmV0dXJuIGF3YWl0IG5ldyBCKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIGxldCBsYXN0RmlsZVByb2Nlc3NlZCA9IEIucmVzb2x2ZSgpO1xuICAgICAgd2Fsa2VyID0ga2xhdyhkaXIsIHtcbiAgICAgICAgZGVwdGhMaW1pdDogcmVjdXJzaXZlID8gLTEgOiAwLFxuICAgICAgfSk7XG4gICAgICB3YWxrZXIub24oJ2RhdGEnLCBmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICB3YWxrZXIucGF1c2UoKTtcblxuICAgICAgICBpZiAoIWl0ZW0uc3RhdHMuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICAgIGZpbGVDb3VudCsrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGRpcmVjdG9yeUNvdW50Kys7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJvbWlzZS9wcmVmZXItYXdhaXQtdG8tY2FsbGJhY2tzXG4gICAgICAgIGxhc3RGaWxlUHJvY2Vzc2VkID0gQi50cnkoYXN5bmMgKCkgPT4gYXdhaXQgY2FsbGJhY2soaXRlbS5wYXRoLCBpdGVtLnN0YXRzLmlzRGlyZWN0b3J5KCkpKVxuICAgICAgICAgIC50aGVuKGZ1bmN0aW9uIChkb25lID0gZmFsc2UpIHtcbiAgICAgICAgICAgIGlmIChkb25lKSB7XG4gICAgICAgICAgICAgIHJlc29sdmUoaXRlbS5wYXRoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHdhbGtlci5yZXN1bWUoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaChyZWplY3QpO1xuICAgICAgfSlcbiAgICAgIC5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyLCBpdGVtKSB7XG4gICAgICAgIGxvZy53YXJuKGBHb3QgYW4gZXJyb3Igd2hpbGUgd2Fsa2luZyAnJHtpdGVtLnBhdGh9JzogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgICAgLy8ga2xhdyBjYW5ub3QgZ2V0IGJhY2sgZnJvbSBhbiBFTk9FTlQgZXJyb3JcbiAgICAgICAgaWYgKGVyci5jb2RlID09PSAnRU5PRU5UJykge1xuICAgICAgICAgIGxvZy53YXJuKCdBbGwgZmlsZXMgbWF5IG5vdCBoYXZlIGJlZW4gYWNjZXNzZWQnKTtcbiAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5vbignZW5kJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBsYXN0RmlsZVByb2Nlc3NlZFxuICAgICAgICAgIC50aGVuKChmaWxlKSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKC8qKiBAdHlwZSB7c3RyaW5nfHVuZGVmaW5lZH0gKi8oZmlsZSkgPz8gbnVsbCk7XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgICAgbG9nLndhcm4oYFVuZXhwZWN0ZWQgZXJyb3I6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pLmZpbmFsbHkoZnVuY3Rpb24gKCkge1xuICAgICAgbG9nLmRlYnVnKGBUcmF2ZXJzZWQgJHtwbHVyYWxpemUoJ2RpcmVjdG9yeScsIGRpcmVjdG9yeUNvdW50LCB0cnVlKX0gYCArXG4gICAgICAgIGBhbmQgJHtwbHVyYWxpemUoJ2ZpbGUnLCBmaWxlQ291bnQsIHRydWUpfSBgICtcbiAgICAgICAgYGluICR7dGltZXIuZ2V0RHVyYXRpb24oKS5hc01pbGxpU2Vjb25kcy50b0ZpeGVkKDApfW1zYCk7XG4gICAgICBpZiAod2Fsa2VyKSB7XG4gICAgICAgIHdhbGtlci5kZXN0cm95KCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sXG4gIC8qKlxuICAgKiBSZWFkcyB0aGUgY2xvc2VzdCBgcGFja2FnZS5qc29uYCBmaWxlIGZyb20gYWJzb2x1dGUgcGF0aCBgZGlyYC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRpciAtIERpcmVjdG9yeSB0byBzZWFyY2ggZnJvbVxuICAgKiBAcGFyYW0ge2ltcG9ydCgncmVhZC1wa2cnKS5PcHRpb25zfSBbb3B0c10gLSBBZGRpdGlvbmFsIG9wdGlvbnMgZm9yIGByZWFkLXBrZ2BcbiAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdlcmUgcHJvYmxlbXMgZmluZGluZyBvciByZWFkaW5nIGEgYHBhY2thZ2UuanNvbmAgZmlsZVxuICAgKiBAcmV0dXJucyB7b2JqZWN0fSBBIHBhcnNlZCBgcGFja2FnZS5qc29uYFxuICAgKi9cbiAgcmVhZFBhY2thZ2VKc29uRnJvbSAoZGlyLCBvcHRzID0ge30pIHtcbiAgICBjb25zdCBjd2QgPSBmcy5maW5kUm9vdChkaXIpO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gcmVhZFBrZy5zeW5jKHsuLi5vcHRzLCBjd2R9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGVyci5tZXNzYWdlID0gYEZhaWxlZCB0byByZWFkIGEgXFxgcGFja2FnZS5qc29uXFxgIGZyb20gZGlyIFxcYCR7ZGlyfVxcYDpcXG5cXG4ke2Vyci5tZXNzYWdlfWA7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9LFxuICAvKipcbiAgICogRmluZHMgdGhlIHByb2plY3Qgcm9vdCBkaXJlY3RvcnkgZnJvbSBgZGlyYC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGRpciAtIERpcmVjdG9yeSB0byBzZWFyY2ggZnJvbVxuICAgKiBAdGhyb3dzIHtUeXBlRXJyb3J9IElmIGBkaXJgIGlzIG5vdCBhIG5vbmVtcHR5IHN0cmluZyBvciByZWxhdGl2ZSBwYXRoXG4gICAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3ZXJlIHByb2JsZW1zIGZpbmRpbmcgdGhlIHByb2plY3Qgcm9vdFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY2xvc2VzZXQgcGFyZW50IGRpciBjb250YWluaW5nIGBwYWNrYWdlLmpzb25gXG4gICAqL1xuICBmaW5kUm9vdCAoZGlyKSB7XG4gICAgaWYgKCFkaXIgfHwgIXBhdGguaXNBYnNvbHV0ZShkaXIpKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdgZmluZFJvb3QoKWAgbXVzdCBiZSBwcm92aWRlZCBhIG5vbi1lbXB0eSwgYWJzb2x1dGUgcGF0aCcpO1xuICAgIH1cbiAgICBjb25zdCByZXN1bHQgPSBmaW5kUm9vdENhY2hlZChkaXIpO1xuICAgIGlmICghcmVzdWx0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFxcYGZpbmRSb290KClcXGAgY291bGQgbm90IGZpbmQgXFxgcGFja2FnZS5qc29uXFxgIGZyb20gJHtkaXJ9YCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0sXG5cbiAgLy8gYWRkIHRoZSBzdXBwb3J0ZWQgYGZzYCBmdW5jdGlvbnNcbiAgYWNjZXNzOiBmc1Byb21pc2VzLmFjY2VzcyxcbiAgYXBwZW5kRmlsZTogZnNQcm9taXNlcy5hcHBlbmRGaWxlLFxuICBjaG1vZDogZnNQcm9taXNlcy5jaG1vZCxcbiAgY2xvc2U6IEIucHJvbWlzaWZ5KGNsb3NlKSxcbiAgY29uc3RhbnRzLFxuICBjcmVhdGVXcml0ZVN0cmVhbSxcbiAgY3JlYXRlUmVhZFN0cmVhbSxcbiAgbHN0YXQ6IGZzUHJvbWlzZXMubHN0YXQsXG4gIC8qKlxuICAgKiBXYXJuaW5nOiB0aGlzIGlzIGEgcHJvbWlzaWZpZWQge0BsaW5rY29kZSBvcGVuIGZzLm9wZW59LlxuICAgKiBJdCByZXNvbHZlcyB3L2EgZmlsZSBkZXNjcmlwdG9yIGluc3RlYWQgb2YgYSB7QGxpbmtjb2RlIGZzUHJvbWlzZXMuRmlsZUhhbmRsZSBGaWxlSGFuZGxlfSBvYmplY3QsIGFzIHtAbGlua2NvZGUgZnNQcm9taXNlcy5vcGVufSBkb2VzLiBVc2Uge0BsaW5rY29kZSBmcy5vcGVuRmlsZX0gaWYgeW91IHdhbnQgYSBgRmlsZUhhbmRsZWAuXG4gICAqL1xuICBvcGVuOiBCLnByb21pc2lmeShvcGVuKSxcbiAgb3BlbkZpbGU6IGZzUHJvbWlzZXMub3BlbixcbiAgcmVhZGRpcjogZnNQcm9taXNlcy5yZWFkZGlyLFxuICByZWFkOiBCLnByb21pc2lmeShyZWFkKSxcbiAgcmVhZEZpbGU6IGZzUHJvbWlzZXMucmVhZEZpbGUsXG4gIHJlYWRsaW5rOiBmc1Byb21pc2VzLnJlYWRsaW5rLFxuICByZWFscGF0aDogZnNQcm9taXNlcy5yZWFscGF0aCxcbiAgcmVuYW1lOiBmc1Byb21pc2VzLnJlbmFtZSxcbiAgc3RhdDogZnNQcm9taXNlcy5zdGF0LFxuICBzeW1saW5rOiBmc1Byb21pc2VzLnN5bWxpbmssXG4gIHVubGluazogZnNQcm9taXNlcy51bmxpbmssXG4gIHdyaXRlOiBCLnByb21pc2lmeSh3cml0ZSksXG4gIHdyaXRlRmlsZTogZnNQcm9taXNlcy53cml0ZUZpbGUsXG5cbiAgLy8gZGVwcmVjYXRlZCBwcm9wc1xuXG4gIC8qKlxuICAgKiBVc2UgYGNvbnN0YW50cy5GX09LYCBpbnN0ZWFkLlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgRl9PSzogY29uc3RhbnRzLkZfT0ssXG5cbiAgLyoqXG4gICAqIFVzZSBgY29uc3RhbnRzLlJfT0tgIGluc3RlYWQuXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBSX09LOiBjb25zdGFudHMuUl9PSyxcblxuICAvKipcbiAgICogVXNlIGBjb25zdGFudHMuV19PS2AgaW5zdGVhZC5cbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIFdfT0s6IGNvbnN0YW50cy5XX09LLFxuXG4gIC8qKlxuICAgKiBVc2UgYGNvbnN0YW50cy5YX09LYCBpbnN0ZWFkLlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgWF9PSzogY29uc3RhbnRzLlhfT0tcbn07XG5cbmV4cG9ydCB7IGZzIH07XG5leHBvcnQgZGVmYXVsdCBmcztcblxuLyoqXG4gKiBUaGUgY2FsbGJhY2sgZnVuY3Rpb24gd2hpY2ggd2lsbCBiZSBjYWxsZWQgZHVyaW5nIHRoZSBkaXJlY3Rvcnkgd2Fsa2luZ1xuICogQGNhbGxiYWNrIFdhbGtEaXJDYWxsYmFja1xuICogQHBhcmFtIHtzdHJpbmd9IGl0ZW1QYXRoIFRoZSBwYXRoIG9mIHRoZSBmaWxlIG9yIGZvbGRlclxuICogQHBhcmFtIHtib29sZWFufSBpc0RpcmVjdG9yeSBTaG93cyBpZiBpdCBpcyBhIGRpcmVjdG9yeSBvciBhIGZpbGVcbiAqIEByZXR1cm4ge2Jvb2xlYW59IHJldHVybiB0cnVlIGlmIHlvdSB3YW50IHRvIHN0b3Agd2Fsa2luZ1xuKi9cblxuIl19
|
|
238
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9mcy5qcyJdLCJuYW1lcyI6WyJuY3BBc3luYyIsIkIiLCJwcm9taXNpZnkiLCJuY3AiLCJmaW5kUm9vdENhY2hlZCIsIl8iLCJtZW1vaXplIiwicGtnRGlyIiwic3luYyIsImZzIiwiaGFzQWNjZXNzIiwicGF0aCIsImZzUHJvbWlzZXMiLCJhY2Nlc3MiLCJjb25zdGFudHMiLCJSX09LIiwiZXJyIiwiZXhpc3RzIiwicmltcmFmIiwicmltcmFmSWR4IiwicmltcmFmU3luYyIsIm1rZGlyIiwiZmlsZXBhdGgiLCJvcHRzIiwiY29kZSIsImNvcHlGaWxlIiwic291cmNlIiwiZGVzdGluYXRpb24iLCJFcnJvciIsIm1kNSIsImZpbGVQYXRoIiwiaGFzaCIsIm12Iiwid2hpY2giLCJnbG9iIiwic2FuaXRpemVOYW1lIiwic2FuaXRpemUiLCJhbGdvcml0aG0iLCJyZXNvbHZlIiwicmVqZWN0IiwiZmlsZUhhc2giLCJjcnlwdG8iLCJjcmVhdGVIYXNoIiwicmVhZFN0cmVhbSIsIm9uIiwiZSIsIm1lc3NhZ2UiLCJjaHVuayIsInVwZGF0ZSIsImRpZ2VzdCIsIndhbGsiLCJkaXIiLCJta2RpcnAiLCJyZWN1cnNpdmUiLCJ3YWxrRGlyIiwiY2FsbGJhY2siLCJpc1ZhbGlkUm9vdCIsImVyck1zZyIsInN0YXQiLCJpc0RpcmVjdG9yeSIsIndhbGtlciIsImZpbGVDb3VudCIsImRpcmVjdG9yeUNvdW50IiwidGltZXIiLCJUaW1lciIsInN0YXJ0IiwibGFzdEZpbGVQcm9jZXNzZWQiLCJkZXB0aExpbWl0IiwiaXRlbSIsInBhdXNlIiwic3RhdHMiLCJ0cnkiLCJ0aGVuIiwiZG9uZSIsInJlc3VtZSIsImNhdGNoIiwibG9nIiwid2FybiIsImZpbGUiLCJmaW5hbGx5IiwiZGVidWciLCJnZXREdXJhdGlvbiIsImFzTWlsbGlTZWNvbmRzIiwidG9GaXhlZCIsImRlc3Ryb3kiLCJyZWFkUGFja2FnZUpzb25Gcm9tIiwiY3dkIiwiZmluZFJvb3QiLCJyZWFkUGtnIiwiaXNBYnNvbHV0ZSIsIlR5cGVFcnJvciIsInJlc3VsdCIsImFwcGVuZEZpbGUiLCJjaG1vZCIsImNsb3NlIiwiY3JlYXRlV3JpdGVTdHJlYW0iLCJjcmVhdGVSZWFkU3RyZWFtIiwibHN0YXQiLCJvcGVuIiwib3BlbkZpbGUiLCJyZWFkZGlyIiwicmVhZCIsInJlYWRGaWxlIiwicmVhZGxpbmsiLCJyZWFscGF0aCIsInJlbmFtZSIsInN5bWxpbmsiLCJ1bmxpbmsiLCJ3cml0ZSIsIndyaXRlRmlsZSIsIkZfT0siLCJXX09LIiwiWF9PSyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxRQUFRLEdBQXlGQyxrQkFBRUMsU0FBRixDQUFZQyxZQUFaLENBQXZHOztBQUNBLE1BQU1DLGNBQWMsR0FBR0MsZ0JBQUVDLE9BQUYsQ0FBVUMsZ0JBQU9DLElBQWpCLENBQXZCOztBQUVBLE1BQU1DLEVBQUUsR0FBRztBQU1ULFFBQU1DLFNBQU4sQ0FBaUJDLElBQWpCLEVBQXVCO0FBQ3JCLFFBQUk7QUFDRixZQUFNQyxhQUFXQyxNQUFYLENBQWtCRixJQUFsQixFQUF3QkcsY0FBVUMsSUFBbEMsQ0FBTjtBQUNELEtBRkQsQ0FFRSxPQUFPQyxHQUFQLEVBQVk7QUFDWixhQUFPLEtBQVA7QUFDRDs7QUFDRCxXQUFPLElBQVA7QUFDRCxHQWJROztBQW1CVCxRQUFNQyxNQUFOLENBQWNOLElBQWQsRUFBb0I7QUFDbEIsV0FBTyxNQUFNRixFQUFFLENBQUNDLFNBQUgsQ0FBYUMsSUFBYixDQUFiO0FBQ0QsR0FyQlE7O0FBMkJUTyxFQUFBQSxNQUFNLEVBQXFGakIsa0JBQUVDLFNBQUYsQ0FBWWlCLGVBQVosQ0EzQmxGO0FBaUNUQyxFQUFBQSxVQUFVLEVBQUVELGdCQUFVWCxJQWpDYjs7QUEyQ1QsUUFBTWEsS0FB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LElBelJQO0FBK1JUL0YsRUFBQUEsSUFBSSxFQUFFRCxjQUFVQyxJQS9SUDtBQXFTVGdHLEVBQUFBLElBQUksRUFBRWpHLGNBQVVpRyxJQXJTUDtBQTJTVEMsRUFBQUEsSUFBSSxFQUFFbEcsY0FBVWtHO0FBM1NQLENBQVg7O2VBK1NldkcsRSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuXG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgY3J5cHRvIGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgeyBjbG9zZSwgY29uc3RhbnRzLCBjcmVhdGVSZWFkU3RyZWFtLCBjcmVhdGVXcml0ZVN0cmVhbSwgcHJvbWlzZXMgYXMgZnNQcm9taXNlcywgcmVhZCwgd3JpdGUsIG9wZW4gfSBmcm9tICdmcyc7XG5pbXBvcnQgZ2xvYiBmcm9tICdnbG9iJztcbmltcG9ydCBrbGF3IGZyb20gJ2tsYXcnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBtdiBmcm9tICdtdic7XG5pbXBvcnQgbmNwIGZyb20gJ25jcCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBwa2dEaXIgZnJvbSAncGtnLWRpcic7XG5pbXBvcnQgcmVhZFBrZyBmcm9tICdyZWFkLXBrZyc7XG5pbXBvcnQgcmltcmFmSWR4IGZyb20gJ3JpbXJhZic7XG5pbXBvcnQgc2FuaXRpemUgZnJvbSAnc2FuaXRpemUtZmlsZW5hbWUnO1xuaW1wb3J0IHdoaWNoIGZyb20gJ3doaWNoJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IFRpbWVyIGZyb20gJy4vdGltaW5nJztcbmltcG9ydCB7IHBsdXJhbGl6ZSB9IGZyb20gJy4vdXRpbCc7XG5cbmNvbnN0IG5jcEFzeW5jID0gLyoqIEB0eXBlIHsoc291cmNlOiBzdHJpbmcsIGRlc3Q6IHN0cmluZywgb3B0czogbmNwLk9wdGlvbnN8dW5kZWZpbmVkKSA9PiBCPHZvaWQ+fSAqLyhCLnByb21pc2lmeShuY3ApKTtcbmNvbnN0IGZpbmRSb290Q2FjaGVkID0gXy5tZW1vaXplKHBrZ0Rpci5zeW5jKTtcblxuY29uc3QgZnMgPSB7XG4gIC8qKlxuICAgKiBSZXNvbHZlcyBgdHJ1ZWAgaWYgYHBhdGhgIGlzIF9yZWFkYWJsZV8sIHdoaWNoIGRpZmZlcnMgZnJvbSBOb2RlLmpzJyBkZWZhdWx0IGJlaGF2aW9yIG9mIFwiY2FuIHdlIHNlZSBpdD9cIlxuICAgKiBAcGFyYW0ge2ltcG9ydCgnZnMnKS5QYXRoTGlrZX0gcGF0aFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn1cbiAgICovXG4gIGFzeW5jIGhhc0FjY2VzcyAocGF0aCkge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmc1Byb21pc2VzLmFjY2VzcyhwYXRoLCBjb25zdGFudHMuUl9PSyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBBbGlhcyBmb3Ige0BsaW5rY29kZSBmcy5oYXNBY2Nlc3N9XG4gICAqIEBwYXJhbSB7aW1wb3J0KCdmcycpLlBhdGhMaWtlfSBwYXRoXG4gICAqL1xuICBhc3luYyBleGlzdHMgKHBhdGgpIHtcbiAgICByZXR1cm4gYXdhaXQgZnMuaGFzQWNjZXNzKHBhdGgpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZW1vdmUgYSBkaXJlY3RvcnkgYW5kIGFsbCBpdHMgY29udGVudHMsIHJlY3Vyc2l2ZWx5XG4gICAqIEB0b2RvIFJlcGxhY2Ugd2l0aCBgcm0oKWAgZnJvbSBgZnMucHJvbWlzZXNgIHdoZW4gTm9kZS5qcyB2MTIgc3VwcG9ydCBpcyBkcm9wcGVkLlxuICAgKi9cbiAgcmltcmFmOiAvKiogQHR5cGUgeyhkaXJwYXRoOiBzdHJpbmcsIG9wdHM/OiBpbXBvcnQoJ3JpbXJhZicpLk9wdGlvbnMpID0+IFByb21pc2U8dm9pZD59ICovKEIucHJvbWlzaWZ5KHJpbXJhZklkeCkpLFxuXG4gIC8qKlxuICAgKiBBbGlhcyBvZiB7QGxpbmtjb2RlIHJpbXJhZklkeC5zeW5jfVxuICAgKiBAdG9kbyBSZXBsYWNlIHdpdGggYHJtU3luYygpYCBmcm9tIGBmc2Agd2hlbiBOb2RlLmpzIHYxMiBzdXBwb3J0IGlzIGRyb3BwZWQuXG4gICAqL1xuICByaW1yYWZTeW5jOiByaW1yYWZJZHguc3luYyxcblxuICAvKipcbiAgICogTGlrZSBOb2RlLmpzJyBgZnNQcm9taXNlcy5ta2RpcigpYCwgYnV0IHdpbGwgX25vdF8gcmVqZWN0IGlmIHRoZSBkaXJlY3RvcnkgYWxyZWFkeSBleGlzdHMuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfEJ1ZmZlcnxVUkx9IGZpbGVwYXRoXG4gICAqIEBwYXJhbSB7aW1wb3J0KCdmcycpLk1ha2VEaXJlY3RvcnlPcHRpb25zfSBbb3B0c11cbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nfHVuZGVmaW5lZD59XG4gICAqIEBzZWUgaHR0cHM6Ly9ub2RlanMub3JnL2FwaS9mcy5odG1sI2ZzcHJvbWlzZXNta2RpcnBhdGgtb3B0aW9uc1xuICAgKi9cbiAgYXN5bmMgbWtkaXIgKGZpbGVwYXRoLCBvcHRzID0ge30pIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IGZzUHJvbWlzZXMubWtkaXIoZmlsZXBhdGgsIG9wdHMpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgaWYgKGVycj8uY29kZSAhPT0gJ0VFWElTVCcpIHtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgLyoqXG4gICAqIENvcGllcyBmaWxlcyBfYW5kIGVudGlyZSBkaXJlY3Rvcmllc19cbiAgICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZSAtIFNvdXJjZSB0byBjb3B5XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkZXN0aW5hdGlvbiAtIERlc3RpbmF0aW9uIHRvIGNvcHkgdG9cbiAgICogQHBhcmFtIHtuY3AuT3B0aW9uc30gW29wdHNdIC0gQWRkaXRpb25hbCBhcmd1bWVudHMgdG8gcGFzcyB0byBgbmNwYFxuICAgKiBAc2VlIGh0dHBzOi8vbnBtLmltL25jcFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIGNvcHlGaWxlIChzb3VyY2UsIGRlc3RpbmF0aW9uLCBvcHRzID0ge30pIHtcbiAgICBpZiAoIWF3YWl0IGZzLmhhc0FjY2Vzcyhzb3VyY2UpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBmaWxlIGF0ICcke3NvdXJjZX0nIGRvZXMgbm90IGV4aXN0IG9yIGlzIG5vdCBhY2Nlc3NpYmxlYCk7XG4gICAgfVxuICAgIHJldHVybiBhd2FpdCBuY3BBc3luYyhzb3VyY2UsIGRlc3RpbmF0aW9uLCBvcHRzKTtcbiAgfSxcblxuICAvKipcbiAgICogQ3JlYXRlIGFuIE1ENSBoYXNoIG9mIGEgZmlsZS5cbiAgICogQHBhcmFtIHtpbXBvcnQoJ2ZzJykuUGF0aExpa2V9IGZpbGVQYXRoXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59XG4gICAqL1xuICBhc3luYyBtZDUgKGZpbGVQYXRoKSB7XG4gICAgcmV0dXJuIGF3YWl0IGZzLmhhc2goZmlsZVBhdGgsICdtZDUnKTtcbiAgfSxcblxuICAvKipcbiAgICogTW92ZSBhIGZpbGVcbiAgICovXG4gIG12OiAvKiogQHR5cGUgeyhmcm9tOiBzdHJpbmcsIHRvOiBzdHJpbmcsIG9wdHM/OiBtdi5PcHRpb25zKSA9PiBCPHZvaWQ+fSAqLyhCLnByb21pc2lmeShtdikpLFxuXG4gIC8qKlxuICAgKiBGaW5kIHBhdGggdG8gYW4gZXhlY3V0YWJsZSBpbiBzeXN0ZW0gYFBBVEhgXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL25wbS9ub2RlLXdoaWNoXG4gICAqL1xuICB3aGljaCxcblxuICAvKipcbiAgICogR2l2ZW4gYSBnbG9iIHBhdHRlcm4sIHJlc29sdmUgd2l0aCBsaXN0IG9mIGZpbGVzIG1hdGNoaW5nIHRoYXQgcGF0dGVyblxuICAgKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9pc2FhY3Mvbm9kZS1nbG9iXG4gICAqL1xuICBnbG9iOiAvKiogQHR5cGUgeyhwYXR0ZXJuOiBzdHJpbmcsIG9wdHM/OiBnbG9iLklPcHRpb25zKSA9PiBCPHN0cmluZ1tdPn0gKi8oQi5wcm9taXNpZnkoZ2xvYikpLFxuXG4gIC8qKlxuICAgKiBTYW5pdGl6ZSBhIGZpbGVuYW1lXG4gICAqIEBzZWUgaHR0cHM6Ly9naXRodWIuY29tL3BhcnNoYXAvbm9kZS1zYW5pdGl6ZS1maWxlbmFtZVxuICAgKi9cbiAgc2FuaXRpemVOYW1lOiBzYW5pdGl6ZSxcblxuICAvKipcbiAgICogQ3JlYXRlIGEgaGV4IGRpZ2VzdCBvZiBzb21lIGZpbGUgYXQgYGZpbGVQYXRoYFxuICAgKiBAcGFyYW0ge2ltcG9ydCgnZnMnKS5QYXRoTGlrZX0gZmlsZVBhdGhcbiAgICogQHBhcmFtIHtzdHJpbmd9IFthbGdvcml0aG1dXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59XG4gICAqL1xuICBhc3luYyBoYXNoIChmaWxlUGF0aCwgYWxnb3JpdGhtID0gJ3NoYTEnKSB7XG4gICAgcmV0dXJuIGF3YWl0IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IGZpbGVIYXNoID0gY3J5cHRvLmNyZWF0ZUhhc2goYWxnb3JpdGhtKTtcbiAgICAgIGNvbnN0IHJlYWRTdHJlYW0gPSBjcmVhdGVSZWFkU3RyZWFtKGZpbGVQYXRoKTtcbiAgICAgIHJlYWRTdHJlYW0ub24oJ2Vycm9yJywgKGUpID0+IHJlamVjdChcbiAgICAgICAgbmV3IEVycm9yKGBDYW5ub3QgY2FsY3VsYXRlICR7YWxnb3JpdGhtfSBoYXNoIGZvciAnJHtmaWxlUGF0aH0nLiBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCkpKTtcbiAgICAgIHJlYWRTdHJlYW0ub24oJ2RhdGEnLCAoY2h1bmspID0+IGZpbGVIYXNoLnVwZGF0ZShjaHVuaykpO1xuICAgICAgcmVhZFN0cmVhbS5vbignZW5kJywgKCkgPT4gcmVzb2x2ZShmaWxlSGFzaC5kaWdlc3QoJ2hleCcpKSk7XG4gICAgfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJldHVybnMgYW4gYFdhbGtlcmAgaW5zdGFuY2UsIHdoaWNoIGlzIGEgcmVhZGFibGUgc3RyZWFtIChhbmQgdGh1c2x5IGFuIGFzeW5jIGl0ZXJhdG9yKS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRpciAtIERpciB0byBzdGFydCB3YWxraW5nIGF0XG4gICAqIEBwYXJhbSB7aW1wb3J0KCdrbGF3JykuT3B0aW9uc30gW29wdHNdXG4gICAqIEByZXR1cm5zIHtpbXBvcnQoJ2tsYXcnKS5XYWxrZXJ9XG4gICAqIEBzZWUgaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2Uva2xhd1xuICAgKi9cbiAgd2FsayAoZGlyLCBvcHRzKSB7XG4gICAgcmV0dXJuIGtsYXcoZGlyLCBvcHRzKTtcbiAgfSxcblxuICAvKipcbiAgICogUmVjdXJzaXZlbHkgY3JlYXRlIGEgZGlyZWN0b3J5LlxuICAgKiBAcGFyYW0ge2ltcG9ydCgnZnMnKS5QYXRoTGlrZX0gZGlyXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZ3x1bmRlZmluZWQ+fVxuICAgKi9cbiAgYXN5bmMgbWtkaXJwIChkaXIpIHtcbiAgICByZXR1cm4gYXdhaXQgZnMubWtkaXIoZGlyLCB7cmVjdXJzaXZlOiB0cnVlfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFdhbGtzIGEgZGlyZWN0b3J5IGdpdmVuIGFjY29yZGluZyB0byB0aGUgcGFyYW1ldGVycyBnaXZlbi4gVGhlIGNhbGxiYWNrIHdpbGwgYmUgaW52b2tlZCB3aXRoIGEgcGF0aCBqb2luZWQgd2l0aCB0aGUgZGlyIHBhcmFtZXRlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGlyIERpcmVjdG9yeSBwYXRoIHdoZXJlIHdlIHdpbGwgc3RhcnQgd2Fsa2luZ1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJlY3Vyc2l2ZSBTZXQgaXQgdG8gdHJ1ZSBpZiB5b3Ugd2FudCB0byBjb250aW51ZSB3YWxraW5nIHN1YiBkaXJlY3Rvcmllc1xuICAgKiBAcGFyYW0ge1dhbGtEaXJDYWxsYmFja30gY2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGJlIGNhbGxlZCB3aGVuIGEgbmV3IHBhdGggaXMgZm91bmRcbiAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBgZGlyYCBwYXJhbWV0ZXIgY29udGFpbnMgYSBwYXRoIHRvIGFuIGludmFsaWQgZm9sZGVyXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz8+fSByZXR1cm5zIHRoZSBmb3VuZCBwYXRoIG9yIG51bGwgaWYgdGhlIGl0ZW0gd2FzIG5vdCBmb3VuZFxuICAgKi9cbiAgYXN5bmMgd2Fsa0RpciAoZGlyLCByZWN1cnNpdmUsIGNhbGxiYWNrKSB7IC8vZXNsaW50LWRpc2FibGUtbGluZSBwcm9taXNlL3ByZWZlci1hd2FpdC10by1jYWxsYmFja3NcbiAgICBsZXQgaXNWYWxpZFJvb3QgPSBmYWxzZTtcbiAgICBsZXQgZXJyTXNnID0gbnVsbDtcbiAgICB0cnkge1xuICAgICAgaXNWYWxpZFJvb3QgPSAoYXdhaXQgZnMuc3RhdChkaXIpKS5pc0RpcmVjdG9yeSgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGVyck1zZyA9IGUubWVzc2FnZTtcbiAgICB9XG4gICAgaWYgKCFpc1ZhbGlkUm9vdCkge1xuICAgICAgdGhyb3cgRXJyb3IoYCcke2Rpcn0nIGlzIG5vdCBhIHZhbGlkIHJvb3QgZGlyZWN0b3J5YCArIChlcnJNc2cgPyBgLiBPcmlnaW5hbCBlcnJvcjogJHtlcnJNc2d9YCA6ICcnKSk7XG4gICAgfVxuXG4gICAgbGV0IHdhbGtlcjtcbiAgICBsZXQgZmlsZUNvdW50ID0gMDtcbiAgICBsZXQgZGlyZWN0b3J5Q291bnQgPSAwO1xuICAgIGNvbnN0IHRpbWVyID0gbmV3IFRpbWVyKCkuc3RhcnQoKTtcbiAgICByZXR1cm4gYXdhaXQgbmV3IEIoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgbGV0IGxhc3RGaWxlUHJvY2Vzc2VkID0gQi5yZXNvbHZlKCk7XG4gICAgICB3YWxrZXIgPSBrbGF3KGRpciwge1xuICAgICAgICBkZXB0aExpbWl0OiByZWN1cnNpdmUgPyAtMSA6IDAsXG4gICAgICB9KTtcbiAgICAgIHdhbGtlci5vbignZGF0YScsIGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICAgIHdhbGtlci5wYXVzZSgpO1xuXG4gICAgICAgIGlmICghaXRlbS5zdGF0cy5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICAgICAgZmlsZUNvdW50Kys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGlyZWN0b3J5Q291bnQrKztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcm9taXNlL3ByZWZlci1hd2FpdC10by1jYWxsYmFja3NcbiAgICAgICAgbGFzdEZpbGVQcm9jZXNzZWQgPSBCLnRyeShhc3luYyAoKSA9PiBhd2FpdCBjYWxsYmFjayhpdGVtLnBhdGgsIGl0ZW0uc3RhdHMuaXNEaXJlY3RvcnkoKSkpXG4gICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKGRvbmUgPSBmYWxzZSkge1xuICAgICAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICAgICAgcmVzb2x2ZShpdGVtLnBhdGgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgd2Fsa2VyLnJlc3VtZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgICAgLmNhdGNoKHJlamVjdCk7XG4gICAgICB9KVxuICAgICAgLm9uKCdlcnJvcicsIGZ1bmN0aW9uIChlcnIsIGl0ZW0pIHtcbiAgICAgICAgbG9nLndhcm4oYEdvdCBhbiBlcnJvciB3aGlsZSB3YWxraW5nICcke2l0ZW0ucGF0aH0nOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgICAvLyBrbGF3IGNhbm5vdCBnZXQgYmFjayBmcm9tIGFuIEVOT0VOVCBlcnJvclxuICAgICAgICBpZiAoZXJyLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICAgICAgbG9nLndhcm4oJ0FsbCBmaWxlcyBtYXkgbm90IGhhdmUgYmVlbiBhY2Nlc3NlZCcpO1xuICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLm9uKCdlbmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxhc3RGaWxlUHJvY2Vzc2VkXG4gICAgICAgICAgLnRoZW4oKGZpbGUpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoLyoqIEB0eXBlIHtzdHJpbmd8dW5kZWZpbmVkfSAqLyhmaWxlKSA/PyBudWxsKTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgICBsb2cud2FybihgVW5leHBlY3RlZCBlcnJvcjogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSkuZmluYWxseShmdW5jdGlvbiAoKSB7XG4gICAgICBsb2cuZGVidWcoYFRyYXZlcnNlZCAke3BsdXJhbGl6ZSgnZGlyZWN0b3J5JywgZGlyZWN0b3J5Q291bnQsIHRydWUpfSBgICtcbiAgICAgICAgYGFuZCAke3BsdXJhbGl6ZSgnZmlsZScsIGZpbGVDb3VudCwgdHJ1ZSl9IGAgK1xuICAgICAgICBgaW4gJHt0aW1lci5nZXREdXJhdGlvbigpLmFzTWlsbGlTZWNvbmRzLnRvRml4ZWQoMCl9bXNgKTtcbiAgICAgIGlmICh3YWxrZXIpIHtcbiAgICAgICAgd2Fsa2VyLmRlc3Ryb3koKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcbiAgLyoqXG4gICAqIFJlYWRzIHRoZSBjbG9zZXN0IGBwYWNrYWdlLmpzb25gIGZpbGUgZnJvbSBhYnNvbHV0ZSBwYXRoIGBkaXJgLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGlyIC0gRGlyZWN0b3J5IHRvIHNlYXJjaCBmcm9tXG4gICAqIEBwYXJhbSB7aW1wb3J0KCdyZWFkLXBrZycpLk9wdGlvbnN9IFtvcHRzXSAtIEFkZGl0aW9uYWwgb3B0aW9ucyBmb3IgYHJlYWQtcGtnYFxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2VyZSBwcm9ibGVtcyBmaW5kaW5nIG9yIHJlYWRpbmcgYSBgcGFja2FnZS5qc29uYCBmaWxlXG4gICAqIEByZXR1cm5zIHtvYmplY3R9IEEgcGFyc2VkIGBwYWNrYWdlLmpzb25gXG4gICAqL1xuICByZWFkUGFja2FnZUpzb25Gcm9tIChkaXIsIG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IGN3ZCA9IGZzLmZpbmRSb290KGRpcik7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiByZWFkUGtnLnN5bmMoey4uLm9wdHMsIGN3ZH0pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgZXJyLm1lc3NhZ2UgPSBgRmFpbGVkIHRvIHJlYWQgYSBcXGBwYWNrYWdlLmpzb25cXGAgZnJvbSBkaXIgXFxgJHtkaXJ9XFxgOlxcblxcbiR7ZXJyLm1lc3NhZ2V9YDtcbiAgICAgIHRocm93IGVycjtcbiAgICB9XG4gIH0sXG4gIC8qKlxuICAgKiBGaW5kcyB0aGUgcHJvamVjdCByb290IGRpcmVjdG9yeSBmcm9tIGBkaXJgLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZGlyIC0gRGlyZWN0b3J5IHRvIHNlYXJjaCBmcm9tXG4gICAqIEB0aHJvd3Mge1R5cGVFcnJvcn0gSWYgYGRpcmAgaXMgbm90IGEgbm9uZW1wdHkgc3RyaW5nIG9yIHJlbGF0aXZlIHBhdGhcbiAgICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdlcmUgcHJvYmxlbXMgZmluZGluZyB0aGUgcHJvamVjdCByb290XG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjbG9zZXNldCBwYXJlbnQgZGlyIGNvbnRhaW5pbmcgYHBhY2thZ2UuanNvbmBcbiAgICovXG4gIGZpbmRSb290IChkaXIpIHtcbiAgICBpZiAoIWRpciB8fCAhcGF0aC5pc0Fic29sdXRlKGRpcikpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ2BmaW5kUm9vdCgpYCBtdXN0IGJlIHByb3ZpZGVkIGEgbm9uLWVtcHR5LCBhYnNvbHV0ZSBwYXRoJyk7XG4gICAgfVxuICAgIGNvbnN0IHJlc3VsdCA9IGZpbmRSb290Q2FjaGVkKGRpcik7XG4gICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgXFxgZmluZFJvb3QoKVxcYCBjb3VsZCBub3QgZmluZCBcXGBwYWNrYWdlLmpzb25cXGAgZnJvbSAke2Rpcn1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSxcblxuICAvLyBhZGQgdGhlIHN1cHBvcnRlZCBgZnNgIGZ1bmN0aW9uc1xuICBhY2Nlc3M6IGZzUHJvbWlzZXMuYWNjZXNzLFxuICBhcHBlbmRGaWxlOiBmc1Byb21pc2VzLmFwcGVuZEZpbGUsXG4gIGNobW9kOiBmc1Byb21pc2VzLmNobW9kLFxuICBjbG9zZTogQi5wcm9taXNpZnkoY2xvc2UpLFxuICBjb25zdGFudHMsXG4gIGNyZWF0ZVdyaXRlU3RyZWFtLFxuICBjcmVhdGVSZWFkU3RyZWFtLFxuICBsc3RhdDogZnNQcm9taXNlcy5sc3RhdCxcbiAgLyoqXG4gICAqIFdhcm5pbmc6IHRoaXMgaXMgYSBwcm9taXNpZmllZCB7QGxpbmtjb2RlIG9wZW4gZnMub3Blbn0uXG4gICAqIEl0IHJlc29sdmVzIHcvYSBmaWxlIGRlc2NyaXB0b3IgaW5zdGVhZCBvZiBhIHtAbGlua2NvZGUgZnNQcm9taXNlcy5GaWxlSGFuZGxlIEZpbGVIYW5kbGV9IG9iamVjdCwgYXMge0BsaW5rY29kZSBmc1Byb21pc2VzLm9wZW59IGRvZXMuIFVzZSB7QGxpbmtjb2RlIGZzLm9wZW5GaWxlfSBpZiB5b3Ugd2FudCBhIGBGaWxlSGFuZGxlYC5cbiAgICogQHR5cGUgeyhwYXRoOiBpbXBvcnQoJ2ZzJykuUGF0aExpa2UsIGZsYWdzOiBpbXBvcnQoJ2ZzJykuT3Blbk1vZGUsIG1vZGU/OiBpbXBvcnQoJ2ZzJykuTW9kZSkgPT4gUHJvbWlzZTxudW1iZXI+fVxuICAgKi9cbiAgb3BlbjogQi5wcm9taXNpZnkob3BlbiksXG4gIG9wZW5GaWxlOiBmc1Byb21pc2VzLm9wZW4sXG4gIHJlYWRkaXI6IGZzUHJvbWlzZXMucmVhZGRpcixcbiAgcmVhZDogQi5wcm9taXNpZnkocmVhZCksXG4gIHJlYWRGaWxlOiBmc1Byb21pc2VzLnJlYWRGaWxlLFxuICByZWFkbGluazogZnNQcm9taXNlcy5yZWFkbGluayxcbiAgcmVhbHBhdGg6IGZzUHJvbWlzZXMucmVhbHBhdGgsXG4gIHJlbmFtZTogZnNQcm9taXNlcy5yZW5hbWUsXG4gIHN0YXQ6IGZzUHJvbWlzZXMuc3RhdCxcbiAgc3ltbGluazogZnNQcm9taXNlcy5zeW1saW5rLFxuICB1bmxpbms6IGZzUHJvbWlzZXMudW5saW5rLFxuICB3cml0ZTogQi5wcm9taXNpZnkod3JpdGUpLFxuICB3cml0ZUZpbGU6IGZzUHJvbWlzZXMud3JpdGVGaWxlLFxuXG4gIC8vIGRlcHJlY2F0ZWQgcHJvcHNcblxuICAvKipcbiAgICogVXNlIGBjb25zdGFudHMuRl9PS2AgaW5zdGVhZC5cbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIEZfT0s6IGNvbnN0YW50cy5GX09LLFxuXG4gIC8qKlxuICAgKiBVc2UgYGNvbnN0YW50cy5SX09LYCBpbnN0ZWFkLlxuICAgKiBAZGVwcmVjYXRlZFxuICAgKi9cbiAgUl9PSzogY29uc3RhbnRzLlJfT0ssXG5cbiAgLyoqXG4gICAqIFVzZSBgY29uc3RhbnRzLldfT0tgIGluc3RlYWQuXG4gICAqIEBkZXByZWNhdGVkXG4gICAqL1xuICBXX09LOiBjb25zdGFudHMuV19PSyxcblxuICAvKipcbiAgICogVXNlIGBjb25zdGFudHMuWF9PS2AgaW5zdGVhZC5cbiAgICogQGRlcHJlY2F0ZWRcbiAgICovXG4gIFhfT0s6IGNvbnN0YW50cy5YX09LXG59O1xuXG5leHBvcnQgeyBmcyB9O1xuZXhwb3J0IGRlZmF1bHQgZnM7XG5cbi8qKlxuICogVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHdoaWNoIHdpbGwgYmUgY2FsbGVkIGR1cmluZyB0aGUgZGlyZWN0b3J5IHdhbGtpbmdcbiAqIEBjYWxsYmFjayBXYWxrRGlyQ2FsbGJhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBpdGVtUGF0aCBUaGUgcGF0aCBvZiB0aGUgZmlsZSBvciBmb2xkZXJcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gaXNEaXJlY3RvcnkgU2hvd3MgaWYgaXQgaXMgYSBkaXJlY3Rvcnkgb3IgYSBmaWxlXG4gKiBAcmV0dXJuIHtib29sZWFufSByZXR1cm4gdHJ1ZSBpZiB5b3Ugd2FudCB0byBzdG9wIHdhbGtpbmdcbiovXG5cbi8qKlxuICogQHR5cGVkZWYge2ltcG9ydCgnZ2xvYicpfSBnbG9iXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdtdicpfSBtdlxuICovXG4iXX0=
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
export type AppiumJimp = Omit<Jimp, 'getBuffer'> & {
|
|
3
|
+
getBuffer: Jimp['getBufferAsync'];
|
|
4
|
+
};
|
|
5
|
+
export type Region = {
|
|
6
|
+
left: number;
|
|
7
|
+
top: number;
|
|
8
|
+
width: number;
|
|
9
|
+
height: number;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Crop the image by given rectangle (use base64 string as input and output)
|
|
13
|
+
*
|
|
14
|
+
* @param {string} base64Image The string with base64 encoded image
|
|
15
|
+
* @param {Region} rect The selected region of image
|
|
16
|
+
* @return {Promise<string>} base64 encoded string of cropped image
|
|
17
|
+
*/
|
|
18
|
+
export function cropBase64Image(base64Image: string, rect: Region): Promise<string>;
|
|
19
|
+
/**
|
|
20
|
+
* Create a pngjs image from given base64 image
|
|
21
|
+
*
|
|
22
|
+
* @param {string} base64Image The string with base64 encoded image
|
|
23
|
+
* @return {Promise<PNG>} The image object
|
|
24
|
+
*/
|
|
25
|
+
export function base64ToImage(base64Image: string): Promise<PNG>;
|
|
26
|
+
/**
|
|
27
|
+
* Create a base64 string for given image object
|
|
28
|
+
*
|
|
29
|
+
* @param {PNG} image The image object
|
|
30
|
+
* @return {Promise<string>} The string with base64 encoded image
|
|
31
|
+
*/
|
|
32
|
+
export function imageToBase64(image: PNG): Promise<string>;
|
|
33
|
+
/**
|
|
34
|
+
* Crop the image by given rectangle
|
|
35
|
+
*
|
|
36
|
+
* @param {PNG} image The image to mutate by cropping
|
|
37
|
+
* @param {Region} rect The selected region of image
|
|
38
|
+
*/
|
|
39
|
+
export function cropImage(image: PNG, rect: Region): PNG;
|
|
40
|
+
/**
|
|
41
|
+
* Utility function to get a Jimp image object from buffer or base64 data. Jimp
|
|
42
|
+
* is a great library however it does IO in the constructor so it's not
|
|
43
|
+
* convenient for our async/await model.
|
|
44
|
+
*
|
|
45
|
+
* @param {Buffer|string} data - binary image buffer or base64-encoded image
|
|
46
|
+
* string
|
|
47
|
+
* @returns {Promise<AppiumJimp>} - the jimp image object
|
|
48
|
+
*/
|
|
49
|
+
export function getJimpImage(data: Buffer | string): Promise<AppiumJimp>;
|
|
50
|
+
export const MIME_JPEG: "image/jpeg";
|
|
51
|
+
export const MIME_PNG: "image/png";
|
|
52
|
+
export const MIME_BMP: "image/bmp";
|
|
53
|
+
import Jimp from "jimp";
|
|
54
|
+
import { PNG } from "pngjs";
|
|
55
|
+
import { Buffer } from "buffer";
|
|
56
|
+
//# sourceMappingURL=image-util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-util.d.ts","sourceRoot":"","sources":["../../lib/image-util.js"],"names":[],"mappings":";yBAkJa,KAAK,IAAI,EAAC,WAAW,CAAC,GAAG;IAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAA;CAAC;;UAK3D,MAAM;SACN,MAAM;WACN,MAAM;YACN,MAAM;;AA5GpB;;;;;;GAMG;AACH,6CAJW,MAAM,QACN,MAAM,GACL,QAAQ,MAAM,CAAC,CAM1B;AAED;;;;;GAKG;AACH,2CAHW,MAAM,GACL,QAAQ,GAAG,CAAC,CAavB;AAED;;;;;GAKG;AACH,qCAHW,GAAG,GACF,QAAQ,MAAM,CAAC,CAa1B;AAED;;;;;GAKG;AACH,iCAHW,GAAG,QACH,MAAM,OA6BhB;AAxHD;;;;;;;;GAQG;AACH,mCAJW,MAAM,GAAC,MAAM,GAEX,QAAQ,UAAU,CAAC,CA2B/B"}
|
package/build/lib/image-util.js
CHANGED
|
@@ -54,8 +54,7 @@ async function getJimpImage(data) {
|
|
|
54
54
|
return reject(new Error('Could not create jimp image from that data'));
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
imgObj.
|
|
58
|
-
imgObj.getBuffer = _bluebird.default.promisify(imgObj._getBuffer, {
|
|
57
|
+
imgObj.getBuffer = _bluebird.default.promisify(imgObj.getBuffer.bind(imgObj), {
|
|
59
58
|
context: imgObj
|
|
60
59
|
});
|
|
61
60
|
resolve(imgObj);
|
|
@@ -142,4 +141,4 @@ function getRectIntersection(rect, imageSize) {
|
|
|
142
141
|
height
|
|
143
142
|
};
|
|
144
143
|
}
|
|
145
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9pbWFnZS11dGlsLmpzIl0sIm5hbWVzIjpbIkJZVEVTX0lOX1BJWEVMX0JMT0NLIiwiU0NBTkxJTkVfRklMVEVSX01FVEhPRCIsIk1JTUVfSlBFRyIsIk1JTUVfUE5HIiwiTUlNRV9CTVAiLCJKaW1wIiwiZ2V0SmltcEltYWdlIiwiZGF0YSIsIkIiLCJyZXNvbHZlIiwicmVqZWN0IiwiXyIsImlzU3RyaW5nIiwiaXNCdWZmZXIiLCJFcnJvciIsIkJ1ZmZlciIsImZyb20iLCJlcnIiLCJpbWdPYmoiLCJfZ2V0QnVmZmVyIiwiZ2V0QnVmZmVyIiwiYmluZCIsInByb21pc2lmeSIsImNvbnRleHQiLCJjcm9wQmFzZTY0SW1hZ2UiLCJiYXNlNjRJbWFnZSIsInJlY3QiLCJpbWFnZSIsImJhc2U2NFRvSW1hZ2UiLCJjcm9wSW1hZ2UiLCJpbWFnZVRvQmFzZTY0IiwiaW1hZ2VCdWZmZXIiLCJQTkciLCJmaWx0ZXJUeXBlIiwicGFyc2UiLCJjaHVua3MiLCJwYWNrIiwib24iLCJjaHVuayIsInB1c2giLCJjb25jYXQiLCJ0b1N0cmluZyIsImltYWdlUmVjdCIsIndpZHRoIiwiaGVpZ2h0IiwiaW50ZXJSZWN0IiwiZ2V0UmVjdEludGVyc2VjdGlvbiIsIkpTT04iLCJzdHJpbmdpZnkiLCJmaXJzdFZlcnRpY2FsUGl4ZWwiLCJ0b3AiLCJsYXN0VmVydGljYWxQaXhlbCIsImZpcnN0SG9yaXpvbnRhbFBpeGVsIiwibGVmdCIsImxhc3RIb3Jpem9udGFsUGl4ZWwiLCJjcm9wcGVkQXJyYXkiLCJ5IiwieCIsImZpcnN0Qnl0ZUlkeEluUGl4ZWxCbG9jayIsImJ5dGVJZHgiLCJpbWFnZVNpemUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxvQkFBb0IsR0FBRyxDQUE3QjtBQUNBLE1BQU1DLHNCQUFzQixHQUFHLENBQS9CO0FBQ0EsTUFBTTtBQUFFQyxFQUFBQSxTQUFGO0FB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LEtBQVYsSUFBb0JVLElBQUksR0FBRzNCLElBQUksQ0FBQ2lCLEtBQWhDLEdBQXlDakIsSUFBSSxDQUFDaUIsS0FBOUMsR0FBdURpQixTQUFTLENBQUNqQixLQUFWLEdBQWtCVSxJQUF2RjtBQUNBLFFBQU1ULE1BQU0sR0FBR2dCLFNBQVMsQ0FBQ2hCLE1BQVYsSUFBcUJNLEdBQUcsR0FBR3hCLElBQUksQ0FBQ2tCLE1BQWhDLEdBQTBDbEIsSUFBSSxDQUFDa0IsTUFBL0MsR0FBeURnQixTQUFTLENBQUNoQixNQUFWLEdBQW1CTSxHQUEzRjtBQUNBLFNBQU87QUFBQ0csSUFBQUEsSUFBRDtBQUFPSCxJQUFBQSxHQUFQO0FBQVlQLElBQUFBLEtBQVo7QUFBbUJDLElBQUFBO0FBQW5CLEdBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgSmltcCBmcm9tICdqaW1wJztcbmltcG9ydCB7IEJ1ZmZlciB9IGZyb20gJ2J1ZmZlcic7XG5pbXBvcnQgeyBQTkcgfSBmcm9tICdwbmdqcyc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5cbmNvbnN0IEJZVEVTX0lOX1BJWEVMX0JMT0NLID0gNDtcbmNvbnN0IFNDQU5MSU5FX0ZJTFRFUl9NRVRIT0QgPSA0O1xuY29uc3QgeyBNSU1FX0pQRUcsIE1JTUVfUE5HLCBNSU1FX0JNUCB9ID0gSmltcDtcblxuLyoqXG4gKiBVdGlsaXR5IGZ1bmN0aW9uIHRvIGdldCBhIEppbXAgaW1hZ2Ugb2JqZWN0IGZyb20gYnVmZmVyIG9yIGJhc2U2NCBkYXRhLiBKaW1wXG4gKiBpcyBhIGdyZWF0IGxpYnJhcnkgaG93ZXZlciBpdCBkb2VzIElPIGluIHRoZSBjb25zdHJ1Y3RvciBzbyBpdCdzIG5vdFxuICogY29udmVuaWVudCBmb3Igb3VyIGFzeW5jL2F3YWl0IG1vZGVsLlxuICpcbiAqIEBwYXJhbSB7QnVmZmVyfHN0cmluZ30gZGF0YSAtIGJpbmFyeSBpbWFnZSBidWZmZXIgb3IgYmFzZTY0LWVuY29kZWQgaW1hZ2VcbiAqIHN0cmluZ1xuICogQHJldHVybnMge0ppbXB9IC0gdGhlIGppbXAgaW1hZ2Ugb2JqZWN0XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldEppbXBJbWFnZSAoZGF0YSkge1xuICByZXR1cm4gYXdhaXQgbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGlmICghXy5pc1N0cmluZyhkYXRhKSAmJiAhXy5pc0J1ZmZlcihkYXRhKSkge1xuICAgICAgcmV0dXJuIHJlamVjdChuZXcgRXJyb3IoJ011c3QgaW5pdGlhbGl6ZSBqaW1wIG9iamVjdCB3aXRoIHN0cmluZyBvciBidWZmZXInKSk7XG4gICAgfVxuICAgIC8vIGlmIGRhdGEgaXMgYSBzdHJpbmcsIGFzc3VtZSBpdCBpcyBhIGJhc2U2NC1lbmNvZGVkIGltYWdlXG4gICAgaWYgKF8uaXNTdHJpbmcoZGF0YSkpIHtcbiAgICAgIGRhdGEgPSBCdWZmZXIuZnJvbShkYXRhLCAnYmFzZTY0Jyk7XG4gICAgfVxuICAgIG5ldyBKaW1wKGRhdGEsIChlcnIsIGltZ09iaikgPT4ge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICB9XG4gICAgICBpZiAoIWltZ09iaikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KG5ldyBFcnJvcignQ291bGQgbm90IGNyZWF0ZSBqaW1wIGltYWdlIGZyb20gdGhhdCBkYXRhJykpO1xuICAgICAgfVxuICAgICAgaW1nT2JqLl9nZXRCdWZmZXIgPSBpbWdPYmouZ2V0QnVmZmVyLmJpbmQoaW1nT2JqKTtcbiAgICAgIGltZ09iai5nZXRCdWZmZXIgPSBCLnByb21pc2lmeShpbWdPYmouX2dldEJ1ZmZlciwge2NvbnRleHQ6IGltZ09ian0pO1xuICAgICAgcmVzb2x2ZShpbWdPYmopO1xuICAgIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBDcm9wIHRoZSBpbWFnZSBieSBnaXZlbiByZWN0YW5nbGUgKHVzZSBiYXNlNjQgc3RyaW5nIGFzIGlucHV0IGFuZCBvdXRwdXQpXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2U2NEltYWdlIFRoZSBzdHJpbmcgd2l0aCBiYXNlNjQgZW5jb2RlZCBpbWFnZVxuICogQHBhcmFtIHtSZWdpb259IHJlY3QgVGhlIHNlbGVjdGVkIHJlZ2lvbiBvZiBpbWFnZVxuICogQHJldHVybiB7c3RyaW5nfSBiYXNlNjQgZW5jb2RlZCBzdHJpbmcgb2YgY3JvcHBlZCBpbWFnZVxuICovXG5hc3luYyBmdW5jdGlvbiBjcm9wQmFzZTY0SW1hZ2UgKGJhc2U2NEltYWdlLCByZWN0KSB7XG4gIGNvbnN0IGltYWdlID0gYXdhaXQgYmFzZTY0VG9JbWFnZShiYXNlNjRJbWFnZSk7XG4gIGNyb3BJbWFnZShpbWFnZSwgcmVjdCk7XG4gIHJldHVybiBhd2FpdCBpbWFnZVRvQmFzZTY0KGltYWdlKTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBwbmdqcyBpbWFnZSBmcm9tIGdpdmVuIGJhc2U2NCBpbWFnZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlNjRJbWFnZSBUaGUgc3RyaW5nIHdpdGggYmFzZTY0IGVuY29kZWQgaW1hZ2VcbiAqIEByZXR1cm4ge1BOR30gVGhlIGltYWdlIG9iamVjdFxuICovXG5hc3luYyBmdW5jdGlvbiBiYXNlNjRUb0ltYWdlIChiYXNlNjRJbWFnZSkge1xuICBjb25zdCBpbWFnZUJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGJhc2U2NEltYWdlLCAnYmFzZTY0Jyk7XG4gIHJldHVybiBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgaW1hZ2UgPSBuZXcgUE5HKHtmaWx0ZXJUeXBlOiBTQ0FOTElORV9GSUxURVJfTUVUSE9EfSk7XG4gICAgaW1hZ2UucGFyc2UoaW1hZ2VCdWZmZXIsIChlcnIsIGltYWdlKSA9PiB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJvbWlzZS9wcmVmZXItYXdhaXQtdG8tY2FsbGJhY2tzXG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgIH1cbiAgICAgIHJlc29sdmUoaW1hZ2UpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBiYXNlNjQgc3RyaW5nIGZvciBnaXZlbiBpbWFnZSBvYmplY3RcbiAqXG4gKiBAcGFyYW0ge1BOR30gaW1hZ2UgVGhlIGltYWdlIG9iamVjdFxuICogQHJldHVybiB7c3RyaW5nfSBUaGUgc3RyaW5nIHdpdGggYmFzZTY0IGVuY29kZWQgaW1hZ2VcbiAqL1xuYXN5bmMgZnVuY3Rpb24gaW1hZ2VUb0Jhc2U2NCAoaW1hZ2UpIHtcbiAgcmV0dXJuIGF3YWl0IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBjb25zdCBjaHVua3MgPSBbXTtcbiAgICBpbWFnZS5wYWNrKClcbiAgICAub24oJ2RhdGEnLCAoY2h1bmspID0+IGNodW5rcy5wdXNoKGNodW5rKSkub24oJ2VuZCcsICgpID0+IHtcbiAgICAgIHJlc29sdmUoQnVmZmVyLmNvbmNhdChjaHVua3MpLnRvU3RyaW5nKCdiYXNlNjQnKSk7XG4gICAgfSlcbiAgICAub24oJ2Vycm9yJywgKGVycikgPT4geyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHByb21pc2UvcHJlZmVyLWF3YWl0LXRvLWNhbGxiYWNrc1xuICAgICAgcmVqZWN0KGVycik7XG4gICAgfSk7XG4gIH0pO1xufVxuXG4vKipcbiAqIENyb3AgdGhlIGltYWdlIGJ5IGdpdmVuIHJlY3RhbmdsZVxuICpcbiAqIEBwYXJhbSB7UE5HfSBpbWFnZSBUaGUgaW1hZ2UgdG8gbXV0YXRlIGJ5IGNyb3BwaW5nXG4gKiBAcGFyYW0ge1JlZ2lvbn0gcmVjdCBUaGUgc2VsZWN0ZWQgcmVnaW9uIG9mIGltYWdlXG4gKi9cbmZ1bmN0aW9uIGNyb3BJbWFnZSAoaW1hZ2UsIHJlY3QpIHtcbiAgY29uc3QgaW1hZ2VSZWN0ID0ge3dpZHRoOiBpbWFnZS53aWR0aCwgaGVpZ2h0OiBpbWFnZS5oZWlnaHR9O1xuICBjb25zdCBpbnRlclJlY3QgPSBnZXRSZWN0SW50ZXJzZWN0aW9uKHJlY3QsIGltYWdlUmVjdCk7XG4gIGlmIChpbnRlclJlY3Qud2lkdGggPCByZWN0LndpZHRoIHx8IGludGVyUmVjdC5oZWlnaHQgPCByZWN0LmhlaWdodCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGNyb3AgJHtKU09OLnN0cmluZ2lmeShyZWN0KX0gZnJvbSAke0pTT04uc3RyaW5naWZ5KGltYWdlUmVjdCl9IGJlY2F1c2UgdGhlIGludGVyc2VjdGlvbiBiZXR3ZWVuIHRoZW0gd2FzIG5vdCB0aGUgc2l6ZSBvZiB0aGUgcmVjdGApO1xuICB9XG5cbiAgY29uc3QgZmlyc3RWZXJ0aWNhbFBpeGVsID0gaW50ZXJSZWN0LnRvcDtcbiAgY29uc3QgbGFzdFZlcnRpY2FsUGl4ZWwgPSBpbnRlclJlY3QudG9wICsgaW50ZXJSZWN0LmhlaWdodDtcblxuICBjb25zdCBmaXJzdEhvcml6b250YWxQaXhlbCA9IGludGVyUmVjdC5sZWZ0O1xuICBjb25zdCBsYXN0SG9yaXpvbnRhbFBpeGVsID0gaW50ZXJSZWN0LmxlZnQgKyBpbnRlclJlY3Qud2lkdGg7XG5cbiAgY29uc3QgY3JvcHBlZEFycmF5ID0gW107XG4gIGZvciAobGV0IHkgPSBmaXJzdFZlcnRpY2FsUGl4ZWw7IHkgPCBsYXN0VmVydGljYWxQaXhlbDsgeSsrKSB7XG4gICAgZm9yIChsZXQgeCA9IGZpcnN0SG9yaXpvbnRhbFBpeGVsOyB4IDwgbGFzdEhvcml6b250YWxQaXhlbDsgeCsrKSB7XG4gICAgICBjb25zdCBmaXJzdEJ5dGVJZHhJblBpeGVsQmxvY2sgPSAoaW1hZ2VSZWN0LndpZHRoICogeSArIHgpIDw8IDI7XG4gICAgICBmb3IgKGxldCBieXRlSWR4ID0gMDsgYnl0ZUlkeCA8IEJZVEVTX0lOX1BJWEVMX0JMT0NLOyBieXRlSWR4KyspIHtcbiAgICAgICAgY3JvcHBlZEFycmF5LnB1c2goaW1hZ2UuZGF0YVtmaXJzdEJ5dGVJZHhJblBpeGVsQmxvY2sgKyBieXRlSWR4XSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaW1hZ2UuZGF0YSA9IEJ1ZmZlci5mcm9tKGNyb3BwZWRBcnJheSk7XG4gIGltYWdlLndpZHRoID0gaW50ZXJSZWN0LndpZHRoO1xuICBpbWFnZS5oZWlnaHQgPSBpbnRlclJlY3QuaGVpZ2h0O1xuICByZXR1cm4gaW1hZ2U7XG59XG5cbmZ1bmN0aW9uIGdldFJlY3RJbnRlcnNlY3Rpb24gKHJlY3QsIGltYWdlU2l6ZSkge1xuICBjb25zdCBsZWZ0ID0gcmVjdC5sZWZ0ID49IGltYWdlU2l6ZS53aWR0aCA/IGltYWdlU2l6ZS53aWR0aCA6IHJlY3QubGVmdDtcbiAgY29uc3QgdG9wID0gcmVjdC50b3AgPj0gaW1hZ2VTaXplLmhlaWdodCA/IGltYWdlU2l6ZS5oZWlnaHQgOiByZWN0LnRvcDtcbiAgY29uc3Qgd2lkdGggPSBpbWFnZVNpemUud2lkdGggPj0gKGxlZnQgKyByZWN0LndpZHRoKSA/IHJlY3Qud2lkdGggOiAoaW1hZ2VTaXplLndpZHRoIC0gbGVmdCk7XG4gIGNvbnN0IGhlaWdodCA9IGltYWdlU2l6ZS5oZWlnaHQgPj0gKHRvcCArIHJlY3QuaGVpZ2h0KSA/IHJlY3QuaGVpZ2h0IDogKGltYWdlU2l6ZS5oZWlnaHQgLSB0b3ApO1xuICByZXR1cm4ge2xlZnQsIHRvcCwgd2lkdGgsIGhlaWdodH07XG59XG5cbmV4cG9ydCB7XG4gIGNyb3BCYXNlNjRJbWFnZSwgYmFzZTY0VG9JbWFnZSwgaW1hZ2VUb0Jhc2U2NCwgY3JvcEltYWdlLFxuICBnZXRKaW1wSW1hZ2UsIE1JTUVfSlBFRywgTUlNRV9QTkcsIE1JTUVfQk1QXG59O1xuIl19
|
|
144
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9pbWFnZS11dGlsLmpzIl0sIm5hbWVzIjpbIkJZVEVTX0lOX1BJWEVMX0JMT0NLIiwiU0NBTkxJTkVfRklMVEVSX01FVEhPRCIsIk1JTUVfSlBFRyIsIk1JTUVfUE5HIiwiTUlNRV9CTVAiLCJKaW1wIiwiZ2V0SmltcEltYWdlIiwiZGF0YSIsIkIiLCJyZXNvbHZlIiwicmVqZWN0IiwiXyIsImlzU3RyaW5nIiwiaXNCdWZmZXIiLCJFcnJvciIsIkJ1ZmZlciIsImZyb20iLCJlcnIiLCJpbWdPYmoiLCJnZXRCdWZmZXIiLCJwcm9taXNpZnkiLCJiaW5kIiwiY29udGV4dCIsImNyb3BCYXNlNjRJbWFnZSIsImJhc2U2NEltYWdlIiwicmVjdCIsImltYWdlIiwiYmFzZTY0VG9JbWFnZSIsImNyb3BJbWFnZSIsImltYWdlVG9CYXNlNjQiLCJpbWFnZUJ1ZmZlciIsIlBORyIsImZpbHRlclR5cGUiLCJwYXJzZSIsImNodW5rcyIsInBhY2siLCJvbiIsImNodW5rIiwicHVzaCIsImNvbmNhdCIsInRvU3RyaW5nIiwiaW1hZ2VSZWN0Iiwid2lkdGgiLCJoZWlnaHQiLCJpbnRlclJlY3QiLCJnZXRSZWN0SW50ZXJzZWN0aW9uIiwiSlNPTiIsInN0cmluZ2lmeSIsImZpcnN0VmVydGljYWxQaXhlbCIsInRvcCIsImxhc3RWZXJ0aWNhbFBpeGVsIiwiZmlyc3RIb3Jpem9udGFsUGl4ZWwiLCJsZWZ0IiwibGFzdEhvcml6b250YWxQaXhlbCIsImNyb3BwZWRBcnJheSIsInkiLCJ4IiwiZmlyc3RCeXRlSWR4SW5QaXhlbEJsb2NrIiwiYnl0ZUlkeCIsImltYWdlU2l6ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLG9CQUFvQixHQUFHLENBQTdCO0FBQ0EsTUFBTUMsc0JBQXNCLEdBQUcsQ0FBL0I7QUFDQSxNQUFNO0FBQUVDLEVBQUFBLFNBQUY7QUFBYUMsRUFBQUEsUUFB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LEdBQXVEaUIsU0FBUyxDQUFDakIsS0FBVixHQUFrQlUsSUFBdkY7QUFDQSxRQUFNVCxNQUFNLEdBQUdnQixTQUFTLENBQUNoQixNQUFWLElBQXFCTSxHQUFHLEdBQUd4QixJQUFJLENBQUNrQixNQUFoQyxHQUEwQ2xCLElBQUksQ0FBQ2tCLE1BQS9DLEdBQXlEZ0IsU0FBUyxDQUFDaEIsTUFBVixHQUFtQk0sR0FBM0Y7QUFDQSxTQUFPO0FBQUNHLElBQUFBLElBQUQ7QUFBT0gsSUFBQUEsR0FBUDtBQUFZUCxJQUFBQSxLQUFaO0FBQW1CQyxJQUFBQTtBQUFuQixHQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IEppbXAgZnJvbSAnamltcCc7XG5pbXBvcnQgeyBCdWZmZXIgfSBmcm9tICdidWZmZXInO1xuaW1wb3J0IHsgUE5HIH0gZnJvbSAncG5nanMnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuXG5jb25zdCBCWVRFU19JTl9QSVhFTF9CTE9DSyA9IDQ7XG5jb25zdCBTQ0FOTElORV9GSUxURVJfTUVUSE9EID0gNDtcbmNvbnN0IHsgTUlNRV9KUEVHLCBNSU1FX1BORywgTUlNRV9CTVAgfSA9IEppbXA7XG5cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbiB0byBnZXQgYSBKaW1wIGltYWdlIG9iamVjdCBmcm9tIGJ1ZmZlciBvciBiYXNlNjQgZGF0YS4gSmltcFxuICogaXMgYSBncmVhdCBsaWJyYXJ5IGhvd2V2ZXIgaXQgZG9lcyBJTyBpbiB0aGUgY29uc3RydWN0b3Igc28gaXQncyBub3RcbiAqIGNvbnZlbmllbnQgZm9yIG91ciBhc3luYy9hd2FpdCBtb2RlbC5cbiAqXG4gKiBAcGFyYW0ge0J1ZmZlcnxzdHJpbmd9IGRhdGEgLSBiaW5hcnkgaW1hZ2UgYnVmZmVyIG9yIGJhc2U2NC1lbmNvZGVkIGltYWdlXG4gKiBzdHJpbmdcbiAqIEByZXR1cm5zIHtQcm9taXNlPEFwcGl1bUppbXA+fSAtIHRoZSBqaW1wIGltYWdlIG9iamVjdFxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRKaW1wSW1hZ2UgKGRhdGEpIHtcbiAgcmV0dXJuIGF3YWl0IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBpZiAoIV8uaXNTdHJpbmcoZGF0YSkgJiYgIV8uaXNCdWZmZXIoZGF0YSkpIHtcbiAgICAgIHJldHVybiByZWplY3QobmV3IEVycm9yKCdNdXN0IGluaXRpYWxpemUgamltcCBvYmplY3Qgd2l0aCBzdHJpbmcgb3IgYnVmZmVyJykpO1xuICAgIH1cbiAgICAvLyBpZiBkYXRhIGlzIGEgc3RyaW5nLCBhc3N1bWUgaXQgaXMgYSBiYXNlNjQtZW5jb2RlZCBpbWFnZVxuICAgIGlmIChfLmlzU3RyaW5nKGRhdGEpKSB7XG4gICAgICBkYXRhID0gQnVmZmVyLmZyb20oZGF0YSwgJ2Jhc2U2NCcpO1xuICAgIH1cbiAgICBuZXcgSmltcChkYXRhLFxuICAgICAgLyoqXG4gICAgICAgKiBAcGFyYW0ge0Vycm9yP30gZXJyXG4gICAgICAgKiBAcGFyYW0ge0FwcGl1bUppbXB9IGltZ09ialxuICAgICAgICovXG4gICAgKGVyciwgaW1nT2JqKSA9PiB7XG4gICAgICBpZiAoZXJyKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgIH1cbiAgICAgIGlmICghaW1nT2JqKSB7XG4gICAgICAgIHJldHVybiByZWplY3QobmV3IEVycm9yKCdDb3VsZCBub3QgY3JlYXRlIGppbXAgaW1hZ2UgZnJvbSB0aGF0IGRhdGEnKSk7XG4gICAgICB9XG4gICAgICBpbWdPYmouZ2V0QnVmZmVyID0gQi5wcm9taXNpZnkoaW1nT2JqLmdldEJ1ZmZlci5iaW5kKGltZ09iaiksIHtjb250ZXh0OiBpbWdPYmp9KTtcbiAgICAgIHJlc29sdmUoaW1nT2JqKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogQ3JvcCB0aGUgaW1hZ2UgYnkgZ2l2ZW4gcmVjdGFuZ2xlICh1c2UgYmFzZTY0IHN0cmluZyBhcyBpbnB1dCBhbmQgb3V0cHV0KVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBiYXNlNjRJbWFnZSBUaGUgc3RyaW5nIHdpdGggYmFzZTY0IGVuY29kZWQgaW1hZ2VcbiAqIEBwYXJhbSB7UmVnaW9ufSByZWN0IFRoZSBzZWxlY3RlZCByZWdpb24gb2YgaW1hZ2VcbiAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gYmFzZTY0IGVuY29kZWQgc3RyaW5nIG9mIGNyb3BwZWQgaW1hZ2VcbiAqL1xuYXN5bmMgZnVuY3Rpb24gY3JvcEJhc2U2NEltYWdlIChiYXNlNjRJbWFnZSwgcmVjdCkge1xuICBjb25zdCBpbWFnZSA9IGF3YWl0IGJhc2U2NFRvSW1hZ2UoYmFzZTY0SW1hZ2UpO1xuICBjcm9wSW1hZ2UoaW1hZ2UsIHJlY3QpO1xuICByZXR1cm4gYXdhaXQgaW1hZ2VUb0Jhc2U2NChpbWFnZSk7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgcG5nanMgaW1hZ2UgZnJvbSBnaXZlbiBiYXNlNjQgaW1hZ2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYmFzZTY0SW1hZ2UgVGhlIHN0cmluZyB3aXRoIGJhc2U2NCBlbmNvZGVkIGltYWdlXG4gKiBAcmV0dXJuIHtQcm9taXNlPFBORz59IFRoZSBpbWFnZSBvYmplY3RcbiAqL1xuYXN5bmMgZnVuY3Rpb24gYmFzZTY0VG9JbWFnZSAoYmFzZTY0SW1hZ2UpIHtcbiAgY29uc3QgaW1hZ2VCdWZmZXIgPSBCdWZmZXIuZnJvbShiYXNlNjRJbWFnZSwgJ2Jhc2U2NCcpO1xuICByZXR1cm4gYXdhaXQgbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IGltYWdlID0gbmV3IFBORyh7ZmlsdGVyVHlwZTogU0NBTkxJTkVfRklMVEVSX01FVEhPRH0pO1xuICAgIGltYWdlLnBhcnNlKGltYWdlQnVmZmVyLCAoZXJyLCBpbWFnZSkgPT4geyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHByb21pc2UvcHJlZmVyLWF3YWl0LXRvLWNhbGxiYWNrc1xuICAgICAgaWYgKGVycikge1xuICAgICAgICByZXR1cm4gcmVqZWN0KGVycik7XG4gICAgICB9XG4gICAgICByZXNvbHZlKGltYWdlKTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgYmFzZTY0IHN0cmluZyBmb3IgZ2l2ZW4gaW1hZ2Ugb2JqZWN0XG4gKlxuICogQHBhcmFtIHtQTkd9IGltYWdlIFRoZSBpbWFnZSBvYmplY3RcbiAqIEByZXR1cm4ge1Byb21pc2U8c3RyaW5nPn0gVGhlIHN0cmluZyB3aXRoIGJhc2U2NCBlbmNvZGVkIGltYWdlXG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGltYWdlVG9CYXNlNjQgKGltYWdlKSB7XG4gIHJldHVybiBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgY2h1bmtzID0gW107XG4gICAgaW1hZ2UucGFjaygpXG4gICAgLm9uKCdkYXRhJywgKGNodW5rKSA9PiBjaHVua3MucHVzaChjaHVuaykpLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICByZXNvbHZlKEJ1ZmZlci5jb25jYXQoY2h1bmtzKS50b1N0cmluZygnYmFzZTY0JykpO1xuICAgIH0pXG4gICAgLm9uKCdlcnJvcicsIChlcnIpID0+IHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBwcm9taXNlL3ByZWZlci1hd2FpdC10by1jYWxsYmFja3NcbiAgICAgIHJlamVjdChlcnIpO1xuICAgIH0pO1xuICB9KTtcbn1cblxuLyoqXG4gKiBDcm9wIHRoZSBpbWFnZSBieSBnaXZlbiByZWN0YW5nbGVcbiAqXG4gKiBAcGFyYW0ge1BOR30gaW1hZ2UgVGhlIGltYWdlIHRvIG11dGF0ZSBieSBjcm9wcGluZ1xuICogQHBhcmFtIHtSZWdpb259IHJlY3QgVGhlIHNlbGVjdGVkIHJlZ2lvbiBvZiBpbWFnZVxuICovXG5mdW5jdGlvbiBjcm9wSW1hZ2UgKGltYWdlLCByZWN0KSB7XG4gIGNvbnN0IGltYWdlUmVjdCA9IHt3aWR0aDogaW1hZ2Uud2lkdGgsIGhlaWdodDogaW1hZ2UuaGVpZ2h0fTtcbiAgY29uc3QgaW50ZXJSZWN0ID0gZ2V0UmVjdEludGVyc2VjdGlvbihyZWN0LCBpbWFnZVJlY3QpO1xuICBpZiAoaW50ZXJSZWN0LndpZHRoIDwgcmVjdC53aWR0aCB8fCBpbnRlclJlY3QuaGVpZ2h0IDwgcmVjdC5oZWlnaHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBjcm9wICR7SlNPTi5zdHJpbmdpZnkocmVjdCl9IGZyb20gJHtKU09OLnN0cmluZ2lmeShpbWFnZVJlY3QpfSBiZWNhdXNlIHRoZSBpbnRlcnNlY3Rpb24gYmV0d2VlbiB0aGVtIHdhcyBub3QgdGhlIHNpemUgb2YgdGhlIHJlY3RgKTtcbiAgfVxuXG4gIGNvbnN0IGZpcnN0VmVydGljYWxQaXhlbCA9IGludGVyUmVjdC50b3A7XG4gIGNvbnN0IGxhc3RWZXJ0aWNhbFBpeGVsID0gaW50ZXJSZWN0LnRvcCArIGludGVyUmVjdC5oZWlnaHQ7XG5cbiAgY29uc3QgZmlyc3RIb3Jpem9udGFsUGl4ZWwgPSBpbnRlclJlY3QubGVmdDtcbiAgY29uc3QgbGFzdEhvcml6b250YWxQaXhlbCA9IGludGVyUmVjdC5sZWZ0ICsgaW50ZXJSZWN0LndpZHRoO1xuXG4gIGNvbnN0IGNyb3BwZWRBcnJheSA9IFtdO1xuICBmb3IgKGxldCB5ID0gZmlyc3RWZXJ0aWNhbFBpeGVsOyB5IDwgbGFzdFZlcnRpY2FsUGl4ZWw7IHkrKykge1xuICAgIGZvciAobGV0IHggPSBmaXJzdEhvcml6b250YWxQaXhlbDsgeCA8IGxhc3RIb3Jpem9udGFsUGl4ZWw7IHgrKykge1xuICAgICAgY29uc3QgZmlyc3RCeXRlSWR4SW5QaXhlbEJsb2NrID0gKGltYWdlUmVjdC53aWR0aCAqIHkgKyB4KSA8PCAyO1xuICAgICAgZm9yIChsZXQgYnl0ZUlkeCA9IDA7IGJ5dGVJZHggPCBCWVRFU19JTl9QSVhFTF9CTE9DSzsgYnl0ZUlkeCsrKSB7XG4gICAgICAgIGNyb3BwZWRBcnJheS5wdXNoKGltYWdlLmRhdGFbZmlyc3RCeXRlSWR4SW5QaXhlbEJsb2NrICsgYnl0ZUlkeF0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGltYWdlLmRhdGEgPSBCdWZmZXIuZnJvbShjcm9wcGVkQXJyYXkpO1xuICBpbWFnZS53aWR0aCA9IGludGVyUmVjdC53aWR0aDtcbiAgaW1hZ2UuaGVpZ2h0ID0gaW50ZXJSZWN0LmhlaWdodDtcbiAgcmV0dXJuIGltYWdlO1xufVxuXG5mdW5jdGlvbiBnZXRSZWN0SW50ZXJzZWN0aW9uIChyZWN0LCBpbWFnZVNpemUpIHtcbiAgY29uc3QgbGVmdCA9IHJlY3QubGVmdCA+PSBpbWFnZVNpemUud2lkdGggPyBpbWFnZVNpemUud2lkdGggOiByZWN0LmxlZnQ7XG4gIGNvbnN0IHRvcCA9IHJlY3QudG9wID49IGltYWdlU2l6ZS5oZWlnaHQgPyBpbWFnZVNpemUuaGVpZ2h0IDogcmVjdC50b3A7XG4gIGNvbnN0IHdpZHRoID0gaW1hZ2VTaXplLndpZHRoID49IChsZWZ0ICsgcmVjdC53aWR0aCkgPyByZWN0LndpZHRoIDogKGltYWdlU2l6ZS53aWR0aCAtIGxlZnQpO1xuICBjb25zdCBoZWlnaHQgPSBpbWFnZVNpemUuaGVpZ2h0ID49ICh0b3AgKyByZWN0LmhlaWdodCkgPyByZWN0LmhlaWdodCA6IChpbWFnZVNpemUuaGVpZ2h0IC0gdG9wKTtcbiAgcmV0dXJuIHtsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHR9O1xufVxuXG5leHBvcnQge1xuICBjcm9wQmFzZTY0SW1hZ2UsIGJhc2U2NFRvSW1hZ2UsIGltYWdlVG9CYXNlNjQsIGNyb3BJbWFnZSxcbiAgZ2V0SmltcEltYWdlLCBNSU1FX0pQRUcsIE1JTUVfUE5HLCBNSU1FX0JNUFxufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T21pdDxKaW1wLCdnZXRCdWZmZXInPiAmIHtnZXRCdWZmZXI6IEppbXBbJ2dldEJ1ZmZlckFzeW5jJ119fSBBcHBpdW1KaW1wXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiBSZWdpb25cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBsZWZ0XG4gKiBAcHJvcGVydHkge251bWJlcn0gdG9wXG4gKiBAcHJvcGVydHkge251bWJlcn0gd2lkdGhcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBoZWlnaHRcbiAqL1xuIl19
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export { npm } from "./npm";
|
|
2
|
+
declare namespace _default {
|
|
3
|
+
export { tempDir };
|
|
4
|
+
export { system };
|
|
5
|
+
export { util };
|
|
6
|
+
export { fs };
|
|
7
|
+
export { cancellableDelay };
|
|
8
|
+
export { plist };
|
|
9
|
+
export { mkdirp };
|
|
10
|
+
export { logger };
|
|
11
|
+
export { process };
|
|
12
|
+
export { zip };
|
|
13
|
+
export { imageUtil };
|
|
14
|
+
export { net };
|
|
15
|
+
export { mjpeg };
|
|
16
|
+
export { node };
|
|
17
|
+
export { timing };
|
|
18
|
+
export { env };
|
|
19
|
+
}
|
|
20
|
+
export default _default;
|
|
21
|
+
import * as tempDir from "./tempdir";
|
|
22
|
+
import * as system from "./system";
|
|
23
|
+
import * as util from "./util";
|
|
24
|
+
import { fs } from "./fs";
|
|
25
|
+
export const cancellableDelay: typeof util.cancellableDelay;
|
|
26
|
+
import * as plist from "./plist";
|
|
27
|
+
import { mkdirp } from "./mkdirp";
|
|
28
|
+
import * as logger from "./logging";
|
|
29
|
+
import * as process from "./process";
|
|
30
|
+
import * as zip from "./zip";
|
|
31
|
+
import * as imageUtil from "./image-util";
|
|
32
|
+
import * as net from "./net";
|
|
33
|
+
import * as mjpeg from "./mjpeg";
|
|
34
|
+
import * as node from "./node";
|
|
35
|
+
import * as timing from "./timing";
|
|
36
|
+
import * as env from "./env";
|
|
37
|
+
export { tempDir, system, util, fs, plist, mkdirp, logger, process, zip, imageUtil, net, mjpeg, node, timing, env };
|
|
38
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/index.js"],"names":[],"mappings":""}
|