Skip to content

⬅️ Back to Table of Contents

📄 tsUtils

📊 Analysis Summary

Metric Count
🔧 Functions 4
📊 Variables & Constants 1
📐 Interfaces 1

📚 Table of Contents

🛠️ File Location:

📂 packages/website/src/components/ast/tsUtils.ts

Variables & Constants

Name Type Kind Value Exported
tsEnumCache TsParsedEnums \| undefined let/var *not shown*

Functions

extractEnum(obj: Record<number, number | string>): Record<number, string>

Extract the enum values from the TypeScript enum. typescript enum's have duplicates, and we always want to take first one. e.g. SyntaxKind.EqualsToken = 63, SyntaxKind.FirstAssignment = 63

Raw JSDoc
/**
 * Extract the enum values from the TypeScript enum.
 * typescript enum's have duplicates, and we always want to take first one.
 * e.g. SyntaxKind.EqualsToken = 63, SyntaxKind.FirstAssignment = 63
 */

Calls:

  • Object.entries
Code
export function extractEnum(
  obj: Record<number, number | string>,
): Record<number, string> {
  const result: Record<number, string> = {};
  const keys = Object.entries(obj);
  for (const [name, value] of keys) {
    if (typeof value === 'number' && !(value in result)) {
      result[value] = name;
    }
  }
  return result;
}

tsEnumToString(type: keyof TsParsedEnums, value: number): string | undefined

Convert a TypeScript enum value to a string.

Raw JSDoc
/**
 * Convert a TypeScript enum value to a string.
 */

Calls:

  • getTsEnum
Code
export function tsEnumToString(
  type: keyof TsParsedEnums,
  value: number,
): string | undefined {
  return getTsEnum(type)[value];
}

tsEnumFlagToString(type: keyof TsParsedEnums, value: number): string | undefined

Convert a TypeScript enum flag value to a concatenated string of the flags.

Raw JSDoc
/**
 * Convert a TypeScript enum flag value to a concatenated string of the flags.
 */

Calls:

  • Object.entries(getTsEnum(type)) .filter(([f]) => (Number(f) & value) !== 0) .map(([, name]) =>${type}.${name}) .join
Code
export function tsEnumFlagToString(
  type: keyof TsParsedEnums,
  value: number,
): string | undefined {
  return Object.entries(getTsEnum(type))
    .filter(([f]) => (Number(f) & value) !== 0)
    .map(([, name]) => `${type}.${name}`)
    .join('\n');
}

getTsEnum(type: keyof TsParsedEnums): Record<number, string>

Get the TypeScript enum values.

Raw JSDoc
/**
 * Get the TypeScript enum values.
 */

Calls:

  • extractEnum

Internal Comments:

// @ts-expect-error: non public API (x2)
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument (x2)

Code
function getTsEnum(type: keyof TsParsedEnums): Record<number, string> {
  tsEnumCache ??= {
    LanguageVariant: extractEnum(window.ts.LanguageVariant),
    ModifierFlags: extractEnum(window.ts.ModifierFlags),
    NodeFlags: extractEnum(window.ts.NodeFlags),
    ObjectFlags: extractEnum(window.ts.ObjectFlags),
    ScriptKind: extractEnum(window.ts.ScriptKind),
    ScriptTarget: extractEnum(window.ts.ScriptTarget),
    SymbolFlags: extractEnum(window.ts.SymbolFlags),
    SyntaxKind: extractEnum(window.ts.SyntaxKind),
    TokenFlags: extractEnum(window.ts.TokenFlags),
    TypeFlags: extractEnum(window.ts.TypeFlags),
    // @ts-expect-error: non public API
    // eslint-disable-next-line @typescript-eslint/no-unsafe-argument
    TransformFlags: extractEnum(window.ts.TransformFlags),
  };
  return tsEnumCache[type];
}

Interfaces

TsParsedEnums

Interface Code
interface TsParsedEnums {
  LanguageVariant: Record<number, string>;
  ModifierFlags: Record<number, string>;
  NodeFlags: Record<number, string>;
  ObjectFlags: Record<number, string>;
  ScriptKind: Record<number, string>;
  ScriptTarget: Record<number, string>;
  SymbolFlags: Record<number, string>;
  SyntaxKind: Record<number, string>;
  TokenFlags: Record<number, string>;
  TransformFlags: Record<number, string>;
  TypeFlags: Record<number, string>;
}

Properties

Name Type Optional Description
LanguageVariant Record<number, string> not shown
ModifierFlags Record<number, string> not shown
NodeFlags Record<number, string> not shown
ObjectFlags Record<number, string> not shown
ScriptKind Record<number, string> not shown
ScriptTarget Record<number, string> not shown
SymbolFlags Record<number, string> not shown
SyntaxKind Record<number, string> not shown
TokenFlags Record<number, string> not shown
TransformFlags Record<number, string> not shown
TypeFlags Record<number, string> not shown

Generated by Syntax Scribe