All files / json-type/src/typescript util.ts

100% Statements 8/8
100% Branches 7/7
100% Functions 2/2
100% Lines 6/6

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 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74    1x   1x                                                                                                                               1x 19x   1x 5x  
import type {TsNode} from './types';
 
export const TAB = '  ';
 
export const keywords = new Set([
  'break',
  'case',
  'catch',
  'class',
  'const',
  'continue',
  'debugger',
  'default',
  'delete',
  'do',
  'else',
  'enum',
  'export',
  'extends',
  'false',
  'finally',
  'for',
  'function',
  'if',
  'import',
  'in',
  'instanceof',
  'new',
  'null',
  'return',
  'super',
  'switch',
  'this',
  'throw',
  'true',
  'try',
  'typeof',
  'var',
  'void',
  'while',
  'with',
  'as',
  'implements',
  'interface',
  'let',
  'package',
  'private',
  'protected',
  'public',
  'static',
  'yield',
  'any',
  'boolean',
  'constructor',
  'declare',
  'get',
  'module',
  'require',
  'number',
  'set',
  'string',
  'symbol',
  'type',
  'from',
  'of',
  'unknown',
]);
 
export const normalizeKey = (prop: string): string =>
  /^[a-z_][a-z_0-9]*$/i.test(prop) && !keywords.has(prop) ? prop : JSON.stringify(prop);
 
export const isSimpleType = ({node}: TsNode): boolean =>
  node === 'NumberKeyword' || node === 'StringKeyword' || node === 'BooleanKeyword';