@vkontakte/api-schema-typescript-generator
Version:
VK API TypeScript generator
76 lines (61 loc) • 1.89 kB
text/typescript
import { Dictionary } from './types';
export function flatten<T>(input: Array<T | T[]>): T[] {
const stack = [...input];
const result: T[] = [];
while (stack.length) {
const next = stack.pop();
if (next) {
if (Array.isArray(next)) {
stack.push(...next);
} else {
result.push(next);
}
}
}
return result.reverse();
}
export function isString(object: any): object is string {
return typeof object === 'string';
}
export function isObject(object: any): boolean {
return Object.prototype.toString.call(object) === '[object Object]';
}
export function capitalizeFirstLetter(string: string): string {
return string.charAt(0).toUpperCase() + string.slice(1);
}
export function uniqueArray<T = any>(array: T[]): T[] {
return array.filter((v, i, a) => a.indexOf(v) === i);
}
export function sortArrayAlphabetically(array: string[]): string[] {
return array.sort((a: string, b: string) => a.localeCompare(b));
}
export function arrayToMap(array: any[]): Dictionary<boolean> {
if (!array) {
return {};
}
return array.reduce((acc, value) => {
acc[value] = true;
return acc;
}, {});
}
export function trimStringDoubleSpaces(string: string): string {
return string.trim().replace(/\s\s+/g, ' ');
}
export function quoteJavaScriptValue(value: string | number) {
return isString(value) ? `'${value}'` : value;
}
/**
* Removes empty string array elements from start and end of array, trim array elements and returns the new array
*
* @example trimArray(['', 'First', '', 'Second', '', '']) => ['First', '', 'Second']
*/
export function trimArray(array: string[]): string[] {
let trimmedArray = array.map((v) => v.trim());
while (trimmedArray[0] === '') {
trimmedArray.shift();
}
while (trimmedArray[trimmedArray.length - 1] === '') {
trimmedArray.pop();
}
return trimmedArray;
}