@appium/support 2.61.1 → 3.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.
Files changed (59) hide show
  1. package/build/lib/console.d.ts +1 -1
  2. package/build/lib/console.js +169 -105
  3. package/build/lib/console.js.map +1 -1
  4. package/build/lib/env.js +142 -117
  5. package/build/lib/env.js.map +1 -1
  6. package/build/lib/fs.d.ts +9 -2
  7. package/build/lib/fs.d.ts.map +1 -1
  8. package/build/lib/fs.js +358 -246
  9. package/build/lib/fs.js.map +1 -1
  10. package/build/lib/image-util.js +139 -124
  11. package/build/lib/image-util.js.map +1 -1
  12. package/build/lib/index.js +64 -103
  13. package/build/lib/index.js.map +1 -1
  14. package/build/lib/log-internal.d.ts +4 -27
  15. package/build/lib/log-internal.d.ts.map +1 -1
  16. package/build/lib/log-internal.js +141 -123
  17. package/build/lib/log-internal.js.map +1 -1
  18. package/build/lib/logger.d.ts +1 -1
  19. package/build/lib/logger.d.ts.map +1 -1
  20. package/build/lib/logger.js +5 -14
  21. package/build/lib/logger.js.map +1 -1
  22. package/build/lib/logging.d.ts +3 -4
  23. package/build/lib/logging.d.ts.map +1 -1
  24. package/build/lib/logging.js +139 -110
  25. package/build/lib/logging.js.map +1 -1
  26. package/build/lib/mjpeg.js +169 -141
  27. package/build/lib/mjpeg.js.map +1 -1
  28. package/build/lib/mkdirp.js +7 -13
  29. package/build/lib/mkdirp.js.map +1 -1
  30. package/build/lib/net.d.ts.map +1 -1
  31. package/build/lib/net.js +278 -254
  32. package/build/lib/net.js.map +1 -1
  33. package/build/lib/node.js +203 -192
  34. package/build/lib/node.js.map +1 -1
  35. package/build/lib/npm.d.ts +19 -4
  36. package/build/lib/npm.d.ts.map +1 -1
  37. package/build/lib/npm.js +277 -228
  38. package/build/lib/npm.js.map +1 -1
  39. package/build/lib/plist.js +145 -136
  40. package/build/lib/plist.js.map +1 -1
  41. package/build/lib/process.js +41 -42
  42. package/build/lib/process.js.map +1 -1
  43. package/build/lib/system.js +39 -56
  44. package/build/lib/system.js.map +1 -1
  45. package/build/lib/tempdir.js +112 -73
  46. package/build/lib/tempdir.js.map +1 -1
  47. package/build/lib/timing.js +99 -84
  48. package/build/lib/timing.js.map +1 -1
  49. package/build/lib/util.js +454 -356
  50. package/build/lib/util.js.map +1 -1
  51. package/build/lib/zip.js +469 -423
  52. package/build/lib/zip.js.map +1 -1
  53. package/build/tsconfig.tsbuildinfo +1 -1
  54. package/lib/fs.js +15 -1
  55. package/lib/log-internal.js +12 -16
  56. package/lib/logging.js +2 -3
  57. package/lib/net.js +15 -6
  58. package/lib/npm.js +28 -18
  59. package/package.json +19 -18
@@ -1,128 +1,157 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = exports.LEVELS = void 0;
7
- exports.getLogger = getLogger;
8
- exports.loadSecureValuesPreprocessingRules = loadSecureValuesPreprocessingRules;
9
- exports.log = void 0;
10
- exports.patchLogger = patchLogger;
11
-
12
- require("source-map-support/register");
13
-
14
- var _npmlog = _interopRequireDefault(require("npmlog"));
15
-
16
- var _lodash = _interopRequireDefault(require("lodash"));
17
-
18
- var _util = require("./util");
19
-
20
- var _moment = _interopRequireDefault(require("moment"));
21
-
22
- var _logInternal = _interopRequireDefault(require("./log-internal"));
23
-
24
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
-
26
- const LEVELS = ['silly', 'verbose', 'debug', 'info', 'http', 'warn', 'error'];
27
- exports.LEVELS = LEVELS;
2
+ // @ts-check
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.loadSecureValuesPreprocessingRules = exports.getLogger = exports.patchLogger = exports.log = exports.LEVELS = void 0;
8
+ const npmlog_1 = __importDefault(require("npmlog"));
9
+ const lodash_1 = __importDefault(require("lodash"));
10
+ const util_1 = require("./util");
11
+ const moment_1 = __importDefault(require("moment"));
12
+ const log_internal_1 = __importDefault(require("./log-internal"));
13
+ /** @type {import('@appium/types').AppiumLoggerLevel[]} */
14
+ exports.LEVELS = ['silly', 'verbose', 'debug', 'info', 'http', 'warn', 'error'];
28
15
  const MAX_LOG_RECORDS_COUNT = 3000;
29
16
  const PREFIX_TIMESTAMP_FORMAT = 'HH-mm-ss:SSS';
17
+ // mock log object used in testing mode
30
18
  let mockLog = {};
