appium 2.0.0-beta.46 → 2.0.0-beta.48

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 (141) hide show
  1. package/README.md +145 -44
  2. package/build/lib/appium.d.ts +3 -103
  3. package/build/lib/appium.d.ts.map +1 -1
  4. package/build/lib/appium.js +679 -549
  5. package/build/lib/appium.js.map +1 -1
  6. package/build/lib/cli/args.js +247 -127
  7. package/build/lib/cli/args.js.map +1 -1
  8. package/build/lib/cli/driver-command.d.ts +24 -5
  9. package/build/lib/cli/driver-command.d.ts.map +1 -1
  10. package/build/lib/cli/driver-command.js +78 -88
  11. package/build/lib/cli/driver-command.js.map +1 -1
  12. package/build/lib/cli/extension-command.d.ts +33 -24
  13. package/build/lib/cli/extension-command.d.ts.map +1 -1
  14. package/build/lib/cli/extension-command.js +729 -512
  15. package/build/lib/cli/extension-command.js.map +1 -1
  16. package/build/lib/cli/extension.d.ts +7 -6
  17. package/build/lib/cli/extension.d.ts.map +1 -1
  18. package/build/lib/cli/extension.js +68 -65
  19. package/build/lib/cli/extension.js.map +1 -1
  20. package/build/lib/cli/parser.d.ts +3 -3
  21. package/build/lib/cli/parser.d.ts.map +1 -1
  22. package/build/lib/cli/parser.js +234 -192
  23. package/build/lib/cli/parser.js.map +1 -1
  24. package/build/lib/cli/plugin-command.js +58 -87
  25. package/build/lib/cli/plugin-command.js.map +1 -1
  26. package/build/lib/cli/utils.js +66 -69
  27. package/build/lib/cli/utils.js.map +1 -1
  28. package/build/lib/config-file.d.ts.map +1 -1
  29. package/build/lib/config-file.js +189 -120
  30. package/build/lib/config-file.js.map +1 -1
  31. package/build/lib/config.d.ts.map +1 -1
  32. package/build/lib/config.js +254 -213
  33. package/build/lib/config.js.map +1 -1
  34. package/build/lib/constants.d.ts +6 -5
  35. package/build/lib/constants.d.ts.map +1 -1
  36. package/build/lib/constants.js +65 -59
  37. package/build/lib/constants.js.map +1 -1
  38. package/build/lib/extension/driver-config.js +199 -164
  39. package/build/lib/extension/driver-config.js.map +1 -1
  40. package/build/lib/extension/extension-config.d.ts +33 -26
  41. package/build/lib/extension/extension-config.d.ts.map +1 -1
  42. package/build/lib/extension/extension-config.js +541 -396
  43. package/build/lib/extension/extension-config.js.map +1 -1
  44. package/build/lib/extension/index.js +98 -68
  45. package/build/lib/extension/index.js.map +1 -1
  46. package/build/lib/extension/manifest-migrations.d.ts +27 -0
  47. package/build/lib/extension/manifest-migrations.d.ts.map +1 -0
  48. package/build/lib/extension/manifest-migrations.js +118 -0
  49. package/build/lib/extension/manifest-migrations.js.map +1 -0
  50. package/build/lib/extension/manifest.d.ts +35 -63
  51. package/build/lib/extension/manifest.d.ts.map +1 -1
  52. package/build/lib/extension/manifest.js +500 -240
  53. package/build/lib/extension/manifest.js.map +1 -1
  54. package/build/lib/extension/package-changed.js +57 -61
  55. package/build/lib/extension/package-changed.js.map +1 -1
  56. package/build/lib/extension/plugin-config.d.ts +2 -3
  57. package/build/lib/extension/plugin-config.d.ts.map +1 -1
  58. package/build/lib/extension/plugin-config.js +94 -70
  59. package/build/lib/extension/plugin-config.js.map +1 -1
  60. package/build/lib/grid-register.js +119 -137
  61. package/build/lib/grid-register.js.map +1 -1
  62. package/build/lib/logger.d.ts +1 -1
  63. package/build/lib/logger.d.ts.map +1 -1
  64. package/build/lib/logger.js +5 -15
  65. package/build/lib/logger.js.map +1 -1
  66. package/build/lib/logsink.d.ts.map +1 -1
  67. package/build/lib/logsink.js +189 -183
  68. package/build/lib/logsink.js.map +1 -1
  69. package/build/lib/main.d.ts +19 -12
  70. package/build/lib/main.d.ts.map +1 -1
  71. package/build/lib/main.js +330 -304
  72. package/build/lib/main.js.map +1 -1
  73. package/build/lib/schema/arg-spec.js +153 -108
  74. package/build/lib/schema/arg-spec.js.map +1 -1
  75. package/build/lib/schema/cli-args.js +203 -164
  76. package/build/lib/schema/cli-args.js.map +1 -1
  77. package/build/lib/schema/cli-transformers.js +117 -72
  78. package/build/lib/schema/cli-transformers.js.map +1 -1
  79. package/build/lib/schema/index.js +17 -32
  80. package/build/lib/schema/index.js.map +1 -1
  81. package/build/lib/schema/keywords.js +125 -67
  82. package/build/lib/schema/keywords.js.map +1 -1
  83. package/build/lib/schema/schema.d.ts.map +1 -1
  84. package/build/lib/schema/schema.js +582 -417
  85. package/build/lib/schema/schema.js.map +1 -1
  86. package/build/lib/utils.d.ts +41 -255
  87. package/build/lib/utils.d.ts.map +1 -1
  88. package/build/lib/utils.js +342 -193
  89. package/build/lib/utils.js.map +1 -1
  90. package/build/tsconfig.tsbuildinfo +1 -1
  91. package/build/types/cli.d.ts +45 -34
  92. package/build/types/cli.d.ts.map +1 -1
  93. package/build/types/cli.js +3 -0
  94. package/build/types/cli.js.map +1 -0
  95. package/build/types/index.d.ts +1 -2
  96. package/build/types/index.d.ts.map +1 -1
  97. package/build/types/index.js +19 -0
  98. package/build/types/index.js.map +1 -0
  99. package/build/types/manifest/base.d.ts +135 -0
  100. package/build/types/manifest/base.d.ts.map +1 -0
  101. package/build/types/manifest/base.js +3 -0
  102. package/build/types/manifest/base.js.map +1 -0
  103. package/build/types/manifest/index.d.ts +19 -0
  104. package/build/types/manifest/index.d.ts.map +1 -0
  105. package/build/types/manifest/index.js +40 -0
  106. package/build/types/manifest/index.js.map +1 -0
  107. package/build/types/manifest/v3.d.ts +139 -0
  108. package/build/types/manifest/v3.d.ts.map +1 -0
  109. package/build/types/manifest/v3.js +3 -0
  110. package/build/types/manifest/v3.js.map +1 -0
  111. package/lib/appium.js +1 -1
  112. package/lib/cli/args.js +1 -1
  113. package/lib/cli/driver-command.js +17 -0
  114. package/lib/cli/extension-command.js +119 -65
  115. package/lib/cli/extension.js +9 -8
  116. package/lib/cli/parser.js +2 -2
  117. package/lib/config-file.js +2 -3
  118. package/lib/config.js +3 -2
  119. package/lib/constants.js +7 -5
  120. package/lib/extension/extension-config.js +52 -47
  121. package/lib/extension/manifest-migrations.js +120 -0
  122. package/lib/extension/manifest.js +184 -103
  123. package/lib/extension/plugin-config.js +1 -2
  124. package/lib/logsink.js +26 -5
  125. package/lib/main.js +58 -50
  126. package/lib/schema/schema.js +6 -1
  127. package/lib/utils.js +62 -0
  128. package/package.json +24 -25
  129. package/scripts/autoinstall-extensions.js +78 -26
  130. package/types/cli.ts +81 -42
  131. package/types/index.ts +1 -2
  132. package/types/manifest/README.md +30 -0
  133. package/types/manifest/base.ts +158 -0
  134. package/types/manifest/index.ts +27 -0
  135. package/types/manifest/v3.ts +161 -0
  136. package/build/types/appium-manifest.d.ts +0 -59
  137. package/build/types/appium-manifest.d.ts.map +0 -1
  138. package/build/types/extension-manifest.d.ts +0 -55
  139. package/build/types/extension-manifest.d.ts.map +0 -1
  140. package/types/appium-manifest.ts +0 -73
  141. package/types/extension-manifest.ts +0 -64
@@ -1,210 +1,216 @@
1
1
  "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.clear = clear;
