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 | 15x 15x 15x 15x 15x 15x 147x 132x 15x 15x 15x 15x 28x 28x 15x 15x 28x 1x 27x 1x 26x 15x 1x 15x 1x 1x 2x 2x 15x 26x 15x 15x 15x 15x | import querystring, {ParsedUrlQueryInput} from 'querystring'; export default class ProcessedQuery { static stringify(keyValuePairs?: {[key: string]: any}): string { if (!keyValuePairs || Object.keys(keyValuePairs).length === 0) return ''; return new ProcessedQuery().putAll(keyValuePairs).stringify(); } processedQuery: { [key: string]: string | number | (string | number)[]; }; constructor() { this.processedQuery = {}; } putAll(keyValuePairs: {[key: string]: any}): ProcessedQuery { Object.entries(keyValuePairs).forEach(([key, value]: [string, any]) => this.put(key, value), ); return this; } put(key: string, value: any): void { if (Array.isArray(value)) { this.putArray(key, value); } else if (value.constructor === Object) { this.putObject(key, value); } else { this.putSimple(key, value); } } putArray(key: string, value: (string | number)[]): void { this.processedQuery[`${key}[]`] = value; } putObject(key: string, value: object): void { Object.entries(value).forEach( ([entry, entryValue]: [string, string | number]) => { this.processedQuery[`${key}[${entry}]`] = entryValue; }, ); } putSimple(key: string, value: string | number): void { this.processedQuery[key] = value; } stringify(): string { return `?${querystring.stringify( this.processedQuery as ParsedUrlQueryInput, )}`; } } |