@appium/support 3.1.11 → 4.0.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/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":";;;;;;AAAA,oDAAuB;AACvB,sDAA2B;AAC3B,wDAAyB;AACzB,kDAA0B;AAC1B,mCAAgC;AAChC,iCAAsC;AACtC,kDAA0B;AAE1B,+CAA+C;AAC/C,IAAI,aAAa,GAAG,IAAI,CAAC;AAEzB;;GAEG;AACH,KAAK,UAAU,iBAAiB;IAC9B,IAAI,CAAC,aAAa,EAAE;QAClB,IAAI;YACF,aAAa,GAAG,MAAM,IAAA,qBAAc,EAAC,gBAAgB,CAAC,CAAC;SACxD;QAAC,OAAO,GAAG,EAAE,GAAE;KACjB;IACD,IAAI,CAAC,aAAa,EAAE;QAClB,MAAM,IAAI,KAAK,CACb,qEAAqE;YACnE,uEAAuE,CAC1E,CAAC;KACH;AACH,CAAC;AAED,2DAA2D;AAC3D,MAAM,uBAAuB,GAAG,KAAK,CAAC;AAEtC,+DAA+D;AAC/D,MAAM,WAAY,SAAQ,iBAAQ;IAMhC;;;;;;OAMG;IACH,YAAY,QAAQ,EAAE,YAAY,GAAG,gBAAC,CAAC,IAAI,EAAE,OAAO,GAAG,EAAE;QACvD,KAAK,CAAC,OAAO,CAAC,CAAC;QAbjB;;WAEG;QACH,gBAAW,GAAG,CAAC,CAAC;QAYd,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC;QACpB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACH,IAAI,eAAe;QACjB,MAAM,SAAS,GAAG,qBAAqB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzD,OAAO,CAAC,gBAAC,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,gBAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;YAC7D,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC9B,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,YAAY;QAChB,MAAM,SAAS,GAAG,qBAAqB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzD,IAAI,gBAAC,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,gBAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YAClD,OAAO,IAAI,CAAC;SACb;QAED,IAAI;YACF,OAAO,MAAM,IAAA,eAAK,EAAC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;SAChD;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,IAAI,CAAC;SACb;IACH,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,kBAAkB;QACtB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,aAAa,GAAG,uBAAuB;QACjD,mCAAmC;QACnC,IAAI,CAAC,IAAI,EAAE,CAAC;QAEZ,MAAM,iBAAiB,EAAE,CAAC;QAE1B,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;QAEpC,sEAAsE;QACtE,+CAA+C;QAC/C,MAAM,YAAY,GAAG,IAAI,kBAAC,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YACtC,IAAI,CAAC,oBAAoB,GAAG,GAAG,CAAC;YAChC,IAAI,CAAC,oBAAoB,GAAG,GAAG,CAAC;QAClC,CAAC,CAAC;YACA,uEAAuE;YACvE,iBAAiB;aAChB,OAAO,CACN,aAAa,EACb,UAAU,aAAa,+CAA+C,CACvE,CAAC;QAEJ,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,EAAE;YACpB,sEAAsE;YACtE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YAEtB,gBAAG,CAAC,KAAK,CAAC,yCAAyC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;YAClE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,IAAI,CAAC,oBAAoB,EAAE;gBAC7B,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;aAChC;QACH,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,gBAAG,CAAC,KAAK,CAAC,qCAAqC,GAAG,kBAAkB,CAAC,CAAC;YACtE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,CAAC,CAAC;QAEF,IAAI;YACF,IAAI,CAAC,cAAc,GAAG,CACpB,MAAM,IAAA,eAAK,EAAC;gBACV,GAAG;gBACH,YAAY,EAAE,QAAQ;gBACtB,OAAO,EAAE,aAAa;aACvB,CAAC,CACH,CAAC,IAAI,CAAC;SACR;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;SACjB;QAED,IAAI,CAAC,cAAc;aAChB,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;aACtB,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,qCAAqC;aACxD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,+CAA+C;aACnE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,mCAAmC;QAElD,MAAM,YAAY,CAAC;IACrB,CAAC;IAED;;;OAGG;IACH,IAAI;QACF,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,OAAO;SACR;QAED,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;SAClC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AAEO,kCAAW"}
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.0",
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,13 @@
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",
65
63
  "archiver": "5.3.1",
66
- "axios": "1.3.5",
64
+ "axios": "1.4.0",
67
65
  "base64-stream": "1.0.0",
68
66
  "bluebird": "3.7.2",
69
67
  "bplist-creator": "0.1.1",
@@ -71,7 +69,6 @@
71
69
  "form-data": "4.0.0",
72
70
  "get-stream": "6.0.1",
73
71
  "glob": "8.1.0",
74
- "jimp": "0.22.7",
75
72
  "jsftp": "2.1.3",
76
73
  "klaw": "4.1.0",
77
74
  "lockfile": "1.0.4",
@@ -85,19 +82,18 @@
85
82
  "pkg-dir": "5.0.0",
86
83
  "plist": "3.0.6",
87
84
  "pluralize": "8.0.0",
88
- "pngjs": "7.0.0",
89
85
  "read-pkg": "5.2.0",
90
86
  "resolve-from": "5.0.0",
91
- "rimraf": "3.0.2",
92
87
  "sanitize-filename": "1.6.3",
93
- "semver": "7.4.0",
88
+ "semver": "7.5.0",
89
+ "sharp": "0.32.1",
94
90
  "shell-quote": "1.8.1",
95
91
  "source-map-support": "0.5.21",
96
92
  "supports-color": "8.1.1",
97
93
  "teen_process": "2.0.2",
98
- "type-fest": "3.8.0",
94
+ "type-fest": "3.10.0",
99
95
  "uuid": "9.0.0",
100
- "which": "3.0.0",
96
+ "which": "3.0.1",
101
97
  "yauzl": "2.10.0"
102
98
  },
103
99
  "engines": {
@@ -107,7 +103,7 @@
107
103
  "publishConfig": {
108
104
  "access": "public"
109
105
  },
110
- "gitHead": "11406e487927a50964c58d22f59ecd7ed2d0f314",
106
+ "gitHead": "6b245534c213f3b8d6405515aee1e89133295098",
111
107
  "typedoc": {
112
108
  "entryPoint": "./lib/index.js"
113
109
  }