api.js 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", {
  3. value: true
  4. });
  5. exports.makeTagsFilter = makeTagsFilter;
  6. exports.makeAppFilter = makeAppFilter;
  7. exports.makeMatchFilter = makeMatchFilter;
  8. exports.makeCustomFilter = makeCustomFilter;
  9. exports.logkitty = logkitty;
  10. Object.defineProperty(exports, "Entry", {
  11. enumerable: true,
  12. get: function () {
  13. return _types.Entry;
  14. }
  15. });
  16. Object.defineProperty(exports, "AndroidPriority", {
  17. enumerable: true,
  18. get: function () {
  19. return _constants.Priority;
  20. }
  21. });
  22. Object.defineProperty(exports, "IosPriority", {
  23. enumerable: true,
  24. get: function () {
  25. return _constants2.Priority;
  26. }
  27. });
  28. Object.defineProperty(exports, "formatEntry", {
  29. enumerable: true,
  30. get: function () {
  31. return _formatters.formatEntry;
  32. }
  33. });
  34. Object.defineProperty(exports, "formatError", {
  35. enumerable: true,
  36. get: function () {
  37. return _formatters.formatError;
  38. }
  39. });
  40. var _events = require("events");
  41. var _types = require("./types");
  42. var _AndroidFilter = _interopRequireDefault(require("./android/AndroidFilter"));
  43. var _AndroidParser = _interopRequireDefault(require("./android/AndroidParser"));
  44. var _adb = require("./android/adb");
  45. var _constants = require("./android/constants");
  46. var _IosParser = _interopRequireDefault(require("./ios/IosParser"));
  47. var _IosFilter = _interopRequireDefault(require("./ios/IosFilter"));
  48. var _simulator = require("./ios/simulator");
  49. var _errors = require("./errors");
  50. var _constants2 = require("./ios/constants");
  51. var _formatters = require("./formatters");
  52. function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
  53. /* Common */
  54. /* Android */
  55. /* iOS */
  56. /* Exports */
  57. function makeTagsFilter(...tags) {
  58. return (platform, minPriority) => {
  59. const filter = platform === 'android' ? new _AndroidFilter.default(minPriority) : new _IosFilter.default(minPriority);
  60. filter.setFilterByTag(tags);
  61. return filter;
  62. };
  63. }
  64. function makeAppFilter(appIdentifier) {
  65. return (platform, minPriority, adbPath) => {
  66. if (platform !== 'android') {
  67. throw new Error('App filter is only available for Android');
  68. }
  69. const filter = new _AndroidFilter.default(minPriority);
  70. filter.setFilterByApp(appIdentifier, adbPath);
  71. return filter;
  72. };
  73. }
  74. function makeMatchFilter(...regexes) {
  75. return (platform, minPriority) => {
  76. const filter = platform === 'android' ? new _AndroidFilter.default(minPriority) : new _IosFilter.default(minPriority);
  77. filter.setFilterByMatch(regexes);
  78. return filter;
  79. };
  80. }
  81. function makeCustomFilter(...patterns) {
  82. return (platform, minPriority) => {
  83. if (platform !== 'android') {
  84. throw new Error('Custom filter is only available for Android');
  85. }
  86. const filter = new _AndroidFilter.default(minPriority);
  87. filter.setCustomFilter(patterns);
  88. return filter;
  89. };
  90. }
  91. function logkitty(options) {
  92. const {
  93. platform,
  94. adbPath,
  95. priority,
  96. filter: createFilter
  97. } = options;
  98. const emitter = new _events.EventEmitter();
  99. if (!['ios', 'android'].some(availablePlatform => availablePlatform === platform)) {
  100. throw new Error(`Platform ${platform} is not supported`);
  101. }
  102. const parser = platform === 'android' ? new _AndroidParser.default() : new _IosParser.default();
  103. let filter;
  104. if (createFilter) {
  105. filter = createFilter(platform, priority, adbPath);
  106. } else {
  107. filter = platform === 'android' ? new _AndroidFilter.default(priority) : new _IosFilter.default(priority);
  108. }
  109. const loggingProcess = platform === 'android' ? (0, _adb.runAndroidLoggingProcess)(adbPath) : (0, _simulator.runSimulatorLoggingProcess)();
  110. process.on('exit', () => {
  111. loggingProcess.kill();
  112. emitter.emit('exit');
  113. });
  114. loggingProcess.stderr.on('data', errorData => {
  115. if (platform === 'ios' && errorData.toString().includes('No devices are booted.')) {
  116. emitter.emit('error', new _errors.CodeError(_errors.ERR_IOS_NO_SIMULATORS_BOOTED, 'No simulators are booted.'));
  117. } else {
  118. emitter.emit('error', new Error(errorData.toString()));
  119. }
  120. });
  121. loggingProcess.stdout.on('data', raw => {
  122. let entryToLog;
  123. try {
  124. const messages = parser.splitMessages(raw.toString());
  125. const entries = parser.parseMessages(messages);
  126. entries.forEach(entry => {
  127. if (filter.shouldInclude(entry)) {
  128. entryToLog = entry;
  129. }
  130. });
  131. } catch (error) {
  132. emitter.emit('error', error);
  133. }
  134. if (entryToLog) {
  135. emitter.emit('entry', entryToLog);
  136. }
  137. });
  138. loggingProcess.stdout.on('error', error => {
  139. emitter.emit('error', error);
  140. emitter.emit('exit');
  141. });
  142. return emitter;
  143. }
  144. //# sourceMappingURL=api.js.map