Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | 1x 1x 1x | /* @flow */
import queryString from 'query-string'
// TODO: Putting in here so it executes ASAP. There is probably a better place to put this.
// Note: This prototype is designed to work as a drop-in-replacement (non-breaking upgrade)
// for apps using blockstack.js. That requires doing this hacky global & immediate detection.
// A more proper approach would require developers to call an additional blockstack.js method
// for invoking this detection method.
(function protocolEchoReplyDetection() {
// Check that the `window` APIs exist
Eif (typeof window !== 'object' || !window.location || !window.localStorage) {
// Exit detection function - we are not running in a browser environment.
return
}
// Check if the location query string contains a protocol-echo reply.
// If so, this page was only re-opened to signal back the originating
// tab that the protocol handler is installed.
const queryDict = queryString.parse(window.location.search)
if (queryDict.echoReply) {
// Use localStorage to notify originated tab that protocol handler is available and working.
const echoReplyKey = `echo-reply-${queryDict.echoReply}`
// Set the echo-reply result in localStorage for the other window to see.
window.localStorage.setItem(echoReplyKey, 'success')
// Redirect back to the localhost auth url, as opposed to another protocol launch.
// This will re-use the same tab rather than creating another useless one.
window.setTimeout(() => {
window.location = decodeURIComponent(queryDict.authContinuation)
}, 10)
}
}())
export * from './auth'
export * from './profiles'
export * from './storage'
export {
makeDIDFromAddress, makeDIDFromPublicKey, getDIDType, getAddressFromDID
} from './dids'
export {
getEntropy, makeECPrivateKey, publicKeyToAddress, getPublicKeyFromPrivate
} from './keys'
export {
nextYear, nextMonth, nextHour, makeUUID4, updateQueryStringParameter,
isLaterVersion, isSameOriginAbsoluteUrl, hexStringToECPair, ecPairToHexString,
ecPairToAddress
} from './utils'
export {
transactions, safety, TransactionSigner,
PubkeyHashSigner, addUTXOsToFund, estimateTXBytes
} from './operations'
export { BlockstackWallet, IdentityKeyPair } from './wallet'
export { network } from './network'
export { decodeToken } from 'jsontokens'
export { config } from './config'
export { encryptMnemonic, decryptMnemonic } from './encryption'
export { UserSession } from './auth/userSession'
|