UNPKG

atom-nuclide

Version:

A unified developer experience for web and mobile development, built as a suite of features on top of Atom to provide hackability and the support of an active community.

82 lines (63 loc) 2.48 kB
Object.defineProperty(exports, '__esModule', { value: true }); /* * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the license found in the LICENSE file in * the root directory of this source tree. */ exports.createMessageStream = createMessageStream; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _commonsNodeStream2; function _commonsNodeStream() { return _commonsNodeStream2 = require('../../commons-node/stream'); } var _commonsAtomFeatureConfig2; function _commonsAtomFeatureConfig() { return _commonsAtomFeatureConfig2 = _interopRequireDefault(require('../../commons-atom/featureConfig')); } var _createMessage2; function _createMessage() { return _createMessage2 = require('./createMessage'); } var _plist2; function _plist() { return _plist2 = _interopRequireDefault(require('plist')); } var _rxjsBundlesRxUmdMinJs2; function _rxjsBundlesRxUmdMinJs() { return _rxjsBundlesRxUmdMinJs2 = _interopRequireDefault(require('rxjs/bundles/Rx.umd.min.js')); } function createMessageStream(line$) { // Group the lines into valid plist strings. return (0, (_commonsNodeStream2 || _commonsNodeStream()).bufferUntil)(line$, function (line) { return line.trim() === '</plist>'; }) // Don't include empty buffers. This happens if the stream completes since we opened a new // buffer when the previous record ended. .filter(function (lines) { return lines.length > 1; }).map(function (lines) { return lines.join(''); }) // Parse the plists. Each parsed plist contains an array which, in turn, *may* contain dicts // (that correspond to records). We just want those dicts so we use `flatMap()`. .flatMap(function (xml) { return (_plist2 || _plist()).default.parse(xml); }) // Exclude dicts that don't have any message property. .filter(function (record) { return record.hasOwnProperty('Message'); }) // Exclude blacklisted senders. // FIXME: This is a stopgap. What we really need to do is identify the currently running app and // only show its messages. ): .filter(function (record) { var blacklist = (_commonsAtomFeatureConfig2 || _commonsAtomFeatureConfig()).default.get('nuclide-ios-simulator-logs.senderBlacklist'); return blacklist.indexOf(record.Sender) === -1; }) // Format the messages for Nuclide. .map((_createMessage2 || _createMessage()).createMessage); }