31
-
32
- for (let level of LEVELS) {
33
- mockLog[level] = () => {};
19
+ for (let level of exports.LEVELS) {
20
+ mockLog[level] = () => { };
34
21
  }
35
-
22
+ /**
23
+ *
24
+ * @param {import('npmlog').Logger} logger
25
+ */
36
26
  function patchLogger(logger) {
37
- if (!logger.debug) {
38
- logger.addLevel('debug', 1000, {
39
- fg: 'blue',
40
- bg: 'black'
41
- }, 'dbug');
42
- }
27
+ if (!logger.debug) {
28
+ logger.addLevel('debug', 1000, { fg: 'blue', bg: 'black' }, 'dbug');
29
+ }
43
30
  }
44
-
31
+ exports.patchLogger = patchLogger;
32
+ /**
33
+ *
34
+ * @returns {[import('npmlog').Logger, boolean]}
35
+ */
45
36
  function _getLogger() {
46
- const testingMode = process.env._TESTING === '1';
47
- const forceLogMode = process.env._FORCE_LOGS === '1';
48
- const usingGlobalLog = !!global._global_npmlog;
49
- let logger;
50
-
51
- if (testingMode && !forceLogMode) {
52
- logger = mockLog;
53
- } else {
54
- logger = global._global_npmlog || _npmlog.default;
55
- logger.maxRecordSize = MAX_LOG_RECORDS_COUNT;
56
- }
57
-
58
- patchLogger(logger);
59
- return [logger, usingGlobalLog];
37
+ // check if the user set the `_TESTING` or `_FORCE_LOGS` flag
38
+ const testingMode = process.env._TESTING === '1';
39
+ const forceLogMode = process.env._FORCE_LOGS === '1';
40
+ // if is possible that there is a logger instance that is already around,
41
+ // in which case we want t o use that
42
+ const usingGlobalLog = !!global._global_npmlog;
43
+ let logger;
44
+ if (testingMode && !forceLogMode) {
45
+ // in testing mode, use a mock logger object that we can query
46
+ logger = mockLog;
47
+ }
48
+ else {
49
+ // otherwise, either use the global, or a new `npmlog` object
50
+ logger = global._global_npmlog || npmlog_1.default;
51
+ // The default value is 10000, which causes excessive memory usage
52
+ logger.maxRecordSize = MAX_LOG_RECORDS_COUNT;
53
+ }
54
+ patchLogger(logger);
55
+ return [logger, usingGlobalLog];
60
56
  }
61
-
57
+ /**
58
+ * @param {AppiumLoggerPrefix?} prefix
59
+ * @param {boolean} logTimestamp whether to include timestamps into log prefixes
60
+ * @returns {string}
61
+ */
62
62
  function getActualPrefix(prefix, logTimestamp = false) {
63
- const result = (_lodash.default.isFunction(prefix) ? prefix() : prefix) ?? '';
64
- return logTimestamp ? `[${(0, _moment.default)().format(PREFIX_TIMESTAMP_FORMAT)}] ${result}` : result;
63
+ const result = (lodash_1.default.isFunction(prefix) ? prefix() : prefix) ?? '';
64
+ return logTimestamp ? `[${(0, moment_1.default)().format(PREFIX_TIMESTAMP_FORMAT)}] ${result}` : result;
65
65
  }
66
-
66
+ /**
67
+ *
68
+ * @param {AppiumLoggerPrefix?} prefix
69
+ * @returns {AppiumLogger}
70
+ */
67
71
  function getLogger(prefix = null) {
68
- let [logger, usingGlobalLog] = _getLogger();
69
-
70
- let wrappedLogger = {
71
- unwrap: () => logger,
72
- levels: LEVELS,
73
- prefix
74
- };
75
- Object.defineProperty(wrappedLogger, 'level', {
76
- get() {
77
- return logger.level;
78
- },
79
-
80
- set(newValue) {
81
- logger.level = newValue;
82
- },
83
-
84
- enumerable: true,
85
- configurable: true
86
- });
87
- const logTimestamp = process.env._LOG_TIMESTAMP === '1';
88
-
89
- for (const level of LEVELS) {
90
- wrappedLogger[level] = function (...args) {
91
- const actualPrefix = getActualPrefix(this.prefix, logTimestamp);
92
-
93
- for (const arg of args) {
94
- const out = _lodash.default.isError(arg) && arg.stack ? arg.stack : `${arg}`;
95
-
96
- for (const line of out.split('\n')) {
97
- const unleakedLine = (0, _util.unleakString)(line);
98
- logger[level](actualPrefix, _logInternal.default.preprocess(unleakedLine));
99
- }
100
- }
72
+ let [logger, usingGlobalLog] = _getLogger();
73
+ // wrap the logger so that we can catch and modify any logging
74
+ let wrappedLogger = {
75
+ unwrap: () => logger,
76
+ levels: exports.LEVELS,
77
+ prefix,
101
78
  };
102
- }
103
-
104
- wrappedLogger.errorAndThrow = function (err) {
105
- this.error(err);
106
- throw _lodash.default.isError(err) ? err : new Error((0, _util.unleakString)(err));
107
- };
108
-
109
- if (!usingGlobalLog) {
110
- wrappedLogger.level = 'verbose';
111
- }
112
-
113
- return wrappedLogger;
79
+ // allow access to the level of the underlying logger
80
+ Object.defineProperty(wrappedLogger, 'level', {
81
+ get() {
82
+ return logger.level;
83
+ },
84
+ set(newValue) {
85
+ logger.level = newValue;
86
+ },
87
+ enumerable: true,
88
+ configurable: true,
89
+ });
90
+ const logTimestamp = process.env._LOG_TIMESTAMP === '1';
91
+ // add all the levels from `npmlog`, and map to the underlying logger
92
+ for (const level of exports.LEVELS) {
93
+ wrappedLogger[level] = /** @param {...any} args */ function (...args) {
94
+ const actualPrefix = getActualPrefix(this.prefix, logTimestamp);
95
+ for (const arg of args) {
96
+ const out = lodash_1.default.isError(arg) && arg.stack ? arg.stack : `${arg}`;
97
+ for (const line of out.split('\n')) {
98
+ // it is necessary to unleak each line because `split` call
99
+ // creates "views" to the original string as well as the `substring` one
100
+ const unleakedLine = (0, util_1.unleakString)(line);
101
+ logger[level](actualPrefix, log_internal_1.default.preprocess(unleakedLine));
102
+ }
103
+ }
104
+ };
105
+ }
106
+ // add method to log an error, and throw it, for convenience
107
+ wrappedLogger.errorAndThrow = function (err) {
108
+ this.error(err);
109
+ // make sure we have an `Error` object. Wrap if necessary
110
+ throw lodash_1.default.isError(err) ? err : new Error((0, util_1.unleakString)(err));
111
+ };
112
+ if (!usingGlobalLog) {
113
+ // if we're not using a global log specified from some top-level package,
114
+ // set the log level to a default of verbose. Otherwise, let the top-level
115
+ // package set the log level
116
+ wrappedLogger.level = 'verbose';
117
+ }
118
+ return /** @type {AppiumLogger} */ (wrappedLogger);
114
119
  }
115
-
120
+ exports.getLogger = getLogger;
121
+ /**
122
+ * @typedef LoadResult
123
+ * @property {string[]} issues The list of rule parsing issues (one item per rule).
124
+ * Rules with issues are skipped. An empty list is returned if no parsing issues exist.
125
+ * @property {import('./log-internal').SecureValuePreprocessingRule[]} rules The list of successfully loaded
126
+ * replacement rules. The list could be empty if no rules were loaded.
127
+ */
128
+ /**
129
+ * Loads the JSON file containing secure values replacement rules.
130
+ * This might be necessary to hide sensitive values that may possibly
131
+ * appear in Appium logs.
132
+ * Each call to this method replaces the previously loaded rules if any existed.
133
+ *
134
+ * @param {string|string[]|import('@appium/types').LogFiltersConfig} rulesJsonPath The full path to the JSON file containing
135
+ * the replacement rules. Each rule could either be a string to be replaced
136
+ * or an object with predefined properties.
137
+ * @throws {Error} If the given file cannot be loaded
138
+ * @returns {Promise<LoadResult>}
139
+ */
116
140
  async function loadSecureValuesPreprocessingRules(rulesJsonPath) {
117
- const issues = await _logInternal.default.loadRules(rulesJsonPath);
118
- return {
119
- issues,
120
- rules: _lodash.default.cloneDeep(_logInternal.default.rules)
121
- };
141
+ const issues = await log_internal_1.default.loadRules(rulesJsonPath);
142
+ return {
143
+ issues,
144
+ rules: lodash_1.default.cloneDeep(log_internal_1.default.rules),
145
+ };
122
146
  }
123
-
147
+ exports.loadSecureValuesPreprocessingRules = loadSecureValuesPreprocessingRules;
148
+ // export a default logger with no prefix
124
149
  const log = getLogger();
125
150
  exports.log = log;
126
- var _default = log;
127
- exports.default = _default;
128
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMRVZFTFMiLCJNQVhfTE9HX1JFQ09SRFNfQ09VTlQiLCJQUkVGSVhfVElNRVNUQU1QX0ZPUk1BVCIsIm1vY2tMb2ciLCJsZXZlbCIsInBhdGNoTG9nZ2VyIiwibG9nZ2VyIiwiZGVidWciLCJhZGRMZXZlbCIsImZnIiwiYmciLCJfZ2V0TG9nZ2VyIiwidGVzdGluZ01vZGUiLCJwcm9jZXNzIiwiZW52IiwiX1RFU1RJTkciLCJmb3JjZUxvZ01vZGUiLCJfRk9SQ0VfTE9HUyIsInVzaW5nR2xvYmFsTG9nIiwiZ2xvYmFsIiwiX2dsb2JhbF9ucG1sb2ciLCJucG1sb2ciLCJtYXhSZWNvcmRTaXplIiwiZ2V0QWN0dWFsUHJlZml4IiwicHJlZml4IiwibG9nVGltZXN0YW1wIiwicmVzdWx0IiwiXyIsImlzRnVuY3Rpb24iLCJtb21lbnQiLCJmb3JtYXQiLCJnZXRMb2dnZXIiLCJ3cmFwcGVkTG9nZ2VyIiwidW53cmFwIiwibGV2ZWxzIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXQiLCJzZXQiLCJuZXdWYWx1ZSIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJfTE9HX1RJTUVTVEFNUCIsImFyZ3MiLCJhY3R1YWxQcmVmaXgiLCJhcmciLCJvdXQiLCJpc0Vycm9yIiwic3RhY2siLCJsaW5lIiwic3BsaXQiLCJ1bmxlYWtlZExpbmUiLCJ1bmxlYWtTdHJpbmciLCJTRUNVUkVfVkFMVUVTX1BSRVBST0NFU1NPUiIsInByZXByb2Nlc3MiLCJlcnJvckFuZFRocm93IiwiZXJyIiwiZXJyb3IiLCJFcnJvciIsImxvYWRTZWN1cmVWYWx1ZXNQcmVwcm9jZXNzaW5nUnVsZXMiLCJydWxlc0pzb25QYXRoIiwiaXNzdWVzIiwibG9hZFJ1bGVzIiwicnVsZXMiLCJjbG9uZURlZXAiLCJsb2ciXSwic291cmNlcyI6WyIuLi8uLi9saWIvbG9nZ2luZy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuaW1wb3J0IG5wbWxvZyBmcm9tICducG1sb2cnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7dW5sZWFrU3RyaW5nfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IFNFQ1VSRV9WQUxVRVNfUFJFUFJPQ0VTU09SIGZyb20gJy4vbG9nLWludGVybmFsJztcblxuLyoqIEB0eXBlIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5BcHBpdW1Mb2dnZXJMZXZlbFtdfSAqL1xuZXhwb3J0IGNvbnN0IExFVkVMUyA9IFsnc2lsbHknLCAndmVyYm9zZScsICdkZWJ1ZycsICdpbmZvJywgJ2h0dHAnLCAnd2FybicsICdlcnJvciddO1xuY29uc3QgTUFYX0xPR19SRUNPUkRTX0NPVU5UID0gMzAwMDtcblxuY29uc3QgUFJFRklYX1RJTUVTVEFNUF9GT1JNQVQgPSAnSEgtbW0tc3M6U1NTJztcblxuLy8gbW9jayBsb2cgb2JqZWN0IHVzZWQgaW4gdGVzdGluZyBtb2RlXG5sZXQgbW9ja0xvZyA9IHt9O1xuZm9yIChsZXQgbGV2ZWwgb2YgTEVWRUxTKSB7XG4gIG1vY2tMb2dbbGV2ZWxdID0gKCkgPT4ge307XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7aW1wb3J0KCducG1sb2cnKS5Mb2dnZXJ9IGxvZ2dlclxuICovXG5mdW5jdGlvbiBwYXRjaExvZ2dlcihsb2dnZXIpIHtcbiAgaWYgKCFsb2dnZXIuZGVidWcpIHtcbiAgICBsb2dnZXIuYWRkTGV2ZWwoJ2RlYnVnJywgMTAwMCwge2ZnOiAnYmx1ZScsIGJnOiAnYmxhY2snfSwgJ2RidWcnKTtcbiAgfVxufVxuXG4vKipcbiAqXG4gKiBAcmV0dXJucyB7W2ltcG9ydCgnbnBtbG9nJykuTG9nZ2VyLCBib29sZWFuXX1cbiAqL1xuZnVuY3Rpb24gX2dldExvZ2dlcigpIHtcbiAgLy8gY2hlY2sgaWYgdGhlIHVzZXIgc2V0IHRoZSBgX1RFU1RJTkdgIG9yIGBfRk9SQ0VfTE9HU2AgZmxhZ1xuICBjb25zdCB0ZXN0aW5nTW9kZSA9IHByb2Nlc3MuZW52Ll9URVNUSU5HID09PSAnMSc7XG4gIGNvbnN0IGZvcmNlTG9nTW9kZSA9IHByb2Nlc3MuZW52Ll9GT1JDRV9MT0dTID09PSAnMSc7XG5cbiAgLy8gaWYgaXMgcG9zc2libGUgdGhhdCB0aGVyZSBpcyBhIGxvZ2dlciBpbnN0YW5jZSB0aGF0IGlzIGFscmVhZHkgYXJvdW5kLFxuICAvLyBpbiB3aGljaCBjYXNlIHdlIHdhbnQgdCBvIHVzZSB0aGF0XG4gIGNvbnN0IHVzaW5nR2xvYmFsTG9nID0gISFnbG9iYWwuX2dsb2JhbF9ucG1sb2c7XG4gIGxldCBsb2dnZXI7XG4gIGlmICh0ZXN0aW5nTW9kZSAmJiAhZm9yY2VMb2dNb2RlKSB7XG4gICAgLy8gaW4gdGVzdGluZyBtb2RlLCB1c2UgYSBtb2NrIGxvZ2dlciBvYmplY3QgdGhhdCB3ZSBjYW4gcXVlcnlcbiAgICBsb2dnZXIgPSBtb2NrTG9nO1xuICB9IGVsc2Uge1xuICAgIC8vIG90aGVyd2lzZSwgZWl0aGVyIHVzZSB0aGUgZ2xvYmFsLCBvciBhIG5ldyBgbnBtbG9nYCBvYmplY3RcbiAgICBsb2dnZXIgPSBnbG9iYWwuX2dsb2JhbF9ucG1sb2cgfHwgbnBtbG9nO1xuICAgIC8vIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDEwMDAwLCB3aGljaCBjYXVzZXMgZXhjZXNzaXZlIG1lbW9yeSB1c2FnZVxuICAgIGxvZ2dlci5tYXhSZWNvcmRTaXplID0gTUFYX0xPR19SRUNPUkRTX0NPVU5UO1xuICB9XG4gIHBhdGNoTG9nZ2VyKGxvZ2dlcik7XG4gIHJldHVybiBbbG9nZ2VyLCB1c2luZ0dsb2JhbExvZ107XG59XG5cbi8qKlxuICogQHBhcmFtIHtBcHBpdW1Mb2dnZXJQcmVmaXg/fSBwcmVmaXhcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gbG9nVGltZXN0YW1wIHdoZXRoZXIgdG8gaW5jbHVkZSB0aW1lc3RhbXBzIGludG8gbG9nIHByZWZpeGVzXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBnZXRBY3R1YWxQcmVmaXgocHJlZml4LCBsb2dUaW1lc3RhbXAgPSBmYWxzZSkge1xuICBjb25zdCByZXN1bHQgPSAoXy5pc0Z1bmN0aW9uKHByZWZpeCkgPyBwcmVmaXgoKSA6IHByZWZpeCkgPz8gJyc7XG4gIHJldHVybiBsb2dUaW1lc3RhbXAgPyBgWyR7bW9tZW50KCkuZm9ybWF0KFBSRUZJWF9USU1FU1RBTVBfRk9STUFUKX1dICR7cmVzdWx0fWAgOiByZXN1bHQ7XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSB7QXBwaXVtTG9nZ2VyUHJlZml4P30gcHJlZml4XG4gKiBAcmV0dXJucyB7QXBwaXVtTG9nZ2VyfVxuICovXG5mdW5jdGlvbiBnZXRMb2dnZXIocHJlZml4ID0gbnVsbCkge1xuICBsZXQgW2xvZ2dlciwgdXNpbmdHbG9iYWxMb2ddID0gX2dldExvZ2dlcigpO1xuXG4gIC8vIHdyYXAgdGhlIGxvZ2dlciBzbyB0aGF0IHdlIGNhbiBjYXRjaCBhbmQgbW9kaWZ5IGFueSBsb2dnaW5nXG4gIGxldCB3cmFwcGVkTG9nZ2VyID0ge1xuICAgIHVud3JhcDogKCkgPT4gbG9nZ2VyLFxuICAgIGxldmVsczogTEVWRUxTLFxuICAgIHByZWZpeCxcbiAgfTtcblxuICAvLyBhbGxvdyBhY2Nlc3MgdG8gdGhlIGxldmVsIG9mIHRoZSB1bmRlcmx5aW5nIGxvZ2dlclxuICBPYmplY3QuZGVmaW5lUHJvcGVydHkod3JhcHBlZExvZ2dlciwgJ2xldmVsJywge1xuICAgIGdldCgpIHtcbiAgICAgIHJldHVybiBsb2dnZXIubGV2ZWw7XG4gICAgfSxcbiAgICBzZXQobmV3VmFsdWUpIHtcbiAgICAgIGxvZ2dlci5sZXZlbCA9IG5ld1ZhbHVlO1xuICAgIH0sXG4gICAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gIH0pO1xuXG4gIGNvbnN0IGxvZ1RpbWVzdGFtcCA9IHByb2Nlc3MuZW52Ll9MT0dfVElNRVNUQU1QID09PSAnMSc7XG5cbiAgLy8gYWRkIGFsbCB0aGUgbGV2ZWxzIGZyb20gYG5wbWxvZ2AsIGFuZCBtYXAgdG8gdGhlIHVuZGVybHlpbmcgbG9nZ2VyXG4gIGZvciAoY29uc3QgbGV2ZWwgb2YgTEVWRUxTKSB7XG4gICAgd3JhcHBlZExvZ2dlcltsZXZlbF0gPSAvKiogQHBhcmFtIHsuLi5hbnl9IGFyZ3MgKi8gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcbiAgICAgIGNvbnN0IGFjdHVhbFByZWZpeCA9IGdldEFjdHVhbFByZWZpeCh0aGlzLnByZWZpeCwgbG9nVGltZXN0YW1wKTtcbiAgICAgIGZvciAoY29uc3QgYXJnIG9mIGFyZ3MpIHtcbiAgICAgICAgY29uc3Qgb3V0ID0gXy5pc0Vycm9yKGFyZykgJiYgYXJnLnN0YWNrID8gYXJnLnN0YWNrIDogYCR7YXJnfWA7XG4gICAgICAgIGZvciAoY29uc3QgbGluZSBvZiBvdXQuc3BsaXQoJ1xcbicpKSB7XG4gICAgICAgICAgLy8gaXQgaXMgbmVjZXNzYXJ5IHRvIHVubGVhayBlYWNoIGxpbmUgYmVjYXVzZSBgc3BsaXRgIGNhbGxcbiAgICAgICAgICAvLyBjcmVhdGVzIFwidmlld3NcIiB0byB0aGUgb3JpZ2luYWwgc3RyaW5nIGFzIHdlbGwgYXMgdGhlIGBzdWJzdHJpbmdgIG9uZVxuICAgICAgICAgIGNvbnN0IHVubGVha2VkTGluZSA9IHVubGVha1N0cmluZyhsaW5lKTtcbiAgICAgICAgICBsb2dnZXJbbGV2ZWxdKGFjdHVhbFByZWZpeCwgU0VDVVJFX1ZBTFVFU19QUkVQUk9DRVNTT1IucHJlcHJvY2Vzcyh1bmxlYWtlZExpbmUpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH1cbiAgLy8gYWRkIG1ldGhvZCB0byBsb2cgYW4gZXJyb3IsIGFuZCB0aHJvdyBpdCwgZm9yIGNvbnZlbmllbmNlXG4gIHdyYXBwZWRMb2dnZXIuZXJyb3JBbmRUaHJvdyA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICB0aGlzLmVycm9yKGVycik7XG4gICAgLy8gbWFrZSBzdXJlIHdlIGhhdmUgYW4gYEVycm9yYCBvYmplY3QuIFdyYXAgaWYgbmVjZXNzYXJ5XG4gICAgdGhyb3cgXy5pc0Vycm9yKGVycikgPyBlcnIgOiBuZXcgRXJyb3IodW5sZWFrU3RyaW5nKGVycikpO1xuICB9O1xuICBpZiAoIXVzaW5nR2xvYmFsTG9nKSB7XG4gICAgLy8gaWYgd2UncmUgbm90IHVzaW5nIGEgZ2xvYmFsIGxvZyBzcGVjaWZpZWQgZnJvbSBzb21lIHRvcC1sZXZlbCBwYWNrYWdlLFxuICAgIC8vIHNldCB0aGUgbG9nIGxldmVsIHRvIGEgZGVmYXVsdCBvZiB2ZXJib3NlLiBPdGhlcndpc2UsIGxldCB0aGUgdG9wLWxldmVsXG4gICAgLy8gcGFja2FnZSBzZXQgdGhlIGxvZyBsZXZlbFxuICAgIHdyYXBwZWRMb2dnZXIubGV2ZWwgPSAndmVyYm9zZSc7XG4gIH1cbiAgcmV0dXJuIC8qKiBAdHlwZSB7QXBwaXVtTG9nZ2VyfSAqLyAod3JhcHBlZExvZ2dlcik7XG59XG5cbi8qKlxuICogQHR5cGVkZWYgTG9hZFJlc3VsdFxuICogQHByb3BlcnR5IHtzdHJpbmdbXX0gaXNzdWVzIFRoZSBsaXN0IG9mIHJ1bGUgcGFyc2luZyBpc3N1ZXMgKG9uZSBpdGVtIHBlciBydWxlKS5cbiAqIFJ1bGVzIHdpdGggaXNzdWVzIGFyZSBza2lwcGVkLiBBbiBlbXB0eSBsaXN0IGlzIHJldHVybmVkIGlmIG5vIHBhcnNpbmcgaXNzdWVzIGV4aXN0LlxuICogQHByb3BlcnR5IHtpbXBvcnQoJy4vbG9nLWludGVybmFsJykuU2VjdXJlVmFsdWVQcmVwcm9jZXNzaW5nUnVsZVtdfSBydWxlcyBUaGUgbGlzdCBvZiBzdWNjZXNzZnVsbHkgbG9hZGVkXG4gKiByZXBsYWNlbWVudCBydWxlcy4gVGhlIGxpc3QgY291bGQgYmUgZW1wdHkgaWYgbm8gcnVsZXMgd2VyZSBsb2FkZWQuXG4gKi9cblxuLyoqXG4gKiBMb2FkcyB0aGUgSlNPTiBmaWxlIGNvbnRhaW5pbmcgc2VjdXJlIHZhbHVlcyByZXBsYWNlbWVudCBydWxlcy5cbiAqIFRoaXMgbWlnaHQgYmUgbmVjZXNzYXJ5IHRvIGhpZGUgc2Vuc2l0aXZlIHZhbHVlcyB0aGF0IG1heSBwb3NzaWJseVxuICogYXBwZWFyIGluIEFwcGl1bSBsb2dzLlxuICogRWFjaCBjYWxsIHRvIHRoaXMgbWV0aG9kIHJlcGxhY2VzIHRoZSBwcmV2aW91c2x5IGxvYWRlZCBydWxlcyBpZiBhbnkgZXhpc3RlZC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xzdHJpbmdbXXxpbXBvcnQoJy4vbG9nLWludGVybmFsJykuUnVsZVtdfSBydWxlc0pzb25QYXRoIFRoZSBmdWxsIHBhdGggdG8gdGhlIEpTT04gZmlsZSBjb250YWluaW5nXG4gKiB0aGUgcmVwbGFjZW1lbnQgcnVsZXMuIEVhY2ggcnVsZSBjb3VsZCBlaXRoZXIgYmUgYSBzdHJpbmcgdG8gYmUgcmVwbGFjZWRcbiAqIG9yIGFuIG9iamVjdCB3aXRoIHByZWRlZmluZWQgcHJvcGVydGllcy4gU2VlIHRoZSBgUnVsZWAgdHlwZSBkZWZpbml0aW9uIGluXG4gKiBgbG9nLWludGVybmFscy5qc2AgdG8gZ2V0IG1vcmUgZGV0YWlscyBvbiBpdHMgZm9ybWF0LlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBnaXZlbiBmaWxlIGNhbm5vdCBiZSBsb2FkZWRcbiAqIEByZXR1cm5zIHtQcm9taXNlPExvYWRSZXN1bHQ+fVxuICovXG5hc3luYyBmdW5jdGlvbiBsb2FkU2VjdXJlVmFsdWVzUHJlcHJvY2Vzc2luZ1J1bGVzKHJ1bGVzSnNvblBhdGgpIHtcbiAgY29uc3QgaXNzdWVzID0gYXdhaXQgU0VDVVJFX1ZBTFVFU19QUkVQUk9DRVNTT1IubG9hZFJ1bGVzKHJ1bGVzSnNvblBhdGgpO1xuICByZXR1cm4ge1xuICAgIGlzc3VlcyxcbiAgICBydWxlczogXy5jbG9uZURlZXAoU0VDVVJFX1ZBTFVFU19QUkVQUk9DRVNTT1IucnVsZXMpLFxuICB9O1xufVxuXG4vLyBleHBvcnQgYSBkZWZhdWx0IGxvZ2dlciB3aXRoIG5vIHByZWZpeFxuY29uc3QgbG9nID0gZ2V0TG9nZ2VyKCk7XG5cbmV4cG9ydCB7bG9nLCBwYXRjaExvZ2dlciwgZ2V0TG9nZ2VyLCBsb2FkU2VjdXJlVmFsdWVzUHJlcHJvY2Vzc2luZ1J1bGVzfTtcbmV4cG9ydCBkZWZhdWx0IGxvZztcblxuLyoqXG4gKiBAdHlwZWRlZiB7aW1wb3J0KCdAYXBwaXVtL3R5cGVzJykuQXBwaXVtTG9nZ2VyUHJlZml4fSBBcHBpdW1Mb2dnZXJQcmVmaXhcbiAqIEB0eXBlZGVmIHtpbXBvcnQoJ0BhcHBpdW0vdHlwZXMnKS5BcHBpdW1Mb2dnZXJ9IEFwcGl1bUxvZ2dlclxuICogQHR5cGVkZWYge2ltcG9ydCgnQGFwcGl1bS90eXBlcycpLkFwcGl1bUxvZ2dlckxldmVsfSBBcHBpdW1Mb2dnZXJMZXZlbFxuICovXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUdPLE1BQU1BLE1BQU0sR0FBRyxDQUFDLE9BQUQsRUFBVSxTQUFWLEVBQXFCLE9BQXJCLEVBQThCLE1BQTlCLEVBQXNDLE1BQXRDLEVBQThDLE1BQTlDLEVBQXNELE9BQXRELENBQWY7O0FBQ1AsTUFBTUMscUJBQXFCLEdBQUcsSUFBOUI7QUFFQSxNQUFNQyx1QkFBdUIsR0FBRyxjQUFoQztBQUdBLElBQUlDLE9BQU8sR0FBRyxFQUFkOztBQUNBLEtBQUssSUFBSUMsS0FBVCxJQUFrQkosTUFBbEIsRUFBMEI7RUFDeEJHLE9BQU8sQ0FBQ0MsS0FBRCxDQUFQLEdBQWlCLE1BQU0sQ0FBRSxDQUF6QjtBQUNEOztBQU1ELFNBQVNDLFdBQVQsQ0FBcUJDLE1BQXJCLEVBQTZCO0VBQzNCLElBQUksQ0FBQ0EsTUFBTSxDQUFDQyxLQUFaLEVBQW1CO0lBQ2pCRCxNQUFNLENBQUNFLFFBQVAsQ0FBZ0IsT0FBaEIsRUFBeUIsSUFBekIsRUFBK0I7TUFBQ0MsRUFBRSxFQUFFLE1BQUw7TUFBYUMsRUFBRSxFQUFFO0lBQWpCLENBQS9CLEVBQTBELE1BQTFEO0VBQ0Q7QUFDRjs7QUFNRCxTQUFTQyxVQUFULEdBQXNCO0VBRXBCLE1BQU1DLFdBQVcsR0FBR0MsT0FB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
151
+ exports.default = log;
152
+ /**
153
+ * @typedef {import('@appium/types').AppiumLoggerPrefix} AppiumLoggerPrefix
154
+ * @typedef {import('@appium/types').AppiumLogger} AppiumLogger
155
+ * @typedef {import('@appium/types').AppiumLoggerLevel} AppiumLoggerLevel
156
+ */
157
+ //# sourceMappingURL=logging.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logging.js","names":["LEVELS","MAX_LOG_RECORDS_COUNT","PREFIX_TIMESTAMP_FORMAT","mockLog","level","patchLogger","logger","debug","addLevel","fg","bg","_getLogger","testingMode","process","env","_TESTING","forceLogMode","_FORCE_LOGS","usingGlobalLog","global","_global_npmlog","npmlog","maxRecordSize","getActualPrefix","prefix","logTimestamp","result","_","isFunction","moment","format","getLogger","wrappedLogger","unwrap","levels","Object","defineProperty","get","set","newValue","enumerable","configurable","_LOG_TIMESTAMP","args","actualPrefix","arg","out","isError","stack","line","split","unleakedLine","unleakString","SECURE_VALUES_PREPROCESSOR","preprocess","errorAndThrow","err","error","Error","loadSecureValuesPreprocessingRules","rulesJsonPath","issues","loadRules","rules","cloneDeep","log"],"sources":["../../lib/logging.js"],"sourcesContent":["// @ts-check\n\nimport npmlog from 'npmlog';\nimport _ from 'lodash';\nimport {unleakString} from './util';\nimport moment from 'moment';\nimport SECURE_VALUES_PREPROCESSOR from './log-internal';\n\n/** @type {import('@appium/types').AppiumLoggerLevel[]} */\nexport const LEVELS = ['silly', 'verbose', 'debug', 'info', 'http', 'warn', 'error'];\nconst MAX_LOG_RECORDS_COUNT = 3000;\n\nconst PREFIX_TIMESTAMP_FORMAT = 'HH-mm-ss:SSS';\n\n// mock log object used in testing mode\nlet mockLog = {};\nfor (let level of LEVELS) {\n mockLog[level] = () => {};\n}\n\n/**\n *\n * @param {import('npmlog').Logger} logger\n */\nfunction patchLogger(logger) {\n if (!logger.debug) {\n logger.addLevel('debug', 1000, {fg: 'blue', bg: 'black'}, 'dbug');\n }\n}\n\n/**\n *\n * @returns {[import('npmlog').Logger, boolean]}\n */\nfunction _getLogger() {\n // check if the user set the `_TESTING` or `_FORCE_LOGS` flag\n const testingMode = process.env._TESTING === '1';\n const forceLogMode = process.env._FORCE_LOGS === '1';\n\n // if is possible that there is a logger instance that is already around,\n // in which case we want t o use that\n const usingGlobalLog = !!global._global_npmlog;\n let logger;\n if (testingMode && !forceLogMode) {\n // in testing mode, use a mock logger object that we can query\n logger = mockLog;\n } else {\n // otherwise, either use the global, or a new `npmlog` object\n logger = global._global_npmlog || npmlog;\n // The default value is 10000, which causes excessive memory usage\n logger.maxRecordSize = MAX_LOG_RECORDS_COUNT;\n }\n patchLogger(logger);\n return [logger, usingGlobalLog];\n}\n\n/**\n * @param {AppiumLoggerPrefix?} prefix\n * @param {boolean} logTimestamp whether to include timestamps into log prefixes\n * @returns {string}\n */\nfunction getActualPrefix(prefix, logTimestamp = false) {\n const result = (_.isFunction(prefix) ? prefix() : prefix) ?? '';\n return logTimestamp ? `[${moment().format(PREFIX_TIMESTAMP_FORMAT)}] ${result}` : result;\n}\n\n/**\n *\n * @param {AppiumLoggerPrefix?} prefix\n * @returns {AppiumLogger}\n */\nfunction getLogger(prefix = null) {\n let [logger, usingGlobalLog] = _getLogger();\n\n // wrap the logger so that we can catch and modify any logging\n let wrappedLogger = {\n unwrap: () => logger,\n levels: LEVELS,\n prefix,\n };\n\n // allow access to the level of the underlying logger\n Object.defineProperty(wrappedLogger, 'level', {\n get() {\n return logger.level;\n },\n set(newValue) {\n logger.level = newValue;\n },\n enumerable: true,\n configurable: true,\n });\n\n const logTimestamp = process.env._LOG_TIMESTAMP === '1';\n\n // add all the levels from `npmlog`, and map to the underlying logger\n for (const level of LEVELS) {\n wrappedLogger[level] = /** @param {...any} args */ function (...args) {\n const actualPrefix = getActualPrefix(this.prefix, logTimestamp);\n for (const arg of args) {\n const out = _.isError(arg) && arg.stack ? arg.stack : `${arg}`;\n for (const line of out.split('\\n')) {\n // it is necessary to unleak each line because `split` call\n // creates \"views\" to the original string as well as the `substring` one\n const unleakedLine = unleakString(line);\n logger[level](actualPrefix, SECURE_VALUES_PREPROCESSOR.preprocess(unleakedLine));\n }\n }\n };\n }\n // add method to log an error, and throw it, for convenience\n wrappedLogger.errorAndThrow = function (err) {\n this.error(err);\n // make sure we have an `Error` object. Wrap if necessary\n throw _.isError(err) ? err : new Error(unleakString(err));\n };\n if (!usingGlobalLog) {\n // if we're not using a global log specified from some top-level package,\n // set the log level to a default of verbose. Otherwise, let the top-level\n // package set the log level\n wrappedLogger.level = 'verbose';\n }\n return /** @type {AppiumLogger} */ (wrappedLogger);\n}\n\n/**\n * @typedef LoadResult\n * @property {string[]} issues The list of rule parsing issues (one item per rule).\n * Rules with issues are skipped. An empty list is returned if no parsing issues exist.\n * @property {import('./log-internal').SecureValuePreprocessingRule[]} rules The list of successfully loaded\n * replacement rules. The list could be empty if no rules were loaded.\n */\n\n/**\n * Loads the JSON file containing secure values replacement rules.\n * This might be necessary to hide sensitive values that may possibly\n * appear in Appium logs.\n * Each call to this method replaces the previously loaded rules if any existed.\n *\n * @param {string|string[]|import('./log-internal').Rule[]} rulesJsonPath The full path to the JSON file containing\n * the replacement rules. Each rule could either be a string to be replaced\n * or an object with predefined properties. See the `Rule` type definition in\n * `log-internals.js` to get more details on its format.\n * @throws {Error} If the given file cannot be loaded\n * @returns {Promise<LoadResult>}\n */\nasync function loadSecureValuesPreprocessingRules(rulesJsonPath) {\n const issues = await SECURE_VALUES_PREPROCESSOR.loadRules(rulesJsonPath);\n return {\n issues,\n rules: _.cloneDeep(SECURE_VALUES_PREPROCESSOR.rules),\n };\n}\n\n// export a default logger with no prefix\nconst log = getLogger();\n\nexport {log, patchLogger, getLogger, loadSecureValuesPreprocessingRules};\nexport default log;\n\n/**\n * @typedef {import('@appium/types').AppiumLoggerPrefix} AppiumLoggerPrefix\n * @typedef {import('@appium/types').AppiumLogger} AppiumLogger\n * @typedef {import('@appium/types').AppiumLoggerLevel} AppiumLoggerLevel\n */\n"],"mappings":"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"}
1
+ {"version":3,"file":"logging.js","sourceRoot":"","sources":["../../lib/logging.js"],"names":[],"mappings":"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"}