appium-uiautomator2-driver 8.5.1 → 8.5.2
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/CHANGELOG.md +6 -0
- package/build/lib/commands/screenshot.d.ts.map +1 -1
- package/build/lib/commands/screenshot.js +2 -3
- package/build/lib/commands/screenshot.js.map +1 -1
- package/build/lib/utils/image.d.ts +18 -0
- package/build/lib/utils/image.d.ts.map +1 -0
- package/build/lib/utils/image.js +35 -0
- package/build/lib/utils/image.js.map +1 -0
- package/build/lib/utils/index.d.ts +1 -0
- package/build/lib/utils/index.d.ts.map +1 -1
- package/build/lib/utils/index.js +1 -0
- package/build/lib/utils/index.js.map +1 -1
- package/build/lib/utils/mjpeg.d.ts.map +1 -1
- package/build/lib/utils/mjpeg.js +1 -16
- package/build/lib/utils/mjpeg.js.map +1 -1
- package/lib/commands/screenshot.ts +2 -3
- package/lib/utils/image.ts +41 -0
- package/lib/utils/index.ts +1 -0
- package/lib/utils/mjpeg.ts +2 -21
- package/npm-shrinkwrap.json +5 -5
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
## [8.5.2](https://github.com/appium/appium-uiautomator2-driver/compare/v8.5.1...v8.5.2) (2026-09-01)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
* stop using deprecated appium/support imageUtil, rely on local sharp ([#1040](https://github.com/appium/appium-uiautomator2-driver/issues/1040)) ([56980b3](https://github.com/appium/appium-uiautomator2-driver/commit/56980b39635333e2d4b883d4457f8bbbbd9e905e))
|
|
6
|
+
|
|
1
7
|
## [8.5.1](https://github.com/appium/appium-uiautomator2-driver/compare/v8.5.0...v8.5.1) (2026-09-01)
|
|
2
8
|
|
|
3
9
|
### Miscellaneous Chores
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screenshot.d.ts","sourceRoot":"","sources":["../../../lib/commands/screenshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"screenshot.d.ts","sourceRoot":"","sources":["../../../lib/commands/screenshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAEhD,OAAO,KAAK,EAAC,yBAAyB,EAAC,MAAM,cAAc,CAAC;AAE5D,OAAO,KAAK,EAAC,UAAU,EAAC,MAAM,YAAY,CAAC;AAO3C;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC,CA2BrG;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC,CAE/F;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC,CAI5F;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,yBAAyB,GAAG,OAAO,CAAC,MAAM,CAAC,CAYpF;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,yBAAyB,EAC/B,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,GAC1B,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAuCnC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { isEmpty } from '../utils/index.js';
|
|
1
|
+
import { cropBase64Image, isEmpty } from '../utils/index.js';
|
|
3
2
|
// Matches SurfaceFlinger output format:
|
|
4
3
|
// Physical: Display 4619827259835644672 (HWC display 0): port=0 pnpId=GGL displayName="EMU_display_0"
|
|
5
4
|
// Virtual: Display 11529215049243506835 (Virtual display): displayName="Emulator 2D Display" uniqueId="..."
|
|
@@ -42,7 +41,7 @@ export async function mobileViewportScreenshot() {
|
|
|
42
41
|
export async function getViewportScreenshot() {
|
|
43
42
|
const screenshot = await this.getScreenshot();
|
|
44
43
|
const rect = await this.getViewPortRect();
|
|
45
|
-
return await
|
|
44
|
+
return await cropBase64Image(screenshot, rect);
|
|
46
45
|
}
|
|
47
46
|
/**
|
|
48
47
|
* Gets a screenshot of the current screen
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../../../lib/commands/screenshot.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"screenshot.js","sourceRoot":"","sources":["../../../lib/commands/screenshot.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type sharp from 'sharp';
|
|
2
|
+
import type { Region } from 'sharp';
|
|
3
|
+
/**
|
|
4
|
+
* Lazily imports the optional `sharp` dependency.
|
|
5
|
+
*
|
|
6
|
+
* @returns The sharp module for image processing
|
|
7
|
+
*/
|
|
8
|
+
export declare function requireSharp(): Promise<typeof sharp>;
|
|
9
|
+
/**
|
|
10
|
+
* Crops the image by the given rectangle (base64 string in, base64 string out).
|
|
11
|
+
*
|
|
12
|
+
* @param base64Image The string with base64 encoded image.
|
|
13
|
+
* Supports all image formats natively supported by Sharp library.
|
|
14
|
+
* @param region The selected region of the image
|
|
15
|
+
* @returns base64 encoded string of the cropped image
|
|
16
|
+
*/
|
|
17
|
+
export declare function cropBase64Image(base64Image: string, region: Region): Promise<string>;
|
|
18
|
+
//# sourceMappingURL=image.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image.d.ts","sourceRoot":"","sources":["../../../lib/utils/image.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,OAAO,CAAC;AAIlC;;;;GAIG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,OAAO,KAAK,CAAC,CAgB1D;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAI1F"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
let sharpModule = null;
|
|
2
|
+
/**
|
|
3
|
+
* Lazily imports the optional `sharp` dependency.
|
|
4
|
+
*
|
|
5
|
+
* @returns The sharp module for image processing
|
|
6
|
+
*/
|
|
7
|
+
export async function requireSharp() {
|
|
8
|
+
if (sharpModule) {
|
|
9
|
+
return sharpModule;
|
|
10
|
+
}
|
|
11
|
+
try {
|
|
12
|
+
sharpModule = (await import('sharp')).default;
|
|
13
|
+
return sharpModule;
|
|
14
|
+
}
|
|
15
|
+
catch (err) {
|
|
16
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
17
|
+
throw new Error(`Cannot load the 'sharp' module needed for image processing. ` +
|
|
18
|
+
`Consider visiting https://sharp.pixelplumbing.com/install for troubleshooting. ` +
|
|
19
|
+
`Original error: ${message}`, { cause: err });
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Crops the image by the given rectangle (base64 string in, base64 string out).
|
|
24
|
+
*
|
|
25
|
+
* @param base64Image The string with base64 encoded image.
|
|
26
|
+
* Supports all image formats natively supported by Sharp library.
|
|
27
|
+
* @param region The selected region of the image
|
|
28
|
+
* @returns base64 encoded string of the cropped image
|
|
29
|
+
*/
|
|
30
|
+
export async function cropBase64Image(base64Image, region) {
|
|
31
|
+
const sharpInstance = await requireSharp();
|
|
32
|
+
const buf = await sharpInstance(Buffer.from(base64Image, 'base64')).extract(region).toBuffer();
|
|
33
|
+
return buf.toString('base64');
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=image.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image.js","sourceRoot":"","sources":["../../../lib/utils/image.ts"],"names":[],"mappings":"AAGA,IAAI,WAAW,GAAwB,IAAI,CAAC;AAE5C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,IAAI,CAAC;QACH,WAAW,GAAG,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QAC9C,OAAO,WAAW,CAAC;IACrB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,MAAM,IAAI,KAAK,CACb,8DAA8D;YAC5D,iFAAiF;YACjF,mBAAmB,OAAO,EAAE,EAC9B,EAAC,KAAK,EAAE,GAAG,EAAC,CACb,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,WAAmB,EAAE,MAAc;IACvE,MAAM,aAAa,GAAG,MAAM,YAAY,EAAE,CAAC;IAC3C,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC/F,OAAO,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,UAAU,CAAC;AACjC,OAAO,EAAC,YAAY,EAAE,OAAO,EAAC,MAAM,WAAW,CAAC;AAChD,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AACrC,OAAO,EAAC,WAAW,EAAC,MAAM,YAAY,CAAC;AACvC,OAAO,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,UAAU,CAAC;AACjC,OAAO,EAAC,eAAe,EAAE,YAAY,EAAC,MAAM,YAAY,CAAC;AACzD,OAAO,EAAC,YAAY,EAAE,OAAO,EAAC,MAAM,WAAW,CAAC;AAChD,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AACrC,OAAO,EAAC,WAAW,EAAC,MAAM,YAAY,CAAC;AACvC,OAAO,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC"}
|
package/build/lib/utils/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,UAAU,CAAC;AACjC,OAAO,EAAC,YAAY,EAAE,OAAO,EAAC,MAAM,WAAW,CAAC;AAChD,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AACrC,OAAO,EAAC,WAAW,EAAC,MAAM,YAAY,CAAC;AACvC,OAAO,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../lib/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,UAAU,CAAC;AACjC,OAAO,EAAC,eAAe,EAAE,YAAY,EAAC,MAAM,YAAY,CAAC;AACzD,OAAO,EAAC,YAAY,EAAE,OAAO,EAAC,MAAM,WAAW,CAAC;AAChD,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;AACrC,OAAO,EAAC,WAAW,EAAC,MAAM,YAAY,CAAC;AACvC,OAAO,EAAC,cAAc,EAAC,MAAM,aAAa,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mjpeg.d.ts","sourceRoot":"","sources":["../../../lib/utils/mjpeg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAiB,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAC,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"mjpeg.d.ts","sourceRoot":"","sources":["../../../lib/utils/mjpeg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,QAAQ,EAAiB,KAAK,iBAAiB,EAAE,KAAK,eAAe,EAAC,MAAM,aAAa,CAAC;AAc7G;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,SAAS;IAC7C,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,SAAS,CAAS;IAGjB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAehG,OAAO,CAAC,UAAU;IAsBlB,OAAO,CAAC,WAAW;IAqBnB,OAAO,CAAC,SAAS;CAelB;AAID;;;GAGG;AACH,qBAAa,WAAY,SAAQ,QAAQ;IACvC,QAAQ,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;IAC5C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,oBAAoB,CAA6B;IACzD,OAAO,CAAC,oBAAoB,CAAuC;IACnE,OAAO,CAAC,cAAc,CAAyB;IAC/C,OAAO,CAAC,QAAQ,CAAiC;IAEjD;;;;OAIG;gBACS,QAAQ,EAAE,MAAM,EAAE,YAAY,GAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAW,EAAE,OAAO,GAAE,eAAoB;IAOtG,IAAI,eAAe,IAAI,MAAM,GAAG,IAAI,CAGnC;IAEK,YAAY,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IActC,kBAAkB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAKlD,KAAK,IAAI,IAAI;IASP,KAAK,CAAC,aAAa,SAA4B,GAAG,OAAO,CAAC,IAAI,CAAC;IA8ErE,IAAI,IAAI,IAAI;IAcH,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI;CAUnH"}
|
package/build/lib/utils/mjpeg.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Transform, Writable } from 'node:stream';
|
|
2
2
|
import { logger } from 'appium/support.js';
|
|
3
3
|
import axios from 'axios';
|
|
4
|
+
import { requireSharp } from './image.js';
|
|
4
5
|
const log = logger.getLogger('MJPEG');
|
|
5
6
|
const DEFAULT_SERVER_TIMEOUT_MS = 10000;
|
|
6
7
|
const JPEG_SOI = Buffer.from([0xff, 0xd8]);
|
|
@@ -85,22 +86,6 @@ export class MjpegFrameParser extends Transform {
|
|
|
85
86
|
this.bytesWritten = 0;
|
|
86
87
|
}
|
|
87
88
|
}
|
|
88
|
-
let sharpModule = null;
|
|
89
|
-
async function requireSharp() {
|
|
90
|
-
if (sharpModule) {
|
|
91
|
-
return sharpModule;
|
|
92
|
-
}
|
|
93
|
-
try {
|
|
94
|
-
sharpModule = (await import('sharp')).default;
|
|
95
|
-
return sharpModule;
|
|
96
|
-
}
|
|
97
|
-
catch (err) {
|
|
98
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
99
|
-
throw new Error(`Cannot load the 'sharp' module needed for MJPEG frame processing. ` +
|
|
100
|
-
`Consider visiting https://sharp.pixelplumbing.com/install for troubleshooting. ` +
|
|
101
|
-
`Original error: ${message}`, { cause: err });
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
89
|
const noop = () => { };
|
|
105
90
|
/**
|
|
106
91
|
* Connects to an MJPEG-over-HTTP stream and keeps track of the last JPEG frame received,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mjpeg.js","sourceRoot":"","sources":["../../../lib/utils/mjpeg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAE,QAAQ,EAA8D,MAAM,aAAa,CAAC;AAE7G,OAAO,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAC;AACzC,OAAO,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"mjpeg.js","sourceRoot":"","sources":["../../../lib/utils/mjpeg.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import type {StringRecord} from '@appium/types';
|
|
2
|
-
import {imageUtil} from 'appium/support.js';
|
|
3
2
|
|
|
4
3
|
import type {AndroidUiautomator2Driver} from '../driver.js';
|
|
5
|
-
import {isEmpty} from '../utils/index.js';
|
|
4
|
+
import {cropBase64Image, isEmpty} from '../utils/index.js';
|
|
6
5
|
import type {Screenshot} from './types.js';
|
|
7
6
|
|
|
8
7
|
// Matches SurfaceFlinger output format:
|
|
@@ -57,7 +56,7 @@ export async function mobileViewportScreenshot(this: AndroidUiautomator2Driver):
|
|
|
57
56
|
export async function getViewportScreenshot(this: AndroidUiautomator2Driver): Promise<string> {
|
|
58
57
|
const screenshot = await this.getScreenshot();
|
|
59
58
|
const rect = await this.getViewPortRect();
|
|
60
|
-
return await
|
|
59
|
+
return await cropBase64Image(screenshot, rect);
|
|
61
60
|
}
|
|
62
61
|
|
|
63
62
|
/**
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type sharp from 'sharp';
|
|
2
|
+
import type {Region} from 'sharp';
|
|
3
|
+
|
|
4
|
+
let sharpModule: typeof sharp | null = null;
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Lazily imports the optional `sharp` dependency.
|
|
8
|
+
*
|
|
9
|
+
* @returns The sharp module for image processing
|
|
10
|
+
*/
|
|
11
|
+
export async function requireSharp(): Promise<typeof sharp> {
|
|
12
|
+
if (sharpModule) {
|
|
13
|
+
return sharpModule;
|
|
14
|
+
}
|
|
15
|
+
try {
|
|
16
|
+
sharpModule = (await import('sharp')).default;
|
|
17
|
+
return sharpModule;
|
|
18
|
+
} catch (err) {
|
|
19
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
20
|
+
throw new Error(
|
|
21
|
+
`Cannot load the 'sharp' module needed for image processing. ` +
|
|
22
|
+
`Consider visiting https://sharp.pixelplumbing.com/install for troubleshooting. ` +
|
|
23
|
+
`Original error: ${message}`,
|
|
24
|
+
{cause: err},
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Crops the image by the given rectangle (base64 string in, base64 string out).
|
|
31
|
+
*
|
|
32
|
+
* @param base64Image The string with base64 encoded image.
|
|
33
|
+
* Supports all image formats natively supported by Sharp library.
|
|
34
|
+
* @param region The selected region of the image
|
|
35
|
+
* @returns base64 encoded string of the cropped image
|
|
36
|
+
*/
|
|
37
|
+
export async function cropBase64Image(base64Image: string, region: Region): Promise<string> {
|
|
38
|
+
const sharpInstance = await requireSharp();
|
|
39
|
+
const buf = await sharpInstance(Buffer.from(base64Image, 'base64')).extract(region).toBuffer();
|
|
40
|
+
return buf.toString('base64');
|
|
41
|
+
}
|
package/lib/utils/index.ts
CHANGED
package/lib/utils/mjpeg.ts
CHANGED
|
@@ -2,7 +2,8 @@ import {Transform, Writable, type Readable, type TransformCallback, type Writabl
|
|
|
2
2
|
|
|
3
3
|
import {logger} from 'appium/support.js';
|
|
4
4
|
import axios from 'axios';
|
|
5
|
-
|
|
5
|
+
|
|
6
|
+
import {requireSharp} from './image.js';
|
|
6
7
|
|
|
7
8
|
const log = logger.getLogger('MJPEG');
|
|
8
9
|
|
|
@@ -97,26 +98,6 @@ export class MjpegFrameParser extends Transform {
|
|
|
97
98
|
}
|
|
98
99
|
}
|
|
99
100
|
|
|
100
|
-
let sharpModule: typeof sharp | null = null;
|
|
101
|
-
|
|
102
|
-
async function requireSharp(): Promise<typeof sharp> {
|
|
103
|
-
if (sharpModule) {
|
|
104
|
-
return sharpModule;
|
|
105
|
-
}
|
|
106
|
-
try {
|
|
107
|
-
sharpModule = (await import('sharp')).default;
|
|
108
|
-
return sharpModule;
|
|
109
|
-
} catch (err) {
|
|
110
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
111
|
-
throw new Error(
|
|
112
|
-
`Cannot load the 'sharp' module needed for MJPEG frame processing. ` +
|
|
113
|
-
`Consider visiting https://sharp.pixelplumbing.com/install for troubleshooting. ` +
|
|
114
|
-
`Original error: ${message}`,
|
|
115
|
-
{cause: err},
|
|
116
|
-
);
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
|
|
120
101
|
const noop = () => {};
|
|
121
102
|
|
|
122
103
|
/**
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "appium-uiautomator2-driver",
|
|
3
|
-
"version": "8.5.
|
|
3
|
+
"version": "8.5.2",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "appium-uiautomator2-driver",
|
|
9
|
-
"version": "8.5.
|
|
9
|
+
"version": "8.5.2",
|
|
10
10
|
"license": "Apache-2.0",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@appium/css-locator-to-native": "^1.0.1",
|
|
@@ -381,9 +381,9 @@
|
|
|
381
381
|
}
|
|
382
382
|
},
|
|
383
383
|
"node_modules/appium-adb": {
|
|
384
|
-
"version": "16.0.
|
|
385
|
-
"resolved": "https://registry.npmjs.org/appium-adb/-/appium-adb-16.0.
|
|
386
|
-
"integrity": "sha512-
|
|
384
|
+
"version": "16.0.5",
|
|
385
|
+
"resolved": "https://registry.npmjs.org/appium-adb/-/appium-adb-16.0.5.tgz",
|
|
386
|
+
"integrity": "sha512-WFsVo2OXfvFDLzI4+gG7Ps9s3EgJMtfTZBI3UsozhLPkP1cdMlHo1AtTcl+vTTVqZTIXBmIgO4MZ0uVFyGlgAQ==",
|
|
387
387
|
"license": "Apache-2.0",
|
|
388
388
|
"dependencies": {
|
|
389
389
|
"@appium/support": "^7.2.6",
|