7
- exports.default = void 0;
8
- exports.init = init;
9
-
10
- require("source-map-support/register");
11
-
12
- var _npmlog = _interopRequireDefault(require("npmlog"));
13
-
14
- var _winston = require("winston");
15
-
16
- var _support = require("@appium/support");
17
-
18
- var _lodash = _interopRequireDefault(require("lodash"));
19
-
20
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
-
22
- _support.logger.patchLogger(_npmlog.default);
23
-
24
- global._global_npmlog = _npmlog.default;
25
- _npmlog.default.level = 'info';
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.clear = exports.init = void 0;
7
+ const npmlog_1 = __importDefault(require("npmlog"));
8
+ const winston_1 = require("winston");
9
+ const support_1 = require("@appium/support");
10
+ const lodash_1 = __importDefault(require("lodash"));
11
+ // set up distributed logging before everything else
12
+ support_1.logger.patchLogger(npmlog_1.default);
13
+ global._global_npmlog = npmlog_1.default;
14
+ // npmlog is used only for emitting, we use winston for output
15
+ npmlog_1.default.level = 'info';
26
16
  const levels = {
27
- debug: 4,
28
- info: 3,
29
- warn: 2,
30
- error: 1
17
+ debug: 4,
18
+ info: 3,
19
+ warn: 2,
20
+ error: 1,
31
21
  };
32
22
  const colors = {
33
- info: 'cyan',
34
- debug: 'grey',
35
- warn: 'yellow',
36
- error: 'red'
23
+ info: 'cyan',
24
+ debug: 'grey',
25
+ warn: 'yellow',
26
+ error: 'red',
37
27
  };
38
28
  const npmToWinstonLevels = {
39
- silly: 'debug',
40
- verbose: 'debug',
41
- debug: 'debug',
42
- info: 'info',
43
- http: 'info',
44
- warn: 'warn',
45
- error: 'error'
29
+ silly: 'debug',
30
+ verbose: 'debug',
31
+ debug: 'debug',
32
+ info: 'info',
33
+ http: 'info',
34
+ warn: 'warn',
35
+ error: 'error',
46
36
  };
37
+ const encounteredPrefixes = [];
47
38
  let log = null;
48
39
  let useLocalTimeZone = false;
