Emitting CosmicLinks without this library

As CosmicLinks syntax is straightforward, it may feel more convenient to write a few routines to produce them without relying on any additional dependency.

XDR links

const config = { page: 'https://cosmic.link/', network: 'test' }

function makeXdrUri (xdr) {
  return config.page + '?xdr=' + xdr + '&network=' + config.network
}

const uri = makeXdrUri('AAA...A==')

Single-operation links

const config = { page: 'https://cosmic.link/' }

function makeOperationUri (operation, arguments) {
  var query = '?' + operation
  for (let field in arguments) {
    query += '&' + field + '=' + encodeURIComponent(arguments[field])
  }
  return config.page + query
}

const uri = makeOperationUri('payment', { memo: 'donation', destination: 'tips*cosmic.link', amount: '20' })

Multi-operation links

const config = { page: 'https://cosmic.link/' }

function makeTransactionUrl (page, transactionFields, operations) {
  var query = '?transaction'
  for (let field in transactionFields) {
    query += '&' + field + '=' + encodeURIComponent(transactionFields[field])
  }
  operations.forEach(function (entry) {
    for (let field in entry) {
      query += '&' + field + '=' + encodeURIComponent(entry[field])
    }
  })
  return config.page + query
}

const uri = makeTransactionUrl({ memo: 'text:Example', minTime: '2018-07' },
  [
    { operation: 'setOptions', homeDomain: 'https://stellar.org' },
    { operation: 'manageData', name: 'updated', value: 'yes' },
    { operation: 'manageData', name: 'userID', value: '737' }
  ])