From 964ac7009e6db5a06233bdc07fa63778eebf2db7 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Fri, 1 Jun 2018 03:30:39 +0200 Subject: async commands!! --- public/bundle.js | 789 ++++++++++++++++++++++++++++++++++++++++----------- public/bundle.js.map | 2 +- 2 files changed, 629 insertions(+), 162 deletions(-) (limited to 'public') diff --git a/public/bundle.js b/public/bundle.js index c3fcabb..9ff406d 100644 --- a/public/bundle.js +++ b/public/bundle.js @@ -71,6 +71,58 @@ /************************************************************************/ /******/ ({ +/***/ "./app/client/actions.js": +/*!*******************************!*\ + !*** ./app/client/actions.js ***! + \*******************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); + +var _redux = __webpack_require__(/*! redux */ "./node_modules/redux/es/redux.js"); + +var _api = __webpack_require__(/*! ./api */ "./app/client/api/index.js"); + +var _task = __webpack_require__(/*! ./task/task.actions */ "./app/client/task/task.actions.js"); + +var taskActions = _interopRequireWildcard(_task); + +var _live = __webpack_require__(/*! ./live/live.actions */ "./app/client/live/live.actions.js"); + +var liveActions = _interopRequireWildcard(_live); + +var _system = __webpack_require__(/*! ./system/system.actions */ "./app/client/system/system.actions.js"); + +var systemActions = _interopRequireWildcard(_system); + +var _socket = __webpack_require__(/*! ./socket/socket.actions */ "./app/client/socket/socket.actions.js"); + +var socketActions = _interopRequireWildcard(_socket); + +var _dataset = __webpack_require__(/*! ./dataset/dataset.actions */ "./app/client/dataset/dataset.actions.js"); + +var datasetActions = _interopRequireWildcard(_dataset); + +var _store = __webpack_require__(/*! ./store */ "./app/client/store.js"); + +function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } } + +exports.default = Object.keys(_api.actions).map(function (a) { + return [a, _api.actions[a]]; +}).concat([['task', taskActions], ['live', liveActions], ['system', systemActions], ['dataset', datasetActions]]).map(function (p) { + return [p[0], (0, _redux.bindActionCreators)(p[1], _store.dispatch)]; +}).concat([['socket', socketActions]]).reduce(function (a, b) { + return (a[b[0]] = b[1]) && a; +}, {}); + +/***/ }), + /***/ "./app/client/api/crud.actions.js": /*!****************************************!*\ !*** ./app/client/api/crud.actions.js ***! @@ -113,11 +165,15 @@ function crud_actions(type) { var crud_action = exports.crud_action = function crud_action(type, method, fn) { return function (q) { return function (dispatch) { - dispatch({ type: (0, _crud2.as_type)(type, method + '_loading') }); - fn(q).then(function (data) { - dispatch({ type: (0, _crud2.as_type)(type, method), data: data }); - }).catch(function (e) { - dispatch({ type: (0, _crud2.as_type)(type, method + '_error') }); + return new Promise(function (resolve, reject) { + dispatch({ type: (0, _crud2.as_type)(type, method + '_loading') }); + fn(q).then(function (data) { + dispatch({ type: (0, _crud2.as_type)(type, method), data: data }); + resolve(data); + }).catch(function (e) { + dispatch({ type: (0, _crud2.as_type)(type, method + '_error') }); + reject(e); + }); }); }; }; @@ -342,12 +398,14 @@ function crud_upload(type, fd, data, dispatch) { type: (0, _crud.as_type)(type, 'upload_error'), error: 'upload failed' }, type, id)); + reject(e); return; } dispatch && dispatch(_defineProperty({ type: (0, _crud.as_type)(type, 'upload_complete'), data: data }, type, id)); + resolve(data); } function uploadFailed(evt) { @@ -355,6 +413,7 @@ function crud_upload(type, fd, data, dispatch) { type: (0, _crud.as_type)(type, 'upload_error'), error: 'upload failed' }, type, id)); + reject(evt); } function uploadCancelled(evt) { @@ -362,6 +421,7 @@ function crud_upload(type, fd, data, dispatch) { type: (0, _crud.as_type)(type, 'upload_error'), error: 'upload cancelled' }, type, id)); + reject(evt); } }); } @@ -936,9 +996,12 @@ var FileList = function (_Component) { linkFiles = _props.linkFiles, _onClick = _props.onClick; + if (!files.length) return null; var fields = this.props.fields || defaultFields; var fileList = files.map(function (file) { var size = util.hush_size(file.size); + var date = file.created_at; + var username = file.username || ""; return (0, _preact.h)( 'div', { 'class': 'row file', key: file.name }, @@ -957,15 +1020,25 @@ var FileList = function (_Component) { file.name || file.url ) ), + fields.has('age') && (0, _preact.h)( + 'div', + { className: "age " + util.carbon_date(date) }, + util.get_age(date) + ), + fields.has('username') && (0, _preact.h)( + 'div', + { className: "username" }, + username + ), fields.has('date') && (0, _preact.h)( 'div', - { className: "date " + util.carbon_date(file.created_at) }, - (0, _moment2.default)(file.created_at).format("YYYY-MM-DD") + { className: "date " + util.carbon_date(date) }, + (0, _moment2.default)(date).format("YYYY-MM-DD") ), fields.has('datetime') && (0, _preact.h)( 'div', - { className: "datetime " + util.carbon_date(file.created_at) }, - (0, _moment2.default)(file.created_at).format("YYYY-MM-DD h:mm a") + { className: "datetime " + util.carbon_date(date) }, + (0, _moment2.default)(date).format("YYYY-MM-DD h:mm a") ), fields.has('size') && (0, _preact.h)( 'div', @@ -2190,11 +2263,8 @@ var DashboardHeader = function (_Component) { }, { key: 'render', value: function render() { - var _props = this.props, - currentTask = _props.currentTask, - site = _props.site; + var site = this.props.site; - var eta = (currentTask.epochs - currentTask.epoch) * 180 / 60 + " minutes"; return (0, _preact.h)( 'div', { 'class': 'dashboardHeader heading' }, @@ -2203,29 +2273,60 @@ var DashboardHeader = function (_Component) { null, site.name ), - 'Currently ', - util.gerund(currentTask.activity), - ' ', - currentTask.module, - ' on ', - currentTask.dataset, - (0, _preact.h)('br', null), - 'Epoch: ', - currentTask.epoch, - ' / ', - currentTask.epochs, - ', ETA ', - eta, - (0, _preact.h)('br', null), - (0, _preact.h)('br', null), - 'Want to play live? ', - (0, _preact.h)( - 'button', - null, - 'Pause at the end of this epoch' - ) + this.renderGPUStatus() ); } + }, { + key: 'renderGPUStatus', + value: function renderGPUStatus() { + var runner = this.props.runner; + + var gpu = runner.cpu; + if (gpu.status === 'IDLE') { + return null; + } + var task = gpu.task; + var eta = (task.epochs - (task.epoch || 0)) * 180 / 60 + " minutes"; + var activityPhrase = void 0, + liveMessage = void 0; + if (task.activity === 'live') { + return (0, _preact.h)( + 'div', + null, + 'Currently running ', + task.module, + ' live on "', + task.dataset, + '"' + ); + } else { + return (0, _preact.h)( + 'div', + null, + 'Currently ', + util.gerund(task.activity), + ' ', + task.module, + ' on ', + task.dataset, + (0, _preact.h)('br', null), + 'Epoch: ', + task.epoch, + ' / ', + task.epochs, + ', ETA ', + eta, + (0, _preact.h)('br', null), + (0, _preact.h)('br', null), + 'Want to play live? ', + (0, _preact.h)( + 'button', + null, + 'Pause at the end of this epoch' + ) + ); + } + } }]); return DashboardHeader; @@ -2233,6 +2334,7 @@ var DashboardHeader = function (_Component) { var mapStateToProps = function mapStateToProps(state) { return { + runner: state.system.runner, currentTask: state.task.currentTask, site: state.system.site }; @@ -2363,6 +2465,44 @@ exports.default = (0, _reactRedux.connect)(mapStateToProps, mapDispatchToProps)( /***/ }), +/***/ "./app/client/dataset/dataset.actions.js": +/*!***********************************************!*\ + !*** ./app/client/dataset/dataset.actions.js ***! + \***********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.fetchURL = exports.uploadFiles = undefined; + +var _types = __webpack_require__(/*! ../types */ "./app/client/types.js"); + +var _types2 = _interopRequireDefault(_types); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var uploadFiles = exports.uploadFiles = function uploadFiles(files) { + return { type: _types2.default.dataset.upload_files }; +}; // import socket from '../socket' +var fetchURL = exports.fetchURL = function fetchURL(url) { + return { type: _types2.default.dataset.fetch_url }; +}; + +// export const uploadFiles = (files) => { +// return dispatch => { +// // return { type: types.dataset.upload_files } +// } +// } + +// export const fetchURL = (url) => { type: types.dataset.fetch_url } + +/***/ }), + /***/ "./app/client/dataset/dataset.component.js": /*!*************************************************!*\ !*** ./app/client/dataset/dataset.component.js ***! @@ -2641,8 +2781,6 @@ Object.defineProperty(exports, "__esModule", { value: true }); -var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; - var _types = __webpack_require__(/*! ../types */ "./app/client/types.js"); var _types2 = _interopRequireDefault(_types); @@ -2659,100 +2797,37 @@ var datasetReducer = function datasetReducer() { var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : datasetInitialState; var action = arguments[1]; - console.log(action); switch (action.type) { - case _types2.default.socket.connect: - return _extends({}, state); - case _types2.default.task.task_begin: - return _extends({}, state); - case _types2.default.task.task_finish: - return _extends({}, state); - - case _types2.default.folder.index: - return _extends({}, state, { - folders: action.data, - folder: action.data[0] - }); - case _types2.default.folder.update: - return state; - case _types2.default.file.index: - return _extends({}, state, { - files: action.data - }); - case _types2.default.folder.upload_loading: - return _extends({}, state, { - upload: { - loading: true, - status: 'Loading...' - } - }); + return { + error: null, + loading: true, + status: 'Loading...' + }; case _types2.default.folder.upload_error: - return _extends({}, state, { - upload: { - loading: false, - status: 'Error uploading :(' - } - }); + return { + error: null, + loading: false, + status: 'Error uploading :(' + }; case _types2.default.folder.upload_progress: - console.log(action); - return _extends({}, state, { - upload: { - loading: true, - status: 'Upload progress ' + action.percent + '%' - } - }); + return { + error: null, + loading: true, + status: 'Upload progress ' + action.percent + '%' + }; case _types2.default.folder.upload_waiting: - console.log(action); - return _extends({}, state, { - upload: { - loading: true, - status: 'Waiting for server to finish processing...' - } - }); + return { + error: null, + loading: true, + status: 'Waiting for server to finish processing...' + }; case _types2.default.file.create_loading: - return _extends({}, state, { - upload: { - loading: true, - status: 'Creating file...' - } - }); - case _types2.default.file.create: - console.log('booo'); - if (state.folder.id === action.data.folder_id) { - return _extends({}, state, { - files: [action.data].concat(state.files), - upload: { - loading: false, - status: 'File created' - } - }); - } else { - return _extends({}, state, { - upload: { - loading: false, - status: 'created' - } - }); - } - case _types2.default.folder.upload_complete: - console.log(action); - if (state.folder.id === action.folder) { - return _extends({}, state, { - files: [action.files].concat(state.files), - upload: { - loading: false, - status: 'Upload complete' - } - }); - } else { - return _extends({}, state, { - upload: { - loading: false, - status: 'Upload complete' - } - }); - } + return { + error: null, + loading: true, + status: 'Creating file...' + }; case _types2.default.socket.status: return datasetSocket(state, action.data); default: @@ -4281,6 +4356,75 @@ exports.default = { /***/ }), +/***/ "./app/client/modules/samplernn/samplernn.actions.js": +/*!***********************************************************!*\ + !*** ./app/client/modules/samplernn/samplernn.actions.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.fetch_url = exports.load_directories = undefined; + +var _socket = __webpack_require__(/*! ../../socket */ "./app/client/socket/index.js"); + +var _socket2 = _interopRequireDefault(_socket); + +var _types = __webpack_require__(/*! ../../types */ "./app/client/types.js"); + +var _types2 = _interopRequireDefault(_types); + +var _actions = __webpack_require__(/*! ../../actions */ "./app/client/actions.js"); + +var _actions2 = _interopRequireDefault(_actions); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +// bindActionCreators(actions.folder, dispatch), +// bindActionCreators(actions.file, dispatch), +// bindActionCreators(taskActions, dispatch), +// bindActionCreators(systemActions, dispatch), + +var load_directories = exports.load_directories = function load_directories() { + return function (dispatch) { + // load datasets + // load directories from server + console.log(_actions2.default); + _actions2.default.folder.index({ module: 'samplernn' }).then(function (folders) { + console.log('got folders'); + }); + _actions2.default.file.index({ module: 'samplernn' }).then(function (files) { + console.log('got files'); + }); + _actions2.default.socket.list_directory({ module: 'samplernn', dir: 'results' }).then(function (dirs) { + console.log('got results'); + }); + _actions2.default.socket.list_directory({ module: 'samplernn', dir: 'datasets' }).then(function (dirs) { + console.log('got datasets'); + }); + }; +}; + +var fetch_url = exports.fetch_url = function fetch_url(url) { + return function (dispatch) { + console.log(url); + _actions2.default.task.start_task({ + activity: 'fetch', + module: 'samplernn', + dataset: 'test', + epochs: 1, + opt: { url: url } + }, { preempt: true, watch: true }); + }; +}; + +/***/ }), + /***/ "./app/client/modules/samplernn/samplernn.datasets.js": /*!************************************************************!*\ !*** ./app/client/modules/samplernn/samplernn.datasets.js ***! @@ -4303,15 +4447,9 @@ var _redux = __webpack_require__(/*! redux */ "./node_modules/redux/es/redux.js" var _reactRedux = __webpack_require__(/*! react-redux */ "./node_modules/react-redux/es/index.js"); -var _api = __webpack_require__(/*! ../../api */ "./app/client/api/index.js"); - -var _task = __webpack_require__(/*! ../../task/task.actions */ "./app/client/task/task.actions.js"); - -var taskActions = _interopRequireWildcard(_task); - -var _system = __webpack_require__(/*! ../../system/system.actions */ "./app/client/system/system.actions.js"); +var _samplernn = __webpack_require__(/*! ./samplernn.actions */ "./app/client/modules/samplernn/samplernn.actions.js"); -var systemActions = _interopRequireWildcard(_system); +var samplernnActions = _interopRequireWildcard(_samplernn); var _dataset = __webpack_require__(/*! ../../dataset/dataset.component */ "./app/client/dataset/dataset.component.js"); @@ -4357,13 +4495,11 @@ var SampleRNNDatasets = function (_Component) { function SampleRNNDatasets(props) { _classCallCheck(this, SampleRNNDatasets); - // fetch file list var _this = _possibleConstructorReturn(this, (SampleRNNDatasets.__proto__ || Object.getPrototypeOf(SampleRNNDatasets)).call(this)); _this.fileOptions = _this.fileOptions.bind(_this); _this.pickFile = _this.pickFile.bind(_this); - props.actions.folder.index({ module: 'samplernn' }); - props.actions.file.index({ module: 'samplernn' }); + props.actions.load_directories(); return _this; } @@ -4377,7 +4513,7 @@ var SampleRNNDatasets = function (_Component) { value: function fileOptions(file) { var _this2 = this; - console.log(file); + // console.log(file) if (file.activity === 'url' && !file.dataset) { if (this.props.runner.cpu.status !== 'IDLE') { return (0, _preact.h)( @@ -4415,23 +4551,14 @@ var SampleRNNDatasets = function (_Component) { } }, { key: 'fetchURL', - value: function fetchURL(url) { - console.log(url); - this.props.actions.task.start_task({ - activity: 'fetch', - module: 'samplernn', - dataset: 'test', - epochs: 1, - opt: { url: url } - }, { preempt: true, watch: true }); - } + value: function fetchURL(url) {} }, { key: 'render', value: function render() { var samplernn = this.props.samplernn; - - console.log(samplernn.upload); + // console.log(samplernn.upload) // sort files?? + var module = { name: 'samplernn', datatype: 'audio' @@ -4477,12 +4604,7 @@ var mapStateToProps = function mapStateToProps(state) { var mapDispatchToProps = function mapDispatchToProps(dispatch, ownProps) { return { - actions: { - folder: (0, _redux.bindActionCreators)(_api.actions.folder, dispatch), - file: (0, _redux.bindActionCreators)(_api.actions.file, dispatch), - task: (0, _redux.bindActionCreators)(taskActions, dispatch), - system: (0, _redux.bindActionCreators)(systemActions, dispatch) - } + actions: (0, _redux.bindActionCreators)(samplernnActions, dispatch) }; }; @@ -4515,6 +4637,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de var samplernnInitialState = { loading: false, error: null, + folder: {}, folders: [], datasets: [], results: [], @@ -4532,12 +4655,45 @@ var samplernnReducer = function samplernnReducer() { var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : samplernnInitialState; var action = arguments[1]; - console.log(action); switch (action.type) { + case _types2.default.socket.connect: + return _extends({}, state); case _types2.default.task.task_begin: return _extends({}, state); case _types2.default.task.task_finish: return _extends({}, state); + case _types2.default.folder.index: + return _extends({}, state, { + folders: action.data, + folder: action.data[0] + }); + case _types2.default.folder.update: + return state; + + case _types2.default.file.index: + return _extends({}, state, { + files: action.data + }); + + case _types2.default.file.create: + if (state.folder.id === action.data.folder_id) { + return _extends({}, state, { + files: [action.data].concat(state.files) + }); + } + return state; + + case _types2.default.folder.upload_complete: + if (state.folder.id === action.folder) { + return _extends({}, state, { + files: [action.files].concat(state.files) + }); + } + return state; + + case _types2.default.system.list_directory: + console.log('list directory', action.data); + return _extends({}, state); case _types2.default.socket.status: return samplernnSocket(state, action.data); @@ -4549,6 +4705,8 @@ var samplernnReducer = function samplernnReducer() { var samplernnSocket = function samplernnSocket(state, action) { console.log(action); switch (action.key) { + case 'list_directory': + return state; default: return state; } @@ -4622,6 +4780,27 @@ _socket.socket.on('status', function (data) { /***/ }), +/***/ "./app/client/socket/socket.actions.js": +/*!*********************************************!*\ + !*** ./app/client/socket/socket.actions.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.list_directory = undefined; + +var _socket = __webpack_require__(/*! ./socket.system */ "./app/client/socket/socket.system.js"); + +var list_directory = exports.list_directory = _socket.list_directory_async; + +/***/ }), + /***/ "./app/client/socket/socket.connection.js": /*!************************************************!*\ !*** ./app/client/socket/socket.connection.js ***! @@ -4833,7 +5012,10 @@ function set_param(key, value) { Object.defineProperty(exports, "__esModule", { value: true }); +exports.syscall_async = undefined; exports.run_system_command = run_system_command; +exports.list_directory = list_directory; +exports.list_directory_async = list_directory_async; var _store = __webpack_require__(/*! ../store */ "./app/client/store.js"); @@ -4841,6 +5023,10 @@ var _types = __webpack_require__(/*! ../types */ "./app/client/types.js"); var _types2 = _interopRequireDefault(_types); +var _v = __webpack_require__(/*! uuid/v1 */ "./node_modules/uuid/v1.js"); + +var _v2 = _interopRequireDefault(_v); + var _socket = __webpack_require__(/*! ./socket.connection */ "./app/client/socket/socket.connection.js"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } @@ -4870,11 +5056,18 @@ _socket.socket.on('system_res', function (data) { type: data.rpc_connected ? _types2.default.system.rpc_connected : _types2.default.system.rpc_disconnected, runner: data.runner }); - case 'command_output': - return (0, _store.dispatch)({ - type: _types2.default.system.command_output, - data: data - }); + // case 'run_system_command': + // return dispatch({ + // type: types.system.command_output, + // data: data, + // }) + // case 'list_directory': + // return dispatch({ + // type: types.system.list_directory, + // data: data, + // }) + // break + default: break; } }); @@ -4886,6 +5079,38 @@ function run_system_command(cmd) { }); } +function list_directory(opt) { + _socket.socket.emit('system', { + cmd: 'list_directory', + payload: opt + }); +} + +function list_directory_async(opt) { + return syscall_async('list_directory', opt); +} + +var syscall_async = exports.syscall_async = function syscall_async(tag, payload) { + var ttl = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 10000; + + return new Promise(function (resolve, reject) { + var uuid = (0, _v2.default)(); + var timeout = setTimeout(function () { + _socket.socket.off('system_res', cb); + reject('timeout'); + }, ttl); + var cb = function cb(data) { + if (data.uuid === uuid) { + clearTimeout(timeout); + _socket.socket.off('system_res', cb); + resolve(data); + } + }; + _socket.socket.emit('system', { cmd: tag, payload: payload, uuid: uuid }); + _socket.socket.on('system_res', cb); + }); +}; + /***/ }), /***/ "./app/client/socket/socket.task.js": @@ -5065,7 +5290,7 @@ var dispatch = exports.dispatch = store.dispatch; Object.defineProperty(exports, "__esModule", { value: true }); -exports.changeTool = exports.run = undefined; +exports.changeTool = exports.listDirectory = exports.run = undefined; var _socket = __webpack_require__(/*! ../socket */ "./app/client/socket/index.js"); @@ -5082,6 +5307,11 @@ var run = exports.run = function run(cmd) { return { type: _types2.default.system.running_command, cmd: cmd }; }; +var listDirectory = exports.listDirectory = function listDirectory(opt) { + _socket2.default.system.list_directory(opt); + return { type: _types2.default.system.listing_directory, opt: opt }; +}; + var changeTool = exports.changeTool = function changeTool(tool) { return { type: _types2.default.app.change_tool, tool: tool }; }; @@ -5843,6 +6073,8 @@ exports.default = (_system$app$folder$fi = { relay_disconnected: 'SYSTEM_RELAY_DISCONNECTED', rpc_connected: 'SYSTEM_RPC_CONNECTED', rpc_disconnected: 'SYSTEM_RPC_DISCONNECTED', + list_directory: 'SYSTEM_LIST_DIRECTORY', + listing_directory: 'SYSTEM_LISTING_DIRECTORY', stdout: 'SYSTEM_STDOUT', stderr: 'SYSTEM_STDERR' }, @@ -5929,6 +6161,7 @@ exports.hush_views = hush_views; exports.hush_threads = hush_threads; exports.hush_size = hush_size; exports.hush_null = hush_null; +exports.get_age = get_age; exports.courtesy_s = courtesy_s; var is_iphone = exports.is_iphone = !!(navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPod/i)); var is_ipad = exports.is_ipad = !!navigator.userAgent.match(/iPad/i); @@ -6075,6 +6308,43 @@ function hush_null(n, unit, no_bold) { return ["new", s]; } } +function get_age(t) { + var age = Math.abs(+Date.now() - new Date(t)) / 1000; + var r = Math.floor; + var m; + if (age < 5) { + return "now"; + } + if (age < 60) { + return r(age) + "s"; + } + age /= 60; + if (age < 60) { + return r(age) + "m"; + } + m = r(age % 60); + age /= 60; + if (m > 0 && age < 2) { + return r(age) + "h" + m + "m"; + } + if (age < 24) { + return r(age) + "h"; + } + age /= 24; + if (age < 7) { + return r(age) + "d"; + } + age /= 7; + if (age < 12) { + return r(age) + "w"; + } + age /= 4; + if (age < 12) { + return r(age) + "m"; + } + age /= 12; + return r(age) + "y"; +} function courtesy_s(n, s) { return n == 1 ? "" : s || "s"; } @@ -33586,6 +33856,203 @@ function symbolObservablePonyfill(root) { }; +/***/ }), + +/***/ "./node_modules/uuid/lib/bytesToUuid.js": +/*!**********************************************!*\ + !*** ./node_modules/uuid/lib/bytesToUuid.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +/** + * Convert array of 16 byte values to UUID string format of the form: + * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX + */ +var byteToHex = []; +for (var i = 0; i < 256; ++i) { + byteToHex[i] = (i + 0x100).toString(16).substr(1); +} + +function bytesToUuid(buf, offset) { + var i = offset || 0; + var bth = byteToHex; + return bth[buf[i++]] + bth[buf[i++]] + + bth[buf[i++]] + bth[buf[i++]] + '-' + + bth[buf[i++]] + bth[buf[i++]] + '-' + + bth[buf[i++]] + bth[buf[i++]] + '-' + + bth[buf[i++]] + bth[buf[i++]] + '-' + + bth[buf[i++]] + bth[buf[i++]] + + bth[buf[i++]] + bth[buf[i++]] + + bth[buf[i++]] + bth[buf[i++]]; +} + +module.exports = bytesToUuid; + + +/***/ }), + +/***/ "./node_modules/uuid/lib/rng-browser.js": +/*!**********************************************!*\ + !*** ./node_modules/uuid/lib/rng-browser.js ***! + \**********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +// Unique ID creation requires a high quality random # generator. In the +// browser this is a little complicated due to unknown quality of Math.random() +// and inconsistent support for the `crypto` API. We do the best we can via +// feature-detection + +// getRandomValues needs to be invoked in a context where "this" is a Crypto implementation. +var getRandomValues = (typeof(crypto) != 'undefined' && crypto.getRandomValues.bind(crypto)) || + (typeof(msCrypto) != 'undefined' && msCrypto.getRandomValues.bind(msCrypto)); +if (getRandomValues) { + // WHATWG crypto RNG - http://wiki.whatwg.org/wiki/Crypto + var rnds8 = new Uint8Array(16); // eslint-disable-line no-undef + + module.exports = function whatwgRNG() { + getRandomValues(rnds8); + return rnds8; + }; +} else { + // Math.random()-based (RNG) + // + // If all else fails, use Math.random(). It's fast, but is of unspecified + // quality. + var rnds = new Array(16); + + module.exports = function mathRNG() { + for (var i = 0, r; i < 16; i++) { + if ((i & 0x03) === 0) r = Math.random() * 0x100000000; + rnds[i] = r >>> ((i & 0x03) << 3) & 0xff; + } + + return rnds; + }; +} + + +/***/ }), + +/***/ "./node_modules/uuid/v1.js": +/*!*********************************!*\ + !*** ./node_modules/uuid/v1.js ***! + \*********************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var rng = __webpack_require__(/*! ./lib/rng */ "./node_modules/uuid/lib/rng-browser.js"); +var bytesToUuid = __webpack_require__(/*! ./lib/bytesToUuid */ "./node_modules/uuid/lib/bytesToUuid.js"); + +// **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html + +var _nodeId; +var _clockseq; + +// Previous uuid creation time +var _lastMSecs = 0; +var _lastNSecs = 0; + +// See https://github.com/broofa/node-uuid for API details +function v1(options, buf, offset) { + var i = buf && offset || 0; + var b = buf || []; + + options = options || {}; + var node = options.node || _nodeId; + var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; + + // node and clockseq need to be initialized to random values if they're not + // specified. We do this lazily to minimize issues related to insufficient + // system entropy. See #189 + if (node == null || clockseq == null) { + var seedBytes = rng(); + if (node == null) { + // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) + node = _nodeId = [ + seedBytes[0] | 0x01, + seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5] + ]; + } + if (clockseq == null) { + // Per 4.2.2, randomize (14 bit) clockseq + clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff; + } + } + + // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime(); + + // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; + + // Time since last uuid creation (in msecs) + var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000; + + // Per 4.2.1.2, Bump clockseq on clock regression + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } + + // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } + + // Per 4.2.1.2 Throw error if too many uuids are requested + if (nsecs >= 10000) { + throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec'); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; + + // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + msecs += 12219292800000; + + // `time_low` + var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; + + // `time_mid` + var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; + + // `time_high_and_version` + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + b[i++] = tmh >>> 16 & 0xff; + + // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + b[i++] = clockseq >>> 8 | 0x80; + + // `clock_seq_low` + b[i++] = clockseq & 0xff; + + // `node` + for (var n = 0; n < 6; ++n) { + b[i + n] = node[n]; + } + + return buf ? buf : bytesToUuid(b); +} + +module.exports = v1; + + /***/ }), /***/ "./node_modules/value-equal/index.js": diff --git a/public/bundle.js.map b/public/bundle.js.map index 9b760ce..d4ebeef 100644 --- a/public/bundle.js.map +++ b/public/bundle.js.map @@ -1 +1 @@ -{"version":3,"file":"bundle.js","sources":["webpack:///webpack/bootstrap","webpack:///./app/client/api/crud.actions.js","webpack:///./app/client/api/crud.fetch.js","webpack:///./app/client/api/crud.types.js","webpack:///./app/client/api/crud.upload.js","webpack:///./app/client/api/index.js","webpack:///./app/client/api/parser.js","webpack:///./app/client/common/button.component.js","webpack:///./app/client/common/fileList.component.js","webpack:///./app/client/common/fileUpload.component.js","webpack:///./app/client/common/gallery.component.js","webpack:///./app/client/common/group.component.js","webpack:///./app/client/common/header.component.js","webpack:///./app/client/common/param.component.js","webpack:///./app/client/common/paramGroup.component.js","webpack:///./app/client/common/player.component.js","webpack:///./app/client/common/select.component.js","webpack:///./app/client/common/slider.component.js","webpack:///./app/client/common/textInput.component.js","webpack:///./app/client/dashboard/dashboard.actions.js","webpack:///./app/client/dashboard/dashboard.component.js","webpack:///./app/client/dashboard/dashboard.reducer.js","webpack:///./app/client/dashboard/dashboardheader.component.js","webpack:///./app/client/dashboard/tasklist.component.js","webpack:///./app/client/dataset/dataset.component.js","webpack:///./app/client/dataset/dataset.reducer.js","webpack:///./app/client/index.jsx","webpack:///./app/client/live/live.actions.js","webpack:///./app/client/live/live.reducer.js","webpack:///./app/client/live/player.js","webpack:///./app/client/live/whammy.js","webpack:///./app/client/modules/index.js","webpack:///./app/client/modules/module.reducer.js","webpack:///./app/client/modules/pix2pix/index.js","webpack:///./app/client/modules/pix2pix/live.component.js","webpack:///./app/client/modules/samplernn/index.js","webpack:///./app/client/modules/samplernn/samplernn.datasets.js","webpack:///./app/client/modules/samplernn/samplernn.reducer.js","webpack:///./app/client/socket/index.js","webpack:///./app/client/socket/socket.connection.js","webpack:///./app/client/socket/socket.live.js","webpack:///./app/client/socket/socket.system.js","webpack:///./app/client/socket/socket.task.js","webpack:///./app/client/store.js","webpack:///./app/client/system/system.actions.js","webpack:///./app/client/system/system.component.js","webpack:///./app/client/system/system.reducer.js","webpack:///./app/client/task/task.actions.js","webpack:///./app/client/task/task.reducer.js","webpack:///./app/client/types.js","webpack:///./app/client/util.js","webpack:///./node_modules/fbjs/lib/emptyFunction.js","webpack:///./node_modules/fbjs/lib/invariant.js","webpack:///./node_modules/fbjs/lib/warning.js","webpack:///./node_modules/fetch-jsonp/build/fetch-jsonp.js","webpack:///./node_modules/file-saver/FileSaver.js","webpack:///./node_modules/history/DOMUtils.js","webpack:///./node_modules/history/LocationUtils.js","webpack:///./node_modules/history/PathUtils.js","webpack:///./node_modules/history/createBrowserHistory.js","webpack:///./node_modules/history/createHashHistory.js","webpack:///./node_modules/history/createMemoryHistory.js","webpack:///./node_modules/history/createTransitionManager.js","webpack:///./node_modules/history/es/DOMUtils.js","webpack:///./node_modules/history/es/LocationUtils.js","webpack:///./node_modules/history/es/PathUtils.js","webpack:///./node_modules/history/es/createBrowserHistory.js","webpack:///./node_modules/history/es/createHashHistory.js","webpack:///./node_modules/history/es/createMemoryHistory.js","webpack:///./node_modules/history/es/createTransitionManager.js","webpack:///./node_modules/history/es/index.js","webpack:///./node_modules/hoist-non-react-statics/index.js","webpack:///./node_modules/invariant/browser.js","webpack:///./node_modules/lodash-es/_Symbol.js","webpack:///./node_modules/lodash-es/_baseGetTag.js","webpack:///./node_modules/lodash-es/_freeGlobal.js","webpack:///./node_modules/lodash-es/_getPrototype.js","webpack:///./node_modules/lodash-es/_getRawTag.js","webpack:///./node_modules/lodash-es/_objectToString.js","webpack:///./node_modules/lodash-es/_overArg.js","webpack:///./node_modules/lodash-es/_root.js","webpack:///./node_modules/lodash-es/isObjectLike.js","webpack:///./node_modules/lodash-es/isPlainObject.js","webpack:///./node_modules/moment/locale/af.js","webpack:///./node_modules/moment/locale/ar-dz.js","webpack:///./node_modules/moment/locale/ar-kw.js","webpack:///./node_modules/moment/locale/ar-ly.js","webpack:///./node_modules/moment/locale/ar-ma.js","webpack:///./node_modules/moment/locale/ar-sa.js","webpack:///./node_modules/moment/locale/ar-tn.js","webpack:///./node_modules/moment/locale/ar.js","webpack:///./node_modules/moment/locale/az.js","webpack:///./node_modules/moment/locale/be.js","webpack:///./node_modules/moment/locale/bg.js","webpack:///./node_modules/moment/locale/bm.js","webpack:///./node_modules/moment/locale/bn.js","webpack:///./node_modules/moment/locale/bo.js","webpack:///./node_modules/moment/locale/br.js","webpack:///./node_modules/moment/locale/bs.js","webpack:///./node_modules/moment/locale/ca.js","webpack:///./node_modules/moment/locale/cs.js","webpack:///./node_modules/moment/locale/cv.js","webpack:///./node_modules/moment/locale/cy.js","webpack:///./node_modules/moment/locale/da.js","webpack:///./node_modules/moment/locale/de-at.js","webpack:///./node_modules/moment/locale/de-ch.js","webpack:///./node_modules/moment/locale/de.js","webpack:///./node_modules/moment/locale/dv.js","webpack:///./node_modules/moment/locale/el.js","webpack:///./node_modules/moment/locale/en-au.js","webpack:///./node_modules/moment/locale/en-ca.js","webpack:///./node_modules/moment/locale/en-gb.js","webpack:///./node_modules/moment/locale/en-ie.js","webpack:///./node_modules/moment/locale/en-il.js","webpack:///./node_modules/moment/locale/en-nz.js","webpack:///./node_modules/moment/locale/eo.js","webpack:///./node_modules/moment/locale/es-do.js","webpack:///./node_modules/moment/locale/es-us.js","webpack:///./node_modules/moment/locale/es.js","webpack:///./node_modules/moment/locale/et.js","webpack:///./node_modules/moment/locale/eu.js","webpack:///./node_modules/moment/locale/fa.js","webpack:///./node_modules/moment/locale/fi.js","webpack:///./node_modules/moment/locale/fo.js","webpack:///./node_modules/moment/locale/fr-ca.js","webpack:///./node_modules/moment/locale/fr-ch.js","webpack:///./node_modules/moment/locale/fr.js","webpack:///./node_modules/moment/locale/fy.js","webpack:///./node_modules/moment/locale/gd.js","webpack:///./node_modules/moment/locale/gl.js","webpack:///./node_modules/moment/locale/gom-latn.js","webpack:///./node_modules/moment/locale/gu.js","webpack:///./node_modules/moment/locale/he.js","webpack:///./node_modules/moment/locale/hi.js","webpack:///./node_modules/moment/locale/hr.js","webpack:///./node_modules/moment/locale/hu.js","webpack:///./node_modules/moment/locale/hy-am.js","webpack:///./node_modules/moment/locale/id.js","webpack:///./node_modules/moment/locale/is.js","webpack:///./node_modules/moment/locale/it.js","webpack:///./node_modules/moment/locale/ja.js","webpack:///./node_modules/moment/locale/jv.js","webpack:///./node_modules/moment/locale/ka.js","webpack:///./node_modules/moment/locale/kk.js","webpack:///./node_modules/moment/locale/km.js","webpack:///./node_modules/moment/locale/kn.js","webpack:///./node_modules/moment/locale/ko.js","webpack:///./node_modules/moment/locale/ky.js","webpack:///./node_modules/moment/locale/lb.js","webpack:///./node_modules/moment/locale/lo.js","webpack:///./node_modules/moment/locale/lt.js","webpack:///./node_modules/moment/locale/lv.js","webpack:///./node_modules/moment/locale/me.js","webpack:///./node_modules/moment/locale/mi.js","webpack:///./node_modules/moment/locale/mk.js","webpack:///./node_modules/moment/locale/ml.js","webpack:///./node_modules/moment/locale/mn.js","webpack:///./node_modules/moment/locale/mr.js","webpack:///./node_modules/moment/locale/ms-my.js","webpack:///./node_modules/moment/locale/ms.js","webpack:///./node_modules/moment/locale/mt.js","webpack:///./node_modules/moment/locale/my.js","webpack:///./node_modules/moment/locale/nb.js","webpack:///./node_modules/moment/locale/ne.js","webpack:///./node_modules/moment/locale/nl-be.js","webpack:///./node_modules/moment/locale/nl.js","webpack:///./node_modules/moment/locale/nn.js","webpack:///./node_modules/moment/locale/pa-in.js","webpack:///./node_modules/moment/locale/pl.js","webpack:///./node_modules/moment/locale/pt-br.js","webpack:///./node_modules/moment/locale/pt.js","webpack:///./node_modules/moment/locale/ro.js","webpack:///./node_modules/moment/locale/ru.js","webpack:///./node_modules/moment/locale/sd.js","webpack:///./node_modules/moment/locale/se.js","webpack:///./node_modules/moment/locale/si.js","webpack:///./node_modules/moment/locale/sk.js","webpack:///./node_modules/moment/locale/sl.js","webpack:///./node_modules/moment/locale/sq.js","webpack:///./node_modules/moment/locale/sr-cyrl.js","webpack:///./node_modules/moment/locale/sr.js","webpack:///./node_modules/moment/locale/ss.js","webpack:///./node_modules/moment/locale/sv.js","webpack:///./node_modules/moment/locale/sw.js","webpack:///./node_modules/moment/locale/ta.js","webpack:///./node_modules/moment/locale/te.js","webpack:///./node_modules/moment/locale/tet.js","webpack:///./node_modules/moment/locale/tg.js","webpack:///./node_modules/moment/locale/th.js","webpack:///./node_modules/moment/locale/tl-ph.js","webpack:///./node_modules/moment/locale/tlh.js","webpack:///./node_modules/moment/locale/tr.js","webpack:///./node_modules/moment/locale/tzl.js","webpack:///./node_modules/moment/locale/tzm-latn.js","webpack:///./node_modules/moment/locale/tzm.js","webpack:///./node_modules/moment/locale/ug-cn.js","webpack:///./node_modules/moment/locale/uk.js","webpack:///./node_modules/moment/locale/ur.js","webpack:///./node_modules/moment/locale/uz-latn.js","webpack:///./node_modules/moment/locale/uz.js","webpack:///./node_modules/moment/locale/vi.js","webpack:///./node_modules/moment/locale/x-pseudo.js","webpack:///./node_modules/moment/locale/yo.js","webpack:///./node_modules/moment/locale/zh-cn.js","webpack:///./node_modules/moment/locale/zh-hk.js","webpack:///./node_modules/moment/locale/zh-tw.js","webpack:///./node_modules/moment/moment.js","webpack:///./node_modules/node-fetch/browser.js","webpack:///./node_modules/object-assign/index.js","webpack:///./node_modules/preact-compat/dist/preact-compat.es.js","webpack:///./node_modules/preact/dist/preact.esm.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/prop-types/checkPropTypes.js","webpack:///./node_modules/prop-types/factoryWithTypeCheckers.js","webpack:///./node_modules/prop-types/index.js","webpack:///./node_modules/prop-types/lib/ReactPropTypesSecret.js","webpack:///./node_modules/react-redux/es/components/Provider.js","webpack:///./node_modules/react-redux/es/components/connectAdvanced.js","webpack:///./node_modules/react-redux/es/connect/connect.js","webpack:///./node_modules/react-redux/es/connect/mapDispatchToProps.js","webpack:///./node_modules/react-redux/es/connect/mapStateToProps.js","webpack:///./node_modules/react-redux/es/connect/mergeProps.js","webpack:///./node_modules/react-redux/es/connect/selectorFactory.js","webpack:///./node_modules/react-redux/es/connect/verifySubselectors.js","webpack:///./node_modules/react-redux/es/connect/wrapMapToProps.js","webpack:///./node_modules/react-redux/es/index.js","webpack:///./node_modules/react-redux/es/utils/PropTypes.js","webpack:///./node_modules/react-redux/es/utils/Subscription.js","webpack:///./node_modules/react-redux/es/utils/shallowEqual.js","webpack:///./node_modules/react-redux/es/utils/verifyPlainObject.js","webpack:///./node_modules/react-redux/es/utils/warning.js","webpack:///./node_modules/react-router-dom/es/BrowserRouter.js","webpack:///./node_modules/react-router-dom/es/HashRouter.js","webpack:///./node_modules/react-router-dom/es/Link.js","webpack:///./node_modules/react-router-dom/es/MemoryRouter.js","webpack:///./node_modules/react-router-dom/es/NavLink.js","webpack:///./node_modules/react-router-dom/es/Prompt.js","webpack:///./node_modules/react-router-dom/es/Redirect.js","webpack:///./node_modules/react-router-dom/es/Route.js","webpack:///./node_modules/react-router-dom/es/Router.js","webpack:///./node_modules/react-router-dom/es/StaticRouter.js","webpack:///./node_modules/react-router-dom/es/Switch.js","webpack:///./node_modules/react-router-dom/es/index.js","webpack:///./node_modules/react-router-dom/es/matchPath.js","webpack:///./node_modules/react-router-dom/es/withRouter.js","webpack:///./node_modules/react-router-redux/lib/actions.js","webpack:///./node_modules/react-router-redux/lib/index.js","webpack:///./node_modules/react-router-redux/lib/middleware.js","webpack:///./node_modules/react-router-redux/lib/reducer.js","webpack:///./node_modules/react-router-redux/lib/sync.js","webpack:///./node_modules/react-router/es/MemoryRouter.js","webpack:///./node_modules/react-router/es/Prompt.js","webpack:///./node_modules/react-router/es/Redirect.js","webpack:///./node_modules/react-router/es/Route.js","webpack:///./node_modules/react-router/es/Router.js","webpack:///./node_modules/react-router/es/StaticRouter.js","webpack:///./node_modules/react-router/es/Switch.js","webpack:///./node_modules/react-router/es/matchPath.js","webpack:///./node_modules/react-router/es/withRouter.js","webpack:///./node_modules/react-router/node_modules/isarray/index.js","webpack:///./node_modules/react-router/node_modules/path-to-regexp/index.js","webpack:///./node_modules/redux-thunk/lib/index.js","webpack:///./node_modules/redux/es/redux.js","webpack:///./node_modules/resolve-pathname/index.js","webpack:///./node_modules/symbol-observable/es/index.js","webpack:///./node_modules/symbol-observable/es/ponyfill.js","webpack:///./node_modules/value-equal/index.js","webpack:///./node_modules/warning/browser.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///(webpack)/buildin/amd-options.js","webpack:///(webpack)/buildin/global.js","webpack:///(webpack)/buildin/harmony-module.js","webpack:///(webpack)/buildin/module.js"],"sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./app/client/index.jsx\");\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.crud_action = undefined;\nexports.crud_actions = crud_actions;\n\nvar _crud = require('./crud.fetch');\n\nvar _crud2 = require('./crud.types');\n\nvar _crud3 = require('./crud.upload');\n\nfunction crud_actions(type) {\n var fetch_type = (0, _crud.crud_fetch)(type);\n return ['index', 'show', 'create', 'update', 'destroy'].reduce(function (lookup, param) {\n lookup[param] = crud_action(type, param, function (q) {\n return fetch_type[param](q);\n });\n return lookup;\n }, {\n action: function action(method, fn) {\n return crud_action(type, method, fn);\n },\n upload: function upload(id, fd) {\n return (0, _crud3.upload_action)(type, id, fd);\n }\n });\n}\n\nvar crud_action = exports.crud_action = function crud_action(type, method, fn) {\n return function (q) {\n return function (dispatch) {\n dispatch({ type: (0, _crud2.as_type)(type, method + '_loading') });\n fn(q).then(function (data) {\n dispatch({ type: (0, _crud2.as_type)(type, method), data: data });\n }).catch(function (e) {\n dispatch({ type: (0, _crud2.as_type)(type, method + '_error') });\n });\n };\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.crud_fetch = crud_fetch;\nexports.postBody = postBody;\n\nvar _nodeFetch = require('node-fetch');\n\nvar _nodeFetch2 = _interopRequireDefault(_nodeFetch);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction crud_fetch(type, tag) {\n var uri = '/api/' + type + '/' + (tag || '');\n return {\n index: function index(q) {\n return (0, _nodeFetch2.default)(_get_url(uri, q), _get_headers()).then(function (req) {\n return req.json();\n }).catch(error);\n },\n\n show: function show(id) {\n return (0, _nodeFetch2.default)(uri + id).then(function (req) {\n return req.json();\n }).catch(error);\n },\n\n create: function create(data) {\n return (0, _nodeFetch2.default)(uri, post(data)).then(function (req) {\n return req.json();\n }).catch(error);\n },\n\n update: function update(data) {\n return (0, _nodeFetch2.default)(uri + data.id, put(data)).then(function (req) {\n return req.json();\n }).catch(error);\n },\n\n destroy: function destroy(data) {\n return (0, _nodeFetch2.default)(uri + data.id, _destroy(data)).then(function (req) {\n return req.json();\n }).catch(error);\n }\n };\n}\n\nfunction _get_url(_url, data) {\n var url = new URL(window.location.origin + _url);\n if (data) {\n Object.keys(data).forEach(function (key) {\n return url.searchParams.append(key, data[key]);\n });\n }\n return url;\n}\nfunction _get_headers() {\n return {\n method: 'GET',\n headers: {\n 'Accept': 'application/json'\n }\n };\n}\nfunction post(data) {\n return {\n method: 'POST',\n body: JSON.stringify(data),\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n }\n };\n}\nfunction postBody(data) {\n return {\n method: 'POST',\n body: data,\n headers: {\n 'Accept': 'application/json'\n }\n };\n}\nfunction put(data) {\n return {\n method: 'PUT',\n body: JSON.stringify(data),\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n }\n };\n}\nfunction _destroy(data) {\n return {\n method: 'DELETE',\n body: JSON.stringify(data),\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n }\n };\n}\nfunction error(err) {\n console.warn(err);\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar as_type = exports.as_type = function as_type(a, b) {\n return [a, b].join('_').toUpperCase();\n};\n\nvar crud_type = exports.crud_type = function crud_type(type) {\n var actions = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return actions.concat(['index_loading', 'index', 'index_error', 'show_loading', 'show', 'show_error', 'create_loading', 'create', 'create_error', 'update_loading', 'update', 'update_error', 'destroy_loading', 'destroy', 'destroy_error', 'upload_loading', 'upload_progress', 'upload_waiting', 'upload_complete', 'upload_error', 'sort']).reduce(function (a, b) {\n return (a[b] = as_type(type, b)) && a;\n }, {});\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.upload_action = undefined;\nexports.crud_upload = crud_upload;\n\nvar _crud = require('./crud.types');\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction crud_upload(type, fd, data, dispatch) {\n return new Promise(function (resolve, reject) {\n var id = data.id;\n\n Object.keys(data).forEach(function (key) {\n if (key !== 'id') {\n fd.append(key, data[key]);\n }\n });\n\n var xhr = new XMLHttpRequest();\n xhr.upload.addEventListener(\"progress\", uploadProgress, false);\n xhr.addEventListener(\"load\", uploadComplete, false);\n xhr.addEventListener(\"error\", uploadFailed, false);\n xhr.addEventListener(\"abort\", uploadCancelled, false);\n xhr.open(\"POST\", '/' + type + '/' + id + '/upload/');\n xhr.send(fd);\n\n dispatch && dispatch({ type: (0, _crud.as_type)(type, 'upload_loading') });\n\n var complete = false;\n\n function uploadProgress(e) {\n if (e.lengthComputable) {\n var percent = Math.round(e.loaded * 100 / e.total) || 0;\n if (percent > 99) {\n dispatch && dispatch(_defineProperty({\n type: (0, _crud.as_type)(type, 'upload_waiting'),\n percent: percent\n }, type, id));\n } else {\n dispatch && dispatch(_defineProperty({\n type: (0, _crud.as_type)(type, 'upload_progress'),\n percent: percent\n }, type, id));\n }\n } else {\n dispatch && dispatch(_defineProperty({\n type: (0, _crud.as_type)(type, 'upload_error'),\n error: 'unable to compute upload progress'\n }, type, id));\n }\n }\n\n function uploadComplete(e) {\n try {\n var _data = JSON.parse(e.target.responseText);\n } catch (e) {\n dispatch && dispatch(_defineProperty({\n type: (0, _crud.as_type)(type, 'upload_error'),\n error: 'upload failed'\n }, type, id));\n return;\n }\n dispatch && dispatch(_defineProperty({\n type: (0, _crud.as_type)(type, 'upload_complete'),\n data: data\n }, type, id));\n }\n\n function uploadFailed(evt) {\n dispatch && dispatch(_defineProperty({\n type: (0, _crud.as_type)(type, 'upload_error'),\n error: 'upload failed'\n }, type, id));\n }\n\n function uploadCancelled(evt) {\n dispatch && dispatch(_defineProperty({\n type: (0, _crud.as_type)(type, 'upload_error'),\n error: 'upload cancelled'\n }, type, id));\n }\n });\n}\n\nvar upload_action = exports.upload_action = function upload_action(type, id, fd) {\n return function (dispatch) {\n return crud_upload(type, id, fd, dispatch);\n };\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.actions = exports.parser = exports.util = undefined;\n\nvar _crud = require('./crud.actions');\n\nvar _util = require('../util');\n\nvar util = _interopRequireWildcard(_util);\n\nvar _parser = require('./parser');\n\nvar parser = _interopRequireWildcard(_parser);\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\n\n/*\nfor our crud events, create corresponding actions\nthe actions fire a 'loading' event, call the underlying api method, and then resolve.\nso you can do ... \n import { folderActions } from '../../api'\n folderActions.index({ module: 'samplernn' })\n folderActions.show(12)\n folderActions.create({ module: 'samplernn', name: 'foo' })\n folderActions.update(12, { module: 'pix2pix' })\n folderActions.destroy(12, { confirm: true })\n folderActions.upload(12, form_data)\n*/\n\nexports.util = util;\nexports.parser = parser;\nvar actions = exports.actions = ['folder', 'file', 'dataset', 'task', 'user'].reduce(function (a, b) {\n return (a[b] = (0, _crud.crud_actions)(b)) && a;\n}, {});","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.tumblr = exports.thumbnail = exports.loadImage = exports.tag = exports.parse = exports.lookup = exports.integrations = undefined;\n\nvar _nodeFetch = require('node-fetch');\n\nvar _nodeFetch2 = _interopRequireDefault(_nodeFetch);\n\nvar _fetchJsonp = require('fetch-jsonp');\n\nvar _fetchJsonp2 = _interopRequireDefault(_fetchJsonp);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar integrations = exports.integrations = [{\n type: 'image',\n regex: /\\.(jpeg|jpg|gif|png|svg)(\\?.*)?$/i,\n fetch: function fetch(url, done) {\n var img = new Image();\n img.onload = function () {\n if (!img) return;\n var width = img.naturalWidth,\n height = img.naturalHeight;\n img = null;\n done({\n url: url,\n type: \"image\",\n token: \"\",\n thumbnail: \"\",\n title: \"\",\n width: width,\n height: height\n });\n };\n img.src = url;\n if (img.complete) {\n img.onload();\n }\n },\n tag: function tag(media) {\n return '';\n }\n}, {\n type: 'video',\n regex: /\\.(mp4|webm)(\\?.*)?$/i,\n fetch: function fetch(url, done) {\n var video = document.createElement(\"video\");\n var url_parts = url.replace(/\\?.*$/, \"\").split(\"/\");\n var filename = url_parts[url_parts.length - 1];\n video.addEventListener(\"loadedmetadata\", function () {\n var width = video.videoWidth,\n height = video.videoHeight;\n video = null;\n done({\n url: url,\n type: \"video\",\n token: url,\n thumbnail: \"/public/assets/img/video-thumbnail.png\",\n title: filename,\n width: width,\n height: height\n });\n });\n video.src = url;\n video.load();\n },\n tag: function tag(media) {\n return '