<label>Enter SAS value</label>
<input type="text" id="sasToken" placeholder="enter your value"
       value="?sv=2021-06-08&ss=bfqt&srt=sco&sp=rwdlacupiytfx&se=2023-02-04T03:03:37Z&st=2023-02-03T19:03:37Z&spr=https&sig=X8vadNOXY7xNiHPwu6B.."></input>
<button onclick="runCode()">parse</button>
<div id="outputJson">
</div>

var paramNames = {
  sig: 'cryptographic signature',
  st: 'start time',
  se: 'end time',
  spr: 'protocol',
  srt: 'resource types',
  sv: 'version',
  sp: 'permissions',
  ss: 'services'
};

let valueLookups = {
  sp : {
     r: 'read', d: 'delete', w: 'write', l: 'list', a: 'add',
    c: 'create', u: 'update', p: 'process', f: 'filter'
    },
  srt: {
    s: 'service', c: 'container', o: 'object'
  },
  ss : {
    b: 'blob', f: 'file', q: 'queue', t: 'table'
  }
}

let valueConvertor = (key, inputValue) => 
      valueLookups[key] ? [...inputValue].map(x => valueLookups[key][x] || x)
        : inputValue;




function parseData(sasToken) {
  var parameters = [...sasToken.matchAll(/[?&]([a-z]*)=([^\&]*)/g)];
const finalObject = parameters.reduce((acc, row) => {
  return {...acc, [paramNames[row[1]] || row[1]]: valueConvertor(row[1], row[2])}
}, {});
  return finalObject;
};

function runCode() {
  let inputvalue = document.getElementById("sasToken").value;
  let outputObject = parseData(inputvalue);
  console.log(outputObject);
  document.getElementById("outputJson").innerHTML = JSON.stringify(outputObject);
}

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.