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 | 14x 14x 14x 14x 15x 14x 124x 109x 15x 14x 15x 15x 28x 28x 15x 14x 28x 1x 27x 1x 26x 14x 1x 14x 1x 1x 2x 2x 14x 26x 14x 15x 14x 14x | 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, )}`; } } |