tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

stringify_params.ts (1512B)


      1 import { TestParams } from '../../framework/fixture.js';
      2 import { assert } from '../../util/util.js';
      3 import { JSONWithUndefined, badParamValueChars, paramKeyIsPublic } from '../params_utils.js';
      4 
      5 import { stringifyParamValue, stringifyParamValueUniquely } from './json_param_value.js';
      6 import { kParamKVSeparator, kParamSeparator, kWildcard } from './separators.js';
      7 
      8 export function stringifyPublicParams(p: TestParams, addWildcard = false): string {
      9  const parts = Object.keys(p)
     10    .filter(k => paramKeyIsPublic(k))
     11    .map(k => stringifySingleParam(k, p[k]));
     12 
     13  if (addWildcard) parts.push(kWildcard);
     14 
     15  return parts.join(kParamSeparator);
     16 }
     17 
     18 /**
     19 * An _approximately_ unique string representing a CaseParams value.
     20 */
     21 export function stringifyPublicParamsUniquely(p: TestParams): string {
     22  const keys = Object.keys(p).sort();
     23  return keys
     24    .filter(k => paramKeyIsPublic(k))
     25    .map(k => stringifySingleParamUniquely(k, p[k]))
     26    .join(kParamSeparator);
     27 }
     28 
     29 export function stringifySingleParam(k: string, v: JSONWithUndefined) {
     30  return `${k}${kParamKVSeparator}${stringifySingleParamValue(v)}`;
     31 }
     32 
     33 function stringifySingleParamUniquely(k: string, v: JSONWithUndefined) {
     34  return `${k}${kParamKVSeparator}${stringifyParamValueUniquely(v)}`;
     35 }
     36 
     37 function stringifySingleParamValue(v: JSONWithUndefined): string {
     38  const s = stringifyParamValue(v);
     39  assert(
     40    !badParamValueChars.test(s),
     41    `JSON.stringified param value must not match ${badParamValueChars} - was ${s}`
     42  );
     43  return s;
     44 }