This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | // Name: Eject External Drive | |
| import "@johnlindquist/kit" | |
| import os from 'os' | |
| const {stdout} = await $`diskutil list | grep "(external"` | |
| const firstDisk = stdout.split(os.EOL)[0] | |
| const firstDiskPath = firstDisk.split(' ')[0] | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | // Name: Eject External Drive | |
| import "@johnlindquist/kit" | |
| import os from 'os' | |
| const {stdout} = await $`diskutil list | grep "(external"` | |
| const firstDisk = stdout.split(os.EOL)[0] | |
| const firstDiskPath = firstDisk.split(' ')[0] | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | // Name: Eject External Drive | |
| import "@johnlindquist/kit" | |
| import os from 'os' | |
| const {stdout} = await $`diskutil list | grep "(external"` | |
| const firstDisk = stdout.split(os.EOL)[0] | |
| const firstDiskPath = firstDisk.split(' ')[0] | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | type pomWithError('data, 'err) = Js.Promise.t(Result.t('data, 'err)); | |
| type pom('data) = pomWithError('data, unit); | |
| module JsPromise = { | |
| let make = () => { | |
| let resolver = ref(ignore); | |
| let p = | |
| Js.Promise.make((~resolve, ~reject as _) => | |
| resolver := (a => resolve(. a)) | |
| ); | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | // Simplified version of the current code | |
| getProp('componentRef').matchWith({ | |
| Nothing: () => report('bad payload'), | |
| Just: ({ value: componentRef }) => { | |
| getComponentType(getProp).matchWith({ | |
| Nothing: () => report('no component type'), | |
| Just: ({ value: componentType }) => | |
| reduceMaybes([ | |
| connectonConfigSettings.getPanelTitle(componentType), | |
| connectonConfigSettings.getPanelHeight(componentType), | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | describe('keepAtBottom', function () { | |
| describe('when false', function () { | |
| it('should not scroll to bottom if the scroll is at the bottom', function () { | |
| }); | |
| }); | |
| describe('when true', function () { | |
| describe('when content is added', function () { | |
| it('should automatically scroll to bottom if the scroll is at the bottom', function () { | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | import _ from 'lodash'; | |
| import fetch from 'node-fetch'; | |
| import delay from 'delay'; | |
| import co from 'co'; | |
| export const pingServers = (servers) => co(function*() { | |
| let failedServers = {}; | |
| for (const url of servers) { | |
| let failures = 0; | |
| for (const i of _.range(3)) { |