@appium/base-driver 9.7.0 → 9.8.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.
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../lib/basedriver/helpers.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../lib/basedriver/helpers.js"],"names":[],"mappings":"AA+DA;;;;GAIG;AACH,kCAHW,MAAM,YACN,MAAM,GAAC,MAAM,EAAE,GAAC,OAAO,eAAe,EAAE,mBAAmB,gBAsQrE;AAED;;;GAGG;AACH,uCAHW,MAAM,GACJ,OAAO,CAInB;AAED;;;;;;;;;GASG;AACH,oFAuBC;AAED;;;;;GAKG;AACH,oCAFW,MAAM,GAAC,aAAa,SAoB9B;AAED;;;;;;GAMG;AACH,kIAHW,MAAM,UACJ,MAAM,CAKlB;;wBA8SU,OAAO,eAAe,EAAE,aAAa;;;kBAWlC,IAAI;eACJ,OAAO;YACP,MAAM;UACN,MAAM;;;;;;;;;YAKN,MAAM;;;;YACN,OAAO,QAAQ,EAAE,QAAQ;;;;aACzB,OAAO,OAAO,EAAE,uBAAuB,GAAG,OAAO,OAAO,EAAE,oBAAoB"}
|
|
@@ -60,66 +60,6 @@ process.on('exit', () => {
|
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
});
|
|
63
|
-
/**
|
|
64
|
-
*
|
|
65
|
-
* @param {string} [envVarName]
|
|
66
|
-
* @param {number} defaultValue
|
|
67
|
-
* @returns {number}
|
|
68
|
-
*/
|
|
69
|
-
function toNaturalNumber(defaultValue, envVarName) {
|
|
70
|
-
if (!envVarName || lodash_1.default.isUndefined(process.env[envVarName])) {
|
|
71
|
-
return defaultValue;
|
|
72
|
-
}
|
|
73
|
-
const num = parseInt(`${process.env[envVarName]}`, 10);
|
|
74
|
-
return num > 0 ? num : defaultValue;
|
|
75
|
-
}
|
|
76
|
-
/**
|
|
77
|
-
* @param {string} app
|
|
78
|
-
* @param {string[]} supportedAppExtensions
|
|
79
|
-
* @returns {string}
|
|
80
|
-
*/
|
|
81
|
-
function verifyAppExtension(app, supportedAppExtensions) {
|
|
82
|
-
if (supportedAppExtensions.map(lodash_1.default.toLower).includes(lodash_1.default.toLower(path_1.default.extname(app)))) {
|
|
83
|
-
return app;
|
|
84
|
-
}
|
|
85
|
-
throw new Error(`New app path '${app}' did not have ` +
|
|
86
|
-
`${support_1.util.pluralize('extension', supportedAppExtensions.length, false)}: ` +
|
|
87
|
-
supportedAppExtensions);
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* @param {string} folderPath
|
|
91
|
-
* @returns {Promise<number>}
|
|
92
|
-
*/
|
|
93
|
-
async function calculateFolderIntegrity(folderPath) {
|
|
94
|
-
return (await support_1.fs.glob('**/*', { cwd: folderPath })).length;
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* @param {string} filePath
|
|
98
|
-
* @returns {Promise<string>}
|
|
99
|
-
*/
|
|
100
|
-
async function calculateFileIntegrity(filePath) {
|
|
101
|
-
return await support_1.fs.hash(filePath);
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* @param {string} currentPath
|
|
105
|
-
* @param {import('@appium/types').StringRecord} expectedIntegrity
|
|
106
|
-
* @returns {Promise<boolean>}
|
|
107
|
-
*/
|
|
108
|
-
async function isAppIntegrityOk(currentPath, expectedIntegrity = {}) {
|
|
109
|
-
if (!(await support_1.fs.exists(currentPath))) {
|
|
110
|
-
return false;
|
|
111
|
-
}
|
|
112
|
-
// Folder integrity check is simple:
|
|
113
|
-
// Verify the previous amount of files is not greater than the current one.
|
|
114
|
-
// We don't want to use equality comparison because of an assumption that the OS might
|
|
115
|
-
// create some unwanted service files/cached inside of that folder or its subfolders.
|
|
116
|
-
// Ofc, validating the hash sum of each file (or at least of file path) would be much
|
|
117
|
-
// more precise, but we don't need to be very precise here and also don't want to
|
|
118
|
-
// overuse RAM and have a performance drop.
|
|
119
|
-
return (await support_1.fs.stat(currentPath)).isDirectory()
|
|
120
|
-
? (await calculateFolderIntegrity(currentPath)) >= expectedIntegrity?.folder
|
|
121
|
-
: (await calculateFileIntegrity(currentPath)) === expectedIntegrity?.file;
|
|
122
|
-
}
|
|
123
63
|
/**
|
|
124
64
|
*
|
|
125
65
|
* @param {string} app
|
|
@@ -158,13 +98,14 @@ async function configureApp(app, options = /** @type {import('@appium/types').Co
|
|
|
158
98
|
maxAge: null,
|
|
159
99
|
etag: null,
|
|
160
100
|
};
|
|
161
|
-
const { protocol, pathname } =
|
|
162
|
-
const isUrl =
|
|
163
|
-
const
|
|
101
|
+
const { protocol, pathname } = parseAppLink(app);
|
|
102
|
+
const isUrl = isSupportedUrl(app);
|
|
103
|
+
const appCacheKey = toCacheKey(app);
|
|
104
|
+
const cachedAppInfo = APPLICATIONS_CACHE.get(appCacheKey);
|
|
164
105
|
if (cachedAppInfo) {
|
|
165
106
|
logger_1.default.debug(`Cached app data: ${JSON.stringify(cachedAppInfo, null, 2)}`);
|
|
166
107
|
}
|
|
167
|
-
return await APPLICATIONS_CACHE_GUARD.acquire(
|
|
108
|
+
return await APPLICATIONS_CACHE_GUARD.acquire(appCacheKey, async () => {
|
|
168
109
|
if (isUrl) {
|
|
169
110
|
// Use the app from remote URL
|
|
170
111
|
logger_1.default.info(`Using downloadable app '${newApp}'`);
|
|
@@ -206,7 +147,7 @@ async function configureApp(app, options = /** @type {import('@appium/types').Co
|
|
|
206
147
|
}
|
|
207
148
|
logger_1.default.info(`The application at '${cachedAppInfo.fullPath}' does not exist anymore ` +
|
|
208
149
|
`or its integrity has been damaged. Deleting it from the internal cache`);
|
|
209
|
-
APPLICATIONS_CACHE.delete(
|
|
150
|
+
APPLICATIONS_CACHE.delete(appCacheKey);
|
|
210
151
|
if (!stream.closed) {
|
|
211
152
|
stream.destroy();
|
|
212
153
|
}
|
|
@@ -306,7 +247,7 @@ async function configureApp(app, options = /** @type {import('@appium/types').Co
|
|
|
306
247
|
}
|
|
307
248
|
logger_1.default.info(`The application at '${fullPath}' does not exist anymore ` +
|
|
308
249
|
`or its integrity has been damaged. Deleting it from the cache`);
|
|
309
|
-
APPLICATIONS_CACHE.delete(
|
|
250
|
+
APPLICATIONS_CACHE.delete(appCacheKey);
|
|
310
251
|
}
|
|
311
252
|
const tmpRoot = await support_1.tempDir.openDir();
|
|
312
253
|
try {
|
|
@@ -337,7 +278,7 @@ async function configureApp(app, options = /** @type {import('@appium/types').Co
|
|
|
337
278
|
else {
|
|
338
279
|
integrity.file = await calculateFileIntegrity(appPathToCache);
|
|
339
280
|
}
|
|
340
|
-
APPLICATIONS_CACHE.set(
|
|
281
|
+
APPLICATIONS_CACHE.set(appCacheKey, {
|
|
341
282
|
...remoteAppProps,
|
|
342
283
|
timestamp: Date.now(),
|
|
343
284
|
packageHash,
|
|
@@ -360,12 +301,92 @@ async function configureApp(app, options = /** @type {import('@appium/types').Co
|
|
|
360
301
|
: await storeAppInCache(result.appPath);
|
|
361
302
|
}
|
|
362
303
|
verifyAppExtension(newApp, supportedAppExtensions);
|
|
363
|
-
return
|
|
304
|
+
return appCacheKey !== toCacheKey(newApp) && (packageHash || lodash_1.default.values(remoteAppProps).some(Boolean))
|
|
364
305
|
? await storeAppInCache(newApp)
|
|
365
306
|
: newApp;
|
|
366
307
|
});
|
|
367
308
|
}
|
|
368
309
|
exports.configureApp = configureApp;
|
|
310
|
+
/**
|
|
311
|
+
* @param {string} app
|
|
312
|
+
* @returns {boolean}
|
|
313
|
+
*/
|
|
314
|
+
function isPackageOrBundle(app) {
|
|
315
|
+
return /^([a-zA-Z0-9\-_]+\.[a-zA-Z0-9\-_]+)+$/.test(app);
|
|
316
|
+
}
|
|
317
|
+
exports.isPackageOrBundle = isPackageOrBundle;
|
|
318
|
+
/**
|
|
319
|
+
* Finds all instances 'firstKey' and create a duplicate with the key 'secondKey',
|
|
320
|
+
* Do the same thing in reverse. If we find 'secondKey', create a duplicate with the key 'firstKey'.
|
|
321
|
+
*
|
|
322
|
+
* This will cause keys to be overwritten if the object contains 'firstKey' and 'secondKey'.
|
|
323
|
+
|
|
324
|
+
* @param {*} input Any type of input
|
|
325
|
+
* @param {String} firstKey The first key to duplicate
|
|
326
|
+
* @param {String} secondKey The second key to duplicate
|
|
327
|
+
*/
|
|
328
|
+
function duplicateKeys(input, firstKey, secondKey) {
|
|
329
|
+
// If array provided, recursively call on all elements
|
|
330
|
+
if (lodash_1.default.isArray(input)) {
|
|
331
|
+
return input.map((item) => duplicateKeys(item, firstKey, secondKey));
|
|
332
|
+
}
|
|
333
|
+
// If object, create duplicates for keys and then recursively call on values
|
|
334
|
+
if (lodash_1.default.isPlainObject(input)) {
|
|
335
|
+
const resultObj = {};
|
|
336
|
+
for (let [key, value] of lodash_1.default.toPairs(input)) {
|
|
337
|
+
const recursivelyCalledValue = duplicateKeys(value, firstKey, secondKey);
|
|
338
|
+
if (key === firstKey) {
|
|
339
|
+
resultObj[secondKey] = recursivelyCalledValue;
|
|
340
|
+
}
|
|
341
|
+
else if (key === secondKey) {
|
|
342
|
+
resultObj[firstKey] = recursivelyCalledValue;
|
|
343
|
+
}
|
|
344
|
+
resultObj[key] = recursivelyCalledValue;
|
|
345
|
+
}
|
|
346
|
+
return resultObj;
|
|
347
|
+
}
|
|
348
|
+
// Base case. Return primitives without doing anything.
|
|
349
|
+
return input;
|
|
350
|
+
}
|
|
351
|
+
exports.duplicateKeys = duplicateKeys;
|
|
352
|
+
/**
|
|
353
|
+
* Takes a desired capability and tries to JSON.parse it as an array,
|
|
354
|
+
* and either returns the parsed array or a singleton array.
|
|
355
|
+
*
|
|
356
|
+
* @param {string|Array<String>} cap A desired capability
|
|
357
|
+
*/
|
|
358
|
+
function parseCapsArray(cap) {
|
|
359
|
+
if (lodash_1.default.isArray(cap)) {
|
|
360
|
+
return cap;
|
|
361
|
+
}
|
|
362
|
+
let parsedCaps;
|
|
363
|
+
try {
|
|
364
|
+
parsedCaps = JSON.parse(cap);
|
|
365
|
+
if (lodash_1.default.isArray(parsedCaps)) {
|
|
366
|
+
return parsedCaps;
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
catch (ign) {
|
|
370
|
+
logger_1.default.warn(`Failed to parse capability as JSON array`);
|
|
371
|
+
}
|
|
372
|
+
if (lodash_1.default.isString(cap)) {
|
|
373
|
+
return [cap];
|
|
374
|
+
}
|
|
375
|
+
throw new Error(`must provide a string or JSON Array; received ${cap}`);
|
|
376
|
+
}
|
|
377
|
+
exports.parseCapsArray = parseCapsArray;
|
|
378
|
+
/**
|
|
379
|
+
* Generate a string that uniquely describes driver instance
|
|
380
|
+
*
|
|
381
|
+
* @param {import('@appium/types').Core} obj driver instance
|
|
382
|
+
* @param {string?} sessionId session identifier (if exists)
|
|
383
|
+
* @returns {string}
|
|
384
|
+
*/
|
|
385
|
+
function generateDriverLogPrefix(obj, sessionId = null) {
|
|
386
|
+
const instanceName = `${obj.constructor.name}@${support_1.node.getObjectId(obj).substring(0, 4)}`;
|
|
387
|
+
return sessionId ? `${instanceName} (${sessionId.substring(0, 8)})` : instanceName;
|
|
388
|
+
}
|
|
389
|
+
exports.generateDriverLogPrefix = generateDriverLogPrefix;
|
|
369
390
|
/**
|
|
370
391
|
* Sends a HTTP GET query to fetch the app with caching enabled.
|
|
371
392
|
* Follows https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching
|
|
@@ -463,8 +484,7 @@ async function unzipApp(zipPath, dstRoot, supportedAppExtensions) {
|
|
|
463
484
|
try {
|
|
464
485
|
logger_1.default.debug(`Unzipping '${zipPath}'`);
|
|
465
486
|
const timer = new support_1.timing.Timer().start();
|
|
466
|
-
const
|
|
467
|
-
const useSystemUnzip = lodash_1.default.isEmpty(useSystemUnzipEnv) || !['0', 'false'].includes(lodash_1.default.toLower(useSystemUnzipEnv));
|
|
487
|
+
const useSystemUnzip = isEnvOptionEnabled('APPIUM_PREFER_SYSTEM_UNZIP', true);
|
|
468
488
|
/**
|
|
469
489
|
* Attempt to use use the system `unzip` (e.g., `/usr/bin/unzip`) due
|
|
470
490
|
* to the significant performance improvement it provides over the native
|
|
@@ -504,85 +524,137 @@ async function unzipApp(zipPath, dstRoot, supportedAppExtensions) {
|
|
|
504
524
|
}
|
|
505
525
|
}
|
|
506
526
|
/**
|
|
507
|
-
*
|
|
508
|
-
*
|
|
527
|
+
* Transforms the given app link to the cache key.
|
|
528
|
+
* This is necessary to properly cache apps
|
|
529
|
+
* having the same address, but different query strings,
|
|
530
|
+
* for example ones stored in S3 using presigned URLs.
|
|
531
|
+
*
|
|
532
|
+
* @param {string} app App link.
|
|
533
|
+
* @returns {string} Transformed app link or the original arg if
|
|
534
|
+
* no transfromation is needed.
|
|
509
535
|
*/
|
|
510
|
-
function
|
|
511
|
-
|
|
536
|
+
function toCacheKey(app) {
|
|
537
|
+
if (!isEnvOptionEnabled('APPIUM_APPS_CACHE_IGNORE_URL_QUERY') || !isSupportedUrl(app)) {
|
|
538
|
+
return app;
|
|
539
|
+
}
|
|
540
|
+
try {
|
|
541
|
+
const { href, search } = parseAppLink(app);
|
|
542
|
+
if (href && search) {
|
|
543
|
+
return href.replace(search, '');
|
|
544
|
+
}
|
|
545
|
+
if (href) {
|
|
546
|
+
return href;
|
|
547
|
+
}
|
|
548
|
+
}
|
|
549
|
+
catch { }
|
|
550
|
+
return app;
|
|
512
551
|
}
|
|
513
|
-
exports.isPackageOrBundle = isPackageOrBundle;
|
|
514
552
|
/**
|
|
515
|
-
*
|
|
516
|
-
* Do the same thing in reverse. If we find 'secondKey', create a duplicate with the key 'firstKey'.
|
|
553
|
+
* Safely parses the given app link to a URL object
|
|
517
554
|
*
|
|
518
|
-
*
|
|
519
|
-
|
|
520
|
-
*
|
|
521
|
-
* @param {String} firstKey The first key to duplicate
|
|
522
|
-
* @param {String} secondKey The second key to duplicate
|
|
555
|
+
* @param {string} appLink
|
|
556
|
+
* @returns {URL|import('@appium/types').StringRecord} Parsed URL object
|
|
557
|
+
* or an empty object if the parsing has failed
|
|
523
558
|
*/
|
|
524
|
-
function
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
return input.map((item) => duplicateKeys(item, firstKey, secondKey));
|
|
559
|
+
function parseAppLink(appLink) {
|
|
560
|
+
try {
|
|
561
|
+
return new URL(appLink);
|
|
528
562
|
}
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
const resultObj = {};
|
|
532
|
-
for (let [key, value] of lodash_1.default.toPairs(input)) {
|
|
533
|
-
const recursivelyCalledValue = duplicateKeys(value, firstKey, secondKey);
|
|
534
|
-
if (key === firstKey) {
|
|
535
|
-
resultObj[secondKey] = recursivelyCalledValue;
|
|
536
|
-
}
|
|
537
|
-
else if (key === secondKey) {
|
|
538
|
-
resultObj[firstKey] = recursivelyCalledValue;
|
|
539
|
-
}
|
|
540
|
-
resultObj[key] = recursivelyCalledValue;
|
|
541
|
-
}
|
|
542
|
-
return resultObj;
|
|
563
|
+
catch {
|
|
564
|
+
return {};
|
|
543
565
|
}
|
|
544
|
-
// Base case. Return primitives without doing anything.
|
|
545
|
-
return input;
|
|
546
566
|
}
|
|
547
|
-
exports.duplicateKeys = duplicateKeys;
|
|
548
567
|
/**
|
|
549
|
-
*
|
|
550
|
-
*
|
|
568
|
+
* Checks whether we can threat the given app link
|
|
569
|
+
* as a URL,
|
|
551
570
|
*
|
|
552
|
-
* @param {string
|
|
571
|
+
* @param {string} app
|
|
572
|
+
* @returns {boolean} True if app is a supported URL
|
|
553
573
|
*/
|
|
554
|
-
function
|
|
555
|
-
if (lodash_1.default.isArray(cap)) {
|
|
556
|
-
return cap;
|
|
557
|
-
}
|
|
558
|
-
let parsedCaps;
|
|
574
|
+
function isSupportedUrl(app) {
|
|
559
575
|
try {
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
return parsedCaps;
|
|
563
|
-
}
|
|
576
|
+
const { protocol } = parseAppLink(app);
|
|
577
|
+
return ['http:', 'https:'].includes(protocol);
|
|
564
578
|
}
|
|
565
|
-
catch
|
|
566
|
-
|
|
579
|
+
catch {
|
|
580
|
+
return false;
|
|
567
581
|
}
|
|
568
|
-
|
|
569
|
-
|
|
582
|
+
}
|
|
583
|
+
/**
|
|
584
|
+
* Check if the given environment option is enabled
|
|
585
|
+
*
|
|
586
|
+
* @param {string} optionName Option name
|
|
587
|
+
* @param {boolean|null} [defaultValue=null] The value to return if the given env value
|
|
588
|
+
* is not set explcitly
|
|
589
|
+
* @returns {boolean} True if the option is enabled
|
|
590
|
+
*/
|
|
591
|
+
function isEnvOptionEnabled(optionName, defaultValue = null) {
|
|
592
|
+
const value = process.env[optionName];
|
|
593
|
+
if (!lodash_1.default.isNull(defaultValue) && lodash_1.default.isEmpty(value)) {
|
|
594
|
+
return defaultValue;
|
|
570
595
|
}
|
|
571
|
-
|
|
596
|
+
return !lodash_1.default.isEmpty(value) && !['0', 'false', 'no'].includes(lodash_1.default.toLower(value));
|
|
572
597
|
}
|
|
573
|
-
exports.parseCapsArray = parseCapsArray;
|
|
574
598
|
/**
|
|
575
|
-
* Generate a string that uniquely describes driver instance
|
|
576
599
|
*
|
|
577
|
-
* @param {
|
|
578
|
-
* @param {
|
|
600
|
+
* @param {string} [envVarName]
|
|
601
|
+
* @param {number} defaultValue
|
|
602
|
+
* @returns {number}
|
|
603
|
+
*/
|
|
604
|
+
function toNaturalNumber(defaultValue, envVarName) {
|
|
605
|
+
if (!envVarName || lodash_1.default.isUndefined(process.env[envVarName])) {
|
|
606
|
+
return defaultValue;
|
|
607
|
+
}
|
|
608
|
+
const num = parseInt(`${process.env[envVarName]}`, 10);
|
|
609
|
+
return num > 0 ? num : defaultValue;
|
|
610
|
+
}
|
|
611
|
+
/**
|
|
612
|
+
* @param {string} app
|
|
613
|
+
* @param {string[]} supportedAppExtensions
|
|
579
614
|
* @returns {string}
|
|
580
615
|
*/
|
|
581
|
-
function
|
|
582
|
-
|
|
583
|
-
|
|
616
|
+
function verifyAppExtension(app, supportedAppExtensions) {
|
|
617
|
+
if (supportedAppExtensions.map(lodash_1.default.toLower).includes(lodash_1.default.toLower(path_1.default.extname(app)))) {
|
|
618
|
+
return app;
|
|
619
|
+
}
|
|
620
|
+
throw new Error(`New app path '${app}' did not have ` +
|
|
621
|
+
`${support_1.util.pluralize('extension', supportedAppExtensions.length, false)}: ` +
|
|
622
|
+
supportedAppExtensions);
|
|
623
|
+
}
|
|
624
|
+
/**
|
|
625
|
+
* @param {string} folderPath
|
|
626
|
+
* @returns {Promise<number>}
|
|
627
|
+
*/
|
|
628
|
+
async function calculateFolderIntegrity(folderPath) {
|
|
629
|
+
return (await support_1.fs.glob('**/*', { cwd: folderPath })).length;
|
|
630
|
+
}
|
|
631
|
+
/**
|
|
632
|
+
* @param {string} filePath
|
|
633
|
+
* @returns {Promise<string>}
|
|
634
|
+
*/
|
|
635
|
+
async function calculateFileIntegrity(filePath) {
|
|
636
|
+
return await support_1.fs.hash(filePath);
|
|
637
|
+
}
|
|
638
|
+
/**
|
|
639
|
+
* @param {string} currentPath
|
|
640
|
+
* @param {import('@appium/types').StringRecord} expectedIntegrity
|
|
641
|
+
* @returns {Promise<boolean>}
|
|
642
|
+
*/
|
|
643
|
+
async function isAppIntegrityOk(currentPath, expectedIntegrity = {}) {
|
|
644
|
+
if (!(await support_1.fs.exists(currentPath))) {
|
|
645
|
+
return false;
|
|
646
|
+
}
|
|
647
|
+
// Folder integrity check is simple:
|
|
648
|
+
// Verify the previous amount of files is not greater than the current one.
|
|
649
|
+
// We don't want to use equality comparison because of an assumption that the OS might
|
|
650
|
+
// create some unwanted service files/cached inside of that folder or its subfolders.
|
|
651
|
+
// Ofc, validating the hash sum of each file (or at least of file path) would be much
|
|
652
|
+
// more precise, but we don't need to be very precise here and also don't want to
|
|
653
|
+
// overuse RAM and have a performance drop.
|
|
654
|
+
return (await support_1.fs.stat(currentPath)).isDirectory()
|
|
655
|
+
? (await calculateFolderIntegrity(currentPath)) >= expectedIntegrity?.folder
|
|
656
|
+
: (await calculateFileIntegrity(currentPath)) === expectedIntegrity?.file;
|
|
584
657
|
}
|
|
585
|
-
exports.generateDriverLogPrefix = generateDriverLogPrefix;
|
|
586
658
|
/** @type {import('@appium/types').DriverHelpers} */
|
|
587
659
|
exports.default = {
|
|
588
660
|
configureApp,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../lib/basedriver/helpers.js"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../lib/basedriver/helpers.js"],"names":[],"mappings":"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"}
|
|
@@ -61,74 +61,6 @@ process.on('exit', () => {
|
|
|
61
61
|
}
|
|
62
62
|
});
|
|
63
63
|
|
|
64
|
-
/**
|
|
65
|
-
*
|
|
66
|
-
* @param {string} [envVarName]
|
|
67
|
-
* @param {number} defaultValue
|
|
68
|
-
* @returns {number}
|
|
69
|
-
*/
|
|
70
|
-
function toNaturalNumber(defaultValue, envVarName) {
|
|
71
|
-
if (!envVarName || _.isUndefined(process.env[envVarName])) {
|
|
72
|
-
return defaultValue;
|
|
73
|
-
}
|
|
74
|
-
const num = parseInt(`${process.env[envVarName]}`, 10);
|
|
75
|
-
return num > 0 ? num : defaultValue;
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* @param {string} app
|
|
80
|
-
* @param {string[]} supportedAppExtensions
|
|
81
|
-
* @returns {string}
|
|
82
|
-
*/
|
|
83
|
-
function verifyAppExtension(app, supportedAppExtensions) {
|
|
84
|
-
if (supportedAppExtensions.map(_.toLower).includes(_.toLower(path.extname(app)))) {
|
|
85
|
-
return app;
|
|
86
|
-
}
|
|
87
|
-
throw new Error(
|
|
88
|
-
`New app path '${app}' did not have ` +
|
|
89
|
-
`${util.pluralize('extension', supportedAppExtensions.length, false)}: ` +
|
|
90
|
-
supportedAppExtensions
|
|
91
|
-
);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* @param {string} folderPath
|
|
96
|
-
* @returns {Promise<number>}
|
|
97
|
-
*/
|
|
98
|
-
async function calculateFolderIntegrity(folderPath) {
|
|
99
|
-
return (await fs.glob('**/*', {cwd: folderPath})).length;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* @param {string} filePath
|
|
104
|
-
* @returns {Promise<string>}
|
|
105
|
-
*/
|
|
106
|
-
async function calculateFileIntegrity(filePath) {
|
|
107
|
-
return await fs.hash(filePath);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* @param {string} currentPath
|
|
112
|
-
* @param {import('@appium/types').StringRecord} expectedIntegrity
|
|
113
|
-
* @returns {Promise<boolean>}
|
|
114
|
-
*/
|
|
115
|
-
async function isAppIntegrityOk(currentPath, expectedIntegrity = {}) {
|
|
116
|
-
if (!(await fs.exists(currentPath))) {
|
|
117
|
-
return false;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
// Folder integrity check is simple:
|
|
121
|
-
// Verify the previous amount of files is not greater than the current one.
|
|
122
|
-
// We don't want to use equality comparison because of an assumption that the OS might
|
|
123
|
-
// create some unwanted service files/cached inside of that folder or its subfolders.
|
|
124
|
-
// Ofc, validating the hash sum of each file (or at least of file path) would be much
|
|
125
|
-
// more precise, but we don't need to be very precise here and also don't want to
|
|
126
|
-
// overuse RAM and have a performance drop.
|
|
127
|
-
return (await fs.stat(currentPath)).isDirectory()
|
|
128
|
-
? (await calculateFolderIntegrity(currentPath)) >= expectedIntegrity?.folder
|
|
129
|
-
: (await calculateFileIntegrity(currentPath)) === expectedIntegrity?.file;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
64
|
/**
|
|
133
65
|
*
|
|
134
66
|
* @param {string} app
|
|
@@ -171,15 +103,16 @@ export async function configureApp(
|
|
|
171
103
|
maxAge: null,
|
|
172
104
|
etag: null,
|
|
173
105
|
};
|
|
174
|
-
const {protocol, pathname} =
|
|
175
|
-
const isUrl =
|
|
106
|
+
const {protocol, pathname} = parseAppLink(app);
|
|
107
|
+
const isUrl = isSupportedUrl(app);
|
|
108
|
+
const appCacheKey = toCacheKey(app);
|
|
176
109
|
|
|
177
|
-
const cachedAppInfo = APPLICATIONS_CACHE.get(
|
|
110
|
+
const cachedAppInfo = APPLICATIONS_CACHE.get(appCacheKey);
|
|
178
111
|
if (cachedAppInfo) {
|
|
179
112
|
logger.debug(`Cached app data: ${JSON.stringify(cachedAppInfo, null, 2)}`);
|
|
180
113
|
}
|
|
181
114
|
|
|
182
|
-
return await APPLICATIONS_CACHE_GUARD.acquire(
|
|
115
|
+
return await APPLICATIONS_CACHE_GUARD.acquire(appCacheKey, async () => {
|
|
183
116
|
if (isUrl) {
|
|
184
117
|
// Use the app from remote URL
|
|
185
118
|
logger.info(`Using downloadable app '${newApp}'`);
|
|
@@ -223,7 +156,7 @@ export async function configureApp(
|
|
|
223
156
|
`The application at '${cachedAppInfo.fullPath}' does not exist anymore ` +
|
|
224
157
|
`or its integrity has been damaged. Deleting it from the internal cache`
|
|
225
158
|
);
|
|
226
|
-
APPLICATIONS_CACHE.delete(
|
|
159
|
+
APPLICATIONS_CACHE.delete(appCacheKey);
|
|
227
160
|
|
|
228
161
|
if (!stream.closed) {
|
|
229
162
|
stream.destroy();
|
|
@@ -332,7 +265,7 @@ export async function configureApp(
|
|
|
332
265
|
`The application at '${fullPath}' does not exist anymore ` +
|
|
333
266
|
`or its integrity has been damaged. Deleting it from the cache`
|
|
334
267
|
);
|
|
335
|
-
APPLICATIONS_CACHE.delete(
|
|
268
|
+
APPLICATIONS_CACHE.delete(appCacheKey);
|
|
336
269
|
}
|
|
337
270
|
const tmpRoot = await tempDir.openDir();
|
|
338
271
|
try {
|
|
@@ -363,7 +296,7 @@ export async function configureApp(
|
|
|
363
296
|
} else {
|
|
364
297
|
integrity.file = await calculateFileIntegrity(appPathToCache);
|
|
365
298
|
}
|
|
366
|
-
APPLICATIONS_CACHE.set(
|
|
299
|
+
APPLICATIONS_CACHE.set(appCacheKey, {
|
|
367
300
|
...remoteAppProps,
|
|
368
301
|
timestamp: Date.now(),
|
|
369
302
|
packageHash,
|
|
@@ -389,12 +322,94 @@ export async function configureApp(
|
|
|
389
322
|
}
|
|
390
323
|
|
|
391
324
|
verifyAppExtension(newApp, supportedAppExtensions);
|
|
392
|
-
return
|
|
325
|
+
return appCacheKey !== toCacheKey(newApp) && (packageHash || _.values(remoteAppProps).some(Boolean))
|
|
393
326
|
? await storeAppInCache(newApp)
|
|
394
327
|
: newApp;
|
|
395
328
|
});
|
|
396
329
|
}
|
|
397
330
|
|
|
331
|
+
/**
|
|
332
|
+
* @param {string} app
|
|
333
|
+
* @returns {boolean}
|
|
334
|
+
*/
|
|
335
|
+
export function isPackageOrBundle(app) {
|
|
336
|
+
return /^([a-zA-Z0-9\-_]+\.[a-zA-Z0-9\-_]+)+$/.test(app);
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
/**
|
|
340
|
+
* Finds all instances 'firstKey' and create a duplicate with the key 'secondKey',
|
|
341
|
+
* Do the same thing in reverse. If we find 'secondKey', create a duplicate with the key 'firstKey'.
|
|
342
|
+
*
|
|
343
|
+
* This will cause keys to be overwritten if the object contains 'firstKey' and 'secondKey'.
|
|
344
|
+
|
|
345
|
+
* @param {*} input Any type of input
|
|
346
|
+
* @param {String} firstKey The first key to duplicate
|
|
347
|
+
* @param {String} secondKey The second key to duplicate
|
|
348
|
+
*/
|
|
349
|
+
export function duplicateKeys(input, firstKey, secondKey) {
|
|
350
|
+
// If array provided, recursively call on all elements
|
|
351
|
+
if (_.isArray(input)) {
|
|
352
|
+
return input.map((item) => duplicateKeys(item, firstKey, secondKey));
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
// If object, create duplicates for keys and then recursively call on values
|
|
356
|
+
if (_.isPlainObject(input)) {
|
|
357
|
+
const resultObj = {};
|
|
358
|
+
for (let [key, value] of _.toPairs(input)) {
|
|
359
|
+
const recursivelyCalledValue = duplicateKeys(value, firstKey, secondKey);
|
|
360
|
+
if (key === firstKey) {
|
|
361
|
+
resultObj[secondKey] = recursivelyCalledValue;
|
|
362
|
+
} else if (key === secondKey) {
|
|
363
|
+
resultObj[firstKey] = recursivelyCalledValue;
|
|
364
|
+
}
|
|
365
|
+
resultObj[key] = recursivelyCalledValue;
|
|
366
|
+
}
|
|
367
|
+
return resultObj;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
// Base case. Return primitives without doing anything.
|
|
371
|
+
return input;
|
|
372
|
+
}
|
|
373
|
+
|
|
374
|
+
/**
|
|
375
|
+
* Takes a desired capability and tries to JSON.parse it as an array,
|
|
376
|
+
* and either returns the parsed array or a singleton array.
|
|
377
|
+
*
|
|
378
|
+
* @param {string|Array<String>} cap A desired capability
|
|
379
|
+
*/
|
|
380
|
+
export function parseCapsArray(cap) {
|
|
381
|
+
if (_.isArray(cap)) {
|
|
382
|
+
return cap;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
let parsedCaps;
|
|
386
|
+
try {
|
|
387
|
+
parsedCaps = JSON.parse(cap);
|
|
388
|
+
if (_.isArray(parsedCaps)) {
|
|
389
|
+
return parsedCaps;
|
|
390
|
+
}
|
|
391
|
+
} catch (ign) {
|
|
392
|
+
logger.warn(`Failed to parse capability as JSON array`);
|
|
393
|
+
}
|
|
394
|
+
if (_.isString(cap)) {
|
|
395
|
+
return [cap];
|
|
396
|
+
}
|
|
397
|
+
throw new Error(`must provide a string or JSON Array; received ${cap}`);
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
/**
|
|
401
|
+
* Generate a string that uniquely describes driver instance
|
|
402
|
+
*
|
|
403
|
+
* @param {import('@appium/types').Core} obj driver instance
|
|
404
|
+
* @param {string?} sessionId session identifier (if exists)
|
|
405
|
+
* @returns {string}
|
|
406
|
+
*/
|
|
407
|
+
export function generateDriverLogPrefix(obj, sessionId = null) {
|
|
408
|
+
const instanceName = `${obj.constructor.name}@${node.getObjectId(obj).substring(0, 4)}`;
|
|
409
|
+
return sessionId ? `${instanceName} (${sessionId.substring(0, 8)})` : instanceName;
|
|
410
|
+
}
|
|
411
|
+
|
|
412
|
+
|
|
398
413
|
/**
|
|
399
414
|
* Sends a HTTP GET query to fetch the app with caching enabled.
|
|
400
415
|
* Follows https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching
|
|
@@ -500,9 +515,7 @@ async function unzipApp(zipPath, dstRoot, supportedAppExtensions) {
|
|
|
500
515
|
try {
|
|
501
516
|
logger.debug(`Unzipping '${zipPath}'`);
|
|
502
517
|
const timer = new timing.Timer().start();
|
|
503
|
-
const
|
|
504
|
-
const useSystemUnzip =
|
|
505
|
-
_.isEmpty(useSystemUnzipEnv) || !['0', 'false'].includes(_.toLower(useSystemUnzipEnv));
|
|
518
|
+
const useSystemUnzip = isEnvOptionEnabled('APPIUM_PREFER_SYSTEM_UNZIP', true);
|
|
506
519
|
/**
|
|
507
520
|
* Attempt to use use the system `unzip` (e.g., `/usr/bin/unzip`) due
|
|
508
521
|
* to the significant performance improvement it provides over the native
|
|
@@ -556,84 +569,144 @@ async function unzipApp(zipPath, dstRoot, supportedAppExtensions) {
|
|
|
556
569
|
}
|
|
557
570
|
|
|
558
571
|
/**
|
|
559
|
-
*
|
|
560
|
-
*
|
|
572
|
+
* Transforms the given app link to the cache key.
|
|
573
|
+
* This is necessary to properly cache apps
|
|
574
|
+
* having the same address, but different query strings,
|
|
575
|
+
* for example ones stored in S3 using presigned URLs.
|
|
576
|
+
*
|
|
577
|
+
* @param {string} app App link.
|
|
578
|
+
* @returns {string} Transformed app link or the original arg if
|
|
579
|
+
* no transfromation is needed.
|
|
561
580
|
*/
|
|
562
|
-
|
|
563
|
-
|
|
581
|
+
function toCacheKey(app) {
|
|
582
|
+
if (!isEnvOptionEnabled('APPIUM_APPS_CACHE_IGNORE_URL_QUERY') || !isSupportedUrl(app)) {
|
|
583
|
+
return app;
|
|
584
|
+
}
|
|
585
|
+
try {
|
|
586
|
+
const {href, search} = parseAppLink(app);
|
|
587
|
+
if (href && search) {
|
|
588
|
+
return href.replace(search, '');
|
|
589
|
+
}
|
|
590
|
+
if (href) {
|
|
591
|
+
return href;
|
|
592
|
+
}
|
|
593
|
+
} catch {}
|
|
594
|
+
return app;
|
|
564
595
|
}
|
|
565
596
|
|
|
566
597
|
/**
|
|
567
|
-
*
|
|
568
|
-
* Do the same thing in reverse. If we find 'secondKey', create a duplicate with the key 'firstKey'.
|
|
598
|
+
* Safely parses the given app link to a URL object
|
|
569
599
|
*
|
|
570
|
-
*
|
|
571
|
-
|
|
572
|
-
*
|
|
573
|
-
* @param {String} firstKey The first key to duplicate
|
|
574
|
-
* @param {String} secondKey The second key to duplicate
|
|
600
|
+
* @param {string} appLink
|
|
601
|
+
* @returns {URL|import('@appium/types').StringRecord} Parsed URL object
|
|
602
|
+
* or an empty object if the parsing has failed
|
|
575
603
|
*/
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
604
|
+
function parseAppLink(appLink) {
|
|
605
|
+
try {
|
|
606
|
+
return new URL(appLink);
|
|
607
|
+
} catch {
|
|
608
|
+
return {};
|
|
580
609
|
}
|
|
610
|
+
}
|
|
581
611
|
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
return
|
|
612
|
+
/**
|
|
613
|
+
* Checks whether we can threat the given app link
|
|
614
|
+
* as a URL,
|
|
615
|
+
*
|
|
616
|
+
* @param {string} app
|
|
617
|
+
* @returns {boolean} True if app is a supported URL
|
|
618
|
+
*/
|
|
619
|
+
function isSupportedUrl(app) {
|
|
620
|
+
try {
|
|
621
|
+
const {protocol} = parseAppLink(app);
|
|
622
|
+
return ['http:', 'https:'].includes(protocol);
|
|
623
|
+
} catch {
|
|
624
|
+
return false;
|
|
595
625
|
}
|
|
596
|
-
|
|
597
|
-
// Base case. Return primitives without doing anything.
|
|
598
|
-
return input;
|
|
599
626
|
}
|
|
600
627
|
|
|
601
628
|
/**
|
|
602
|
-
*
|
|
603
|
-
* and either returns the parsed array or a singleton array.
|
|
629
|
+
* Check if the given environment option is enabled
|
|
604
630
|
*
|
|
605
|
-
* @param {string
|
|
631
|
+
* @param {string} optionName Option name
|
|
632
|
+
* @param {boolean|null} [defaultValue=null] The value to return if the given env value
|
|
633
|
+
* is not set explcitly
|
|
634
|
+
* @returns {boolean} True if the option is enabled
|
|
606
635
|
*/
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
636
|
+
function isEnvOptionEnabled(optionName, defaultValue = null) {
|
|
637
|
+
const value = process.env[optionName];
|
|
638
|
+
if (!_.isNull(defaultValue) && _.isEmpty(value)) {
|
|
639
|
+
return defaultValue;
|
|
610
640
|
}
|
|
641
|
+
return !_.isEmpty(value) && !['0', 'false', 'no'].includes(_.toLower(value));
|
|
642
|
+
}
|
|
611
643
|
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
if (_.isString(cap)) {
|
|
622
|
-
return [cap];
|
|
644
|
+
/**
|
|
645
|
+
*
|
|
646
|
+
* @param {string} [envVarName]
|
|
647
|
+
* @param {number} defaultValue
|
|
648
|
+
* @returns {number}
|
|
649
|
+
*/
|
|
650
|
+
function toNaturalNumber(defaultValue, envVarName) {
|
|
651
|
+
if (!envVarName || _.isUndefined(process.env[envVarName])) {
|
|
652
|
+
return defaultValue;
|
|
623
653
|
}
|
|
624
|
-
|
|
654
|
+
const num = parseInt(`${process.env[envVarName]}`, 10);
|
|
655
|
+
return num > 0 ? num : defaultValue;
|
|
625
656
|
}
|
|
626
657
|
|
|
627
658
|
/**
|
|
628
|
-
*
|
|
629
|
-
*
|
|
630
|
-
* @param {import('@appium/types').Core} obj driver instance
|
|
631
|
-
* @param {string?} sessionId session identifier (if exists)
|
|
659
|
+
* @param {string} app
|
|
660
|
+
* @param {string[]} supportedAppExtensions
|
|
632
661
|
* @returns {string}
|
|
633
662
|
*/
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
663
|
+
function verifyAppExtension(app, supportedAppExtensions) {
|
|
664
|
+
if (supportedAppExtensions.map(_.toLower).includes(_.toLower(path.extname(app)))) {
|
|
665
|
+
return app;
|
|
666
|
+
}
|
|
667
|
+
throw new Error(
|
|
668
|
+
`New app path '${app}' did not have ` +
|
|
669
|
+
`${util.pluralize('extension', supportedAppExtensions.length, false)}: ` +
|
|
670
|
+
supportedAppExtensions
|
|
671
|
+
);
|
|
672
|
+
}
|
|
673
|
+
|
|
674
|
+
/**
|
|
675
|
+
* @param {string} folderPath
|
|
676
|
+
* @returns {Promise<number>}
|
|
677
|
+
*/
|
|
678
|
+
async function calculateFolderIntegrity(folderPath) {
|
|
679
|
+
return (await fs.glob('**/*', {cwd: folderPath})).length;
|
|
680
|
+
}
|
|
681
|
+
|
|
682
|
+
/**
|
|
683
|
+
* @param {string} filePath
|
|
684
|
+
* @returns {Promise<string>}
|
|
685
|
+
*/
|
|
686
|
+
async function calculateFileIntegrity(filePath) {
|
|
687
|
+
return await fs.hash(filePath);
|
|
688
|
+
}
|
|
689
|
+
|
|
690
|
+
/**
|
|
691
|
+
* @param {string} currentPath
|
|
692
|
+
* @param {import('@appium/types').StringRecord} expectedIntegrity
|
|
693
|
+
* @returns {Promise<boolean>}
|
|
694
|
+
*/
|
|
695
|
+
async function isAppIntegrityOk(currentPath, expectedIntegrity = {}) {
|
|
696
|
+
if (!(await fs.exists(currentPath))) {
|
|
697
|
+
return false;
|
|
698
|
+
}
|
|
699
|
+
|
|
700
|
+
// Folder integrity check is simple:
|
|
701
|
+
// Verify the previous amount of files is not greater than the current one.
|
|
702
|
+
// We don't want to use equality comparison because of an assumption that the OS might
|
|
703
|
+
// create some unwanted service files/cached inside of that folder or its subfolders.
|
|
704
|
+
// Ofc, validating the hash sum of each file (or at least of file path) would be much
|
|
705
|
+
// more precise, but we don't need to be very precise here and also don't want to
|
|
706
|
+
// overuse RAM and have a performance drop.
|
|
707
|
+
return (await fs.stat(currentPath)).isDirectory()
|
|
708
|
+
? (await calculateFolderIntegrity(currentPath)) >= expectedIntegrity?.folder
|
|
709
|
+
: (await calculateFileIntegrity(currentPath)) === expectedIntegrity?.file;
|
|
637
710
|
}
|
|
638
711
|
|
|
639
712
|
/** @type {import('@appium/types').DriverHelpers} */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@appium/base-driver",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.8.1",
|
|
4
4
|
"description": "Base driver class for Appium drivers",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"automation",
|
|
@@ -44,8 +44,8 @@
|
|
|
44
44
|
"test:types": "tsd"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@appium/support": "^4.
|
|
48
|
-
"@appium/types": "^0.
|
|
47
|
+
"@appium/support": "^4.4.0",
|
|
48
|
+
"@appium/types": "^0.19.1",
|
|
49
49
|
"@colors/colors": "1.6.0",
|
|
50
50
|
"@types/async-lock": "1.4.2",
|
|
51
51
|
"@types/bluebird": "3.5.42",
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"path-to-regexp": "6.2.2",
|
|
68
68
|
"serve-favicon": "2.5.0",
|
|
69
69
|
"source-map-support": "0.5.21",
|
|
70
|
-
"type-fest": "4.
|
|
70
|
+
"type-fest": "4.19.0",
|
|
71
71
|
"validate.js": "0.13.1"
|
|
72
72
|
},
|
|
73
73
|
"optionalDependencies": {
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
"publishConfig": {
|
|
81
81
|
"access": "public"
|
|
82
82
|
},
|
|
83
|
-
"gitHead": "
|
|
83
|
+
"gitHead": "5b043cc1ab85079be3e187bfed0bbd219426bae5",
|
|
84
84
|
"tsd": {
|
|
85
85
|
"directory": "test/types"
|
|
86
86
|
}
|