@appium/support 3.1.11 → 4.0.1

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/README.md CHANGED
@@ -1,62 +1,112 @@
1
1
  # appium-support
2
2
 
3
- Utility functions used to support libs used across appium packages.
4
-
5
- `npm install appium-support`
6
-
7
- Appium, as of version 1.5 is all based on promises, so this module provides promise wrappers for some common operations.
8
-
9
- Most notably, we wrap `fs` for file system commands. Note the addition of `hasAccess`.
10
- Also note that `fs.mkdir` doesn't throw an error if the directory already exists, it will just resolve.
11
-
12
- ### Methods
13
-
14
- - system.isWindows
15
- - system.isMac
16
- - system.isLinux
17
- - system.isOSWin64
18
- - system.arch
19
- - system.macOsxVersion
20
-
21
- - util.hasContent - returns true if input string has content
22
- - util.hasValue - returns true if input value is not undefined and no null
23
- - util.escapeSpace
24
- - util.escapeSpecialChars
25
- - util.localIp
26
- - util.cancellableDelay
27
- - util.multiResolve - multiple path.resolve
28
- - util.unwrapElement - parse an element ID from an element object: e.g.: `{ELEMENT: 123, "element-6066-11e4-a52e-4f735466cecf": 123}` returns `123`
29
- - util.wrapElement - convert an element ID to an element object of the form: e.g.: `123` returns `{ELEMENT: 123, "element-6066-11e4-a52e-4f735466cecf": 123}`
30
-
31
- - *fs.hasAccess* - use this over `fs.access`
32
- - *fs.exists* - calls `fs.hasAccess`
33
- - *fs.rimraf*
34
- - *fs.mkdir* - doesn't throw an error if directory already exists
35
- - *fs.copyFile*
36
- - fs.open
37
- - fs.close
38
- - fs.access
39
- - fs.readFile
40
- - fs.writeFile
41
- - fs.write
42
- - fs.readlink
43
- - fs.chmod
44
- - fs.unlink
45
- - fs.readdir
46
- - fs.stat
47
- - fs.rename
48
- - *fs.md5*
49
-
50
- - plist.parsePlistFile
51
- - plist.updatePlistFile
52
-
53
- - mkdirp
54
-
55
- - logger
56
-
57
- - zip.extractAllTo - Extracts contents of a zipfile to a directory
58
- - zip.readEntries - Reads entries (files and directories) of a zipfile
59
- - zip.toInMemoryZip - Converts a directory into a base64 zipfile
3
+ Utility functions used to support Appium drivers and plugins.
4
+
5
+ # Usage in drivers and plugins
6
+
7
+ It is recommended to have Appium as a peer dependency in driver and plugin packages.
8
+ Add the following line to `peerDependencies` section of your module's `package.json`:
9
+
10
+ ```js
11
+ "peerDependencies": {
12
+ "appium": "^<minimum_server_version>"
13
+ }
14
+ ```
15
+
16
+ Afterwards import it in your code similarly to the below example:
17
+
18
+ ```js
19
+ import {timing, util} from 'appium/support';
20
+ ```
21
+
22
+ # Usage in helper modules
23
+
24
+ If you want to use this module in a helper library, which is not a driver or a plugin,
25
+ then add the following line to `dependencies` section of your module's `package.json`:
26
+
27
+ ```js
28
+ "dependencies": {
29
+ "@appium/support": "<module_version>"
30
+ }
31
+ ```
32
+
33
+ Afterwards import it in your code similarly to the below example:
34
+
35
+ ```js
36
+ import {timing, util} from '@appium/support';
37
+ ```
38
+
39
+ ### Categories
40
+
41
+ All utility functions are split into a bunch of different categories. Each category has its own file under the `lib` folder. All utility functions in these files are documented.
42
+
43
+ #### fs
44
+
45
+ Most of the functions there are just thin wrappers over utility functions available in [Promises API](https://nodejs.org/api/fs.html#promises-api).
46
+
47
+ #### env
48
+
49
+ Several helpers needed by the server to cope with internal dependencies and manifests.
50
+
51
+ #### console
52
+
53
+ Wrappers for the command line interface abstraction used by the Appium server.
54
+
55
+ #### image-util
56
+
57
+ Utilities to work with images. Use [sharp](https://github.com/lovell/sharp) under the hood.
58
+
59
+ #### log-internal
60
+
61
+ Utilities needed for internal Appium log config assistance.
62
+
63
+ #### logging
64
+
65
+ See [below](#logger)
66
+
67
+ #### mjpeg
68
+
69
+ Helpers needed to implement [MJPEG streaming](https://en.wikipedia.org/wiki/Motion_JPEG#Video_streaming).
70
+
71
+ #### net
72
+
73
+ Helpers needed for network interactions, for example, upload and download of files.
74
+
75
+ #### node
76
+
77
+ Set of Node.js-specific utility functions needed, for example, to ensure objects immutability or to calculate their sizes.
78
+
79
+ #### npm
80
+
81
+ Set of [npm](https://en.wikipedia.org/wiki/Npm_(software))-related helpers.
82
+
83
+ #### plist
84
+
85
+ Set of utilities used to read and write data from [plist](https://en.wikipedia.org/wiki/Property_List) files in javascript.
86
+
87
+ #### process
88
+
89
+ Helpers for interactions with system processes. These APIs don't support Windows.
90
+
91
+ #### system
92
+
93
+ Set of helper functions needed to determine properties of the current operating system.
94
+
95
+ #### tempdir
96
+
97
+ Set of helpers that allow interactions with temporary folders.
98
+
99
+ #### timing
100
+
101
+ Helpers that allow to measure execution time.
102
+
103
+ #### util
104
+
105
+ Miscellaneous utilities.
106
+
107
+ #### zip
108
+
109
+ Helpers that allow to work with archives in .ZIP format.
60
110
 
61
111
 
62
112
  ## logger
@@ -85,10 +135,9 @@ Will produce
85
135
  warn mymodule a warning
86
136
  ```
87
137
 
88
-
89
138
  ### Environment variables
90
139
 
91
- There are two environment variable flags that affect the way `appium-base-driver` `logger` works.
140
+ There are two environment variable flags that affect the way `logger` works.
92
141
 
93
142
  `_TESTING`
94
143
 
@@ -108,43 +157,43 @@ There are two environment variable flags that affect the way `appium-base-driver
108
157
  `log[level](message)`
109
158
 
110
159
  - logs to `level`
111
- ```js
112
- import { logger } from 'appium-support';
113
- let log = logger.getLogger('mymodule');
160
+ ```js
161
+ import { logger } from 'appium-support';
162
+ let log = logger.getLogger('mymodule');
114
163
 
115
- log.info('hi!');
116
- // => info mymodule hi!
117
- ```
164
+ log.info('hi!');
165
+ // => info mymodule hi!
166
+ ```
118
167
 
119
168
  `log.unwrap()`
120
169
 
121
170
  - retrieves the underlying [npmlog](https://github.com/npm/npmlog) object, in order to manage how logging is done at a low level (e.g., changing output streams, retrieving an array of messages, adding log levels, etc.).
122
171
 
123
- ```js
124
- import { getLogger } from 'appium-base-driver';
125
- let log = getLogger('mymodule');
172
+ ```js
173
+ import { getLogger } from 'appium-base-driver';
174
+ let log = getLogger('mymodule');
126
175
 
127
- log.info('hi!');
176
+ log.info('hi!');
128
177
 
129
- let npmlogger = log.unwrap();
178
+ let npmlogger = log.unwrap();
130
179
 
131
- // any `npmlog` methods
132
- let logs = npmlogger.record;
133
- // logs === [ { id: 0, level: 'info', prefix: 'mymodule', message: 'hi!', messageRaw: [ 'hi!' ] }]
134
- ```
180
+ // any `npmlog` methods
181
+ let logs = npmlogger.record;
182
+ // logs === [ { id: 0, level: 'info', prefix: 'mymodule', message: 'hi!', messageRaw: [ 'hi!' ] }]
183
+ ```
135
184
 
136
185
  `log.errorAndThrow(error)`
137
186
 
138
187
  - logs the error passed in, at `error` level, and then throws the error. If the error passed in is not an instance of [Error](https://nodejs.org/api/errors.html#errors_class_error) (either directly, or a subclass of `Error`) it will be wrapped in a generic `Error` object.
139
188
 
140
- ```js
141
- import { getLogger } from 'appium-base-driver';
142
- let log = getLogger('mymodule');
189
+ ```js
190
+ import { getLogger } from 'appium-base-driver';
191
+ let log = getLogger('mymodule');
143
192
 
144
- // previously there would be two lines
145
- log.error('This is an error');
146
- throw new Error('This is an error');
193
+ // previously there would be two lines
194
+ log.error('This is an error');
195
+ throw new Error('This is an error');
147
196
 
148
- // now is compacted
149
- log.errorAndThrow('This is an error');
150
- ```
197
+ // now is compacted
198
+ log.errorAndThrow('This is an error');
199
+ ```
package/build/lib/fs.d.ts CHANGED
@@ -37,8 +37,20 @@ export namespace fs {
37
37
  * @param {PathLike} path
38
38
  */
39
39
  export function exists(path: import("fs").PathLike): Promise<boolean>;
40
- export function rimraf(dirpath: string, opts?: rimrafIdx.Options | undefined): Promise<void>;
41
- export const rimrafSync: typeof rimrafIdx.sync;
40
+ /**
41
+ * Remove a directory and all its contents, recursively
42
+ * @param {PathLike} filepath
43
+ * @returns Promise<void>
44
+ * @see https://nodejs.org/api/fs.html#fspromisesrmpath-options
45
+ */
46
+ export function rimraf(filepath: import("fs").PathLike): Promise<void>;
47
+ /**
48
+ * Remove a directory and all its contents, recursively in sync
49
+ * @param {PathLike} filepath
50
+ * @returns undefined
51
+ * @see https://nodejs.org/api/fs.html#fsrmsyncpath-options
52
+ */
53
+ export function rimrafSync(filepath: import("fs").PathLike): void;
42
54
  /**
43
55
  * Like Node.js' `fsPromises.mkdir()`, but will _not_ reject if the directory already exists.
44
56
  *
@@ -148,7 +160,6 @@ export namespace fs {
148
160
  import glob from "glob";
149
161
  import mv from "mv";
150
162
  import B from "bluebird";
151
- import rimrafIdx from "rimraf";
152
163
  import ncp from "ncp";
153
164
  import which from "which";
154
165
  import sanitize from "sanitize-filename";
@@ -1 +1 @@
1
- {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../lib/fs.js"],"names":[],"mappings":";;;;;yCAmYW,MAAM,eACN,OAAO,KACN,OAAO,GAAC,IAAI;;;uBAMX,OAAO,IAAI,EAAE,QAAQ;kEAMvB,MAAM,UACN,OAAO,GAAC,OAAO,SAAS,EAAE,gBAAgB,CAAC,OAAO,CAAC,qGAIjD,EAAE;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAC,CAAC;;IAjXlD;;;;;;;;OAQG;IACH,yEAOC;IAED;;;;;;;;OAQG;IACH,4EAUC;IAED;;;OAGG;IACH,sEAEC;IAMkB,6FAAmE;;IAUtF;;;;;;;OAOG;IACH,0IAQC;IACD;;;;;;;OAOG;IACH,6GAKC;IAED;;;;OAIG;IACH,sEAEC;IAKc,uFAAwD;;;IAYtD,uFAAsD;;;IAQvE;;;;;OAKG;IACH,uGAcC;IAED;;;;;;;OAOG;IACH,gFAEC;IAED;;;;OAIG;IACH,gFAEC;IAED;;;;;;;OAOG;IAEH,4GAwEC;IACD;;;;;;OAMG;IACH,oHAUC;IACD;;;;;;OAMG;IACH,8CASC;;;;;;;;;;;;IA+EA;;;OAOF"}
1
+ {"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../lib/fs.js"],"names":[],"mappings":";;;;;yCAyYW,MAAM,eACN,OAAO,KACN,OAAO,GAAC,IAAI;;;uBAMX,OAAO,IAAI,EAAE,QAAQ;kEAMvB,MAAM,UACN,OAAO,GAAC,OAAO,SAAS,EAAE,gBAAgB,CAAC,OAAO,CAAC,qGAIjD,EAAE;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAC,CAAC;;IAvXlD;;;;;;;;OAQG;IACH,yEAOC;IAED;;;;;;;;OAQG;IACH,4EAUC;IAED;;;OAGG;IACH,sEAEC;IAED;;;;;OAKG;IACH,uEAEC;IAED;;;;;OAKG;IACH,kEAEC;IAED;;;;;;;OAOG;IACH,0IAQC;IACD;;;;;;;OAOG;IACH,6GAKC;IAED;;;;OAIG;IACH,sEAEC;IAKc,uFAAwD;;;IAYtD,uFAAsD;;;IAQvE;;;;;OAKG;IACH,uGAcC;IAED;;;;;;;OAOG;IACH,gFAEC;IAED;;;;OAIG;IACH,gFAEC;IAED;;;;;;;OAOG;IAEH,4GAwEC;IACD;;;;;;OAMG;IACH,oHAUC;IACD;;;;;;OAMG;IACH,8CASC;;;;;;;;;;;;IA+EA;;;OAOF"}
package/build/lib/fs.js CHANGED
@@ -16,7 +16,6 @@ const ncp_1 = __importDefault(require("ncp"));
16
16
  const path_1 = __importDefault(require("path"));
17
17
  const pkg_dir_1 = __importDefault(require("pkg-dir"));
18
18
  const read_pkg_1 = __importDefault(require("read-pkg"));
19
- const rimraf_1 = __importDefault(require("rimraf"));
20
19
  const sanitize_filename_1 = __importDefault(require("sanitize-filename"));
21
20
  const which_1 = __importDefault(require("which"));
22
21
  const logger_1 = __importDefault(require("./logger"));
@@ -75,14 +74,22 @@ const fs = {
75
74
  },
76
75
  /**
77
76
  * Remove a directory and all its contents, recursively
78
- * @todo Replace with `rm()` from `fs.promises` when Node.js v12 support is dropped.
77
+ * @param {PathLike} filepath
78
+ * @returns Promise<void>
79
+ * @see https://nodejs.org/api/fs.html#fspromisesrmpath-options
79
80
  */
80
- rimraf: /** @type {(dirpath: string, opts?: import('rimraf').Options) => Promise<void>} */ (bluebird_1.default.promisify(rimraf_1.default)),
81
+ async rimraf(filepath) {
82
+ return await fs_1.promises.rm(filepath, { recursive: true, force: true });
83
+ },
81
84
  /**
82
- * Alias of {@linkcode rimrafIdx.sync}
83
- * @todo Replace with `rmSync()` from `fs` when Node.js v12 support is dropped.
85
+ * Remove a directory and all its contents, recursively in sync
86
+ * @param {PathLike} filepath
87
+ * @returns undefined
88
+ * @see https://nodejs.org/api/fs.html#fsrmsyncpath-options
84
89
  */
85
- rimrafSync: rimraf_1.default.sync,
90
+ rimrafSync(filepath) {
91
+ return (0, fs_1.rmSync)(filepath, { recursive: true, force: true });
92
+ },
86
93
  /**
87
94
  * Like Node.js' `fsPromises.mkdir()`, but will _not_ reject if the directory already exists.
88
95
  *
@@ -1 +1 @@
1
- {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../lib/fs.js"],"names":[],"mappings":";AAAA,YAAY;;;;;;AAEZ,wDAAyB;AACzB,oDAA4B;AAC5B,2BASY;AACZ,gDAAwB;AACxB,gDAAwB;AACxB,oDAAuB;AACvB,4CAAoB;AACpB,8CAAsB;AACtB,gDAAwB;AACxB,sDAA6B;AAC7B,wDAA+B;AAC/B,oDAA+B;AAC/B,0EAAyC;AACzC,kDAA0B;AAC1B,sDAA2B;AAC3B,sDAA6B;AAC7B,qCAAmC;AACnC,iCAAiC;AAEjC,MAAM,QAAQ;AACZ,qFAAqF,CAAC,CACpF,kBAAC,CAAC,SAAS,CAAC,aAAG,CAAC,CACjB,CAAC;AACJ,MAAM,cAAc,GAAG,gBAAC,CAAC,OAAO,CAAC,iBAAM,CAAC,IAAI,CAAC,CAAC;AAE9C,MAAM,EAAE,GAAG;IACT;;;;;;;;OAQG;IACH,KAAK,CAAC,SAAS,CAAC,IAAI;QAClB,IAAI;YACF,MAAM,aAAU,CAAC,MAAM,CAAC,IAAI,EAAE,cAAS,CAAC,IAAI,CAAC,CAAC;SAC/C;QAAC,MAAM;YACN,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,YAAY,CAAC,IAAI;QACrB,IAAI;YACF,IAAI,IAAA,kBAAS,GAAE,EAAE;gBACf,OAAO,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;aACjC;YACD,MAAM,aAAU,CAAC,MAAM,CAAC,IAAI,EAAE,cAAS,CAAC,IAAI,GAAG,cAAS,CAAC,IAAI,CAAC,CAAC;SAChE;QAAC,MAAM;YACN,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CAAC,IAAI;QACf,OAAO,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED;;;OAGG;IACH,MAAM,EAAE,kFAAkF,CAAC,CACzF,kBAAC,CAAC,SAAS,CAAC,gBAAS,CAAC,CACvB;IAED;;;OAGG;IACH,UAAU,EAAE,gBAAS,CAAC,IAAI;IAE1B;;;;;;;OAOG;IACH,KAAK,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE;QAC7B,IAAI;YACF,OAAO,MAAM,aAAU,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SAC/C;QAAC,OAAO,GAAG,EAAE;YACZ,IAAI,GAAG,EAAE,IAAI,KAAK,QAAQ,EAAE;gBAC1B,MAAM,GAAG,CAAC;aACX;SACF;IACH,CAAC;IACD;;;;;;;OAOG;IACH,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,GAAG,EAAE;QAC3C,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE;YACjC,MAAM,IAAI,KAAK,CAAC,gBAAgB,MAAM,uCAAuC,CAAC,CAAC;SAChF;QACD,OAAO,MAAM,QAAQ,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,GAAG,CAAC,QAAQ;QAChB,OAAO,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,EAAE,EAAE,uEAAuE,CAAC,CAAC,kBAAC,CAAC,SAAS,CAAC,YAAE,CAAC,CAAC;IAE7F;;;OAGG;IACH,KAAK,EAAL,eAAK;IAEL;;;OAGG;IACH,IAAI,EAAE,qEAAqE,CAAC,CAAC,kBAAC,CAAC,SAAS,CAAC,cAAI,CAAC,CAAC;IAE/F;;;OAGG;IACH,YAAY,EAAE,2BAAQ;IAEtB;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,GAAG,MAAM;QACrC,OAAO,MAAM,IAAI,kBAAC,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,QAAQ,GAAG,gBAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC9C,MAAM,UAAU,GAAG,IAAA,qBAAgB,EAAC,QAAQ,CAAC,CAAC;YAC9C,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAC3B,MAAM,CACJ,IAAI,KAAK,CACP,oBAAoB,SAAS,cAAc,QAAQ,sBAAsB,CAAC,CAAC,OAAO,EAAE,CACrF,CACF,CACF,CAAC;YACF,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACzD,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,CAAC,GAAG,EAAE,IAAI;QACZ,OAAO,IAAA,cAAI,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACzB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,GAAG;QACd,OAAO,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;IAChD,CAAC;IAED;;;;;;;OAOG;IACH,6DAA6D;IAC7D,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ;QACpC,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,IAAI;YACF,WAAW,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;SAClD;QAAC,OAAO,CAAC,EAAE;YACV,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC;SACpB;QACD,IAAI,CAAC,WAAW,EAAE;YAChB,MAAM,KAAK,CACT,IAAI,GAAG,iCAAiC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACzF,CAAC;SACH;QAED,IAAI,MAAM,CAAC;QACX,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,MAAM,KAAK,GAAG,IAAI,gBAAK,EAAE,CAAC,KAAK,EAAE,CAAC;QAClC,OAAO,MAAM,IAAI,kBAAC,CAAC,UAAU,OAAO,EAAE,MAAM;YAC1C,IAAI,iBAAiB,GAAG,kBAAC,CAAC,OAAO,EAAE,CAAC;YACpC,MAAM,GAAG,IAAA,cAAI,EAAC,GAAG,EAAE;gBACjB,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAC/B,CAAC,CAAC;YACH,MAAM;iBACH,EAAE,CAAC,MAAM,EAAE,UAAU,IAAI;gBACxB,MAAM,CAAC,KAAK,EAAE,CAAC;gBAEf,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE;oBAC7B,SAAS,EAAE,CAAC;iBACb;qBAAM;oBACL,cAAc,EAAE,CAAC;iBAClB;gBAED,6DAA6D;gBAC7D,iBAAiB,GAAG,kBAAC,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;qBACvF,IAAI,CAAC,UAAU,IAAI,GAAG,KAAK;oBAC1B,IAAI,IAAI,EAAE;wBACR,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBACpB;yBAAM;wBACL,MAAM,CAAC,MAAM,EAAE,CAAC;qBACjB;gBACH,CAAC,CAAC;qBACD,KAAK,CAAC,MAAM,CAAC,CAAC;YACnB,CAAC,CAAC;iBACD,EAAE,CAAC,OAAO,EAAE,UAAU,GAAG,EAAE,IAAI;gBAC9B,gBAAG,CAAC,IAAI,CAAC,+BAA+B,IAAI,CAAC,IAAI,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBACtE,4CAA4C;gBAC5C,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE;oBACzB,gBAAG,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;oBACjD,MAAM,CAAC,GAAG,CAAC,CAAC;iBACb;YACH,CAAC,CAAC;iBACD,EAAE,CAAC,KAAK,EAAE;gBACT,iBAAiB;qBACd,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;oBACb,OAAO,CAAC,+BAA+B,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;gBAC1D,CAAC,CAAC;qBACD,KAAK,CAAC,UAAU,GAAG;oBAClB,gBAAG,CAAC,IAAI,CAAC,qBAAqB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC7C,MAAM,CAAC,GAAG,CAAC,CAAC;gBACd,CAAC,CAAC,CAAC;YACP,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC,OAAO,CAAC;YACT,gBAAG,CAAC,KAAK,CACP,aAAa,IAAA,gBAAS,EAAC,WAAW,EAAE,cAAc,EAAE,IAAI,CAAC,GAAG;gBAC1D,OAAO,IAAA,gBAAS,EAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG;gBAC5C,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAC1D,CAAC;YACF,IAAI,MAAM,EAAE;gBACV,MAAM,CAAC,OAAO,EAAE,CAAC;aAClB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IACD;;;;;;OAMG;IACH,mBAAmB,CAAC,GAAG,EAAE,IAAI,GAAG,EAAE;QAChC,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI;YACF,OAAO,kBAAO,CAAC,IAAI;YACjB,kDAAkD,CAAC,CAAC,EAAC,SAAS,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,EAAC,CAAC,CACrF,CAAC;SACH;QAAC,OAAO,GAAG,EAAE;YACZ,GAAG,CAAC,OAAO,GAAG,gDAAgD,GAAG,UAAU,GAAG,CAAC,OAAO,EAAE,CAAC;YACzF,MAAM,GAAG,CAAC;SACX;IACH,CAAC;IACD;;;;;;OAMG;IACH,QAAQ,CAAC,GAAG;QACV,IAAI,CAAC,GAAG,IAAI,CAAC,cAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACjC,MAAM,IAAI,SAAS,CAAC,0DAA0D,CAAC,CAAC;SACjF;QACD,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,uDAAuD,GAAG,EAAE,CAAC,CAAC;SAC/E;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,mCAAmC;IACnC,MAAM,EAAE,aAAU,CAAC,MAAM;IACzB,UAAU,EAAE,aAAU,CAAC,UAAU;IACjC,KAAK,EAAE,aAAU,CAAC,KAAK;IACvB,KAAK,EAAE,kBAAC,CAAC,SAAS,CAAC,UAAK,CAAC;IACzB,SAAS,EAAT,cAAS;IACT,iBAAiB,EAAjB,sBAAiB;IACjB,gBAAgB,EAAhB,qBAAgB;IAChB,KAAK,EAAE,aAAU,CAAC,KAAK;IACvB;;;;OAIG;IACH,IAAI,EAAE,kBAAC,CAAC,SAAS,CAAC,SAAI,CAAC;IACvB,QAAQ,EAAE,aAAU,CAAC,IAAI;IACzB,OAAO,EAAE,aAAU,CAAC,OAAO;IAE3B,IAAI,EAAE;;OAEH,CAAC,EAAC,sBAAuB,CAAC,kBAAC,CAAC,SAAS,CAAC,SAAI,CAAC,CAAC,CAAC;IAChD,QAAQ,EAAE,aAAU,CAAC,QAAQ;IAC7B,QAAQ,EAAE,aAAU,CAAC,QAAQ;IAC7B,QAAQ,EAAE,aAAU,CAAC,QAAQ;IAC7B,MAAM,EAAE,aAAU,CAAC,MAAM;IACzB,IAAI,EAAE,aAAU,CAAC,IAAI;IACrB,OAAO,EAAE,aAAU,CAAC,OAAO;IAC3B,MAAM,EAAE,aAAU,CAAC,MAAM;IACzB,KAAK,EAAE,kBAAC,CAAC,SAAS,CAAC,UAAK,CAAC;IACzB,SAAS,EAAE,aAAU,CAAC,SAAS;IAE/B,mBAAmB;IAEnB;;;OAGG;IACH,IAAI,EAAE,cAAS,CAAC,IAAI;IAEpB;;;OAGG;IACH,IAAI,EAAE,cAAS,CAAC,IAAI;IAEpB;;;OAGG;IACH,IAAI,EAAE,cAAS,CAAC,IAAI;IAEpB;;;OAGG;IACH,IAAI,EAAE,cAAS,CAAC,IAAI;CACrB,CAAC;AAEM,gBAAE;AACV,kBAAe,EAAE,CAAC;AAElB;;;;;;GAMG;AAEH;;;;GAIG;AAEH;;;;;;;;;GASG"}
1
+ {"version":3,"file":"fs.js","sourceRoot":"","sources":["../../lib/fs.js"],"names":[],"mappings":"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"}
@@ -1,56 +1,11 @@
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
1
  /**
12
2
  * Crop the image by given rectangle (use base64 string as input and output)
13
3
  *
14
- * @param {string} base64Image The string with base64 encoded image
15
- * @param {Region} rect The selected region of image
4
+ * @param {string} base64Image The string with base64 encoded image.
5
+ * Supports all image formats natively supported by Sharp library.
6
+ * @param {sharp.Region} rect The selected region of image
16
7
  * @return {Promise<string>} base64 encoded string of cropped image
17
8
  */
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";
9
+ export function cropBase64Image(base64Image: string, rect: sharp.Region): Promise<string>;
10
+ import sharp from "sharp";
56
11
  //# sourceMappingURL=image-util.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"image-util.d.ts","sourceRoot":"","sources":["../../lib/image-util.js"],"names":[],"mappings":";yBAwKa,KAAK,IAAI,EAAC,WAAW,CAAC,GAAG;IAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAA;CAAC;;UAK3D,MAAM;SACN,MAAM;WACN,MAAM;YACN,MAAM;;AA1HpB;;;;;;GAMG;AACH,6CAJW,MAAM,QACN,MAAM,GACL,QAAQ,MAAM,CAAC,CAM1B;AAED;;;;;GAKG;AACH,2CAHW,MAAM,GACL,QAAQ,GAAG,CAAC,CAcvB;AAED;;;;;GAKG;AACH,qCAHW,GAAG,GACF,QAAQ,MAAM,CAAC,CAgB1B;AAED;;;;;GAKG;AACH,iCAHW,GAAG,QACH,MAAM,OAiChB;AAxID;;;;;;;;GAQG;AACH,mCAJW,MAAM,GAAC,MAAM,GAEX,QAAQ,UAAU,CAAC,CAmC/B"}
1
+ {"version":3,"file":"image-util.d.ts","sourceRoot":"","sources":["../../lib/image-util.js"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,6CALW,MAAM,QAEN,MAAM,MAAM,GACX,QAAQ,MAAM,CAAC,CAK1B"}
@@ -3,158 +3,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.MIME_BMP = exports.MIME_PNG = exports.MIME_JPEG = exports.getJimpImage = exports.cropImage = exports.imageToBase64 = exports.base64ToImage = exports.cropBase64Image = void 0;
7
- const lodash_1 = __importDefault(require("lodash"));
8
- const jimp_1 = __importDefault(require("jimp"));
9
- const buffer_1 = require("buffer");
10
- const pngjs_1 = require("pngjs");
11
- const bluebird_1 = __importDefault(require("bluebird"));
12
- const BYTES_IN_PIXEL_BLOCK = 4;
13
- const SCANLINE_FILTER_METHOD = 4;
14
- const { MIME_JPEG, MIME_PNG, MIME_BMP } = jimp_1.default;
15
- exports.MIME_JPEG = MIME_JPEG;
16
- exports.MIME_PNG = MIME_PNG;
17
- exports.MIME_BMP = MIME_BMP;
18
- /**
19
- * Utility function to get a Jimp image object from buffer or base64 data. Jimp
20
- * is a great library however it does IO in the constructor so it's not
21
- * convenient for our async/await model.
22
- *
23
- * @param {Buffer|string} data - binary image buffer or base64-encoded image
24
- * string
25
- * @returns {Promise<AppiumJimp>} - the jimp image object
26
- */
27
- async function getJimpImage(data) {
28
- return await new bluebird_1.default((resolve, reject) => {
29
- if (!lodash_1.default.isString(data) && !buffer_1.Buffer.isBuffer(data)) {
30
- return reject(new Error('Must initialize jimp object with string or buffer'));
31
- }
32
- const truncatedData = lodash_1.default.truncate(buffer_1.Buffer.isBuffer(data) ? data.toString('utf8') : data, { length: 50 });
33
- new jimp_1.default(
34
- // if data is a string, assume it is a base64-encoded image
35
- buffer_1.Buffer.isBuffer(data) ? data : buffer_1.Buffer.from(String(data), 'base64'),
36
- /**
37
- * @param {Error?} err
38
- * @param {AppiumJimp} imgObj
39
- */
40
- (err, imgObj) => {
41
- if (err) {
42
- err.message = `The argument must be a valid base64-encoded image payload. ` +
43
- `'${truncatedData}' was passed instead. Original error: ${err.message}`;
44
- return reject(err);
45
- }
46
- if (!imgObj) {
47
- return reject(new Error('Could not create jimp image from that data'));
48
- }
49
- imgObj.getBuffer = bluebird_1.default.promisify(imgObj.getBuffer.bind(imgObj), {
50
- context: imgObj,
51
- });
52
- resolve(imgObj);
53
- });
54
- });
55
- }
56
- exports.getJimpImage = getJimpImage;
6
+ exports.cropBase64Image = void 0;
7
+ const sharp_1 = __importDefault(require("sharp"));
57
8
  /**
58
9
  * Crop the image by given rectangle (use base64 string as input and output)
59
10
  *
60
- * @param {string} base64Image The string with base64 encoded image
61
- * @param {Region} rect The selected region of image
11
+ * @param {string} base64Image The string with base64 encoded image.
12
+ * Supports all image formats natively supported by Sharp library.
13
+ * @param {sharp.Region} rect The selected region of image
62
14
  * @return {Promise<string>} base64 encoded string of cropped image
63
15
  */
64
16
  async function cropBase64Image(base64Image, rect) {
65
- const image = await base64ToImage(base64Image);
66
- cropImage(image, rect);
67
- return await imageToBase64(image);
17
+ const buf = await (0, sharp_1.default)(Buffer.from(base64Image, 'base64')).extract(rect).toBuffer();
18
+ return buf.toString('base64');
68
19
  }
69
20
  exports.cropBase64Image = cropBase64Image;
70
- /**
71
- * Create a pngjs image from given base64 image
72
- *
73
- * @param {string} base64Image The string with base64 encoded image
74
- * @return {Promise<PNG>} The image object
75
- */
76
- async function base64ToImage(base64Image) {
77
- const imageBuffer = buffer_1.Buffer.from(base64Image, 'base64');
78
- return await new bluebird_1.default((resolve, reject) => {
79
- const image = new pngjs_1.PNG({ filterType: SCANLINE_FILTER_METHOD });
80
- image.parse(imageBuffer, (err, image) => {
81
- // eslint-disable-line promise/prefer-await-to-callbacks
82
- if (err) {
83
- return reject(err);
84
- }
85
- resolve(image);
86
- });
87
- });
88
- }
89
- exports.base64ToImage = base64ToImage;
90
- /**
91
- * Create a base64 string for given image object
92
- *
93
- * @param {PNG} image The image object
94
- * @return {Promise<string>} The string with base64 encoded image
95
- */
96
- async function imageToBase64(image) {
97
- return await new bluebird_1.default((resolve, reject) => {
98
- const chunks = [];
99
- image
100
- .pack()
101
- .on('data', (chunk) => chunks.push(chunk))
102
- .on('end', () => {
103
- resolve(buffer_1.Buffer.concat(chunks).toString('base64'));
104
- })
105
- .on('error', (err) => {
106
- // eslint-disable-line promise/prefer-await-to-callbacks
107
- reject(err);
108
- });
109
- });
110
- }
111
- exports.imageToBase64 = imageToBase64;
112
- /**
113
- * Crop the image by given rectangle
114
- *
115
- * @param {PNG} image The image to mutate by cropping
116
- * @param {Region} rect The selected region of image
117
- */
118
- function cropImage(image, rect) {
119
- const imageRect = { width: image.width, height: image.height };
120
- const interRect = getRectIntersection(rect, imageRect);
121
- if (interRect.width < rect.width || interRect.height < rect.height) {
122
- throw new Error(`Cannot crop ${JSON.stringify(rect)} from ${JSON.stringify(imageRect)} because the intersection between them was not the size of the rect`);
123
- }
124
- const firstVerticalPixel = interRect.top;
125
- const lastVerticalPixel = interRect.top + interRect.height;
126
- const firstHorizontalPixel = interRect.left;
127
- const lastHorizontalPixel = interRect.left + interRect.width;
128
- const croppedArray = [];
129
- for (let y = firstVerticalPixel; y < lastVerticalPixel; y++) {
130
- for (let x = firstHorizontalPixel; x < lastHorizontalPixel; x++) {
131
- const firstByteIdxInPixelBlock = (imageRect.width * y + x) << 2;
132
- for (let byteIdx = 0; byteIdx < BYTES_IN_PIXEL_BLOCK; byteIdx++) {
133
- croppedArray.push(image.data[firstByteIdxInPixelBlock + byteIdx]);
134
- }
135
- }
136
- }
137
- image.data = buffer_1.Buffer.from(croppedArray);
138
- image.width = interRect.width;
139
- image.height = interRect.height;
140
- return image;
141
- }
142
- exports.cropImage = cropImage;
143
- function getRectIntersection(rect, imageSize) {
144
- const left = rect.left >= imageSize.width ? imageSize.width : rect.left;
145
- const top = rect.top >= imageSize.height ? imageSize.height : rect.top;
146
- const width = imageSize.width >= left + rect.width ? rect.width : imageSize.width - left;
147
- const height = imageSize.height >= top + rect.height ? rect.height : imageSize.height - top;
148
- return { left, top, width, height };
149
- }
150
- /**
151
- * @typedef {Omit<Jimp,'getBuffer'> & {getBuffer: Jimp['getBufferAsync']}} AppiumJimp
152
- */
153
- /**
154
- * @typedef Region
155
- * @property {number} left
156
- * @property {number} top
157
- * @property {number} width
158
- * @property {number} height
159
- */
160
21
  //# sourceMappingURL=image-util.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"image-util.js","sourceRoot":"","sources":["../../lib/image-util.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"image-util.js","sourceRoot":"","sources":["../../lib/image-util.js"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAE1B;;;;;;;GAOG;AACI,KAAK,UAAU,eAAe,CAAC,WAAW,EAAE,IAAI;IACrD,MAAM,GAAG,GAAG,MAAM,IAAA,eAAK,EAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;IACrF,OAAO,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC;AAHD,0CAGC"}
@@ -1 +1 @@
1
- {"version":3,"file":"mjpeg.d.ts","sourceRoot":"","sources":["../../lib/mjpeg.js"],"names":[],"mappings":"AA+BA,+DAA+D;AAC/D;IAME;;;;;;OAMG;IACH,sBALW,MAAM,iDAGN,MAAM,EAQhB;IAlBD;;OAEG;IACH,aAFU,MAAM,CAEA;IAYd,uBAAgC;IAChC,YAAmB;IAIrB;;;;;OAKG;IACH,qCAKC;IAED;;;;;OAKG;IACH,gBAHa,QAAQ,MAAM,QAAE,CAe5B;IAED;;;;;OAKG;IACH,sBAHa,QAAQ,MAAM,QAAE,CAM5B;IAED;;OAEG;IACH,cAOC;IANC,4EAAgC;IAChC,iEAAgC;IAChC,oBAA0B;IAC1B,cAAoB;IACpB,qCAAqB;IAIvB;;OAEG;IACH,6CAwDC;IAED;;;OAGG;IACH,aASC;IAED;;;;;OAKG;IACH,qBAFW,MAAM,WAYhB;CACF"}
1
+ {"version":3,"file":"mjpeg.d.ts","sourceRoot":"","sources":["../../lib/mjpeg.js"],"names":[],"mappings":"AA+BA,+DAA+D;AAC/D;IAME;;;;;;OAMG;IACH,sBALW,MAAM,iDAGN,MAAM,EAQhB;IAlBD;;OAEG;IACH,aAFU,MAAM,CAEA;IAYd,uBAAgC;IAChC,YAAmB;IAIrB;;;;;OAKG;IACH,qCAKC;IAED;;;;;OAKG;IACH,gBAHa,QAAQ,MAAM,QAAE,CAc5B;IAED;;;;;OAKG;IACH,sBAHa,QAAQ,MAAM,QAAE,CAM5B;IAED;;OAEG;IACH,cAOC;IANC,4EAAgC;IAChC,iEAAgC;IAChC,oBAA0B;IAC1B,cAAoB;IACpB,qCAAqB;IAIvB;;OAEG;IACH,6CAwDC;IAED;;;OAGG;IACH,aASC;IAED;;;;;OAKG;IACH,qBAFW,MAAM,WAYhB;CACF"}
@@ -7,7 +7,7 @@ exports.MJpegStream = void 0;
7
7
  const lodash_1 = __importDefault(require("lodash"));
8
8
  const logger_1 = __importDefault(require("./logger"));
9
9
  const bluebird_1 = __importDefault(require("bluebird"));
10
- const image_util_1 = require("./image-util");
10
+ const sharp_1 = __importDefault(require("sharp"));
11
11
  const stream_1 = require("stream");
12
12
  const node_1 = require("./node");
13
13
  const axios_1 = __importDefault(require("axios"));
@@ -73,8 +73,7 @@ class MJpegStream extends stream_1.Writable {
73
73
  return null;
74
74
  }
75
75
  try {
76
- const jpg = await (0, image_util_1.getJimpImage)(lastChunk);
77
- return await jpg.getBuffer(image_util_1.MIME_PNG);
76
+ return await (0, sharp_1.default)(lastChunk).png().toBuffer();
78
77
  }
79
78
  catch (e) {
80
79
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"mjpeg.js","sourceRoot":"","sources":["../../lib/mjpeg.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mjpeg.js","sourceRoot":"","sources":["../../lib/mjpeg.js"],"names":[],"mappings":"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"}
package/lib/fs.js CHANGED
@@ -10,6 +10,7 @@ import {
10
10
  promises as fsPromises,
11
11
  read,
12
12
  write,
13
+ rmSync,
13
14
  open,
14
15
  } from 'fs';
15
16
  import glob from 'glob';
@@ -20,7 +21,6 @@ import ncp from 'ncp';
20
21
  import path from 'path';
21
22
  import pkgDir from 'pkg-dir';
22
23
  import readPkg from 'read-pkg';
23
- import rimrafIdx from 'rimraf';
24
24
  import sanitize from 'sanitize-filename';
25
25
  import which from 'which';
26
26
  import log from './logger';
@@ -84,17 +84,23 @@ const fs = {
84
84
 
85
85
  /**
86
86
  * Remove a directory and all its contents, recursively
87
- * @todo Replace with `rm()` from `fs.promises` when Node.js v12 support is dropped.
87
+ * @param {PathLike} filepath
88
+ * @returns Promise<void>
89
+ * @see https://nodejs.org/api/fs.html#fspromisesrmpath-options
88
90
  */
89
- rimraf: /** @type {(dirpath: string, opts?: import('rimraf').Options) => Promise<void>} */ (
90
- B.promisify(rimrafIdx)
91
- ),
91
+ async rimraf(filepath) {
92
+ return await fsPromises.rm(filepath, {recursive: true, force: true});
93
+ },
92
94
 
93
95
  /**
94
- * Alias of {@linkcode rimrafIdx.sync}
95
- * @todo Replace with `rmSync()` from `fs` when Node.js v12 support is dropped.
96
+ * Remove a directory and all its contents, recursively in sync
97
+ * @param {PathLike} filepath
98
+ * @returns undefined
99
+ * @see https://nodejs.org/api/fs.html#fsrmsyncpath-options
96
100
  */
97
- rimrafSync: rimrafIdx.sync,
101
+ rimrafSync(filepath) {
102
+ return rmSync(filepath, {recursive: true, force: true});
103
+ },
98
104
 
99
105
  /**
100
106
  * Like Node.js' `fsPromises.mkdir()`, but will _not_ reject if the directory already exists.
package/lib/image-util.js CHANGED
@@ -1,178 +1,14 @@
1
- import _ from 'lodash';
2
- import Jimp from 'jimp';
3
- import {Buffer} from 'buffer';
4
- import {PNG} from 'pngjs';
5
- import B from 'bluebird';
6
-
7
- const BYTES_IN_PIXEL_BLOCK = 4;
8
- const SCANLINE_FILTER_METHOD = 4;
9
- const {MIME_JPEG, MIME_PNG, MIME_BMP} = Jimp;
10
-
11
- /**
12
- * Utility function to get a Jimp image object from buffer or base64 data. Jimp
13
- * is a great library however it does IO in the constructor so it's not
14
- * convenient for our async/await model.
15
- *
16
- * @param {Buffer|string} data - binary image buffer or base64-encoded image
17
- * string
18
- * @returns {Promise<AppiumJimp>} - the jimp image object
19
- */
20
- async function getJimpImage(data) {
21
- return await new B((resolve, reject) => {
22
- if (!_.isString(data) && !Buffer.isBuffer(data)) {
23
- return reject(new Error('Must initialize jimp object with string or buffer'));
24
- }
25
-
26
- const truncatedData = _.truncate(
27
- Buffer.isBuffer(data) ? data.toString('utf8') : data,
28
- {length: 50}
29
- );
30
- new Jimp(
31
- // if data is a string, assume it is a base64-encoded image
32
- Buffer.isBuffer(data) ? data : Buffer.from(String(data), 'base64'),
33
- /**
34
- * @param {Error?} err
35
- * @param {AppiumJimp} imgObj
36
- */
37
- (err, imgObj) => {
38
- if (err) {
39
- err.message = `The argument must be a valid base64-encoded image payload. ` +
40
- `'${truncatedData}' was passed instead. Original error: ${err.message}`;
41
- return reject(err);
42
- }
43
- if (!imgObj) {
44
- return reject(new Error('Could not create jimp image from that data'));
45
- }
46
- imgObj.getBuffer = B.promisify(imgObj.getBuffer.bind(imgObj), {
47
- context: imgObj,
48
- });
49
- resolve(imgObj);
50
- }
51
- );
52
- });
53
- }
1
+ import sharp from 'sharp';
54
2
 
55
3
  /**
56
4
  * Crop the image by given rectangle (use base64 string as input and output)
57
5
  *
58
- * @param {string} base64Image The string with base64 encoded image
59
- * @param {Region} rect The selected region of image
6
+ * @param {string} base64Image The string with base64 encoded image.
7
+ * Supports all image formats natively supported by Sharp library.
8
+ * @param {sharp.Region} rect The selected region of image
60
9
  * @return {Promise<string>} base64 encoded string of cropped image
61
10
  */
62
- async function cropBase64Image(base64Image, rect) {
63
- const image = await base64ToImage(base64Image);
64
- cropImage(image, rect);
65
- return await imageToBase64(image);
66
- }
67
-
68
- /**
69
- * Create a pngjs image from given base64 image
70
- *
71
- * @param {string} base64Image The string with base64 encoded image
72
- * @return {Promise<PNG>} The image object
73
- */
74
- async function base64ToImage(base64Image) {
75
- const imageBuffer = Buffer.from(base64Image, 'base64');
76
- return await new B((resolve, reject) => {
77
- const image = new PNG({filterType: SCANLINE_FILTER_METHOD});
78
- image.parse(imageBuffer, (err, image) => {
79
- // eslint-disable-line promise/prefer-await-to-callbacks
80
- if (err) {
81
- return reject(err);
82
- }
83
- resolve(image);
84
- });
85
- });
11
+ export async function cropBase64Image(base64Image, rect) {
12
+ const buf = await sharp(Buffer.from(base64Image, 'base64')).extract(rect).toBuffer();
13
+ return buf.toString('base64');
86
14
  }
87
-
88
- /**
89
- * Create a base64 string for given image object
90
- *
91
- * @param {PNG} image The image object
92
- * @return {Promise<string>} The string with base64 encoded image
93
- */
94
- async function imageToBase64(image) {
95
- return await new B((resolve, reject) => {
96
- const chunks = [];
97
- image
98
- .pack()
99
- .on('data', (chunk) => chunks.push(chunk))
100
- .on('end', () => {
101
- resolve(Buffer.concat(chunks).toString('base64'));
102
- })
103
- .on('error', (err) => {
104
- // eslint-disable-line promise/prefer-await-to-callbacks
105
- reject(err);
106
- });
107
- });
108
- }
109
-
110
- /**
111
- * Crop the image by given rectangle
112
- *
113
- * @param {PNG} image The image to mutate by cropping
114
- * @param {Region} rect The selected region of image
115
- */
116
- function cropImage(image, rect) {
117
- const imageRect = {width: image.width, height: image.height};
118
- const interRect = getRectIntersection(rect, imageRect);
119
- if (interRect.width < rect.width || interRect.height < rect.height) {
120
- throw new Error(
121
- `Cannot crop ${JSON.stringify(rect)} from ${JSON.stringify(
122
- imageRect
123
- )} because the intersection between them was not the size of the rect`
124
- );
125
- }
126
-
127
- const firstVerticalPixel = interRect.top;
128
- const lastVerticalPixel = interRect.top + interRect.height;
129
-
130
- const firstHorizontalPixel = interRect.left;
131
- const lastHorizontalPixel = interRect.left + interRect.width;
132
-
133
- const croppedArray = [];
134
- for (let y = firstVerticalPixel; y < lastVerticalPixel; y++) {
135
- for (let x = firstHorizontalPixel; x < lastHorizontalPixel; x++) {
136
- const firstByteIdxInPixelBlock = (imageRect.width * y + x) << 2;
137
- for (let byteIdx = 0; byteIdx < BYTES_IN_PIXEL_BLOCK; byteIdx++) {
138
- croppedArray.push(image.data[firstByteIdxInPixelBlock + byteIdx]);
139
- }
140
- }
141
- }
142
-
143
- image.data = Buffer.from(croppedArray);
144
- image.width = interRect.width;
145
- image.height = interRect.height;
146
- return image;
147
- }
148
-
149
- function getRectIntersection(rect, imageSize) {
150
- const left = rect.left >= imageSize.width ? imageSize.width : rect.left;
151
- const top = rect.top >= imageSize.height ? imageSize.height : rect.top;
152
- const width = imageSize.width >= left + rect.width ? rect.width : imageSize.width - left;
153
- const height = imageSize.height >= top + rect.height ? rect.height : imageSize.height - top;
154
- return {left, top, width, height};
155
- }
156
-
157
- export {
158
- cropBase64Image,
159
- base64ToImage,
160
- imageToBase64,
161
- cropImage,
162
- getJimpImage,
163
- MIME_JPEG,
164
- MIME_PNG,
165
- MIME_BMP,
166
- };
167
-
168
- /**
169
- * @typedef {Omit<Jimp,'getBuffer'> & {getBuffer: Jimp['getBufferAsync']}} AppiumJimp
170
- */
171
-
172
- /**
173
- * @typedef Region
174
- * @property {number} left
175
- * @property {number} top
176
- * @property {number} width
177
- * @property {number} height
178
- */
package/lib/mjpeg.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import _ from 'lodash';
2
2
  import log from './logger';
3
3
  import B from 'bluebird';
4
- import {getJimpImage, MIME_PNG} from './image-util';
4
+ import sharp from 'sharp';
5
5
  import {Writable} from 'stream';
6
6
  import {requirePackage} from './node';
7
7
  import axios from 'axios';
@@ -77,8 +77,7 @@ class MJpegStream extends Writable {
77
77
  }
78
78
 
79
79
  try {
80
- const jpg = await getJimpImage(lastChunk);
81
- return await jpg.getBuffer(MIME_PNG);
80
+ return await sharp(lastChunk).png().toBuffer();
82
81
  } catch (e) {
83
82
  return null;
84
83
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@appium/support",
3
- "version": "3.1.11",
3
+ "version": "4.0.1",
4
4
  "description": "Support libs used across appium packages",
5
5
  "keywords": [
6
6
  "automation",
@@ -42,7 +42,7 @@
42
42
  },
43
43
  "dependencies": {
44
44
  "@appium/tsconfig": "^0.3.0",
45
- "@appium/types": "^0.11.0",
45
+ "@appium/types": "^0.11.1",
46
46
  "@colors/colors": "1.5.0",
47
47
  "@types/archiver": "5.3.2",
48
48
  "@types/base64-stream": "1.0.2",
@@ -55,15 +55,14 @@
55
55
  "@types/ncp": "2.0.5",
56
56
  "@types/npmlog": "4.1.4",
57
57
  "@types/pluralize": "0.0.29",
58
- "@types/pngjs": "6.0.1",
59
- "@types/rimraf": "3.0.2",
60
58
  "@types/semver": "7.3.13",
61
59
  "@types/shell-quote": "1.7.1",
62
60
  "@types/supports-color": "8.1.1",
63
61
  "@types/teen_process": "2.0.0",
64
62
  "@types/uuid": "9.0.1",
63
+ "@types/which": "3.0.0",
65
64
  "archiver": "5.3.1",
66
- "axios": "1.3.5",
65
+ "axios": "1.4.0",
67
66
  "base64-stream": "1.0.0",
68
67
  "bluebird": "3.7.2",
69
68
  "bplist-creator": "0.1.1",
@@ -71,7 +70,6 @@
71
70
  "form-data": "4.0.0",
72
71
  "get-stream": "6.0.1",
73
72
  "glob": "8.1.0",
74
- "jimp": "0.22.7",
75
73
  "jsftp": "2.1.3",
76
74
  "klaw": "4.1.0",
77
75
  "lockfile": "1.0.4",
@@ -85,19 +83,18 @@
85
83
  "pkg-dir": "5.0.0",
86
84
  "plist": "3.0.6",
87
85
  "pluralize": "8.0.0",
88
- "pngjs": "7.0.0",
89
86
  "read-pkg": "5.2.0",
90
87
  "resolve-from": "5.0.0",
91
- "rimraf": "3.0.2",
92
88
  "sanitize-filename": "1.6.3",
93
- "semver": "7.4.0",
89
+ "semver": "7.5.0",
90
+ "sharp": "0.32.1",
94
91
  "shell-quote": "1.8.1",
95
92
  "source-map-support": "0.5.21",
96
93
  "supports-color": "8.1.1",
97
94
  "teen_process": "2.0.2",
98
- "type-fest": "3.8.0",
95
+ "type-fest": "3.10.0",
99
96
  "uuid": "9.0.0",
100
- "which": "3.0.0",
97
+ "which": "3.0.1",
101
98
  "yauzl": "2.10.0"
102
99
  },
103
100
  "engines": {
@@ -107,7 +104,7 @@
107
104
  "publishConfig": {
108
105
  "access": "public"
109
106
  },
110
- "gitHead": "11406e487927a50964c58d22f59ecd7ed2d0f314",
107
+ "gitHead": "ee365ad1687d3b4e13a43a737e45110c74e59235",
111
108
  "typedoc": {
112
109
  "entryPoint": "./lib/index.js"
113
110
  }