appium-chromedriver 8.4.21 → 9.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/CHANGELOG.md +16 -0
- package/build/lib/chromedriver.d.ts +4 -4
- package/build/lib/chromedriver.d.ts.map +1 -1
- package/build/lib/chromedriver.js +42 -49
- package/build/lib/chromedriver.js.map +1 -1
- package/build/lib/commands/binary.d.ts +2 -2
- package/build/lib/commands/binary.d.ts.map +1 -1
- package/build/lib/commands/binary.js +29 -72
- package/build/lib/commands/binary.js.map +1 -1
- package/build/lib/commands/process.d.ts +1 -1
- package/build/lib/commands/process.d.ts.map +1 -1
- package/build/lib/commands/process.js +14 -20
- package/build/lib/commands/process.js.map +1 -1
- package/build/lib/commands/session.d.ts +1 -1
- package/build/lib/commands/session.d.ts.map +1 -1
- package/build/lib/commands/session.js +25 -66
- package/build/lib/commands/session.js.map +1 -1
- package/build/lib/commands/types.d.ts +2 -2
- package/build/lib/commands/types.d.ts.map +1 -1
- package/build/lib/commands/types.js +1 -2
- package/build/lib/commands/version.d.ts +1 -1
- package/build/lib/commands/version.d.ts.map +1 -1
- package/build/lib/commands/version.js +6 -42
- package/build/lib/commands/version.js.map +1 -1
- package/build/lib/constants.js +10 -13
- package/build/lib/constants.js.map +1 -1
- package/build/lib/index.d.ts +3 -3
- package/build/lib/index.d.ts.map +1 -1
- package/build/lib/index.js +4 -8
- package/build/lib/index.js.map +1 -1
- package/build/lib/storage-client/chromelabs.d.ts +1 -1
- package/build/lib/storage-client/chromelabs.d.ts.map +1 -1
- package/build/lib/storage-client/chromelabs.js +11 -51
- package/build/lib/storage-client/chromelabs.js.map +1 -1
- package/build/lib/storage-client/googleapis.d.ts +1 -1
- package/build/lib/storage-client/googleapis.d.ts.map +1 -1
- package/build/lib/storage-client/googleapis.js +22 -30
- package/build/lib/storage-client/googleapis.js.map +1 -1
- package/build/lib/storage-client/storage-client.d.ts +1 -1
- package/build/lib/storage-client/storage-client.d.ts.map +1 -1
- package/build/lib/storage-client/storage-client.js +65 -105
- package/build/lib/storage-client/storage-client.js.map +1 -1
- package/build/lib/types.js +1 -2
- package/build/lib/utils.d.ts +2 -2
- package/build/lib/utils.d.ts.map +1 -1
- package/build/lib/utils.js +41 -52
- package/build/lib/utils.js.map +1 -1
- package/config/mapping.json +1 -0
- package/lib/chromedriver.ts +8 -8
- package/lib/commands/binary.ts +3 -3
- package/lib/commands/process.ts +2 -2
- package/lib/commands/session.ts +3 -3
- package/lib/commands/types.ts +2 -2
- package/lib/commands/version.ts +2 -2
- package/lib/index.ts +3 -3
- package/lib/storage-client/chromelabs.ts +2 -2
- package/lib/storage-client/googleapis.ts +9 -3
- package/lib/storage-client/storage-client.ts +5 -5
- package/lib/utils.ts +7 -5
- package/package.json +12 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../../lib/commands/process.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"process.js","sourceRoot":"","sources":["../../../lib/commands/process.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PROTOCOLS } from '@appium/base-driver';
|
|
2
|
-
import type { ChromedriverCommandContext } from './types';
|
|
2
|
+
import type { ChromedriverCommandContext } from './types.js';
|
|
3
3
|
export type SessionCapabilities = Record<string, any>;
|
|
4
4
|
/**
|
|
5
5
|
* Converts a capability name to W3C format by adding the 'goog:' prefix if needed.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../lib/commands/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAgB,MAAM,qBAAqB,CAAC;AAK7D,OAAO,KAAK,EAAC,0BAA0B,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../lib/commands/session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAgB,MAAM,qBAAqB,CAAC;AAK7D,OAAO,KAAK,EAAC,0BAA0B,EAAC,MAAM,YAAY,CAAC;AAK3D,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEtD;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAIpD;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,YAAK,EACjC,UAAU,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,GAAG,GACjB,GAAG,CAOL;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,YAAY,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAIzF;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,0BAA0B,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAgBjG;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,0BAA0B,GAAG,MAAM,OAAO,SAAS,CAkCrF;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,0BAA0B,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAIjF"}
|
|
@@ -1,63 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.toW3cCapName = toW3cCapName;
|
|
37
|
-
exports.getCapValue = getCapValue;
|
|
38
|
-
exports.toW3cCapNames = toW3cCapNames;
|
|
39
|
-
exports.startSession = startSession;
|
|
40
|
-
exports.syncProtocol = syncProtocol;
|
|
41
|
-
exports.changeState = changeState;
|
|
42
|
-
const base_driver_1 = require("@appium/base-driver");
|
|
43
|
-
const support_1 = require("@appium/support");
|
|
44
|
-
const utils_1 = require("../utils");
|
|
45
|
-
const constants_1 = require("../constants");
|
|
46
|
-
const semver = __importStar(require("semver"));
|
|
1
|
+
import { PROTOCOLS, isStandardCap } from '@appium/base-driver';
|
|
2
|
+
import { util } from '@appium/support';
|
|
3
|
+
import { generateLogPrefix } from '../utils.js';
|
|
4
|
+
import { CHROMEDRIVER_EVENTS, CHROMEDRIVER_STATES } from '../constants.js';
|
|
5
|
+
import * as semver from 'semver';
|
|
47
6
|
const MIN_CD_VERSION_WITH_W3C_SUPPORT = 75;
|
|
48
7
|
const W3C_PREFIX = 'goog:';
|
|
49
8
|
/**
|
|
50
9
|
* Converts a capability name to W3C format by adding the 'goog:' prefix if needed.
|
|
51
10
|
*/
|
|
52
|
-
function toW3cCapName(capName) {
|
|
53
|
-
return typeof capName === 'string' && !capName.includes(':') && !
|
|
11
|
+
export function toW3cCapName(capName) {
|
|
12
|
+
return typeof capName === 'string' && !capName.includes(':') && !isStandardCap(capName)
|
|
54
13
|
? `${W3C_PREFIX}${capName}`
|
|
55
14
|
: capName;
|
|
56
15
|
}
|
|
57
16
|
/**
|
|
58
17
|
* Gets a capability value from a capabilities object, handling both standard and W3C format names.
|
|
59
18
|
*/
|
|
60
|
-
function getCapValue(allCaps = {}, rawCapName, defaultValue) {
|
|
19
|
+
export function getCapValue(allCaps = {}, rawCapName, defaultValue) {
|
|
61
20
|
for (const [capName, capValue] of Object.entries(allCaps)) {
|
|
62
21
|
if (toW3cCapName(capName) === toW3cCapName(rawCapName)) {
|
|
63
22
|
return capValue;
|
|
@@ -68,63 +27,63 @@ function getCapValue(allCaps = {}, rawCapName, defaultValue) {
|
|
|
68
27
|
/**
|
|
69
28
|
* Converts all capability names in an object to W3C format.
|
|
70
29
|
*/
|
|
71
|
-
function toW3cCapNames(originalCaps = {}) {
|
|
30
|
+
export function toW3cCapNames(originalCaps = {}) {
|
|
72
31
|
return Object.fromEntries(Object.entries(originalCaps).map(([key, value]) => [toW3cCapName(key), value]));
|
|
73
32
|
}
|
|
74
33
|
/**
|
|
75
34
|
* Creates a new Chromedriver session using the negotiated downstream protocol.
|
|
76
35
|
*/
|
|
77
|
-
async function startSession() {
|
|
78
|
-
const sessionCaps = this._desiredProtocol ===
|
|
36
|
+
export async function startSession() {
|
|
37
|
+
const sessionCaps = this._desiredProtocol === PROTOCOLS.W3C
|
|
79
38
|
? { capabilities: { alwaysMatch: toW3cCapNames(this.capabilities) } }
|
|
80
39
|
: { desiredCapabilities: this.capabilities };
|
|
81
40
|
this.log.info(`Starting ${this._desiredProtocol} Chromedriver session with capabilities: ` +
|
|
82
41
|
JSON.stringify(sessionCaps, null, 2));
|
|
83
42
|
const response = (await this.jwproxy.command('/session', 'POST', sessionCaps));
|
|
84
|
-
this.log.prefix =
|
|
85
|
-
changeState.call(this,
|
|
43
|
+
this.log.prefix = generateLogPrefix(this, this.jwproxy.sessionId);
|
|
44
|
+
changeState.call(this, CHROMEDRIVER_STATES.ONLINE);
|
|
86
45
|
return response?.capabilities ?? response;
|
|
87
46
|
}
|
|
88
47
|
/**
|
|
89
48
|
* Chooses W3C or MJSONWP protocol based on driver/capability constraints.
|
|
90
49
|
*/
|
|
91
|
-
function syncProtocol() {
|
|
50
|
+
export function syncProtocol() {
|
|
92
51
|
if (this.driverVersion) {
|
|
93
52
|
const coercedVersion = semver.coerce(this.driverVersion);
|
|
94
53
|
if (!coercedVersion || coercedVersion.major < MIN_CD_VERSION_WITH_W3C_SUPPORT) {
|
|
95
|
-
this.log.info(`The ChromeDriver v. ${this.driverVersion} does not fully support ${
|
|
96
|
-
`Defaulting to ${
|
|
97
|
-
this._desiredProtocol =
|
|
54
|
+
this.log.info(`The ChromeDriver v. ${this.driverVersion} does not fully support ${PROTOCOLS.W3C} protocol. ` +
|
|
55
|
+
`Defaulting to ${PROTOCOLS.MJSONWP}`);
|
|
56
|
+
this._desiredProtocol = PROTOCOLS.MJSONWP;
|
|
98
57
|
return this._desiredProtocol;
|
|
99
58
|
}
|
|
100
59
|
}
|
|
101
60
|
const statusMsg = this._onlineStatus?.message;
|
|
102
61
|
const isOperaDriver = typeof statusMsg === 'string' && statusMsg.includes('OperaDriver');
|
|
103
62
|
const chromeOptions = getCapValue(this.capabilities, 'chromeOptions');
|
|
104
|
-
if (
|
|
105
|
-
this.log.info(`The ChromeDriver v. ${this.driverVersion} supports ${
|
|
106
|
-
`but ${
|
|
107
|
-
this._desiredProtocol =
|
|
63
|
+
if (util.isPlainObject(chromeOptions) && chromeOptions.w3c === false) {
|
|
64
|
+
this.log.info(`The ChromeDriver v. ${this.driverVersion} supports ${PROTOCOLS.W3C} protocol, ` +
|
|
65
|
+
`but ${PROTOCOLS.MJSONWP} one has been explicitly requested`);
|
|
66
|
+
this._desiredProtocol = PROTOCOLS.MJSONWP;
|
|
108
67
|
return this._desiredProtocol;
|
|
109
68
|
}
|
|
110
69
|
else if (isOperaDriver) {
|
|
111
70
|
// OperaDriver requires explicit W3C request or it falls back to JWP.
|
|
112
|
-
if (
|
|
71
|
+
if (util.isPlainObject(chromeOptions)) {
|
|
113
72
|
chromeOptions.w3c = true;
|
|
114
73
|
}
|
|
115
74
|
else {
|
|
116
75
|
this.capabilities[toW3cCapName('chromeOptions')] = { w3c: true };
|
|
117
76
|
}
|
|
118
77
|
}
|
|
119
|
-
this._desiredProtocol =
|
|
78
|
+
this._desiredProtocol = PROTOCOLS.W3C;
|
|
120
79
|
return this._desiredProtocol;
|
|
121
80
|
}
|
|
122
81
|
/**
|
|
123
82
|
* Updates driver state and emits state-change event payload.
|
|
124
83
|
*/
|
|
125
|
-
function changeState(state) {
|
|
84
|
+
export function changeState(state) {
|
|
126
85
|
this.state = state;
|
|
127
86
|
this.log.debug(`Changed state to '${state}'`);
|
|
128
|
-
this.emit(
|
|
87
|
+
this.emit(CHROMEDRIVER_EVENTS.CHANGED, { state });
|
|
129
88
|
}
|
|
130
89
|
//# sourceMappingURL=session.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../lib/commands/session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../lib/commands/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,8 @@ import { PROTOCOLS, type JWProxy } from '@appium/base-driver';
|
|
|
2
2
|
import type * as TeenProcess from 'teen_process';
|
|
3
3
|
import type { ADB } from 'appium-adb';
|
|
4
4
|
import type { AppiumLogger } from '@appium/types';
|
|
5
|
-
import type { ChromedriverOpts } from '../types';
|
|
6
|
-
import type { ChromedriverStorageClient } from '../storage-client/storage-client';
|
|
5
|
+
import type { ChromedriverOpts } from '../types.js';
|
|
6
|
+
import type { ChromedriverStorageClient } from '../storage-client/storage-client.js';
|
|
7
7
|
import type { EventEmitter } from 'node:events';
|
|
8
8
|
export interface ChromedriverCommandContext extends EventEmitter {
|
|
9
9
|
state: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../lib/commands/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,SAAS,EAAE,KAAK,OAAO,EAAC,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,KAAK,WAAW,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../lib/commands/types.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,SAAS,EAAE,KAAK,OAAO,EAAC,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,KAAK,WAAW,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAC,GAAG,EAAC,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,eAAe,CAAC;AAChD,OAAO,KAAK,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAC,yBAAyB,EAAC,MAAM,qCAAqC,CAAC;AACnF,OAAO,KAAK,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAE9C,MAAM,WAAW,0BAA2B,SAAQ,YAAY;IAC9D,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACtC,aAAa,EAAE,yBAAyB,GAAG,IAAI,CAAC;IAChD,SAAS,EAAE,OAAO,WAAW,CAAC,IAAI,CAAC;IACnC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IAC1C,gBAAgB,EAAE,MAAM,OAAO,SAAS,GAAG,IAAI,CAAC;IAChD,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,YAAY,CAAC;IAClB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../lib/commands/version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,OAAO,KAAK,EAAC,0BAA0B,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../lib/commands/version.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AAEjC,OAAO,KAAK,EAAC,0BAA0B,EAAC,MAAM,YAAY,CAAC;AAO3D;;GAEG;AACH,wBAAsB,gCAAgC,CACpD,IAAI,EAAE,0BAA0B,GAC/B,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,CAwB/B"}
|
|
@@ -1,41 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.getChromeVersionForAutodetection = getChromeVersionForAutodetection;
|
|
37
|
-
const semver = __importStar(require("semver"));
|
|
38
|
-
const utils_1 = require("../utils");
|
|
1
|
+
import * as semver from 'semver';
|
|
2
|
+
import { getChromeVersion } from '../utils.js';
|
|
39
3
|
const CHROME_BUNDLE_ID = 'com.android.chrome';
|
|
40
4
|
const WEBVIEW_SHELL_BUNDLE_ID = 'org.chromium.webview_shell';
|
|
41
5
|
const WEBVIEW_BUNDLE_IDS = ['com.google.android.webview', 'com.android.webview'];
|
|
@@ -43,7 +7,7 @@ const VERSION_PATTERN = /([\d.]+)/;
|
|
|
43
7
|
/**
|
|
44
8
|
* Detects Chrome/WebView version to drive Chromedriver compatibility matching.
|
|
45
9
|
*/
|
|
46
|
-
async function getChromeVersionForAutodetection() {
|
|
10
|
+
export async function getChromeVersionForAutodetection() {
|
|
47
11
|
// Prefer already-collected CDP details when available.
|
|
48
12
|
const fromDetails = tryCoerceVersionFromCdpDetails(this);
|
|
49
13
|
if (fromDetails) {
|
|
@@ -60,7 +24,7 @@ async function getChromeVersionForAutodetection() {
|
|
|
60
24
|
// If no webview package matched, check the selected/default bundle id directly.
|
|
61
25
|
if (!chromeVersion && this.adb) {
|
|
62
26
|
const bundleId = this.bundleId ?? CHROME_BUNDLE_ID;
|
|
63
|
-
chromeVersion = (await
|
|
27
|
+
chromeVersion = (await getChromeVersion(this.adb, bundleId)) ?? null;
|
|
64
28
|
}
|
|
65
29
|
return chromeVersion ? semver.coerce(chromeVersion) : null;
|
|
66
30
|
}
|
|
@@ -79,7 +43,7 @@ async function resolveChromeVersionForWebviewShell(ctx) {
|
|
|
79
43
|
return null;
|
|
80
44
|
}
|
|
81
45
|
for (const bundleId of WEBVIEW_BUNDLE_IDS) {
|
|
82
|
-
const chromeVersion = await
|
|
46
|
+
const chromeVersion = await getChromeVersion(ctx.adb, bundleId);
|
|
83
47
|
if (chromeVersion) {
|
|
84
48
|
ctx.bundleId = bundleId;
|
|
85
49
|
return semver.coerce(chromeVersion);
|
|
@@ -110,7 +74,7 @@ async function resolveChromeVersionByProbingWebviews(ctx) {
|
|
|
110
74
|
return null;
|
|
111
75
|
}
|
|
112
76
|
for (const bundleId of WEBVIEW_BUNDLE_IDS) {
|
|
113
|
-
const chromeVersion = await
|
|
77
|
+
const chromeVersion = await getChromeVersion(ctx.adb, bundleId);
|
|
114
78
|
if (chromeVersion) {
|
|
115
79
|
ctx.bundleId = bundleId;
|
|
116
80
|
return chromeVersion;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../lib/commands/version.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../../lib/commands/version.ts"],"names":[],"mappings":"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"}
|
package/build/lib/constants.js
CHANGED
|
@@ -1,33 +1,30 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
exports.CHROMEDRIVER_STATES = exports.CHROMEDRIVER_EVENTS = exports.APPLE_ARM_SUFFIXES = exports.CPU = exports.ARCH = exports.OS = exports.CHROMELABS_URL = exports.USER_AGENT = exports.GOOGLEAPIS_CDN = exports.STORAGE_REQ_TIMEOUT_MS = void 0;
|
|
4
|
-
exports.STORAGE_REQ_TIMEOUT_MS = 15000;
|
|
5
|
-
exports.GOOGLEAPIS_CDN = process.env.npm_config_chromedriver_cdnurl ||
|
|
1
|
+
export const STORAGE_REQ_TIMEOUT_MS = 15000;
|
|
2
|
+
export const GOOGLEAPIS_CDN = process.env.npm_config_chromedriver_cdnurl ||
|
|
6
3
|
process.env.CHROMEDRIVER_CDNURL ||
|
|
7
4
|
'https://chromedriver.storage.googleapis.com';
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
export const USER_AGENT = 'appium';
|
|
6
|
+
export const CHROMELABS_URL = process.env.npm_config_chromelabs_url ||
|
|
10
7
|
process.env.CHROMELABS_URL ||
|
|
11
8
|
'https://googlechromelabs.github.io';
|
|
12
|
-
|
|
9
|
+
export const OS = {
|
|
13
10
|
LINUX: 'linux',
|
|
14
11
|
WINDOWS: 'win',
|
|
15
12
|
MAC: 'mac',
|
|
16
13
|
};
|
|
17
|
-
|
|
14
|
+
export const ARCH = {
|
|
18
15
|
X64: '64',
|
|
19
16
|
X86: '32',
|
|
20
17
|
};
|
|
21
|
-
|
|
18
|
+
export const CPU = {
|
|
22
19
|
INTEL: 'intel',
|
|
23
20
|
ARM: 'arm',
|
|
24
21
|
};
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
export const APPLE_ARM_SUFFIXES = ['64_m1', '_arm64'];
|
|
23
|
+
export const CHROMEDRIVER_EVENTS = {
|
|
27
24
|
ERROR: 'chromedriver_error',
|
|
28
25
|
CHANGED: 'stateChanged',
|
|
29
26
|
};
|
|
30
|
-
|
|
27
|
+
export const CHROMEDRIVER_STATES = {
|
|
31
28
|
STOPPED: 'stopped',
|
|
32
29
|
STARTING: 'starting',
|
|
33
30
|
ONLINE: 'online',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../lib/constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../lib/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,CAAC;AAC5C,MAAM,CAAC,MAAM,cAAc,GACzB,OAAO,CAAC,GAAG,CAAC,8BAA8B;IAC1C,OAAO,CAAC,GAAG,CAAC,mBAAmB;IAC/B,6CAA6C,CAAC;AAChD,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC;AACnC,MAAM,CAAC,MAAM,cAAc,GACzB,OAAO,CAAC,GAAG,CAAC,yBAAyB;IACrC,OAAO,CAAC,GAAG,CAAC,cAAc;IAC1B,oCAAoC,CAAC;AACvC,MAAM,CAAC,MAAM,EAAE,GAAG;IAChB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,KAAK;IACd,GAAG,EAAE,KAAK;CACF,CAAC;AACX,MAAM,CAAC,MAAM,IAAI,GAAG;IAClB,GAAG,EAAE,IAAI;IACT,GAAG,EAAE,IAAI;CACD,CAAC;AACX,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;CACF,CAAC;AACX,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAU,CAAC;AAE/D,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,KAAK,EAAE,oBAAoB;IAC3B,OAAO,EAAE,cAAc;CACf,CAAC;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,UAAU,EAAE,YAAY;CAChB,CAAC"}
|
package/build/lib/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Chromedriver } from './chromedriver';
|
|
2
|
-
export { ChromedriverStorageClient } from './storage-client/storage-client';
|
|
1
|
+
import { Chromedriver } from './chromedriver.js';
|
|
2
|
+
export { ChromedriverStorageClient } from './storage-client/storage-client.js';
|
|
3
3
|
export default Chromedriver;
|
|
4
4
|
export { Chromedriver };
|
|
5
|
-
export type * from './types';
|
|
5
|
+
export type * from './types.js';
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
package/build/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAC,yBAAyB,EAAC,MAAM,oCAAoC,CAAC;AAC7E,eAAe,YAAY,CAAC;AAC5B,OAAO,EAAC,YAAY,EAAC,CAAC;AACtB,mBAAmB,YAAY,CAAC"}
|
package/build/lib/index.js
CHANGED
|
@@ -1,9 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
Object.defineProperty(exports, "Chromedriver", { enumerable: true, get: function () { return chromedriver_1.Chromedriver; } });
|
|
6
|
-
var storage_client_1 = require("./storage-client/storage-client");
|
|
7
|
-
Object.defineProperty(exports, "ChromedriverStorageClient", { enumerable: true, get: function () { return storage_client_1.ChromedriverStorageClient; } });
|
|
8
|
-
exports.default = chromedriver_1.Chromedriver;
|
|
1
|
+
import { Chromedriver } from './chromedriver.js';
|
|
2
|
+
export { ChromedriverStorageClient } from './storage-client/storage-client.js';
|
|
3
|
+
export default Chromedriver;
|
|
4
|
+
export { Chromedriver };
|
|
9
5
|
//# sourceMappingURL=index.js.map
|
package/build/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAC,yBAAyB,EAAC,MAAM,oCAAoC,CAAC;AAC7E,eAAe,YAAY,CAAC;AAC5B,OAAO,EAAC,YAAY,EAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chromelabs.d.ts","sourceRoot":"","sources":["../../../lib/storage-client/chromelabs.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,0BAA0B,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"chromelabs.d.ts","sourceRoot":"","sources":["../../../lib/storage-client/chromelabs.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAC,0BAA0B,EAAC,MAAM,aAAa,CAAC;AA+B5D;;;;;;;;GAQG;AACH,wBAAgB,uCAAuC,CACrD,OAAO,EAAE,MAAM,GACd,0BAA0B,CAyF5B;AAED;;;;;;;;GAQG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAyBxE"}
|
|
@@ -1,48 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.parseKnownGoodVersionsWithDownloadsJson = parseKnownGoodVersionsWithDownloadsJson;
|
|
40
|
-
exports.parseLatestKnownGoodVersionsJson = parseLatestKnownGoodVersionsJson;
|
|
41
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
42
|
-
const support_1 = require("@appium/support");
|
|
43
|
-
const semver = __importStar(require("semver"));
|
|
44
|
-
const constants_1 = require("../constants");
|
|
45
|
-
const log = support_1.logger.getLogger('ChromedriverChromelabsStorageClient');
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { logger } from '@appium/support';
|
|
3
|
+
import * as semver from 'semver';
|
|
4
|
+
import { ARCH, CPU } from '../constants.js';
|
|
5
|
+
const log = logger.getLogger('ChromedriverChromelabsStorageClient');
|
|
46
6
|
/**
|
|
47
7
|
* Parses the output of the JSON API that retrieves Chromedriver versions
|
|
48
8
|
*
|
|
@@ -52,7 +12,7 @@ const log = support_1.logger.getLogger('ChromedriverChromelabsStorageClient');
|
|
|
52
12
|
* @returns A mapping of chromedriver entry keys to their details
|
|
53
13
|
* @throws {Error} if the JSON cannot be parsed or has an unsupported format
|
|
54
14
|
*/
|
|
55
|
-
function parseKnownGoodVersionsWithDownloadsJson(jsonStr) {
|
|
15
|
+
export function parseKnownGoodVersionsWithDownloadsJson(jsonStr) {
|
|
56
16
|
let json;
|
|
57
17
|
try {
|
|
58
18
|
json = JSON.parse(jsonStr);
|
|
@@ -119,8 +79,8 @@ function parseKnownGoodVersionsWithDownloadsJson(jsonStr) {
|
|
|
119
79
|
log.debug(`The entry '${downloadEntry.url}' does not contain valid platform name. Skipping it`);
|
|
120
80
|
continue;
|
|
121
81
|
}
|
|
122
|
-
const key = `${
|
|
123
|
-
`${
|
|
82
|
+
const key = `${path.basename(path.dirname(path.dirname(downloadEntry.url)))}/` +
|
|
83
|
+
`${path.basename(downloadEntry.url)}`;
|
|
124
84
|
mapping[key] = {
|
|
125
85
|
url: downloadEntry.url,
|
|
126
86
|
etag: null,
|
|
@@ -128,8 +88,8 @@ function parseKnownGoodVersionsWithDownloadsJson(jsonStr) {
|
|
|
128
88
|
minBrowserVersion: `${versionObj.major}`,
|
|
129
89
|
os: {
|
|
130
90
|
name: osNameMatch[0],
|
|
131
|
-
arch: downloadEntry.platform.includes(
|
|
132
|
-
cpu: downloadEntry.platform.includes(
|
|
91
|
+
arch: downloadEntry.platform.includes(ARCH.X64) ? ARCH.X64 : ARCH.X86,
|
|
92
|
+
cpu: downloadEntry.platform.includes(CPU.ARM) ? CPU.ARM : CPU.INTEL,
|
|
133
93
|
},
|
|
134
94
|
};
|
|
135
95
|
}
|
|
@@ -146,7 +106,7 @@ function parseKnownGoodVersionsWithDownloadsJson(jsonStr) {
|
|
|
146
106
|
* @returns The most recent available chromedriver version string
|
|
147
107
|
* @throws {Error} if the JSON cannot be parsed or has an unsupported format
|
|
148
108
|
*/
|
|
149
|
-
function parseLatestKnownGoodVersionsJson(jsonStr) {
|
|
109
|
+
export function parseLatestKnownGoodVersionsJson(jsonStr) {
|
|
150
110
|
let json;
|
|
151
111
|
try {
|
|
152
112
|
json = JSON.parse(jsonStr);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chromelabs.js","sourceRoot":"","sources":["../../../lib/storage-client/chromelabs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chromelabs.js","sourceRoot":"","sources":["../../../lib/storage-client/chromelabs.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AACvC,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAC,IAAI,EAAE,GAAG,EAAC,MAAM,iBAAiB,CAAC;AA8B1C,MAAM,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC,qCAAqC,CAAC,CAAC;AAEpE;;;;;;;;GAQG;AACH,MAAM,UAAU,uCAAuC,CACrD,OAAe;IAEf,IAAI,IAA2B,CAAC;IAChC,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,kDAAkD,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAC9F,EAAC,KAAK,EAAE,CAAC,EAAC,CACX,CAAC;IACJ,CAAC;IACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACH,MAAM,OAAO,GAA+B,EAAE,CAAC;IAC/C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,CAAC;QACnC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IACD,KAAK,MAAM,EAAC,OAAO,EAAE,SAAS,EAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QACjD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,CAAC;YAC5C,SAAS;QACX,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EAAC,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC;QACxD,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,SAAS;QACX,CAAC;QACD,KAAK,MAAM,aAAa,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;YACnD,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,CAAC;gBACpD,SAAS;YACX,CAAC;YACD,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC5D,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,GAAG,CAAC,KAAK,CACP,cAAc,aAAa,CAAC,GAAG,qDAAqD,CACrF,CAAC;gBACF,SAAS;YACX,CAAC;YACD,MAAM,GAAG,GACP,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;gBAClE,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC;YACxC,OAAO,CAAC,GAAG,CAAC,GAAG;gBACb,GAAG,EAAE,aAAa,CAAC,GAAG;gBACtB,IAAI,EAAE,IAAI;gBACV,OAAO;gBACP,iBAAiB,EAAE,GAAG,UAAU,CAAC,KAAK,EAAE;gBACxC,EAAE,EAAE;oBACF,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC;oBACpB,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG;oBACrE,GAAG,EAAE,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK;iBACpE;aACF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,8CAA8C,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACtF,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gCAAgC,CAAC,OAAe;IAC9D,IAAI,IAAiC,CAAC;IACtC,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,kDAAkD,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAC9F,EAAC,KAAK,EAAE,CAAC,EAAC,CACX,CAAC;IACJ,CAAC;IACD;;;;;;;;;OASG;IACH,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;QACrC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC;AACtC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"googleapis.d.ts","sourceRoot":"","sources":["../../../lib/storage-client/googleapis.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"googleapis.d.ts","sourceRoot":"","sources":["../../../lib/storage-client/googleapis.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,uBAAuB,EAEvB,0BAA0B,EAC3B,MAAM,aAAa,CAAC;AAKrB;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,IAAI,GAAG,IAAI,EACnB,SAAS,GAAE,MAAM,GAAG,IAAW,EAC/B,IAAI,GAAE,MAAM,GAAG,IAAW,GACzB,IAAI,GAAG,IAAI,GAAG,IAAI,CA2BpB;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,uBAAuB,CAWnE;AAED;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,CAC5C,GAAG,EAAE,MAAM,EACX,gBAAgB,UAAO,GACtB,OAAO,CAAC,0BAA0B,CAAC,CA6ErC"}
|