2018-03-21 01:08:30 +01:00
module . exports =
/******/ ( function ( modules ) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = { } ;
/******/
/******/ // The require function
/******/ function _ _webpack _require _ _ ( moduleId ) {
/******/
/******/ // Check if module is in cache
/******/ if ( installedModules [ moduleId ] ) {
/******/ return installedModules [ moduleId ] . exports ;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules [ moduleId ] = {
/******/ i : moduleId ,
/******/ l : false ,
/******/ exports : { }
/******/ } ;
/******/
/******/ // Execute the module function
/******/ modules [ moduleId ] . call ( module . exports , module , module . exports , _ _webpack _require _ _ ) ;
/******/
/******/ // Flag the module as loaded
/******/ module . l = true ;
/******/
/******/ // Return the exports of the module
/******/ return module . exports ;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ _ _webpack _require _ _ . m = modules ;
/******/
/******/ // expose the module cache
/******/ _ _webpack _require _ _ . c = installedModules ;
/******/
/******/ // define getter function for harmony exports
/******/ _ _webpack _require _ _ . d = function ( exports , name , getter ) {
/******/ if ( ! _ _webpack _require _ _ . o ( exports , name ) ) {
/******/ Object . defineProperty ( exports , name , {
/******/ configurable : false ,
/******/ enumerable : true ,
/******/ get : getter
/******/ } ) ;
/******/ }
/******/ } ;
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ _ _webpack _require _ _ . n = function ( module ) {
/******/ var getter = module && module . _ _esModule ?
/******/ function getDefault ( ) { return module [ 'default' ] ; } :
/******/ function getModuleExports ( ) { return module ; } ;
/******/ _ _webpack _require _ _ . d ( getter , 'a' , getter ) ;
/******/ return getter ;
/******/ } ;
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ _ _webpack _require _ _ . o = function ( object , property ) { return Object . prototype . hasOwnProperty . call ( object , property ) ; } ;
/******/
/******/ // __webpack_public_path__
/******/ _ _webpack _require _ _ . p = "/" ;
/******/
/******/ // Load entry module and return exports
2018-03-22 01:35:51 +01:00
/******/ return _ _webpack _require _ _ ( _ _webpack _require _ _ . s = 55 ) ;
2018-03-21 01:08:30 +01:00
/******/ } )
/************************************************************************/
/******/ ( [
/* 0 */
/***/ ( function ( module , exports ) {
module . exports = require ( "react" ) ;
/***/ } ) ,
/* 1 */
/***/ ( function ( module , exports ) {
module . exports = require ( "winston" ) ;
/***/ } ) ,
/* 2 */
/***/ ( function ( module , exports ) {
module . exports = require ( "react-redux" ) ;
/***/ } ) ,
/* 3 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
function SiteConfig ( ) {
var _this = this ;
this . analytics = {
googleId : 'default'
} ;
this . assetDefaults = {
description : 'An asset published on Spee.ch' ,
thumbnail : 'https://spee.ch/assets/img/video_thumb_default.png' ,
title : 'Spee.ch'
} ;
this . auth = {
sessionKey : 'default'
} ;
this . componentsConfig = {
components : { } ,
containers : { } ,
pages : { }
} ;
this . details = {
description : 'Open-source, decentralized image and video sharing.' ,
host : 'default' ,
port : 3000 ,
title : 'Spee.ch' ,
twitter : '@spee_ch'
} ;
this . publishing = {
additionalClaimAddresses : [ ] ,
disabled : false ,
disabledMessage : 'Please check back soon.' ,
primaryClaimAddress : 'default' ,
thumbnailChannel : 'default' ,
thumbnailChannelId : 'default' ,
uploadDirectory : '/home/lbry/Uploads'
} ;
this . configure = function ( config ) {
if ( ! config ) {
return console . log ( 'No site config received.' ) ;
}
var analytics = config . analytics ,
assetDefaults = config . assetDefaults ,
auth = config . auth ,
componentsConfig = config . componentsConfig ,
details = config . details ,
publishing = config . publishing ;
_this . analytics = analytics ;
_this . assetDefaults = assetDefaults ;
_this . auth = auth ;
_this . details = details ;
_this . publishing = publishing ;
_this . componentsConfig = componentsConfig ;
} ;
} ;
module . exports = new SiteConfig ( ) ;
/***/ } ) ,
/* 4 */
/***/ ( function ( module , exports ) {
module . exports = require ( "react-router-dom" ) ;
/***/ } ) ,
/* 5 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var Sequelize = _ _webpack _require _ _ ( 32 ) ;
var logger = _ _webpack _require _ _ ( 1 ) ;
console . log ( 'exporting sequelize models' ) ;
var _require = _ _webpack _require _ _ ( 29 ) ,
database = _require . database ,
username = _require . username ,
password = _require . password ;
var db = { } ;
// set sequelize options
var sequelize = new Sequelize ( database , username , password , {
host : 'localhost' ,
dialect : 'mysql' ,
dialectOptions : { decimalNumbers : true } , // fix to ensure DECIMAL will not be stored as a string
logging : false ,
pool : {
max : 5 ,
min : 0 ,
idle : 10000 ,
acquire : 10000
}
} ) ;
// establish mysql connection
sequelize . authenticate ( ) . then ( function ( ) {
logger . info ( 'Sequelize has established mysql connection successfully.' ) ;
} ) . catch ( function ( err ) {
logger . error ( 'Sequelize was unable to connect to the database:' , err ) ;
} ) ;
// manually add each model to the db object
2018-03-22 01:35:51 +01:00
var Certificate = _ _webpack _require _ _ ( 72 ) ;
var Channel = _ _webpack _require _ _ ( 73 ) ;
var Claim = _ _webpack _require _ _ ( 74 ) ;
var File = _ _webpack _require _ _ ( 75 ) ;
var Request = _ _webpack _require _ _ ( 76 ) ;
var User = _ _webpack _require _ _ ( 77 ) ;
2018-03-21 01:08:30 +01:00
db [ 'Certificate' ] = sequelize . import ( 'Certificate' , Certificate ) ;
db [ 'Channel' ] = sequelize . import ( 'Channel' , Channel ) ;
db [ 'Claim' ] = sequelize . import ( 'Claim' , Claim ) ;
db [ 'File' ] = sequelize . import ( 'File' , File ) ;
db [ 'Request' ] = sequelize . import ( 'Request' , Request ) ;
db [ 'User' ] = sequelize . import ( 'User' , User ) ;
// run model.association for each model in the db object that has an association
Object . keys ( db ) . forEach ( function ( modelName ) {
if ( db [ modelName ] . associate ) {
logger . info ( 'Associating model:' , modelName ) ;
db [ modelName ] . associate ( db ) ;
}
} ) ;
db . sequelize = sequelize ;
db . Sequelize = Sequelize ;
// add an 'upsert' method to the db object
db . upsert = function ( Model , values , condition , tableName ) {
return Model . findOne ( {
where : condition
} ) . then ( function ( obj ) {
if ( obj ) {
// update
logger . debug ( 'updating record in db.' + tableName ) ;
return obj . update ( values ) ;
} else {
// insert
logger . debug ( 'creating record in db.' + tableName ) ;
return Model . create ( values ) ;
}
} ) . catch ( function ( error ) {
logger . error ( tableName + '.upsert error' , error ) ;
throw error ;
} ) ;
} ;
module . exports = db ;
/***/ } ) ,
/* 6 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _slicedToArray = function ( ) { function sliceIterator ( arr , i ) { var _arr = [ ] ; var _n = true ; var _d = false ; var _e = undefined ; try { for ( var _i = arr [ Symbol . iterator ] ( ) , _s ; ! ( _n = ( _s = _i . next ( ) ) . done ) ; _n = true ) { _arr . push ( _s . value ) ; if ( i && _arr . length === i ) break ; } } catch ( err ) { _d = true ; _e = err ; } finally { try { if ( ! _n && _i [ "return" ] ) _i [ "return" ] ( ) ; } finally { if ( _d ) throw _e ; } } return _arr ; } return function ( arr , i ) { if ( Array . isArray ( arr ) ) { return arr ; } else if ( Symbol . iterator in Object ( arr ) ) { return sliceIterator ( arr , i ) ; } else { throw new TypeError ( "Invalid attempt to destructure non-iterable instance" ) ; } } ; } ( ) ;
exports . default = request ;
2018-03-22 01:35:51 +01:00
_ _webpack _require _ _ ( 93 ) ;
2018-03-21 01:08:30 +01:00
/ * *
* Parses the JSON returned by a network request
*
* @ param { object } response A response from a network request
*
* @ return { object } The parsed JSON from the request
* /
function parseJSON ( response ) {
if ( response . status === 204 || response . status === 205 ) {
return null ;
}
return response . json ( ) ;
}
/ * *
* Parses the status returned by a network request
*
* @ param { object } response A response from a network request
* @ param { object } response The parsed JSON from the network request
*
* @ return { object | undefined } Returns object with status and statusText , or undefined
* /
function checkStatus ( response , jsonResponse ) {
if ( response . status >= 200 && response . status < 300 ) {
return jsonResponse ;
}
var error = new Error ( jsonResponse . message ) ;
error . response = response ;
throw error ;
}
/ * *
* Requests a URL , returning a promise
*
* @ param { string } url The URL we want to request
* @ param { object } [ options ] The options we want to pass to "fetch"
*
* @ return { object } The response data
* /
function request ( url , options ) {
return fetch ( url , options ) . then ( function ( response ) {
return Promise . all ( [ response , parseJSON ( response ) ] ) ;
} ) . then ( function ( _ref ) {
var _ref2 = _slicedToArray ( _ref , 2 ) ,
response = _ref2 [ 0 ] ,
jsonResponse = _ref2 [ 1 ] ;
return checkStatus ( response , jsonResponse ) ;
} ) ;
}
/***/ } ) ,
/* 7 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . onHandleShowPageUri = onHandleShowPageUri ;
exports . onRequestError = onRequestError ;
exports . onNewChannelRequest = onNewChannelRequest ;
exports . onNewAssetRequest = onNewAssetRequest ;
exports . onRequestUpdate = onRequestUpdate ;
exports . addRequestToRequestList = addRequestToRequestList ;
exports . addAssetToAssetList = addAssetToAssetList ;
exports . addNewChannelToChannelList = addNewChannelToChannelList ;
exports . onUpdateChannelClaims = onUpdateChannelClaims ;
exports . updateChannelClaims = updateChannelClaims ;
exports . fileRequested = fileRequested ;
exports . updateFileAvailability = updateFileAvailability ;
exports . updateDisplayAssetError = updateDisplayAssetError ;
2018-03-22 01:35:51 +01:00
var _show _action _types = _ _webpack _require _ _ ( 9 ) ;
2018-03-21 01:08:30 +01:00
var actions = _interopRequireWildcard ( _show _action _types ) ;
2018-03-22 01:35:51 +01:00
var _show _request _types = _ _webpack _require _ _ ( 51 ) ;
2018-03-21 01:08:30 +01:00
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 ; } }
// basic request parsing
function onHandleShowPageUri ( params ) {
return {
type : actions . HANDLE _SHOW _URI ,
data : params
} ;
} ;
function onRequestError ( error ) {
return {
type : actions . REQUEST _ERROR ,
data : error
} ;
} ;
function onNewChannelRequest ( channelName , channelId ) {
var requestType = _show _request _types . CHANNEL ;
var requestId = 'cr#' + channelName + '#' + channelId ;
return {
type : actions . CHANNEL _REQUEST _NEW ,
data : { requestType : requestType , requestId : requestId , channelName : channelName , channelId : channelId }
} ;
} ;
function onNewAssetRequest ( name , id , channelName , channelId , extension ) {
var requestType = extension ? _show _request _types . ASSET _LITE : _show _request _types . ASSET _DETAILS ;
var requestId = 'ar#' + name + '#' + id + '#' + channelName + '#' + channelId ;
return {
type : actions . ASSET _REQUEST _NEW ,
data : {
requestType : requestType ,
requestId : requestId ,
name : name ,
modifier : {
id : id ,
channel : {
name : channelName ,
id : channelId
}
}
}
} ;
} ;
function onRequestUpdate ( requestType , requestId ) {
return {
type : actions . REQUEST _UPDATE ,
data : {
requestType : requestType ,
requestId : requestId
}
} ;
} ;
function addRequestToRequestList ( id , error , key ) {
return {
type : actions . REQUEST _LIST _ADD ,
data : { id : id , error : error , key : key }
} ;
} ;
// asset actions
function addAssetToAssetList ( id , error , name , claimId , shortId , claimData ) {
return {
type : actions . ASSET _ADD ,
data : { id : id , error : error , name : name , claimId : claimId , shortId : shortId , claimData : claimData }
} ;
}
// channel actions
function addNewChannelToChannelList ( id , name , shortId , longId , claimsData ) {
return {
type : actions . CHANNEL _ADD ,
data : { id : id , name : name , shortId : shortId , longId : longId , claimsData : claimsData }
} ;
} ;
function onUpdateChannelClaims ( channelKey , name , longId , page ) {
return {
type : actions . CHANNEL _CLAIMS _UPDATE _ASYNC ,
data : { channelKey : channelKey , name : name , longId : longId , page : page }
} ;
} ;
function updateChannelClaims ( channelListId , claimsData ) {
return {
type : actions . CHANNEL _CLAIMS _UPDATE _SUCCESS ,
data : { channelListId : channelListId , claimsData : claimsData }
} ;
} ;
// display a file
function fileRequested ( name , claimId ) {
return {
type : actions . FILE _REQUESTED ,
data : { name : name , claimId : claimId }
} ;
} ;
function updateFileAvailability ( status ) {
return {
type : actions . FILE _AVAILABILITY _UPDATE ,
data : status
} ;
} ;
function updateDisplayAssetError ( error ) {
return {
type : actions . DISPLAY _ASSET _ERROR ,
data : error
} ;
} ;
/***/ } ) ,
/* 8 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _reactRedux = _ _webpack _require _ _ ( 2 ) ;
var _channel = _ _webpack _require _ _ ( 24 ) ;
var _publish = _ _webpack _require _ _ ( 25 ) ;
2018-03-22 01:35:51 +01:00
var _view = _ _webpack _require _ _ ( 95 ) ;
2018-03-21 01:08:30 +01:00
var _view2 = _interopRequireDefault ( _view ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var mapStateToProps = function mapStateToProps ( _ref ) {
var channel = _ref . channel ,
site = _ref . site ;
return {
channelName : channel . loggedInChannel . name ,
channelShortId : channel . loggedInChannel . shortId ,
channelLongId : channel . loggedInChannel . longId ,
siteDescription : site . description
} ;
} ;
var mapDispatchToProps = function mapDispatchToProps ( dispatch ) {
return {
onChannelLogin : function onChannelLogin ( name , shortId , longId ) {
dispatch ( ( 0 , _channel . updateLoggedInChannel ) ( name , shortId , longId ) ) ;
dispatch ( ( 0 , _publish . updateSelectedChannel ) ( name ) ) ;
} ,
onChannelLogout : function onChannelLogout ( ) {
dispatch ( ( 0 , _channel . updateLoggedInChannel ) ( null , null , null ) ) ;
}
} ;
} ;
exports . default = ( 0 , _reactRedux . connect ) ( mapStateToProps , mapDispatchToProps ) ( _view2 . default ) ;
/***/ } ) ,
/* 9 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
2018-03-22 01:35:51 +01:00
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
// request actions
var HANDLE _SHOW _URI = exports . HANDLE _SHOW _URI = 'HANDLE_SHOW_URI' ;
var REQUEST _ERROR = exports . REQUEST _ERROR = 'REQUEST_ERROR' ;
var REQUEST _UPDATE = exports . REQUEST _UPDATE = 'REQUEST_UPDATE' ;
var ASSET _REQUEST _NEW = exports . ASSET _REQUEST _NEW = 'ASSET_REQUEST_NEW' ;
var CHANNEL _REQUEST _NEW = exports . CHANNEL _REQUEST _NEW = 'CHANNEL_REQUEST_NEW' ;
var REQUEST _LIST _ADD = exports . REQUEST _LIST _ADD = 'REQUEST_LIST_ADD' ;
// asset actions
var ASSET _ADD = exports . ASSET _ADD = 'ASSET_ADD' ;
// channel actions
var CHANNEL _ADD = exports . CHANNEL _ADD = 'CHANNEL_ADD' ;
var CHANNEL _CLAIMS _UPDATE _ASYNC = exports . CHANNEL _CLAIMS _UPDATE _ASYNC = 'CHANNEL_CLAIMS_UPDATE_ASYNC' ;
var CHANNEL _CLAIMS _UPDATE _SUCCESS = exports . CHANNEL _CLAIMS _UPDATE _SUCCESS = 'CHANNEL_CLAIMS_UPDATE_SUCCESS' ;
// asset/file display actions
var FILE _REQUESTED = exports . FILE _REQUESTED = 'FILE_REQUESTED' ;
var FILE _AVAILABILITY _UPDATE = exports . FILE _AVAILABILITY _UPDATE = 'FILE_AVAILABILITY_UPDATE' ;
var DISPLAY _ASSET _ERROR = exports . DISPLAY _ASSET _ERROR = 'DISPLAY_ASSET_ERROR' ;
/***/ } ) ,
/* 10 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
2018-03-21 01:08:30 +01:00
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _reactRedux = _ _webpack _require _ _ ( 2 ) ;
2018-03-22 01:35:51 +01:00
var _view = _ _webpack _require _ _ ( 98 ) ;
2018-03-21 01:08:30 +01:00
var _view2 = _interopRequireDefault ( _view ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var mapStateToProps = function mapStateToProps ( _ref ) {
var site = _ref . site ;
var defaultDescription = site . defaultDescription ,
defaultThumbnail = site . defaultThumbnail ,
siteDescription = site . description ,
siteHost = site . host ,
siteTitle = site . title ,
siteTwitter = site . twitter ;
return {
defaultDescription : defaultDescription ,
defaultThumbnail : defaultThumbnail ,
siteDescription : siteDescription ,
siteHost : siteHost ,
siteTitle : siteTitle ,
siteTwitter : siteTwitter
} ;
} ;
exports . default = ( 0 , _reactRedux . connect ) ( mapStateToProps , null ) ( _view2 . default ) ;
/***/ } ) ,
/* 11 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
2018-03-22 01:35:51 +01:00
var selectAsset = exports . selectAsset = function selectAsset ( show ) {
var request = show . requestList [ show . request . id ] ;
var assetKey = request . key ;
return show . assetList [ assetKey ] ;
} ;
2018-03-21 01:08:30 +01:00
2018-03-22 01:35:51 +01:00
var selectShowState = exports . selectShowState = function selectShowState ( state ) {
return state . show ;
} ;
2018-03-21 01:08:30 +01:00
/***/ } ) ,
/* 12 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
2018-03-22 01:35:51 +01:00
var _require = _ _webpack _require _ _ ( 35 ) ,
lstatSync = _require . lstatSync ,
readdirSync = _require . readdirSync ;
var _require2 = _ _webpack _require _ _ ( 15 ) ,
join = _require2 . join ;
var getSubDirectoryNames = function getSubDirectoryNames ( root ) {
console . log ( 'getting sub directories for:' , root ) ;
return readdirSync ( root ) . filter ( function ( name ) {
console . log ( 'module found:' , name ) ;
var fullPath = join ( root , name ) ;
return lstatSync ( fullPath ) . isDirectory ( ) ;
} ) ;
2018-03-21 01:08:30 +01:00
} ;
2018-03-22 01:35:51 +01:00
module . exports = function ( root ) {
var allModules = { } ;
getSubDirectoryNames ( root ) . forEach ( function ( name ) {
console . log ( 'importing module:' , name ) ;
allModules [ name ] = _ _webpack _require _ _ ( 145 ) ( "./" + name ) . default ;
} ) ;
return allModules ;
2018-03-21 01:08:30 +01:00
} ;
/***/ } ) ,
/* 13 */
/***/ ( function ( module , exports ) {
module . exports = require ( "react-helmet" ) ;
/***/ } ) ,
/* 14 */
/***/ ( function ( module , exports ) {
module . exports = require ( "redux-saga/effects" ) ;
/***/ } ) ,
/* 15 */
2018-03-22 01:35:51 +01:00
/***/ ( function ( module , exports ) {
module . exports = require ( "path" ) ;
/***/ } ) ,
/* 16 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
2018-03-22 01:35:51 +01:00
var axios = _ _webpack _require _ _ ( 69 ) ;
2018-03-21 01:08:30 +01:00
var logger = _ _webpack _require _ _ ( 1 ) ;
2018-03-22 01:35:51 +01:00
var _require = _ _webpack _require _ _ ( 70 ) ,
2018-03-21 01:08:30 +01:00
_require$api = _require . api ,
apiHost = _require$api . apiHost ,
apiPort = _require$api . apiPort ;
var lbryApiUri = 'http://' + apiHost + ':' + apiPort ;
2018-03-22 01:35:51 +01:00
var _require2 = _ _webpack _require _ _ ( 17 ) ,
2018-03-21 01:08:30 +01:00
chooseGaLbrynetPublishLabel = _require2 . chooseGaLbrynetPublishLabel ,
sendGATimingEvent = _require2 . sendGATimingEvent ;
var handleLbrynetResponse = function handleLbrynetResponse ( _ref , resolve , reject ) {
var data = _ref . data ;
logger . debug ( 'lbry api data:' , data ) ;
if ( data . result ) {
// check for an error
if ( data . result . error ) {
logger . debug ( 'Lbrynet api error:' , data . result . error ) ;
reject ( new Error ( data . result . error ) ) ;
return ;
} ;
resolve ( data . result ) ;
return ;
}
// fallback in case it just timed out
reject ( JSON . stringify ( data ) ) ;
} ;
module . exports = {
publishClaim : function publishClaim ( publishParams ) {
logger . debug ( 'lbryApi >> Publishing claim to "' + publishParams . name + '"' ) ;
var gaStartTime = Date . now ( ) ;
return new Promise ( function ( resolve , reject ) {
axios . post ( lbryApiUri , {
method : 'publish' ,
params : publishParams
} ) . then ( function ( response ) {
sendGATimingEvent ( 'lbrynet' , 'publish' , chooseGaLbrynetPublishLabel ( publishParams ) , gaStartTime , Date . now ( ) ) ;
handleLbrynetResponse ( response , resolve , reject ) ;
} ) . catch ( function ( error ) {
reject ( error ) ;
} ) ;
} ) ;
} ,
getClaim : function getClaim ( uri ) {
logger . debug ( 'lbryApi >> Getting Claim for "' + uri + '"' ) ;
var gaStartTime = Date . now ( ) ;
return new Promise ( function ( resolve , reject ) {
axios . post ( lbryApiUri , {
method : 'get' ,
params : { uri : uri , timeout : 20 }
} ) . then ( function ( response ) {
sendGATimingEvent ( 'lbrynet' , 'getClaim' , 'GET' , gaStartTime , Date . now ( ) ) ;
handleLbrynetResponse ( response , resolve , reject ) ;
} ) . catch ( function ( error ) {
reject ( error ) ;
} ) ;
} ) ;
} ,
getClaimList : function getClaimList ( claimName ) {
logger . debug ( 'lbryApi >> Getting claim_list for "' + claimName + '"' ) ;
var gaStartTime = Date . now ( ) ;
return new Promise ( function ( resolve , reject ) {
axios . post ( lbryApiUri , {
method : 'claim_list' ,
params : { name : claimName }
} ) . then ( function ( response ) {
sendGATimingEvent ( 'lbrynet' , 'getClaimList' , 'CLAIM_LIST' , gaStartTime , Date . now ( ) ) ;
handleLbrynetResponse ( response , resolve , reject ) ;
} ) . catch ( function ( error ) {
reject ( error ) ;
} ) ;
} ) ;
} ,
resolveUri : function resolveUri ( uri ) {
logger . debug ( 'lbryApi >> Resolving URI for "' + uri + '"' ) ;
var gaStartTime = Date . now ( ) ;
return new Promise ( function ( resolve , reject ) {
axios . post ( lbryApiUri , {
method : 'resolve' ,
params : { uri : uri }
} ) . then ( function ( _ref2 ) {
var data = _ref2 . data ;
sendGATimingEvent ( 'lbrynet' , 'resolveUri' , 'RESOLVE' , gaStartTime , Date . now ( ) ) ;
if ( data . result [ uri ] . error ) {
// check for errors
reject ( data . result [ uri ] . error ) ;
} else {
// if no errors, resolve
resolve ( data . result [ uri ] ) ;
}
} ) . catch ( function ( error ) {
reject ( error ) ;
} ) ;
} ) ;
} ,
getDownloadDirectory : function getDownloadDirectory ( ) {
logger . debug ( 'lbryApi >> Retrieving the download directory path from lbry daemon...' ) ;
var gaStartTime = Date . now ( ) ;
return new Promise ( function ( resolve , reject ) {
axios . post ( lbryApiUri , {
method : 'settings_get'
} ) . then ( function ( _ref3 ) {
var data = _ref3 . data ;
sendGATimingEvent ( 'lbrynet' , 'getDownloadDirectory' , 'SETTINGS_GET' , gaStartTime , Date . now ( ) ) ;
if ( data . result ) {
resolve ( data . result . download _directory ) ;
} else {
return new Error ( 'Successfully connected to lbry daemon, but unable to retrieve the download directory.' ) ;
}
} ) . catch ( function ( error ) {
logger . error ( 'Lbrynet Error:' , error ) ;
resolve ( '/home/lbry/Downloads/' ) ;
} ) ;
} ) ;
} ,
createChannel : function createChannel ( name ) {
logger . debug ( 'lbryApi >> Creating channel for ' + name + '...' ) ;
var gaStartTime = Date . now ( ) ;
return new Promise ( function ( resolve , reject ) {
axios . post ( lbryApiUri , {
method : 'channel_new' ,
params : {
channel _name : name ,
amount : 0.1
}
} ) . then ( function ( response ) {
sendGATimingEvent ( 'lbrynet' , 'createChannel' , 'CHANNEL_NEW' , gaStartTime , Date . now ( ) ) ;
handleLbrynetResponse ( response , resolve , reject ) ;
} ) . catch ( function ( error ) {
reject ( error ) ;
} ) ;
} ) ;
}
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 17 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var logger = _ _webpack _require _ _ ( 1 ) ;
2018-03-22 01:35:51 +01:00
var ua = _ _webpack _require _ _ ( 71 ) ;
2018-03-21 01:08:30 +01:00
var _require = _ _webpack _require _ _ ( 3 ) ,
googleId = _require . analytics . googleId ,
title = _require . details . title ;
function createServeEventParams ( headers , ip , originalUrl ) {
return {
eventCategory : 'client requests' ,
eventAction : 'serve request' ,
eventLabel : originalUrl ,
ipOverride : ip ,
userAgentOverride : headers [ 'user-agent' ]
} ;
} ;
function createPublishTimingEventParams ( category , variable , label , startTime , endTime ) {
var duration = endTime - startTime ;
return {
userTimingCategory : category ,
userTimingVariableName : variable ,
userTimingTime : duration ,
userTimingLabel : label
} ;
} ;
function sendGoogleAnalyticsEvent ( ip , params ) {
var visitorId = ip . replace ( /\./g , '-' ) ;
var visitor = ua ( googleId , visitorId , { strictCidFormat : false , https : true } ) ;
visitor . event ( params , function ( err ) {
if ( err ) {
logger . error ( 'Google Analytics Event Error >>' , err ) ;
}
} ) ;
} ;
function sendGoogleAnalyticsTiming ( visitorId , params ) {
var visitor = ua ( googleId , visitorId , { strictCidFormat : false , https : true } ) ;
visitor . timing ( params , function ( err ) {
if ( err ) {
logger . error ( 'Google Analytics Event Error >>' , err ) ;
}
logger . debug ( 'Timing event successfully sent to google analytics' ) ;
} ) ;
} ;
module . exports = {
sendGAServeEvent : function sendGAServeEvent ( headers , ip , originalUrl ) {
var params = createServeEventParams ( headers , ip , originalUrl ) ;
sendGoogleAnalyticsEvent ( ip , params ) ;
} ,
sendGATimingEvent : function sendGATimingEvent ( category , variable , label , startTime , endTime ) {
var params = createPublishTimingEventParams ( category , variable , label , startTime , endTime ) ;
sendGoogleAnalyticsTiming ( title , params ) ;
} ,
chooseGaLbrynetPublishLabel : function chooseGaLbrynetPublishLabel ( _ref ) {
var channelName = _ref . channel _name ,
channelId = _ref . channel _id ;
return channelName || channelId ? 'PUBLISH_IN_CHANNEL_CLAIM' : 'PUBLISH_ANONYMOUS_CLAIM' ;
}
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 18 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports ) {
module . exports = require ( "redux" ) ;
/***/ } ) ,
/* 19 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _typeof = typeof Symbol === "function" && typeof Symbol . iterator === "symbol" ? function ( obj ) { return typeof obj ; } : function ( obj ) { return obj && typeof Symbol === "function" && obj . constructor === Symbol && obj !== Symbol . prototype ? "symbol" : typeof obj ; } ;
var _require = _ _webpack _require _ _ ( 3 ) ,
componentsConfig = _require . componentsConfig ;
function getDeepestChildValue ( parent , childrenKeys ) {
var childKey = childrenKeys . shift ( ) ; // .shift() retrieves the first element of array and removes it from array
var child = parent [ childKey ] ;
if ( childrenKeys . length >= 1 ) {
return getDeepestChildValue ( child , childrenKeys ) ;
}
return child ;
}
var dynamicImport = exports . dynamicImport = function dynamicImport ( filePath ) {
// validate inputs
if ( ! filePath ) {
throw new Error ( 'no file path provided to dynamicImport()' ) ;
}
if ( typeof filePath !== 'string' ) {
console . log ( 'dynamicImport > filePath:' , filePath ) ;
console . log ( 'dynamicImport > filePath type:' , typeof filePath === 'undefined' ? 'undefined' : _typeof ( filePath ) ) ;
throw new Error ( 'file path provided to dynamicImport() must be a string' ) ;
}
if ( ! componentsConfig ) {
console . log ( 'no componentsConfig found in siteConfig.js' ) ;
2018-03-22 01:35:51 +01:00
return _ _webpack _require _ _ ( 46 ) ( "" + filePath ) ;
2018-03-21 01:08:30 +01:00
}
// split out the file folders // filter out any empty or white-space-only strings
var folders = filePath . split ( '/' ) . filter ( function ( folderName ) {
return folderName . replace ( /\s/g , '' ) . length ;
} ) ;
// check for the component corresponding to file path in the site config object
// i.e. componentsConfig[folders[0]][folders[2][...][folders[n]]
var customComponent = getDeepestChildValue ( componentsConfig , folders ) ;
if ( customComponent ) {
return customComponent ; // return custom component
} else {
2018-03-22 01:35:51 +01:00
return _ _webpack _require _ _ ( 46 ) ( "" + filePath ) ;
2018-03-21 01:08:30 +01:00
}
} ;
/***/ } ) ,
/* 20 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var createBasicCanonicalLink = function createBasicCanonicalLink ( page , siteHost ) {
return siteHost + "/" + page ;
} ;
var createAssetCanonicalLink = function createAssetCanonicalLink ( asset , siteHost ) {
var channelName = void 0 ,
certificateId = void 0 ,
name = void 0 ,
claimId = void 0 ;
if ( asset . claimData ) {
var _asset$claimData = asset . claimData ;
channelName = _asset$claimData . channelName ;
certificateId = _asset$claimData . certificateId ;
name = _asset$claimData . name ;
claimId = _asset$claimData . claimId ;
} ;
if ( channelName ) {
return siteHost + "/" + channelName + ":" + certificateId + "/" + name ;
} ;
return siteHost + "/" + claimId + "/" + name ;
} ;
var createChannelCanonicalLink = function createChannelCanonicalLink ( channel , siteHost ) {
var name = channel . name ,
longId = channel . longId ;
return siteHost + "/" + name + ":" + longId ;
} ;
var createCanonicalLink = exports . createCanonicalLink = function createCanonicalLink ( asset , channel , page , siteHost ) {
if ( asset ) {
return createAssetCanonicalLink ( asset , siteHost ) ;
}
if ( channel ) {
return createChannelCanonicalLink ( channel , siteHost ) ;
}
return createBasicCanonicalLink ( page , siteHost ) ;
} ;
/***/ } ) ,
/* 21 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var _slicedToArray = function ( ) { function sliceIterator ( arr , i ) { var _arr = [ ] ; var _n = true ; var _d = false ; var _e = undefined ; try { for ( var _i = arr [ Symbol . iterator ] ( ) , _s ; ! ( _n = ( _s = _i . next ( ) ) . done ) ; _n = true ) { _arr . push ( _s . value ) ; if ( i && _arr . length === i ) break ; } } catch ( err ) { _d = true ; _e = err ; } finally { try { if ( ! _n && _i [ "return" ] ) _i [ "return" ] ( ) ; } finally { if ( _d ) throw _e ; } } return _arr ; } return function ( arr , i ) { if ( Array . isArray ( arr ) ) { return arr ; } else if ( Symbol . iterator in Object ( arr ) ) { return sliceIterator ( arr , i ) ; } else { throw new TypeError ( "Invalid attempt to destructure non-iterable instance" ) ; } } ; } ( ) ;
module . exports = {
REGEXP _INVALID _CLAIM : /[^A-Za-z0-9-]/g ,
REGEXP _INVALID _CHANNEL : /[^A-Za-z0-9-@]/g ,
REGEXP _ADDRESS : /^b(?=[^0OIl]{32,33})[0-9A-Za-z]{32,33}$/ ,
CHANNEL _CHAR : '@' ,
parseIdentifier : function parseIdentifier ( identifier ) {
var componentsRegex = new RegExp ( '([^:$#/]*)' + // value (stops at the first separator or end)
'([:$#]?)([^/]*)' // modifier separator, modifier (stops at the first path separator or end)
) ;
var _componentsRegex$exec = componentsRegex // eslint-disable-line no-unused-vars
. exec ( identifier ) . map ( function ( match ) {
return match || null ;
} ) ,
_componentsRegex$exec2 = _slicedToArray ( _componentsRegex$exec , 4 ) ,
proto = _componentsRegex$exec2 [ 0 ] ,
value = _componentsRegex$exec2 [ 1 ] ,
modifierSeperator = _componentsRegex$exec2 [ 2 ] ,
modifier = _componentsRegex$exec2 [ 3 ] ;
// Validate and process name
if ( ! value ) {
throw new Error ( 'Check your URL. No channel name provided before "' + modifierSeperator + '"' ) ;
}
var isChannel = value . startsWith ( module . exports . CHANNEL _CHAR ) ;
var channelName = isChannel ? value : null ;
var claimId = void 0 ;
if ( isChannel ) {
if ( ! channelName ) {
throw new Error ( 'Check your URL. No channel name after "@".' ) ;
}
var nameBadChars = channelName . match ( module . exports . REGEXP _INVALID _CHANNEL ) ;
if ( nameBadChars ) {
throw new Error ( 'Check your URL. Invalid characters in channel name: "' + nameBadChars . join ( ', ' ) + '".' ) ;
}
} else {
claimId = value ;
}
// Validate and process modifier
var channelClaimId = void 0 ;
if ( modifierSeperator ) {
if ( ! modifier ) {
throw new Error ( 'Check your URL. No modifier provided after separator "' + modifierSeperator + '"' ) ;
}
if ( modifierSeperator === ':' ) {
channelClaimId = modifier ;
} else {
throw new Error ( 'Check your URL. The "' + modifierSeperator + '" modifier is not currently supported' ) ;
}
}
return {
isChannel : isChannel ,
channelName : channelName ,
channelClaimId : channelClaimId || null ,
claimId : claimId || null
} ;
} ,
parseClaim : function parseClaim ( name ) {
var componentsRegex = new RegExp ( '([^:$#/.]*)' + // name (stops at the first extension)
'([:$#.]?)([^/]*)' // extension separator, extension (stops at the first path separator or end)
) ;
var _componentsRegex$exec3 = componentsRegex // eslint-disable-line no-unused-vars
. exec ( name ) . map ( function ( match ) {
return match || null ;
} ) ,
_componentsRegex$exec4 = _slicedToArray ( _componentsRegex$exec3 , 4 ) ,
proto = _componentsRegex$exec4 [ 0 ] ,
claimName = _componentsRegex$exec4 [ 1 ] ,
extensionSeperator = _componentsRegex$exec4 [ 2 ] ,
extension = _componentsRegex$exec4 [ 3 ] ;
// Validate and process name
if ( ! claimName ) {
throw new Error ( 'Check your URL. No claim name provided before "."' ) ;
}
var nameBadChars = claimName . match ( module . exports . REGEXP _INVALID _CLAIM ) ;
if ( nameBadChars ) {
throw new Error ( 'Check your URL. Invalid characters in claim name: "' + nameBadChars . join ( ', ' ) + '".' ) ;
}
// Validate and process extension
if ( extensionSeperator ) {
if ( ! extension ) {
throw new Error ( 'Check your URL. No file extension provided after separator "' + extensionSeperator + '".' ) ;
}
if ( extensionSeperator !== '.' ) {
throw new Error ( 'Check your URL. The "' + extensionSeperator + '" separator is not supported in the claim name.' ) ;
}
}
return {
claimName : claimName ,
extension : extension || null
} ;
}
} ;
/***/ } ) ,
/* 22 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var determineOgThumbnailContentType = function determineOgThumbnailContentType ( thumbnail ) {
if ( thumbnail ) {
var fileExt = thumbnail . substring ( thumbnail . lastIndexOf ( '.' ) ) ;
switch ( fileExt ) {
case 'jpeg' :
case 'jpg' :
return 'image/jpeg' ;
case 'png' :
return 'image/png' ;
case 'gif' :
return 'image/gif' ;
case 'mp4' :
return 'video/mp4' ;
default :
return 'image/jpeg' ;
}
}
return '' ;
} ;
var createBasicMetaTags = function createBasicMetaTags ( siteHost , siteDescription , siteTitle , siteTwitter ) {
return [ { property : 'og:title' , content : siteTitle } , { property : 'og:url' , content : siteHost } , { property : 'og:site_name' , content : siteTitle } , { property : 'og:description' , content : siteDescription } , { property : 'twitter:site' , content : siteTwitter } , { property : 'twitter:card' , content : 'summary' } ] ;
} ;
var createChannelMetaTags = function createChannelMetaTags ( siteTitle , siteHost , siteTwitter , channel ) {
var name = channel . name ,
longId = channel . longId ;
return [ { property : 'og:title' , content : name + ' on ' + siteTitle } , { property : 'og:url' , content : siteHost + '/' + name + ':' + longId } , { property : 'og:site_name' , content : siteTitle } , { property : 'og:description' , content : name + ', a channel on ' + siteTitle } , { property : 'twitter:site' , content : siteTwitter } , { property : 'twitter:card' , content : 'summary' } ] ;
} ;
var createAssetMetaTags = function createAssetMetaTags ( siteHost , siteTitle , siteTwitter , asset , defaultDescription , defaultThumbnail ) {
var claimData = asset . claimData ;
var contentType = claimData . contentType ;
var embedUrl = siteHost + '/' + claimData . claimId + '/' + claimData . name ;
var showUrl = siteHost + '/' + claimData . claimId + '/' + claimData . name ;
var source = siteHost + '/' + claimData . claimId + '/' + claimData . name + '.' + claimData . fileExt ;
var ogTitle = claimData . title || claimData . name ;
var ogDescription = claimData . description || defaultDescription ;
var ogThumbnailContentType = determineOgThumbnailContentType ( claimData . thumbnail ) ;
var ogThumbnail = claimData . thumbnail || defaultThumbnail ;
var metaTags = [ { property : 'og:title' , content : ogTitle } , { property : 'og:url' , content : showUrl } , { property : 'og:site_name' , content : siteTitle } , { property : 'og:description' , content : ogDescription } , { property : 'og:image:width' , content : 600 } , { property : 'og:image:height' , content : 315 } , { property : 'twitter:site' , content : siteTwitter } ] ;
if ( contentType === 'video/mp4' || contentType === 'video/webm' ) {
metaTags . push ( { property : 'og:video' , content : source } ) ;
metaTags . push ( { property : 'og:video:secure_url' , content : source } ) ;
metaTags . push ( { property : 'og:video:type' , content : contentType } ) ;
metaTags . push ( { property : 'og:image' , content : ogThumbnail } ) ;
metaTags . push ( { property : 'og:image:type' , content : ogThumbnailContentType } ) ;
metaTags . push ( { property : 'og:type' , content : 'video' } ) ;
metaTags . push ( { property : 'twitter:card' , content : 'player' } ) ;
metaTags . push ( { property : 'twitter:player' , content : embedUrl } ) ;
metaTags . push ( { property : 'twitter:player:width' , content : 600 } ) ;
metaTags . push ( { property : 'twitter:text:player_width' , content : 600 } ) ;
metaTags . push ( { property : 'twitter:player:height' , content : 337 } ) ;
metaTags . push ( { property : 'twitter:player:stream' , content : source } ) ;
metaTags . push ( { property : 'twitter:player:stream:content_type' , content : contentType } ) ;
} else {
metaTags . push ( { property : 'og:image' , content : source } ) ;
metaTags . push ( { property : 'og:image:type' , content : contentType } ) ;
metaTags . push ( { property : 'og:type' , content : 'article' } ) ;
metaTags . push ( { property : 'twitter:card' , content : 'summary_large_image' } ) ;
}
return metaTags ;
} ;
var createMetaTags = exports . createMetaTags = function createMetaTags ( siteDescription , siteHost , siteTitle , siteTwitter , asset , channel , defaultDescription , defaultThumbnail ) {
if ( asset ) {
return createAssetMetaTags ( siteHost , siteTitle , siteTwitter , asset , defaultDescription , defaultThumbnail ) ;
} ;
if ( channel ) {
return createChannelMetaTags ( siteHost , siteTitle , siteTwitter , channel ) ;
} ;
return createBasicMetaTags ( siteDescription , siteHost , siteTitle , siteTwitter ) ;
} ;
/***/ } ) ,
/* 23 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var createPageTitle = exports . createPageTitle = function createPageTitle ( siteTitle , pageTitle ) {
if ( ! pageTitle ) {
return "" + siteTitle ;
}
return siteTitle + " - " + pageTitle ;
} ;
/***/ } ) ,
/* 24 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . updateLoggedInChannel = updateLoggedInChannel ;
2018-03-22 01:35:51 +01:00
var _channel _action _types = _ _webpack _require _ _ ( 42 ) ;
2018-03-21 01:08:30 +01:00
var actions = _interopRequireWildcard ( _channel _action _types ) ;
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 ; } }
// export action creators
function updateLoggedInChannel ( name , shortId , longId ) {
return {
type : actions . CHANNEL _UPDATE ,
data : {
name : name ,
shortId : shortId ,
longId : longId
}
} ;
} ;
/***/ } ) ,
/* 25 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . selectFile = selectFile ;
exports . clearFile = clearFile ;
exports . updateMetadata = updateMetadata ;
exports . updateClaim = updateClaim ;
exports . setPublishInChannel = setPublishInChannel ;
exports . updatePublishStatus = updatePublishStatus ;
exports . updateError = updateError ;
exports . updateSelectedChannel = updateSelectedChannel ;
exports . toggleMetadataInputs = toggleMetadataInputs ;
exports . onNewThumbnail = onNewThumbnail ;
exports . startPublish = startPublish ;
2018-03-22 01:35:51 +01:00
var _publish _action _types = _ _webpack _require _ _ ( 41 ) ;
2018-03-21 01:08:30 +01:00
var actions = _interopRequireWildcard ( _publish _action _types ) ;
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 ; } }
// export action creators
function selectFile ( file ) {
return {
type : actions . FILE _SELECTED ,
data : file
} ;
} ;
function clearFile ( ) {
return {
type : actions . FILE _CLEAR
} ;
} ;
function updateMetadata ( name , value ) {
return {
type : actions . METADATA _UPDATE ,
data : {
name : name ,
value : value
}
} ;
} ;
function updateClaim ( value ) {
return {
type : actions . CLAIM _UPDATE ,
data : value
} ;
} ;
function setPublishInChannel ( channel ) {
return {
type : actions . SET _PUBLISH _IN _CHANNEL ,
channel : channel
} ;
} ;
function updatePublishStatus ( status , message ) {
return {
type : actions . PUBLISH _STATUS _UPDATE ,
data : {
status : status ,
message : message
}
} ;
} ;
function updateError ( name , value ) {
return {
type : actions . ERROR _UPDATE ,
data : {
name : name ,
value : value
}
} ;
} ;
function updateSelectedChannel ( channelName ) {
return {
type : actions . SELECTED _CHANNEL _UPDATE ,
data : channelName
} ;
} ;
function toggleMetadataInputs ( showMetadataInputs ) {
return {
type : actions . TOGGLE _METADATA _INPUTS ,
data : showMetadataInputs
} ;
} ;
function onNewThumbnail ( file ) {
return {
type : actions . THUMBNAIL _NEW ,
data : file
2018-03-22 01:35:51 +01:00
} ;
} ;
2018-03-21 01:08:30 +01:00
2018-03-22 01:35:51 +01:00
function startPublish ( history ) {
return {
type : actions . PUBLISH _START ,
data : { history : history }
} ;
}
2018-03-21 01:08:30 +01:00
2018-03-22 01:35:51 +01:00
/***/ } ) ,
/* 26 */
/***/ ( function ( module , exports ) {
2018-03-21 01:08:30 +01:00
2018-03-22 01:35:51 +01:00
module . exports = require ( "prop-types" ) ;
2018-03-21 01:08:30 +01:00
/***/ } ) ,
/* 27 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _react = _ _webpack _require _ _ ( 0 ) ;
var _react2 = _interopRequireDefault ( _react ) ;
2018-03-22 01:35:51 +01:00
var _propTypes = _ _webpack _require _ _ ( 26 ) ;
2018-03-21 01:08:30 +01:00
var _propTypes2 = _interopRequireDefault ( _propTypes ) ;
var _NavBar = _ _webpack _require _ _ ( 8 ) ;
var _NavBar2 = _interopRequireDefault ( _NavBar ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var ErrorPage = function ( _React$Component ) {
_inherits ( ErrorPage , _React$Component ) ;
function ErrorPage ( ) {
_classCallCheck ( this , ErrorPage ) ;
return _possibleConstructorReturn ( this , ( ErrorPage . _ _proto _ _ || Object . getPrototypeOf ( ErrorPage ) ) . apply ( this , arguments ) ) ;
}
_createClass ( ErrorPage , [ {
key : 'render' ,
value : function render ( ) {
var error = this . props . error ;
return _react2 . default . createElement (
'div' ,
null ,
_react2 . default . createElement ( _NavBar2 . default , null ) ,
_react2 . default . createElement (
'div' ,
{ className : 'row row--padded' } ,
_react2 . default . createElement (
'p' ,
null ,
error
)
)
) ;
}
} ] ) ;
return ErrorPage ;
} ( _react2 . default . Component ) ;
;
ErrorPage . propTypes = {
error : _propTypes2 . default . string . isRequired
} ;
exports . default = ErrorPage ;
/***/ } ) ,
/* 28 */
/***/ ( function ( module , exports ) {
module . exports = require ( "passport" ) ;
/***/ } ) ,
/* 29 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
function MysqlConfig ( ) {
var _this = this ;
this . database = 'default' ;
this . username = 'default' ;
this . password = 'default' ;
this . configure = function ( config ) {
if ( ! config ) {
return console . log ( 'No MySQL config received.' ) ;
}
var database = config . database ,
username = config . username ,
password = config . password ;
_this . database = database ;
_this . username = username ;
_this . password = password ;
} ;
} ;
module . exports = new MysqlConfig ( ) ;
/***/ } ) ,
/* 30 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
function SlackConfig ( ) {
var _this = this ;
this . slackWebHook = 'default' ;
this . slackErrorChannel = 'default' ;
this . slackInfoChannel = 'default' ;
this . configure = function ( config ) {
if ( ! config ) {
return console . log ( 'No slack config received.' ) ;
}
var slackWebHook = config . slackWebHook ,
slackErrorChannel = config . slackErrorChannel ,
slackInfoChannel = config . slackInfoChannel ;
_this . slackWebHook = slackWebHook ;
_this . slackErrorChannel = slackErrorChannel ;
_this . slackInfoChannel = slackInfoChannel ;
} ;
} ;
module . exports = new SlackConfig ( ) ;
/***/ } ) ,
/* 31 */
/***/ ( function ( module , exports ) {
module . exports = require ( "passport-local" ) ;
/***/ } ) ,
/* 32 */
/***/ ( function ( module , exports ) {
module . exports = require ( "sequelize" ) ;
/***/ } ) ,
/* 33 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
module . exports = {
returnShortId : function returnShortId ( claimsArray , longId ) {
var claimIndex = void 0 ;
var shortId = longId . substring ( 0 , 1 ) ; // default short id is the first letter
var shortIdLength = 0 ;
// find the index of this claim id
claimIndex = claimsArray . findIndex ( function ( element ) {
return element . claimId === longId ;
} ) ;
if ( claimIndex < 0 ) {
throw new Error ( 'claim id not found in claims list' ) ;
}
// get an array of all claims with lower height
var possibleMatches = claimsArray . slice ( 0 , claimIndex ) ;
// remove certificates with the same prefixes until none are left.
while ( possibleMatches . length > 0 ) {
shortIdLength += 1 ;
shortId = longId . substring ( 0 , shortIdLength ) ;
possibleMatches = possibleMatches . filter ( function ( element ) {
return element . claimId && element . claimId . substring ( 0 , shortIdLength ) === shortId ;
} ) ;
}
return shortId ;
}
} ;
/***/ } ) ,
/* 34 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var logger = _ _webpack _require _ _ ( 1 ) ;
2018-03-22 01:35:51 +01:00
var fs = _ _webpack _require _ _ ( 35 ) ;
2018-03-21 01:08:30 +01:00
var _require = _ _webpack _require _ _ ( 3 ) ,
details = _require . details ,
publishing = _require . publishing ;
module . exports = {
parsePublishApiRequestBody : function parsePublishApiRequestBody ( _ref ) {
var name = _ref . name ,
nsfw = _ref . nsfw ,
license = _ref . license ,
title = _ref . title ,
description = _ref . description ,
thumbnail = _ref . thumbnail ;
// validate name
if ( ! name ) {
throw new Error ( 'no name field found in request' ) ;
}
var invalidNameCharacters = /[^A-Za-z0-9,-]/ . exec ( name ) ;
if ( invalidNameCharacters ) {
throw new Error ( 'The claim name you provided is not allowed. Only the following characters are allowed: A-Z, a-z, 0-9, and "-"' ) ;
}
// optional parameters
nsfw = nsfw === 'true' ;
license = license || null ;
title = title || null ;
description = description || null ;
thumbnail = thumbnail || null ;
// return results
return {
name : name ,
nsfw : nsfw ,
license : license ,
title : title ,
description : description ,
thumbnail : thumbnail
} ;
} ,
parsePublishApiRequestFiles : function parsePublishApiRequestFiles ( _ref2 ) {
var file = _ref2 . file ,
thumbnail = _ref2 . thumbnail ;
// make sure a file was provided
if ( ! file ) {
throw new Error ( 'no file with key of [file] found in request' ) ;
}
if ( ! file . path ) {
throw new Error ( 'no file path found' ) ;
}
if ( ! file . type ) {
throw new Error ( 'no file type found' ) ;
}
if ( ! file . size ) {
throw new Error ( 'no file type found' ) ;
}
// validate the file name
if ( /'/ . test ( file . name ) ) {
throw new Error ( 'apostrophes are not allowed in the file name' ) ;
}
// validate the file
module . exports . validateFileTypeAndSize ( file ) ;
// return results
return {
fileName : file . name ,
filePath : file . path ,
fileType : file . type ,
thumbnailFileName : thumbnail ? thumbnail . name : null ,
thumbnailFilePath : thumbnail ? thumbnail . path : null ,
thumbnailFileType : thumbnail ? thumbnail . type : null
} ;
} ,
validateFileTypeAndSize : function validateFileTypeAndSize ( file ) {
// check file type and size
switch ( file . type ) {
case 'image/jpeg' :
case 'image/jpg' :
case 'image/png' :
if ( file . size > 10000000 ) {
logger . debug ( 'publish > file validation > .jpeg/.jpg/.png was too big' ) ;
throw new Error ( 'Sorry, images are limited to 10 megabytes.' ) ;
}
break ;
case 'image/gif' :
if ( file . size > 50000000 ) {
logger . debug ( 'publish > file validation > .gif was too big' ) ;
throw new Error ( 'Sorry, .gifs are limited to 50 megabytes.' ) ;
}
break ;
case 'video/mp4' :
if ( file . size > 50000000 ) {
logger . debug ( 'publish > file validation > .mp4 was too big' ) ;
throw new Error ( 'Sorry, videos are limited to 50 megabytes.' ) ;
}
break ;
default :
logger . debug ( 'publish > file validation > unrecognized file type' ) ;
throw new Error ( 'The ' + file . type + ' content type is not supported. Only, .jpeg, .png, .gif, and .mp4 files are currently supported.' ) ;
}
return file ;
} ,
createBasicPublishParams : function createBasicPublishParams ( filePath , name , title , description , license , nsfw , thumbnail ) {
logger . debug ( 'Creating Publish Parameters' ) ;
// provide defaults for title
if ( title === null || title . trim ( ) === '' ) {
title = name ;
}
// provide default for description
if ( description === null || description . trim ( ) === '' ) {
description = '' ;
}
// provide default for license
if ( license === null || license . trim ( ) === '' ) {
license = ' ' ; // default to empty string
}
// create the publish params
var publishParams = {
name : name ,
file _path : filePath ,
bid : 0.01 ,
metadata : {
description : description ,
title : title ,
author : details . title ,
language : 'en' ,
license : license ,
nsfw : nsfw
} ,
claim _address : publishing . primaryClaimAddress
} ;
// add thumbnail to channel if video
if ( thumbnail ) {
publishParams [ 'metadata' ] [ 'thumbnail' ] = thumbnail ;
}
return publishParams ;
} ,
createThumbnailPublishParams : function createThumbnailPublishParams ( thumbnailFilePath , claimName , license , nsfw ) {
if ( ! thumbnailFilePath ) {
return ;
}
logger . debug ( 'Creating Thumbnail Publish Parameters' ) ;
// create the publish params
return {
name : claimName + '-thumb' ,
file _path : thumbnailFilePath ,
bid : 0.01 ,
metadata : {
title : claimName + ' thumbnail' ,
description : 'a thumbnail for ' + claimName ,
author : details . title ,
language : 'en' ,
license : license ,
nsfw : nsfw
} ,
claim _address : publishing . primaryClaimAddress ,
channel _name : publishing . thumbnailChannel ,
channel _id : publishing . thumbnailChannelId
} ;
} ,
deleteTemporaryFile : function deleteTemporaryFile ( filePath ) {
fs . unlink ( filePath , function ( err ) {
if ( err ) {
logger . error ( 'error deleting temporary file ' + filePath ) ;
throw err ;
}
logger . debug ( 'successfully deleted ' + filePath ) ;
} ) ;
} ,
addGetResultsToFileData : function addGetResultsToFileData ( fileInfo , getResult ) {
fileInfo . fileName = getResult . file _name ;
fileInfo . filePath = getResult . download _path ;
return fileInfo ;
} ,
createFileData : function createFileData ( _ref3 ) {
var name = _ref3 . name ,
claimId = _ref3 . claimId ,
outpoint = _ref3 . outpoint ,
height = _ref3 . height ,
address = _ref3 . address ,
nsfw = _ref3 . nsfw ,
contentType = _ref3 . contentType ;
return {
name : name ,
claimId : claimId ,
outpoint : outpoint ,
height : height ,
address : address ,
fileName : '' ,
filePath : '' ,
fileType : contentType ,
nsfw : nsfw
} ;
}
} ;
/***/ } ) ,
/* 35 */
2018-03-22 01:35:51 +01:00
/***/ ( function ( module , exports ) {
module . exports = require ( "fs" ) ;
/***/ } ) ,
/* 36 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var _slicedToArray = function ( ) { function sliceIterator ( arr , i ) { var _arr = [ ] ; var _n = true ; var _d = false ; var _e = undefined ; try { for ( var _i = arr [ Symbol . iterator ] ( ) , _s ; ! ( _n = ( _s = _i . next ( ) ) . done ) ; _n = true ) { _arr . push ( _s . value ) ; if ( i && _arr . length === i ) break ; } } catch ( err ) { _d = true ; _e = err ; } finally { try { if ( ! _n && _i [ "return" ] ) _i [ "return" ] ( ) ; } finally { if ( _d ) throw _e ; } } return _arr ; } return function ( arr , i ) { if ( Array . isArray ( arr ) ) { return arr ; } else if ( Symbol . iterator in Object ( arr ) ) { return sliceIterator ( arr , i ) ; } else { throw new TypeError ( "Invalid attempt to destructure non-iterable instance" ) ; } } ; } ( ) ;
var logger = _ _webpack _require _ _ ( 1 ) ;
module . exports = {
handleErrorResponse : function handleErrorResponse ( originalUrl , ip , error , res ) {
logger . error ( 'Error on ' + originalUrl , module . exports . useObjectPropertiesIfNoKeys ( error ) ) ;
var _module$exports$retur = module . exports . returnErrorMessageAndStatus ( error ) ,
_module$exports$retur2 = _slicedToArray ( _module$exports$retur , 2 ) ,
status = _module$exports$retur2 [ 0 ] ,
message = _module$exports$retur2 [ 1 ] ;
res . status ( status ) . json ( module . exports . createErrorResponsePayload ( status , message ) ) ;
} ,
returnErrorMessageAndStatus : function returnErrorMessageAndStatus ( error ) {
var status = void 0 ,
message = void 0 ;
// check for daemon being turned off
if ( error . code === 'ECONNREFUSED' ) {
status = 503 ;
message = 'Connection refused. The daemon may not be running.' ;
// fallback for everything else
} else {
status = 400 ;
if ( error . message ) {
message = error . message ;
} else {
message = error ;
} ;
} ;
return [ status , message ] ;
} ,
useObjectPropertiesIfNoKeys : function useObjectPropertiesIfNoKeys ( err ) {
if ( Object . keys ( err ) . length === 0 ) {
var newErrorObject = { } ;
Object . getOwnPropertyNames ( err ) . forEach ( function ( key ) {
newErrorObject [ key ] = err [ key ] ;
} ) ;
return newErrorObject ;
}
return err ;
} ,
createErrorResponsePayload : function createErrorResponsePayload ( status , message ) {
return {
status : status ,
success : false ,
message : message
} ;
}
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 37 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var _slicedToArray = function ( ) { function sliceIterator ( arr , i ) { var _arr = [ ] ; var _n = true ; var _d = false ; var _e = undefined ; try { for ( var _i = arr [ Symbol . iterator ] ( ) , _s ; ! ( _n = ( _s = _i . next ( ) ) . done ) ; _n = true ) { _arr . push ( _s . value ) ; if ( i && _arr . length === i ) break ; } } catch ( err ) { _d = true ; _e = err ; } finally { try { if ( ! _n && _i [ "return" ] ) _i [ "return" ] ( ) ; } finally { if ( _d ) throw _e ; } } return _arr ; } return function ( arr , i ) { if ( Array . isArray ( arr ) ) { return arr ; } else if ( Symbol . iterator in Object ( arr ) ) { return sliceIterator ( arr , i ) ; } else { throw new TypeError ( "Invalid attempt to destructure non-iterable instance" ) ; } } ; } ( ) ;
var db = _ _webpack _require _ _ ( 5 ) ;
var logger = _ _webpack _require _ _ ( 1 ) ;
2018-03-22 01:35:51 +01:00
var _require = _ _webpack _require _ _ ( 85 ) ,
2018-03-21 01:08:30 +01:00
returnPaginatedChannelClaims = _require . returnPaginatedChannelClaims ;
var NO _CHANNEL = 'NO_CHANNEL' ;
var NO _CLAIM = 'NO_CLAIM' ;
var NO _FILE = 'NO_FILE' ;
module . exports = {
getClaimId : function getClaimId ( channelName , channelClaimId , name , claimId ) {
if ( channelName ) {
return module . exports . getClaimIdByChannel ( channelName , channelClaimId , name ) ;
} else {
return module . exports . getClaimIdByClaim ( name , claimId ) ;
}
} ,
getClaimIdByClaim : function getClaimIdByClaim ( claimName , claimId ) {
logger . debug ( 'getClaimIdByClaim(' + claimName + ', ' + claimId + ')' ) ;
return new Promise ( function ( resolve , reject ) {
db . Claim . getLongClaimId ( claimName , claimId ) . then ( function ( longClaimId ) {
if ( ! longClaimId ) {
resolve ( NO _CLAIM ) ;
}
resolve ( longClaimId ) ;
} ) . catch ( function ( error ) {
reject ( error ) ;
} ) ;
} ) ;
} ,
getClaimIdByChannel : function getClaimIdByChannel ( channelName , channelClaimId , claimName ) {
logger . debug ( 'getClaimIdByChannel(' + channelName + ', ' + channelClaimId + ', ' + claimName + ')' ) ;
return new Promise ( function ( resolve , reject ) {
db . Certificate . getLongChannelId ( channelName , channelClaimId ) // 1. get the long channel id
. then ( function ( longChannelId ) {
if ( ! longChannelId ) {
return [ null , null ] ;
}
return Promise . all ( [ longChannelId , db . Claim . getClaimIdByLongChannelId ( longChannelId , claimName ) ] ) ; // 2. get the long claim id
} ) . then ( function ( _ref ) {
var _ref2 = _slicedToArray ( _ref , 2 ) ,
longChannelId = _ref2 [ 0 ] ,
longClaimId = _ref2 [ 1 ] ;
if ( ! longChannelId ) {
return resolve ( NO _CHANNEL ) ;
}
if ( ! longClaimId ) {
return resolve ( NO _CLAIM ) ;
}
resolve ( longClaimId ) ;
} ) . catch ( function ( error ) {
reject ( error ) ;
} ) ;
} ) ;
} ,
getChannelData : function getChannelData ( channelName , channelClaimId , page ) {
return new Promise ( function ( resolve , reject ) {
// 1. get the long channel Id (make sure channel exists)
db . Certificate . getLongChannelId ( channelName , channelClaimId ) . then ( function ( longChannelClaimId ) {
if ( ! longChannelClaimId ) {
return [ null , null , null ] ;
}
// 2. get the short ID and all claims for that channel
return Promise . all ( [ longChannelClaimId , db . Certificate . getShortChannelIdFromLongChannelId ( longChannelClaimId , channelName ) ] ) ;
} ) . then ( function ( _ref3 ) {
var _ref4 = _slicedToArray ( _ref3 , 2 ) ,
longChannelClaimId = _ref4 [ 0 ] ,
shortChannelClaimId = _ref4 [ 1 ] ;
if ( ! longChannelClaimId ) {
return resolve ( NO _CHANNEL ) ;
}
// 3. return all the channel information
resolve ( {
channelName : channelName ,
longChannelClaimId : longChannelClaimId ,
shortChannelClaimId : shortChannelClaimId
} ) ;
} ) . catch ( function ( error ) {
reject ( error ) ;
} ) ;
} ) ;
} ,
getChannelClaims : function getChannelClaims ( channelName , channelClaimId , page ) {
return new Promise ( function ( resolve , reject ) {
// 1. get the long channel Id (make sure channel exists)
db . Certificate . getLongChannelId ( channelName , channelClaimId ) . then ( function ( longChannelClaimId ) {
if ( ! longChannelClaimId ) {
return [ null , null , null ] ;
}
// 2. get the short ID and all claims for that channel
return Promise . all ( [ longChannelClaimId , db . Claim . getAllChannelClaims ( longChannelClaimId ) ] ) ;
} ) . then ( function ( _ref5 ) {
var _ref6 = _slicedToArray ( _ref5 , 2 ) ,
longChannelClaimId = _ref6 [ 0 ] ,
channelClaimsArray = _ref6 [ 1 ] ;
if ( ! longChannelClaimId ) {
return resolve ( NO _CHANNEL ) ;
}
// 3. format the data for the view, including pagination
var paginatedChannelViewData = returnPaginatedChannelClaims ( channelName , longChannelClaimId , channelClaimsArray , page ) ;
// 4. return all the channel information and contents
resolve ( paginatedChannelViewData ) ;
} ) . catch ( function ( error ) {
reject ( error ) ;
} ) ;
} ) ;
} ,
getLocalFileRecord : function getLocalFileRecord ( claimId , name ) {
return db . File . findOne ( { where : { claimId : claimId , name : name } } ) . then ( function ( file ) {
if ( ! file ) {
return NO _FILE ;
}
return file . dataValues ;
} ) ;
}
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 38 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var _react = _ _webpack _require _ _ ( 0 ) ;
var _react2 = _interopRequireDefault ( _react ) ;
2018-03-22 01:35:51 +01:00
var _server = _ _webpack _require _ _ ( 39 ) ;
2018-03-21 01:08:30 +01:00
2018-03-22 01:35:51 +01:00
var _redux = _ _webpack _require _ _ ( 18 ) ;
2018-03-21 01:08:30 +01:00
2018-03-22 01:35:51 +01:00
var _index = _ _webpack _require _ _ ( 40 ) ;
2018-03-21 01:08:30 +01:00
var _index2 = _interopRequireDefault ( _index ) ;
var _reactRedux = _ _webpack _require _ _ ( 2 ) ;
var _reactRouterDom = _ _webpack _require _ _ ( 4 ) ;
2018-03-22 01:35:51 +01:00
var _index3 = _ _webpack _require _ _ ( 44 ) ;
2018-03-21 01:08:30 +01:00
var _index4 = _interopRequireDefault ( _index3 ) ;
2018-03-22 01:35:51 +01:00
var _app = _ _webpack _require _ _ ( 45 ) ;
2018-03-21 01:08:30 +01:00
var _app2 = _interopRequireDefault ( _app ) ;
2018-03-22 01:35:51 +01:00
var _renderFullPage = _ _webpack _require _ _ ( 53 ) ;
2018-03-21 01:08:30 +01:00
var _renderFullPage2 = _interopRequireDefault ( _renderFullPage ) ;
var _reactHelmet = _ _webpack _require _ _ ( 13 ) ;
var _reactHelmet2 = _interopRequireDefault ( _reactHelmet ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
module . exports = function ( req , res ) {
var context = { } ;
// create a new Redux store instance
var store = ( 0 , _redux . createStore ) ( _index2 . default ) ;
// render component to a string
var html = ( 0 , _server . renderToString ) ( _react2 . default . createElement (
_reactRedux . Provider ,
{ store : store } ,
_react2 . default . createElement (
_reactRouterDom . StaticRouter ,
{ location : req . url , context : context } ,
_react2 . default . createElement (
_index4 . default ,
null ,
_react2 . default . createElement ( _app2 . default , null )
)
)
) ) ;
// get head tags from helmet
var helmet = _reactHelmet2 . default . renderStatic ( ) ;
// check for a redirect
if ( context . url ) {
// Somewhere a `<Redirect>` was rendered
return res . redirect ( 301 , context . url ) ;
} else { }
// we're good, send the response
// get the initial state from our Redux store
var preloadedState = store . getState ( ) ;
// send the rendered page back to the client
res . send ( ( 0 , _renderFullPage2 . default ) ( helmet , html , preloadedState ) ) ;
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 39 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports ) {
module . exports = require ( "react-dom/server" ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 40 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
2018-03-22 01:35:51 +01:00
var _redux = _ _webpack _require _ _ ( 18 ) ;
2018-03-21 01:08:30 +01:00
2018-03-22 01:35:51 +01:00
var _publish = _ _webpack _require _ _ ( 87 ) ;
2018-03-21 01:08:30 +01:00
var _publish2 = _interopRequireDefault ( _publish ) ;
2018-03-22 01:35:51 +01:00
var _channel = _ _webpack _require _ _ ( 89 ) ;
2018-03-21 01:08:30 +01:00
var _channel2 = _interopRequireDefault ( _channel ) ;
2018-03-22 01:35:51 +01:00
var _show = _ _webpack _require _ _ ( 90 ) ;
2018-03-21 01:08:30 +01:00
var _show2 = _interopRequireDefault ( _show ) ;
2018-03-22 01:35:51 +01:00
var _site = _ _webpack _require _ _ ( 91 ) ;
2018-03-21 01:08:30 +01:00
var _site2 = _interopRequireDefault ( _site ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
exports . default = ( 0 , _redux . combineReducers ) ( {
channel : _channel2 . default ,
publish : _publish2 . default ,
show : _show2 . default ,
site : _site2 . default
} ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 41 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var FILE _SELECTED = exports . FILE _SELECTED = 'FILE_SELECTED' ;
var FILE _CLEAR = exports . FILE _CLEAR = 'FILE_CLEAR' ;
var METADATA _UPDATE = exports . METADATA _UPDATE = 'METADATA_UPDATE' ;
var CLAIM _UPDATE = exports . CLAIM _UPDATE = 'CLAIM_UPDATE' ;
var SET _PUBLISH _IN _CHANNEL = exports . SET _PUBLISH _IN _CHANNEL = 'SET_PUBLISH_IN_CHANNEL' ;
var PUBLISH _STATUS _UPDATE = exports . PUBLISH _STATUS _UPDATE = 'PUBLISH_STATUS_UPDATE' ;
var ERROR _UPDATE = exports . ERROR _UPDATE = 'ERROR_UPDATE' ;
var SELECTED _CHANNEL _UPDATE = exports . SELECTED _CHANNEL _UPDATE = 'SELECTED_CHANNEL_UPDATE' ;
var TOGGLE _METADATA _INPUTS = exports . TOGGLE _METADATA _INPUTS = 'TOGGLE_METADATA_INPUTS' ;
var THUMBNAIL _NEW = exports . THUMBNAIL _NEW = 'THUMBNAIL_NEW' ;
var PUBLISH _START = exports . PUBLISH _START = 'PUBLISH_START' ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 42 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var CHANNEL _UPDATE = exports . CHANNEL _UPDATE = 'CHANNEL_UPDATE' ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 43 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var LOCAL _CHECK = exports . LOCAL _CHECK = 'LOCAL_CHECK' ;
var UNAVAILABLE = exports . UNAVAILABLE = 'UNAVAILABLE' ;
var ERROR = exports . ERROR = 'ERROR' ;
var AVAILABLE = exports . AVAILABLE = 'AVAILABLE' ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 44 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _react = _ _webpack _require _ _ ( 0 ) ;
var _react2 = _interopRequireDefault ( _react ) ;
var _reactGa = _ _webpack _require _ _ ( 92 ) ;
var _reactGa2 = _interopRequireDefault ( _reactGa ) ;
var _reactRouterDom = _ _webpack _require _ _ ( 4 ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var _require = _ _webpack _require _ _ ( 3 ) ,
googleId = _require . analytics . googleId ;
_reactGa2 . default . initialize ( googleId ) ;
var GAListener = function ( _React$Component ) {
_inherits ( GAListener , _React$Component ) ;
function GAListener ( ) {
_classCallCheck ( this , GAListener ) ;
return _possibleConstructorReturn ( this , ( GAListener . _ _proto _ _ || Object . getPrototypeOf ( GAListener ) ) . apply ( this , arguments ) ) ;
}
_createClass ( GAListener , [ {
key : 'componentDidMount' ,
value : function componentDidMount ( ) {
this . sendPageView ( this . props . history . location ) ;
this . props . history . listen ( this . sendPageView ) ;
}
} , {
key : 'sendPageView' ,
value : function sendPageView ( location ) {
_reactGa2 . default . set ( { page : location . pathname } ) ;
_reactGa2 . default . pageview ( location . pathname ) ;
}
} , {
key : 'render' ,
value : function render ( ) {
return this . props . children ;
}
} ] ) ;
return GAListener ;
} ( _react2 . default . Component ) ;
exports . default = ( 0 , _reactRouterDom . withRouter ) ( GAListener ) ;
/***/ } ) ,
/* 45 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _react = _ _webpack _require _ _ ( 0 ) ;
var _react2 = _interopRequireDefault ( _react ) ;
var _reactRouterDom = _ _webpack _require _ _ ( 4 ) ;
var _dynamicImport = _ _webpack _require _ _ ( 19 ) ;
2018-03-22 01:35:51 +01:00
var _AboutPage = _ _webpack _require _ _ ( 94 ) ;
2018-03-21 01:08:30 +01:00
var _AboutPage2 = _interopRequireDefault ( _AboutPage ) ;
2018-03-22 01:35:51 +01:00
var _LoginPage = _ _webpack _require _ _ ( 99 ) ;
2018-03-21 01:08:30 +01:00
var _LoginPage2 = _interopRequireDefault ( _LoginPage ) ;
2018-03-22 01:35:51 +01:00
var _ShowPage = _ _webpack _require _ _ ( 107 ) ;
2018-03-21 01:08:30 +01:00
var _ShowPage2 = _interopRequireDefault ( _ShowPage ) ;
2018-03-22 01:35:51 +01:00
var _FourOhFourPage = _ _webpack _require _ _ ( 124 ) ;
2018-03-21 01:08:30 +01:00
var _FourOhFourPage2 = _interopRequireDefault ( _FourOhFourPage ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var HomePage = ( 0 , _dynamicImport . dynamicImport ) ( 'pages/HomePage' ) ; // or use the provided local homepage
var App = function App ( ) {
return _react2 . default . createElement (
_reactRouterDom . Switch ,
null ,
_react2 . default . createElement ( _reactRouterDom . Route , { exact : true , path : '/' , component : HomePage } ) ,
_react2 . default . createElement ( _reactRouterDom . Route , { exact : true , path : '/about' , component : _AboutPage2 . default } ) ,
_react2 . default . createElement ( _reactRouterDom . Route , { exact : true , path : '/login' , component : _LoginPage2 . default } ) ,
_react2 . default . createElement ( _reactRouterDom . Route , { exact : true , path : '/:identifier/:claim' , component : _ShowPage2 . default } ) ,
_react2 . default . createElement ( _reactRouterDom . Route , { exact : true , path : '/:claim' , component : _ShowPage2 . default } ) ,
_react2 . default . createElement ( _reactRouterDom . Route , { component : _FourOhFourPage2 . default } )
) ;
} ;
exports . default = App ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 46 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
var map = {
"./canonicalLink" : 20 ,
"./canonicalLink.js" : 20 ,
"./dynamicImport" : 19 ,
"./dynamicImport.js" : 19 ,
2018-03-22 01:35:51 +01:00
"./file" : 47 ,
"./file.js" : 47 ,
2018-03-21 01:08:30 +01:00
"./lbryUri" : 21 ,
"./lbryUri.js" : 21 ,
"./metaTags" : 22 ,
"./metaTags.js" : 22 ,
"./pageTitle" : 23 ,
"./pageTitle.js" : 23 ,
2018-03-22 01:35:51 +01:00
"./publish" : 48 ,
"./publish.js" : 48 ,
2018-03-21 01:08:30 +01:00
"./request" : 6 ,
"./request.js" : 6 ,
2018-03-22 01:35:51 +01:00
"./validate" : 49 ,
"./validate.js" : 49
2018-03-21 01:08:30 +01:00
} ;
function webpackContext ( req ) {
return _ _webpack _require _ _ ( webpackContextResolve ( req ) ) ;
} ;
function webpackContextResolve ( req ) {
var id = map [ req ] ;
if ( ! ( id + 1 ) ) // check for number or string
throw new Error ( "Cannot find module '" + req + "'." ) ;
return id ;
} ;
webpackContext . keys = function webpackContextKeys ( ) {
return Object . keys ( map ) ;
} ;
webpackContext . resolve = webpackContextResolve ;
module . exports = webpackContext ;
2018-03-22 01:35:51 +01:00
webpackContext . id = 46 ;
2018-03-21 01:08:30 +01:00
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 47 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
module . exports = {
validateFile : function validateFile ( file ) {
if ( ! file ) {
throw new Error ( 'no file provided' ) ;
}
if ( /'/ . test ( file . name ) ) {
throw new Error ( 'apostrophes are not allowed in the file name' ) ;
}
// validate size and type
switch ( file . type ) {
case 'image/jpeg' :
case 'image/jpg' :
case 'image/png' :
if ( file . size > 10000000 ) {
throw new Error ( 'Sorry, images are limited to 10 megabytes.' ) ;
}
break ;
case 'image/gif' :
if ( file . size > 50000000 ) {
throw new Error ( 'Sorry, GIFs are limited to 50 megabytes.' ) ;
}
break ;
case 'video/mp4' :
if ( file . size > 50000000 ) {
throw new Error ( 'Sorry, videos are limited to 50 megabytes.' ) ;
}
break ;
default :
throw new Error ( file . type + ' is not a supported file type. Only, .jpeg, .png, .gif, and .mp4 files are currently supported.' ) ;
}
}
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 48 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var createPublishMetadata = exports . createPublishMetadata = function createPublishMetadata ( claim , _ref , _ref2 , publishInChannel , selectedChannel ) {
var type = _ref . type ;
var title = _ref2 . title ,
description = _ref2 . description ,
license = _ref2 . license ,
nsfw = _ref2 . nsfw ;
var metadata = {
name : claim ,
title : title ,
description : description ,
license : license ,
nsfw : nsfw ,
type : type
} ;
if ( publishInChannel ) {
metadata [ 'channelName' ] = selectedChannel ;
}
return metadata ;
} ;
var createPublishFormData = exports . createPublishFormData = function createPublishFormData ( file , thumbnail , metadata ) {
var fd = new FormData ( ) ;
// append file
fd . append ( 'file' , file ) ;
// append thumbnail
if ( thumbnail ) {
fd . append ( 'thumbnail' , thumbnail ) ;
}
// append metadata
for ( var key in metadata ) {
if ( metadata . hasOwnProperty ( key ) ) {
fd . append ( key , metadata [ key ] ) ;
}
}
return fd ;
} ;
var createThumbnailUrl = exports . createThumbnailUrl = function createThumbnailUrl ( channel , channelId , claim , host ) {
return host + '/' + channel + ':' + channelId + '/' + claim + '-thumb.png' ;
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 49 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
2018-03-22 01:35:51 +01:00
var validateChannelSelection = exports . validateChannelSelection = function validateChannelSelection ( publishInChannel , selectedChannel , loggedInChannel ) {
if ( publishInChannel && selectedChannel !== loggedInChannel . name ) {
throw new Error ( 'Log in to a channel or select Anonymous' ) ;
}
2018-03-21 01:08:30 +01:00
} ;
2018-03-22 01:35:51 +01:00
var validatePublishParams = exports . validatePublishParams = function validatePublishParams ( file , claim , urlError ) {
if ( ! file ) {
throw new Error ( 'Please choose a file' ) ;
}
if ( ! claim ) {
throw new Error ( 'Please enter a URL' ) ;
}
if ( urlError ) {
throw new Error ( 'Fix the url' ) ;
}
} ;
2018-03-21 01:08:30 +01:00
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 50 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
2018-03-22 01:35:51 +01:00
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
2018-03-21 01:08:30 +01:00
var _react = _ _webpack _require _ _ ( 0 ) ;
var _react2 = _interopRequireDefault ( _react ) ;
2018-03-22 01:35:51 +01:00
var _propTypes = _ _webpack _require _ _ ( 26 ) ;
var _propTypes2 = _interopRequireDefault ( _propTypes ) ;
var _ActiveStatusBar = _ _webpack _require _ _ ( 105 ) ;
var _ActiveStatusBar2 = _interopRequireDefault ( _ActiveStatusBar ) ;
var _InactiveStatusBar = _ _webpack _require _ _ ( 106 ) ;
var _InactiveStatusBar2 = _interopRequireDefault ( _InactiveStatusBar ) ;
2018-03-21 01:08:30 +01:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
2018-03-22 01:35:51 +01:00
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var ProgressBar = function ( _React$Component ) {
_inherits ( ProgressBar , _React$Component ) ;
function ProgressBar ( props ) {
_classCallCheck ( this , ProgressBar ) ;
var _this = _possibleConstructorReturn ( this , ( ProgressBar . _ _proto _ _ || Object . getPrototypeOf ( ProgressBar ) ) . call ( this , props ) ) ;
_this . state = {
bars : [ ] ,
index : 0 ,
incrementer : 1
} ;
_this . createBars = _this . createBars . bind ( _this ) ;
_this . startProgressBar = _this . startProgressBar . bind ( _this ) ;
_this . updateProgressBar = _this . updateProgressBar . bind ( _this ) ;
_this . stopProgressBar = _this . stopProgressBar . bind ( _this ) ;
return _this ;
}
_createClass ( ProgressBar , [ {
key : 'componentDidMount' ,
value : function componentDidMount ( ) {
this . createBars ( ) ;
this . startProgressBar ( ) ;
}
} , {
key : 'componentWillUnmount' ,
value : function componentWillUnmount ( ) {
this . stopProgressBar ( ) ;
}
} , {
key : 'createBars' ,
value : function createBars ( ) {
var bars = [ ] ;
for ( var i = 0 ; i <= this . props . size ; i ++ ) {
bars . push ( { isActive : false } ) ;
}
this . setState ( { bars : bars } ) ;
}
} , {
key : 'startProgressBar' ,
value : function startProgressBar ( ) {
this . updateInterval = setInterval ( this . updateProgressBar . bind ( this ) , 300 ) ;
}
} , {
key : 'updateProgressBar' ,
value : function updateProgressBar ( ) {
var index = this . state . index ;
var incrementer = this . state . incrementer ;
var bars = this . state . bars ;
// flip incrementer if necessary, to stay in bounds
if ( index < 0 || index > this . props . size ) {
incrementer = incrementer * - 1 ;
index += incrementer ;
}
// update the indexed bar
if ( incrementer > 0 ) {
bars [ index ] . isActive = true ;
} else {
bars [ index ] . isActive = false ;
} ;
// increment index
index += incrementer ;
// update state
this . setState ( {
bars : bars ,
incrementer : incrementer ,
index : index
} ) ;
}
} , {
key : 'stopProgressBar' ,
value : function stopProgressBar ( ) {
clearInterval ( this . updateInterval ) ;
}
} , {
key : 'render' ,
value : function render ( ) {
return _react2 . default . createElement (
'div' ,
null ,
this . state . bars . map ( function ( bar , index ) {
return bar . isActive ? _react2 . default . createElement ( _ActiveStatusBar2 . default , { key : index } ) : _react2 . default . createElement ( _InactiveStatusBar2 . default , { key : index } ) ;
} )
) ;
}
} ] ) ;
return ProgressBar ;
} ( _react2 . default . Component ) ;
;
ProgressBar . propTypes = {
size : _propTypes2 . default . number . isRequired
2018-03-21 01:08:30 +01:00
} ;
2018-03-22 01:35:51 +01:00
exports . default = ProgressBar ;
2018-03-21 01:08:30 +01:00
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 51 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var CHANNEL = exports . CHANNEL = 'CHANNEL' ;
var ASSET _LITE = exports . ASSET _LITE = 'ASSET_LITE' ;
var ASSET _DETAILS = exports . ASSET _DETAILS = 'ASSET_DETAILS' ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 52 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _reactRedux = _ _webpack _require _ _ ( 2 ) ;
2018-03-22 01:35:51 +01:00
var _view = _ _webpack _require _ _ ( 111 ) ;
2018-03-21 01:08:30 +01:00
var _view2 = _interopRequireDefault ( _view ) ;
var _show = _ _webpack _require _ _ ( 7 ) ;
2018-03-22 01:35:51 +01:00
var _show2 = _ _webpack _require _ _ ( 11 ) ;
2018-03-21 01:08:30 +01:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var mapStateToProps = function mapStateToProps ( _ref ) {
var show = _ref . show ;
// select error and status
var error = show . displayAsset . error ;
var status = show . displayAsset . status ;
// select asset
var asset = ( 0 , _show2 . selectAsset ) ( show ) ;
// return props
return {
error : error ,
status : status ,
asset : asset
} ;
} ;
var mapDispatchToProps = function mapDispatchToProps ( dispatch ) {
return {
onFileRequest : function onFileRequest ( name , claimId ) {
dispatch ( ( 0 , _show . fileRequested ) ( name , claimId ) ) ;
}
} ;
} ;
exports . default = ( 0 , _reactRedux . connect ) ( mapStateToProps , mapDispatchToProps ) ( _view2 . default ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 53 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
module . exports = function ( helmet , html , preloadedState ) {
// take the html and preloadedState and return the full page
return '\n <!DOCTYPE html>\n <html lang="en" prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb#">\n <head>\n <meta charset="UTF-8">\n <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1, user-scalable=no">\n <meta http-equiv="X-UA-Compatible" content="ie=edge">\n <!--helmet-->\n ' + helmet . title . toString ( ) + '\n ' + helmet . meta . toString ( ) + '\n ' + helmet . link . toString ( ) + '\n <!--style sheets-->\n <link rel="stylesheet" href="/assets/css/reset.css" type="text/css">\n <link rel="stylesheet" href="/assets/css/general.css" type="text/css">\n <link rel="stylesheet" href="/assets/css/mediaQueries.css" type="text/css">\n <!--google font-->\n <link href="https://fonts.googleapis.com/css?family=Roboto:300" rel="stylesheet">\n </head>\n <body id="main-body">\n <div class="row row--tall flex-container--column">\n <div id="react-app" class="row row--tall flex-container--column">' + html + '</div>\n </div>\n <script>\n window.__PRELOADED_STATE__ = ' + JSON . stringify ( preloadedState ) . replace ( /</g , '\\<' ) + '\n </script>\n <script src="/bundle/bundle.js"></script>\n </body>\n </html>\n ' ;
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 54 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var selectSiteState = exports . selectSiteState = function selectSiteState ( state ) {
return state . site ;
} ;
var selectSiteHost = exports . selectSiteHost = function selectSiteHost ( state ) {
return state . site . host ;
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 55 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
2018-03-22 01:35:51 +01:00
_ _webpack _require _ _ ( 56 ) ;
_ _webpack _require _ _ ( 57 ) ;
module . exports = _ _webpack _require _ _ ( 58 ) ;
2018-03-21 01:08:30 +01:00
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 56 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports ) {
module . exports = require ( "babel-polyfill" ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 57 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports ) {
module . exports = require ( "whatwg-fetch" ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 58 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
2018-03-22 01:35:51 +01:00
var Server = _ _webpack _require _ _ ( 59 ) ;
var Components = _ _webpack _require _ _ ( 141 ) ;
var Containers = _ _webpack _require _ _ ( 143 ) ;
var Pages = _ _webpack _require _ _ ( 144 ) ;
2018-03-21 01:08:30 +01:00
var _exports = {
Server : Server ,
2018-03-22 01:35:51 +01:00
Components : Components ,
Containers : Containers ,
Pages : Pages
2018-03-21 01:08:30 +01:00
} ;
module . exports = _exports ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 59 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
// app dependencies
2018-03-22 01:35:51 +01:00
var express = _ _webpack _require _ _ ( 60 ) ;
var bodyParser = _ _webpack _require _ _ ( 61 ) ;
var expressHandlebars = _ _webpack _require _ _ ( 62 ) ;
var Handlebars = _ _webpack _require _ _ ( 63 ) ;
var helmet = _ _webpack _require _ _ ( 64 ) ;
2018-03-21 01:08:30 +01:00
var passport = _ _webpack _require _ _ ( 28 ) ;
2018-03-22 01:35:51 +01:00
var _require = _ _webpack _require _ _ ( 65 ) ,
2018-03-21 01:08:30 +01:00
serializeSpeechUser = _require . serializeSpeechUser ,
deserializeSpeechUser = _require . deserializeSpeechUser ;
2018-03-22 01:35:51 +01:00
var cookieSession = _ _webpack _require _ _ ( 66 ) ;
var http = _ _webpack _require _ _ ( 67 ) ;
2018-03-21 01:08:30 +01:00
// logging dependencies
var logger = _ _webpack _require _ _ ( 1 ) ;
function Server ( ) {
var _this = this ;
this . configureMysql = function ( mysqlConfig ) {
_ _webpack _require _ _ ( 29 ) . configure ( mysqlConfig ) ;
} ;
this . configureSite = function ( siteConfig ) {
_ _webpack _require _ _ ( 3 ) . configure ( siteConfig ) ;
console . log ( _ _webpack _require _ _ ( 3 ) ) ;
_this . sessionKey = siteConfig . auth . sessionKey ;
_this . PORT = siteConfig . details . port ;
} ;
this . configureSlack = function ( slackConfig ) {
_ _webpack _require _ _ ( 30 ) . configure ( slackConfig ) ;
} ;
this . createApp = function ( ) {
// create an Express application
var app = express ( ) ;
// trust the proxy to get ip address for us
app . enable ( 'trust proxy' ) ;
// add middleware
app . use ( helmet ( ) ) ; // set HTTP headers to protect against well-known web vulnerabilties
app . use ( express . static ( _ _dirname + '/public' ) ) ; // 'express.static' to serve static files from public directory
app . use ( bodyParser . json ( ) ) ; // 'body parser' for parsing application/json
app . use ( bodyParser . urlencoded ( { extended : true } ) ) ; // 'body parser' for parsing application/x-www-form-urlencoded
app . use ( function ( req , res , next ) {
// custom logging middleware to log all incoming http requests
logger . verbose ( 'Request on ' + req . originalUrl + ' from ' + req . ip ) ;
next ( ) ;
} ) ;
// configure passport
passport . serializeUser ( serializeSpeechUser ) ;
passport . deserializeUser ( deserializeSpeechUser ) ;
2018-03-22 01:35:51 +01:00
var localSignupStrategy = _ _webpack _require _ _ ( 68 ) ;
var localLoginStrategy = _ _webpack _require _ _ ( 79 ) ;
2018-03-21 01:08:30 +01:00
passport . use ( 'local-signup' , localSignupStrategy ) ;
passport . use ( 'local-login' , localLoginStrategy ) ;
// initialize passport
app . use ( cookieSession ( {
name : 'session' ,
keys : [ _this . sessionKey ] ,
maxAge : 24 * 60 * 60 * 1000 // i.e. 24 hours
} ) ) ;
app . use ( passport . initialize ( ) ) ;
app . use ( passport . session ( ) ) ;
// configure handlebars & register it with express app
var hbs = expressHandlebars . create ( {
defaultLayout : 'embed' ,
handlebars : Handlebars
} ) ;
app . engine ( 'handlebars' , hbs . engine ) ;
app . set ( 'view engine' , 'handlebars' ) ;
// set the routes on the app
2018-03-22 01:35:51 +01:00
_ _webpack _require _ _ ( 80 ) ( app ) ;
_ _webpack _require _ _ ( 81 ) ( app ) ;
_ _webpack _require _ _ ( 86 ) ( app ) ;
_ _webpack _require _ _ ( 126 ) ( app ) ;
_ _webpack _require _ _ ( 136 ) ( app ) ;
2018-03-21 01:08:30 +01:00
_this . app = app ;
} ;
this . initialize = function ( ) {
_ _webpack _require _ _ ( 137 ) ( logger ) ;
2018-03-22 01:35:51 +01:00
_ _webpack _require _ _ ( 139 ) ( logger ) ;
2018-03-21 01:08:30 +01:00
_this . createApp ( ) ;
_this . server = http . Server ( _this . app ) ;
} ;
this . start = function ( ) {
var db = _ _webpack _require _ _ ( 5 ) ;
// sync sequelize
db . sequelize . sync ( )
// start the server
. then ( function ( ) {
_this . server . listen ( _this . PORT , function ( ) {
logger . info ( 'Server is listening on PORT ' + _this . PORT ) ;
} ) ;
} ) . catch ( function ( error ) {
logger . error ( 'Startup Error:' , error ) ;
} ) ;
} ;
} ;
module . exports = Server ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 60 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports ) {
module . exports = require ( "express" ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 61 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports ) {
module . exports = require ( "body-parser" ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 62 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports ) {
module . exports = require ( "express-handlebars" ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 63 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports ) {
module . exports = require ( "handlebars" ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 64 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports ) {
module . exports = require ( "helmet" ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 65 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var logger = _ _webpack _require _ _ ( 1 ) ;
module . exports = {
serializeSpeechUser : function serializeSpeechUser ( user , done ) {
// returns user data to be serialized into session
logger . debug ( 'serializing user' ) ;
done ( null , user ) ;
} ,
deserializeSpeechUser : function deserializeSpeechUser ( user , done ) {
// deserializes session and populates additional info to req.user
logger . debug ( 'deserializing user' ) ;
done ( null , user ) ;
}
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 66 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports ) {
module . exports = require ( "cookie-session" ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 67 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports ) {
module . exports = require ( "http" ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 68 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var _slicedToArray = function ( ) { function sliceIterator ( arr , i ) { var _arr = [ ] ; var _n = true ; var _d = false ; var _e = undefined ; try { for ( var _i = arr [ Symbol . iterator ] ( ) , _s ; ! ( _n = ( _s = _i . next ( ) ) . done ) ; _n = true ) { _arr . push ( _s . value ) ; if ( i && _arr . length === i ) break ; } } catch ( err ) { _d = true ; _e = err ; } finally { try { if ( ! _n && _i [ "return" ] ) _i [ "return" ] ( ) ; } finally { if ( _d ) throw _e ; } } return _arr ; } return function ( arr , i ) { if ( Array . isArray ( arr ) ) { return arr ; } else if ( Symbol . iterator in Object ( arr ) ) { return sliceIterator ( arr , i ) ; } else { throw new TypeError ( "Invalid attempt to destructure non-iterable instance" ) ; } } ; } ( ) ;
var PassportLocalStrategy = _ _webpack _require _ _ ( 31 ) . Strategy ;
2018-03-22 01:35:51 +01:00
var lbryApi = _ _webpack _require _ _ ( 16 ) ;
2018-03-21 01:08:30 +01:00
var logger = _ _webpack _require _ _ ( 1 ) ;
var db = _ _webpack _require _ _ ( 5 ) ;
module . exports = new PassportLocalStrategy ( {
usernameField : 'username' ,
passwordField : 'password'
} , function ( username , password , done ) {
logger . verbose ( 'new channel signup request. user: ' + username + ' pass: ' + password + ' .' ) ;
var userInfo = { } ;
// server-side validaton of inputs (username, password)
// create the channel and retrieve the metadata
return lbryApi . createChannel ( '@' + username ) . then ( function ( tx ) {
// create user record
var userData = {
userName : username ,
password : password
} ;
logger . verbose ( 'userData >' , userData ) ;
// create user record
var channelData = {
channelName : '@' + username ,
channelClaimId : tx . claim _id
} ;
logger . verbose ( 'channelData >' , channelData ) ;
// create certificate record
var certificateData = {
claimId : tx . claim _id ,
name : '@' + username
// address,
} ;
logger . verbose ( 'certificateData >' , certificateData ) ;
// save user and certificate to db
return Promise . all ( [ db . User . create ( userData ) , db . Channel . create ( channelData ) , db . Certificate . create ( certificateData ) ] ) ;
} ) . then ( function ( _ref ) {
var _ref2 = _slicedToArray ( _ref , 3 ) ,
newUser = _ref2 [ 0 ] ,
newChannel = _ref2 [ 1 ] ,
newCertificate = _ref2 [ 2 ] ;
logger . verbose ( 'user and certificate successfully created' ) ;
// store the relevant newUser info to be passed back for req.User
userInfo [ 'id' ] = newUser . id ;
userInfo [ 'userName' ] = newUser . userName ;
userInfo [ 'channelName' ] = newChannel . channelName ;
userInfo [ 'channelClaimId' ] = newChannel . channelClaimId ;
// associate the instances
return Promise . all ( [ newCertificate . setChannel ( newChannel ) , newChannel . setUser ( newUser ) ] ) ;
} ) . then ( function ( ) {
logger . verbose ( 'user and certificate successfully associated' ) ;
return db . Certificate . getShortChannelIdFromLongChannelId ( userInfo . channelClaimId , userInfo . channelName ) ;
} ) . then ( function ( shortChannelId ) {
userInfo [ 'shortChannelId' ] = shortChannelId ;
return done ( null , userInfo ) ;
} ) . catch ( function ( error ) {
logger . error ( 'signup error' , error ) ;
return done ( error ) ;
} ) ;
} ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 69 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports ) {
module . exports = require ( "axios" ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 70 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var lbryConfig = {
api : {
apiHost : 'localhost' ,
apiPort : '5279'
}
} ;
module . exports = lbryConfig ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 71 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports ) {
module . exports = require ( "universal-analytics" ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 72 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var logger = _ _webpack _require _ _ ( 1 ) ;
var _require = _ _webpack _require _ _ ( 33 ) ,
returnShortId = _require . returnShortId ;
module . exports = function ( sequelize , _ref ) {
var STRING = _ref . STRING ,
BOOLEAN = _ref . BOOLEAN ,
INTEGER = _ref . INTEGER ,
TEXT = _ref . TEXT ,
DECIMAL = _ref . DECIMAL ;
var Certificate = sequelize . define ( 'Certificate' , {
address : {
type : STRING ,
default : null
} ,
amount : {
type : DECIMAL ( 19 , 8 ) ,
default : null
} ,
claimId : {
type : STRING ,
default : null
} ,
claimSequence : {
type : INTEGER ,
default : null
} ,
decodedClaim : {
type : BOOLEAN ,
default : null
} ,
depth : {
type : INTEGER ,
default : null
} ,
effectiveAmount : {
type : DECIMAL ( 19 , 8 ) ,
default : null
} ,
hasSignature : {
type : BOOLEAN ,
default : null
} ,
height : {
type : INTEGER ,
default : null
} ,
hex : {
type : TEXT ( 'long' ) ,
default : null
} ,
name : {
type : STRING ,
default : null
} ,
nout : {
type : INTEGER ,
default : null
} ,
txid : {
type : STRING ,
default : null
} ,
validAtHeight : {
type : INTEGER ,
default : null
} ,
outpoint : {
type : STRING ,
default : null
} ,
valueVersion : {
type : STRING ,
default : null
} ,
claimType : {
type : STRING ,
default : null
} ,
certificateVersion : {
type : STRING ,
default : null
} ,
keyType : {
type : STRING ,
default : null
} ,
publicKey : {
type : TEXT ( 'long' ) ,
default : null
}
} , {
freezeTableName : true
} ) ;
Certificate . associate = function ( db ) {
Certificate . belongsTo ( db . Channel , {
foreignKey : {
allowNull : true
}
} ) ;
} ;
Certificate . getShortChannelIdFromLongChannelId = function ( longChannelId , channelName ) {
var _this = this ;
logger . debug ( 'getShortChannelIdFromLongChannelId ' + channelName + ':' + longChannelId ) ;
return new Promise ( function ( resolve , reject ) {
_this . findAll ( {
where : { name : channelName } ,
order : [ [ 'height' , 'ASC' ] ]
} ) . then ( function ( result ) {
switch ( result . length ) {
case 0 :
throw new Error ( 'No channel(s) found with that channel name' ) ;
default :
return resolve ( returnShortId ( result , longChannelId ) ) ;
}
} ) . catch ( function ( error ) {
reject ( error ) ;
} ) ;
} ) ;
} ;
Certificate . getLongChannelIdFromShortChannelId = function ( channelName , channelClaimId ) {
var _this2 = this ;
logger . debug ( 'getLongChannelIdFromShortChannelId(' + channelName + ', ' + channelClaimId + ')' ) ;
return new Promise ( function ( resolve , reject ) {
_this2 . findAll ( {
where : {
name : channelName ,
claimId : {
$like : channelClaimId + '%'
}
} ,
order : [ [ 'height' , 'ASC' ] ]
} ) . then ( function ( result ) {
switch ( result . length ) {
case 0 :
return resolve ( null ) ;
default :
// note results must be sorted
return resolve ( result [ 0 ] . claimId ) ;
}
} ) . catch ( function ( error ) {
reject ( error ) ;
} ) ;
} ) ;
} ;
Certificate . getLongChannelIdFromChannelName = function ( channelName ) {
var _this3 = this ;
logger . debug ( 'getLongChannelIdFromChannelName(' + channelName + ')' ) ;
return new Promise ( function ( resolve , reject ) {
_this3 . findAll ( {
where : { name : channelName } ,
order : [ [ 'effectiveAmount' , 'DESC' ] , [ 'height' , 'ASC' ] ]
} ) . then ( function ( result ) {
switch ( result . length ) {
case 0 :
return resolve ( null ) ;
default :
return resolve ( result [ 0 ] . claimId ) ;
}
} ) . catch ( function ( error ) {
reject ( error ) ;
} ) ;
} ) ;
} ;
Certificate . validateLongChannelId = function ( name , claimId ) {
var _this4 = this ;
logger . debug ( 'validateLongChannelId(' + name + ', ' + claimId + ')' ) ;
return new Promise ( function ( resolve , reject ) {
_this4 . findOne ( {
where : { name : name , claimId : claimId }
} ) . then ( function ( result ) {
if ( ! result ) {
return resolve ( null ) ;
} ;
resolve ( claimId ) ;
} ) . catch ( function ( error ) {
reject ( error ) ;
} ) ;
} ) ;
} ;
Certificate . getLongChannelId = function ( channelName , channelClaimId ) {
logger . debug ( 'getLongChannelId(' + channelName + ', ' + channelClaimId + ')' ) ;
if ( channelClaimId && channelClaimId . length === 40 ) {
// if a full channel id is provided
return this . validateLongChannelId ( channelName , channelClaimId ) ;
} else if ( channelClaimId && channelClaimId . length < 40 ) {
// if a short channel id is provided
return this . getLongChannelIdFromShortChannelId ( channelName , channelClaimId ) ;
} else {
return this . getLongChannelIdFromChannelName ( channelName ) ; // if no channel id provided
}
} ;
return Certificate ;
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 73 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
module . exports = function ( sequelize , _ref ) {
var STRING = _ref . STRING ;
var Channel = sequelize . define ( 'Channel' , {
channelName : {
type : STRING ,
allowNull : false
} ,
channelClaimId : {
type : STRING ,
allowNull : false
}
} , {
freezeTableName : true
} ) ;
Channel . associate = function ( db ) {
Channel . belongsTo ( db . User ) ;
Channel . hasOne ( db . Certificate ) ;
} ;
return Channel ;
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 74 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var logger = _ _webpack _require _ _ ( 1 ) ;
var _require = _ _webpack _require _ _ ( 33 ) ,
returnShortId = _require . returnShortId ;
var _require2 = _ _webpack _require _ _ ( 3 ) ,
defaultThumbnail = _require2 . assetDefaults . thumbnail ,
host = _require2 . details . host ;
function determineFileExtensionFromContentType ( contentType ) {
switch ( contentType ) {
case 'image/jpeg' :
case 'image/jpg' :
return 'jpeg' ;
case 'image/png' :
return 'png' ;
case 'image/gif' :
return 'gif' ;
case 'video/mp4' :
return 'mp4' ;
default :
logger . debug ( 'setting unknown file type as file extension jpeg' ) ;
return 'jpeg' ;
}
} ;
function determineThumbnail ( storedThumbnail , defaultThumbnail ) {
if ( storedThumbnail === '' ) {
return defaultThumbnail ;
}
return storedThumbnail ;
} ;
function prepareClaimData ( claim ) {
// logger.debug('preparing claim data based on resolved data:', claim);
claim [ 'thumbnail' ] = determineThumbnail ( claim . thumbnail , defaultThumbnail ) ;
claim [ 'fileExt' ] = determineFileExtensionFromContentType ( claim . contentType ) ;
claim [ 'host' ] = host ;
return claim ;
} ;
module . exports = function ( sequelize , _ref ) {
var STRING = _ref . STRING ,
BOOLEAN = _ref . BOOLEAN ,
INTEGER = _ref . INTEGER ,
TEXT = _ref . TEXT ,
DECIMAL = _ref . DECIMAL ;
var Claim = sequelize . define ( 'Claim' , {
address : {
type : STRING ,
default : null
} ,
amount : {
type : DECIMAL ( 19 , 8 ) ,
default : null
} ,
claimId : {
type : STRING ,
default : null
} ,
claimSequence : {
type : INTEGER ,
default : null
} ,
decodedClaim : {
type : BOOLEAN ,
default : null
} ,
depth : {
type : INTEGER ,
default : null
} ,
effectiveAmount : {
type : DECIMAL ( 19 , 8 ) ,
default : null
} ,
hasSignature : {
type : BOOLEAN ,
default : null
} ,
height : {
type : INTEGER ,
default : null
} ,
hex : {
type : TEXT ( 'long' ) ,
default : null
} ,
name : {
type : STRING ,
default : null
} ,
nout : {
type : INTEGER ,
default : null
} ,
txid : {
type : STRING ,
default : null
} ,
validAtHeight : {
type : INTEGER ,
default : null
} ,
outpoint : {
type : STRING ,
default : null
} ,
claimType : {
type : STRING ,
default : null
} ,
certificateId : {
type : STRING ,
default : null
} ,
author : {
type : STRING ,
default : null
} ,
description : {
type : TEXT ( 'long' ) ,
default : null
} ,
language : {
type : STRING ,
default : null
} ,
license : {
type : STRING ,
default : null
} ,
licenseUrl : {
type : STRING ,
default : null
} ,
nsfw : {
type : BOOLEAN ,
default : null
} ,
preview : {
type : STRING ,
default : null
} ,
thumbnail : {
type : STRING ,
default : null
} ,
title : {
type : STRING ,
default : null
} ,
metadataVersion : {
type : STRING ,
default : null
} ,
contentType : {
type : STRING ,
default : null
} ,
source : {
type : STRING ,
default : null
} ,
sourceType : {
type : STRING ,
default : null
} ,
sourceVersion : {
type : STRING ,
default : null
} ,
streamVersion : {
type : STRING ,
default : null
} ,
valueVersion : {
type : STRING ,
default : null
} ,
channelName : {
type : STRING ,
allowNull : true ,
default : null
}
} , {
freezeTableName : true
} ) ;
Claim . associate = function ( db ) {
Claim . belongsTo ( db . File , {
foreignKey : {
allowNull : true
}
} ) ;
} ;
Claim . getShortClaimIdFromLongClaimId = function ( claimId , claimName ) {
var _this = this ;
logger . debug ( 'Claim.getShortClaimIdFromLongClaimId for ' + claimName + '#' + claimId ) ;
return new Promise ( function ( resolve , reject ) {
_this . findAll ( {
where : { name : claimName } ,
order : [ [ 'height' , 'ASC' ] ]
} ) . then ( function ( result ) {
switch ( result . length ) {
case 0 :
throw new Error ( 'No claim(s) found with that claim name' ) ;
default :
resolve ( returnShortId ( result , claimId ) ) ;
}
} ) . catch ( function ( error ) {
reject ( error ) ;
} ) ;
} ) ;
} ;
Claim . getAllChannelClaims = function ( channelClaimId ) {
var _this2 = this ;
logger . debug ( 'Claim.getAllChannelClaims for ' + channelClaimId ) ;
return new Promise ( function ( resolve , reject ) {
_this2 . findAll ( {
where : { certificateId : channelClaimId } ,
order : [ [ 'height' , 'ASC' ] ] ,
raw : true // returns an array of only data, not an array of instances
} ) . then ( function ( channelClaimsArray ) {
// logger.debug('channelclaimsarray length:', channelClaimsArray.length);
switch ( channelClaimsArray . length ) {
case 0 :
return resolve ( null ) ;
default :
channelClaimsArray . forEach ( function ( claim ) {
claim [ 'fileExt' ] = determineFileExtensionFromContentType ( claim . contentType ) ;
claim [ 'thumbnail' ] = determineThumbnail ( claim . thumbnail , defaultThumbnail ) ;
return claim ;
} ) ;
return resolve ( channelClaimsArray ) ;
}
} ) . catch ( function ( error ) {
reject ( error ) ;
} ) ;
} ) ;
} ;
Claim . getClaimIdByLongChannelId = function ( channelClaimId , claimName ) {
var _this3 = this ;
logger . debug ( 'finding claim id for claim ' + claimName + ' from channel ' + channelClaimId ) ;
return new Promise ( function ( resolve , reject ) {
_this3 . findAll ( {
where : { name : claimName , certificateId : channelClaimId } ,
order : [ [ 'id' , 'ASC' ] ]
} ) . then ( function ( result ) {
switch ( result . length ) {
case 0 :
return resolve ( null ) ;
case 1 :
return resolve ( result [ 0 ] . claimId ) ;
default :
logger . error ( result . length + ' records found for "' + claimName + '" in channel "' + channelClaimId + '"' ) ;
return resolve ( result [ 0 ] . claimId ) ;
}
} ) . catch ( function ( error ) {
reject ( error ) ;
} ) ;
} ) ;
} ;
Claim . getLongClaimIdFromShortClaimId = function ( name , shortId ) {
var _this4 = this ;
return new Promise ( function ( resolve , reject ) {
_this4 . findAll ( {
where : {
name : name ,
claimId : {
$like : shortId + '%'
} } ,
order : [ [ 'height' , 'ASC' ] ]
} ) . then ( function ( result ) {
switch ( result . length ) {
case 0 :
return resolve ( null ) ;
default :
// note results must be sorted
return resolve ( result [ 0 ] . claimId ) ;
}
} ) . catch ( function ( error ) {
reject ( error ) ;
} ) ;
} ) ;
} ;
Claim . getTopFreeClaimIdByClaimName = function ( name ) {
var _this5 = this ;
return new Promise ( function ( resolve , reject ) {
_this5 . findAll ( {
where : { name : name } ,
order : [ [ 'effectiveAmount' , 'DESC' ] , [ 'height' , 'ASC' ] ] // note: maybe height and effective amount need to switch?
} ) . then ( function ( result ) {
logger . debug ( 'length of result' , result . length ) ;
switch ( result . length ) {
case 0 :
return resolve ( null ) ;
default :
return resolve ( result [ 0 ] . dataValues . claimId ) ;
}
} ) . catch ( function ( error ) {
reject ( error ) ;
} ) ;
} ) ;
} ;
Claim . validateLongClaimId = function ( name , claimId ) {
var _this6 = this ;
return new Promise ( function ( resolve , reject ) {
_this6 . findOne ( {
where : { name : name , claimId : claimId }
} ) . then ( function ( result ) {
if ( ! result ) {
return resolve ( null ) ;
} ;
resolve ( claimId ) ;
} ) . catch ( function ( error ) {
reject ( error ) ;
} ) ;
} ) ;
} ;
Claim . getLongClaimId = function ( claimName , claimId ) {
logger . debug ( 'getLongClaimId(' + claimName + ', ' + claimId + ')' ) ;
if ( claimId && claimId . length === 40 ) {
// if a full claim id is provided
return this . validateLongClaimId ( claimName , claimId ) ;
} else if ( claimId && claimId . length < 40 ) {
return this . getLongClaimIdFromShortClaimId ( claimName , claimId ) ; // if a short claim id is provided
} else {
return this . getTopFreeClaimIdByClaimName ( claimName ) ; // if no claim id is provided
}
} ;
Claim . resolveClaim = function ( name , claimId ) {
var _this7 = this ;
logger . debug ( 'Claim.resolveClaim: ' + name + ' ' + claimId ) ;
return new Promise ( function ( resolve , reject ) {
_this7 . findAll ( {
where : { name : name , claimId : claimId }
} ) . then ( function ( claimArray ) {
switch ( claimArray . length ) {
case 0 :
return resolve ( null ) ;
case 1 :
return resolve ( prepareClaimData ( claimArray [ 0 ] . dataValues ) ) ;
default :
logger . error ( 'more than one record matches ' + name + '#' + claimId + ' in db.Claim' ) ;
return resolve ( prepareClaimData ( claimArray [ 0 ] . dataValues ) ) ;
}
} ) . catch ( function ( error ) {
reject ( error ) ;
} ) ;
} ) ;
} ;
return Claim ;
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 75 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
module . exports = function ( sequelize , _ref ) {
var STRING = _ref . STRING ,
BOOLEAN = _ref . BOOLEAN ,
INTEGER = _ref . INTEGER ;
var File = sequelize . define ( 'File' , {
name : {
type : STRING ,
allowNull : false
} ,
claimId : {
type : STRING ,
allowNull : false
} ,
address : {
type : STRING ,
allowNull : false
} ,
outpoint : {
type : STRING ,
allowNull : false
} ,
height : {
type : INTEGER ,
allowNull : false ,
default : 0
} ,
fileName : {
type : STRING ,
allowNull : false
} ,
filePath : {
type : STRING ,
allowNull : false
} ,
fileType : {
type : STRING
} ,
nsfw : {
type : BOOLEAN ,
allowNull : false ,
defaultValue : false
} ,
trendingEligible : {
type : BOOLEAN ,
allowNull : false ,
defaultValue : true
}
} , {
freezeTableName : true
} ) ;
File . associate = function ( db ) {
File . hasMany ( db . Request ) ;
File . hasOne ( db . Claim ) ;
} ;
File . getRecentClaims = function ( ) {
return this . findAll ( {
where : { nsfw : false , trendingEligible : true } ,
order : [ [ 'createdAt' , 'DESC' ] ] ,
limit : 25
} ) ;
} ;
return File ;
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 76 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
module . exports = function ( sequelize , _ref ) {
var STRING = _ref . STRING ,
BOOLEAN = _ref . BOOLEAN ,
TEXT = _ref . TEXT ;
var Request = sequelize . define ( 'Request' , {
action : {
type : STRING ,
allowNull : false
} ,
url : {
type : STRING ,
allowNull : false
} ,
ipAddress : {
type : STRING ,
allowNull : true
} ,
result : {
type : TEXT ( 'long' ) ,
allowNull : true ,
default : null
}
} , {
freezeTableName : true
} ) ;
Request . associate = function ( db ) {
Request . belongsTo ( db . File , {
foreignKey : {
allowNull : true
}
} ) ;
} ;
return Request ;
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 77 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
2018-03-22 01:35:51 +01:00
var bcrypt = _ _webpack _require _ _ ( 78 ) ;
2018-03-21 01:08:30 +01:00
var logger = _ _webpack _require _ _ ( 1 ) ;
module . exports = function ( sequelize , _ref ) {
var STRING = _ref . STRING ;
var User = sequelize . define ( 'User' , {
userName : {
type : STRING ,
allowNull : false
} ,
password : {
type : STRING ,
allowNull : false
}
} , {
freezeTableName : true
} ) ;
User . associate = function ( db ) {
User . hasOne ( db . Channel ) ;
} ;
User . prototype . comparePassword = function ( password ) {
return bcrypt . compare ( password , this . password ) ;
} ;
User . prototype . changePassword = function ( newPassword ) {
var _this = this ;
return new Promise ( function ( resolve , reject ) {
// generate a salt string to use for hashing
bcrypt . genSalt ( function ( saltError , salt ) {
if ( saltError ) {
logger . error ( 'salt error' , saltError ) ;
reject ( saltError ) ;
return ;
}
// generate a hashed version of the user's password
bcrypt . hash ( newPassword , salt , function ( hashError , hash ) {
// if there is an error with the hash generation return the error
if ( hashError ) {
logger . error ( 'hash error' , hashError ) ;
reject ( hashError ) ;
return ;
}
// replace the current password with the new hash
_this . update ( { password : hash } ) . then ( function ( ) {
resolve ( ) ;
} ) . catch ( function ( error ) {
reject ( error ) ;
} ) ;
} ) ;
} ) ;
} ) ;
} ;
// pre-save hook method to hash the user's password before the user's info is saved to the db.
User . hook ( 'beforeCreate' , function ( user , options ) {
logger . debug ( 'User.beforeCreate hook...' ) ;
return new Promise ( function ( resolve , reject ) {
// generate a salt string to use for hashing
bcrypt . genSalt ( function ( saltError , salt ) {
if ( saltError ) {
logger . error ( 'salt error' , saltError ) ;
reject ( saltError ) ;
return ;
}
// generate a hashed version of the user's password
bcrypt . hash ( user . password , salt , function ( hashError , hash ) {
// if there is an error with the hash generation return the error
if ( hashError ) {
logger . error ( 'hash error' , hashError ) ;
reject ( hashError ) ;
return ;
}
// replace the password string with the hash password value
user . password = hash ;
resolve ( ) ;
} ) ;
} ) ;
} ) ;
} ) ;
return User ;
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 78 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports ) {
module . exports = require ( "bcrypt" ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 79 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var PassportLocalStrategy = _ _webpack _require _ _ ( 31 ) . Strategy ;
var logger = _ _webpack _require _ _ ( 1 ) ;
var db = _ _webpack _require _ _ ( 5 ) ;
var returnUserAndChannelInfo = function returnUserAndChannelInfo ( userInstance ) {
return new Promise ( function ( resolve , reject ) {
var userInfo = { } ;
userInfo [ 'id' ] = userInstance . id ;
userInfo [ 'userName' ] = userInstance . userName ;
userInstance . getChannel ( ) . then ( function ( _ref ) {
var channelName = _ref . channelName ,
channelClaimId = _ref . channelClaimId ;
userInfo [ 'channelName' ] = channelName ;
userInfo [ 'channelClaimId' ] = channelClaimId ;
return db . Certificate . getShortChannelIdFromLongChannelId ( channelClaimId , channelName ) ;
} ) . then ( function ( shortChannelId ) {
userInfo [ 'shortChannelId' ] = shortChannelId ;
resolve ( userInfo ) ;
} ) . catch ( function ( error ) {
reject ( error ) ;
} ) ;
} ) ;
} ;
module . exports = new PassportLocalStrategy ( {
usernameField : 'username' ,
passwordField : 'password'
} , function ( username , password , done ) {
return db . User . findOne ( {
where : { userName : username }
} ) . then ( function ( user ) {
if ( ! user ) {
logger . debug ( 'no user found' ) ;
return done ( null , false , { message : 'Incorrect username or password' } ) ;
}
return user . comparePassword ( password ) . then ( function ( isMatch ) {
if ( ! isMatch ) {
logger . debug ( 'incorrect password' ) ;
return done ( null , false , { message : 'Incorrect username or password' } ) ;
}
logger . debug ( 'Password was a match, returning User' ) ;
return returnUserAndChannelInfo ( user ) . then ( function ( userInfo ) {
return done ( null , userInfo ) ;
} ) . catch ( function ( error ) {
return error ;
} ) ;
} ) . catch ( function ( error ) {
return error ;
} ) ;
} ) . catch ( function ( error ) {
return done ( error ) ;
} ) ;
} ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 80 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var logger = _ _webpack _require _ _ ( 1 ) ;
var passport = _ _webpack _require _ _ ( 28 ) ;
module . exports = function ( app ) {
// route for sign up
app . post ( '/signup' , passport . authenticate ( 'local-signup' ) , function ( req , res ) {
logger . verbose ( 'successful signup for ' + req . user . channelName ) ;
res . status ( 200 ) . json ( {
success : true ,
channelName : req . user . channelName ,
channelClaimId : req . user . channelClaimId ,
shortChannelId : req . user . shortChannelId
} ) ;
} ) ;
// route for log in
app . post ( '/login' , function ( req , res , next ) {
passport . authenticate ( 'local-login' , function ( err , user , info ) {
if ( err ) {
return next ( err ) ;
}
if ( ! user ) {
return res . status ( 400 ) . json ( {
success : false ,
message : info . message
} ) ;
}
logger . debug ( 'successful login' ) ;
req . logIn ( user , function ( err ) {
if ( err ) {
return next ( err ) ;
}
return res . status ( 200 ) . json ( {
success : true ,
channelName : req . user . channelName ,
channelClaimId : req . user . channelClaimId ,
shortChannelId : req . user . shortChannelId
} ) ;
} ) ;
} ) ( req , res , next ) ;
} ) ;
// route to log out
app . get ( '/logout' , function ( req , res ) {
req . logout ( ) ;
res . status ( 200 ) . json ( { success : true , message : 'you successfully logged out' } ) ;
} ) ;
// see if user is authenticated, and return credentials if so
app . get ( '/user' , function ( req , res ) {
if ( req . user ) {
res . status ( 200 ) . json ( { success : true , data : req . user } ) ;
} else {
res . status ( 401 ) . json ( { success : false , message : 'user is not logged in' } ) ;
}
} ) ;
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 81 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var _slicedToArray = function ( ) { function sliceIterator ( arr , i ) { var _arr = [ ] ; var _n = true ; var _d = false ; var _e = undefined ; try { for ( var _i = arr [ Symbol . iterator ] ( ) , _s ; ! ( _n = ( _s = _i . next ( ) ) . done ) ; _n = true ) { _arr . push ( _s . value ) ; if ( i && _arr . length === i ) break ; } } catch ( err ) { _d = true ; _e = err ; } finally { try { if ( ! _n && _i [ "return" ] ) _i [ "return" ] ( ) ; } finally { if ( _d ) throw _e ; } } return _arr ; } return function ( arr , i ) { if ( Array . isArray ( arr ) ) { return arr ; } else if ( Symbol . iterator in Object ( arr ) ) { return sliceIterator ( arr , i ) ; } else { throw new TypeError ( "Invalid attempt to destructure non-iterable instance" ) ; } } ; } ( ) ;
var logger = _ _webpack _require _ _ ( 1 ) ;
2018-03-22 01:35:51 +01:00
var multipart = _ _webpack _require _ _ ( 82 ) ;
2018-03-21 01:08:30 +01:00
var _require = _ _webpack _require _ _ ( 3 ) ,
uploadDirectory = _require . publishing . uploadDirectory ,
host = _require . details . host ;
var multipartMiddleware = multipart ( { uploadDir : uploadDirectory } ) ;
var db = _ _webpack _require _ _ ( 5 ) ;
2018-03-22 01:35:51 +01:00
var _require2 = _ _webpack _require _ _ ( 83 ) ,
2018-03-21 01:08:30 +01:00
claimNameIsAvailable = _require2 . claimNameIsAvailable ,
checkChannelAvailability = _require2 . checkChannelAvailability ,
publish = _require2 . publish ;
2018-03-22 01:35:51 +01:00
var _require3 = _ _webpack _require _ _ ( 16 ) ,
2018-03-21 01:08:30 +01:00
getClaimList = _require3 . getClaimList ,
resolveUri = _require3 . resolveUri ,
getClaim = _require3 . getClaim ;
var _require4 = _ _webpack _require _ _ ( 34 ) ,
addGetResultsToFileData = _require4 . addGetResultsToFileData ,
createBasicPublishParams = _require4 . createBasicPublishParams ,
createThumbnailPublishParams = _require4 . createThumbnailPublishParams ,
parsePublishApiRequestBody = _require4 . parsePublishApiRequestBody ,
parsePublishApiRequestFiles = _require4 . parsePublishApiRequestFiles ,
createFileData = _require4 . createFileData ;
2018-03-22 01:35:51 +01:00
var errorHandlers = _ _webpack _require _ _ ( 36 ) ;
2018-03-21 01:08:30 +01:00
2018-03-22 01:35:51 +01:00
var _require5 = _ _webpack _require _ _ ( 17 ) ,
2018-03-21 01:08:30 +01:00
sendGATimingEvent = _require5 . sendGATimingEvent ;
2018-03-22 01:35:51 +01:00
var _require6 = _ _webpack _require _ _ ( 84 ) ,
2018-03-21 01:08:30 +01:00
authenticateUser = _require6 . authenticateUser ;
2018-03-22 01:35:51 +01:00
var _require7 = _ _webpack _require _ _ ( 37 ) ,
2018-03-21 01:08:30 +01:00
getChannelData = _require7 . getChannelData ,
getChannelClaims = _require7 . getChannelClaims ,
getClaimId = _require7 . getClaimId ;
var NO _CHANNEL = 'NO_CHANNEL' ;
var NO _CLAIM = 'NO_CLAIM' ;
module . exports = function ( app ) {
// route to check whether site has published to a channel
app . get ( '/api/channel/availability/:name' , function ( _ref , res ) {
var ip = _ref . ip ,
originalUrl = _ref . originalUrl ,
name = _ref . params . name ;
var gaStartTime = Date . now ( ) ;
checkChannelAvailability ( name ) . then ( function ( availableName ) {
res . status ( 200 ) . json ( availableName ) ;
sendGATimingEvent ( 'end-to-end' , 'claim name availability' , name , gaStartTime , Date . now ( ) ) ;
} ) . catch ( function ( error ) {
errorHandlers . handleErrorResponse ( originalUrl , ip , error , res ) ;
} ) ;
} ) ;
// route to get a short channel id from long channel Id
app . get ( '/api/channel/short-id/:longId/:name' , function ( _ref2 , res ) {
var ip = _ref2 . ip ,
originalUrl = _ref2 . originalUrl ,
params = _ref2 . params ;
db . Certificate . getShortChannelIdFromLongChannelId ( params . longId , params . name ) . then ( function ( shortId ) {
res . status ( 200 ) . json ( shortId ) ;
} ) . catch ( function ( error ) {
errorHandlers . handleErrorResponse ( originalUrl , ip , error , res ) ;
} ) ;
} ) ;
app . get ( '/api/channel/data/:channelName/:channelClaimId' , function ( _ref3 , res ) {
var ip = _ref3 . ip ,
originalUrl = _ref3 . originalUrl ,
body = _ref3 . body ,
params = _ref3 . params ;
var channelName = params . channelName ;
var channelClaimId = params . channelClaimId ;
if ( channelClaimId === 'none' ) channelClaimId = null ;
getChannelData ( channelName , channelClaimId , 0 ) . then ( function ( data ) {
if ( data === NO _CHANNEL ) {
return res . status ( 404 ) . json ( { success : false , message : 'No matching channel was found' } ) ;
}
res . status ( 200 ) . json ( { success : true , data : data } ) ;
} ) . catch ( function ( error ) {
errorHandlers . handleErrorResponse ( originalUrl , ip , error , res ) ;
} ) ;
} ) ;
app . get ( '/api/channel/claims/:channelName/:channelClaimId/:page' , function ( _ref4 , res ) {
var ip = _ref4 . ip ,
originalUrl = _ref4 . originalUrl ,
body = _ref4 . body ,
params = _ref4 . params ;
var channelName = params . channelName ;
var channelClaimId = params . channelClaimId ;
if ( channelClaimId === 'none' ) channelClaimId = null ;
var page = params . page ;
getChannelClaims ( channelName , channelClaimId , page ) . then ( function ( data ) {
if ( data === NO _CHANNEL ) {
return res . status ( 404 ) . json ( { success : false , message : 'No matching channel was found' } ) ;
}
res . status ( 200 ) . json ( { success : true , data : data } ) ;
} ) . catch ( function ( error ) {
errorHandlers . handleErrorResponse ( originalUrl , ip , error , res ) ;
} ) ;
} ) ;
// route to run a claim_list request on the daemon
app . get ( '/api/claim/list/:name' , function ( _ref5 , res ) {
var ip = _ref5 . ip ,
originalUrl = _ref5 . originalUrl ,
params = _ref5 . params ;
getClaimList ( params . name ) . then ( function ( claimsList ) {
res . status ( 200 ) . json ( claimsList ) ;
} ) . catch ( function ( error ) {
errorHandlers . handleErrorResponse ( originalUrl , ip , error , res ) ;
} ) ;
} ) ;
// route to get an asset
app . get ( '/api/claim/get/:name/:claimId' , function ( _ref6 , res ) {
var ip = _ref6 . ip ,
originalUrl = _ref6 . originalUrl ,
params = _ref6 . params ;
var name = params . name ;
var claimId = params . claimId ;
// resolve the claim
db . Claim . resolveClaim ( name , claimId ) . then ( function ( resolveResult ) {
// make sure a claim actually exists at that uri
if ( ! resolveResult ) {
throw new Error ( 'No matching uri found in Claim table' ) ;
}
var fileData = createFileData ( resolveResult ) ;
// get the claim
return Promise . all ( [ fileData , getClaim ( name + '#' + claimId ) ] ) ;
} ) . then ( function ( _ref7 ) {
var _ref8 = _slicedToArray ( _ref7 , 2 ) ,
fileData = _ref8 [ 0 ] ,
getResult = _ref8 [ 1 ] ;
fileData = addGetResultsToFileData ( fileData , getResult ) ;
return Promise . all ( [ db . upsert ( db . File , fileData , { name : name , claimId : claimId } , 'File' ) , getResult ] ) ;
} ) . then ( function ( _ref9 ) {
var _ref10 = _slicedToArray ( _ref9 , 2 ) ,
fileRecord = _ref10 [ 0 ] ,
_ref10$ = _ref10 [ 1 ] ,
message = _ref10$ . message ,
completed = _ref10$ . completed ;
res . status ( 200 ) . json ( { success : true , message : message , completed : completed } ) ;
} ) . catch ( function ( error ) {
errorHandlers . handleErrorResponse ( originalUrl , ip , error , res ) ;
} ) ;
} ) ;
// route to check whether this site published to a claim
app . get ( '/api/claim/availability/:name' , function ( _ref11 , res ) {
var ip = _ref11 . ip ,
originalUrl = _ref11 . originalUrl ,
name = _ref11 . params . name ;
var gaStartTime = Date . now ( ) ;
claimNameIsAvailable ( name ) . then ( function ( result ) {
res . status ( 200 ) . json ( result ) ;
sendGATimingEvent ( 'end-to-end' , 'claim name availability' , name , gaStartTime , Date . now ( ) ) ;
} ) . catch ( function ( error ) {
errorHandlers . handleErrorResponse ( originalUrl , ip , error , res ) ;
} ) ;
} ) ;
// route to run a resolve request on the daemon
app . get ( '/api/claim/resolve/:name/:claimId' , function ( _ref12 , res ) {
var headers = _ref12 . headers ,
ip = _ref12 . ip ,
originalUrl = _ref12 . originalUrl ,
params = _ref12 . params ;
resolveUri ( params . name + '#' + params . claimId ) . then ( function ( resolvedUri ) {
res . status ( 200 ) . json ( resolvedUri ) ;
} ) . catch ( function ( error ) {
errorHandlers . handleErrorResponse ( originalUrl , ip , error , res ) ;
} ) ;
} ) ;
// route to run a publish request on the daemon
app . post ( '/api/claim/publish' , multipartMiddleware , function ( _ref13 , res ) {
var body = _ref13 . body ,
files = _ref13 . files ,
headers = _ref13 . headers ,
ip = _ref13 . ip ,
originalUrl = _ref13 . originalUrl ,
user = _ref13 . user ;
// define variables
var channelName = void 0 ,
channelId = void 0 ,
channelPassword = void 0 ,
description = void 0 ,
fileName = void 0 ,
filePath = void 0 ,
fileType = void 0 ,
gaStartTime = void 0 ,
license = void 0 ,
name = void 0 ,
nsfw = void 0 ,
thumbnail = void 0 ,
thumbnailFileName = void 0 ,
thumbnailFilePath = void 0 ,
thumbnailFileType = void 0 ,
title = void 0 ;
// record the start time of the request
gaStartTime = Date . now ( ) ;
// validate the body and files of the request
try {
var _parsePublishApiReque = parsePublishApiRequestBody ( body ) ;
// validateApiPublishRequest(body, files);
name = _parsePublishApiReque . name ;
nsfw = _parsePublishApiReque . nsfw ;
license = _parsePublishApiReque . license ;
title = _parsePublishApiReque . title ;
description = _parsePublishApiReque . description ;
thumbnail = _parsePublishApiReque . thumbnail ;
var _parsePublishApiReque2 = parsePublishApiRequestFiles ( files ) ;
fileName = _parsePublishApiReque2 . fileName ;
filePath = _parsePublishApiReque2 . filePath ;
fileType = _parsePublishApiReque2 . fileType ;
thumbnailFileName = _parsePublishApiReque2 . thumbnailFileName ;
thumbnailFilePath = _parsePublishApiReque2 . thumbnailFilePath ;
thumbnailFileType = _parsePublishApiReque2 . thumbnailFileType ;
channelName = body . channelName ;
channelId = body . channelId ;
channelPassword = body . channelPassword ;
} catch ( error ) {
return res . status ( 400 ) . json ( { success : false , message : error . message } ) ;
}
// check channel authorization
Promise . all ( [ authenticateUser ( channelName , channelId , channelPassword , user ) , claimNameIsAvailable ( name ) , createBasicPublishParams ( filePath , name , title , description , license , nsfw , thumbnail ) , createThumbnailPublishParams ( thumbnailFilePath , name , license , nsfw ) ] ) . then ( function ( _ref14 ) {
var _ref15 = _slicedToArray ( _ref14 , 4 ) ,
_ref15$ = _ref15 [ 0 ] ,
channelName = _ref15$ . channelName ,
channelClaimId = _ref15$ . channelClaimId ,
validatedClaimName = _ref15 [ 1 ] ,
publishParams = _ref15 [ 2 ] ,
thumbnailPublishParams = _ref15 [ 3 ] ;
// add channel details to the publish params
if ( channelName && channelClaimId ) {
publishParams [ 'channel_name' ] = channelName ;
publishParams [ 'channel_id' ] = channelClaimId ;
}
// publish the thumbnail
if ( thumbnailPublishParams ) {
publish ( thumbnailPublishParams , thumbnailFileName , thumbnailFileType ) ;
}
// publish the asset
return publish ( publishParams , fileName , fileType ) ;
} ) . then ( function ( result ) {
res . status ( 200 ) . json ( {
success : true ,
message : 'publish completed successfully' ,
data : {
name : name ,
claimId : result . claim _id ,
url : host + '/' + result . claim _id + '/' + name ,
lbryTx : result
}
} ) ;
// record the publish end time and send to google analytics
sendGATimingEvent ( 'end-to-end' , 'publish' , fileType , gaStartTime , Date . now ( ) ) ;
} ) . catch ( function ( error ) {
errorHandlers . handleErrorResponse ( originalUrl , ip , error , res ) ;
} ) ;
} ) ;
// route to get a short claim id from long claim Id
app . get ( '/api/claim/short-id/:longId/:name' , function ( _ref16 , res ) {
var ip = _ref16 . ip ,
originalUrl = _ref16 . originalUrl ,
body = _ref16 . body ,
params = _ref16 . params ;
db . Claim . getShortClaimIdFromLongClaimId ( params . longId , params . name ) . then ( function ( shortId ) {
res . status ( 200 ) . json ( { success : true , data : shortId } ) ;
} ) . catch ( function ( error ) {
errorHandlers . handleErrorResponse ( originalUrl , ip , error , res ) ;
} ) ;
} ) ;
app . post ( '/api/claim/long-id' , function ( _ref17 , res ) {
var ip = _ref17 . ip ,
originalUrl = _ref17 . originalUrl ,
body = _ref17 . body ,
params = _ref17 . params ;
logger . debug ( 'body:' , body ) ;
var channelName = body . channelName ;
var channelClaimId = body . channelClaimId ;
var claimName = body . claimName ;
var claimId = body . claimId ;
getClaimId ( channelName , channelClaimId , claimName , claimId ) . then ( function ( result ) {
if ( result === NO _CHANNEL ) {
return res . status ( 404 ) . json ( { success : false , message : 'No matching channel could be found' } ) ;
}
if ( result === NO _CLAIM ) {
return res . status ( 404 ) . json ( { success : false , message : 'No matching claim id could be found' } ) ;
}
res . status ( 200 ) . json ( { success : true , data : result } ) ;
} ) . catch ( function ( error ) {
errorHandlers . handleErrorResponse ( originalUrl , ip , error , res ) ;
} ) ;
} ) ;
app . get ( '/api/claim/data/:claimName/:claimId' , function ( _ref18 , res ) {
var ip = _ref18 . ip ,
originalUrl = _ref18 . originalUrl ,
body = _ref18 . body ,
params = _ref18 . params ;
var claimName = params . claimName ;
var claimId = params . claimId ;
if ( claimId === 'none' ) claimId = null ;
db . Claim . resolveClaim ( claimName , claimId ) . then ( function ( claimInfo ) {
if ( ! claimInfo ) {
return res . status ( 404 ) . json ( { success : false , message : 'No claim could be found' } ) ;
}
res . status ( 200 ) . json ( { success : true , data : claimInfo } ) ;
} ) . catch ( function ( error ) {
errorHandlers . handleErrorResponse ( originalUrl , ip , error , res ) ;
} ) ;
} ) ;
// route to see if asset is available locally
app . get ( '/api/file/availability/:name/:claimId' , function ( _ref19 , res ) {
var ip = _ref19 . ip ,
originalUrl = _ref19 . originalUrl ,
params = _ref19 . params ;
var name = params . name ;
var claimId = params . claimId ;
db . File . findOne ( { where : { name : name , claimId : claimId } } ) . then ( function ( result ) {
if ( result ) {
return res . status ( 200 ) . json ( { success : true , data : true } ) ;
}
res . status ( 200 ) . json ( { success : true , data : false } ) ;
} ) . catch ( function ( error ) {
errorHandlers . handleErrorResponse ( originalUrl , ip , error , res ) ;
} ) ;
} ) ;
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 82 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports ) {
module . exports = require ( "connect-multiparty" ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 83 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var _slicedToArray = function ( ) { function sliceIterator ( arr , i ) { var _arr = [ ] ; var _n = true ; var _d = false ; var _e = undefined ; try { for ( var _i = arr [ Symbol . iterator ] ( ) , _s ; ! ( _n = ( _s = _i . next ( ) ) . done ) ; _n = true ) { _arr . push ( _s . value ) ; if ( i && _arr . length === i ) break ; } } catch ( err ) { _d = true ; _e = err ; } finally { try { if ( ! _n && _i [ "return" ] ) _i [ "return" ] ( ) ; } finally { if ( _d ) throw _e ; } } return _arr ; } return function ( arr , i ) { if ( Array . isArray ( arr ) ) { return arr ; } else if ( Symbol . iterator in Object ( arr ) ) { return sliceIterator ( arr , i ) ; } else { throw new TypeError ( "Invalid attempt to destructure non-iterable instance" ) ; } } ; } ( ) ;
function _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 ; }
var logger = _ _webpack _require _ _ ( 1 ) ;
var db = _ _webpack _require _ _ ( 5 ) ;
2018-03-22 01:35:51 +01:00
var lbryApi = _ _webpack _require _ _ ( 16 ) ;
2018-03-21 01:08:30 +01:00
var publishHelpers = _ _webpack _require _ _ ( 34 ) ;
var _require = _ _webpack _require _ _ ( 3 ) ,
_require$publishing = _require . publishing ,
primaryClaimAddress = _require$publishing . primaryClaimAddress ,
additionalClaimAddresses = _require$publishing . additionalClaimAddresses ;
var Sequelize = _ _webpack _require _ _ ( 32 ) ;
var Op = Sequelize . Op ;
module . exports = {
publish : function publish ( publishParams , fileName , fileType ) {
return new Promise ( function ( resolve , reject ) {
var publishResults = void 0 ,
certificateId = void 0 ,
channelName = void 0 ;
// publish the file
return lbryApi . publishClaim ( publishParams ) . then ( function ( tx ) {
logger . info ( 'Successfully published ' + publishParams . name + ' ' + fileName , tx ) ;
publishResults = tx ;
// get the channel information
if ( publishParams . channel _name ) {
logger . debug ( 'this claim was published in channel: ' + publishParams . channel _name ) ;
return db . Channel . findOne ( { where : { channelName : publishParams . channel _name } } ) ;
} else {
logger . debug ( 'this claim was not published in a channel' ) ;
return null ;
}
} ) . then ( function ( channel ) {
// set channel information
certificateId = null ;
channelName = null ;
if ( channel ) {
certificateId = channel . channelClaimId ;
channelName = channel . channelName ;
}
logger . debug ( 'certificateId: ' + certificateId ) ;
} ) . then ( function ( ) {
// create the File record
var fileRecord = {
name : publishParams . name ,
claimId : publishResults . claim _id ,
title : publishParams . metadata . title ,
description : publishParams . metadata . description ,
address : publishParams . claim _address ,
outpoint : publishResults . txid + ':' + publishResults . nout ,
height : 0 ,
fileName : fileName ,
filePath : publishParams . file _path ,
fileType : fileType ,
nsfw : publishParams . metadata . nsfw
} ;
// create the Claim record
var claimRecord = {
name : publishParams . name ,
claimId : publishResults . claim _id ,
title : publishParams . metadata . title ,
description : publishParams . metadata . description ,
address : publishParams . claim _address ,
thumbnail : publishParams . metadata . thumbnail ,
outpoint : publishResults . txid + ':' + publishResults . nout ,
height : 0 ,
contentType : fileType ,
nsfw : publishParams . metadata . nsfw ,
amount : publishParams . bid ,
certificateId : certificateId ,
channelName : channelName
} ;
// upsert criteria
var upsertCriteria = {
name : publishParams . name ,
claimId : publishResults . claim _id
} ;
// upsert the records
return Promise . all ( [ db . upsert ( db . File , fileRecord , upsertCriteria , 'File' ) , db . upsert ( db . Claim , claimRecord , upsertCriteria , 'Claim' ) ] ) ;
} ) . then ( function ( _ref ) {
var _ref2 = _slicedToArray ( _ref , 2 ) ,
file = _ref2 [ 0 ] ,
claim = _ref2 [ 1 ] ;
logger . debug ( 'File and Claim records successfully created' ) ;
return Promise . all ( [ file . setClaim ( claim ) , claim . setFile ( file ) ] ) ;
} ) . then ( function ( ) {
logger . debug ( 'File and Claim records successfully associated' ) ;
resolve ( publishResults ) ; // resolve the promise with the result from lbryApi.publishClaim;
} ) . catch ( function ( error ) {
logger . error ( 'PUBLISH ERROR' , error ) ;
publishHelpers . deleteTemporaryFile ( publishParams . file _path ) ; // delete the local file
reject ( error ) ;
} ) ;
} ) ;
} ,
claimNameIsAvailable : function claimNameIsAvailable ( name ) {
var claimAddresses = additionalClaimAddresses || [ ] ;
claimAddresses . push ( primaryClaimAddress ) ;
// find any records where the name is used
return db . Claim . findAll ( {
attributes : [ 'address' ] ,
where : {
name : name ,
address : _defineProperty ( { } , Op . or , claimAddresses )
}
} ) . then ( function ( result ) {
if ( result . length >= 1 ) {
throw new Error ( 'That claim is already in use' ) ;
} ;
return name ;
} ) . catch ( function ( error ) {
throw error ;
} ) ;
} ,
checkChannelAvailability : function checkChannelAvailability ( name ) {
return db . Channel . findAll ( {
where : { channelName : name }
} ) . then ( function ( result ) {
if ( result . length >= 1 ) {
throw new Error ( 'That channel has already been claimed' ) ;
}
return name ;
} ) . catch ( function ( error ) {
throw error ;
} ) ;
}
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 84 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var db = _ _webpack _require _ _ ( 5 ) ;
var logger = _ _webpack _require _ _ ( 1 ) ;
module . exports = {
authenticateUser : function authenticateUser ( channelName , channelId , channelPassword , user ) {
// case: no channelName or channel Id are provided (anonymous), regardless of whether user token is provided
if ( ! channelName && ! channelId ) {
return {
channelName : null ,
channelClaimId : null
} ;
}
// case: channelName or channel Id are provided with user token
if ( user ) {
if ( channelName && channelName !== user . channelName ) {
throw new Error ( 'the provided channel name does not match user credentials' ) ;
}
if ( channelId && channelId !== user . channelClaimId ) {
throw new Error ( 'the provided channel id does not match user credentials' ) ;
}
return {
channelName : user . channelName ,
channelClaimId : user . channelClaimId
} ;
}
// case: channelName or channel Id are provided with password instead of user token
if ( ! channelPassword ) throw new Error ( 'no channel password provided' ) ;
return module . exports . authenticateChannelCredentials ( channelName , channelId , channelPassword ) ;
} ,
authenticateChannelCredentials : function authenticateChannelCredentials ( channelName , channelId , userPassword ) {
return new Promise ( function ( resolve , reject ) {
// hoisted variables
var channelData = void 0 ;
// build the params for finding the channel
var channelFindParams = { } ;
if ( channelName ) channelFindParams [ 'channelName' ] = channelName ;
if ( channelId ) channelFindParams [ 'channelClaimId' ] = channelId ;
// find the channel
db . Channel . findOne ( {
where : channelFindParams
} ) . then ( function ( channel ) {
if ( ! channel ) {
logger . debug ( 'no channel found' ) ;
throw new Error ( 'Authentication failed, you do not have access to that channel' ) ;
}
channelData = channel . get ( ) ;
logger . debug ( 'channel data:' , channelData ) ;
return db . User . findOne ( {
where : { userName : channelData . channelName . substring ( 1 ) }
} ) ;
} ) . then ( function ( user ) {
if ( ! user ) {
logger . debug ( 'no user found' ) ;
throw new Error ( 'Authentication failed, you do not have access to that channel' ) ;
}
return user . comparePassword ( userPassword ) ;
} ) . then ( function ( isMatch ) {
if ( ! isMatch ) {
logger . debug ( 'incorrect password' ) ;
throw new Error ( 'Authentication failed, you do not have access to that channel' ) ;
}
logger . debug ( '...password was a match...' ) ;
resolve ( channelData ) ;
} ) . catch ( function ( error ) {
reject ( error ) ;
} ) ;
} ) ;
}
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 85 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var CLAIMS _PER _PAGE = 12 ;
module . exports = {
returnPaginatedChannelClaims : function returnPaginatedChannelClaims ( channelName , longChannelClaimId , claims , page ) {
var totalPages = module . exports . determineTotalPages ( claims ) ;
var paginationPage = module . exports . getPageFromQuery ( page ) ;
var viewData = {
channelName : channelName ,
longChannelClaimId : longChannelClaimId ,
claims : module . exports . extractPageFromClaims ( claims , paginationPage ) ,
previousPage : module . exports . determinePreviousPage ( paginationPage ) ,
currentPage : paginationPage ,
nextPage : module . exports . determineNextPage ( totalPages , paginationPage ) ,
totalPages : totalPages ,
totalResults : module . exports . determineTotalClaims ( claims )
} ;
return viewData ;
} ,
getPageFromQuery : function getPageFromQuery ( page ) {
if ( page ) {
return parseInt ( page ) ;
}
return 1 ;
} ,
extractPageFromClaims : function extractPageFromClaims ( claims , pageNumber ) {
if ( ! claims ) {
return [ ] ; // if no claims, return this default
}
// logger.debug('claims is array?', Array.isArray(claims));
// logger.debug(`pageNumber ${pageNumber} is number?`, Number.isInteger(pageNumber));
var claimStartIndex = ( pageNumber - 1 ) * CLAIMS _PER _PAGE ;
var claimEndIndex = claimStartIndex + CLAIMS _PER _PAGE ;
var pageOfClaims = claims . slice ( claimStartIndex , claimEndIndex ) ;
return pageOfClaims ;
} ,
determineTotalPages : function determineTotalPages ( claims ) {
if ( ! claims ) {
return 0 ;
} else {
var totalClaims = claims . length ;
if ( totalClaims < CLAIMS _PER _PAGE ) {
return 1 ;
}
var fullPages = Math . floor ( totalClaims / CLAIMS _PER _PAGE ) ;
var remainder = totalClaims % CLAIMS _PER _PAGE ;
if ( remainder === 0 ) {
return fullPages ;
}
return fullPages + 1 ;
}
} ,
determinePreviousPage : function determinePreviousPage ( currentPage ) {
if ( currentPage === 1 ) {
return null ;
}
return currentPage - 1 ;
} ,
determineNextPage : function determineNextPage ( totalPages , currentPage ) {
if ( currentPage === totalPages ) {
return null ;
}
return currentPage + 1 ;
} ,
determineTotalClaims : function determineTotalClaims ( claims ) {
if ( ! claims ) {
return 0 ;
}
return claims . length ;
}
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 86 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var _require = _ _webpack _require _ _ ( 3 ) ,
host = _require . details ;
2018-03-22 01:35:51 +01:00
var handlePageRender = _ _webpack _require _ _ ( 38 ) ;
2018-03-21 01:08:30 +01:00
module . exports = function ( app ) {
// route for the home page
app . get ( '/' , function ( req , res ) {
handlePageRender ( req , res ) ;
} ) ;
// route to display login page
app . get ( '/login' , function ( req , res ) {
handlePageRender ( req , res ) ;
} ) ;
// route to show 'about' page
app . get ( '/about' , function ( req , res ) {
handlePageRender ( req , res ) ;
} ) ;
// route to display a list of the trending images
app . get ( '/trending' , function ( req , res ) {
res . status ( 301 ) . redirect ( '/popular' ) ;
} ) ;
app . get ( '/popular' , function ( req , res ) {
handlePageRender ( req , res ) ;
} ) ;
// route to display a list of the trending images
app . get ( '/new' , function ( req , res ) {
handlePageRender ( req , res ) ;
} ) ;
// route to send embedable video player (for twitter)
app . get ( '/embed/:claimId/:name' , function ( _ref , res ) {
var params = _ref . params ;
var claimId = params . claimId ;
var name = params . name ;
// get and render the content
res . status ( 200 ) . render ( 'embed' , { layout : 'embed' , host : host , claimId : claimId , name : name } ) ;
} ) ;
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 87 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = function ( ) {
var state = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : initialState ;
var action = arguments [ 1 ] ;
switch ( action . type ) {
case actions . FILE _SELECTED :
return Object . assign ( { } , initialState , { // note: clears to initial state
file : action . data
} ) ;
case actions . FILE _CLEAR :
return initialState ;
case actions . METADATA _UPDATE :
return Object . assign ( { } , state , {
metadata : Object . assign ( { } , state . metadata , _defineProperty ( { } , action . data . name , action . data . value ) )
} ) ;
case actions . CLAIM _UPDATE :
return Object . assign ( { } , state , {
claim : action . data
} ) ;
case actions . SET _PUBLISH _IN _CHANNEL :
return Object . assign ( { } , state , {
publishInChannel : action . channel
} ) ;
case actions . PUBLISH _STATUS _UPDATE :
return Object . assign ( { } , state , {
status : action . data
} ) ;
case actions . ERROR _UPDATE :
return Object . assign ( { } , state , {
error : Object . assign ( { } , state . error , _defineProperty ( { } , action . data . name , action . data . value ) )
} ) ;
case actions . SELECTED _CHANNEL _UPDATE :
return Object . assign ( { } , state , {
selectedChannel : action . data
} ) ;
case actions . TOGGLE _METADATA _INPUTS :
return Object . assign ( { } , state , {
showMetadataInputs : action . data
} ) ;
case actions . THUMBNAIL _NEW :
return Object . assign ( { } , state , {
thumbnail : action . data
} ) ;
default :
return state ;
}
} ;
2018-03-22 01:35:51 +01:00
var _publish _action _types = _ _webpack _require _ _ ( 41 ) ;
2018-03-21 01:08:30 +01:00
var actions = _interopRequireWildcard ( _publish _action _types ) ;
2018-03-22 01:35:51 +01:00
var _publish _channel _select _states = _ _webpack _require _ _ ( 88 ) ;
2018-03-21 01:08:30 +01:00
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 ; } }
function _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 ; }
var _require = _ _webpack _require _ _ ( 3 ) ,
publishing = _require . publishing ;
var initialState = {
disabled : publishing . disabled ,
disabledMessage : publishing . disabledMessage ,
publishInChannel : false ,
selectedChannel : _publish _channel _select _states . LOGIN ,
showMetadataInputs : false ,
status : {
status : null ,
message : null
} ,
error : {
file : null ,
url : null ,
channel : null ,
publishSubmit : null
} ,
file : null ,
claim : '' ,
metadata : {
title : '' ,
description : '' ,
license : '' ,
nsfw : false
} ,
thumbnail : null
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 88 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var LOGIN = exports . LOGIN = 'Existing' ;
var CREATE = exports . CREATE = 'New' ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 89 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = function ( ) {
var state = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : initialState ;
var action = arguments [ 1 ] ;
switch ( action . type ) {
case actions . CHANNEL _UPDATE :
return Object . assign ( { } , state , {
loggedInChannel : action . data
} ) ;
default :
return state ;
}
} ;
2018-03-22 01:35:51 +01:00
var _channel _action _types = _ _webpack _require _ _ ( 42 ) ;
2018-03-21 01:08:30 +01:00
var actions = _interopRequireWildcard ( _channel _action _types ) ;
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 ; } }
var initialState = {
loggedInChannel : {
name : null ,
shortId : null ,
longId : null
}
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 90 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = function ( ) {
var state = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : initialState ;
var action = arguments [ 1 ] ;
switch ( action . type ) {
// handle request
case actions . REQUEST _ERROR :
return Object . assign ( { } , state , {
request : Object . assign ( { } , state . request , {
error : action . data
} )
} ) ;
case actions . REQUEST _UPDATE :
return Object . assign ( { } , state , {
request : Object . assign ( { } , state . request , {
type : action . data . requestType ,
id : action . data . requestId
} )
} ) ;
// store requests
case actions . REQUEST _LIST _ADD :
return Object . assign ( { } , state , {
requestList : Object . assign ( { } , state . requestList , _defineProperty ( { } , action . data . id , {
error : action . data . error ,
key : action . data . key
} ) )
} ) ;
// asset data
case actions . ASSET _ADD :
return Object . assign ( { } , state , {
assetList : Object . assign ( { } , state . assetList , _defineProperty ( { } , action . data . id , {
error : action . data . error ,
name : action . data . name ,
claimId : action . data . claimId ,
shortId : action . data . shortId ,
claimData : action . data . claimData
} ) )
} ) ;
// channel data
case actions . CHANNEL _ADD :
return Object . assign ( { } , state , {
channelList : Object . assign ( { } , state . channelList , _defineProperty ( { } , action . data . id , {
name : action . data . name ,
longId : action . data . longId ,
shortId : action . data . shortId ,
claimsData : action . data . claimsData
} ) )
} ) ;
case actions . CHANNEL _CLAIMS _UPDATE _SUCCESS :
return Object . assign ( { } , state , {
channelList : Object . assign ( { } , state . channelList , _defineProperty ( { } , action . data . channelListId , Object . assign ( { } , state . channelList [ action . data . channelListId ] , {
claimsData : action . data . claimsData
} ) ) )
} ) ;
// display an asset
case actions . FILE _AVAILABILITY _UPDATE :
return Object . assign ( { } , state , {
displayAsset : Object . assign ( { } , state . displayAsset , {
status : action . data
} )
} ) ;
case actions . DISPLAY _ASSET _ERROR :
return Object . assign ( { } , state , {
displayAsset : Object . assign ( { } , state . displayAsset , {
error : action . data ,
status : _asset _display _states . ERROR
} )
} ) ;
default :
return state ;
}
} ;
2018-03-22 01:35:51 +01:00
var _show _action _types = _ _webpack _require _ _ ( 9 ) ;
2018-03-21 01:08:30 +01:00
var actions = _interopRequireWildcard ( _show _action _types ) ;
2018-03-22 01:35:51 +01:00
var _asset _display _states = _ _webpack _require _ _ ( 43 ) ;
2018-03-21 01:08:30 +01:00
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 ; } }
function _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 ; }
var initialState = {
request : {
error : null ,
type : null ,
id : null
} ,
requestList : { } ,
channelList : { } ,
assetList : { } ,
displayAsset : {
error : null ,
status : _asset _display _states . LOCAL _CHECK
}
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 91 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . default = function ( ) {
var state = arguments . length > 0 && arguments [ 0 ] !== undefined ? arguments [ 0 ] : initialState ;
var action = arguments [ 1 ] ;
switch ( action . type ) {
default :
return state ;
}
} ;
var siteConfig = _ _webpack _require _ _ ( 3 ) ;
var googleAnalyticsId = siteConfig . analytics . googleId ,
_siteConfig$assetDefa = siteConfig . assetDefaults ,
defaultThumbnail = _siteConfig$assetDefa . thumbnail ,
defaultDescription = _siteConfig$assetDefa . description ,
_siteConfig$details = siteConfig . details ,
description = _siteConfig$details . description ,
host = _siteConfig$details . host ,
title = _siteConfig$details . title ,
twitter = _siteConfig$details . twitter ;
var initialState = {
description : description ,
googleAnalyticsId : googleAnalyticsId ,
host : host ,
title : title ,
twitter : twitter ,
defaultDescription : defaultDescription ,
defaultThumbnail : defaultThumbnail
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 92 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports ) {
module . exports = require ( "react-ga" ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 93 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports ) {
module . exports = require ( "cross-fetch/polyfill" ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 94 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _react = _ _webpack _require _ _ ( 0 ) ;
var _react2 = _interopRequireDefault ( _react ) ;
var _NavBar = _ _webpack _require _ _ ( 8 ) ;
var _NavBar2 = _interopRequireDefault ( _NavBar ) ;
2018-03-22 01:35:51 +01:00
var _SEO = _ _webpack _require _ _ ( 10 ) ;
2018-03-21 01:08:30 +01:00
var _SEO2 = _interopRequireDefault ( _SEO ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var AboutPage = function ( _React$Component ) {
_inherits ( AboutPage , _React$Component ) ;
function AboutPage ( ) {
_classCallCheck ( this , AboutPage ) ;
return _possibleConstructorReturn ( this , ( AboutPage . _ _proto _ _ || Object . getPrototypeOf ( AboutPage ) ) . apply ( this , arguments ) ) ;
}
_createClass ( AboutPage , [ {
key : 'render' ,
value : function render ( ) {
return _react2 . default . createElement (
'div' ,
null ,
_react2 . default . createElement ( _SEO2 . default , { pageTitle : 'About' , pageUri : 'about' } ) ,
_react2 . default . createElement ( _NavBar2 . default , null ) ,
_react2 . default . createElement (
'div' ,
{ className : 'row row--padded' } ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--5 column--med-10 align-content-top' } ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--8 column--med-10' } ,
_react2 . default . createElement (
'p' ,
{ className : 'pull-quote' } ,
'Spee.ch is an open-source project. Please contribute to the existing site, or fork it and make your own.'
) ,
_react2 . default . createElement (
'p' ,
null ,
_react2 . default . createElement (
'a' ,
{ className : 'link--primary' , target : '_blank' , href : 'https://twitter.com/spee_ch' } ,
'TWITTER'
)
) ,
_react2 . default . createElement (
'p' ,
null ,
_react2 . default . createElement (
'a' ,
{ className : 'link--primary' , target : '_blank' , href : 'https://github.com/lbryio/spee.ch' } ,
'GITHUB'
)
) ,
_react2 . default . createElement (
'p' ,
null ,
_react2 . default . createElement (
'a' ,
{ className : 'link--primary' , target : '_blank' , href : 'https://discord.gg/YjYbwhS' } ,
'DISCORD CHANNEL'
)
) ,
_react2 . default . createElement (
'p' ,
null ,
_react2 . default . createElement (
'a' ,
{ className : 'link--primary' , target : '_blank' , href : 'https://github.com/lbryio/spee.ch/blob/master/README.md' } ,
'DOCUMENTATION'
)
)
)
) ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--5 column--med-10 align-content-top' } ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--8 column--med-10' } ,
_react2 . default . createElement (
'p' ,
null ,
'Spee.ch is a media-hosting site that reads from and publishes content to the ' ,
_react2 . default . createElement (
'a' ,
{ className : 'link--primary' , href : 'https://lbry.io' } ,
'LBRY'
) ,
' blockchain.'
) ,
_react2 . default . createElement (
'p' ,
null ,
'Spee.ch is a hosting service, but with the added benefit that it stores your content on a decentralized network of computers -- the ' ,
_react2 . default . createElement (
'a' ,
{ className : 'link--primary' , href : 'https://lbry.io/get' } ,
'LBRY'
) ,
' network. This means that your images are stored in multiple locations without a single point of failure.'
) ,
_react2 . default . createElement (
'h3' ,
null ,
'Contribute'
) ,
_react2 . default . createElement (
'p' ,
null ,
'If you have an idea for your own spee.ch-like site on top of LBRY, fork our ' ,
_react2 . default . createElement (
'a' ,
{ className : 'link--primary' , href : 'https://github.com/lbryio/spee.ch' } ,
'github repo'
) ,
' and go to town!'
) ,
_react2 . default . createElement (
'p' ,
null ,
'If you want to improve spee.ch, join our ' ,
_react2 . default . createElement (
'a' ,
{ className : 'link--primary' , href : 'https://discord.gg/YjYbwhS' } ,
'discord channel'
) ,
' or solve one of our ' ,
_react2 . default . createElement (
'a' ,
{ className : 'link--primary' , href : 'https://github.com/lbryio/spee.ch/issues' } ,
'github issues'
) ,
'.'
)
)
)
)
) ;
}
} ] ) ;
return AboutPage ;
} ( _react2 . default . Component ) ;
;
exports . default = AboutPage ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 95 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _react = _ _webpack _require _ _ ( 0 ) ;
var _react2 = _interopRequireDefault ( _react ) ;
var _reactRouterDom = _ _webpack _require _ _ ( 4 ) ;
2018-03-22 01:35:51 +01:00
var _Logo = _ _webpack _require _ _ ( 96 ) ;
2018-03-21 01:08:30 +01:00
var _Logo2 = _interopRequireDefault ( _Logo ) ;
2018-03-22 01:35:51 +01:00
var _NavBarChannelOptionsDropdown = _ _webpack _require _ _ ( 97 ) ;
2018-03-21 01:08:30 +01:00
var _NavBarChannelOptionsDropdown2 = _interopRequireDefault ( _NavBarChannelOptionsDropdown ) ;
var _request = _ _webpack _require _ _ ( 6 ) ;
var _request2 = _interopRequireDefault ( _request ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var VIEW = 'VIEW' ;
var LOGOUT = 'LOGOUT' ;
var NavBar = function ( _React$Component ) {
_inherits ( NavBar , _React$Component ) ;
function NavBar ( props ) {
_classCallCheck ( this , NavBar ) ;
var _this = _possibleConstructorReturn ( this , ( NavBar . _ _proto _ _ || Object . getPrototypeOf ( NavBar ) ) . call ( this , props ) ) ;
_this . checkForLoggedInUser = _this . checkForLoggedInUser . bind ( _this ) ;
_this . logoutUser = _this . logoutUser . bind ( _this ) ;
_this . handleSelection = _this . handleSelection . bind ( _this ) ;
return _this ;
}
_createClass ( NavBar , [ {
key : 'componentDidMount' ,
value : function componentDidMount ( ) {
// check to see if the user is already logged in
this . checkForLoggedInUser ( ) ;
}
} , {
key : 'checkForLoggedInUser' ,
value : function checkForLoggedInUser ( ) {
var _this2 = this ;
var params = { credentials : 'include' } ;
( 0 , _request2 . default ) ( '/user' , params ) . then ( function ( _ref ) {
var data = _ref . data ;
_this2 . props . onChannelLogin ( data . channelName , data . shortChannelId , data . channelClaimId ) ;
} ) . catch ( function ( error ) {
console . log ( '/user error:' , error . message ) ;
} ) ;
}
} , {
key : 'logoutUser' ,
value : function logoutUser ( ) {
var _this3 = this ;
var params = { credentials : 'include' } ;
( 0 , _request2 . default ) ( '/logout' , params ) . then ( function ( ) {
_this3 . props . onChannelLogout ( ) ;
} ) . catch ( function ( error ) {
console . log ( '/logout error' , error . message ) ;
} ) ;
}
} , {
key : 'handleSelection' ,
value : function handleSelection ( event ) {
var value = event . target . selectedOptions [ 0 ] . value ;
switch ( value ) {
case LOGOUT :
this . logoutUser ( ) ;
break ;
case VIEW :
// redirect to channel page
this . props . history . push ( '/' + this . props . channelName + ':' + this . props . channelLongId ) ;
break ;
default :
break ;
}
}
} , {
key : 'render' ,
value : function render ( ) {
var siteDescription = this . props . siteDescription ;
return _react2 . default . createElement (
'div' ,
{ className : 'row row--wide nav-bar' } ,
_react2 . default . createElement (
'div' ,
{ className : 'row row--padded row--short flex-container--row flex-container--space-between-center' } ,
_react2 . default . createElement ( _Logo2 . default , null ) ,
_react2 . default . createElement (
'div' ,
{ className : 'nav-bar--center' } ,
_react2 . default . createElement (
'span' ,
{ className : 'nav-bar-tagline' } ,
siteDescription
)
) ,
_react2 . default . createElement (
'div' ,
{ className : 'nav-bar--right' } ,
_react2 . default . createElement (
_reactRouterDom . NavLink ,
{ className : 'nav-bar-link link--nav' , activeClassName : 'link--nav-active' , to : '/' , exact : true } ,
'Publish'
) ,
_react2 . default . createElement (
_reactRouterDom . NavLink ,
{ className : 'nav-bar-link link--nav' , activeClassName : 'link--nav-active' , to : '/about' } ,
'About'
) ,
this . props . channelName ? _react2 . default . createElement ( _NavBarChannelOptionsDropdown2 . default , {
channelName : this . props . channelName ,
handleSelection : this . handleSelection ,
defaultSelection : this . props . channelName ,
VIEW : VIEW ,
LOGOUT : LOGOUT
} ) : _react2 . default . createElement (
_reactRouterDom . NavLink ,
{ id : 'nav-bar-login-link' , className : 'nav-bar-link link--nav' , activeClassName : 'link--nav-active' , to : '/login' } ,
'Channel'
)
)
)
) ;
}
} ] ) ;
return NavBar ;
} ( _react2 . default . Component ) ;
exports . default = ( 0 , _reactRouterDom . withRouter ) ( NavBar ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 96 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _react = _ _webpack _require _ _ ( 0 ) ;
var _react2 = _interopRequireDefault ( _react ) ;
var _reactRouterDom = _ _webpack _require _ _ ( 4 ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function Logo ( ) {
return _react2 . default . createElement (
'svg' ,
{ version : '1.1' , id : 'Layer_1' , x : '0px' , y : '0px' , height : '24px' , viewBox : '0 0 80 31' , enableBackground : 'new 0 0 80 31' , className : 'nav-bar-logo' } ,
_react2 . default . createElement (
_reactRouterDom . Link ,
{ to : '/' } ,
_react2 . default . createElement (
'title' ,
null ,
'Logo'
) ,
_react2 . default . createElement (
'desc' ,
null ,
'Spee.ch logo'
) ,
_react2 . default . createElement (
'g' ,
{ id : 'About' } ,
_react2 . default . createElement (
'g' ,
{ id : 'Publish-Form-V2-_x28_filled_x29_' , transform : 'translate(-42.000000, -23.000000)' } ,
_react2 . default . createElement (
'g' ,
{ id : 'Group-17' , transform : 'translate(42.000000, 22.000000)' } ,
_react2 . default . createElement (
'text' ,
{ transform : 'matrix(1 0 0 1 0 20)' , fontSize : '25' , fontFamily : 'Roboto' } ,
'Spee<h'
) ,
_react2 . default . createElement (
'g' ,
{ id : 'Group-16' , transform : 'translate(0.000000, 30.000000)' } ,
_react2 . default . createElement ( 'path' , { id : 'Line-8' , fill : 'none' , stroke : '#09F911' , strokeWidth : '1' , strokeLinecap : 'square' , d : 'M0.5,1.5h15' } ) ,
_react2 . default . createElement ( 'path' , { id : 'Line-8-Copy' , fill : 'none' , stroke : '#029D74' , strokeWidth : '1' , strokeLinecap : 'square' , d : 'M16.5,1.5h15' } ) ,
_react2 . default . createElement ( 'path' , { id : 'Line-8-Copy-2' , fill : 'none' , stroke : '#E35BD8' , strokeWidth : '1' , strokeLinecap : 'square' , d : 'M32.5,1.5h15' } ) ,
_react2 . default . createElement ( 'path' , { id : 'Line-8-Copy-3' , fill : 'none' , stroke : '#4156C5' , strokeWidth : '1' , strokeLinecap : 'square' , d : 'M48.5,1.5h15' } ) ,
_react2 . default . createElement ( 'path' , { id : 'Line-8-Copy-4' , fill : 'none' , stroke : '#635688' , strokeWidth : '1' , strokeLinecap : 'square' , d : 'M64.5,1.5h15' } )
)
)
)
)
)
) ;
} ;
exports . default = Logo ;
/***/ } ) ,
/* 97 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _react = _ _webpack _require _ _ ( 0 ) ;
var _react2 = _interopRequireDefault ( _react ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function NavBarChannelDropdown ( _ref ) {
var channelName = _ref . channelName ,
handleSelection = _ref . handleSelection ,
defaultSelection = _ref . defaultSelection ,
VIEW = _ref . VIEW ,
LOGOUT = _ref . LOGOUT ;
return _react2 . default . createElement (
'select' ,
{ type : 'text' , id : 'nav-bar-channel-select' , className : 'select select--arrow link--nav' , onChange : handleSelection , value : defaultSelection } ,
_react2 . default . createElement (
'option' ,
{ id : 'nav-bar-channel-select-channel-option' } ,
channelName
) ,
_react2 . default . createElement (
'option' ,
{ value : VIEW } ,
'View'
) ,
_react2 . default . createElement (
'option' ,
{ value : LOGOUT } ,
'Logout'
)
) ;
} ;
exports . default = NavBarChannelDropdown ;
/***/ } ) ,
/* 98 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _react = _ _webpack _require _ _ ( 0 ) ;
var _react2 = _interopRequireDefault ( _react ) ;
var _reactHelmet = _ _webpack _require _ _ ( 13 ) ;
var _reactHelmet2 = _interopRequireDefault ( _reactHelmet ) ;
2018-03-22 01:35:51 +01:00
var _propTypes = _ _webpack _require _ _ ( 26 ) ;
2018-03-21 01:08:30 +01:00
var _propTypes2 = _interopRequireDefault ( _propTypes ) ;
var _pageTitle = _ _webpack _require _ _ ( 23 ) ;
var _metaTags = _ _webpack _require _ _ ( 22 ) ;
var _canonicalLink = _ _webpack _require _ _ ( 20 ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var SEO = function ( _React$Component ) {
_inherits ( SEO , _React$Component ) ;
function SEO ( ) {
_classCallCheck ( this , SEO ) ;
return _possibleConstructorReturn ( this , ( SEO . _ _proto _ _ || Object . getPrototypeOf ( SEO ) ) . apply ( this , arguments ) ) ;
}
_createClass ( SEO , [ {
key : 'render' ,
value : function render ( ) {
// props from state
var _props = this . props ,
defaultDescription = _props . defaultDescription ,
defaultThumbnail = _props . defaultThumbnail ,
siteDescription = _props . siteDescription ,
siteHost = _props . siteHost ,
siteTitle = _props . siteTitle ,
siteTwitter = _props . siteTwitter ;
// props from parent
var _props2 = this . props ,
asset = _props2 . asset ,
channel = _props2 . channel ,
pageUri = _props2 . pageUri ;
var pageTitle = this . props . pageTitle ;
// create page title, tags, and canonical link
pageTitle = ( 0 , _pageTitle . createPageTitle ) ( siteTitle , pageTitle ) ;
var metaTags = ( 0 , _metaTags . createMetaTags ) ( siteDescription , siteHost , siteTitle , siteTwitter , asset , channel , defaultDescription , defaultThumbnail ) ;
var canonicalLink = ( 0 , _canonicalLink . createCanonicalLink ) ( asset , channel , pageUri , siteHost ) ;
// render results
return _react2 . default . createElement ( _reactHelmet2 . default , {
title : pageTitle ,
meta : metaTags ,
link : [ { rel : 'canonical' , href : canonicalLink } ]
} ) ;
}
} ] ) ;
return SEO ;
} ( _react2 . default . Component ) ;
;
SEO . propTypes = {
pageTitle : _propTypes2 . default . string ,
pageUri : _propTypes2 . default . string ,
channel : _propTypes2 . default . object ,
asset : _propTypes2 . default . object
} ;
exports . default = SEO ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 99 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _reactRedux = _ _webpack _require _ _ ( 2 ) ;
2018-03-22 01:35:51 +01:00
var _view = _ _webpack _require _ _ ( 100 ) ;
2018-03-21 01:08:30 +01:00
var _view2 = _interopRequireDefault ( _view ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var mapStateToProps = function mapStateToProps ( _ref ) {
var channel = _ref . channel ;
return {
loggedInChannelName : channel . loggedInChannel . name
} ;
} ;
exports . default = ( 0 , _reactRedux . connect ) ( mapStateToProps , null ) ( _view2 . default ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 100 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _react = _ _webpack _require _ _ ( 0 ) ;
var _react2 = _interopRequireDefault ( _react ) ;
var _reactRouterDom = _ _webpack _require _ _ ( 4 ) ;
2018-03-22 01:35:51 +01:00
var _SEO = _ _webpack _require _ _ ( 10 ) ;
2018-03-21 01:08:30 +01:00
var _SEO2 = _interopRequireDefault ( _SEO ) ;
var _NavBar = _ _webpack _require _ _ ( 8 ) ;
var _NavBar2 = _interopRequireDefault ( _NavBar ) ;
2018-03-22 01:35:51 +01:00
var _ChannelLoginForm = _ _webpack _require _ _ ( 101 ) ;
2018-03-21 01:08:30 +01:00
var _ChannelLoginForm2 = _interopRequireDefault ( _ChannelLoginForm ) ;
2018-03-22 01:35:51 +01:00
var _ChannelCreateForm = _ _webpack _require _ _ ( 103 ) ;
2018-03-21 01:08:30 +01:00
var _ChannelCreateForm2 = _interopRequireDefault ( _ChannelCreateForm ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var LoginPage = function ( _React$Component ) {
_inherits ( LoginPage , _React$Component ) ;
function LoginPage ( ) {
_classCallCheck ( this , LoginPage ) ;
return _possibleConstructorReturn ( this , ( LoginPage . _ _proto _ _ || Object . getPrototypeOf ( LoginPage ) ) . apply ( this , arguments ) ) ;
}
_createClass ( LoginPage , [ {
key : 'componentWillReceiveProps' ,
value : function componentWillReceiveProps ( newProps ) {
// re-route the user to the homepage if the user is logged in
if ( newProps . loggedInChannelName !== this . props . loggedInChannelName ) {
this . props . history . push ( '/' ) ;
}
}
} , {
key : 'render' ,
value : function render ( ) {
return _react2 . default . createElement (
'div' ,
null ,
_react2 . default . createElement ( _SEO2 . default , { pageTitle : 'Login' , pageUri : 'login' } ) ,
_react2 . default . createElement ( _NavBar2 . default , null ) ,
_react2 . default . createElement (
'div' ,
{ className : 'row row--padded' } ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--5 column--med-10 align-content-top' } ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--8 column--med-10' } ,
_react2 . default . createElement (
'p' ,
null ,
'Channels allow you to publish and group content under an identity. You can create a channel for yourself, or share one with like-minded friends. You can create 1 channel, or 100, so whether you\'re ' ,
_react2 . default . createElement (
'a' ,
{ className : 'link--primary' , target : '_blank' , href : '/@catalonia2017:43dcf47163caa21d8404d9fe9b30f78ef3e146a8' } ,
'documenting important events'
) ,
', or making a public repository for ' ,
_react2 . default . createElement (
'a' ,
{ className : 'link--primary' , target : '_blank' , href : '/@catGifs' } ,
'cat gifs'
) ,
' (password: \'1234\'), try creating a channel for it!'
)
)
) ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--5 column--med-10 align-content-top' } ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--8 column--med-10' } ,
_react2 . default . createElement (
'h3' ,
{ className : 'h3--no-bottom' } ,
'Log in to an existing channel:'
) ,
_react2 . default . createElement ( _ChannelLoginForm2 . default , null ) ,
_react2 . default . createElement (
'h3' ,
{ className : 'h3--no-bottom' } ,
'Create a brand new channel:'
) ,
_react2 . default . createElement ( _ChannelCreateForm2 . default , null )
)
)
)
) ;
}
} ] ) ;
return LoginPage ;
} ( _react2 . default . Component ) ;
;
exports . default = ( 0 , _reactRouterDom . withRouter ) ( LoginPage ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 101 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _reactRedux = _ _webpack _require _ _ ( 2 ) ;
var _channel = _ _webpack _require _ _ ( 24 ) ;
2018-03-22 01:35:51 +01:00
var _view = _ _webpack _require _ _ ( 102 ) ;
2018-03-21 01:08:30 +01:00
var _view2 = _interopRequireDefault ( _view ) ;
var _publish = _ _webpack _require _ _ ( 25 ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var mapDispatchToProps = function mapDispatchToProps ( dispatch ) {
return {
onChannelLogin : function onChannelLogin ( name , shortId , longId ) {
dispatch ( ( 0 , _channel . updateLoggedInChannel ) ( name , shortId , longId ) ) ;
dispatch ( ( 0 , _publish . updateSelectedChannel ) ( name ) ) ;
}
} ;
} ;
exports . default = ( 0 , _reactRedux . connect ) ( null , mapDispatchToProps ) ( _view2 . default ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 102 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _react = _ _webpack _require _ _ ( 0 ) ;
var _react2 = _interopRequireDefault ( _react ) ;
var _request = _ _webpack _require _ _ ( 6 ) ;
var _request2 = _interopRequireDefault ( _request ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _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 ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var ChannelLoginForm = function ( _React$Component ) {
_inherits ( ChannelLoginForm , _React$Component ) ;
function ChannelLoginForm ( props ) {
_classCallCheck ( this , ChannelLoginForm ) ;
var _this = _possibleConstructorReturn ( this , ( ChannelLoginForm . _ _proto _ _ || Object . getPrototypeOf ( ChannelLoginForm ) ) . call ( this , props ) ) ;
_this . state = {
error : null ,
name : '' ,
password : ''
} ;
_this . handleInput = _this . handleInput . bind ( _this ) ;
_this . loginToChannel = _this . loginToChannel . bind ( _this ) ;
return _this ;
}
_createClass ( ChannelLoginForm , [ {
key : 'handleInput' ,
value : function handleInput ( event ) {
var name = event . target . name ;
var value = event . target . value ;
this . setState ( _defineProperty ( { } , name , value ) ) ;
}
} , {
key : 'loginToChannel' ,
value : function loginToChannel ( event ) {
var _this2 = this ;
event . preventDefault ( ) ;
var params = {
method : 'POST' ,
body : JSON . stringify ( { username : this . state . name , password : this . state . password } ) ,
headers : new Headers ( {
'Content-Type' : 'application/json'
} ) ,
credentials : 'include'
} ;
( 0 , _request2 . default ) ( 'login' , params ) . then ( function ( _ref ) {
var success = _ref . success ,
channelName = _ref . channelName ,
shortChannelId = _ref . shortChannelId ,
channelClaimId = _ref . channelClaimId ,
message = _ref . message ;
if ( success ) {
_this2 . props . onChannelLogin ( channelName , shortChannelId , channelClaimId ) ;
} else {
_this2 . setState ( { 'error' : message } ) ;
} ;
} ) . catch ( function ( error ) {
if ( error . message ) {
_this2 . setState ( { 'error' : error . message } ) ;
} else {
_this2 . setState ( { 'error' : error } ) ;
}
} ) ;
}
} , {
key : 'render' ,
value : function render ( ) {
return _react2 . default . createElement (
'form' ,
{ id : 'channel-login-form' } ,
_react2 . default . createElement (
'div' ,
{ className : 'row row--wide row--short' } ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--3 column--sml-10' } ,
_react2 . default . createElement (
'label' ,
{ className : 'label' , htmlFor : 'channel-login-name-input' } ,
'Name:'
)
) ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--6 column--sml-10' } ,
_react2 . default . createElement (
'div' ,
{ className : 'input-text--primary flex-container--row flex-container--left-bottom' } ,
_react2 . default . createElement (
'span' ,
null ,
'@'
) ,
_react2 . default . createElement ( 'input' , { type : 'text' , id : 'channel-login-name-input' , className : 'input-text' , name : 'name' , placeholder : 'Your Channel Name' , value : this . state . channelName , onChange : this . handleInput } )
)
)
) ,
_react2 . default . createElement (
'div' ,
{ className : 'row row--wide row--short' } ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--3 column--sml-10' } ,
_react2 . default . createElement (
'label' ,
{ className : 'label' , htmlFor : 'channel-login-password-input' } ,
'Password:'
)
) ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--6 column--sml-10' } ,
_react2 . default . createElement (
'div' ,
{ className : 'input-text--primary' } ,
_react2 . default . createElement ( 'input' , { type : 'password' , id : 'channel-login-password-input' , name : 'password' , className : 'input-text' , placeholder : '' , value : this . state . channelPassword , onChange : this . handleInput } )
)
)
) ,
this . state . error ? _react2 . default . createElement (
'p' ,
{ className : 'info-message--failure' } ,
this . state . error
) : _react2 . default . createElement (
'p' ,
{ className : 'info-message' } ,
'Enter the name and password for your channel'
) ,
_react2 . default . createElement (
'div' ,
{ className : 'row row--wide' } ,
_react2 . default . createElement (
'button' ,
{ className : 'button--primary' , onClick : this . loginToChannel } ,
'Authenticate'
)
)
) ;
}
} ] ) ;
return ChannelLoginForm ;
} ( _react2 . default . Component ) ;
exports . default = ChannelLoginForm ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 103 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _reactRedux = _ _webpack _require _ _ ( 2 ) ;
var _channel = _ _webpack _require _ _ ( 24 ) ;
2018-03-22 01:35:51 +01:00
var _view = _ _webpack _require _ _ ( 104 ) ;
2018-03-21 01:08:30 +01:00
var _view2 = _interopRequireDefault ( _view ) ;
var _publish = _ _webpack _require _ _ ( 25 ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var mapDispatchToProps = function mapDispatchToProps ( dispatch ) {
return {
onChannelLogin : function onChannelLogin ( name , shortId , longId ) {
dispatch ( ( 0 , _channel . updateLoggedInChannel ) ( name , shortId , longId ) ) ;
dispatch ( ( 0 , _publish . updateSelectedChannel ) ( name ) ) ;
}
} ;
} ;
exports . default = ( 0 , _reactRedux . connect ) ( null , mapDispatchToProps ) ( _view2 . default ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 104 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _react = _ _webpack _require _ _ ( 0 ) ;
var _react2 = _interopRequireDefault ( _react ) ;
2018-03-22 01:35:51 +01:00
var _ProgressBar = _ _webpack _require _ _ ( 50 ) ;
2018-03-21 01:08:30 +01:00
var _ProgressBar2 = _interopRequireDefault ( _ProgressBar ) ;
var _request = _ _webpack _require _ _ ( 6 ) ;
var _request2 = _interopRequireDefault ( _request ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _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 ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var ChannelCreateForm = function ( _React$Component ) {
_inherits ( ChannelCreateForm , _React$Component ) ;
function ChannelCreateForm ( props ) {
_classCallCheck ( this , ChannelCreateForm ) ;
var _this = _possibleConstructorReturn ( this , ( ChannelCreateForm . _ _proto _ _ || Object . getPrototypeOf ( ChannelCreateForm ) ) . call ( this , props ) ) ;
_this . state = {
error : null ,
channel : '' ,
password : '' ,
status : null
} ;
_this . handleChannelInput = _this . handleChannelInput . bind ( _this ) ;
_this . handleInput = _this . handleInput . bind ( _this ) ;
_this . createChannel = _this . createChannel . bind ( _this ) ;
return _this ;
}
_createClass ( ChannelCreateForm , [ {
key : 'cleanseChannelInput' ,
value : function cleanseChannelInput ( input ) {
input = input . replace ( /\s+/g , '-' ) ; // replace spaces with dashes
input = input . replace ( /[^A-Za-z0-9-]/g , '' ) ; // remove all characters that are not A-Z, a-z, 0-9, or '-'
return input ;
}
} , {
key : 'handleChannelInput' ,
value : function handleChannelInput ( event ) {
var value = event . target . value ;
value = this . cleanseChannelInput ( value ) ;
this . setState ( { channel : value } ) ;
if ( value ) {
this . updateIsChannelAvailable ( value ) ;
} else {
this . setState ( { error : 'Please enter a channel name' } ) ;
}
}
} , {
key : 'handleInput' ,
value : function handleInput ( event ) {
var name = event . target . name ;
var value = event . target . value ;
this . setState ( _defineProperty ( { } , name , value ) ) ;
}
} , {
key : 'updateIsChannelAvailable' ,
value : function updateIsChannelAvailable ( channel ) {
var _this2 = this ;
var channelWithAtSymbol = '@' + channel ;
( 0 , _request2 . default ) ( '/api/channel/availability/' + channelWithAtSymbol ) . then ( function ( ) {
_this2 . setState ( { 'error' : null } ) ;
} ) . catch ( function ( error ) {
_this2 . setState ( { 'error' : error . message } ) ;
} ) ;
}
} , {
key : 'checkIsChannelAvailable' ,
value : function checkIsChannelAvailable ( channel ) {
var channelWithAtSymbol = '@' + channel ;
return ( 0 , _request2 . default ) ( '/api/channel/availability/' + channelWithAtSymbol ) ;
}
} , {
key : 'checkIsPasswordProvided' ,
value : function checkIsPasswordProvided ( password ) {
return new Promise ( function ( resolve , reject ) {
if ( ! password || password . length < 1 ) {
return reject ( new Error ( 'Please provide a password' ) ) ;
}
resolve ( ) ;
} ) ;
}
} , {
key : 'makePublishChannelRequest' ,
value : function makePublishChannelRequest ( username , password ) {
var params = {
method : 'POST' ,
body : JSON . stringify ( { username : username , password : password } ) ,
headers : new Headers ( {
'Content-Type' : 'application/json'
} ) ,
credentials : 'include'
} ;
return new Promise ( function ( resolve , reject ) {
( 0 , _request2 . default ) ( '/signup' , params ) . then ( function ( result ) {
return resolve ( result ) ;
} ) . catch ( function ( error ) {
reject ( new Error ( 'Unfortunately, we encountered an error while creating your channel. Please let us know in Discord! ' + error . message ) ) ;
} ) ;
} ) ;
}
} , {
key : 'createChannel' ,
value : function createChannel ( event ) {
var _this3 = this ;
event . preventDefault ( ) ;
this . checkIsPasswordProvided ( this . state . password ) . then ( function ( ) {
return _this3 . checkIsChannelAvailable ( _this3 . state . channel ) ;
} ) . then ( function ( ) {
_this3 . setState ( { status : 'We are publishing your new channel. Sit tight...' } ) ;
return _this3 . makePublishChannelRequest ( _this3 . state . channel , _this3 . state . password ) ;
} ) . then ( function ( result ) {
_this3 . setState ( { status : null } ) ;
_this3 . props . onChannelLogin ( result . channelName , result . shortChannelId , result . channelClaimId ) ;
} ) . catch ( function ( error ) {
if ( error . message ) {
_this3 . setState ( { 'error' : error . message , status : null } ) ;
} else {
_this3 . setState ( { 'error' : error , status : null } ) ;
} ;
} ) ;
}
} , {
key : 'render' ,
value : function render ( ) {
return _react2 . default . createElement (
'div' ,
null ,
! this . state . status ? _react2 . default . createElement (
'form' ,
{ id : 'publish-channel-form' } ,
_react2 . default . createElement (
'div' ,
{ className : 'row row--wide row--short' } ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--3 column--sml-10' } ,
_react2 . default . createElement (
'label' ,
{ className : 'label' , htmlFor : 'new-channel-name' } ,
'Name:'
)
) ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--6 column--sml-10' } ,
_react2 . default . createElement (
'div' ,
{ className : 'input-text--primary flex-container--row flex-container--left-bottom span--relative' } ,
_react2 . default . createElement (
'span' ,
null ,
'@'
) ,
_react2 . default . createElement ( 'input' , { type : 'text' , name : 'channel' , id : 'new-channel-name' , className : 'input-text' , placeholder : 'exampleChannelName' , value : this . state . channel , onChange : this . handleChannelInput } ) ,
this . state . channel && ! this . state . error && _react2 . default . createElement (
'span' ,
{ id : 'input-success-channel-name' , className : 'info-message--success span--absolute' } ,
'\u2713'
) ,
this . state . error && _react2 . default . createElement (
'span' ,
{ id : 'input-success-channel-name' , className : 'info-message--failure span--absolute' } ,
'\u2716'
)
)
)
) ,
_react2 . default . createElement (
'div' ,
{ className : 'row row--wide row--short' } ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--3 column--sml-10' } ,
_react2 . default . createElement (
'label' ,
{ className : 'label' , htmlFor : 'new-channel-password' } ,
'Password:'
)
) ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--6 column--sml-10' } ,
_react2 . default . createElement (
'div' ,
{ className : 'input-text--primary' } ,
_react2 . default . createElement ( 'input' , { type : 'password' , name : 'password' , id : 'new-channel-password' , className : 'input-text' , placeholder : '' , value : this . state . password , onChange : this . handleInput } )
)
)
) ,
this . state . error ? _react2 . default . createElement (
'p' ,
{ className : 'info-message--failure' } ,
this . state . error
) : _react2 . default . createElement (
'p' ,
{ className : 'info-message' } ,
'Choose a name and password for your channel'
) ,
_react2 . default . createElement (
'div' ,
{ className : 'row row--wide' } ,
_react2 . default . createElement (
'button' ,
{ className : 'button--primary' , onClick : this . createChannel } ,
'Create Channel'
)
)
) : _react2 . default . createElement (
'div' ,
null ,
_react2 . default . createElement (
'p' ,
{ className : 'fine-print' } ,
this . state . status
) ,
_react2 . default . createElement ( _ProgressBar2 . default , { size : 12 } )
)
) ;
}
} ] ) ;
return ChannelCreateForm ;
} ( _react2 . default . Component ) ;
exports . default = ChannelCreateForm ;
2018-03-22 01:35:51 +01:00
/***/ } ) ,
/* 105 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _react = _ _webpack _require _ _ ( 0 ) ;
var _react2 = _interopRequireDefault ( _react ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var ActiveStatusBar = function ActiveStatusBar ( ) {
return _react2 . default . createElement (
'span' ,
{ className : 'progress-bar progress-bar--active' } ,
'| '
) ;
} ;
exports . default = ActiveStatusBar ;
2018-03-21 01:08:30 +01:00
/***/ } ) ,
/* 106 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
2018-03-22 01:35:51 +01:00
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _react = _ _webpack _require _ _ ( 0 ) ;
var _react2 = _interopRequireDefault ( _react ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var InactiveStatusBar = function InactiveStatusBar ( ) {
return _react2 . default . createElement (
'span' ,
{ className : 'progress-bar progress-bar--inactive' } ,
'| '
) ;
} ;
exports . default = InactiveStatusBar ;
/***/ } ) ,
/* 107 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
2018-03-21 01:08:30 +01:00
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _reactRedux = _ _webpack _require _ _ ( 2 ) ;
var _show = _ _webpack _require _ _ ( 7 ) ;
2018-03-22 01:35:51 +01:00
var _view = _ _webpack _require _ _ ( 108 ) ;
2018-03-21 01:08:30 +01:00
var _view2 = _interopRequireDefault ( _view ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var mapStateToProps = function mapStateToProps ( _ref ) {
var show = _ref . show ;
return {
error : show . request . error ,
requestType : show . request . type
} ;
} ;
var mapDispatchToProps = {
onHandleShowPageUri : _show . onHandleShowPageUri
} ;
exports . default = ( 0 , _reactRedux . connect ) ( mapStateToProps , mapDispatchToProps ) ( _view2 . default ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 108 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _react = _ _webpack _require _ _ ( 0 ) ;
var _react2 = _interopRequireDefault ( _react ) ;
var _ErrorPage = _ _webpack _require _ _ ( 27 ) ;
var _ErrorPage2 = _interopRequireDefault ( _ErrorPage ) ;
2018-03-22 01:35:51 +01:00
var _ShowAssetLite = _ _webpack _require _ _ ( 109 ) ;
2018-03-21 01:08:30 +01:00
var _ShowAssetLite2 = _interopRequireDefault ( _ShowAssetLite ) ;
2018-03-22 01:35:51 +01:00
var _ShowAssetDetails = _ _webpack _require _ _ ( 112 ) ;
2018-03-21 01:08:30 +01:00
var _ShowAssetDetails2 = _interopRequireDefault ( _ShowAssetDetails ) ;
2018-03-22 01:35:51 +01:00
var _ShowChannel = _ _webpack _require _ _ ( 118 ) ;
2018-03-21 01:08:30 +01:00
var _ShowChannel2 = _interopRequireDefault ( _ShowChannel ) ;
2018-03-22 01:35:51 +01:00
var _show _request _types = _ _webpack _require _ _ ( 51 ) ;
2018-03-21 01:08:30 +01:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var ShowPage = function ( _React$Component ) {
_inherits ( ShowPage , _React$Component ) ;
function ShowPage ( ) {
_classCallCheck ( this , ShowPage ) ;
return _possibleConstructorReturn ( this , ( ShowPage . _ _proto _ _ || Object . getPrototypeOf ( ShowPage ) ) . apply ( this , arguments ) ) ;
}
_createClass ( ShowPage , [ {
key : 'componentDidMount' ,
value : function componentDidMount ( ) {
this . props . onHandleShowPageUri ( this . props . match . params ) ;
}
} , {
key : 'componentWillReceiveProps' ,
value : function componentWillReceiveProps ( nextProps ) {
if ( nextProps . match . params !== this . props . match . params ) {
this . props . onHandleShowPageUri ( nextProps . match . params ) ;
}
}
} , {
key : 'render' ,
value : function render ( ) {
var _props = this . props ,
error = _props . error ,
requestType = _props . requestType ;
if ( error ) {
return _react2 . default . createElement ( _ErrorPage2 . default , { error : error } ) ;
}
switch ( requestType ) {
case _show _request _types . CHANNEL :
return _react2 . default . createElement ( _ShowChannel2 . default , null ) ;
case _show _request _types . ASSET _LITE :
return _react2 . default . createElement ( _ShowAssetLite2 . default , null ) ;
case _show _request _types . ASSET _DETAILS :
return _react2 . default . createElement ( _ShowAssetDetails2 . default , null ) ;
default :
return _react2 . default . createElement (
'p' ,
null ,
'loading...'
) ;
}
}
} ] ) ;
return ShowPage ;
} ( _react2 . default . Component ) ;
;
exports . default = ShowPage ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 109 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _reactRedux = _ _webpack _require _ _ ( 2 ) ;
2018-03-22 01:35:51 +01:00
var _view = _ _webpack _require _ _ ( 110 ) ;
2018-03-21 01:08:30 +01:00
var _view2 = _interopRequireDefault ( _view ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var mapStateToProps = function mapStateToProps ( _ref ) {
var show = _ref . show ;
// select request info
var requestId = show . request . id ;
// select asset info
var asset = void 0 ;
var request = show . requestList [ requestId ] || null ;
var assetList = show . assetList ;
if ( request && assetList ) {
var assetKey = request . key ; // note: just store this in the request
asset = assetList [ assetKey ] || null ;
} ;
// return props
return {
asset : asset
} ;
} ;
exports . default = ( 0 , _reactRedux . connect ) ( mapStateToProps , null ) ( _view2 . default ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 110 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _react = _ _webpack _require _ _ ( 0 ) ;
var _react2 = _interopRequireDefault ( _react ) ;
2018-03-22 01:35:51 +01:00
var _SEO = _ _webpack _require _ _ ( 10 ) ;
2018-03-21 01:08:30 +01:00
var _SEO2 = _interopRequireDefault ( _SEO ) ;
var _reactRouterDom = _ _webpack _require _ _ ( 4 ) ;
2018-03-22 01:35:51 +01:00
var _AssetDisplay = _ _webpack _require _ _ ( 52 ) ;
2018-03-21 01:08:30 +01:00
var _AssetDisplay2 = _interopRequireDefault ( _AssetDisplay ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var ShowLite = function ( _React$Component ) {
_inherits ( ShowLite , _React$Component ) ;
function ShowLite ( ) {
_classCallCheck ( this , ShowLite ) ;
return _possibleConstructorReturn ( this , ( ShowLite . _ _proto _ _ || Object . getPrototypeOf ( ShowLite ) ) . apply ( this , arguments ) ) ;
}
_createClass ( ShowLite , [ {
key : 'render' ,
value : function render ( ) {
var asset = this . props . asset ;
if ( asset ) {
var _asset$claimData = asset . claimData ,
name = _asset$claimData . name ,
claimId = _asset$claimData . claimId ;
return _react2 . default . createElement (
'div' ,
{ className : 'row row--tall flex-container--column flex-container--center-center show-lite-container' } ,
_react2 . default . createElement ( _SEO2 . default , { pageTitle : name , asset : asset } ) ,
_react2 . default . createElement ( _AssetDisplay2 . default , null ) ,
_react2 . default . createElement (
_reactRouterDom . Link ,
{ id : 'asset-boilerpate' , className : 'link--primary fine-print' , to : '/' + claimId + '/' + name } ,
'hosted via Spee.ch'
)
) ;
}
return _react2 . default . createElement (
'div' ,
{ className : 'row row--tall row--padded flex-container--column flex-container--center-center' } ,
_react2 . default . createElement (
'p' ,
null ,
'loading asset data...'
)
) ;
}
} ] ) ;
return ShowLite ;
} ( _react2 . default . Component ) ;
;
exports . default = ShowLite ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 111 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _react = _ _webpack _require _ _ ( 0 ) ;
var _react2 = _interopRequireDefault ( _react ) ;
2018-03-22 01:35:51 +01:00
var _ProgressBar = _ _webpack _require _ _ ( 50 ) ;
2018-03-21 01:08:30 +01:00
var _ProgressBar2 = _interopRequireDefault ( _ProgressBar ) ;
2018-03-22 01:35:51 +01:00
var _asset _display _states = _ _webpack _require _ _ ( 43 ) ;
2018-03-21 01:08:30 +01:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var AssetDisplay = function ( _React$Component ) {
_inherits ( AssetDisplay , _React$Component ) ;
function AssetDisplay ( ) {
_classCallCheck ( this , AssetDisplay ) ;
return _possibleConstructorReturn ( this , ( AssetDisplay . _ _proto _ _ || Object . getPrototypeOf ( AssetDisplay ) ) . apply ( this , arguments ) ) ;
}
_createClass ( AssetDisplay , [ {
key : 'componentDidMount' ,
value : function componentDidMount ( ) {
var _props$asset$claimDat = this . props . asset . claimData ,
name = _props$asset$claimDat . name ,
claimId = _props$asset$claimDat . claimId ;
this . props . onFileRequest ( name , claimId ) ;
}
} , {
key : 'render' ,
value : function render ( ) {
var _props = this . props ,
status = _props . status ,
error = _props . error ,
_props$asset$claimDat2 = _props . asset . claimData ,
name = _props$asset$claimDat2 . name ,
claimId = _props$asset$claimDat2 . claimId ,
contentType = _props$asset$claimDat2 . contentType ,
fileExt = _props$asset$claimDat2 . fileExt ,
thumbnail = _props$asset$claimDat2 . thumbnail ;
return _react2 . default . createElement (
'div' ,
{ id : 'asset-display-component' } ,
status === _asset _display _states . LOCAL _CHECK && _react2 . default . createElement (
'div' ,
null ,
_react2 . default . createElement (
'p' ,
null ,
'Checking to see if Spee.ch has your asset locally...'
)
) ,
status === _asset _display _states . UNAVAILABLE && _react2 . default . createElement (
'div' ,
null ,
_react2 . default . createElement (
'p' ,
null ,
'Sit tight, we\'re searching the LBRY blockchain for your asset!'
) ,
_react2 . default . createElement ( _ProgressBar2 . default , { size : 12 } ) ,
_react2 . default . createElement (
'p' ,
null ,
'Curious what magic is happening here? ' ,
_react2 . default . createElement (
'a' ,
{ className : 'link--primary' , target : 'blank' , href : 'https://lbry.io/faq/what-is-lbry' } ,
'Learn more.'
)
)
) ,
status === _asset _display _states . ERROR && _react2 . default . createElement (
'div' ,
null ,
_react2 . default . createElement (
'p' ,
null ,
'Unfortunately, we couldn\'t download your asset from LBRY. You can help us out by sharing the below error message in the ' ,
_react2 . default . createElement (
'a' ,
{ className : 'link--primary' , href : 'https://discord.gg/YjYbwhS' , target : '_blank' } ,
'LBRY discord'
) ,
'.'
) ,
_react2 . default . createElement (
'i' ,
null ,
_react2 . default . createElement (
'p' ,
{ id : 'error-message' } ,
error
)
)
) ,
status === _asset _display _states . AVAILABLE && function ( ) {
switch ( contentType ) {
case 'image/jpeg' :
case 'image/jpg' :
case 'image/png' :
return _react2 . default . createElement ( 'img' , {
className : 'asset' ,
src : '/' + claimId + '/' + name + '.' + fileExt ,
alt : name } ) ;
case 'image/gif' :
return _react2 . default . createElement ( 'img' , {
className : 'asset' ,
src : '/' + claimId + '/' + name + '.' + fileExt ,
alt : name
} ) ;
case 'video/mp4' :
return _react2 . default . createElement (
'video' ,
{ className : 'asset video' , controls : true , poster : thumbnail } ,
_react2 . default . createElement ( 'source' , {
src : '/' + claimId + '/' + name + '.' + fileExt
} ) ,
_react2 . default . createElement (
'p' ,
null ,
'Your browser does not support the ' ,
_react2 . default . createElement (
'code' ,
null ,
'video'
) ,
' element.'
)
) ;
default :
return _react2 . default . createElement (
'p' ,
null ,
'Unsupported file type'
) ;
}
} ( )
) ;
}
} ] ) ;
return AssetDisplay ;
} ( _react2 . default . Component ) ;
;
exports . default = AssetDisplay ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 112 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _reactRedux = _ _webpack _require _ _ ( 2 ) ;
2018-03-22 01:35:51 +01:00
var _view = _ _webpack _require _ _ ( 113 ) ;
2018-03-21 01:08:30 +01:00
var _view2 = _interopRequireDefault ( _view ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var mapStateToProps = function mapStateToProps ( _ref ) {
var show = _ref . show ;
// select request info
var requestId = show . request . id ;
// select asset info
var asset = void 0 ;
var request = show . requestList [ requestId ] || null ;
var assetList = show . assetList ;
if ( request && assetList ) {
var assetKey = request . key ; // note: just store this in the request
asset = assetList [ assetKey ] || null ;
} ;
// return props
return {
asset : asset
} ;
} ;
exports . default = ( 0 , _reactRedux . connect ) ( mapStateToProps , null ) ( _view2 . default ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 113 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _react = _ _webpack _require _ _ ( 0 ) ;
var _react2 = _interopRequireDefault ( _react ) ;
2018-03-22 01:35:51 +01:00
var _SEO = _ _webpack _require _ _ ( 10 ) ;
2018-03-21 01:08:30 +01:00
var _SEO2 = _interopRequireDefault ( _SEO ) ;
var _NavBar = _ _webpack _require _ _ ( 8 ) ;
var _NavBar2 = _interopRequireDefault ( _NavBar ) ;
var _ErrorPage = _ _webpack _require _ _ ( 27 ) ;
var _ErrorPage2 = _interopRequireDefault ( _ErrorPage ) ;
2018-03-22 01:35:51 +01:00
var _AssetTitle = _ _webpack _require _ _ ( 114 ) ;
2018-03-21 01:08:30 +01:00
var _AssetTitle2 = _interopRequireDefault ( _AssetTitle ) ;
2018-03-22 01:35:51 +01:00
var _AssetDisplay = _ _webpack _require _ _ ( 52 ) ;
2018-03-21 01:08:30 +01:00
var _AssetDisplay2 = _interopRequireDefault ( _AssetDisplay ) ;
2018-03-22 01:35:51 +01:00
var _AssetInfo = _ _webpack _require _ _ ( 116 ) ;
2018-03-21 01:08:30 +01:00
var _AssetInfo2 = _interopRequireDefault ( _AssetInfo ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var ShowAssetDetails = function ( _React$Component ) {
_inherits ( ShowAssetDetails , _React$Component ) ;
function ShowAssetDetails ( ) {
_classCallCheck ( this , ShowAssetDetails ) ;
return _possibleConstructorReturn ( this , ( ShowAssetDetails . _ _proto _ _ || Object . getPrototypeOf ( ShowAssetDetails ) ) . apply ( this , arguments ) ) ;
}
_createClass ( ShowAssetDetails , [ {
key : 'render' ,
value : function render ( ) {
var asset = this . props . asset ;
if ( asset ) {
var name = asset . claimData . name ;
return _react2 . default . createElement (
'div' ,
null ,
_react2 . default . createElement ( _SEO2 . default , { pageTitle : name + ' - details' , asset : asset } ) ,
_react2 . default . createElement ( _NavBar2 . default , null ) ,
_react2 . default . createElement (
'div' ,
{ className : 'row row--tall row--padded' } ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--10' } ,
_react2 . default . createElement ( _AssetTitle2 . default , null )
) ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--5 column--sml-10 align-content-top' } ,
_react2 . default . createElement (
'div' ,
{ className : 'row row--padded show-details-container' } ,
_react2 . default . createElement ( _AssetDisplay2 . default , null )
)
) ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--5 column--sml-10 align-content-top' } ,
_react2 . default . createElement (
'div' ,
{ className : 'row row--padded' } ,
_react2 . default . createElement ( _AssetInfo2 . default , null )
)
)
)
) ;
} ;
return _react2 . default . createElement ( _ErrorPage2 . default , { error : 'loading asset data...' } ) ;
}
} ] ) ;
return ShowAssetDetails ;
} ( _react2 . default . Component ) ;
;
exports . default = ShowAssetDetails ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 114 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _reactRedux = _ _webpack _require _ _ ( 2 ) ;
2018-03-22 01:35:51 +01:00
var _view = _ _webpack _require _ _ ( 115 ) ;
2018-03-21 01:08:30 +01:00
var _view2 = _interopRequireDefault ( _view ) ;
2018-03-22 01:35:51 +01:00
var _show = _ _webpack _require _ _ ( 11 ) ;
2018-03-21 01:08:30 +01:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var mapStateToProps = function mapStateToProps ( _ref ) {
var show = _ref . show ;
var _selectAsset = ( 0 , _show . selectAsset ) ( show ) ,
title = _selectAsset . claimData . title ;
return {
title : title
} ;
} ;
exports . default = ( 0 , _reactRedux . connect ) ( mapStateToProps , null ) ( _view2 . default ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 115 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _react = _ _webpack _require _ _ ( 0 ) ;
var _react2 = _interopRequireDefault ( _react ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var AssetTitle = function AssetTitle ( _ref ) {
var title = _ref . title ;
return _react2 . default . createElement (
'div' ,
null ,
_react2 . default . createElement (
'span' ,
{ className : 'text--large' } ,
title
)
) ;
} ;
exports . default = AssetTitle ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 116 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _reactRedux = _ _webpack _require _ _ ( 2 ) ;
2018-03-22 01:35:51 +01:00
var _view = _ _webpack _require _ _ ( 117 ) ;
2018-03-21 01:08:30 +01:00
var _view2 = _interopRequireDefault ( _view ) ;
2018-03-22 01:35:51 +01:00
var _show = _ _webpack _require _ _ ( 11 ) ;
2018-03-21 01:08:30 +01:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var mapStateToProps = function mapStateToProps ( _ref ) {
var show = _ref . show ;
// select asset
var asset = ( 0 , _show . selectAsset ) ( show ) ;
// return props
return {
asset : asset
} ;
} ;
exports . default = ( 0 , _reactRedux . connect ) ( mapStateToProps , null ) ( _view2 . default ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 117 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _react = _ _webpack _require _ _ ( 0 ) ;
var _react2 = _interopRequireDefault ( _react ) ;
var _reactRouterDom = _ _webpack _require _ _ ( 4 ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var AssetInfo = function ( _React$Component ) {
_inherits ( AssetInfo , _React$Component ) ;
function AssetInfo ( props ) {
_classCallCheck ( this , AssetInfo ) ;
var _this = _possibleConstructorReturn ( this , ( AssetInfo . _ _proto _ _ || Object . getPrototypeOf ( AssetInfo ) ) . call ( this , props ) ) ;
_this . copyToClipboard = _this . copyToClipboard . bind ( _this ) ;
return _this ;
}
_createClass ( AssetInfo , [ {
key : 'copyToClipboard' ,
value : function copyToClipboard ( event ) {
var elementToCopy = event . target . dataset . elementtocopy ;
var element = document . getElementById ( elementToCopy ) ;
element . select ( ) ;
try {
document . execCommand ( 'copy' ) ;
} catch ( err ) {
this . setState ( { error : 'Oops, unable to copy' } ) ;
}
}
} , {
key : 'render' ,
value : function render ( ) {
var _props$asset = this . props . asset ,
shortId = _props$asset . shortId ,
_props$asset$claimDat = _props$asset . claimData ,
channelName = _props$asset$claimDat . channelName ,
certificateId = _props$asset$claimDat . certificateId ,
description = _props$asset$claimDat . description ,
name = _props$asset$claimDat . name ,
claimId = _props$asset$claimDat . claimId ,
fileExt = _props$asset$claimDat . fileExt ,
contentType = _props$asset$claimDat . contentType ,
thumbnail = _props$asset$claimDat . thumbnail ,
host = _props$asset$claimDat . host ;
return _react2 . default . createElement (
'div' ,
null ,
channelName && _react2 . default . createElement (
'div' ,
{ className : 'row row--padded row--wide row--no-top' } ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--2 column--med-10' } ,
_react2 . default . createElement (
'span' ,
{ className : 'text' } ,
'Channel:'
)
) ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--8 column--med-10' } ,
_react2 . default . createElement (
'span' ,
{ className : 'text' } ,
_react2 . default . createElement (
_reactRouterDom . Link ,
{ to : '/' + channelName + ':' + certificateId } ,
channelName
)
)
)
) ,
description && _react2 . default . createElement (
'div' ,
{ className : 'row row--padded row--wide row--no-top' } ,
_react2 . default . createElement (
'span' ,
{ className : 'text' } ,
description
)
) ,
_react2 . default . createElement (
'div' ,
{ id : 'show-share-buttons' } ,
_react2 . default . createElement (
'div' ,
{ className : 'row row--padded row--wide row--no-top' } ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--2 column--med-10' } ,
_react2 . default . createElement (
'span' ,
{ className : 'text' } ,
'Share:'
)
) ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--8 column--med-10' } ,
_react2 . default . createElement (
'div' ,
{
className : 'row row--short row--wide flex-container--row flex-container--space-between-bottom flex-container--wrap' } ,
_react2 . default . createElement (
'a' ,
{ className : 'link--primary' , target : '_blank' , href : 'https://twitter.com/intent/tweet?text=' + host + '/' + shortId + '/' + name } ,
'twitter'
) ,
_react2 . default . createElement (
'a' ,
{ className : 'link--primary' , target : '_blank' , href : 'https://www.facebook.com/sharer/sharer.php?u=' + host + '/' + shortId + '/' + name } ,
'facebook'
) ,
_react2 . default . createElement (
'a' ,
{ className : 'link--primary' , target : '_blank' , href : 'http://tumblr.com/widgets/share/tool?canonicalUrl=' + host + '/' + shortId + '/' + name } ,
'tumblr'
) ,
_react2 . default . createElement (
'a' ,
{ className : 'link--primary' , target : '_blank' , href : 'https://www.reddit.com/submit?url=' + host + '/' + shortId + '/' + name + '&title=' + name } ,
'reddit'
)
)
)
)
) ,
_react2 . default . createElement (
'div' ,
{ className : 'row row--padded row--wide row--no-top' } ,
_react2 . default . createElement (
'div' ,
{ id : 'show-short-link' } ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--2 column--med-10' } ,
_react2 . default . createElement (
'span' ,
{ className : 'text' } ,
'Link:'
)
) ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--8 column--med-10' } ,
_react2 . default . createElement (
'div' ,
{ className : 'row row--short row--wide' } ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--7' } ,
_react2 . default . createElement (
'div' ,
{ className : 'input-error' , id : 'input-error-copy-short-link' , hidden : 'true' } ,
'error here'
) ,
_react2 . default . createElement ( 'input' , { type : 'text' , id : 'short-link' , className : 'input-disabled input-text--full-width' , readOnly : true ,
spellCheck : 'false' ,
value : host + '/' + shortId + '/' + name + '.' + fileExt ,
onClick : this . select } )
) ,
_react2 . default . createElement ( 'div' , { className : 'column column--1' } ) ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--2' } ,
_react2 . default . createElement (
'button' ,
{ className : 'button--primary button--wide' , 'data-elementtocopy' : 'short-link' ,
onClick : this . copyToClipboard } ,
'copy'
)
)
)
)
) ,
_react2 . default . createElement (
'div' ,
{ id : 'show-embed-code' } ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--2 column--med-10' } ,
_react2 . default . createElement (
'span' ,
{ className : 'text' } ,
'Embed:'
)
) ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--8 column--med-10' } ,
_react2 . default . createElement (
'div' ,
{ className : 'row row--short row--wide' } ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--7' } ,
_react2 . default . createElement (
'div' ,
{ className : 'input-error' , id : 'input-error-copy-embed-text' , hidden : 'true' } ,
'error here'
) ,
contentType === 'video/mp4' ? _react2 . default . createElement ( 'input' , { type : 'text' , id : 'embed-text' , className : 'input-disabled input-text--full-width' , readOnly : true ,
onClick : this . select , spellCheck : 'false' ,
value : '<video width="100%" controls poster="' + thumbnail + '" src="' + host + '/' + claimId + '/' + name + '.' + fileExt + '"/></video>' } ) : _react2 . default . createElement ( 'input' , { type : 'text' , id : 'embed-text' , className : 'input-disabled input-text--full-width' , readOnly : true ,
onClick : this . select , spellCheck : 'false' ,
value : '<img src="' + host + '/' + claimId + '/' + name + '.' + fileExt + '"/>'
} )
) ,
_react2 . default . createElement ( 'div' , { className : 'column column--1' } ) ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--2' } ,
_react2 . default . createElement (
'button' ,
{ className : 'button--primary button--wide' , 'data-elementtocopy' : 'embed-text' ,
onClick : this . copyToClipboard } ,
'copy'
)
)
)
)
)
) ,
_react2 . default . createElement (
'div' ,
{ className : 'flex-container--row flex-container--space-between-bottom' } ,
_react2 . default . createElement (
_reactRouterDom . Link ,
{ className : 'link--primary' , to : '/' + shortId + '/' + name + '.' + fileExt } ,
_react2 . default . createElement (
'span' ,
{
className : 'text' } ,
'Direct Link'
)
) ,
_react2 . default . createElement (
'a' ,
{ className : 'link--primary' , href : host + '/' + claimId + '/' + name + '.' + fileExt , download : name } ,
'Download'
) ,
_react2 . default . createElement (
'a' ,
{ className : 'link--primary' , target : '_blank' , href : 'https://lbry.io/dmca' } ,
'Report'
)
)
) ;
}
} ] ) ;
return AssetInfo ;
} ( _react2 . default . Component ) ;
;
exports . default = AssetInfo ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 118 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _reactRedux = _ _webpack _require _ _ ( 2 ) ;
2018-03-22 01:35:51 +01:00
var _view = _ _webpack _require _ _ ( 119 ) ;
2018-03-21 01:08:30 +01:00
var _view2 = _interopRequireDefault ( _view ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var mapStateToProps = function mapStateToProps ( _ref ) {
var show = _ref . show ;
// select request info
var requestId = show . request . id ;
// select request
var previousRequest = show . requestList [ requestId ] || null ;
// select channel
var channel = void 0 ;
if ( previousRequest ) {
var channelKey = previousRequest . key ;
channel = show . channelList [ channelKey ] || null ;
}
return {
channel : channel
} ;
} ;
exports . default = ( 0 , _reactRedux . connect ) ( mapStateToProps , null ) ( _view2 . default ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 119 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _react = _ _webpack _require _ _ ( 0 ) ;
var _react2 = _interopRequireDefault ( _react ) ;
2018-03-22 01:35:51 +01:00
var _SEO = _ _webpack _require _ _ ( 10 ) ;
2018-03-21 01:08:30 +01:00
var _SEO2 = _interopRequireDefault ( _SEO ) ;
var _ErrorPage = _ _webpack _require _ _ ( 27 ) ;
var _ErrorPage2 = _interopRequireDefault ( _ErrorPage ) ;
var _NavBar = _ _webpack _require _ _ ( 8 ) ;
var _NavBar2 = _interopRequireDefault ( _NavBar ) ;
2018-03-22 01:35:51 +01:00
var _ChannelClaimsDisplay = _ _webpack _require _ _ ( 120 ) ;
2018-03-21 01:08:30 +01:00
var _ChannelClaimsDisplay2 = _interopRequireDefault ( _ChannelClaimsDisplay ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var ShowChannel = function ( _React$Component ) {
_inherits ( ShowChannel , _React$Component ) ;
function ShowChannel ( ) {
_classCallCheck ( this , ShowChannel ) ;
return _possibleConstructorReturn ( this , ( ShowChannel . _ _proto _ _ || Object . getPrototypeOf ( ShowChannel ) ) . apply ( this , arguments ) ) ;
}
_createClass ( ShowChannel , [ {
key : 'render' ,
value : function render ( ) {
var channel = this . props . channel ;
if ( channel ) {
var name = channel . name ,
longId = channel . longId ,
shortId = channel . shortId ;
return _react2 . default . createElement (
'div' ,
null ,
_react2 . default . createElement ( _SEO2 . default , { pageTitle : name , channel : channel } ) ,
_react2 . default . createElement ( _NavBar2 . default , null ) ,
_react2 . default . createElement (
'div' ,
{ className : 'row row--tall row--padded' } ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--10' } ,
_react2 . default . createElement (
'h2' ,
null ,
'channel name: ' ,
name
) ,
_react2 . default . createElement (
'p' ,
{ className : 'fine-print' } ,
'full channel id: ' ,
longId
) ,
_react2 . default . createElement (
'p' ,
{ className : 'fine-print' } ,
'short channel id: ' ,
shortId
)
) ,
_react2 . default . createElement (
'div' ,
{ className : 'column column--10' } ,
_react2 . default . createElement ( _ChannelClaimsDisplay2 . default , null )
)
)
) ;
} ;
return _react2 . default . createElement ( _ErrorPage2 . default , { error : 'loading channel data...' } ) ;
}
} ] ) ;
return ShowChannel ;
} ( _react2 . default . Component ) ;
;
exports . default = ShowChannel ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 120 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _reactRedux = _ _webpack _require _ _ ( 2 ) ;
var _show = _ _webpack _require _ _ ( 7 ) ;
2018-03-22 01:35:51 +01:00
var _view = _ _webpack _require _ _ ( 121 ) ;
2018-03-21 01:08:30 +01:00
var _view2 = _interopRequireDefault ( _view ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var mapStateToProps = function mapStateToProps ( _ref ) {
var show = _ref . show ;
// select channel key
var request = show . requestList [ show . request . id ] ;
var channelKey = request . key ;
// select channel claims
var channel = show . channelList [ channelKey ] || null ;
// return props
return {
channelKey : channelKey ,
channel : channel
} ;
} ;
var mapDispatchToProps = {
onUpdateChannelClaims : _show . onUpdateChannelClaims
} ;
exports . default = ( 0 , _reactRedux . connect ) ( mapStateToProps , mapDispatchToProps ) ( _view2 . default ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 121 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _react = _ _webpack _require _ _ ( 0 ) ;
var _react2 = _interopRequireDefault ( _react ) ;
2018-03-22 01:35:51 +01:00
var _AssetPreview = _ _webpack _require _ _ ( 122 ) ;
2018-03-21 01:08:30 +01:00
var _AssetPreview2 = _interopRequireDefault ( _AssetPreview ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var ChannelClaimsDisplay = function ( _React$Component ) {
_inherits ( ChannelClaimsDisplay , _React$Component ) ;
function ChannelClaimsDisplay ( props ) {
_classCallCheck ( this , ChannelClaimsDisplay ) ;
var _this = _possibleConstructorReturn ( this , ( ChannelClaimsDisplay . _ _proto _ _ || Object . getPrototypeOf ( ChannelClaimsDisplay ) ) . call ( this , props ) ) ;
_this . showNextResultsPage = _this . showNextResultsPage . bind ( _this ) ;
_this . showPreviousResultsPage = _this . showPreviousResultsPage . bind ( _this ) ;
return _this ;
}
_createClass ( ChannelClaimsDisplay , [ {
key : 'showPreviousResultsPage' ,
value : function showPreviousResultsPage ( ) {
var currentPage = this . props . channel . claimsData . currentPage ;
var previousPage = parseInt ( currentPage ) - 1 ;
this . showNewPage ( previousPage ) ;
}
} , {
key : 'showNextResultsPage' ,
value : function showNextResultsPage ( ) {
var currentPage = this . props . channel . claimsData . currentPage ;
var nextPage = parseInt ( currentPage ) + 1 ;
this . showNewPage ( nextPage ) ;
}
} , {
key : 'showNewPage' ,
value : function showNewPage ( page ) {
var _props = this . props ,
channelKey = _props . channelKey ,
_props$channel = _props . channel ,
name = _props$channel . name ,
longId = _props$channel . longId ;
this . props . onUpdateChannelClaims ( channelKey , name , longId , page ) ;
}
} , {
key : 'render' ,
value : function render ( ) {
var _props$channel$claims = this . props . channel . claimsData ,
claims = _props$channel$claims . claims ,
currentPage = _props$channel$claims . currentPage ,
totalPages = _props$channel$claims . totalPages ;
return _react2 . default . createElement (
'div' ,
{ className : 'row row--tall' } ,
claims . length > 0 ? _react2 . default . createElement (
'div' ,
null ,
claims . map ( function ( claim , index ) {
return _react2 . default . createElement ( _AssetPreview2 . default , {
claimData : claim ,
key : claim . name + '-' + index
} ) ;
} ) ,
_react2 . default . createElement (
'div' ,
null ,
currentPage > 1 && _react2 . default . createElement (
'button' ,
{ className : 'button--secondary' , onClick : this . showPreviousResultsPage } ,
'Previous Page'
) ,
currentPage < totalPages && _react2 . default . createElement (
'button' ,
{ className : 'button--secondary' , onClick : this . showNextResultsPage } ,
'Next Page'
)
)
) : _react2 . default . createElement (
'p' ,
null ,
'There are no claims in this channel'
)
) ;
}
} ] ) ;
2018-03-22 01:35:51 +01:00
return ChannelClaimsDisplay ;
} ( _react2 . default . Component ) ;
;
exports . default = ChannelClaimsDisplay ;
/***/ } ) ,
/* 122 */
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _reactRedux = _ _webpack _require _ _ ( 2 ) ;
var _view = _ _webpack _require _ _ ( 123 ) ;
2018-03-21 01:08:30 +01:00
2018-03-22 01:35:51 +01:00
var _view2 = _interopRequireDefault ( _view ) ;
2018-03-21 01:08:30 +01:00
2018-03-22 01:35:51 +01:00
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var mapStateToProps = function mapStateToProps ( _ref ) {
var defaultThumbnail = _ref . site . defaults . defaultThumbnail ;
return {
defaultThumbnail : defaultThumbnail
} ;
} ;
exports . default = ( 0 , _reactRedux . connect ) ( mapStateToProps , null ) ( _view2 . default ) ;
2018-03-21 01:08:30 +01:00
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 123 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _react = _ _webpack _require _ _ ( 0 ) ;
var _react2 = _interopRequireDefault ( _react ) ;
var _reactRouterDom = _ _webpack _require _ _ ( 4 ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var AssetPreview = function AssetPreview ( _ref ) {
var defaultThumbnail = _ref . defaultThumbnail ,
_ref$claimData = _ref . claimData ,
name = _ref$claimData . name ,
claimId = _ref$claimData . claimId ,
fileExt = _ref$claimData . fileExt ,
contentType = _ref$claimData . contentType ,
thumbnail = _ref$claimData . thumbnail ;
var directSourceLink = claimId + '/' + name + '.' + fileExt ;
var showUrlLink = '/' + claimId + '/' + name ;
return _react2 . default . createElement (
'div' ,
{ className : 'asset-holder' } ,
_react2 . default . createElement (
_reactRouterDom . Link ,
{ to : showUrlLink } ,
function ( ) {
switch ( contentType ) {
case 'image/jpeg' :
case 'image/jpg' :
case 'image/png' :
case 'image/gif' :
return _react2 . default . createElement ( 'img' , {
className : 'asset-preview' ,
src : directSourceLink ,
alt : name
} ) ;
case 'video/mp4' :
return _react2 . default . createElement ( 'img' , {
className : 'asset-preview video' ,
src : thumbnail || defaultThumbnail ,
alt : name
} ) ;
default :
return _react2 . default . createElement (
'p' ,
null ,
'unsupported file type'
) ;
}
} ( )
)
) ;
} ;
exports . default = AssetPreview ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 124 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _reactRedux = _ _webpack _require _ _ ( 2 ) ;
2018-03-22 01:35:51 +01:00
var _view = _ _webpack _require _ _ ( 125 ) ;
2018-03-21 01:08:30 +01:00
var _view2 = _interopRequireDefault ( _view ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var mapStateToProps = function mapStateToProps ( _ref ) {
var _ref$site = _ref . site ,
host = _ref$site . host ,
title = _ref$site . title ;
return {
host : host ,
title : title
} ;
} ;
exports . default = ( 0 , _reactRedux . connect ) ( mapStateToProps , null ) ( _view2 . default ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 125 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
var _createClass = function ( ) { function defineProperties ( target , props ) { for ( var i = 0 ; i < props . length ; i ++ ) { var descriptor = props [ i ] ; descriptor . enumerable = descriptor . enumerable || false ; descriptor . configurable = true ; if ( "value" in descriptor ) descriptor . writable = true ; Object . defineProperty ( target , descriptor . key , descriptor ) ; } } return function ( Constructor , protoProps , staticProps ) { if ( protoProps ) defineProperties ( Constructor . prototype , protoProps ) ; if ( staticProps ) defineProperties ( Constructor , staticProps ) ; return Constructor ; } ; } ( ) ;
var _react = _ _webpack _require _ _ ( 0 ) ;
var _react2 = _interopRequireDefault ( _react ) ;
var _NavBar = _ _webpack _require _ _ ( 8 ) ;
var _NavBar2 = _interopRequireDefault ( _NavBar ) ;
var _reactHelmet = _ _webpack _require _ _ ( 13 ) ;
var _reactHelmet2 = _interopRequireDefault ( _reactHelmet ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function _classCallCheck ( instance , Constructor ) { if ( ! ( instance instanceof Constructor ) ) { throw new TypeError ( "Cannot call a class as a function" ) ; } }
function _possibleConstructorReturn ( self , call ) { if ( ! self ) { throw new ReferenceError ( "this hasn't been initialised - super() hasn't been called" ) ; } return call && ( typeof call === "object" || typeof call === "function" ) ? call : self ; }
function _inherits ( subClass , superClass ) { if ( typeof superClass !== "function" && superClass !== null ) { throw new TypeError ( "Super expression must either be null or a function, not " + typeof superClass ) ; } subClass . prototype = Object . create ( superClass && superClass . prototype , { constructor : { value : subClass , enumerable : false , writable : true , configurable : true } } ) ; if ( superClass ) Object . setPrototypeOf ? Object . setPrototypeOf ( subClass , superClass ) : subClass . _ _proto _ _ = superClass ; }
var FourOhForPage = function ( _React$Component ) {
_inherits ( FourOhForPage , _React$Component ) ;
function FourOhForPage ( ) {
_classCallCheck ( this , FourOhForPage ) ;
return _possibleConstructorReturn ( this , ( FourOhForPage . _ _proto _ _ || Object . getPrototypeOf ( FourOhForPage ) ) . apply ( this , arguments ) ) ;
}
_createClass ( FourOhForPage , [ {
key : 'render' ,
value : function render ( ) {
var _props = this . props ,
title = _props . title ,
host = _props . host ;
return _react2 . default . createElement (
'div' ,
null ,
_react2 . default . createElement (
_reactHelmet2 . default ,
null ,
_react2 . default . createElement (
'title' ,
null ,
title ,
' - 404'
) ,
_react2 . default . createElement ( 'link' , { rel : 'canonical' , href : host + '/404' } )
) ,
_react2 . default . createElement ( _NavBar2 . default , null ) ,
_react2 . default . createElement (
'div' ,
{ className : 'row row--padded' } ,
_react2 . default . createElement (
'h2' ,
null ,
'404'
) ,
_react2 . default . createElement (
'p' ,
null ,
'That page does not exist'
)
)
) ;
}
} ] ) ;
return FourOhForPage ;
} ( _react2 . default . Component ) ;
;
exports . default = FourOhForPage ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 126 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var _slicedToArray = function ( ) { function sliceIterator ( arr , i ) { var _arr = [ ] ; var _n = true ; var _d = false ; var _e = undefined ; try { for ( var _i = arr [ Symbol . iterator ] ( ) , _s ; ! ( _n = ( _s = _i . next ( ) ) . done ) ; _n = true ) { _arr . push ( _s . value ) ; if ( i && _arr . length === i ) break ; } } catch ( err ) { _d = true ; _e = err ; } finally { try { if ( ! _n && _i [ "return" ] ) _i [ "return" ] ( ) ; } finally { if ( _d ) throw _e ; } } return _arr ; } return function ( arr , i ) { if ( Array . isArray ( arr ) ) { return arr ; } else if ( Symbol . iterator in Object ( arr ) ) { return sliceIterator ( arr , i ) ; } else { throw new TypeError ( "Invalid attempt to destructure non-iterable instance" ) ; } } ; } ( ) ;
2018-03-22 01:35:51 +01:00
var _require = _ _webpack _require _ _ ( 17 ) ,
2018-03-21 01:08:30 +01:00
sendGAServeEvent = _require . sendGAServeEvent ;
2018-03-22 01:35:51 +01:00
var _require2 = _ _webpack _require _ _ ( 127 ) ,
2018-03-21 01:08:30 +01:00
determineResponseType = _require2 . determineResponseType ,
flipClaimNameAndIdForBackwardsCompatibility = _require2 . flipClaimNameAndIdForBackwardsCompatibility ,
logRequestData = _require2 . logRequestData ,
getClaimIdAndServeAsset = _require2 . getClaimIdAndServeAsset ;
2018-03-22 01:35:51 +01:00
var lbryUri = _ _webpack _require _ _ ( 128 ) ;
var handleShowRender = _ _webpack _require _ _ ( 129 ) ;
2018-03-21 01:08:30 +01:00
var SERVE = 'SERVE' ;
module . exports = function ( app ) {
// route to serve a specific asset using the channel or claim id
app . get ( '/:identifier/:claim' , function ( req , res ) {
var headers = req . headers ,
ip = req . ip ,
originalUrl = req . originalUrl ,
params = req . params ;
// decide if this is a show request
var hasFileExtension = void 0 ;
try {
var _lbryUri$parseModifie = lbryUri . parseModifier ( params . claim ) ;
hasFileExtension = _lbryUri$parseModifie . hasFileExtension ;
} catch ( error ) {
return res . status ( 400 ) . json ( { success : false , message : error . message } ) ;
}
var responseType = determineResponseType ( hasFileExtension , headers ) ;
if ( responseType !== SERVE ) {
return handleShowRender ( req , res ) ;
}
// handle serve request
// send google analytics
sendGAServeEvent ( headers , ip , originalUrl ) ;
// parse the claim
var claimName = void 0 ;
try {
var _lbryUri$parseClaim = lbryUri . parseClaim ( params . claim ) ;
claimName = _lbryUri$parseClaim . claimName ;
} catch ( error ) {
return res . status ( 400 ) . json ( { success : false , message : error . message } ) ;
}
// parse the identifier
var isChannel = void 0 ,
channelName = void 0 ,
channelClaimId = void 0 ,
claimId = void 0 ;
try {
var _lbryUri$parseIdentif = lbryUri . parseIdentifier ( params . identifier ) ;
isChannel = _lbryUri$parseIdentif . isChannel ;
channelName = _lbryUri$parseIdentif . channelName ;
channelClaimId = _lbryUri$parseIdentif . channelClaimId ;
claimId = _lbryUri$parseIdentif . claimId ;
} catch ( error ) {
return res . status ( 400 ) . json ( { success : false , message : error . message } ) ;
}
if ( ! isChannel ) {
var _flipClaimNameAndIdFo = flipClaimNameAndIdForBackwardsCompatibility ( claimId , claimName ) ;
var _flipClaimNameAndIdFo2 = _slicedToArray ( _flipClaimNameAndIdFo , 2 ) ;
claimId = _flipClaimNameAndIdFo2 [ 0 ] ;
claimName = _flipClaimNameAndIdFo2 [ 1 ] ;
}
// log the request data for debugging
logRequestData ( responseType , claimName , channelName , claimId ) ;
// get the claim Id and then serve the asset
getClaimIdAndServeAsset ( channelName , channelClaimId , claimName , claimId , originalUrl , ip , res ) ;
} ) ;
// route to serve the winning asset at a claim or a channel page
app . get ( '/:claim' , function ( req , res ) {
var headers = req . headers ,
ip = req . ip ,
originalUrl = req . originalUrl ,
params = req . params ;
// decide if this is a show request
var hasFileExtension = void 0 ;
try {
var _lbryUri$parseModifie2 = lbryUri . parseModifier ( params . claim ) ;
hasFileExtension = _lbryUri$parseModifie2 . hasFileExtension ;
} catch ( error ) {
return res . status ( 400 ) . json ( { success : false , message : error . message } ) ;
}
var responseType = determineResponseType ( hasFileExtension , headers ) ;
if ( responseType !== SERVE ) {
return handleShowRender ( req , res ) ;
}
// handle serve request
// send google analytics
sendGAServeEvent ( headers , ip , originalUrl ) ;
// parse the claim
var claimName = void 0 ;
try {
var _lbryUri$parseClaim2 = lbryUri . parseClaim ( params . claim ) ;
claimName = _lbryUri$parseClaim2 . claimName ;
} catch ( error ) {
return res . status ( 400 ) . json ( { success : false , message : error . message } ) ;
}
// log the request data for debugging
logRequestData ( responseType , claimName , null , null ) ;
// get the claim Id and then serve the asset
getClaimIdAndServeAsset ( null , null , claimName , null , originalUrl , ip , res ) ;
} ) ;
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 127 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var logger = _ _webpack _require _ _ ( 1 ) ;
2018-03-22 01:35:51 +01:00
var _require = _ _webpack _require _ _ ( 37 ) ,
2018-03-21 01:08:30 +01:00
getClaimId = _require . getClaimId ,
getLocalFileRecord = _require . getLocalFileRecord ;
2018-03-22 01:35:51 +01:00
var _require2 = _ _webpack _require _ _ ( 36 ) ,
2018-03-21 01:08:30 +01:00
handleErrorResponse = _require2 . handleErrorResponse ;
var SERVE = 'SERVE' ;
var SHOW = 'SHOW' ;
var NO _FILE = 'NO_FILE' ;
var NO _CHANNEL = 'NO_CHANNEL' ;
var NO _CLAIM = 'NO_CLAIM' ;
function clientAcceptsHtml ( _ref ) {
var accept = _ref . accept ;
return accept && accept . match ( /text\/html/ ) ;
} ;
function requestIsFromBrowser ( headers ) {
return headers [ 'user-agent' ] && headers [ 'user-agent' ] . match ( /Mozilla/ ) ;
} ;
function clientWantsAsset ( _ref2 ) {
var accept = _ref2 . accept ,
range = _ref2 . range ;
var imageIsWanted = accept && accept . match ( /image\/.*/ ) && ! accept . match ( /text\/html/ ) && ! accept . match ( /text\/\*/ ) ;
var videoIsWanted = accept && range ;
return imageIsWanted || videoIsWanted ;
} ;
function isValidClaimId ( claimId ) {
return claimId . length === 40 && ! /[^A-Za-z0-9]/g . test ( claimId ) ;
} ;
function isValidShortId ( claimId ) {
return claimId . length === 1 ; // it should really evaluate the short url itself
} ;
function isValidShortIdOrClaimId ( input ) {
return isValidClaimId ( input ) || isValidShortId ( input ) ;
} ;
function serveAssetToClient ( claimId , name , res ) {
return getLocalFileRecord ( claimId , name ) . then ( function ( fileRecord ) {
// check that a local record was found
if ( fileRecord === NO _FILE ) {
return res . status ( 307 ) . redirect ( '/api/claim/get/' + name + '/' + claimId ) ;
}
// serve the file
var filePath = fileRecord . filePath ,
fileType = fileRecord . fileType ;
logger . verbose ( 'serving file: ' + filePath ) ;
var sendFileOptions = {
headers : {
'X-Content-Type-Options' : 'nosniff' ,
'Content-Type' : fileType || 'image/jpeg'
}
} ;
res . status ( 200 ) . sendFile ( filePath , sendFileOptions ) ;
} ) . catch ( function ( error ) {
throw error ;
} ) ;
} ;
module . exports = {
getClaimIdAndServeAsset : function getClaimIdAndServeAsset ( channelName , channelClaimId , claimName , claimId , originalUrl , ip , res ) {
// get the claim Id and then serve the asset
getClaimId ( channelName , channelClaimId , claimName , claimId ) . then ( function ( fullClaimId ) {
if ( fullClaimId === NO _CLAIM ) {
return res . status ( 404 ) . json ( { success : false , message : 'no claim id could be found' } ) ;
} else if ( fullClaimId === NO _CHANNEL ) {
return res . status ( 404 ) . json ( { success : false , message : 'no channel id could be found' } ) ;
}
serveAssetToClient ( fullClaimId , claimName , res ) ;
// postToStats(responseType, originalUrl, ip, claimName, fullClaimId, 'success');
} ) . catch ( function ( error ) {
handleErrorResponse ( originalUrl , ip , error , res ) ;
// postToStats(responseType, originalUrl, ip, claimName, fullClaimId, 'fail');
} ) ;
} ,
determineResponseType : function determineResponseType ( hasFileExtension , headers ) {
var responseType = void 0 ;
if ( hasFileExtension ) {
responseType = SERVE ; // assume a serve request if file extension is present
if ( clientAcceptsHtml ( headers ) ) {
// if the request comes from a browser, change it to a show request
responseType = SHOW ;
}
} else {
responseType = SHOW ;
if ( clientWantsAsset ( headers ) && requestIsFromBrowser ( headers ) ) {
// this is in case someone embeds a show url
logger . debug ( 'Show request came from browser but wants an image/video. Changing response to serve...' ) ;
responseType = SERVE ;
}
}
return responseType ;
} ,
flipClaimNameAndIdForBackwardsCompatibility : function flipClaimNameAndIdForBackwardsCompatibility ( identifier , name ) {
// this is a patch for backwards compatability with '/name/claim_id' url format
if ( isValidShortIdOrClaimId ( name ) && ! isValidShortIdOrClaimId ( identifier ) ) {
var tempName = name ;
name = identifier ;
identifier = tempName ;
}
return [ identifier , name ] ;
} ,
logRequestData : function logRequestData ( responseType , claimName , channelName , claimId ) {
logger . debug ( 'responseType ===' , responseType ) ;
logger . debug ( 'claim name === ' , claimName ) ;
logger . debug ( 'channel name ===' , channelName ) ;
logger . debug ( 'claim id ===' , claimId ) ;
}
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 128 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var _slicedToArray = function ( ) { function sliceIterator ( arr , i ) { var _arr = [ ] ; var _n = true ; var _d = false ; var _e = undefined ; try { for ( var _i = arr [ Symbol . iterator ] ( ) , _s ; ! ( _n = ( _s = _i . next ( ) ) . done ) ; _n = true ) { _arr . push ( _s . value ) ; if ( i && _arr . length === i ) break ; } } catch ( err ) { _d = true ; _e = err ; } finally { try { if ( ! _n && _i [ "return" ] ) _i [ "return" ] ( ) ; } finally { if ( _d ) throw _e ; } } return _arr ; } return function ( arr , i ) { if ( Array . isArray ( arr ) ) { return arr ; } else if ( Symbol . iterator in Object ( arr ) ) { return sliceIterator ( arr , i ) ; } else { throw new TypeError ( "Invalid attempt to destructure non-iterable instance" ) ; } } ; } ( ) ;
var logger = _ _webpack _require _ _ ( 1 ) ;
module . exports = {
REGEXP _INVALID _CLAIM : /[^A-Za-z0-9-]/g ,
REGEXP _INVALID _CHANNEL : /[^A-Za-z0-9-@]/g ,
REGEXP _ADDRESS : /^b(?=[^0OIl]{32,33})[0-9A-Za-z]{32,33}$/ ,
CHANNEL _CHAR : '@' ,
parseIdentifier : function parseIdentifier ( identifier ) {
logger . debug ( 'parsing identifier:' , identifier ) ;
var componentsRegex = new RegExp ( '([^:$#/]*)' + // value (stops at the first separator or end)
'([:$#]?)([^/]*)' // modifier separator, modifier (stops at the first path separator or end)
) ;
var _componentsRegex$exec = componentsRegex . exec ( identifier ) . map ( function ( match ) {
return match || null ;
} ) ,
_componentsRegex$exec2 = _slicedToArray ( _componentsRegex$exec , 4 ) ,
proto = _componentsRegex$exec2 [ 0 ] ,
value = _componentsRegex$exec2 [ 1 ] ,
modifierSeperator = _componentsRegex$exec2 [ 2 ] ,
modifier = _componentsRegex$exec2 [ 3 ] ;
logger . debug ( proto + ', ' + value + ', ' + modifierSeperator + ', ' + modifier ) ;
// Validate and process name
if ( ! value ) {
throw new Error ( 'Check your url. No channel name provided before "' + modifierSeperator + '"' ) ;
}
var isChannel = value . startsWith ( module . exports . CHANNEL _CHAR ) ;
var channelName = isChannel ? value : null ;
var claimId = void 0 ;
if ( isChannel ) {
if ( ! channelName ) {
throw new Error ( 'No channel name after @.' ) ;
}
var nameBadChars = channelName . match ( module . exports . REGEXP _INVALID _CHANNEL ) ;
if ( nameBadChars ) {
throw new Error ( 'Invalid characters in channel name: ' + nameBadChars . join ( ', ' ) + '.' ) ;
}
} else {
claimId = value ;
}
// Validate and process modifier
var channelClaimId = void 0 ;
if ( modifierSeperator ) {
if ( ! modifier ) {
throw new Error ( 'No modifier provided after separator "' + modifierSeperator + '"' ) ;
}
if ( modifierSeperator === ':' ) {
channelClaimId = modifier ;
} else {
throw new Error ( 'The "' + modifierSeperator + '" modifier is not currently supported' ) ;
}
}
return {
isChannel : isChannel ,
channelName : channelName ,
channelClaimId : channelClaimId ,
claimId : claimId
} ;
} ,
parseClaim : function parseClaim ( claim ) {
logger . debug ( 'parsing name:' , claim ) ;
var componentsRegex = new RegExp ( '([^:$#/.]*)' + // name (stops at the first modifier)
'([:$#.]?)([^/]*)' // modifier separator, modifier (stops at the first path separator or end)
) ;
var _componentsRegex$exec3 = componentsRegex . exec ( claim ) . map ( function ( match ) {
return match || null ;
} ) ,
_componentsRegex$exec4 = _slicedToArray ( _componentsRegex$exec3 , 4 ) ,
proto = _componentsRegex$exec4 [ 0 ] ,
claimName = _componentsRegex$exec4 [ 1 ] ,
modifierSeperator = _componentsRegex$exec4 [ 2 ] ,
modifier = _componentsRegex$exec4 [ 3 ] ;
logger . debug ( proto + ', ' + claimName + ', ' + modifierSeperator + ', ' + modifier ) ;
// Validate and process name
if ( ! claimName ) {
throw new Error ( 'No claim name provided before .' ) ;
}
var nameBadChars = claimName . match ( module . exports . REGEXP _INVALID _CLAIM ) ;
if ( nameBadChars ) {
throw new Error ( 'Invalid characters in claim name: ' + nameBadChars . join ( ', ' ) + '.' ) ;
}
// Validate and process modifier
if ( modifierSeperator ) {
if ( ! modifier ) {
throw new Error ( 'No file extension provided after separator ' + modifierSeperator + '.' ) ;
}
if ( modifierSeperator !== '.' ) {
throw new Error ( 'The ' + modifierSeperator + ' modifier is not supported in the claim name' ) ;
}
}
// return results
return {
claimName : claimName
} ;
} ,
parseModifier : function parseModifier ( claim ) {
logger . debug ( 'parsing modifier:' , claim ) ;
var componentsRegex = new RegExp ( '([^:$#/.]*)' + // name (stops at the first modifier)
'([:$#.]?)([^/]*)' // modifier separator, modifier (stops at the first path separator or end)
) ;
var _componentsRegex$exec5 = componentsRegex . exec ( claim ) . map ( function ( match ) {
return match || null ;
} ) ,
_componentsRegex$exec6 = _slicedToArray ( _componentsRegex$exec5 , 4 ) ,
proto = _componentsRegex$exec6 [ 0 ] ,
claimName = _componentsRegex$exec6 [ 1 ] ,
modifierSeperator = _componentsRegex$exec6 [ 2 ] ,
modifier = _componentsRegex$exec6 [ 3 ] ;
logger . debug ( proto + ', ' + claimName + ', ' + modifierSeperator + ', ' + modifier ) ;
// Validate and process modifier
var hasFileExtension = false ;
if ( modifierSeperator ) {
hasFileExtension = true ;
}
return {
hasFileExtension : hasFileExtension
} ;
}
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 129 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var _react = _ _webpack _require _ _ ( 0 ) ;
var _react2 = _interopRequireDefault ( _react ) ;
2018-03-22 01:35:51 +01:00
var _server = _ _webpack _require _ _ ( 39 ) ;
2018-03-21 01:08:30 +01:00
2018-03-22 01:35:51 +01:00
var _redux = _ _webpack _require _ _ ( 18 ) ;
2018-03-21 01:08:30 +01:00
2018-03-22 01:35:51 +01:00
var _index = _ _webpack _require _ _ ( 40 ) ;
2018-03-21 01:08:30 +01:00
var _index2 = _interopRequireDefault ( _index ) ;
var _reactRedux = _ _webpack _require _ _ ( 2 ) ;
var _reactRouterDom = _ _webpack _require _ _ ( 4 ) ;
2018-03-22 01:35:51 +01:00
var _index3 = _ _webpack _require _ _ ( 44 ) ;
2018-03-21 01:08:30 +01:00
var _index4 = _interopRequireDefault ( _index3 ) ;
2018-03-22 01:35:51 +01:00
var _app = _ _webpack _require _ _ ( 45 ) ;
2018-03-21 01:08:30 +01:00
var _app2 = _interopRequireDefault ( _app ) ;
2018-03-22 01:35:51 +01:00
var _renderFullPage = _ _webpack _require _ _ ( 53 ) ;
2018-03-21 01:08:30 +01:00
var _renderFullPage2 = _interopRequireDefault ( _renderFullPage ) ;
2018-03-22 01:35:51 +01:00
var _reduxSaga = _ _webpack _require _ _ ( 130 ) ;
2018-03-21 01:08:30 +01:00
var _reduxSaga2 = _interopRequireDefault ( _reduxSaga ) ;
var _effects = _ _webpack _require _ _ ( 14 ) ;
2018-03-22 01:35:51 +01:00
var _show _uri = _ _webpack _require _ _ ( 131 ) ;
2018-03-21 01:08:30 +01:00
var _show = _ _webpack _require _ _ ( 7 ) ;
var _reactHelmet = _ _webpack _require _ _ ( 13 ) ;
var _reactHelmet2 = _interopRequireDefault ( _reactHelmet ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
var returnSagaWithParams = function returnSagaWithParams ( saga , params ) {
return ( /*#__PURE__*/ regeneratorRuntime . mark ( function _callee ( ) {
return regeneratorRuntime . wrap ( function _callee$ ( _context ) {
while ( 1 ) {
switch ( _context . prev = _context . next ) {
case 0 :
_context . next = 2 ;
return ( 0 , _effects . call ) ( saga , params ) ;
case 2 :
case 'end' :
return _context . stop ( ) ;
}
}
} , _callee , this ) ;
} )
) ;
} ;
module . exports = function ( req , res ) {
var context = { } ;
// create and apply middleware
var sagaMiddleware = ( 0 , _reduxSaga2 . default ) ( ) ;
var middleware = ( 0 , _redux . applyMiddleware ) ( sagaMiddleware ) ;
// create a new Redux store instance
var store = ( 0 , _redux . createStore ) ( _index2 . default , middleware ) ;
// create saga
var action = ( 0 , _show . onHandleShowPageUri ) ( req . params ) ;
var saga = returnSagaWithParams ( _show _uri . handleShowPageUri , action ) ;
// run the saga middleware
sagaMiddleware . run ( saga ) . done . then ( function ( ) {
// render component to a string
var html = ( 0 , _server . renderToString ) ( _react2 . default . createElement (
_reactRedux . Provider ,
{ store : store } ,
_react2 . default . createElement (
_reactRouterDom . StaticRouter ,
{ location : req . url , context : context } ,
_react2 . default . createElement (
_index4 . default ,
null ,
_react2 . default . createElement ( _app2 . default , null )
)
)
) ) ;
// get head tags from helmet
var helmet = _reactHelmet2 . default . renderStatic ( ) ;
// check for a redirect
if ( context . url ) {
return res . redirect ( 301 , context . url ) ;
}
// get the initial state from our Redux store
var preloadedState = store . getState ( ) ;
// send the rendered page back to the client
res . send ( ( 0 , _renderFullPage2 . default ) ( helmet , html , preloadedState ) ) ;
} ) ;
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 130 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports ) {
module . exports = require ( "redux-saga" ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 131 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . handleShowPageUri = handleShowPageUri ;
exports . watchHandleShowPageUri = watchHandleShowPageUri ;
var _effects = _ _webpack _require _ _ ( 14 ) ;
2018-03-22 01:35:51 +01:00
var _show _action _types = _ _webpack _require _ _ ( 9 ) ;
2018-03-21 01:08:30 +01:00
var actions = _interopRequireWildcard ( _show _action _types ) ;
var _show = _ _webpack _require _ _ ( 7 ) ;
2018-03-22 01:35:51 +01:00
var _show _asset = _ _webpack _require _ _ ( 132 ) ;
2018-03-21 01:08:30 +01:00
2018-03-22 01:35:51 +01:00
var _show _channel = _ _webpack _require _ _ ( 134 ) ;
2018-03-21 01:08:30 +01:00
var _lbryUri = _ _webpack _require _ _ ( 21 ) ;
var _lbryUri2 = _interopRequireDefault ( _lbryUri ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
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 ; } }
var _marked = /*#__PURE__*/ regeneratorRuntime . mark ( parseAndUpdateIdentifierAndClaim ) ,
_marked2 = /*#__PURE__*/ regeneratorRuntime . mark ( parseAndUpdateClaimOnly ) ,
_marked3 = /*#__PURE__*/ regeneratorRuntime . mark ( handleShowPageUri ) ,
_marked4 = /*#__PURE__*/ regeneratorRuntime . mark ( watchHandleShowPageUri ) ;
function parseAndUpdateIdentifierAndClaim ( modifier , claim ) {
var isChannel , channelName , channelClaimId , claimId , claimName , extension , _lbryUri$parseIdentif , _lbryUri$parseClaim ;
return regeneratorRuntime . wrap ( function parseAndUpdateIdentifierAndClaim$ ( _context ) {
while ( 1 ) {
switch ( _context . prev = _context . next ) {
case 0 :
// this is a request for an asset
// claim will be an asset claim
// the identifier could be a channel or a claim id
isChannel = void 0 , channelName = void 0 , channelClaimId = void 0 , claimId = void 0 , claimName = void 0 , extension = void 0 ;
_context . prev = 1 ;
_lbryUri$parseIdentif = _lbryUri2 . default . parseIdentifier ( modifier ) ;
isChannel = _lbryUri$parseIdentif . isChannel ;
channelName = _lbryUri$parseIdentif . channelName ;
channelClaimId = _lbryUri$parseIdentif . channelClaimId ;
claimId = _lbryUri$parseIdentif . claimId ;
_lbryUri$parseClaim = _lbryUri2 . default . parseClaim ( claim ) ;
claimName = _lbryUri$parseClaim . claimName ;
extension = _lbryUri$parseClaim . extension ;
_context . next = 17 ;
break ;
case 12 :
_context . prev = 12 ;
_context . t0 = _context [ 'catch' ] ( 1 ) ;
_context . next = 16 ;
return ( 0 , _effects . put ) ( ( 0 , _show . onRequestError ) ( _context . t0 . message ) ) ;
case 16 :
return _context . abrupt ( 'return' , _context . sent ) ;
case 17 :
if ( ! isChannel ) {
_context . next = 21 ;
break ;
}
_context . next = 20 ;
return ( 0 , _effects . call ) ( _show _asset . newAssetRequest , ( 0 , _show . onNewAssetRequest ) ( claimName , null , channelName , channelClaimId , extension ) ) ;
case 20 :
return _context . abrupt ( 'return' , _context . sent ) ;
case 21 :
;
_context . next = 24 ;
return ( 0 , _effects . call ) ( _show _asset . newAssetRequest , ( 0 , _show . onNewAssetRequest ) ( claimName , claimId , null , null , extension ) ) ;
case 24 :
case 'end' :
return _context . stop ( ) ;
}
}
} , _marked , this , [ [ 1 , 12 ] ] ) ;
}
function parseAndUpdateClaimOnly ( claim ) {
var isChannel , channelName , channelClaimId , _lbryUri$parseIdentif2 , claimName , extension , _lbryUri$parseClaim2 ;
return regeneratorRuntime . wrap ( function parseAndUpdateClaimOnly$ ( _context2 ) {
while ( 1 ) {
switch ( _context2 . prev = _context2 . next ) {
case 0 :
// this could be a request for an asset or a channel page
// claim could be an asset claim or a channel claim
isChannel = void 0 , channelName = void 0 , channelClaimId = void 0 ;
_context2 . prev = 1 ;
_lbryUri$parseIdentif2 = _lbryUri2 . default . parseIdentifier ( claim ) ;
isChannel = _lbryUri$parseIdentif2 . isChannel ;
channelName = _lbryUri$parseIdentif2 . channelName ;
channelClaimId = _lbryUri$parseIdentif2 . channelClaimId ;
_context2 . next = 13 ;
break ;
case 8 :
_context2 . prev = 8 ;
_context2 . t0 = _context2 [ 'catch' ] ( 1 ) ;
_context2 . next = 12 ;
return ( 0 , _effects . put ) ( ( 0 , _show . onRequestError ) ( _context2 . t0 . message ) ) ;
case 12 :
return _context2 . abrupt ( 'return' , _context2 . sent ) ;
case 13 :
if ( ! isChannel ) {
_context2 . next = 17 ;
break ;
}
_context2 . next = 16 ;
return ( 0 , _effects . call ) ( _show _channel . newChannelRequest , ( 0 , _show . onNewChannelRequest ) ( channelName , channelClaimId ) ) ;
case 16 :
return _context2 . abrupt ( 'return' , _context2 . sent ) ;
case 17 :
// if not for a channel, parse the claim request
claimName = void 0 , extension = void 0 ;
_context2 . prev = 18 ;
_lbryUri$parseClaim2 = _lbryUri2 . default . parseClaim ( claim ) ;
claimName = _lbryUri$parseClaim2 . claimName ;
extension = _lbryUri$parseClaim2 . extension ;
_context2 . next = 29 ;
break ;
case 24 :
_context2 . prev = 24 ;
_context2 . t1 = _context2 [ 'catch' ] ( 18 ) ;
_context2 . next = 28 ;
return ( 0 , _effects . put ) ( ( 0 , _show . onRequestError ) ( _context2 . t1 . message ) ) ;
case 28 :
return _context2 . abrupt ( 'return' , _context2 . sent ) ;
case 29 :
_context2 . next = 31 ;
return ( 0 , _effects . call ) ( _show _asset . newAssetRequest , ( 0 , _show . onNewAssetRequest ) ( claimName , null , null , null , extension ) ) ;
case 31 :
case 'end' :
return _context2 . stop ( ) ;
}
}
} , _marked2 , this , [ [ 1 , 8 ] , [ 18 , 24 ] ] ) ;
}
function handleShowPageUri ( action ) {
var _action$data , identifier , claim ;
return regeneratorRuntime . wrap ( function handleShowPageUri$ ( _context3 ) {
while ( 1 ) {
switch ( _context3 . prev = _context3 . next ) {
case 0 :
_action$data = action . data , identifier = _action$data . identifier , claim = _action$data . claim ;
if ( ! identifier ) {
_context3 . next = 5 ;
break ;
}
_context3 . next = 4 ;
return ( 0 , _effects . call ) ( parseAndUpdateIdentifierAndClaim , identifier , claim ) ;
case 4 :
return _context3 . abrupt ( 'return' , _context3 . sent ) ;
case 5 :
_context3 . next = 7 ;
return ( 0 , _effects . call ) ( parseAndUpdateClaimOnly , claim ) ;
case 7 :
case 'end' :
return _context3 . stop ( ) ;
}
}
} , _marked3 , this ) ;
} ;
function watchHandleShowPageUri ( ) {
return regeneratorRuntime . wrap ( function watchHandleShowPageUri$ ( _context4 ) {
while ( 1 ) {
switch ( _context4 . prev = _context4 . next ) {
case 0 :
_context4 . next = 2 ;
return ( 0 , _effects . takeLatest ) ( actions . HANDLE _SHOW _URI , handleShowPageUri ) ;
case 2 :
case 'end' :
return _context4 . stop ( ) ;
}
}
} , _marked4 , this ) ;
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 132 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . newAssetRequest = newAssetRequest ;
exports . watchNewAssetRequest = watchNewAssetRequest ;
var _effects = _ _webpack _require _ _ ( 14 ) ;
2018-03-22 01:35:51 +01:00
var _show _action _types = _ _webpack _require _ _ ( 9 ) ;
2018-03-21 01:08:30 +01:00
var actions = _interopRequireWildcard ( _show _action _types ) ;
var _show = _ _webpack _require _ _ ( 7 ) ;
2018-03-22 01:35:51 +01:00
var _assetApi = _ _webpack _require _ _ ( 133 ) ;
2018-03-21 01:08:30 +01:00
2018-03-22 01:35:51 +01:00
var _show2 = _ _webpack _require _ _ ( 11 ) ;
2018-03-21 01:08:30 +01:00
2018-03-22 01:35:51 +01:00
var _site = _ _webpack _require _ _ ( 54 ) ;
2018-03-21 01:08:30 +01:00
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 ; } }
var _marked = /*#__PURE__*/ regeneratorRuntime . mark ( newAssetRequest ) ,
_marked2 = /*#__PURE__*/ regeneratorRuntime . mark ( watchNewAssetRequest ) ;
function newAssetRequest ( action ) {
var _action$data , requestType , requestId , name , modifier , state , host , longId , _ref , assetKey , shortId , _ref2 , claimData , _ref3 ;
return regeneratorRuntime . wrap ( function newAssetRequest$ ( _context ) {
while ( 1 ) {
switch ( _context . prev = _context . next ) {
case 0 :
_action$data = action . data , requestType = _action$data . requestType , requestId = _action$data . requestId , name = _action$data . name , modifier = _action$data . modifier ;
// put an action to update the request in redux
_context . next = 3 ;
return ( 0 , _effects . put ) ( ( 0 , _show . onRequestUpdate ) ( requestType , requestId ) ) ;
case 3 :
_context . next = 5 ;
return ( 0 , _effects . select ) ( _show2 . selectShowState ) ;
case 5 :
state = _context . sent ;
_context . next = 8 ;
return ( 0 , _effects . select ) ( _site . selectSiteHost ) ;
case 8 :
host = _context . sent ;
if ( ! state . requestList [ requestId ] ) {
_context . next = 11 ;
break ;
}
return _context . abrupt ( 'return' , null ) ;
case 11 :
// get long id && add request to request list
longId = void 0 ;
_context . prev = 12 ;
_context . next = 15 ;
return ( 0 , _effects . call ) ( _assetApi . getLongClaimId , host , name , modifier ) ;
case 15 :
_ref = _context . sent ;
longId = _ref . data ;
_context . next = 24 ;
break ;
case 19 :
_context . prev = 19 ;
_context . t0 = _context [ 'catch' ] ( 12 ) ;
_context . next = 23 ;
return ( 0 , _effects . put ) ( ( 0 , _show . onRequestError ) ( _context . t0 . message ) ) ;
case 23 :
return _context . abrupt ( 'return' , _context . sent ) ;
case 24 :
assetKey = 'a#' + name + '#' + longId ;
_context . next = 27 ;
return ( 0 , _effects . put ) ( ( 0 , _show . addRequestToRequestList ) ( requestId , null , assetKey ) ) ;
case 27 :
if ( ! state . assetList [ assetKey ] ) {
_context . next = 29 ;
break ;
}
return _context . abrupt ( 'return' , null ) ;
case 29 :
// get short Id
shortId = void 0 ;
_context . prev = 30 ;
_context . next = 33 ;
return ( 0 , _effects . call ) ( _assetApi . getShortId , host , name , longId ) ;
case 33 :
_ref2 = _context . sent ;
shortId = _ref2 . data ;
_context . next = 42 ;
break ;
case 37 :
_context . prev = 37 ;
_context . t1 = _context [ 'catch' ] ( 30 ) ;
_context . next = 41 ;
return ( 0 , _effects . put ) ( ( 0 , _show . onRequestError ) ( _context . t1 . message ) ) ;
case 41 :
return _context . abrupt ( 'return' , _context . sent ) ;
case 42 :
// get asset claim data
claimData = void 0 ;
_context . prev = 43 ;
_context . next = 46 ;
return ( 0 , _effects . call ) ( _assetApi . getClaimData , host , name , longId ) ;
case 46 :
_ref3 = _context . sent ;
claimData = _ref3 . data ;
_context . next = 55 ;
break ;
case 50 :
_context . prev = 50 ;
_context . t2 = _context [ 'catch' ] ( 43 ) ;
_context . next = 54 ;
return ( 0 , _effects . put ) ( ( 0 , _show . onRequestError ) ( _context . t2 . message ) ) ;
case 54 :
return _context . abrupt ( 'return' , _context . sent ) ;
case 55 :
_context . next = 57 ;
return ( 0 , _effects . put ) ( ( 0 , _show . addAssetToAssetList ) ( assetKey , null , name , longId , shortId , claimData ) ) ;
case 57 :
_context . next = 59 ;
return ( 0 , _effects . put ) ( ( 0 , _show . onRequestError ) ( null ) ) ;
case 59 :
case 'end' :
return _context . stop ( ) ;
}
}
} , _marked , this , [ [ 12 , 19 ] , [ 30 , 37 ] , [ 43 , 50 ] ] ) ;
} ;
function watchNewAssetRequest ( ) {
return regeneratorRuntime . wrap ( function watchNewAssetRequest$ ( _context2 ) {
while ( 1 ) {
switch ( _context2 . prev = _context2 . next ) {
case 0 :
_context2 . next = 2 ;
return ( 0 , _effects . takeLatest ) ( actions . ASSET _REQUEST _NEW , newAssetRequest ) ;
case 2 :
case 'end' :
return _context2 . stop ( ) ;
}
}
} , _marked2 , this ) ;
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 133 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . getLongClaimId = getLongClaimId ;
exports . getShortId = getShortId ;
exports . getClaimData = getClaimData ;
var _request = _ _webpack _require _ _ ( 6 ) ;
var _request2 = _interopRequireDefault ( _request ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function getLongClaimId ( host , name , modifier ) {
var body = { } ;
// create request params
if ( modifier ) {
if ( modifier . id ) {
body [ 'claimId' ] = modifier . id ;
} else {
body [ 'channelName' ] = modifier . channel . name ;
body [ 'channelClaimId' ] = modifier . channel . id ;
}
}
body [ 'claimName' ] = name ;
var params = {
method : 'POST' ,
headers : { 'Content-Type' : 'application/json' } ,
body : JSON . stringify ( body )
} ;
// create url
var url = host + '/api/claim/long-id' ;
// return the request promise
return ( 0 , _request2 . default ) ( url , params ) ;
} ;
function getShortId ( host , name , claimId ) {
var url = host + '/api/claim/short-id/' + claimId + '/' + name ;
return ( 0 , _request2 . default ) ( url ) ;
} ;
function getClaimData ( host , name , claimId ) {
var url = host + '/api/claim/data/' + name + '/' + claimId ;
return ( 0 , _request2 . default ) ( url ) ;
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 134 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . newChannelRequest = newChannelRequest ;
exports . watchNewChannelRequest = watchNewChannelRequest ;
exports . watchUpdateChannelClaims = watchUpdateChannelClaims ;
var _effects = _ _webpack _require _ _ ( 14 ) ;
2018-03-22 01:35:51 +01:00
var _show _action _types = _ _webpack _require _ _ ( 9 ) ;
2018-03-21 01:08:30 +01:00
var actions = _interopRequireWildcard ( _show _action _types ) ;
var _show = _ _webpack _require _ _ ( 7 ) ;
2018-03-22 01:35:51 +01:00
var _channelApi = _ _webpack _require _ _ ( 135 ) ;
2018-03-21 01:08:30 +01:00
2018-03-22 01:35:51 +01:00
var _show2 = _ _webpack _require _ _ ( 11 ) ;
2018-03-21 01:08:30 +01:00
2018-03-22 01:35:51 +01:00
var _site = _ _webpack _require _ _ ( 54 ) ;
2018-03-21 01:08:30 +01:00
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 ; } }
var _marked = /*#__PURE__*/ regeneratorRuntime . mark ( newChannelRequest ) ,
_marked2 = /*#__PURE__*/ regeneratorRuntime . mark ( watchNewChannelRequest ) ,
_marked3 = /*#__PURE__*/ regeneratorRuntime . mark ( getNewClaimsAndUpdateChannel ) ,
_marked4 = /*#__PURE__*/ regeneratorRuntime . mark ( watchUpdateChannelClaims ) ;
function newChannelRequest ( action ) {
var _action$data , requestType , requestId , channelName , channelId , state , host , longId , shortId , _ref , _ref$data , channelKey , claimsData , _ref2 ;
return regeneratorRuntime . wrap ( function newChannelRequest$ ( _context ) {
while ( 1 ) {
switch ( _context . prev = _context . next ) {
case 0 :
_action$data = action . data , requestType = _action$data . requestType , requestId = _action$data . requestId , channelName = _action$data . channelName , channelId = _action$data . channelId ;
// put an action to update the request in redux
_context . next = 3 ;
return ( 0 , _effects . put ) ( ( 0 , _show . onRequestUpdate ) ( requestType , requestId ) ) ;
case 3 :
_context . next = 5 ;
return ( 0 , _effects . select ) ( _show2 . selectShowState ) ;
case 5 :
state = _context . sent ;
_context . next = 8 ;
return ( 0 , _effects . select ) ( _site . selectSiteHost ) ;
case 8 :
host = _context . sent ;
if ( ! state . requestList [ requestId ] ) {
_context . next = 11 ;
break ;
}
return _context . abrupt ( 'return' , null ) ;
case 11 :
// get channel long id
longId = void 0 , shortId = void 0 ;
_context . prev = 12 ;
_context . next = 15 ;
return ( 0 , _effects . call ) ( _channelApi . getChannelData , host , channelName , channelId ) ;
case 15 :
_ref = _context . sent ;
_ref$data = _ref . data ;
longId = _ref$data . longChannelClaimId ;
shortId = _ref$data . shortChannelClaimId ;
_context . next = 26 ;
break ;
case 21 :
_context . prev = 21 ;
_context . t0 = _context [ 'catch' ] ( 12 ) ;
_context . next = 25 ;
return ( 0 , _effects . put ) ( ( 0 , _show . onRequestError ) ( _context . t0 . message ) ) ;
case 25 :
return _context . abrupt ( 'return' , _context . sent ) ;
case 26 :
// store the request in the channel requests list
channelKey = 'c#' + channelName + '#' + longId ;
_context . next = 29 ;
return ( 0 , _effects . put ) ( ( 0 , _show . addRequestToRequestList ) ( requestId , null , channelKey ) ) ;
case 29 :
if ( ! state . channelList [ channelKey ] ) {
_context . next = 31 ;
break ;
}
return _context . abrupt ( 'return' , null ) ;
case 31 :
// get channel claims data
claimsData = void 0 ;
_context . prev = 32 ;
_context . next = 35 ;
return ( 0 , _effects . call ) ( _channelApi . getChannelClaims , host , longId , channelName , 1 ) ;
case 35 :
_ref2 = _context . sent ;
claimsData = _ref2 . data ;
_context . next = 44 ;
break ;
case 39 :
_context . prev = 39 ;
_context . t1 = _context [ 'catch' ] ( 32 ) ;
_context . next = 43 ;
return ( 0 , _effects . put ) ( ( 0 , _show . onRequestError ) ( _context . t1 . message ) ) ;
case 43 :
return _context . abrupt ( 'return' , _context . sent ) ;
case 44 :
_context . next = 46 ;
return ( 0 , _effects . put ) ( ( 0 , _show . addNewChannelToChannelList ) ( channelKey , channelName , shortId , longId , claimsData ) ) ;
case 46 :
_context . next = 48 ;
return ( 0 , _effects . put ) ( ( 0 , _show . onRequestError ) ( null ) ) ;
case 48 :
case 'end' :
return _context . stop ( ) ;
}
}
} , _marked , this , [ [ 12 , 21 ] , [ 32 , 39 ] ] ) ;
}
function watchNewChannelRequest ( ) {
return regeneratorRuntime . wrap ( function watchNewChannelRequest$ ( _context2 ) {
while ( 1 ) {
switch ( _context2 . prev = _context2 . next ) {
case 0 :
_context2 . next = 2 ;
return ( 0 , _effects . takeLatest ) ( actions . CHANNEL _REQUEST _NEW , newChannelRequest ) ;
case 2 :
case 'end' :
return _context2 . stop ( ) ;
}
}
} , _marked2 , this ) ;
} ;
function getNewClaimsAndUpdateChannel ( action ) {
var _action$data2 , channelKey , name , longId , page , host , claimsData , _ref3 ;
return regeneratorRuntime . wrap ( function getNewClaimsAndUpdateChannel$ ( _context3 ) {
while ( 1 ) {
switch ( _context3 . prev = _context3 . next ) {
case 0 :
_action$data2 = action . data , channelKey = _action$data2 . channelKey , name = _action$data2 . name , longId = _action$data2 . longId , page = _action$data2 . page ;
_context3 . next = 3 ;
return ( 0 , _effects . select ) ( _site . selectSiteHost ) ;
case 3 :
host = _context3 . sent ;
claimsData = void 0 ;
_context3 . prev = 5 ;
_context3 . next = 8 ;
return ( 0 , _effects . call ) ( _channelApi . getChannelClaims , host , longId , name , page ) ;
case 8 :
_ref3 = _context3 . sent ;
claimsData = _ref3 . data ;
_context3 . next = 17 ;
break ;
case 12 :
_context3 . prev = 12 ;
_context3 . t0 = _context3 [ 'catch' ] ( 5 ) ;
_context3 . next = 16 ;
return ( 0 , _effects . put ) ( ( 0 , _show . onRequestError ) ( _context3 . t0 . message ) ) ;
case 16 :
return _context3 . abrupt ( 'return' , _context3 . sent ) ;
case 17 :
_context3 . next = 19 ;
return ( 0 , _effects . put ) ( ( 0 , _show . updateChannelClaims ) ( channelKey , claimsData ) ) ;
case 19 :
case 'end' :
return _context3 . stop ( ) ;
}
}
} , _marked3 , this , [ [ 5 , 12 ] ] ) ;
}
function watchUpdateChannelClaims ( ) {
return regeneratorRuntime . wrap ( function watchUpdateChannelClaims$ ( _context4 ) {
while ( 1 ) {
switch ( _context4 . prev = _context4 . next ) {
case 0 :
_context4 . next = 2 ;
return ( 0 , _effects . takeLatest ) ( actions . CHANNEL _CLAIMS _UPDATE _ASYNC , getNewClaimsAndUpdateChannel ) ;
case 2 :
case 'end' :
return _context4 . stop ( ) ;
}
}
} , _marked4 , this ) ;
}
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 135 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
Object . defineProperty ( exports , "__esModule" , {
value : true
} ) ;
exports . getChannelData = getChannelData ;
exports . getChannelClaims = getChannelClaims ;
var _request = _ _webpack _require _ _ ( 6 ) ;
var _request2 = _interopRequireDefault ( _request ) ;
function _interopRequireDefault ( obj ) { return obj && obj . _ _esModule ? obj : { default : obj } ; }
function getChannelData ( host , id , name ) {
if ( ! id ) id = 'none' ;
var url = host + '/api/channel/data/' + name + '/' + id ;
return ( 0 , _request2 . default ) ( url ) ;
} ;
function getChannelClaims ( host , longId , name , page ) {
if ( ! page ) page = 1 ;
var url = host + '/api/channel/claims/' + name + '/' + longId + '/' + page ;
return ( 0 , _request2 . default ) ( url ) ;
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 136 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
2018-03-22 01:35:51 +01:00
var handlePageRender = _ _webpack _require _ _ ( 38 ) ;
2018-03-21 01:08:30 +01:00
module . exports = function ( app ) {
// a catch-all route if someone visits a page that does not exist
app . use ( '*' , function ( req , res ) {
// send response
handlePageRender ( req , res ) ;
} ) ;
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 137 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
2018-03-22 01:35:51 +01:00
var _require = _ _webpack _require _ _ ( 138 ) ,
2018-03-21 01:08:30 +01:00
logLevel = _require . logLevel ;
module . exports = function ( winston ) {
// configure
winston . configure ( {
transports : [ new winston . transports . Console ( {
level : logLevel ,
timestamp : false ,
colorize : true ,
prettyPrint : true ,
handleExceptions : true ,
humanReadableUnhandledException : true
} ) ]
} ) ;
// test all the log levels
winston . error ( 'Level 0' ) ;
winston . warn ( 'Level 1' ) ;
winston . info ( 'Level 2' ) ;
winston . verbose ( 'Level 3' ) ;
winston . debug ( 'Level 4' ) ;
winston . silly ( 'Level 5' ) ;
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 138 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
var loggerConfig = {
logLevel : 'debug' // options: silly, debug, verbose, info
} ;
module . exports = loggerConfig ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 139 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
2018-03-22 01:35:51 +01:00
var winstonSlackWebHook = _ _webpack _require _ _ ( 140 ) . SlackWebHook ;
2018-03-21 01:08:30 +01:00
var slackConfig = _ _webpack _require _ _ ( 30 ) ;
module . exports = function ( winston ) {
var slackWebHook = slackConfig . slackWebHook ,
slackErrorChannel = slackConfig . slackErrorChannel ,
slackInfoChannel = slackConfig . slackInfoChannel ;
if ( slackWebHook ) {
// add a transport for errors to slack
if ( slackErrorChannel ) {
winston . add ( winstonSlackWebHook , {
name : 'slack-errors-transport' ,
level : 'warn' ,
webhookUrl : slackWebHook ,
channel : slackErrorChannel ,
username : 'spee.ch' ,
iconEmoji : ':face_with_head_bandage:'
} ) ;
} ;
if ( slackInfoChannel ) {
winston . add ( winstonSlackWebHook , {
name : 'slack-info-transport' ,
level : 'info' ,
webhookUrl : slackWebHook ,
channel : slackInfoChannel ,
username : 'spee.ch' ,
iconEmoji : ':nerd_face:'
} ) ;
} ;
// send test message
winston . error ( 'Slack "error" logging is online.' ) ;
winston . info ( 'Slack "info" logging is online.' ) ;
} else {
winston . warn ( 'Slack logging is not enabled because no slackWebHook config var provided.' ) ;
}
} ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 140 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports ) {
module . exports = require ( "winston-slack-webhook" ) ;
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 141 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
2018-03-22 01:35:51 +01:00
var Path = _ _webpack _require _ _ ( 15 ) ;
var importSubModules = _ _webpack _require _ _ ( 12 ) ;
var thisFolder = Path . resolve ( _ _dirname , 'client/components' ) ;
module . exports = importSubModules ( thisFolder ) ;
2018-03-21 01:08:30 +01:00
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 142 */ ,
/* 143 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
2018-03-22 01:35:51 +01:00
var Path = _ _webpack _require _ _ ( 15 ) ;
var importSubModules = _ _webpack _require _ _ ( 12 ) ;
var thisFolder = Path . resolve ( _ _dirname , 'client/containers/' ) ;
module . exports = importSubModules ( thisFolder ) ;
2018-03-21 01:08:30 +01:00
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 144 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
"use strict" ;
2018-03-22 01:35:51 +01:00
var Path = _ _webpack _require _ _ ( 15 ) ;
var importSubModules = _ _webpack _require _ _ ( 12 ) ;
var thisFolder = Path . resolve ( _ _dirname , 'client/pages/' ) ;
module . exports = importSubModules ( thisFolder ) ;
2018-03-21 01:08:30 +01:00
/***/ } ) ,
2018-03-22 01:35:51 +01:00
/* 145 */
2018-03-21 01:08:30 +01:00
/***/ ( function ( module , exports , _ _webpack _require _ _ ) {
2018-03-22 01:35:51 +01:00
var map = {
"./importSubModules" : 12 ,
"./importSubModules.js" : 12
2018-03-21 01:08:30 +01:00
} ;
2018-03-22 01:35:51 +01:00
function webpackContext ( req ) {
return _ _webpack _require _ _ ( webpackContextResolve ( req ) ) ;
} ;
function webpackContextResolve ( req ) {
var id = map [ req ] ;
if ( ! ( id + 1 ) ) // check for number or string
throw new Error ( "Cannot find module '" + req + "'." ) ;
return id ;
} ;
webpackContext . keys = function webpackContextKeys ( ) {
return Object . keys ( map ) ;
} ;
webpackContext . resolve = webpackContextResolve ;
module . exports = webpackContext ;
webpackContext . id = 145 ;
2018-03-21 01:08:30 +01:00
/***/ } )
/******/ ] ) ;
2018-03-22 01:35:51 +01:00
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAgMDM0MTM3ZGUxODNkOGI5ZjdmZjUiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwicmVhY3RcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJ3aW5zdG9uXCIiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwicmVhY3QtcmVkdXhcIiIsIndlYnBhY2s6Ly8vLi9jb25maWcvc2l0ZUNvbmZpZy5qcyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJyZWFjdC1yb3V0ZXItZG9tXCIiLCJ3ZWJwYWNrOi8vLy4vc2VydmVyL21vZGVscy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9jbGllbnQvdXRpbHMvcmVxdWVzdC5qcyIsIndlYnBhY2s6Ly8vLi9jbGllbnQvYWN0aW9ucy9zaG93LmpzIiwid2VicGFjazovLy8uL2NsaWVudC9jb250YWluZXJzL05hdkJhci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9jbGllbnQvY29uc3RhbnRzL3Nob3dfYWN0aW9uX3R5cGVzLmpzIiwid2VicGFjazovLy8uL2NsaWVudC9jb21wb25lbnRzL1NFTy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9jbGllbnQvc2VsZWN0b3JzL3Nob3cuanMiLCJ3ZWJwYWNrOi8vLy4vYnVpbGQvdXRpbHMvaW1wb3J0U3ViTW9kdWxlcy5qcyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJyZWFjdC1oZWxtZXRcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJyZWR1eC1zYWdhL2VmZmVjdHNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXRoXCIiLCJ3ZWJwYWNrOi8vLy4vc2VydmVyL2hlbHBlcnMvbGJyeUFwaS5qcyIsIndlYnBhY2s6Ly8vLi9zZXJ2ZXIvaGVscGVycy9nb29nbGVBbmFseXRpY3MuanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwicmVkdXhcIiIsIndlYnBhY2s6Ly8vLi9jbGllbnQvdXRpbHMvZHluYW1pY0ltcG9ydC5qcyIsIndlYnBhY2s6Ly8vLi9jbGllbnQvdXRpbHMvY2Fub25pY2FsTGluay5qcyIsIndlYnBhY2s6Ly8vLi9jbGllbnQvdXRpbHMvbGJyeVVyaS5qcyIsIndlYnBhY2s6Ly8vLi9jbGllbnQvdXRpbHMvbWV0YVRhZ3MuanMiLCJ3ZWJwYWNrOi8vLy4vY2xpZW50L3V0aWxzL3BhZ2VUaXRsZS5qcyIsIndlYnBhY2s6Ly8vLi9jbGllbnQvYWN0aW9ucy9jaGFubmVsLmpzIiwid2VicGFjazovLy8uL2NsaWVudC9hY3Rpb25zL3B1Ymxpc2guanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwicHJvcC10eXBlc1wiIiwid2VicGFjazovLy8uL2NsaWVudC9wYWdlcy9FcnJvclBhZ2UvaW5kZXguanN4Iiwid2VicGFjazovLy9leHRlcm5hbCBcInBhc3Nwb3J0XCIiLCJ3ZWJwYWNrOi8vLy4vY29uZmlnL215c3FsQ29uZmlnLmpzIiwid2VicGFjazovLy8uL2NvbmZpZy9zbGFja0NvbmZpZy5qcyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJwYXNzcG9ydC1sb2NhbFwiIiwid2VicGFjazovLy9leHRlcm5hbCBcInNlcXVlbGl6ZVwiIiwid2VicGFjazovLy8uL3NlcnZlci9oZWxwZXJzL3NlcXVlbGl6ZUhlbHBlcnMuanMiLCJ3ZWJwYWNrOi8vLy4vc2VydmVyL2hlbHBlcnMvcHVibGlzaEhlbHBlcnMuanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwiZnNcIiIsIndlYnBhY2s6Ly8vLi9zZXJ2ZXIvaGVscGVycy9lcnJvckhhbmRsZXJzLmpzIiwid2VicGFjazovLy8uL3NlcnZlci9jb250cm9sbGVycy9zZXJ2ZUNvbnRyb2xsZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc2VydmVyL2hlbHBlcnMvaGFuZGxlUGFnZVJlbmRlci5qc3giLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwicmVhY3QtZG9tL3NlcnZlclwiIiwid2VicGFjazovLy8uL2NsaWVudC9yZWR1Y2Vycy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9jbGllbnQvY29uc3RhbnRzL3B1Ymxpc2hfYWN0aW9uX3R5cGVzLmpzIiwid2VicGFjazovLy8uL2NsaWVudC9jb25zdGFudHMvY2hhbm5lbF9hY3Rpb25fdHlwZXMuanMiLCJ3ZWJwYWNrOi8vLy4vY2xpZW50L2NvbnN0YW50cy9hc3NldF9kaXNwbGF5X3N0YXRlcy5qcyIsIndlYnBhY2s6Ly8vLi9jbGllbnQvY29tcG9uZW50cy9HQUxpc3RlbmVyL2luZGV4LmpzeCIsIndlYnBhY2s6Ly8vLi9jbGllbnQvYXBwLmpzIiwid2VicGFjazovLy8uL2NsaWVudC91dGlscyBeLiokIiwid2VicGFjazovLy8uL2NsaWVudC91dGlscy9maWxlLmpzIiwid2VicGFjazovLy8uL2NsaWVudC91dGlscy9wdWJsaXNoLmpzIiwid2VicGFjazovLy8uL2NsaWVudC91dGlscy92YWxpZGF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9jbGllbnQvY29tcG9uZW50cy9Qcm9ncmVzc0Jhci9pbmRleC5qc3giLCJ3ZWJwYWNrOi8vLy4vY2xpZW50L2NvbnN0YW50cy9zaG93X3JlcXVlc3RfdHlwZXMuanMiLCJ3ZWJwYWNrOi8vLy4vY2xpZW50L2NvbnRhaW5lcnMvQXNzZXREaXNwbGF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL3NlcnZlci9oZWxwZXJzL3JlbmRlckZ1bGxQYWdlLmpzIiwid2VicGFjazovLy8uL2NsaWVudC9zZWxlY3RvcnMvc2l0ZS5qcyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJiYWJlbC1wb2x5ZmlsbFwiIiwid2VicGFjazovLy9leHRlcm5hbCBcIndoYXR3Zy1mZXRjaFwiIiwid2VicGFjazovLy8uL3NwZWVjaC5qcyIsIndlYnBhY2s6Ly8vLi9zZXJ2ZXIvc2VydmVyLmpzIiwid2VicGFjazovLy9leHRlcm5hbCBcImV4cHJlc3NcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJib2R5LXBhcnNlclwiIiwid2VicGFjazovLy9leHRlcm5hbCBcImV4cHJlc3MtaGFuZGxlYmFyc1wiIiwid2VicGFjazovLy9leHRlcm5hbCBcImhhbmRsZWJhcnNcIiIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJoZWxtZXRcIiIsIndlYnBhY2s6Ly8vLi9zZXJ2ZXIvaGVscGVycy9hdXRoSGVscGVycy5qcyIsIndlYnBhY2s6Ly8vZXh0ZXJuYWwgXCJjb29raWUtc2Vzc2lvblwiIiwid2VicGFjazovLy9leHRlcm5hbCBcImh0dHBcIiIsIndlYnBhY2s6Ly8vLi9zZXJ2ZXIvcGFzc3BvcnQvbG9jYWwtc2lnbnVwLmpzIiwid2VicGFjazovLy9leHRlcm5hbCBcImF4aW9zXCIiLCJ3ZWJwYWNrOi8vLy4vY29uZmlnL2xicnlDb25maWcuanMiLCJ3ZWJwYWNrOi8vL2V4dGVybmFsIFwidW5pdmVyc2FsLWFuYWx5dGljc1wiIiw