49
-
50
- const timestampFormat = _winston.format.timestamp({
51
- format() {
52
- let date = new Date();
53
-
54
- if (useLocalTimeZone) {
55
- date = new Date(date.valueOf() - date.getTimezoneOffset() * 60000);
56
- }
57
-
58
- return date.toISOString().replace(/[TZ]/g, ' ').replace(/\./g, ':').trim();
59
- }
60
-
40
+ // add the timestamp in the correct format to the log info object
41
+ const timestampFormat = winston_1.format.timestamp({
42
+ format() {
43
+ let date = new Date();
44
+ if (useLocalTimeZone) {
45
+ date = new Date(date.valueOf() - date.getTimezoneOffset() * 60000);
46
+ }
47
+ // '2012-11-04T14:51:06.157Z' -> '2012-11-04 14:51:06:157'
48
+ return date.toISOString().replace(/[TZ]/g, ' ').replace(/\./g, ':').trim();
49
+ },
61
50
  });
62
-
63
- const colorizeFormat = _winston.format.colorize({
64
- colors
51
+ // set the custom colors
52
+ const colorizeFormat = winston_1.format.colorize({
53
+ colors,
65
54
  });
66
-
67
- const stripColorFormat = (0, _winston.format)(function stripColor(info) {
68
- const code = /\u001b\[(\d+(;\d+)*)?m/g;
69
- info.message = info.message.replace(code, '');
70
- return info;
55
+ // Strip the color marking within messages
56
+ const stripColorFormat = (0, winston_1.format)(function stripColor(info) {
57
+ const code = /\u001b\[(\d+(;\d+)*)?m/g; // eslint-disable-line no-control-regex
58
+ info.message = info.message.replace(code, '');
59
+ return info;
71
60
  })();
72
-
73
61
  function createConsoleTransport(args, logLvl) {
74
- return new _winston.transports.Console({
75
- name: 'console',
76
- handleExceptions: true,
77
- exitOnError: false,
78
- json: false,
79
- level: logLvl,
80
- stderrLevels: ['error'],
81
- format: _winston.format.combine((0, _winston.format)(function adjustDebug(info) {
82
- if (info.level === 'debug') {
83
- info.level = 'info';
84
- info.message = `[debug] ${info.message}`;
85
- }
86
-
87
- return info;
88
- })(), timestampFormat, args.logNoColors ? stripColorFormat : colorizeFormat, _winston.format.printf(function printInfo(info) {
89
- return `${args.logTimestamp ? `${info.timestamp} - ` : ''}${info.message}`;
90
- }))
91
- });
62
+ return new winston_1.transports.Console({
63
+ // `name` is unsupported per winston's type declarations
64
+ // @ts-expect-error
65
+ name: 'console',
66
+ handleExceptions: true,
67
+ exitOnError: false,
68
+ json: false,
69
+ level: logLvl,
70
+ stderrLevels: ['error'],
71
+ format: winston_1.format.combine((0, winston_1.format)(function adjustDebug(info) {
72
+ // prepend debug marker, and shift to `info` log level
73
+ if (info.level === 'debug') {
74
+ info.level = 'info';
75
+ info.message = `[debug] ${info.message}`;
76
+ }
77
+ return info;
78
+ })(), timestampFormat, args.logNoColors ? stripColorFormat : colorizeFormat, winston_1.format.printf(function printInfo(info) {
79
+ return `${args.logTimestamp ? `${info.timestamp} - ` : ''}${info.message}`;
80
+ })),
81
+ });
92
82
  }
93
-
94
83
  function createFileTransport(args, logLvl) {
95
- return new _winston.transports.File({
96
- name: 'file',
97
- filename: args.logFile,
98
- maxFiles: 1,
99
- handleExceptions: true,
100
- exitOnError: false,
101
- json: false,
102
- level: logLvl,
103
- format: _winston.format.combine(stripColorFormat, timestampFormat, _winston.format.printf(function printInfo(info) {
104
- return `${info.timestamp} ${info.message}`;
105
- }))
106
- });
84
+ return new winston_1.transports.File({
85
+ // @ts-expect-error
86
+ name: 'file',
87
+ filename: args.logFile,
88
+ maxFiles: 1,
89
+ handleExceptions: true,
90
+ exitOnError: false,
91
+ json: false,
92
+ level: logLvl,
93
+ format: winston_1.format.combine(stripColorFormat, timestampFormat, winston_1.format.printf(function printInfo(info) {
94
+ return `${info.timestamp} ${info.message}`;
95
+ })),
96
+ });
107
97
  }
108
-
109
98
  function createHttpTransport(args, logLvl) {
110
- let host = '127.0.0.1';
111
- let port = 9003;
112
-
113
- if (args.webhook.match(':')) {
114
- const hostAndPort = args.webhook.split(':');
115
- host = hostAndPort[0];
116
- port = parseInt(hostAndPort[1], 10);
117
- }
118
-
119
- return new _winston.transports.Http({
120
- name: 'http',
121
- host,
122
- port,
123
- path: '/',
124
- handleExceptions: true,
125
- exitOnError: false,
126
- json: false,
127
- level: logLvl,
128
- format: _winston.format.combine(stripColorFormat, _winston.format.printf(function printInfo(info) {
129
- return `${info.timestamp} ${info.message}`;
130
- }))
131
- });
99
+ let host = '127.0.0.1';
100
+ let port = 9003;
101
+ if (args.webhook.match(':')) {
102
+ const hostAndPort = args.webhook.split(':');
103
+ host = hostAndPort[0];
104
+ port = parseInt(hostAndPort[1], 10);
105
+ }
106
+ return new winston_1.transports.Http({
107
+ // @ts-expect-error
108
+ name: 'http',
109
+ host,
110
+ port,
111
+ path: '/',
112
+ handleExceptions: true,
113
+ exitOnError: false,
114
+ json: false,
115
+ level: logLvl,
116
+ format: winston_1.format.combine(stripColorFormat, winston_1.format.printf(function printInfo(info) {
117
+ return `${info.timestamp} ${info.message}`;
118
+ })),
119
+ });
132
120
  }
133
-
134
121
  async function createTransports(args) {
135
- let transports = [];
136
- let consoleLogLevel = null;
137
- let fileLogLevel = null;
138
-
139
- if (args.loglevel && args.loglevel.match(':')) {
140
- const lvlPair = args.loglevel.split(':');
141
- consoleLogLevel = lvlPair[0] || consoleLogLevel;
142
- fileLogLevel = lvlPair[1] || fileLogLevel;
143
- } else {
144
- consoleLogLevel = fileLogLevel = args.loglevel;
145
- }
146
-
147
- transports.push(createConsoleTransport(args, consoleLogLevel));
148
-
149
- if (args.logFile) {
150
- try {
151
- if (await _support.fs.exists(args.logFile)) {
152
- await _support.fs.unlink(args.logFile);
153
- }
154
-
155
- transports.push(createFileTransport(args, fileLogLevel));
156
- } catch (e) {
157
- console.log(`Tried to attach logging to file '${args.logFile}' but an error ` + `occurred: ${e.message}`);
122
+ let transports = [];
123
+ let consoleLogLevel = null;
124
+ let fileLogLevel = null;
125
+ if (args.loglevel && args.loglevel.match(':')) {
126
+ // --log-level arg can optionally provide diff logging levels for console and file, separated by a colon
127
+ const lvlPair = args.loglevel.split(':');
128
+ consoleLogLevel = lvlPair[0] || consoleLogLevel;
129
+ fileLogLevel = lvlPair[1] || fileLogLevel;
158
130
  }
159
- }
160
-
161
- if (args.webhook) {
162
- try {
163
- transports.push(createHttpTransport(args, fileLogLevel));
164
- } catch (e) {
165
- console.log(`Tried to attach logging to Http at ${args.webhook} but ` + `an error occurred: ${e.message}`);
131
+ else {
132
+ consoleLogLevel = fileLogLevel = args.loglevel;
166
133
  }
167
- }
168
-
169
- return transports;
170
- }
171
-
172
- async function init(args) {
173
- _npmlog.default.level = 'silent';
174
- useLocalTimeZone = args.localTimezone;
175
- clear();
176
- log = (0, _winston.createLogger)({
177
- transports: await createTransports(args),
178
- levels
179
- });
180
-
181
- _npmlog.default.on('log', logObj => {
182
- const winstonLevel = npmToWinstonLevels[logObj.level] || 'info';
183
- let msg = logObj.message;
184
-
185
- if (logObj.prefix) {
186
- const prefix = `[${logObj.prefix}]`;
187
- msg = `${args.logNoColors ? prefix : prefix.magenta} ${msg}`;
134
+ transports.push(createConsoleTransport(args, consoleLogLevel));
135
+ if (args.logFile) {
136
+ try {
137
+ // if we don't delete the log file, winston will always append and it will grow infinitely large;
138
+ // winston allows for limiting log file size, but as of 9.2.14 there's a serious bug when using
139
+ // maxFiles and maxSize together. https://github.com/flatiron/winston/issues/397
140
+ if (await support_1.fs.exists(args.logFile)) {
141
+ await support_1.fs.unlink(args.logFile);
142
+ }
143
+ transports.push(createFileTransport(args, fileLogLevel));
144
+ }
145
+ catch (e) {
146
+ // eslint-disable-next-line no-console
147
+ console.log(`Tried to attach logging to file '${args.logFile}' but an error ` + `occurred: ${e.message}`);
148
+ }
149
+ }
150
+ if (args.webhook) {
151
+ try {
152
+ transports.push(createHttpTransport(args, fileLogLevel));
153
+ }
154
+ catch (e) {
155
+ // eslint-disable-next-line no-console
156
+ console.log(`Tried to attach logging to Http at ${args.webhook} but ` +
157
+ `an error occurred: ${e.message}`);
158
+ }
188
159
  }
189
-
190
- log[winstonLevel](msg);
191
-
192
- if (args.logHandler && _lodash.default.isFunction(args.logHandler)) {
193
- args.logHandler(logObj.level, msg);
160
+ return transports;
161
+ }
162
+ function getColorizedPrefix(prefix) {
163
+ let prefixId = prefix.split('@')[0].trim();
164
+ prefixId = prefixId.split(' (')[0].trim();
165
+ if (encounteredPrefixes.indexOf(prefixId) < 0) {
166
+ encounteredPrefixes.push(prefixId);
194
167
  }
195
- });
168
+ // using a multiple of 16 should cause 16 colors to be created
169
+ const colorNumber = encounteredPrefixes.indexOf(prefixId) * 16;
170
+ // use the modulus to cycle around color wheel
171
+ return `\x1b[38;5;${colorNumber % 256}m${prefix}\x1b[0m`;
196
172
  }
197
-
173
+ async function init(args) {
174
+ npmlog_1.default.level = 'silent';
175
+ // set de facto param passed to timestamp function
176
+ useLocalTimeZone = args.localTimezone;
177
+ // clean up in case we have initiated before since npmlog is a global object
178
+ clear();
179
+ log = (0, winston_1.createLogger)({
180
+ transports: await createTransports(args),
181
+ levels,
182
+ });
183
+ // Capture logs emitted via npmlog and pass them through winston
184
+ npmlog_1.default.on('log', (logObj) => {
185
+ const winstonLevel = npmToWinstonLevels[logObj.level] || 'info';
186
+ let msg = logObj.message;
187
+ if (logObj.prefix) {
188
+ const prefix = `[${logObj.prefix}]`;
189
+ if (args.logNoColors) {
190
+ msg = `${prefix} ${msg}`;
191
+ }
192
+ if (prefix === '[Appium]') {
193
+ msg = `${prefix.magenta} ${msg}`;
194
+ }
195
+ else {
196
+ msg = `${getColorizedPrefix(prefix)} ${msg}`;
197
+ }
198
+ log[winstonLevel](msg);
199
+ if (args.logHandler && lodash_1.default.isFunction(args.logHandler)) {
200
+ args.logHandler(logObj.level, msg);
201
+ }
202
+ }
203
+ });
204
+ }
205
+ exports.init = init;
198
206
  function clear() {
199
- if (log) {
200
- for (let transport of _lodash.default.keys(log.transports)) {
201
- log.remove(transport);
207
+ if (log) {
208
+ for (let transport of lodash_1.default.keys(log.transports)) {
209
+ log.remove(transport);
210
+ }
202
211
  }
203
- }
204
-
205
- _npmlog.default.removeAllListeners('log');
212
+ npmlog_1.default.removeAllListeners('log');
206
213
  }
207
-
208
- var _default = init;
209
- exports.default = _default;
210
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsb2dnZXIiLCJwYXRjaExvZ2dlciIsIm5wbWxvZyIsImdsb2JhbCIsIl9nbG9iYWxfbnBtbG9nIiwibGV2ZWwiLCJsZXZlbHMiLCJkZWJ1ZyIsImluZm8iLCJ3YXJuIiwiZXJyb3IiLCJjb2xvcnMiLCJucG1Ub1dpbnN0b25MZXZlbHMiLCJzaWxseSIsInZlcmJvc2UiLCJodHRwIiwibG9nIiwidXNlTG9jYWxUaW1lWm9uZSIsInRpbWVzdGFtcEZvcm1hdCIsImZvcm1hdCIsInRpbWVzdGFtcCIsImRhdGUiLCJEYXRlIiwidmFsdWVPZiIsImdldFRpbWV6b25lT2Zmc2V0IiwidG9JU09TdHJpbmciLCJyZXBsYWNlIiwidHJpbSIsImNvbG9yaXplRm9ybWF0IiwiY29sb3JpemUiLCJzdHJpcENvbG9yRm9ybWF0Iiwic3RyaXBDb2xvciIsImNvZGUiLCJtZXNzYWdlIiwiY3JlYXRlQ29uc29sZVRyYW5zcG9ydCIsImFyZ3MiLCJsb2dMdmwiLCJ0cmFuc3BvcnRzIiwiQ29uc29sZSIsIm5hbWUiLCJoYW5kbGVFeGNlcHRpb25zIiwiZXhpdE9uRXJyb3IiLCJqc29uIiwic3RkZXJyTGV2ZWxzIiwiY29tYmluZSIsImFkanVzdERlYnVnIiwibG9nTm9Db2xvcnMiLCJwcmludGYiLCJwcmludEluZm8iLCJsb2dUaW1lc3RhbXAiLCJjcmVhdGVGaWxlVHJhbnNwb3J0IiwiRmlsZSIsImZpbGVuYW1lIiwibG9nRmlsZSIsIm1heEZpbGVzIiwiY3JlYXRlSHR0cFRyYW5zcG9ydCIsImhvc3QiLCJwb3J0Iiwid2ViaG9vayIsIm1hdGNoIiwiaG9zdEFuZFBvcnQiLCJzcGxpdCIsInBhcnNlSW50IiwiSHR0cCIsInBhdGgiLCJjcmVhdGVUcmFuc3BvcnRzIiwiY29uc29sZUxvZ0xldmVsIiwiZmlsZUxvZ0xldmVsIiwibG9nbGV2ZWwiLCJsdmxQYWlyIiwicHVzaCIsImZzIiwiZXhpc3RzIiwidW5saW5rIiwiZSIsImNvbnNvbGUiLCJpbml0IiwibG9jYWxUaW1lem9uZSIsImNsZWFyIiwiY3JlYXRlTG9nZ2VyIiwib24iLCJsb2dPYmoiLCJ3aW5zdG9uTGV2ZWwiLCJtc2ciLCJwcmVmaXgiLCJtYWdlbnRhIiwibG9nSGFuZGxlciIsIl8iLCJpc0Z1bmN0aW9uIiwidHJhbnNwb3J0Iiwia2V5cyIsInJlbW92ZSIsInJlbW92ZUFsbExpc3RlbmVycyJdLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9sb2dzaW5rLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBucG1sb2cgZnJvbSAnbnBtbG9nJztcbmltcG9ydCB7Y3JlYXRlTG9nZ2VyLCBmb3JtYXQsIHRyYW5zcG9ydHN9IGZyb20gJ3dpbnN0b24nO1xuaW1wb3J0IHtmcywgbG9nZ2VyfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuLy8gc2V0IHVwIGRpc3RyaWJ1dGVkIGxvZ2dpbmcgYmVmb3JlIGV2ZXJ5dGhpbmcgZWxzZVxubG9nZ2VyLnBhdGNoTG9nZ2VyKG5wbWxvZyk7XG5nbG9iYWwuX2dsb2JhbF9ucG1sb2cgPSBucG1sb2c7XG5cbi8vIG5wbWxvZyBpcyB1c2VkIG9ubHkgZm9yIGVtaXR0aW5nLCB3ZSB1c2Ugd2luc3RvbiBmb3Igb3V0cHV0XG5ucG1sb2cubGV2ZWwgPSAnaW5mbyc7XG5jb25zdCBsZXZlbHMgPSB7XG4gIGRlYnVnOiA0LFxuICBpbmZvOiAzLFxuICB3YXJuOiAyLFxuICBlcnJvcjogMSxcbn07XG5cbmNvbnN0IGNvbG9ycyA9IHtcbiAgaW5mbzogJ2N5YW4nLFxuICBkZWJ1ZzogJ2dyZXknLFxuICB3YXJuOiAneWVsbG93JyxcbiAgZXJyb3I6ICdyZWQnLFxufTtcblxuY29uc3QgbnBtVG9XaW5zdG9uTGV2ZWxzID0ge1xuICBzaWxseTogJ2RlYnVnJyxcbiAgdmVyYm9zZTogJ2RlYnVnJyxcbiAgZGVidWc6ICdkZWJ1ZycsXG4gIGluZm86ICdpbmZvJyxcbiAgaHR0cDogJ2luZm8nLFxuICB3YXJuOiAnd2FybicsXG4gIGVycm9yOiAnZXJyb3InLFxufTtcblxubGV0IGxvZyA9IG51bGw7XG5sZXQgdXNlTG9jYWxUaW1lWm9uZSA9IGZhbHNlO1xuXG4vLyBhZGQgdGhlIHRpbWVzdGFtcCBpbiB0aGUgY29ycmVjdCBmb3JtYXQgdG8gdGhlIGxvZyBpbmZvIG9iamVjdFxuY29uc3QgdGltZXN0YW1wRm9ybWF0ID0gZm9ybWF0LnRpbWVzdGFtcCh7XG4gIGZvcm1hdCgpIHtcbiAgICBsZXQgZGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgaWYgKHVzZUxvY2FsVGltZVpvbmUpIHtcbiAgICAgIGRhdGUgPSBuZXcgRGF0ZShkYXRlLnZhbHVlT2YoKSAtIGRhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSAqIDYwMDAwKTtcbiAgICB9XG4gICAgLy8gJzIwMTItMTEtMDRUMTQ6NTE6MDYuMTU3WicgLT4gJzIwMTItMTEtMDQgMTQ6NTE6MDY6MTU3J1xuICAgIHJldHVybiBkYXRlLnRvSVNPU3RyaW5nKCkucmVwbGFjZSgvW1RaXS9nLCAnICcpLnJlcGxhY2UoL1xcLi9nLCAnOicpLnRyaW0oKTtcbiAgfSxcbn0pO1xuXG4vLyBzZXQgdGhlIGN1c3RvbSBjb2xvcnNcbmNvbnN0IGNvbG9yaXplRm9ybWF0ID0gZm9ybWF0LmNvbG9yaXplKHtcbiAgY29sb3JzLFxufSk7XG5cbi8vIFN0cmlwIHRoZSBjb2xvciBtYXJraW5nIHdpdGhpbiBtZXNzYWdlc1xuY29uc3Qgc3RyaXBDb2xvckZvcm1hdCA9IGZvcm1hdChmdW5jdGlvbiBzdHJpcENvbG9yKGluZm8pIHtcbiAgY29uc3QgY29kZSA9IC9cXHUwMDFiXFxbKFxcZCsoO1xcZCspKik/bS9nOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnRyb2wtcmVnZXhcbiAgaW5mby5tZXNzYWdlID0gaW5mby5tZXNzYWdlLnJlcGxhY2UoY29kZSwgJycpO1xuICByZXR1cm4gaW5mbztcbn0pKCk7XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbnNvbGVUcmFuc3BvcnQoYXJncywgbG9nTHZsKSB7XG4gIHJldHVybiBuZXcgdHJhbnNwb3J0cy5Db25zb2xlKHtcbiAgICAvLyBgbmFtZWAgaXMgdW5zdXBwb3J0ZWQgcGVyIHdpbnN0b24ncyB0eXBlIGRlY2xhcmF0aW9uc1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBuYW1lOiAnY29uc29sZScsXG4gICAgaGFuZGxlRXhjZXB0aW9uczogdHJ1ZSxcbiAgICBleGl0T25FcnJvcjogZmFsc2UsXG4gICAganNvbjogZmFsc2UsXG4gICAgbGV2ZWw6IGxvZ0x2bCxcbiAgICBzdGRlcnJMZXZlbHM6IFsnZXJyb3InXSxcbiAgICBmb3JtYXQ6IGZvcm1hdC5jb21iaW5lKFxuICAgICAgZm9ybWF0KGZ1bmN0aW9uIGFkanVzdERlYnVnKGluZm8pIHtcbiAgICAgICAgLy8gcHJlcGVuZCBkZWJ1ZyBtYXJrZXIsIGFuZCBzaGlmdCB0byBgaW5mb2AgbG9nIGxldmVsXG4gICAgICAgIGlmIChpbmZvLmxldmVsID09PSAnZGVidWcnKSB7XG4gICAgICAgICAgaW5mby5sZXZlbCA9ICdpbmZvJztcbiAgICAgICAgICBpbmZvLm1lc3NhZ2UgPSBgW2RlYnVnXSAke2luZm8ubWVzc2FnZX1gO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBpbmZvO1xuICAgICAgfSkoKSxcbiAgICAgIHRpbWVzdGFtcEZvcm1hdCxcbiAgICAgIGFyZ3MubG9nTm9Db2xvcnMgPyBzdHJpcENvbG9yRm9ybWF0IDogY29sb3JpemVGb3JtYXQsXG4gICAgICBmb3JtYXQucHJpbnRmKGZ1bmN0aW9uIHByaW50SW5mbyhpbmZvKSB7XG4gICAgICAgIHJldHVybiBgJHthcmdzLmxvZ1RpbWVzdGFtcCA/IGAke2luZm8udGltZXN0YW1wfSAtIGAgOiAnJ30ke2luZm8ubWVzc2FnZX1gO1xuICAgICAgfSlcbiAgICApLFxuICB9KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRmlsZVRyYW5zcG9ydChhcmdzLCBsb2dMdmwpIHtcbiAgcmV0dXJuIG5ldyB0cmFuc3BvcnRzLkZpbGUoe1xuICAgIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgICBuYW1lOiAnZmlsZScsXG4gICAgZmlsZW5hbWU6IGFyZ3MubG9nRmlsZSxcbiAgICBtYXhGaWxlczogMSxcbiAgICBoYW5kbGVFeGNlcHRpb25zOiB0cnVlLFxuICAgIGV4aXRPbkVycm9yOiBmYWxzZSxcbiAgICBqc29uOiBmYWxzZSxcbiAgICBsZXZlbDogbG9nTHZsLFxuICAgIGZvcm1hdDogZm9ybWF0LmNvbWJpbmUoXG4gICAgICBzdHJpcENvbG9yRm9ybWF0LFxuICAgICAgdGltZXN0YW1wRm9ybWF0LFxuICAgICAgZm9ybWF0LnByaW50ZihmdW5jdGlvbiBwcmludEluZm8oaW5mbykge1xuICAgICAgICByZXR1cm4gYCR7aW5mby50aW1lc3RhbXB9ICR7aW5mby5tZXNzYWdlfWA7XG4gICAgICB9KVxuICAgICksXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVIdHRwVHJhbnNwb3J0KGFyZ3MsIGxvZ0x2bCkge1xuICBsZXQgaG9zdCA9ICcxMjcuMC4wLjEnO1xuICBsZXQgcG9ydCA9IDkwMDM7XG5cbiAgaWYgKGFyZ3Mud2ViaG9vay5tYXRjaCgnOicpKSB7XG4gICAgY29uc3QgaG9zdEFuZFBvcnQgPSBhcmdzLndlYmhvb2suc3BsaXQoJzonKTtcbiAgICBob3N0ID0gaG9zdEFuZFBvcnRbMF07XG4gICAgcG9ydCA9IHBhcnNlSW50KGhvc3RBbmRQb3J0WzFdLCAxMCk7XG4gIH1cblxuICByZXR1cm4gbmV3IHRyYW5zcG9ydHMuSHR0cCh7XG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIG5hbWU6ICdodHRwJyxcbiAgICBob3N0LFxuICAgIHBvcnQsXG4gICAgcGF0aDogJy8nLFxuICAgIGhhbmRsZUV4Y2VwdGlvbnM6IHRydWUsXG4gICAgZXhpdE9uRXJyb3I6IGZhbHNlLFxuICAgIGpzb246IGZhbHNlLFxuICAgIGxldmVsOiBsb2dMdmwsXG4gICAgZm9ybWF0OiBmb3JtYXQuY29tYmluZShcbiAgICAgIHN0cmlwQ29sb3JGb3JtYXQsXG4gICAgICBmb3JtYXQucHJpbnRmKGZ1bmN0aW9uIHByaW50SW5mbyhpbmZvKSB7XG4gICAgICAgIHJldHVybiBgJHtpbmZvLnRpbWVzdGFtcH0gJHtpbmZvLm1lc3NhZ2V9YDtcbiAgICAgIH0pXG4gICAgKSxcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVRyYW5zcG9ydHMoYXJncykge1xuICBsZXQgdHJhbnNwb3J0cyA9IFtdO1xuICBsZXQgY29uc29sZUxvZ0xldmVsID0gbnVsbDtcbiAgbGV0IGZpbGVMb2dMZXZlbCA9IG51bGw7XG5cbiAgaWYgKGFyZ3MubG9nbGV2ZWwgJiYgYXJncy5sb2dsZXZlbC5tYXRjaCgnOicpKSB7XG4gICAgLy8gLS1sb2ctbGV2ZWwgYXJnIGNhbiBvcHRpb25hbGx5IHByb3ZpZGUgZGlmZiBsb2dnaW5nIGxldmVscyBmb3IgY29uc29sZSBhbmQgZmlsZSwgc2VwYXJhdGVkIGJ5IGEgY29sb25cbiAgICBjb25zdCBsdmxQYWlyID0gYXJncy5sb2dsZXZlbC5zcGxpdCgnOicpO1xuICAgIGNvbnNvbGVMb2dMZXZlbCA9IGx2bFBhaXJbMF0gfHwgY29uc29sZUxvZ0xldmVsO1xuICAgIGZpbGVMb2dMZXZlbCA9IGx2bFBhaXJbMV0gfHwgZmlsZUxvZ0xldmVsO1xuICB9IGVsc2Uge1xuICAgIGNvbnNvbGVMb2dMZXZlbCA9IGZpbGVMb2dMZXZlbCA9IGFyZ3MubG9nbGV2ZWw7XG4gIH1cblxuICB0cmFuc3BvcnRzLnB1c2goY3JlYXRlQ29uc29sZVRyYW5zcG9ydChhcmdzLCBjb25zb2xlTG9nTGV2ZWwpKTtcblxuICBpZiAoYXJncy5sb2dGaWxlKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIGlmIHdlIGRvbid0IGRlbGV0ZSB0aGUgbG9nIGZpbGUsIHdpbnN0b24gd2lsbCBhbHdheXMgYXBwZW5kIGFuZCBpdCB3aWxsIGdyb3cgaW5maW5pdGVseSBsYXJnZTtcbiAgICAgIC8vIHdpbnN0b24gYWxsb3dzIGZvciBsaW1pdGluZyBsb2cgZmlsZSBzaXplLCBidXQgYXMgb2YgOS4yLjE0IHRoZXJlJ3MgYSBzZXJpb3VzIGJ1ZyB3aGVuIHVzaW5nXG4gICAgICAvLyBtYXhGaWxlcyBhbmQgbWF4U2l6ZSB0b2dldGhlci4gaHR0cHM6Ly9naXRodWIuY29tL2ZsYXRpcm9uL3dpbnN0b24vaXNzdWVzLzM5N1xuICAgICAgaWYgKGF3YWl0IGZzLmV4aXN0cyhhcmdzLmxvZ0ZpbGUpKSB7XG4gICAgICAgIGF3YWl0IGZzLnVubGluayhhcmdzLmxvZ0ZpbGUpO1xuICAgICAgfVxuXG4gICAgICB0cmFuc3BvcnRzLnB1c2goY3JlYXRlRmlsZVRyYW5zcG9ydChhcmdzLCBmaWxlTG9nTGV2ZWwpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgY29uc29sZS5sb2coXG4gICAgICAgIGBUcmllZCB0byBhdHRhY2ggbG9nZ2luZyB0byBmaWxlICcke2FyZ3MubG9nRmlsZX0nIGJ1dCBhbiBlcnJvciBgICsgYG9jY3VycmVkOiAke2UubWVzc2FnZX1gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIGlmIChhcmdzLndlYmhvb2spIHtcbiAgICB0cnkge1xuICAgICAgdHJhbnNwb3J0cy5wdXNoKGNyZWF0ZUh0dHBUcmFuc3BvcnQoYXJncywgZmlsZUxvZ0xldmVsKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICBgVHJpZWQgdG8gYXR0YWNoIGxvZ2dpbmcgdG8gSHR0cCBhdCAke2FyZ3Mud2ViaG9va30gYnV0IGAgK1xuICAgICAgICAgIGBhbiBlcnJvciBvY2N1cnJlZDogJHtlLm1lc3NhZ2V9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJhbnNwb3J0cztcbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5pdChhcmdzKSB7XG4gIG5wbWxvZy5sZXZlbCA9ICdzaWxlbnQnO1xuICAvLyBzZXQgZGUgZmFjdG8gcGFyYW0gcGFzc2VkIHRvIHRpbWVzdGFtcCBmdW5jdGlvblxuICB1c2VMb2NhbFRpbWVab25lID0gYXJncy5sb2NhbFRpbWV6b25lO1xuXG4gIC8vIGNsZWFuIHVwIGluIGNhc2Ugd2UgaGF2ZSBpbml0aWF0ZWQgYmVmb3JlIHNpbmNlIG5wbWxvZyBpcyBhIGdsb2JhbCBvYmplY3RcbiAgY2xlYXIoKTtcblxuICBsb2cgPSBjcmVhdGVMb2dnZXIoe1xuICAgIHRyYW5zcG9ydHM6IGF3YWl0IGNyZWF0ZVRyYW5zcG9ydHMoYXJncyksXG4gICAgbGV2ZWxzLFxuICB9KTtcblxuICAvLyBDYXB0dXJlIGxvZ3MgZW1pdHRlZCB2aWEgbnBtbG9nIGFuZCBwYXNzIHRoZW0gdGhyb3VnaCB3aW5zdG9uXG4gIG5wbWxvZy5vbignbG9nJywgKGxvZ09iaikgPT4ge1xuICAgIGNvbnN0IHdpbnN0b25MZXZlbCA9IG5wbVRvV2luc3RvbkxldmVsc1tsb2dPYmoubGV2ZWxdIHx8ICdpbmZvJztcbiAgICBsZXQgbXNnID0gbG9nT2JqLm1lc3NhZ2U7XG4gICAgaWYgKGxvZ09iai5wcmVmaXgpIHtcbiAgICAgIGNvbnN0IHByZWZpeCA9IGBbJHtsb2dPYmoucHJlZml4fV1gO1xuICAgICAgbXNnID0gYCR7YXJncy5sb2dOb0NvbG9ycyA/IHByZWZpeCA6IHByZWZpeC5tYWdlbnRhfSAke21zZ31gO1xuICAgIH1cbiAgICBsb2dbd2luc3RvbkxldmVsXShtc2cpO1xuICAgIGlmIChhcmdzLmxvZ0hhbmRsZXIgJiYgXy5pc0Z1bmN0aW9uKGFyZ3MubG9nSGFuZGxlcikpIHtcbiAgICAgIGFyZ3MubG9nSGFuZGxlcihsb2dPYmoubGV2ZWwsIG1zZyk7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gY2xlYXIoKSB7XG4gIGlmIChsb2cpIHtcbiAgICBmb3IgKGxldCB0cmFuc3BvcnQgb2YgXy5rZXlzKGxvZy50cmFuc3BvcnRzKSkge1xuICAgICAgbG9nLnJlbW92ZSh0cmFuc3BvcnQpO1xuICAgIH1cbiAgfVxuICBucG1sb2cucmVtb3ZlQWxsTGlzdGVuZXJzKCdsb2cnKTtcbn1cblxuZXhwb3J0IHtpbml0LCBjbGVhcn07XG5leHBvcnQgZGVmYXVsdCBpbml0O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBR0FBLGVBQUEsQ0FBT0MsV0FBUCxDQUFtQkMsZUFBbkI7O0FBQ0FDLE1BQU0sQ0FBQ0MsY0FBUCxHQUF3QkYsZUFBeEI7QUFHQUEsZUFBQSxDQUFPRyxLQUFQLEdBQWUsTUFBZjtBQUNBLE1BQU1DLE1BQU0sR0FBRztFQUNiQyxLQUFLLEVBQUUsQ0FETTtFQUViQyxJQUFJLEVBQUUsQ0FGTztFQUdiQyxJQUFJLEVBQUUsQ0FITztFQUliQyxLQUFLLEVBQUU7QUFKTSxDQUFmO0FBT0EsTUFBTUMsTUFBTSxHQUFHO0VBQ2JILElBQUksRUFBRSxNQURPO0VBRWJELEtBQUssRUFBRSxNQUZNO0VBR2JFLElBQUksRUFBRSxRQUhPO0VBSWJDLEtBQUssRUFBRTtBQUpNLENBQWY7QUFPQSxNQUFNRSxrQkFBa0IsR0FBRztFQUN6QkMsS0FBSyxFQUFFLE9BRGtCO0VBRXpCQyxPQUFPLEVBQUUsT0FGZ0I7RUFHekJQLEtBQUssRUFBRSxPQUhrQjtFQUl6QkMsSUFBSSxFQUFFLE1BSm1CO0VBS3pCTyxJQUFJLEVBQUUsTUFMbUI7RUFNekJOLElBQUksRUFBRSxNQU5tQjtFQU96QkMsS0FBSyxFQUFFO0FBUGtCLENBQTNCO0FBVUEsSUFBSU0sR0FBRyxHQUFHLElBQVY7QUFDQSxJQUFJQyxnQkFBZ0IsR0FBRyxLQUF2Qjs7QUFHQSxNQUFNQyxlQUFlLEdBQUdDLGVBQUEsQ0FBT0MsU0FBUCxDQUFpQjtFQUN2Q0QsTUFBTSxHQUFHO0lBQ1AsSUFBSUUsSUFBSSxHQUFHLElBQUlDLElBQUosRUFBWDs7SUFDQSxJQUFJTCxnQkFBSixFQUFzQjtNQUNwQkksSUFBSSxHQUFHLElBQUlDLElBQUosQ0FBU0QsSUFBSSxDQUFDRSxP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
214
+ exports.clear = clear;
215
+ exports.default = init;
216
+ //# sourceMappingURL=logsink.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logsink.js","names":["logger","patchLogger","npmlog","global","_global_npmlog","level","levels","debug","info","warn","error","colors","npmToWinstonLevels","silly","verbose","http","log","useLocalTimeZone","timestampFormat","format","timestamp","date","Date","valueOf","getTimezoneOffset","toISOString","replace","trim","colorizeFormat","colorize","stripColorFormat","stripColor","code","message","createConsoleTransport","args","logLvl","transports","Console","name","handleExceptions","exitOnError","json","stderrLevels","combine","adjustDebug","logNoColors","printf","printInfo","logTimestamp","createFileTransport","File","filename","logFile","maxFiles","createHttpTransport","host","port","webhook","match","hostAndPort","split","parseInt","Http","path","createTransports","consoleLogLevel","fileLogLevel","loglevel","lvlPair","push","fs","exists","unlink","e","console","init","localTimezone","clear","createLogger","on","logObj","winstonLevel","msg","prefix","magenta","logHandler","_","isFunction","transport","keys","remove","removeAllListeners"],"sources":["../../lib/logsink.js"],"sourcesContent":["import npmlog from 'npmlog';\nimport {createLogger, format, transports} from 'winston';\nimport {fs, logger} from '@appium/support';\nimport _ from 'lodash';\n\n// set up distributed logging before everything else\nlogger.patchLogger(npmlog);\nglobal._global_npmlog = npmlog;\n\n// npmlog is used only for emitting, we use winston for output\nnpmlog.level = 'info';\nconst levels = {\n debug: 4,\n info: 3,\n warn: 2,\n error: 1,\n};\n\nconst colors = {\n info: 'cyan',\n debug: 'grey',\n warn: 'yellow',\n error: 'red',\n};\n\nconst npmToWinstonLevels = {\n silly: 'debug',\n verbose: 'debug',\n debug: 'debug',\n info: 'info',\n http: 'info',\n warn: 'warn',\n error: 'error',\n};\n\nlet log = null;\nlet useLocalTimeZone = false;\n\n// add the timestamp in the correct format to the log info object\nconst timestampFormat = format.timestamp({\n format() {\n let date = new Date();\n if (useLocalTimeZone) {\n date = new Date(date.valueOf() - date.getTimezoneOffset() * 60000);\n }\n // '2012-11-04T14:51:06.157Z' -> '2012-11-04 14:51:06:157'\n return date.toISOString().replace(/[TZ]/g, ' ').replace(/\\./g, ':').trim();\n },\n});\n\n// set the custom colors\nconst colorizeFormat = format.colorize({\n colors,\n});\n\n// Strip the color marking within messages\nconst stripColorFormat = format(function stripColor(info) {\n const code = /\\u001b\\[(\\d+(;\\d+)*)?m/g; // eslint-disable-line no-control-regex\n info.message = info.message.replace(code, '');\n return info;\n})();\n\nfunction createConsoleTransport(args, logLvl) {\n return new transports.Console({\n // `name` is unsupported per winston's type declarations\n // @ts-expect-error\n name: 'console',\n handleExceptions: true,\n exitOnError: false,\n json: false,\n level: logLvl,\n stderrLevels: ['error'],\n format: format.combine(\n format(function adjustDebug(info) {\n // prepend debug marker, and shift to `info` log level\n if (info.level === 'debug') {\n info.level = 'info';\n info.message = `[debug] ${info.message}`;\n }\n return info;\n })(),\n timestampFormat,\n args.logNoColors ? stripColorFormat : colorizeFormat,\n format.printf(function printInfo(info) {\n return `${args.logTimestamp ? `${info.timestamp} - ` : ''}${info.message}`;\n })\n ),\n });\n}\n\nfunction createFileTransport(args, logLvl) {\n return new transports.File({\n // @ts-expect-error\n name: 'file',\n filename: args.logFile,\n maxFiles: 1,\n handleExceptions: true,\n exitOnError: false,\n json: false,\n level: logLvl,\n format: format.combine(\n stripColorFormat,\n timestampFormat,\n format.printf(function printInfo(info) {\n return `${info.timestamp} ${info.message}`;\n })\n ),\n });\n}\n\nfunction createHttpTransport(args, logLvl) {\n let host = '127.0.0.1';\n let port = 9003;\n\n if (args.webhook.match(':')) {\n const hostAndPort = args.webhook.split(':');\n host = hostAndPort[0];\n port = parseInt(hostAndPort[1], 10);\n }\n\n return new transports.Http({\n // @ts-expect-error\n name: 'http',\n host,\n port,\n path: '/',\n handleExceptions: true,\n exitOnError: false,\n json: false,\n level: logLvl,\n format: format.combine(\n stripColorFormat,\n format.printf(function printInfo(info) {\n return `${info.timestamp} ${info.message}`;\n })\n ),\n });\n}\n\nasync function createTransports(args) {\n let transports = [];\n let consoleLogLevel = null;\n let fileLogLevel = null;\n\n if (args.loglevel && args.loglevel.match(':')) {\n // --log-level arg can optionally provide diff logging levels for console and file, separated by a colon\n const lvlPair = args.loglevel.split(':');\n consoleLogLevel = lvlPair[0] || consoleLogLevel;\n fileLogLevel = lvlPair[1] || fileLogLevel;\n } else {\n consoleLogLevel = fileLogLevel = args.loglevel;\n }\n\n transports.push(createConsoleTransport(args, consoleLogLevel));\n\n if (args.logFile) {\n try {\n // if we don't delete the log file, winston will always append and it will grow infinitely large;\n // winston allows for limiting log file size, but as of 9.2.14 there's a serious bug when using\n // maxFiles and maxSize together. https://github.com/flatiron/winston/issues/397\n if (await fs.exists(args.logFile)) {\n await fs.unlink(args.logFile);\n }\n\n transports.push(createFileTransport(args, fileLogLevel));\n } catch (e) {\n // eslint-disable-next-line no-console\n console.log(\n `Tried to attach logging to file '${args.logFile}' but an error ` + `occurred: ${e.message}`\n );\n }\n }\n\n if (args.webhook) {\n try {\n transports.push(createHttpTransport(args, fileLogLevel));\n } catch (e) {\n // eslint-disable-next-line no-console\n console.log(\n `Tried to attach logging to Http at ${args.webhook} but ` +\n `an error occurred: ${e.message}`\n );\n }\n }\n\n return transports;\n}\n\nasync function init(args) {\n npmlog.level = 'silent';\n // set de facto param passed to timestamp function\n useLocalTimeZone = args.localTimezone;\n\n // clean up in case we have initiated before since npmlog is a global object\n clear();\n\n log = createLogger({\n transports: await createTransports(args),\n levels,\n });\n\n // Capture logs emitted via npmlog and pass them through winston\n npmlog.on('log', (logObj) => {\n const winstonLevel = npmToWinstonLevels[logObj.level] || 'info';\n let msg = logObj.message;\n if (logObj.prefix) {\n const prefix = `[${logObj.prefix}]`;\n msg = `${args.logNoColors ? prefix : prefix.magenta} ${msg}`;\n }\n log[winstonLevel](msg);\n if (args.logHandler && _.isFunction(args.logHandler)) {\n args.logHandler(logObj.level, msg);\n }\n });\n}\n\nfunction clear() {\n if (log) {\n for (let transport of _.keys(log.transports)) {\n log.remove(transport);\n }\n }\n npmlog.removeAllListeners('log');\n}\n\nexport {init, clear};\nexport default init;\n"],"mappings":"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"}
1
+ {"version":3,"file":"logsink.js","sourceRoot":"","sources":["../../lib/logsink.js"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAC5B,qCAAyD;AACzD,6CAA2C;AAC3C,oDAAuB;AAEvB,oDAAoD;AACpD,gBAAM,CAAC,WAAW,CAAC,gBAAM,CAAC,CAAC;AAC3B,MAAM,CAAC,cAAc,GAAG,gBAAM,CAAC;AAE/B,8DAA8D;AAC9D,gBAAM,CAAC,KAAK,GAAG,MAAM,CAAC;AACtB,MAAM,MAAM,GAAG;IACb,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACT,CAAC;AAEF,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,MAAM;IACb,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,KAAK;CACb,CAAC;AAEF,MAAM,kBAAkB,GAAG;IACzB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;CACf,CAAC;AAEF,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAE/B,IAAI,GAAG,GAAG,IAAI,CAAC;AACf,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAE7B,iEAAiE;AACjE,MAAM,eAAe,GAAG,gBAAM,CAAC,SAAS,CAAC;IACvC,MAAM;QACJ,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACtB,IAAI,gBAAgB,EAAE;YACpB,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,GAAG,KAAK,CAAC,CAAC;SACpE;QACD,0DAA0D;QAC1D,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAC7E,CAAC;CACF,CAAC,CAAC;AAEH,wBAAwB;AACxB,MAAM,cAAc,GAAG,gBAAM,CAAC,QAAQ,CAAC;IACrC,MAAM;CACP,CAAC,CAAC;AAEH,0CAA0C;AAC1C,MAAM,gBAAgB,GAAG,IAAA,gBAAM,EAAC,SAAS,UAAU,CAAC,IAAI;IACtD,MAAM,IAAI,GAAG,yBAAyB,CAAC,CAAC,uCAAuC;IAC/E,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC;AACd,CAAC,CAAC,EAAE,CAAC;AAEL,SAAS,sBAAsB,CAAC,IAAI,EAAE,MAAM;IAC1C,OAAO,IAAI,oBAAU,CAAC,OAAO,CAAC;QAC5B,wDAAwD;QACxD,mBAAmB;QACnB,IAAI,EAAE,SAAS;QACf,gBAAgB,EAAE,IAAI;QACtB,WAAW,EAAE,KAAK;QAClB,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,MAAM;QACb,YAAY,EAAE,CAAC,OAAO,CAAC;QACvB,MAAM,EAAE,gBAAM,CAAC,OAAO,CACpB,IAAA,gBAAM,EAAC,SAAS,WAAW,CAAC,IAAI;YAC9B,sDAAsD;YACtD,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO,EAAE;gBAC1B,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;gBACpB,IAAI,CAAC,OAAO,GAAG,WAAW,IAAI,CAAC,OAAO,EAAE,CAAC;aAC1C;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EAAE,EACJ,eAAe,EACf,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,EACpD,gBAAM,CAAC,MAAM,CAAC,SAAS,SAAS,CAAC,IAAI;YACnC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7E,CAAC,CAAC,CACH;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAI,EAAE,MAAM;IACvC,OAAO,IAAI,oBAAU,CAAC,IAAI,CAAC;QACzB,mBAAmB;QACnB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI,CAAC,OAAO;QACtB,QAAQ,EAAE,CAAC;QACX,gBAAgB,EAAE,IAAI;QACtB,WAAW,EAAE,KAAK;QAClB,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,gBAAM,CAAC,OAAO,CACpB,gBAAgB,EAChB,eAAe,EACf,gBAAM,CAAC,MAAM,CAAC,SAAS,SAAS,CAAC,IAAI;YACnC,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7C,CAAC,CAAC,CACH;KACF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAI,EAAE,MAAM;IACvC,IAAI,IAAI,GAAG,WAAW,CAAC;IACvB,IAAI,IAAI,GAAG,IAAI,CAAC;IAEhB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC5C,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;KACrC;IAED,OAAO,IAAI,oBAAU,CAAC,IAAI,CAAC;QACzB,mBAAmB;QACnB,IAAI,EAAE,MAAM;QACZ,IAAI;QACJ,IAAI;QACJ,IAAI,EAAE,GAAG;QACT,gBAAgB,EAAE,IAAI;QACtB,WAAW,EAAE,KAAK;QAClB,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,gBAAM,CAAC,OAAO,CACpB,gBAAgB,EAChB,gBAAM,CAAC,MAAM,CAAC,SAAS,SAAS,CAAC,IAAI;YACnC,OAAO,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7C,CAAC,CAAC,CACH;KACF,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,IAAI;IAClC,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,eAAe,GAAG,IAAI,CAAC;IAC3B,IAAI,YAAY,GAAG,IAAI,CAAC;IAExB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QAC7C,wGAAwG;QACxG,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzC,eAAe,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,eAAe,CAAC;QAChD,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC;KAC3C;SAAM;QACL,eAAe,GAAG,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;KAChD;IAED,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;IAE/D,IAAI,IAAI,CAAC,OAAO,EAAE;QAChB,IAAI;YACF,iGAAiG;YACjG,+FAA+F;YAC/F,gFAAgF;YAChF,IAAI,MAAM,YAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBACjC,MAAM,YAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aAC/B;YAED,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;SAC1D;QAAC,OAAO,CAAC,EAAE;YACV,sCAAsC;YACtC,OAAO,CAAC,GAAG,CACT,oCAAoC,IAAI,CAAC,OAAO,iBAAiB,GAAG,aAAa,CAAC,CAAC,OAAO,EAAE,CAC7F,CAAC;SACH;KACF;IAED,IAAI,IAAI,CAAC,OAAO,EAAE;QAChB,IAAI;YACF,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;SAC1D;QAAC,OAAO,CAAC,EAAE;YACV,sCAAsC;YACtC,OAAO,CAAC,GAAG,CACT,sCAAsC,IAAI,CAAC,OAAO,OAAO;gBACvD,sBAAsB,CAAC,CAAC,OAAO,EAAE,CACpC,CAAC;SACH;KACF;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,kBAAkB,CAAC,MAAM;IAChC,IAAI,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3C,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC1C,IAAI,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;QAC7C,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KACpC;IACD,8DAA8D;IAC9D,MAAM,WAAW,GAAG,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;IAC/D,8CAA8C;IAC9C,OAAO,aAAa,WAAW,GAAG,GAAG,IAAI,MAAM,SAAS,CAAC;AAC3D,CAAC;AAED,KAAK,UAAU,IAAI,CAAC,IAAI;IACtB,gBAAM,CAAC,KAAK,GAAG,QAAQ,CAAC;IAExB,kDAAkD;IAClD,gBAAgB,GAAG,IAAI,CAAC,aAAa,CAAC;IAEtC,4EAA4E;IAC5E,KAAK,EAAE,CAAC;IAER,GAAG,GAAG,IAAA,sBAAY,EAAC;QACjB,UAAU,EAAE,MAAM,gBAAgB,CAAC,IAAI,CAAC;QACxC,MAAM;KACP,CAAC,CAAC;IAEH,gEAAgE;IAChE,gBAAM,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE;QAC1B,MAAM,YAAY,GAAG,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC;QAChE,IAAI,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;QACzB,IAAI,MAAM,CAAC,MAAM,EAAE;YACjB,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YACpC,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,GAAG,GAAG,GAAG,MAAM,IAAI,GAAG,EAAE,CAAC;aAC1B;YAAC,IAAI,MAAM,KAAK,UAAU,EAAE;gBAC3B,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO,IAAI,GAAG,EAAE,CAAC;aAClC;iBAAM;gBACL,GAAG,GAAG,GAAG,kBAAkB,CAAC,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;aAC9C;YACD,GAAG,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,IAAI,CAAC,UAAU,IAAI,gBAAC,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;gBACpD,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;aACpC;SACF;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAWO,oBAAI;AATZ,SAAS,KAAK;IACZ,IAAI,GAAG,EAAE;QACP,KAAK,IAAI,SAAS,IAAI,gBAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YAC5C,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SACvB;KACF;IACD,gBAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACnC,CAAC;AAEa,sBAAK;AACnB,kBAAe,IAAI,CAAC"}
@@ -4,7 +4,12 @@ export type DriverType = import('@appium/types').DriverType;
4
4
  export type PluginType = import('@appium/types').PluginType;
5
5
  export type DriverClass = import('@appium/types').DriverClass;
6
6
  export type PluginClass = import('@appium/types').PluginClass;
7
- export type WithServerSubcommand = import('appium/types').WithServerSubcommand;
7
+ export type CliCommand = import('appium/types').CliCommand;
8
+ export type CliExtensionSubcommand = import('appium/types').CliExtensionSubcommand;
9
+ export type CliExtensionCommand = import('appium/types').CliExtensionCommand;
10
+ export type ServerCommand = import('appium/types').ServerCommand;
11
+ export type DriverCommand = import('appium/types').DriverCommand;
12
+ export type PluginCommand = import('appium/types').PluginCommand;
8
13
  export type DriverNameMap = import('./extension').DriverNameMap;
9
14
  export type PluginNameMap = import('./extension').PluginNameMap;
10
15
  /**
@@ -21,17 +26,18 @@ export type ServerInitData = {
21
26
  */
22
27
  parsedArgs: import('appium/types').ParsedArgs;
23
28
  };
24
- export type ServerInitResult = ServerInitData & import('./extension').ExtensionConfigs;
25
- export type Args<T = import("appium/types").WithServerSubcommand> = import('appium/types').Args<T>;
26
- export type ParsedArgs<T = import("appium/types").WithServerSubcommand> = import('appium/types').ParsedArgs<T>;
29
+ export type InitResult<Cmd extends import("appium/types").CliCommand> = Cmd extends ServerCommand ? ServerInitData & import('./extension').ExtensionConfigs : ExtCommandInitResult;
30
+ export type Args<Cmd extends import("appium/types").CliCommand = "server", SubCmd extends void | import("appium/types").CliExtensionSubcommand = void> = import('appium/types').Args<Cmd, SubCmd>;
31
+ export type ParsedArgs<Cmd extends import("appium/types").CliCommand = "server", SubCmd extends void | import("appium/types").CliExtensionSubcommand = void> = import('appium/types').ParsedArgs<Cmd, SubCmd>;
27
32
  /**
28
33
  * Initializes Appium's config. Starts server if appropriate and resolves the
29
34
  * server instance if so; otherwise resolves w/ `undefined`.
30
- * @template [T=WithServerSubcommand]
31
- * @param {Args<T>} [args] - Arguments from CLI or otherwise
32
- * @returns {Promise<import('@appium/types').AppiumServer|undefined>}
35
+ * @template {CliCommand} [Cmd=ServerCommand]
36
+ * @template {CliExtensionSubcommand|void} [SubCmd=void]
37
+ * @param {Args<Cmd, SubCmd>} [args] - Arguments from CLI or otherwise
38
+ * @returns {Promise<Cmd extends ServerCommand ? import('@appium/types').AppiumServer : void>}
33
39
  */
34
- export function main<T = import("appium/types").WithServerSubcommand>(args?: Args<T> | undefined): Promise<import('@appium/types').AppiumServer | undefined>;
40
+ export function main<Cmd extends import("appium/types").CliCommand = "server", SubCmd extends void | import("appium/types").CliExtensionSubcommand = void>(args?: import("appium/types").Args<Cmd, SubCmd> | undefined): Promise<Cmd extends "server" ? import("@appium/types").AppiumServer : void>;
35
41
  /**
36
42
  * Initializes Appium, but does not start the server.
37
43
  *
@@ -39,16 +45,17 @@ export function main<T = import("appium/types").WithServerSubcommand>(args?: Arg
39
45
  *
40
46
  * If `args` contains a non-empty `subcommand` which is not `server`, this function will return an empty object.
41
47
  *
42
- * @template [T=WithServerSubcommand]
43
- * @param {Args<T>} [args] - Partial args (progammatic usage only)
44
- * @returns {Promise<ServerInitResult | ExtCommandInitResult>}
48
+ * @template {CliCommand} [Cmd=ServerCommand]
49
+ * @template {CliExtensionSubcommand|void} [SubCmd=void]
50
+ * @param {Args<Cmd, SubCmd>} [args] - Partial args (progammatic usage only)
51
+ * @returns {Promise<InitResult<Cmd>>}
45
52
  * @example
46
53
  * import {init, getSchema} from 'appium';
47
54
  * const options = {}; // config object
48
55
  * await init(options);
49
56
  * const schema = getSchema(); // entire config schema including plugins and drivers
50
57
  */
51
- export function init<T = import("appium/types").WithServerSubcommand>(args?: Args<T> | undefined): Promise<ServerInitResult | ExtCommandInitResult>;
58
+ export function init<Cmd extends import("appium/types").CliCommand = "server", SubCmd extends void | import("appium/types").CliExtensionSubcommand = void>(args?: import("appium/types").Args<Cmd, SubCmd> | undefined): Promise<InitResult<Cmd>>;
52
59
  export const resolveAppiumHome: ((cwd?: string | undefined) => Promise<string>) & _.MemoizedFunction;
53
60
  import _ from "lodash";
54
61
  export { finalizeSchema, getSchema, validate } from "./schema/schema";
@@ -1 +1 @@
1
- {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../lib/main.js"],"names":[],"mappings":";;yBA2Ya,OAAO,eAAe,EAAE,UAAU;yBAClC,OAAO,eAAe,EAAE,UAAU;0BAClC,OAAO,eAAe,EAAE,WAAW;0BACnC,OAAO,eAAe,EAAE,WAAW;mCACnC,OAAO,cAAc,EAAE,oBAAoB;4BAC3C,OAAO,aAAa,EAAE,aAAa;4BACnC,OAAO,aAAa,EAAE,aAAa;;;;mCAKlC,EAAE;;;;;kBAKF,OAAO,UAAU,EAAE,YAAY;;;;gBAC/B,OAAO,cAAc,EAAE,UAAU;;+BAIlC,cAAc,GAAG,OAAO,aAAa,EAAE,gBAAgB;oEAKvD,OAAO,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;0EAK9B,OAAO,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC;AAnJjD;;;;;;GAMG;AACH,mGAFa,QAAQ,OAAO,eAAe,EAAE,YAAY,GAAC,SAAS,CAAC,CAgGnE;AAjOD;;;;;;;;;;;;;;;GAeG;AACH,mGAPa,QAAQ,gBAAgB,GAAG,oBAAoB,CAAC,CAiH5D"}
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../lib/main.js"],"names":[],"mappings":";;yBA2Ya,OAAO,eAAe,EAAE,UAAU;yBAClC,OAAO,eAAe,EAAE,UAAU;0BAClC,OAAO,eAAe,EAAE,WAAW;0BACnC,OAAO,eAAe,EAAE,WAAW;yBACnC,OAAO,cAAc,EAAE,UAAU;qCACjC,OAAO,cAAc,EAAE,sBAAsB;kCAC7C,OAAO,cAAc,EAAE,mBAAmB;4BAC1C,OAAO,cAAc,EAAE,aAAa;4BACpC,OAAO,cAAc,EAAE,aAAa;4BACpC,OAAO,cAAc,EAAE,aAAa;4BACpC,OAAO,aAAa,EAAE,aAAa;4BACnC,OAAO,aAAa,EAAE,aAAa;;;;mCAKlC,EAAE;;;;;kBAKF,OAAO,UAAU,EAAE,YAAY;;;;gBAC/B,OAAO,cAAc,EAAE,UAAU;;wEAKlC,GAAG,SAAS,aAAa,GAAG,cAAc,GAAG,OAAO,aAAa,EAAE,gBAAgB,GAAG,oBAAoB;yJAM1G,OAAO,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;+JAMxC,OAAO,cAAc,EAAE,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;AAjK3D;;;;;;;GAOG;AACH,qSAmGC;AApOD;;;;;;;;;;;;;;;;GAgBG;AACH,kPAsGC"}