add Infura wallet support
This commit is contained in:
parent
05e7889dc0
commit
ac89f0e5e9
9 changed files with 472 additions and 513 deletions
|
|
@ -181,6 +181,7 @@ function fetchData () {
|
||||||
{code: 'mock-ticker', display: 'Mock ticker', class: 'ticker', cryptos: ALL_CRYPTOS},
|
{code: 'mock-ticker', display: 'Mock ticker', class: 'ticker', cryptos: ALL_CRYPTOS},
|
||||||
{code: 'bitcoind', display: 'bitcoind', class: 'wallet', cryptos: ['BTC']},
|
{code: 'bitcoind', display: 'bitcoind', class: 'wallet', cryptos: ['BTC']},
|
||||||
{code: 'no-layer2', display: 'No Layer 2', class: 'layer2', cryptos: ALL_CRYPTOS},
|
{code: 'no-layer2', display: 'No Layer 2', class: 'layer2', cryptos: ALL_CRYPTOS},
|
||||||
|
{code: 'infura', display: 'Infura', class: 'wallet', cryptos: ['ETH']},
|
||||||
{code: 'geth', display: 'geth', class: 'wallet', cryptos: ['ETH']},
|
{code: 'geth', display: 'geth', class: 'wallet', cryptos: ['ETH']},
|
||||||
{code: 'zcashd', display: 'zcashd', class: 'wallet', cryptos: ['ZEC']},
|
{code: 'zcashd', display: 'zcashd', class: 'wallet', cryptos: ['ZEC']},
|
||||||
{code: 'litecoind', display: 'litecoind', class: 'wallet', cryptos: ['LTC']},
|
{code: 'litecoind', display: 'litecoind', class: 'wallet', cryptos: ['LTC']},
|
||||||
|
|
|
||||||
187
lib/plugins/wallet/geth/base.js
Normal file
187
lib/plugins/wallet/geth/base.js
Normal file
|
|
@ -0,0 +1,187 @@
|
||||||
|
'use strict'
|
||||||
|
|
||||||
|
const Web3 = require('web3')
|
||||||
|
const web3 = new Web3()
|
||||||
|
const hdkey = require('ethereumjs-wallet/hdkey')
|
||||||
|
const Tx = require('ethereumjs-tx')
|
||||||
|
const util = require('ethereumjs-util')
|
||||||
|
const pify = require('pify')
|
||||||
|
|
||||||
|
const NAME = 'geth'
|
||||||
|
exports.SUPPORTED_MODULES = ['wallet']
|
||||||
|
|
||||||
|
const paymentPrefixPath = "m/44'/60'/0'/0'"
|
||||||
|
const defaultPrefixPath = "m/44'/60'/1'/0'"
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
NAME,
|
||||||
|
balance,
|
||||||
|
sendCoins,
|
||||||
|
newAddress,
|
||||||
|
getStatus,
|
||||||
|
sweep,
|
||||||
|
defaultAddress,
|
||||||
|
supportsHd: true,
|
||||||
|
newFunding,
|
||||||
|
privateKey,
|
||||||
|
isStrictAddress,
|
||||||
|
connect
|
||||||
|
}
|
||||||
|
|
||||||
|
function connect (url) {
|
||||||
|
if (!web3.isConnected()) {
|
||||||
|
web3.setProvider(new web3.providers.HttpProvider(url))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const hex = bigNum => '0x' + bigNum.truncated().toString(16)
|
||||||
|
|
||||||
|
function privateKey (account) {
|
||||||
|
return defaultWallet(account).getPrivateKey()
|
||||||
|
}
|
||||||
|
|
||||||
|
function isStrictAddress (cryptoCode, toAddress) {
|
||||||
|
return cryptoCode === 'ETH' && util.isValidChecksumAddress(toAddress)
|
||||||
|
}
|
||||||
|
|
||||||
|
function sendCoins (account, toAddress, cryptoAtoms, cryptoCode) {
|
||||||
|
return generateTx(toAddress, defaultWallet(account), cryptoAtoms, false)
|
||||||
|
.then(pify(web3.eth.sendRawTransaction))
|
||||||
|
}
|
||||||
|
|
||||||
|
function checkCryptoCode (cryptoCode) {
|
||||||
|
if (cryptoCode === 'ETH') return Promise.resolve()
|
||||||
|
return Promise.reject(new Error('cryptoCode must be ETH'))
|
||||||
|
}
|
||||||
|
|
||||||
|
function balance (account, cryptoCode) {
|
||||||
|
return checkCryptoCode(cryptoCode)
|
||||||
|
.then(() => pendingBalance(defaultAddress(account)))
|
||||||
|
}
|
||||||
|
|
||||||
|
const pendingBalance = address => _balance(true, address)
|
||||||
|
const confirmedBalance = address => _balance(false, address)
|
||||||
|
|
||||||
|
function _balance (includePending, address) {
|
||||||
|
const block = includePending ? 'pending' : undefined
|
||||||
|
|
||||||
|
return pify(web3.eth.getBalance)(address.toLowerCase(), block)
|
||||||
|
}
|
||||||
|
|
||||||
|
function generateTx (_toAddress, wallet, amount, includesFee) {
|
||||||
|
const fromAddress = '0x' + wallet.getAddress().toString('hex')
|
||||||
|
const toAddress = _toAddress.toLowerCase()
|
||||||
|
|
||||||
|
const txTemplate = {
|
||||||
|
from: fromAddress,
|
||||||
|
to: toAddress,
|
||||||
|
value: amount
|
||||||
|
}
|
||||||
|
|
||||||
|
const promises = [
|
||||||
|
pify(web3.eth.estimateGas)(txTemplate),
|
||||||
|
pify(web3.eth.getGasPrice)(),
|
||||||
|
pify(web3.eth.getTransactionCount)(fromAddress)
|
||||||
|
]
|
||||||
|
|
||||||
|
return Promise.all(promises)
|
||||||
|
.then(arr => {
|
||||||
|
const gas = arr[0]
|
||||||
|
const gasPrice = arr[1]
|
||||||
|
const txCount = arr[2]
|
||||||
|
|
||||||
|
const toSend = includesFee
|
||||||
|
? amount.minus(gasPrice.times(gas))
|
||||||
|
: amount
|
||||||
|
|
||||||
|
const rawTx = {
|
||||||
|
nonce: txCount,
|
||||||
|
gasPrice: hex(gasPrice),
|
||||||
|
gasLimit: gas,
|
||||||
|
to: toAddress,
|
||||||
|
from: fromAddress,
|
||||||
|
value: hex(toSend)
|
||||||
|
}
|
||||||
|
|
||||||
|
const tx = new Tx(rawTx)
|
||||||
|
const privateKey = wallet.getPrivateKey()
|
||||||
|
|
||||||
|
tx.sign(privateKey)
|
||||||
|
|
||||||
|
return '0x' + tx.serialize().toString('hex')
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function defaultWallet (account) {
|
||||||
|
return defaultHdNode(account).deriveChild(0).getWallet()
|
||||||
|
}
|
||||||
|
|
||||||
|
function defaultAddress (account) {
|
||||||
|
return defaultWallet(account).getChecksumAddressString()
|
||||||
|
}
|
||||||
|
|
||||||
|
function sweep (account, cryptoCode, hdIndex) {
|
||||||
|
const wallet = paymentHdNode(account).deriveChild(hdIndex).getWallet()
|
||||||
|
const fromAddress = wallet.getChecksumAddressString()
|
||||||
|
|
||||||
|
return confirmedBalance(fromAddress)
|
||||||
|
.then(r => {
|
||||||
|
if (r.eq(0)) return
|
||||||
|
|
||||||
|
return generateTx(defaultAddress(account), wallet, r, true)
|
||||||
|
.then(signedTx => pify(web3.eth.sendRawTransaction)(signedTx))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function newAddress (account, info) {
|
||||||
|
const childNode = paymentHdNode(account).deriveChild(info.hdIndex)
|
||||||
|
return Promise.resolve(childNode.getWallet().getChecksumAddressString())
|
||||||
|
}
|
||||||
|
|
||||||
|
function getStatus (account, toAddress, cryptoAtoms, cryptoCode) {
|
||||||
|
return checkCryptoCode(cryptoCode)
|
||||||
|
.then(() => confirmedBalance(toAddress))
|
||||||
|
.then(confirmed => {
|
||||||
|
if (confirmed.gte(cryptoAtoms)) return {status: 'confirmed'}
|
||||||
|
|
||||||
|
return pendingBalance(toAddress)
|
||||||
|
.then(pending => {
|
||||||
|
if (pending.gte(cryptoAtoms)) return {status: 'published'}
|
||||||
|
if (pending.gt(0)) return {status: 'insufficientFunds'}
|
||||||
|
return {status: 'notSeen'}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
function paymentHdNode (account) {
|
||||||
|
const masterSeed = account.seed
|
||||||
|
if (!masterSeed) throw new Error('No master seed!')
|
||||||
|
const key = hdkey.fromMasterSeed(masterSeed)
|
||||||
|
return key.derivePath(paymentPrefixPath)
|
||||||
|
}
|
||||||
|
|
||||||
|
function defaultHdNode (account) {
|
||||||
|
const masterSeed = account.seed
|
||||||
|
if (!masterSeed) throw new Error('No master seed!')
|
||||||
|
const key = hdkey.fromMasterSeed(masterSeed)
|
||||||
|
return key.derivePath(defaultPrefixPath)
|
||||||
|
}
|
||||||
|
|
||||||
|
function newFunding (account, cryptoCode) {
|
||||||
|
return checkCryptoCode(cryptoCode)
|
||||||
|
.then(() => {
|
||||||
|
const fundingAddress = defaultAddress(account)
|
||||||
|
|
||||||
|
const promises = [
|
||||||
|
pendingBalance(fundingAddress),
|
||||||
|
confirmedBalance(fundingAddress)
|
||||||
|
]
|
||||||
|
|
||||||
|
return Promise.all(promises)
|
||||||
|
.then(([fundingPendingBalance, fundingConfirmedBalance]) => ({
|
||||||
|
fundingPendingBalance,
|
||||||
|
fundingConfirmedBalance,
|
||||||
|
fundingAddress
|
||||||
|
}))
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
@ -1,189 +1,9 @@
|
||||||
'use strict'
|
const base = require('./base')
|
||||||
|
|
||||||
const Web3 = require('web3')
|
|
||||||
const web3 = new Web3()
|
|
||||||
const hdkey = require('ethereumjs-wallet/hdkey')
|
|
||||||
const Tx = require('ethereumjs-tx')
|
|
||||||
const util = require('ethereumjs-util')
|
|
||||||
const pify = require('pify')
|
|
||||||
|
|
||||||
const coinUtils = require('../../../coin-utils')
|
const coinUtils = require('../../../coin-utils')
|
||||||
|
|
||||||
const NAME = 'geth'
|
|
||||||
exports.SUPPORTED_MODULES = ['wallet']
|
|
||||||
|
|
||||||
const paymentPrefixPath = "m/44'/60'/0'/0'"
|
|
||||||
const defaultPrefixPath = "m/44'/60'/1'/0'"
|
|
||||||
|
|
||||||
const cryptoRec = coinUtils.getCryptoCurrency('ETH')
|
const cryptoRec = coinUtils.getCryptoCurrency('ETH')
|
||||||
const defaultPort = cryptoRec.defaultPort
|
const defaultPort = cryptoRec.defaultPort
|
||||||
|
|
||||||
module.exports = {
|
base.connect(`http://localhost:${defaultPort}`)
|
||||||
NAME,
|
|
||||||
balance,
|
|
||||||
sendCoins,
|
|
||||||
newAddress,
|
|
||||||
getStatus,
|
|
||||||
sweep,
|
|
||||||
defaultAddress,
|
|
||||||
supportsHd: true,
|
|
||||||
newFunding,
|
|
||||||
privateKey,
|
|
||||||
isStrictAddress
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!web3.isConnected()) {
|
module.exports = base
|
||||||
web3.setProvider(new web3.providers.HttpProvider(`http://localhost:${defaultPort}`))
|
|
||||||
}
|
|
||||||
|
|
||||||
const hex = bigNum => '0x' + bigNum.truncated().toString(16)
|
|
||||||
|
|
||||||
function privateKey (account) {
|
|
||||||
return defaultWallet(account).getPrivateKey()
|
|
||||||
}
|
|
||||||
|
|
||||||
function isStrictAddress (cryptoCode, toAddress) {
|
|
||||||
return cryptoCode === 'ETH' && util.isValidChecksumAddress(toAddress)
|
|
||||||
}
|
|
||||||
|
|
||||||
function sendCoins (account, toAddress, cryptoAtoms, cryptoCode) {
|
|
||||||
return generateTx(toAddress, defaultWallet(account), cryptoAtoms, false)
|
|
||||||
.then(pify(web3.eth.sendRawTransaction))
|
|
||||||
}
|
|
||||||
|
|
||||||
function checkCryptoCode (cryptoCode) {
|
|
||||||
if (cryptoCode === 'ETH') return Promise.resolve()
|
|
||||||
return Promise.reject(new Error('cryptoCode must be ETH'))
|
|
||||||
}
|
|
||||||
|
|
||||||
function balance (account, cryptoCode) {
|
|
||||||
return checkCryptoCode(cryptoCode)
|
|
||||||
.then(() => pendingBalance(defaultAddress(account)))
|
|
||||||
}
|
|
||||||
|
|
||||||
const pendingBalance = address => _balance(true, address)
|
|
||||||
const confirmedBalance = address => _balance(false, address)
|
|
||||||
|
|
||||||
function _balance (includePending, address) {
|
|
||||||
const block = includePending ? 'pending' : undefined
|
|
||||||
|
|
||||||
return pify(web3.eth.getBalance)(address.toLowerCase(), block)
|
|
||||||
}
|
|
||||||
|
|
||||||
function generateTx (_toAddress, wallet, amount, includesFee) {
|
|
||||||
const fromAddress = '0x' + wallet.getAddress().toString('hex')
|
|
||||||
const toAddress = _toAddress.toLowerCase()
|
|
||||||
|
|
||||||
const txTemplate = {
|
|
||||||
from: fromAddress,
|
|
||||||
to: toAddress,
|
|
||||||
value: amount
|
|
||||||
}
|
|
||||||
|
|
||||||
const promises = [
|
|
||||||
pify(web3.eth.estimateGas)(txTemplate),
|
|
||||||
pify(web3.eth.getGasPrice)(),
|
|
||||||
pify(web3.eth.getTransactionCount)(fromAddress)
|
|
||||||
]
|
|
||||||
|
|
||||||
return Promise.all(promises)
|
|
||||||
.then(arr => {
|
|
||||||
const gas = arr[0]
|
|
||||||
const gasPrice = arr[1]
|
|
||||||
const txCount = arr[2]
|
|
||||||
|
|
||||||
const toSend = includesFee
|
|
||||||
? amount.minus(gasPrice.times(gas))
|
|
||||||
: amount
|
|
||||||
|
|
||||||
const rawTx = {
|
|
||||||
nonce: txCount,
|
|
||||||
gasPrice: hex(gasPrice),
|
|
||||||
gasLimit: gas,
|
|
||||||
to: toAddress,
|
|
||||||
from: fromAddress,
|
|
||||||
value: hex(toSend)
|
|
||||||
}
|
|
||||||
|
|
||||||
const tx = new Tx(rawTx)
|
|
||||||
const privateKey = wallet.getPrivateKey()
|
|
||||||
|
|
||||||
tx.sign(privateKey)
|
|
||||||
|
|
||||||
return '0x' + tx.serialize().toString('hex')
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
function defaultWallet (account) {
|
|
||||||
return defaultHdNode(account).deriveChild(0).getWallet()
|
|
||||||
}
|
|
||||||
|
|
||||||
function defaultAddress (account) {
|
|
||||||
return defaultWallet(account).getChecksumAddressString()
|
|
||||||
}
|
|
||||||
|
|
||||||
function sweep (account, cryptoCode, hdIndex) {
|
|
||||||
const wallet = paymentHdNode(account).deriveChild(hdIndex).getWallet()
|
|
||||||
const fromAddress = wallet.getChecksumAddressString()
|
|
||||||
|
|
||||||
return confirmedBalance(fromAddress)
|
|
||||||
.then(r => {
|
|
||||||
if (r.eq(0)) return
|
|
||||||
|
|
||||||
return generateTx(defaultAddress(account), wallet, r, true)
|
|
||||||
.then(signedTx => pify(web3.eth.sendRawTransaction)(signedTx))
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
function newAddress (account, info) {
|
|
||||||
const childNode = paymentHdNode(account).deriveChild(info.hdIndex)
|
|
||||||
return Promise.resolve(childNode.getWallet().getChecksumAddressString())
|
|
||||||
}
|
|
||||||
|
|
||||||
function getStatus (account, toAddress, cryptoAtoms, cryptoCode) {
|
|
||||||
return checkCryptoCode(cryptoCode)
|
|
||||||
.then(() => confirmedBalance(toAddress))
|
|
||||||
.then(confirmed => {
|
|
||||||
if (confirmed.gte(cryptoAtoms)) return {status: 'confirmed'}
|
|
||||||
|
|
||||||
return pendingBalance(toAddress)
|
|
||||||
.then(pending => {
|
|
||||||
if (pending.gte(cryptoAtoms)) return {status: 'published'}
|
|
||||||
if (pending.gt(0)) return {status: 'insufficientFunds'}
|
|
||||||
return {status: 'notSeen'}
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
function paymentHdNode (account) {
|
|
||||||
const masterSeed = account.seed
|
|
||||||
if (!masterSeed) throw new Error('No master seed!')
|
|
||||||
const key = hdkey.fromMasterSeed(masterSeed)
|
|
||||||
return key.derivePath(paymentPrefixPath)
|
|
||||||
}
|
|
||||||
|
|
||||||
function defaultHdNode (account) {
|
|
||||||
const masterSeed = account.seed
|
|
||||||
if (!masterSeed) throw new Error('No master seed!')
|
|
||||||
const key = hdkey.fromMasterSeed(masterSeed)
|
|
||||||
return key.derivePath(defaultPrefixPath)
|
|
||||||
}
|
|
||||||
|
|
||||||
function newFunding (account, cryptoCode) {
|
|
||||||
return checkCryptoCode(cryptoCode)
|
|
||||||
.then(() => {
|
|
||||||
const fundingAddress = defaultAddress(account)
|
|
||||||
|
|
||||||
const promises = [
|
|
||||||
pendingBalance(fundingAddress),
|
|
||||||
confirmedBalance(fundingAddress)
|
|
||||||
]
|
|
||||||
|
|
||||||
return Promise.all(promises)
|
|
||||||
.then(([fundingPendingBalance, fundingConfirmedBalance]) => ({
|
|
||||||
fundingPendingBalance,
|
|
||||||
fundingConfirmedBalance,
|
|
||||||
fundingAddress
|
|
||||||
}))
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
|
||||||
11
lib/plugins/wallet/infura/infura.js
Normal file
11
lib/plugins/wallet/infura/infura.js
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
const _ = require('lodash/fp')
|
||||||
|
const base = require('../geth/base')
|
||||||
|
|
||||||
|
function run (account) {
|
||||||
|
const apiKey = account.apiKey
|
||||||
|
if (!apiKey) throw new Error('Need to configure API key for Infura')
|
||||||
|
|
||||||
|
base.connect(`https://mainnet.infura.io/${apiKey}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = _.merge(base, {run})
|
||||||
|
|
@ -34,9 +34,11 @@ function fetchWallet (settings, cryptoCode) {
|
||||||
const masterSeed = Buffer.from(hex.trim(), 'hex')
|
const masterSeed = Buffer.from(hex.trim(), 'hex')
|
||||||
const plugin = configManager.cryptoScoped(cryptoCode, settings.config).wallet
|
const plugin = configManager.cryptoScoped(cryptoCode, settings.config).wallet
|
||||||
const wallet = ph.load(ph.WALLET, plugin)
|
const wallet = ph.load(ph.WALLET, plugin)
|
||||||
const account = settings.accounts[plugin]
|
const rawAccount = settings.accounts[plugin]
|
||||||
|
const account = _.set('seed', computeSeed(masterSeed), rawAccount)
|
||||||
|
if (_.isFunction(wallet.run)) wallet.run(account)
|
||||||
|
|
||||||
return {wallet, account: _.set('seed', computeSeed(masterSeed), account)}
|
return {wallet, account}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
14
package-lock.json
generated
14
package-lock.json
generated
|
|
@ -8665,15 +8665,21 @@
|
||||||
"integrity": "sha1-eWkVhNmGB/UHC9O3CkDmuyLkAes="
|
"integrity": "sha1-eWkVhNmGB/UHC9O3CkDmuyLkAes="
|
||||||
},
|
},
|
||||||
"web3": {
|
"web3": {
|
||||||
"version": "0.19.1",
|
"version": "0.20.6",
|
||||||
"resolved": "https://registry.npmjs.org/web3/-/web3-0.19.1.tgz",
|
"resolved": "https://registry.npmjs.org/web3/-/web3-0.20.6.tgz",
|
||||||
"integrity": "sha1-52PVsRB8S8JKvU+MvuG6Nlnm6zE=",
|
"integrity": "sha1-PpcwauAk+yThCj11yIQwJWIhUSA=",
|
||||||
"requires": {
|
"requires": {
|
||||||
"bignumber.js": "^4.0.2",
|
"bignumber.js": "git+https://github.com/frozeman/bignumber.js-nolookahead.git#57692b3ecfc98bbdd6b3a516cb2353652ea49934",
|
||||||
"crypto-js": "^3.1.4",
|
"crypto-js": "^3.1.4",
|
||||||
"utf8": "^2.1.1",
|
"utf8": "^2.1.1",
|
||||||
"xhr2": "*",
|
"xhr2": "*",
|
||||||
"xmlhttprequest": "*"
|
"xmlhttprequest": "*"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"bignumber.js": {
|
||||||
|
"version": "git+https://github.com/frozeman/bignumber.js-nolookahead.git#57692b3ecfc98bbdd6b3a516cb2353652ea49934",
|
||||||
|
"from": "git+https://github.com/frozeman/bignumber.js-nolookahead.git"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"which": {
|
"which": {
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,7 @@
|
||||||
"talisman": "^0.20.0",
|
"talisman": "^0.20.0",
|
||||||
"twilio": "^3.6.1",
|
"twilio": "^3.6.1",
|
||||||
"uuid": "^3.1.0",
|
"uuid": "^3.1.0",
|
||||||
"web3": "^0.19.1",
|
"web3": "^0.20.6",
|
||||||
"winston": "^2.4.2",
|
"winston": "^2.4.2",
|
||||||
"ws": "^3.1.0",
|
"ws": "^3.1.0",
|
||||||
"xml-stream": "^0.4.5"
|
"xml-stream": "^0.4.5"
|
||||||
|
|
|
||||||
564
public/elm.js
564
public/elm.js
|
|
@ -6446,48 +6446,6 @@ var _elm_lang$core$Set$partition = F2(
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
var _elm_community$json_extra$Json_Decode_Extra$when = F3(
|
|
||||||
function (checkDecoder, check, passDecoder) {
|
|
||||||
return A2(
|
|
||||||
_elm_lang$core$Json_Decode$andThen,
|
|
||||||
function (checkVal) {
|
|
||||||
return check(checkVal) ? passDecoder : _elm_lang$core$Json_Decode$fail(
|
|
||||||
A2(
|
|
||||||
_elm_lang$core$Basics_ops['++'],
|
|
||||||
'Check failed with input `',
|
|
||||||
A2(
|
|
||||||
_elm_lang$core$Basics_ops['++'],
|
|
||||||
_elm_lang$core$Basics$toString(checkVal),
|
|
||||||
'`')));
|
|
||||||
},
|
|
||||||
checkDecoder);
|
|
||||||
});
|
|
||||||
var _elm_community$json_extra$Json_Decode_Extra$combine = A2(
|
|
||||||
_elm_lang$core$List$foldr,
|
|
||||||
_elm_lang$core$Json_Decode$map2(
|
|
||||||
F2(
|
|
||||||
function (x, y) {
|
|
||||||
return {ctor: '::', _0: x, _1: y};
|
|
||||||
})),
|
|
||||||
_elm_lang$core$Json_Decode$succeed(
|
|
||||||
{ctor: '[]'}));
|
|
||||||
var _elm_community$json_extra$Json_Decode_Extra$collection = function (decoder) {
|
|
||||||
return A2(
|
|
||||||
_elm_lang$core$Json_Decode$andThen,
|
|
||||||
function (length) {
|
|
||||||
return _elm_community$json_extra$Json_Decode_Extra$combine(
|
|
||||||
A2(
|
|
||||||
_elm_lang$core$List$map,
|
|
||||||
function (index) {
|
|
||||||
return A2(
|
|
||||||
_elm_lang$core$Json_Decode$field,
|
|
||||||
_elm_lang$core$Basics$toString(index),
|
|
||||||
decoder);
|
|
||||||
},
|
|
||||||
A2(_elm_lang$core$List$range, 0, length - 1)));
|
|
||||||
},
|
|
||||||
A2(_elm_lang$core$Json_Decode$field, 'length', _elm_lang$core$Json_Decode$int));
|
|
||||||
};
|
|
||||||
var _elm_community$json_extra$Json_Decode_Extra$fromResult = function (result) {
|
var _elm_community$json_extra$Json_Decode_Extra$fromResult = function (result) {
|
||||||
var _p0 = result;
|
var _p0 = result;
|
||||||
if (_p0.ctor === 'Ok') {
|
if (_p0.ctor === 'Ok') {
|
||||||
|
|
@ -6519,19 +6477,6 @@ var _elm_community$json_extra$Json_Decode_Extra$doubleEncoded = function (decode
|
||||||
},
|
},
|
||||||
_elm_lang$core$Json_Decode$string);
|
_elm_lang$core$Json_Decode$string);
|
||||||
};
|
};
|
||||||
var _elm_community$json_extra$Json_Decode_Extra$keys = A2(
|
|
||||||
_elm_lang$core$Json_Decode$map,
|
|
||||||
A2(
|
|
||||||
_elm_lang$core$List$foldl,
|
|
||||||
F2(
|
|
||||||
function (_p4, acc) {
|
|
||||||
var _p5 = _p4;
|
|
||||||
return {ctor: '::', _0: _p5._0, _1: acc};
|
|
||||||
}),
|
|
||||||
{ctor: '[]'}),
|
|
||||||
_elm_lang$core$Json_Decode$keyValuePairs(
|
|
||||||
_elm_lang$core$Json_Decode$succeed(
|
|
||||||
{ctor: '_Tuple0'})));
|
|
||||||
var _elm_community$json_extra$Json_Decode_Extra$sequenceHelp = F2(
|
var _elm_community$json_extra$Json_Decode_Extra$sequenceHelp = F2(
|
||||||
function (decoders, jsonValues) {
|
function (decoders, jsonValues) {
|
||||||
return (!_elm_lang$core$Native_Utils.eq(
|
return (!_elm_lang$core$Native_Utils.eq(
|
||||||
|
|
@ -6572,11 +6517,11 @@ var _elm_community$json_extra$Json_Decode_Extra$indexedList = function (indexedD
|
||||||
var _elm_community$json_extra$Json_Decode_Extra$optionalField = F2(
|
var _elm_community$json_extra$Json_Decode_Extra$optionalField = F2(
|
||||||
function (fieldName, decoder) {
|
function (fieldName, decoder) {
|
||||||
var finishDecoding = function (json) {
|
var finishDecoding = function (json) {
|
||||||
var _p6 = A2(
|
var _p4 = A2(
|
||||||
_elm_lang$core$Json_Decode$decodeValue,
|
_elm_lang$core$Json_Decode$decodeValue,
|
||||||
A2(_elm_lang$core$Json_Decode$field, fieldName, _elm_lang$core$Json_Decode$value),
|
A2(_elm_lang$core$Json_Decode$field, fieldName, _elm_lang$core$Json_Decode$value),
|
||||||
json);
|
json);
|
||||||
if (_p6.ctor === 'Ok') {
|
if (_p4.ctor === 'Ok') {
|
||||||
return A2(
|
return A2(
|
||||||
_elm_lang$core$Json_Decode$map,
|
_elm_lang$core$Json_Decode$map,
|
||||||
_elm_lang$core$Maybe$Just,
|
_elm_lang$core$Maybe$Just,
|
||||||
|
|
@ -6596,21 +6541,21 @@ var _elm_community$json_extra$Json_Decode_Extra$withDefault = F2(
|
||||||
});
|
});
|
||||||
var _elm_community$json_extra$Json_Decode_Extra$decodeDictFromTuples = F2(
|
var _elm_community$json_extra$Json_Decode_Extra$decodeDictFromTuples = F2(
|
||||||
function (keyDecoder, tuples) {
|
function (keyDecoder, tuples) {
|
||||||
var _p7 = tuples;
|
var _p5 = tuples;
|
||||||
if (_p7.ctor === '[]') {
|
if (_p5.ctor === '[]') {
|
||||||
return _elm_lang$core$Json_Decode$succeed(_elm_lang$core$Dict$empty);
|
return _elm_lang$core$Json_Decode$succeed(_elm_lang$core$Dict$empty);
|
||||||
} else {
|
} else {
|
||||||
var _p8 = A2(_elm_lang$core$Json_Decode$decodeString, keyDecoder, _p7._0._0);
|
var _p6 = A2(_elm_lang$core$Json_Decode$decodeString, keyDecoder, _p5._0._0);
|
||||||
if (_p8.ctor === 'Ok') {
|
if (_p6.ctor === 'Ok') {
|
||||||
return A2(
|
return A2(
|
||||||
_elm_lang$core$Json_Decode$andThen,
|
_elm_lang$core$Json_Decode$andThen,
|
||||||
function (_p9) {
|
function (_p7) {
|
||||||
return _elm_lang$core$Json_Decode$succeed(
|
return _elm_lang$core$Json_Decode$succeed(
|
||||||
A3(_elm_lang$core$Dict$insert, _p8._0, _p7._0._1, _p9));
|
A3(_elm_lang$core$Dict$insert, _p6._0, _p5._0._1, _p7));
|
||||||
},
|
},
|
||||||
A2(_elm_community$json_extra$Json_Decode_Extra$decodeDictFromTuples, keyDecoder, _p7._1));
|
A2(_elm_community$json_extra$Json_Decode_Extra$decodeDictFromTuples, keyDecoder, _p5._1));
|
||||||
} else {
|
} else {
|
||||||
return _elm_lang$core$Json_Decode$fail(_p8._0);
|
return _elm_lang$core$Json_Decode$fail(_p6._0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
@ -6629,9 +6574,9 @@ var _elm_community$json_extra$Json_Decode_Extra$set = function (decoder) {
|
||||||
};
|
};
|
||||||
var _elm_community$json_extra$Json_Decode_Extra$date = A2(
|
var _elm_community$json_extra$Json_Decode_Extra$date = A2(
|
||||||
_elm_lang$core$Json_Decode$andThen,
|
_elm_lang$core$Json_Decode$andThen,
|
||||||
function (_p10) {
|
function (_p8) {
|
||||||
return _elm_community$json_extra$Json_Decode_Extra$fromResult(
|
return _elm_community$json_extra$Json_Decode_Extra$fromResult(
|
||||||
_elm_lang$core$Date$fromString(_p10));
|
_elm_lang$core$Date$fromString(_p8));
|
||||||
},
|
},
|
||||||
_elm_lang$core$Json_Decode$string);
|
_elm_lang$core$Json_Decode$string);
|
||||||
var _elm_community$json_extra$Json_Decode_Extra$andMap = _elm_lang$core$Json_Decode$map2(
|
var _elm_community$json_extra$Json_Decode_Extra$andMap = _elm_lang$core$Json_Decode$map2(
|
||||||
|
|
@ -12449,6 +12394,42 @@ var _justinmimbs$elm_date_extra$Date_Extra_Facts$daysBeforeStartOfMonth = F2(
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$toUnixTime = function (rd) {
|
||||||
|
return (rd - 719163) * _justinmimbs$elm_date_extra$Date_Extra_Facts$msPerDay;
|
||||||
|
};
|
||||||
|
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekdayNumber = function (rd) {
|
||||||
|
var _p0 = A2(_elm_lang$core$Basics_ops['%'], rd, 7);
|
||||||
|
if (_p0 === 0) {
|
||||||
|
return 7;
|
||||||
|
} else {
|
||||||
|
return _p0;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$leapYearsInCommonEra = function (y) {
|
||||||
|
return (((y / 4) | 0) - ((y / 100) | 0)) + ((y / 400) | 0);
|
||||||
|
};
|
||||||
|
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$rataDieBeforeStartOfYear = function (y) {
|
||||||
|
return (365 * (y - 1)) + _justinmimbs$elm_date_extra$Date_Internal_RataDie$leapYearsInCommonEra(y - 1);
|
||||||
|
};
|
||||||
|
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$fromOrdinalDate = F2(
|
||||||
|
function (y, d) {
|
||||||
|
return _justinmimbs$elm_date_extra$Date_Internal_RataDie$rataDieBeforeStartOfYear(y) + d;
|
||||||
|
});
|
||||||
|
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$week1Day1OfWeekYear = function (y) {
|
||||||
|
var jan4RD = A2(_justinmimbs$elm_date_extra$Date_Internal_RataDie$fromOrdinalDate, y, 4);
|
||||||
|
return (jan4RD - _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekdayNumber(jan4RD)) + 1;
|
||||||
|
};
|
||||||
|
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$fromWeekDate = F3(
|
||||||
|
function (y, w, d) {
|
||||||
|
var week1Day0RD = _justinmimbs$elm_date_extra$Date_Internal_RataDie$week1Day1OfWeekYear(y) - 1;
|
||||||
|
return (week1Day0RD + ((w - 1) * 7)) + d;
|
||||||
|
});
|
||||||
|
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$fromCalendarDate = F3(
|
||||||
|
function (y, m, d) {
|
||||||
|
var md = A2(_justinmimbs$elm_date_extra$Date_Extra_Facts$daysBeforeStartOfMonth, y, m);
|
||||||
|
var yd = _justinmimbs$elm_date_extra$Date_Internal_RataDie$rataDieBeforeStartOfYear(y);
|
||||||
|
return (yd + md) + d;
|
||||||
|
});
|
||||||
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$divideInt = F2(
|
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$divideInt = F2(
|
||||||
function (a, b) {
|
function (a, b) {
|
||||||
return {
|
return {
|
||||||
|
|
@ -12458,86 +12439,77 @@ var _justinmimbs$elm_date_extra$Date_Internal_RataDie$divideInt = F2(
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$year = function (rd) {
|
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$year = function (rd) {
|
||||||
var _p0 = A2(_justinmimbs$elm_date_extra$Date_Internal_RataDie$divideInt, rd, 146097);
|
var _p1 = A2(_justinmimbs$elm_date_extra$Date_Internal_RataDie$divideInt, rd, 146097);
|
||||||
var n400 = _p0._0;
|
var q400 = _p1._0;
|
||||||
var r400 = _p0._1;
|
var r400 = _p1._1;
|
||||||
var _p1 = A2(_justinmimbs$elm_date_extra$Date_Internal_RataDie$divideInt, r400, 36524);
|
var _p2 = A2(_justinmimbs$elm_date_extra$Date_Internal_RataDie$divideInt, r400, 36524);
|
||||||
var n100 = _p1._0;
|
var q100 = _p2._0;
|
||||||
var r100 = _p1._1;
|
var r100 = _p2._1;
|
||||||
var _p2 = A2(_justinmimbs$elm_date_extra$Date_Internal_RataDie$divideInt, r100, 1461);
|
var _p3 = A2(_justinmimbs$elm_date_extra$Date_Internal_RataDie$divideInt, r100, 1461);
|
||||||
var n4 = _p2._0;
|
var q4 = _p3._0;
|
||||||
var r4 = _p2._1;
|
var r4 = _p3._1;
|
||||||
var _p3 = A2(_justinmimbs$elm_date_extra$Date_Internal_RataDie$divideInt, r4, 365);
|
var _p4 = A2(_justinmimbs$elm_date_extra$Date_Internal_RataDie$divideInt, r4, 365);
|
||||||
var n1 = _p3._0;
|
var q1 = _p4._0;
|
||||||
var r1 = _p3._1;
|
var r1 = _p4._1;
|
||||||
var n = _elm_lang$core$Native_Utils.eq(r1, 0) ? 0 : 1;
|
var n = _elm_lang$core$Native_Utils.eq(r1, 0) ? 0 : 1;
|
||||||
return ((((n400 * 400) + (n100 * 100)) + (n4 * 4)) + n1) + n;
|
return ((((q400 * 400) + (q100 * 100)) + (q4 * 4)) + q1) + n;
|
||||||
};
|
};
|
||||||
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekdayNumber = function (rd) {
|
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$ordinalDay = function (rd) {
|
||||||
var _p4 = A2(_elm_lang$core$Basics_ops['%'], rd, 7);
|
return rd - _justinmimbs$elm_date_extra$Date_Internal_RataDie$rataDieBeforeStartOfYear(
|
||||||
if (_p4 === 0) {
|
_justinmimbs$elm_date_extra$Date_Internal_RataDie$year(rd));
|
||||||
return 7;
|
|
||||||
} else {
|
|
||||||
return _p4;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$daysBeforeYear = function (y1) {
|
|
||||||
var y = y1 - 1;
|
|
||||||
var leapYears = (((y / 4) | 0) - ((y / 100) | 0)) + ((y / 400) | 0);
|
|
||||||
return (365 * y) + leapYears;
|
|
||||||
};
|
|
||||||
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$daysBeforeWeekYear = function (y) {
|
|
||||||
var jan4 = _justinmimbs$elm_date_extra$Date_Internal_RataDie$daysBeforeYear(y) + 4;
|
|
||||||
return jan4 - _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekdayNumber(jan4);
|
|
||||||
};
|
};
|
||||||
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekYear = function (rd) {
|
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekYear = function (rd) {
|
||||||
return _justinmimbs$elm_date_extra$Date_Internal_RataDie$year(
|
var daysToThursday = 4 - _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekdayNumber(rd);
|
||||||
rd + (4 - _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekdayNumber(rd)));
|
return _justinmimbs$elm_date_extra$Date_Internal_RataDie$year(rd + daysToThursday);
|
||||||
};
|
};
|
||||||
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekNumber = function (rd) {
|
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekNumber = function (rd) {
|
||||||
var week1Day1 = _justinmimbs$elm_date_extra$Date_Internal_RataDie$daysBeforeWeekYear(
|
var week1Day1RD = _justinmimbs$elm_date_extra$Date_Internal_RataDie$week1Day1OfWeekYear(
|
||||||
_justinmimbs$elm_date_extra$Date_Internal_RataDie$weekYear(rd)) + 1;
|
_justinmimbs$elm_date_extra$Date_Internal_RataDie$weekYear(rd));
|
||||||
return (((rd - week1Day1) / 7) | 0) + 1;
|
return (((rd - week1Day1RD) / 7) | 0) + 1;
|
||||||
};
|
};
|
||||||
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$fromWeekDate = F3(
|
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$find = F2(
|
||||||
function (wy, wn, wdn) {
|
function (pred, list) {
|
||||||
return (_justinmimbs$elm_date_extra$Date_Internal_RataDie$daysBeforeWeekYear(wy) + ((wn - 1) * 7)) + wdn;
|
find:
|
||||||
});
|
while (true) {
|
||||||
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$fromCalendarDate = F3(
|
var _p5 = list;
|
||||||
function (y, m, d) {
|
if (_p5.ctor === '[]') {
|
||||||
return (_justinmimbs$elm_date_extra$Date_Internal_RataDie$daysBeforeYear(y) + A2(_justinmimbs$elm_date_extra$Date_Extra_Facts$daysBeforeStartOfMonth, y, m)) + d;
|
return _elm_lang$core$Maybe$Nothing;
|
||||||
});
|
} else {
|
||||||
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$fromOrdinalDate = F2(
|
var _p6 = _p5._0;
|
||||||
function (y, od) {
|
if (pred(_p6)) {
|
||||||
return _justinmimbs$elm_date_extra$Date_Internal_RataDie$daysBeforeYear(y) + od;
|
return _elm_lang$core$Maybe$Just(_p6);
|
||||||
|
} else {
|
||||||
|
var _v2 = pred,
|
||||||
|
_v3 = _p5._1;
|
||||||
|
pred = _v2;
|
||||||
|
list = _v3;
|
||||||
|
continue find;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$month = function (rd) {
|
||||||
|
var od = _justinmimbs$elm_date_extra$Date_Internal_RataDie$ordinalDay(rd);
|
||||||
|
var y = _justinmimbs$elm_date_extra$Date_Internal_RataDie$year(rd);
|
||||||
|
return A2(
|
||||||
|
_elm_lang$core$Maybe$withDefault,
|
||||||
|
_elm_lang$core$Date$Jan,
|
||||||
|
A2(
|
||||||
|
_justinmimbs$elm_date_extra$Date_Internal_RataDie$find,
|
||||||
|
function (m) {
|
||||||
|
return _elm_lang$core$Native_Utils.cmp(
|
||||||
|
A2(_justinmimbs$elm_date_extra$Date_Extra_Facts$daysBeforeStartOfMonth, y, m),
|
||||||
|
od) < 0;
|
||||||
|
},
|
||||||
|
_elm_lang$core$List$reverse(_justinmimbs$elm_date_extra$Date_Extra_Facts$months)));
|
||||||
|
};
|
||||||
|
var _justinmimbs$elm_date_extra$Date_Internal_RataDie$day = function (rd) {
|
||||||
|
var od = _justinmimbs$elm_date_extra$Date_Internal_RataDie$ordinalDay(rd);
|
||||||
|
var m = _justinmimbs$elm_date_extra$Date_Internal_RataDie$month(rd);
|
||||||
|
var y = _justinmimbs$elm_date_extra$Date_Internal_RataDie$year(rd);
|
||||||
|
return od - A2(_justinmimbs$elm_date_extra$Date_Extra_Facts$daysBeforeStartOfMonth, y, m);
|
||||||
|
};
|
||||||
|
|
||||||
var _justinmimbs$elm_date_extra$Date_Internal_Core$msFromTimeParts = F4(
|
|
||||||
function (hh, mm, ss, ms) {
|
|
||||||
return (((_justinmimbs$elm_date_extra$Date_Extra_Facts$msPerHour * hh) + (_justinmimbs$elm_date_extra$Date_Extra_Facts$msPerMinute * mm)) + (_justinmimbs$elm_date_extra$Date_Extra_Facts$msPerSecond * ss)) + ms;
|
|
||||||
});
|
|
||||||
var _justinmimbs$elm_date_extra$Date_Internal_Core$unixTimeFromRataDie = function (rd) {
|
|
||||||
return (rd - 719163) * _justinmimbs$elm_date_extra$Date_Extra_Facts$msPerDay;
|
|
||||||
};
|
|
||||||
var _justinmimbs$elm_date_extra$Date_Internal_Core$unixTimeFromOrdinalDate = F2(
|
|
||||||
function (y, d) {
|
|
||||||
return _justinmimbs$elm_date_extra$Date_Internal_Core$unixTimeFromRataDie(
|
|
||||||
A2(_justinmimbs$elm_date_extra$Date_Internal_RataDie$fromOrdinalDate, y, d));
|
|
||||||
});
|
|
||||||
var _justinmimbs$elm_date_extra$Date_Internal_Core$unixTimeFromCalendarDate = F3(
|
|
||||||
function (y, m, d) {
|
|
||||||
return _justinmimbs$elm_date_extra$Date_Internal_Core$unixTimeFromRataDie(
|
|
||||||
A3(_justinmimbs$elm_date_extra$Date_Internal_RataDie$fromCalendarDate, y, m, d));
|
|
||||||
});
|
|
||||||
var _justinmimbs$elm_date_extra$Date_Internal_Core$unixTimeFromParts = F7(
|
|
||||||
function (y, m, d, hh, mm, ss, ms) {
|
|
||||||
return A3(_justinmimbs$elm_date_extra$Date_Internal_Core$unixTimeFromCalendarDate, y, m, d) + A4(_justinmimbs$elm_date_extra$Date_Internal_Core$msFromTimeParts, hh, mm, ss, ms);
|
|
||||||
});
|
|
||||||
var _justinmimbs$elm_date_extra$Date_Internal_Core$unixTimeFromWeekDate = F3(
|
|
||||||
function (y, w, d) {
|
|
||||||
return _justinmimbs$elm_date_extra$Date_Internal_Core$unixTimeFromRataDie(
|
|
||||||
A3(_justinmimbs$elm_date_extra$Date_Internal_RataDie$fromWeekDate, y, w, d));
|
|
||||||
});
|
|
||||||
var _justinmimbs$elm_date_extra$Date_Internal_Core$weekNumberFromCalendarDate = F3(
|
var _justinmimbs$elm_date_extra$Date_Internal_Core$weekNumberFromCalendarDate = F3(
|
||||||
function (y, m, d) {
|
function (y, m, d) {
|
||||||
return _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekNumber(
|
return _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekNumber(
|
||||||
|
|
@ -12548,6 +12520,30 @@ var _justinmimbs$elm_date_extra$Date_Internal_Core$weekYearFromCalendarDate = F3
|
||||||
return _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekYear(
|
return _justinmimbs$elm_date_extra$Date_Internal_RataDie$weekYear(
|
||||||
A3(_justinmimbs$elm_date_extra$Date_Internal_RataDie$fromCalendarDate, y, m, d));
|
A3(_justinmimbs$elm_date_extra$Date_Internal_RataDie$fromCalendarDate, y, m, d));
|
||||||
});
|
});
|
||||||
|
var _justinmimbs$elm_date_extra$Date_Internal_Core$unixTimeFromOrdinalDate = F2(
|
||||||
|
function (y, d) {
|
||||||
|
return _justinmimbs$elm_date_extra$Date_Internal_RataDie$toUnixTime(
|
||||||
|
A2(_justinmimbs$elm_date_extra$Date_Internal_RataDie$fromOrdinalDate, y, d));
|
||||||
|
});
|
||||||
|
var _justinmimbs$elm_date_extra$Date_Internal_Core$unixTimeFromWeekDate = F3(
|
||||||
|
function (y, w, d) {
|
||||||
|
return _justinmimbs$elm_date_extra$Date_Internal_RataDie$toUnixTime(
|
||||||
|
A3(_justinmimbs$elm_date_extra$Date_Internal_RataDie$fromWeekDate, y, w, d));
|
||||||
|
});
|
||||||
|
var _justinmimbs$elm_date_extra$Date_Internal_Core$unixTimeFromCalendarDate = F3(
|
||||||
|
function (y, m, d) {
|
||||||
|
return _justinmimbs$elm_date_extra$Date_Internal_RataDie$toUnixTime(
|
||||||
|
A3(_justinmimbs$elm_date_extra$Date_Internal_RataDie$fromCalendarDate, y, m, d));
|
||||||
|
});
|
||||||
|
var _justinmimbs$elm_date_extra$Date_Internal_Core$msFromTimeParts = F4(
|
||||||
|
function (hh, mm, ss, ms) {
|
||||||
|
return ((ms + (_justinmimbs$elm_date_extra$Date_Extra_Facts$msPerSecond * ss)) + (_justinmimbs$elm_date_extra$Date_Extra_Facts$msPerMinute * mm)) + (_justinmimbs$elm_date_extra$Date_Extra_Facts$msPerHour * hh);
|
||||||
|
});
|
||||||
|
var _justinmimbs$elm_date_extra$Date_Internal_Core$unixTimeFromParts = F7(
|
||||||
|
function (y, m, d, hh, mm, ss, ms) {
|
||||||
|
return _justinmimbs$elm_date_extra$Date_Internal_RataDie$toUnixTime(
|
||||||
|
A3(_justinmimbs$elm_date_extra$Date_Internal_RataDie$fromCalendarDate, y, m, d)) + A4(_justinmimbs$elm_date_extra$Date_Internal_Core$msFromTimeParts, hh, mm, ss, ms);
|
||||||
|
});
|
||||||
|
|
||||||
var _justinmimbs$elm_date_extra$Date_Internal_Extract$msOffsetFromUtc = function (date) {
|
var _justinmimbs$elm_date_extra$Date_Internal_Extract$msOffsetFromUtc = function (date) {
|
||||||
var utcTime = _elm_lang$core$Date$toTime(date);
|
var utcTime = _elm_lang$core$Date$toTime(date);
|
||||||
|
|
@ -13396,13 +13392,6 @@ var _justinmimbs$elm_date_extra$Date_Internal_Parse$offsetTimeFromIsoString = fu
|
||||||
s))));
|
s))));
|
||||||
};
|
};
|
||||||
|
|
||||||
var _justinmimbs$elm_date_extra$Date_Extra$toRataDie = function (date) {
|
|
||||||
return A3(
|
|
||||||
_justinmimbs$elm_date_extra$Date_Internal_RataDie$fromCalendarDate,
|
|
||||||
_elm_lang$core$Date$year(date),
|
|
||||||
_elm_lang$core$Date$month(date),
|
|
||||||
_elm_lang$core$Date$day(date));
|
|
||||||
};
|
|
||||||
var _justinmimbs$elm_date_extra$Date_Extra$toParts = function (date) {
|
var _justinmimbs$elm_date_extra$Date_Extra$toParts = function (date) {
|
||||||
return {
|
return {
|
||||||
ctor: '_Tuple7',
|
ctor: '_Tuple7',
|
||||||
|
|
@ -13589,25 +13578,25 @@ var _justinmimbs$elm_date_extra$Date_Extra$add = F3(
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
var _justinmimbs$elm_date_extra$Date_Extra$rangeHelp = F5(
|
var _justinmimbs$elm_date_extra$Date_Extra$rangeHelp = F5(
|
||||||
function (interval, step, end, revList, date) {
|
function (result, interval, step, start, date) {
|
||||||
rangeHelp:
|
rangeHelp:
|
||||||
while (true) {
|
while (true) {
|
||||||
if (_elm_lang$core$Native_Utils.cmp(
|
if (_elm_lang$core$Native_Utils.cmp(
|
||||||
_elm_lang$core$Date$toTime(date),
|
_elm_lang$core$Date$toTime(date),
|
||||||
_elm_lang$core$Date$toTime(end)) < 0) {
|
_elm_lang$core$Date$toTime(start)) < 0) {
|
||||||
var _v4 = interval,
|
return result;
|
||||||
_v5 = step,
|
} else {
|
||||||
_v6 = end,
|
var _v4 = {ctor: '::', _0: date, _1: result},
|
||||||
_v7 = {ctor: '::', _0: date, _1: revList},
|
_v5 = interval,
|
||||||
|
_v6 = step,
|
||||||
|
_v7 = start,
|
||||||
_v8 = A3(_justinmimbs$elm_date_extra$Date_Extra$add, interval, step, date);
|
_v8 = A3(_justinmimbs$elm_date_extra$Date_Extra$add, interval, step, date);
|
||||||
interval = _v4;
|
result = _v4;
|
||||||
step = _v5;
|
interval = _v5;
|
||||||
end = _v6;
|
step = _v6;
|
||||||
revList = _v7;
|
start = _v7;
|
||||||
date = _v8;
|
date = _v8;
|
||||||
continue rangeHelp;
|
continue rangeHelp;
|
||||||
} else {
|
|
||||||
return _elm_lang$core$List$reverse(revList);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
@ -13711,16 +13700,18 @@ var _justinmimbs$elm_date_extra$Date_Extra$ceiling = F2(
|
||||||
});
|
});
|
||||||
var _justinmimbs$elm_date_extra$Date_Extra$range = F4(
|
var _justinmimbs$elm_date_extra$Date_Extra$range = F4(
|
||||||
function (interval, step, start, end) {
|
function (interval, step, start, end) {
|
||||||
var first = A2(_justinmimbs$elm_date_extra$Date_Extra$ceiling, interval, start);
|
var stepBack = _elm_lang$core$Basics$negate(
|
||||||
return (_elm_lang$core$Native_Utils.cmp(
|
A2(_elm_lang$core$Basics$max, 1, step));
|
||||||
_elm_lang$core$Date$toTime(first),
|
return A5(
|
||||||
_elm_lang$core$Date$toTime(end)) < 0) ? A5(
|
|
||||||
_justinmimbs$elm_date_extra$Date_Extra$rangeHelp,
|
_justinmimbs$elm_date_extra$Date_Extra$rangeHelp,
|
||||||
interval,
|
|
||||||
A2(_elm_lang$core$Basics$max, 1, step),
|
|
||||||
end,
|
|
||||||
{ctor: '[]'},
|
{ctor: '[]'},
|
||||||
first) : {ctor: '[]'};
|
interval,
|
||||||
|
stepBack,
|
||||||
|
start,
|
||||||
|
A2(
|
||||||
|
_justinmimbs$elm_date_extra$Date_Extra$ceiling,
|
||||||
|
interval,
|
||||||
|
A3(_justinmimbs$elm_date_extra$Date_Extra$add, interval, stepBack, end)));
|
||||||
});
|
});
|
||||||
var _justinmimbs$elm_date_extra$Date_Extra$fromIsoString = function (_p11) {
|
var _justinmimbs$elm_date_extra$Date_Extra$fromIsoString = function (_p11) {
|
||||||
return A2(
|
return A2(
|
||||||
|
|
@ -13818,13 +13809,6 @@ var _justinmimbs$elm_date_extra$Date_Extra$diff = F3(
|
||||||
A2(_justinmimbs$elm_date_extra$Date_Extra$floor, _p19, date2)) / 7) | 0;
|
A2(_justinmimbs$elm_date_extra$Date_Extra$floor, _p19, date2)) / 7) | 0;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
var _justinmimbs$elm_date_extra$Date_Extra$fromRataDie = function (rd) {
|
|
||||||
return A3(
|
|
||||||
_justinmimbs$elm_date_extra$Date_Extra$add,
|
|
||||||
_justinmimbs$elm_date_extra$Date_Extra$Day,
|
|
||||||
rd - 719163,
|
|
||||||
A3(_justinmimbs$elm_date_extra$Date_Extra$fromCalendarDate, 1970, _elm_lang$core$Date$Jan, 1));
|
|
||||||
};
|
|
||||||
var _justinmimbs$elm_date_extra$Date_Extra$Hour = {ctor: 'Hour'};
|
var _justinmimbs$elm_date_extra$Date_Extra$Hour = {ctor: 'Hour'};
|
||||||
var _justinmimbs$elm_date_extra$Date_Extra$Minute = {ctor: 'Minute'};
|
var _justinmimbs$elm_date_extra$Date_Extra$Minute = {ctor: 'Minute'};
|
||||||
var _justinmimbs$elm_date_extra$Date_Extra$equalBy = F3(
|
var _justinmimbs$elm_date_extra$Date_Extra$equalBy = F3(
|
||||||
|
|
@ -13945,89 +13929,87 @@ var _krisajenkins$remotedata$RemoteData$prism = {
|
||||||
var _krisajenkins$remotedata$RemoteData$Failure = function (a) {
|
var _krisajenkins$remotedata$RemoteData$Failure = function (a) {
|
||||||
return {ctor: 'Failure', _0: a};
|
return {ctor: 'Failure', _0: a};
|
||||||
};
|
};
|
||||||
var _krisajenkins$remotedata$RemoteData$fromMaybe = F2(
|
|
||||||
function (error, maybe) {
|
|
||||||
var _p6 = maybe;
|
|
||||||
if (_p6.ctor === 'Nothing') {
|
|
||||||
return _krisajenkins$remotedata$RemoteData$Failure(error);
|
|
||||||
} else {
|
|
||||||
return _krisajenkins$remotedata$RemoteData$Success(_p6._0);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
var _krisajenkins$remotedata$RemoteData$fromResult = function (result) {
|
var _krisajenkins$remotedata$RemoteData$fromResult = function (result) {
|
||||||
var _p7 = result;
|
var _p6 = result;
|
||||||
if (_p7.ctor === 'Err') {
|
if (_p6.ctor === 'Err') {
|
||||||
return _krisajenkins$remotedata$RemoteData$Failure(_p7._0);
|
return _krisajenkins$remotedata$RemoteData$Failure(_p6._0);
|
||||||
} else {
|
} else {
|
||||||
return _krisajenkins$remotedata$RemoteData$Success(_p7._0);
|
return _krisajenkins$remotedata$RemoteData$Success(_p6._0);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
var _krisajenkins$remotedata$RemoteData$asCmd = _elm_lang$core$Task$attempt(_krisajenkins$remotedata$RemoteData$fromResult);
|
var _krisajenkins$remotedata$RemoteData$asCmd = _elm_lang$core$Task$attempt(_krisajenkins$remotedata$RemoteData$fromResult);
|
||||||
var _krisajenkins$remotedata$RemoteData$sendRequest = _elm_lang$http$Http$send(_krisajenkins$remotedata$RemoteData$fromResult);
|
var _krisajenkins$remotedata$RemoteData$sendRequest = _elm_lang$http$Http$send(_krisajenkins$remotedata$RemoteData$fromResult);
|
||||||
var _krisajenkins$remotedata$RemoteData$fromTask = function (_p8) {
|
var _krisajenkins$remotedata$RemoteData$fromTask = function (_p7) {
|
||||||
return A2(
|
return A2(
|
||||||
_elm_lang$core$Task$onError,
|
_elm_lang$core$Task$onError,
|
||||||
function (_p9) {
|
function (_p8) {
|
||||||
return _elm_lang$core$Task$succeed(
|
return _elm_lang$core$Task$succeed(
|
||||||
_krisajenkins$remotedata$RemoteData$Failure(_p9));
|
_krisajenkins$remotedata$RemoteData$Failure(_p8));
|
||||||
},
|
},
|
||||||
A2(_elm_lang$core$Task$map, _krisajenkins$remotedata$RemoteData$Success, _p8));
|
A2(_elm_lang$core$Task$map, _krisajenkins$remotedata$RemoteData$Success, _p7));
|
||||||
};
|
};
|
||||||
var _krisajenkins$remotedata$RemoteData$Loading = {ctor: 'Loading'};
|
var _krisajenkins$remotedata$RemoteData$Loading = {ctor: 'Loading'};
|
||||||
var _krisajenkins$remotedata$RemoteData$NotAsked = {ctor: 'NotAsked'};
|
var _krisajenkins$remotedata$RemoteData$NotAsked = {ctor: 'NotAsked'};
|
||||||
var _krisajenkins$remotedata$RemoteData$map = F2(
|
var _krisajenkins$remotedata$RemoteData$map = F2(
|
||||||
function (f, data) {
|
function (f, data) {
|
||||||
var _p10 = data;
|
var _p9 = data;
|
||||||
switch (_p10.ctor) {
|
switch (_p9.ctor) {
|
||||||
case 'Success':
|
case 'Success':
|
||||||
return _krisajenkins$remotedata$RemoteData$Success(
|
return _krisajenkins$remotedata$RemoteData$Success(
|
||||||
f(_p10._0));
|
f(_p9._0));
|
||||||
case 'Loading':
|
case 'Loading':
|
||||||
return _krisajenkins$remotedata$RemoteData$Loading;
|
return _krisajenkins$remotedata$RemoteData$Loading;
|
||||||
case 'NotAsked':
|
case 'NotAsked':
|
||||||
return _krisajenkins$remotedata$RemoteData$NotAsked;
|
return _krisajenkins$remotedata$RemoteData$NotAsked;
|
||||||
default:
|
default:
|
||||||
return _krisajenkins$remotedata$RemoteData$Failure(_p10._0);
|
return _krisajenkins$remotedata$RemoteData$Failure(_p9._0);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
var _krisajenkins$remotedata$RemoteData$toMaybe = function (_p11) {
|
var _krisajenkins$remotedata$RemoteData$toMaybe = function (_p10) {
|
||||||
return A2(
|
return A2(
|
||||||
_krisajenkins$remotedata$RemoteData$withDefault,
|
_krisajenkins$remotedata$RemoteData$withDefault,
|
||||||
_elm_lang$core$Maybe$Nothing,
|
_elm_lang$core$Maybe$Nothing,
|
||||||
A2(_krisajenkins$remotedata$RemoteData$map, _elm_lang$core$Maybe$Just, _p11));
|
A2(_krisajenkins$remotedata$RemoteData$map, _elm_lang$core$Maybe$Just, _p10));
|
||||||
};
|
};
|
||||||
var _krisajenkins$remotedata$RemoteData$mapError = F2(
|
var _krisajenkins$remotedata$RemoteData$mapError = F2(
|
||||||
function (f, data) {
|
function (f, data) {
|
||||||
var _p12 = data;
|
var _p11 = data;
|
||||||
switch (_p12.ctor) {
|
switch (_p11.ctor) {
|
||||||
case 'Success':
|
case 'Success':
|
||||||
return _krisajenkins$remotedata$RemoteData$Success(_p12._0);
|
return _krisajenkins$remotedata$RemoteData$Success(_p11._0);
|
||||||
case 'Failure':
|
case 'Failure':
|
||||||
return _krisajenkins$remotedata$RemoteData$Failure(
|
return _krisajenkins$remotedata$RemoteData$Failure(
|
||||||
f(_p12._0));
|
f(_p11._0));
|
||||||
case 'Loading':
|
case 'Loading':
|
||||||
return _krisajenkins$remotedata$RemoteData$Loading;
|
return _krisajenkins$remotedata$RemoteData$Loading;
|
||||||
default:
|
default:
|
||||||
return _krisajenkins$remotedata$RemoteData$NotAsked;
|
return _krisajenkins$remotedata$RemoteData$NotAsked;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
var _krisajenkins$remotedata$RemoteData$mapBoth = F2(
|
var _krisajenkins$remotedata$RemoteData$mapBoth = F3(
|
||||||
function (successFn, errorFn) {
|
function (successFn, errorFn, data) {
|
||||||
return function (_p13) {
|
var _p12 = data;
|
||||||
return A2(
|
switch (_p12.ctor) {
|
||||||
_krisajenkins$remotedata$RemoteData$mapError,
|
case 'Success':
|
||||||
errorFn,
|
return _krisajenkins$remotedata$RemoteData$Success(
|
||||||
A2(_krisajenkins$remotedata$RemoteData$map, successFn, _p13));
|
successFn(_p12._0));
|
||||||
};
|
case 'Failure':
|
||||||
|
return _krisajenkins$remotedata$RemoteData$Failure(
|
||||||
|
errorFn(_p12._0));
|
||||||
|
case 'Loading':
|
||||||
|
return _krisajenkins$remotedata$RemoteData$Loading;
|
||||||
|
default:
|
||||||
|
return _krisajenkins$remotedata$RemoteData$NotAsked;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
var _krisajenkins$remotedata$RemoteData$andThen = F2(
|
var _krisajenkins$remotedata$RemoteData$andThen = F2(
|
||||||
function (f, data) {
|
function (f, data) {
|
||||||
var _p14 = data;
|
var _p13 = data;
|
||||||
switch (_p14.ctor) {
|
switch (_p13.ctor) {
|
||||||
case 'Success':
|
case 'Success':
|
||||||
return f(_p14._0);
|
return f(_p13._0);
|
||||||
case 'Failure':
|
case 'Failure':
|
||||||
return _krisajenkins$remotedata$RemoteData$Failure(_p14._0);
|
return _krisajenkins$remotedata$RemoteData$Failure(_p13._0);
|
||||||
case 'NotAsked':
|
case 'NotAsked':
|
||||||
return _krisajenkins$remotedata$RemoteData$NotAsked;
|
return _krisajenkins$remotedata$RemoteData$NotAsked;
|
||||||
default:
|
default:
|
||||||
|
|
@ -14036,61 +14018,17 @@ var _krisajenkins$remotedata$RemoteData$andThen = F2(
|
||||||
});
|
});
|
||||||
var _krisajenkins$remotedata$RemoteData$andMap = F2(
|
var _krisajenkins$remotedata$RemoteData$andMap = F2(
|
||||||
function (wrappedValue, wrappedFunction) {
|
function (wrappedValue, wrappedFunction) {
|
||||||
var _p15 = {ctor: '_Tuple2', _0: wrappedFunction, _1: wrappedValue};
|
var _p14 = wrappedFunction;
|
||||||
_v11_5:
|
switch (_p14.ctor) {
|
||||||
do {
|
case 'Success':
|
||||||
_v11_4:
|
return A2(_krisajenkins$remotedata$RemoteData$map, _p14._0, wrappedValue);
|
||||||
do {
|
case 'Failure':
|
||||||
_v11_3:
|
return _krisajenkins$remotedata$RemoteData$Failure(_p14._0);
|
||||||
do {
|
case 'Loading':
|
||||||
_v11_2:
|
|
||||||
do {
|
|
||||||
switch (_p15._0.ctor) {
|
|
||||||
case 'Success':
|
|
||||||
switch (_p15._1.ctor) {
|
|
||||||
case 'Success':
|
|
||||||
return _krisajenkins$remotedata$RemoteData$Success(
|
|
||||||
_p15._0._0(_p15._1._0));
|
|
||||||
case 'Failure':
|
|
||||||
break _v11_2;
|
|
||||||
case 'Loading':
|
|
||||||
break _v11_4;
|
|
||||||
default:
|
|
||||||
return _krisajenkins$remotedata$RemoteData$NotAsked;
|
|
||||||
}
|
|
||||||
case 'Failure':
|
|
||||||
return _krisajenkins$remotedata$RemoteData$Failure(_p15._0._0);
|
|
||||||
case 'Loading':
|
|
||||||
switch (_p15._1.ctor) {
|
|
||||||
case 'Failure':
|
|
||||||
break _v11_2;
|
|
||||||
case 'Loading':
|
|
||||||
break _v11_3;
|
|
||||||
case 'NotAsked':
|
|
||||||
break _v11_3;
|
|
||||||
default:
|
|
||||||
break _v11_3;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
switch (_p15._1.ctor) {
|
|
||||||
case 'Failure':
|
|
||||||
break _v11_2;
|
|
||||||
case 'Loading':
|
|
||||||
break _v11_4;
|
|
||||||
case 'NotAsked':
|
|
||||||
break _v11_5;
|
|
||||||
default:
|
|
||||||
break _v11_5;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} while(false);
|
|
||||||
return _krisajenkins$remotedata$RemoteData$Failure(_p15._1._0);
|
|
||||||
} while(false);
|
|
||||||
return _krisajenkins$remotedata$RemoteData$Loading;
|
return _krisajenkins$remotedata$RemoteData$Loading;
|
||||||
} while(false);
|
default:
|
||||||
return _krisajenkins$remotedata$RemoteData$Loading;
|
return _krisajenkins$remotedata$RemoteData$NotAsked;
|
||||||
} while(false);
|
}
|
||||||
return _krisajenkins$remotedata$RemoteData$NotAsked;
|
|
||||||
});
|
});
|
||||||
var _krisajenkins$remotedata$RemoteData$map2 = F3(
|
var _krisajenkins$remotedata$RemoteData$map2 = F3(
|
||||||
function (f, a, b) {
|
function (f, a, b) {
|
||||||
|
|
@ -14099,15 +14037,6 @@ var _krisajenkins$remotedata$RemoteData$map2 = F3(
|
||||||
b,
|
b,
|
||||||
A2(_krisajenkins$remotedata$RemoteData$map, f, a));
|
A2(_krisajenkins$remotedata$RemoteData$map, f, a));
|
||||||
});
|
});
|
||||||
var _krisajenkins$remotedata$RemoteData$fromList = A2(
|
|
||||||
_elm_lang$core$List$foldr,
|
|
||||||
_krisajenkins$remotedata$RemoteData$map2(
|
|
||||||
F2(
|
|
||||||
function (x, y) {
|
|
||||||
return {ctor: '::', _0: x, _1: y};
|
|
||||||
})),
|
|
||||||
_krisajenkins$remotedata$RemoteData$Success(
|
|
||||||
{ctor: '[]'}));
|
|
||||||
var _krisajenkins$remotedata$RemoteData$map3 = F4(
|
var _krisajenkins$remotedata$RemoteData$map3 = F4(
|
||||||
function (f, a, b, c) {
|
function (f, a, b, c) {
|
||||||
return A2(
|
return A2(
|
||||||
|
|
@ -14133,12 +14062,12 @@ var _krisajenkins$remotedata$RemoteData$append = F2(
|
||||||
});
|
});
|
||||||
var _krisajenkins$remotedata$RemoteData$update = F2(
|
var _krisajenkins$remotedata$RemoteData$update = F2(
|
||||||
function (f, remoteData) {
|
function (f, remoteData) {
|
||||||
var _p16 = remoteData;
|
var _p15 = remoteData;
|
||||||
switch (_p16.ctor) {
|
switch (_p15.ctor) {
|
||||||
case 'Success':
|
case 'Success':
|
||||||
var _p17 = f(_p16._0);
|
var _p16 = f(_p15._0);
|
||||||
var first = _p17._0;
|
var first = _p16._0;
|
||||||
var second = _p17._1;
|
var second = _p16._1;
|
||||||
return {
|
return {
|
||||||
ctor: '_Tuple2',
|
ctor: '_Tuple2',
|
||||||
_0: _krisajenkins$remotedata$RemoteData$Success(first),
|
_0: _krisajenkins$remotedata$RemoteData$Success(first),
|
||||||
|
|
@ -14151,7 +14080,7 @@ var _krisajenkins$remotedata$RemoteData$update = F2(
|
||||||
default:
|
default:
|
||||||
return {
|
return {
|
||||||
ctor: '_Tuple2',
|
ctor: '_Tuple2',
|
||||||
_0: _krisajenkins$remotedata$RemoteData$Failure(_p16._0),
|
_0: _krisajenkins$remotedata$RemoteData$Failure(_p15._0),
|
||||||
_1: _elm_lang$core$Platform_Cmd$none
|
_1: _elm_lang$core$Platform_Cmd$none
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
@ -14252,19 +14181,6 @@ var _lukewestby$elm_http_builder$HttpBuilder$send = F2(
|
||||||
tagger,
|
tagger,
|
||||||
_lukewestby$elm_http_builder$HttpBuilder$toTask(builder));
|
_lukewestby$elm_http_builder$HttpBuilder$toTask(builder));
|
||||||
});
|
});
|
||||||
var _lukewestby$elm_http_builder$HttpBuilder$withExpectString = function (builder) {
|
|
||||||
return _elm_lang$core$Native_Utils.update(
|
|
||||||
builder,
|
|
||||||
{expect: _elm_lang$http$Http$expectString});
|
|
||||||
};
|
|
||||||
var _lukewestby$elm_http_builder$HttpBuilder$withExpectJson = F2(
|
|
||||||
function (decoder, builder) {
|
|
||||||
return _elm_lang$core$Native_Utils.update(
|
|
||||||
builder,
|
|
||||||
{
|
|
||||||
expect: _elm_lang$http$Http$expectJson(decoder)
|
|
||||||
});
|
|
||||||
});
|
|
||||||
var _lukewestby$elm_http_builder$HttpBuilder$withExpect = F2(
|
var _lukewestby$elm_http_builder$HttpBuilder$withExpect = F2(
|
||||||
function (expect, builder) {
|
function (expect, builder) {
|
||||||
return _elm_lang$core$Native_Utils.update(
|
return _elm_lang$core$Native_Utils.update(
|
||||||
|
|
@ -14313,21 +14229,6 @@ var _lukewestby$elm_http_builder$HttpBuilder$withMultipartStringBody = function
|
||||||
_elm_lang$core$Basics$uncurry(_elm_lang$http$Http$stringPart),
|
_elm_lang$core$Basics$uncurry(_elm_lang$http$Http$stringPart),
|
||||||
partPairs)));
|
partPairs)));
|
||||||
};
|
};
|
||||||
var _lukewestby$elm_http_builder$HttpBuilder$withBearerToken = F2(
|
|
||||||
function (value, builder) {
|
|
||||||
return _elm_lang$core$Native_Utils.update(
|
|
||||||
builder,
|
|
||||||
{
|
|
||||||
headers: {
|
|
||||||
ctor: '::',
|
|
||||||
_0: A2(
|
|
||||||
_elm_lang$http$Http$header,
|
|
||||||
'Authorization',
|
|
||||||
A2(_elm_lang$core$Basics_ops['++'], 'Bearer ', value)),
|
|
||||||
_1: builder.headers
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
var _lukewestby$elm_http_builder$HttpBuilder$withHeaders = F2(
|
var _lukewestby$elm_http_builder$HttpBuilder$withHeaders = F2(
|
||||||
function (headerPairs, builder) {
|
function (headerPairs, builder) {
|
||||||
return _elm_lang$core$Native_Utils.update(
|
return _elm_lang$core$Native_Utils.update(
|
||||||
|
|
@ -21694,16 +21595,24 @@ var _pablohirafuji$elm_qrcode$QRCode_View$rectView = function (_p1) {
|
||||||
_elm_lang$core$Basics$toString(_p2.row * _pablohirafuji$elm_qrcode$QRCode_View$moduleSize)),
|
_elm_lang$core$Basics$toString(_p2.row * _pablohirafuji$elm_qrcode$QRCode_View$moduleSize)),
|
||||||
_1: {
|
_1: {
|
||||||
ctor: '::',
|
ctor: '::',
|
||||||
_0: _elm_lang$svg$Svg_Attributes$width(
|
_0: _elm_lang$svg$Svg_Attributes$rx('0'),
|
||||||
_elm_lang$core$Basics$toString(_pablohirafuji$elm_qrcode$QRCode_View$moduleSize)),
|
|
||||||
_1: {
|
_1: {
|
||||||
ctor: '::',
|
ctor: '::',
|
||||||
_0: _elm_lang$svg$Svg_Attributes$height(
|
_0: _elm_lang$svg$Svg_Attributes$ry('0'),
|
||||||
_elm_lang$core$Basics$toString(_pablohirafuji$elm_qrcode$QRCode_View$moduleSize)),
|
|
||||||
_1: {
|
_1: {
|
||||||
ctor: '::',
|
ctor: '::',
|
||||||
_0: _elm_lang$svg$Svg_Attributes$fill('black'),
|
_0: _elm_lang$svg$Svg_Attributes$width(
|
||||||
_1: {ctor: '[]'}
|
_elm_lang$core$Basics$toString(_pablohirafuji$elm_qrcode$QRCode_View$moduleSize)),
|
||||||
|
_1: {
|
||||||
|
ctor: '::',
|
||||||
|
_0: _elm_lang$svg$Svg_Attributes$height(
|
||||||
|
_elm_lang$core$Basics$toString(_pablohirafuji$elm_qrcode$QRCode_View$moduleSize)),
|
||||||
|
_1: {
|
||||||
|
ctor: '::',
|
||||||
|
_0: _elm_lang$svg$Svg_Attributes$fill('black'),
|
||||||
|
_1: {ctor: '[]'}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -37597,35 +37506,44 @@ var _user$project$NavBar$view = F2(
|
||||||
ctor: '::',
|
ctor: '::',
|
||||||
_0: {
|
_0: {
|
||||||
ctor: '_Tuple3',
|
ctor: '_Tuple3',
|
||||||
_0: 'Kraken',
|
_0: 'Infura',
|
||||||
_1: _user$project$CoreTypes$AccountRoute('kraken'),
|
_1: _user$project$CoreTypes$AccountRoute('infura'),
|
||||||
_2: true
|
_2: true
|
||||||
},
|
},
|
||||||
_1: {
|
_1: {
|
||||||
ctor: '::',
|
ctor: '::',
|
||||||
_0: {
|
_0: {
|
||||||
ctor: '_Tuple3',
|
ctor: '_Tuple3',
|
||||||
_0: 'Mailjet',
|
_0: 'Kraken',
|
||||||
_1: _user$project$CoreTypes$AccountRoute('mailjet'),
|
_1: _user$project$CoreTypes$AccountRoute('kraken'),
|
||||||
_2: true
|
_2: true
|
||||||
},
|
},
|
||||||
_1: {
|
_1: {
|
||||||
ctor: '::',
|
ctor: '::',
|
||||||
_0: {
|
_0: {
|
||||||
ctor: '_Tuple3',
|
ctor: '_Tuple3',
|
||||||
_0: 'Strike',
|
_0: 'Mailjet',
|
||||||
_1: _user$project$CoreTypes$AccountRoute('strike'),
|
_1: _user$project$CoreTypes$AccountRoute('mailjet'),
|
||||||
_2: true
|
_2: true
|
||||||
},
|
},
|
||||||
_1: {
|
_1: {
|
||||||
ctor: '::',
|
ctor: '::',
|
||||||
_0: {
|
_0: {
|
||||||
ctor: '_Tuple3',
|
ctor: '_Tuple3',
|
||||||
_0: 'Twilio',
|
_0: 'Strike',
|
||||||
_1: _user$project$CoreTypes$AccountRoute('twilio'),
|
_1: _user$project$CoreTypes$AccountRoute('strike'),
|
||||||
_2: true
|
_2: true
|
||||||
},
|
},
|
||||||
_1: {ctor: '[]'}
|
_1: {
|
||||||
|
ctor: '::',
|
||||||
|
_0: {
|
||||||
|
ctor: '_Tuple3',
|
||||||
|
_0: 'Twilio',
|
||||||
|
_1: _user$project$CoreTypes$AccountRoute('twilio'),
|
||||||
|
_2: true
|
||||||
|
},
|
||||||
|
_1: {ctor: '[]'}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
14
schemas/infura.json
Normal file
14
schemas/infura.json
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
{
|
||||||
|
"code": "infura",
|
||||||
|
"display": "Infura",
|
||||||
|
"fields": [
|
||||||
|
{
|
||||||
|
"code": "apiKey",
|
||||||
|
"display": "API key",
|
||||||
|
"fieldType": "password",
|
||||||
|
"secret": true,
|
||||||
|
"required": true,
|
||||||
|
"value": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue