├── test
├── e2e.js
├── actions
│ ├── .gitkeep
│ ├── __snapshots__
│ │ └── channels.spec.js.snap
│ └── channels.spec.js
├── reducers
│ ├── .gitkeep
│ ├── __snapshots__
│ │ └── channels.spec.js.snap
│ └── channels.spec.js
├── components
│ ├── .gitkeep
│ ├── __snapshots__
│ │ └── Home.spec.js.snap
│ └── Home.spec.js
├── containers
│ ├── .gitkeep
│ └── HomePage.spec.js
├── example.js
├── .eslintrc
├── runTests.js
├── setup.js
└── e2e
│ └── e2e.spec.js
├── app
├── utils
│ └── .gitkeep
├── actions
│ ├── .gitkeep
│ ├── channels.js
│ └── player.js
├── config.json
├── app.icns
├── img
│ └── logo.gif
├── containers
│ ├── SettingsPage.js
│ ├── App.js
│ ├── Root.js
│ ├── HomePage.js
│ ├── Player.js
│ └── ChannelPage.js
├── store
│ ├── configureStore.js
│ ├── configureStore.prod.js
│ └── configureStore.dev.js
├── reducers
│ ├── index.js
│ ├── channels.js
│ └── player.js
├── components
│ ├── Settings.module.css
│ ├── Home.module.css
│ ├── Track.module.css
│ ├── Settings.js
│ ├── common
│ │ ├── Nav.module.css
│ │ ├── Nav.js
│ │ ├── SideNav.module.css
│ │ └── SideNav.js
│ ├── ChannelCard.module.css
│ ├── ChannelCard.js
│ ├── Track.js
│ ├── Home.js
│ ├── Channel.module.css
│ ├── players
│ │ ├── AudioPlayer.module.css
│ │ └── AudioPlayer.js
│ └── Channel.js
├── package.json
├── routes.js
├── index.js
├── .eslintrc
├── app.global.css
├── core
│ └── Storage.js
├── yarn.lock
├── app.html
├── services
│ └── SomaFMService.js
├── main.dev.js
└── menu.js
├── internals
├── mocks
│ └── fileMock.js
├── flow
│ ├── WebpackAsset.js.flow
│ └── CSSModule.js.flow
├── img
│ ├── js.png
│ ├── flow.png
│ ├── jest.png
│ ├── npm.png
│ ├── react.png
│ ├── redux.png
│ ├── yarn.png
│ ├── eslint.png
│ ├── webpack.png
│ ├── js-padded.png
│ ├── flow-padded.png
│ ├── jest-padded.png
│ ├── react-padded.png
│ ├── react-router.png
│ ├── redux-padded.png
│ ├── yarn-padded.png
│ ├── eslint-padded.png
│ ├── flow-padded-90.png
│ ├── jest-padded-90.png
│ ├── react-padded-90.png
│ ├── redux-padded-90.png
│ ├── webpack-padded.png
│ ├── yarn-padded-90.png
│ ├── eslint-padded-90.png
│ ├── webpack-padded-90.png
│ ├── react-router-padded.png
│ └── react-router-padded-90.png
└── scripts
│ ├── CheckNodeEnv.js
│ └── CheckBuiltsExist.js
├── .stylelintrc
├── assets
├── gothic.otf
└── css
│ └── style.scss
├── resources
├── icon.ico
├── icon.png
├── icon.icns
└── icons
│ ├── 16x16.png
│ ├── 24x24.png
│ ├── 32x32.png
│ ├── 48x48.png
│ ├── 64x64.png
│ ├── 96x96.png
│ ├── app.icns
│ ├── 128x128.png
│ ├── 256x256.png
│ ├── 512x512.png
│ └── 1024x1024.png
├── screenshot-1.png
├── screenshot-2.png
├── .gitattributes
├── flow-typed
├── module_vx.x.x.js
└── npm
│ ├── flow-bin_v0.x.x.js
│ ├── font-awesome_vx.x.x.js
│ ├── minimist_v1.x.x.js
│ ├── url-loader_vx.x.x.js
│ ├── file-loader_vx.x.x.js
│ ├── electron-debug_vx.x.x.js
│ ├── babel-preset-react_vx.x.x.js
│ ├── babel-preset-stage-0_vx.x.x.js
│ ├── babili-webpack-plugin_vx.x.x.js
│ ├── eslint-formatter-pretty_vx.x.x.js
│ ├── babel-preset-react-optimize_vx.x.x.js
│ ├── babel-plugin-dev-expression_vx.x.x.js
│ ├── babel-preset-react-hmre_vx.x.x.js
│ ├── devtron_vx.x.x.js
│ ├── eslint-import-resolver-webpack_vx.x.x.js
│ ├── babel-plugin-add-module-exports_vx.x.x.js
│ ├── babel-register_vx.x.x.js
│ ├── concurrently_vx.x.x.js
│ ├── electron_vx.x.x.js
│ ├── redux-thunk_vx.x.x.js
│ ├── cross-env_vx.x.x.js
│ ├── extract-text-webpack-plugin_vx.x.x.js
│ ├── webpack-merge_vx.x.x.js
│ ├── source-map-support_vx.x.x.js
│ ├── html-webpack-plugin_vx.x.x.js
│ ├── style-loader_vx.x.x.js
│ ├── redux-logger_vx.x.x.js
│ ├── babel-loader_vx.x.x.js
│ ├── eslint-plugin-flowtype-errors_vx.x.x.js
│ ├── spectron_vx.x.x.js
│ ├── react-addons-test-utils_v15.x.x.js
│ ├── electron-devtools-installer_vx.x.x.js
│ ├── eslint-config-airbnb_vx.x.x.js
│ ├── babel-eslint_vx.x.x.js
│ ├── css-loader_vx.x.x.js
│ ├── babel-preset-env_vx.x.x.js
│ ├── eslint-plugin-compat_vx.x.x.js
│ ├── fbjs-scripts_vx.x.x.js
│ ├── redux_v3.x.x.js
│ ├── react-router-redux_vx.x.x.js
│ ├── enzyme_v2.3.x.js
│ ├── eslint-plugin-promise_vx.x.x.js
│ └── flow-typed_vx.x.x.js
├── webpack.config.eslint.js
├── _config.yml
├── .editorconfig
├── .vscode
└── settings.json
├── appveyor.yml
├── .babelrc
├── .travis.yml
├── .flowconfig
├── .gitignore
├── .eslintignore
├── LICENSE
├── webpack.config.base.js
├── .eslintrc
├── README.md
├── webpack.config.main.prod.js
├── _layouts
└── default.html
├── DEVELOPMENT.md
├── webpack.config.renderer.prod.js
└── webpack.config.renderer.dev.dll.js
/test/e2e.js:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/utils/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/actions/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/actions/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/reducers/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/components/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/test/containers/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "stations": []
3 | }
4 |
--------------------------------------------------------------------------------
/internals/mocks/fileMock.js:
--------------------------------------------------------------------------------
1 | export default 'test-file-stub';
2 |
--------------------------------------------------------------------------------
/.stylelintrc:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "stylelint-config-standard"
3 | }
4 |
--------------------------------------------------------------------------------
/app/app.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/app/app.icns
--------------------------------------------------------------------------------
/app/img/logo.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/app/img/logo.gif
--------------------------------------------------------------------------------
/assets/gothic.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/assets/gothic.otf
--------------------------------------------------------------------------------
/internals/flow/WebpackAsset.js.flow:
--------------------------------------------------------------------------------
1 | // @flow
2 | declare export default string
3 |
--------------------------------------------------------------------------------
/resources/icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/resources/icon.ico
--------------------------------------------------------------------------------
/resources/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/resources/icon.png
--------------------------------------------------------------------------------
/screenshot-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/screenshot-1.png
--------------------------------------------------------------------------------
/screenshot-2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/screenshot-2.png
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text eol=lf
2 | *.png binary
3 | *.ico binary
4 | *.icns binary
5 |
--------------------------------------------------------------------------------
/internals/img/js.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/internals/img/js.png
--------------------------------------------------------------------------------
/resources/icon.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/resources/icon.icns
--------------------------------------------------------------------------------
/internals/img/flow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/internals/img/flow.png
--------------------------------------------------------------------------------
/internals/img/jest.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/internals/img/jest.png
--------------------------------------------------------------------------------
/internals/img/npm.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/internals/img/npm.png
--------------------------------------------------------------------------------
/internals/img/react.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/internals/img/react.png
--------------------------------------------------------------------------------
/internals/img/redux.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/internals/img/redux.png
--------------------------------------------------------------------------------
/internals/img/yarn.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/internals/img/yarn.png
--------------------------------------------------------------------------------
/flow-typed/module_vx.x.x.js:
--------------------------------------------------------------------------------
1 | declare module 'module' {
2 | declare module.exports: any;
3 | }
4 |
--------------------------------------------------------------------------------
/internals/flow/CSSModule.js.flow:
--------------------------------------------------------------------------------
1 | // @flow
2 |
3 | declare export default { [key: string]: string }
--------------------------------------------------------------------------------
/internals/img/eslint.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/internals/img/eslint.png
--------------------------------------------------------------------------------
/internals/img/webpack.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/internals/img/webpack.png
--------------------------------------------------------------------------------
/resources/icons/16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/resources/icons/16x16.png
--------------------------------------------------------------------------------
/resources/icons/24x24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/resources/icons/24x24.png
--------------------------------------------------------------------------------
/resources/icons/32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/resources/icons/32x32.png
--------------------------------------------------------------------------------
/resources/icons/48x48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/resources/icons/48x48.png
--------------------------------------------------------------------------------
/resources/icons/64x64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/resources/icons/64x64.png
--------------------------------------------------------------------------------
/resources/icons/96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/resources/icons/96x96.png
--------------------------------------------------------------------------------
/resources/icons/app.icns:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/resources/icons/app.icns
--------------------------------------------------------------------------------
/internals/img/js-padded.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/internals/img/js-padded.png
--------------------------------------------------------------------------------
/resources/icons/128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/resources/icons/128x128.png
--------------------------------------------------------------------------------
/resources/icons/256x256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/resources/icons/256x256.png
--------------------------------------------------------------------------------
/resources/icons/512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/resources/icons/512x512.png
--------------------------------------------------------------------------------
/internals/img/flow-padded.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/internals/img/flow-padded.png
--------------------------------------------------------------------------------
/internals/img/jest-padded.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/internals/img/jest-padded.png
--------------------------------------------------------------------------------
/internals/img/react-padded.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/internals/img/react-padded.png
--------------------------------------------------------------------------------
/internals/img/react-router.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/internals/img/react-router.png
--------------------------------------------------------------------------------
/internals/img/redux-padded.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/internals/img/redux-padded.png
--------------------------------------------------------------------------------
/internals/img/yarn-padded.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/internals/img/yarn-padded.png
--------------------------------------------------------------------------------
/resources/icons/1024x1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/resources/icons/1024x1024.png
--------------------------------------------------------------------------------
/internals/img/eslint-padded.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/internals/img/eslint-padded.png
--------------------------------------------------------------------------------
/internals/img/flow-padded-90.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/internals/img/flow-padded-90.png
--------------------------------------------------------------------------------
/internals/img/jest-padded-90.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/internals/img/jest-padded-90.png
--------------------------------------------------------------------------------
/internals/img/react-padded-90.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/internals/img/react-padded-90.png
--------------------------------------------------------------------------------
/internals/img/redux-padded-90.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/internals/img/redux-padded-90.png
--------------------------------------------------------------------------------
/internals/img/webpack-padded.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/internals/img/webpack-padded.png
--------------------------------------------------------------------------------
/internals/img/yarn-padded-90.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/internals/img/yarn-padded-90.png
--------------------------------------------------------------------------------
/internals/img/eslint-padded-90.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/internals/img/eslint-padded-90.png
--------------------------------------------------------------------------------
/internals/img/webpack-padded-90.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/internals/img/webpack-padded-90.png
--------------------------------------------------------------------------------
/internals/img/react-router-padded.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/internals/img/react-router-padded.png
--------------------------------------------------------------------------------
/webpack.config.eslint.js:
--------------------------------------------------------------------------------
1 | require('babel-register');
2 |
3 | module.exports = require('./webpack.config.renderer.dev');
4 |
--------------------------------------------------------------------------------
/internals/img/react-router-padded-90.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/alfg/somafm/HEAD/internals/img/react-router-padded-90.png
--------------------------------------------------------------------------------
/test/example.js:
--------------------------------------------------------------------------------
1 | describe('description', () => {
2 | it('should have description', () => {
3 | expect(1 + 2).toBe(3);
4 | });
5 | });
6 |
--------------------------------------------------------------------------------
/_config.yml:
--------------------------------------------------------------------------------
1 | theme: jekyll-theme-cayman
2 | title: Soma FM
3 | description: A SomaFM Desktop Player
4 | show_downloads: true
5 | download_version: 0.3.2
6 | google_analytics: UA-104167328-1
7 |
--------------------------------------------------------------------------------
/flow-typed/npm/flow-bin_v0.x.x.js:
--------------------------------------------------------------------------------
1 | // flow-typed signature: 67b0c3a16b2d6f8ef0a31a5745a0b3e1
2 | // flow-typed version: 3817bc6980/flow-bin_v0.x.x/flow_>=v0.25.x
3 |
4 | declare module "flow-bin" {
5 | declare module.exports: string;
6 | }
7 |
--------------------------------------------------------------------------------
/test/reducers/__snapshots__/channels.spec.js.snap:
--------------------------------------------------------------------------------
1 | // Jest Snapshot v1, https://goo.gl/fbAQLP
2 |
3 | exports[`reducers channels should handle initial state 1`] = `
4 | Object {
5 | "favorites": Array [],
6 | "home": Array [],
7 | }
8 | `;
9 |
--------------------------------------------------------------------------------
/test/actions/__snapshots__/channels.spec.js.snap:
--------------------------------------------------------------------------------
1 | // Jest Snapshot v1, https://goo.gl/fbAQLP
2 |
3 | exports[`actions should setHomeChannels should create channels action 1`] = `
4 | Object {
5 | "home": undefined,
6 | "type": "CHANNELS",
7 | }
8 | `;
9 |
--------------------------------------------------------------------------------
/app/containers/SettingsPage.js:
--------------------------------------------------------------------------------
1 | import React, { Component } from 'react';
2 | import Settings from '../components/Settings';
3 |
4 | export default class SettingsPage extends Component {
5 | render() {
6 | return (
7 |
94 |
95 | | 202 | 205 | | 206 |207 | 215 | | 216 |