An interface meant to be implemented by MemberExpression, Identifier and ChainExpression and all Literal expressions

Type Parameters

  • T

Hierarchy (View Summary)

Implements

Constructors

  • Type Parameters

    • T

    Parameters

    • value: T
    • Optionalraw: string
    • Optionalregex: { flags: string; pattern: string }
    • Optionalbigint: string
    • Optionalrange: [number, number]
    • Optionalloc: SourceLocation

    Returns Literal<T>

Properties

bigint?: string

The loc field represents the source location information of the node. If the node contains no information about the source location, the field is null or undefined; otherwise it is an object consisting of a start position (the position of the first character of the parsed source region) and an end position (the position of the first character after the parsed source region): and offset index (the position of the first character)

range?: [number, number]

start and end position offset

raw?: string
regex?: { flags: string; pattern: string }
type: "Literal"

The type field is a string representing the AST variant type. Each subtype of Node is documented below with the specific string of its type field. You can use this field to determine which interface a node implements.

value: T

Methods

  • get all dependencies form an expression node

    the return from this method, is represent an answer for what identifiers this expression depends-on.

    ex:

    x + y;
    
    • for + operator : the answer should be lhs and rhs,
    • for x identifier: the answer should be node x,
    • for y identifier: the answer should be node y.

    so, the return from + will be [ node 'x', node 'y']

    and:

    • x.y.z * a ==> [ member node x.y.z, identifier 'a']

    Parameters

    • computed: true

    Returns ExpressionNode[]

  • ex:

    x + y;
    
    • for + operator : the answer should be lhs and rhs,
    • for x identifier: the answer should be node x,
    • for y identifier: the answer should be node y.

    so, the return from + will be ['x', 'y']

    and:

    • x.y.z ==> ['x', 'y', 'z']
    • x[y].z ==> ['x', ]

    Parameters

    • Optionalcomputed: true

      required for member and chaining operators

    Returns ExpressionEventPath[]

  • get all the events form this expression

    the return from this method, is represent an answer for what is this expression depends-on as identifier name

    ex:

    x + y;
    
    • for + operator : the answer should be lhs and rhs,
    • for x identifier: the answer should be x
    • for y identifier: the answer should be y the final output will be

    so, the return from + will be { x: undefined, y: undefined }

    and:

    • x.y.z * a ==> { x: { y: { z: undefined }, a: undefined } }
    • x.y.z > x.y.h.g ==> { x: { y: { z: undefined, h: { g: undefined} } } }
    • x[Symbol.toStringTag] + 'Class' + classType + array[3] ==> { x: { 'Symbol.toStringTag': undefined }, classType: undefined, array: { 3: undefined } }
    • 'name' ==> {}
    • 
      

    user[firstName + son of ${fatherName}] ``` ==> { user: { 'firstName:fatherName': undefined }, firstName: undefined, fatherName: undefined }

    Returns ExpressionEventMap

  • Returns undefined | string

  • execute/get the code for this expression and return the result value.

    Returns T

  • Returns undefined | string

  • Returns undefined | { flags: string; pattern: string }

  • Returns T

  • assign the value to this expression in stack.

    most ExpressionNode will not implement this method, and will throw an exception.

    Returns void

  • Returns object

  • re-write this expression as a javascript source

    Returns string