@ibyar/expressions 1.0.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/README.md +48 -1
  2. package/api/abstract.js.map +1 -1
  3. package/api/class/class.js +143 -93
  4. package/api/class/class.js.map +1 -1
  5. package/api/class/decorator.js +8 -3
  6. package/api/class/decorator.js.map +1 -1
  7. package/api/computing/call.js +8 -3
  8. package/api/computing/call.js.map +1 -1
  9. package/api/computing/debugger.js +8 -3
  10. package/api/computing/debugger.js.map +1 -1
  11. package/api/computing/new.js +8 -3
  12. package/api/computing/new.js.map +1 -1
  13. package/api/computing/rest.js +8 -3
  14. package/api/computing/rest.js.map +1 -1
  15. package/api/computing/return.js +8 -3
  16. package/api/computing/return.js.map +1 -1
  17. package/api/computing/spread.js +8 -3
  18. package/api/computing/spread.js.map +1 -1
  19. package/api/computing/throw.js +38 -23
  20. package/api/computing/throw.js.map +1 -1
  21. package/api/computing/yield.js +8 -3
  22. package/api/computing/yield.js.map +1 -1
  23. package/api/definition/array.js +23 -13
  24. package/api/definition/array.js.map +1 -1
  25. package/api/definition/bind.js +8 -3
  26. package/api/definition/bind.js.map +1 -1
  27. package/api/definition/comment.js +8 -3
  28. package/api/definition/comment.js.map +1 -1
  29. package/api/definition/function.js +53 -33
  30. package/api/definition/function.js.map +1 -1
  31. package/api/definition/member.js +8 -3
  32. package/api/definition/member.js.map +1 -1
  33. package/api/definition/object.js +38 -23
  34. package/api/definition/object.js.map +1 -1
  35. package/api/definition/statement.js +8 -3
  36. package/api/definition/statement.js.map +1 -1
  37. package/api/definition/values.js +68 -43
  38. package/api/definition/values.js.map +1 -1
  39. package/api/deserialize/deserialize.js.map +1 -1
  40. package/api/expression.d.ts +3 -0
  41. package/api/expression.d.ts.map +1 -1
  42. package/api/expression.js.map +1 -1
  43. package/api/module/common.js +8 -3
  44. package/api/module/common.js.map +1 -1
  45. package/api/module/export.js +53 -33
  46. package/api/module/export.js.map +1 -1
  47. package/api/module/import.js +68 -43
  48. package/api/module/import.js.map +1 -1
  49. package/api/operators/assignment.js +6 -2
  50. package/api/operators/assignment.js.map +1 -1
  51. package/api/operators/await.js +8 -3
  52. package/api/operators/await.js.map +1 -1
  53. package/api/operators/binary.js +6 -2
  54. package/api/operators/binary.js.map +1 -1
  55. package/api/operators/chaining.js +8 -3
  56. package/api/operators/chaining.js.map +1 -1
  57. package/api/operators/comma.js +8 -3
  58. package/api/operators/comma.js.map +1 -1
  59. package/api/operators/grouping.js +8 -3
  60. package/api/operators/grouping.js.map +1 -1
  61. package/api/operators/logical.js +6 -2
  62. package/api/operators/logical.js.map +1 -1
  63. package/api/operators/pipeline.js +8 -3
  64. package/api/operators/pipeline.js.map +1 -1
  65. package/api/operators/ternary.js +8 -3
  66. package/api/operators/ternary.js.map +1 -1
  67. package/api/operators/unary.js +6 -2
  68. package/api/operators/unary.js.map +1 -1
  69. package/api/operators/update.js +6 -2
  70. package/api/operators/update.js.map +1 -1
  71. package/api/program.js +8 -3
  72. package/api/program.js.map +1 -1
  73. package/api/statement/control/block.js +8 -3
  74. package/api/statement/control/block.js.map +1 -1
  75. package/api/statement/control/empty.js +8 -3
  76. package/api/statement/control/empty.js.map +1 -1
  77. package/api/statement/control/if.js +8 -3
  78. package/api/statement/control/if.js.map +1 -1
  79. package/api/statement/control/switch.js +38 -23
  80. package/api/statement/control/switch.js.map +1 -1
  81. package/api/statement/control/terminate.js +38 -23
  82. package/api/statement/control/terminate.js.map +1 -1
  83. package/api/statement/control/with.js +8 -3
  84. package/api/statement/control/with.js.map +1 -1
  85. package/api/statement/declarations/declares.js +23 -13
  86. package/api/statement/declarations/declares.js.map +1 -1
  87. package/api/statement/iterations/for.js +53 -33
  88. package/api/statement/iterations/for.js.map +1 -1
  89. package/api/statement/iterations/while.js +23 -13
  90. package/api/statement/iterations/while.js.map +1 -1
  91. package/bin/cli.d.ts +3 -0
  92. package/bin/cli.d.ts.map +1 -0
  93. package/bin/cli.js +73 -0
  94. package/bin/cli.js.map +1 -0
  95. package/package.json +8 -5
  96. package/scope/builder.d.ts +27 -0
  97. package/scope/builder.d.ts.map +1 -0
  98. package/scope/builder.js +73 -0
  99. package/scope/builder.js.map +1 -0
  100. package/scope/event.js.map +1 -1
  101. package/scope/finalizer.js.map +1 -1
  102. package/scope/index.d.ts +1 -0
  103. package/scope/index.d.ts.map +1 -1
  104. package/scope/index.js +1 -0
  105. package/scope/index.js.map +1 -1
  106. package/scope/pool.js.map +1 -1
  107. package/scope/proxy.js.map +1 -1
  108. package/scope/scope.d.ts.map +1 -1
  109. package/scope/scope.js +4 -3
  110. package/scope/scope.js.map +1 -1
  111. package/scope/signal.d.ts +75 -0
  112. package/scope/signal.d.ts.map +1 -0
  113. package/scope/signal.js +226 -0
  114. package/scope/signal.js.map +1 -0
  115. package/scope/stack.d.ts +1 -1
  116. package/scope/stack.d.ts.map +1 -1
  117. package/scope/stack.js +1 -1
  118. package/scope/stack.js.map +1 -1
  119. package/scope/variable.d.ts +1 -0
  120. package/scope/variable.d.ts.map +1 -0
  121. package/scope/variable.js +2 -0
  122. package/scope/variable.js.map +1 -0
  123. package/scope/variables.d.ts +66 -0
  124. package/scope/variables.d.ts.map +1 -0
  125. package/scope/variables.js +214 -0
  126. package/scope/variables.js.map +1 -0
  127. package/v8/enums.d.ts +5 -5
  128. package/v8/enums.d.ts.map +1 -1
  129. package/v8/enums.js +2 -4
  130. package/v8/enums.js.map +1 -1
  131. package/v8/factory.js.map +1 -1
  132. package/v8/inline.js.map +1 -1
  133. package/v8/parser.js.map +1 -1
  134. package/v8/stream.js +1 -2
  135. package/v8/stream.js.map +1 -1
  136. package/v8/token.js +1 -2
  137. package/v8/token.js.map +1 -1
  138. package/visit/visitor.js.map +1 -1
  139. package/v8/nodes.d.ts +0 -0
  140. package/v8/nodes.js +0 -2
  141. package/v8/nodes.js.map +0 -1
package/v8/enums.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../src/expressions/v8/enums.ts"],"names":[],"mappings":"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","sourcesContent":["import { AccessorProperty, MethodDefinition, PropertyDefinition, StaticBlock } from '../api/class/class.js';\nimport { ExpressionNode } from '../api/expression.js';\nimport { VariableDeclarator } from '../api/statement/declarations/declares.js';\nimport { PositionMark } from './inline.js';\nimport { Token } from './token.js';\n\nexport function isInRange(num: number, start: number, end: number) {\n\treturn num >= start && num <= end;\n}\n\nexport enum ParsingArrowHeadFlag { CertainlyNotArrowHead, MaybeArrowHead, AsyncArrowFunction }\nexport enum PropertyKind {\n\tValue, Shorthand, ShorthandOrClassField,\n\tAssign, Method, ClassField, AccessorGetter, AccessorSetter,\n\tSpread, NotSet\n}\nexport function isAccessor(kind: PropertyKind) {\n\treturn kind === PropertyKind.AccessorGetter || kind === PropertyKind.AccessorSetter;\n}\n\nexport enum PropertyPosition {\n\tObjectLiteral,\n\tClassLiteral\n}\n\nexport class PropertyKindInfo {\n\tname: string;\n\tposition = PropertyPosition.ClassLiteral;\n\tfuncFlag = ParseFunctionFlag.IsNormal;\n\tkind = PropertyKind.NotSet;\n\tisComputedName = false;\n\tisPrivate = false;\n\tisStatic = false;\n\tisRest = false;\n\n\trangeStart: PositionMark;\n\n\tparsePropertyKindFromToken(token: Token): boolean {\n\t\t// This returns true, setting the property kind, iff the given token is\n\t\t// one which must occur after a property name, indicating that the\n\t\t// previous token was in fact a name and not a modifier (like the \"get\" in\n\t\t// \"get x\").\n\t\tswitch (token) {\n\t\t\tcase Token.COLON:\n\t\t\t\tthis.kind = PropertyKind.Value;\n\t\t\t\treturn true;\n\t\t\tcase Token.COMMA:\n\t\t\t\tthis.kind = PropertyKind.Shorthand;\n\t\t\t\treturn true;\n\t\t\tcase Token.RBRACE:\n\t\t\t\tthis.kind = PropertyKind.ShorthandOrClassField;\n\t\t\t\treturn true;\n\t\t\tcase Token.ASSIGN:\n\t\t\t\tthis.kind = PropertyKind.Assign;\n\t\t\t\treturn true;\n\t\t\tcase Token.LPAREN:\n\t\t\t\tthis.kind = PropertyKind.Method;\n\t\t\t\treturn true;\n\t\t\tcase Token.MUL:\n\t\t\tcase Token.SEMICOLON:\n\t\t\t\tthis.kind = PropertyKind.ClassField;\n\t\t\t\treturn true;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t\treturn false;\n\t}\n\n}\n\nexport type FunctionInfo = { rest?: boolean };\n\nexport enum PreParserIdentifierType {\n\tNullIdentifier,\n\tUnknownIdentifier,\n\tEvalIdentifier,\n\tArgumentsIdentifier,\n\tConstructorIdentifier,\n\tAwaitIdentifier,\n\tAsyncIdentifier,\n\tNameIdentifier,\n\tPrivateNameIdentifier\n}\n\nexport enum FunctionBodyType {\n\tEXPRESSION,\n\tBLOCK,\n}\n\nexport enum ParseFunctionFlag {\n\tIsNormal = 0,\n\tIsGenerator = 1 << 0,\n\tIsAsync = 1 << 1\n}\n\nexport enum FunctionKind {\n\n\t// BEGIN constructable functions\n\tNormalFunction,\n\tModule,\n\tAsyncModule,\n\t// BEGIN class constructors\n\t// BEGIN base constructors\n\tBaseConstructor,\n\t// BEGIN default constructors\n\tDefaultBaseConstructor,\n\t// END base constructors\n\t// BEGIN derived constructors\n\tDefaultDerivedConstructor,\n\t// END default constructors\n\tDerivedConstructor,\n\t// END derived constructors\n\t// END class constructors\n\t// END constructable functions.\n\t// BEGIN accessors\n\tGetterFunction,\n\tStaticGetterFunction,\n\tSetterFunction,\n\tStaticSetterFunction,\n\t// END accessors\n\t// BEGIN arrow functions\n\tArrowFunction,\n\t// BEGIN async functions\n\tAsyncArrowFunction,\n\t// END arrow functions\n\tAsyncFunction,\n\t// BEGIN concise methods 1\n\tAsyncConciseMethod,\n\tStaticAsyncConciseMethod,\n\t// BEGIN generators\n\tAsyncConciseGeneratorMethod,\n\tStaticAsyncConciseGeneratorMethod,\n\t// END concise methods 1\n\tAsyncGeneratorFunction,\n\t// END async functions\n\tGeneratorFunction,\n\t// BEGIN concise methods 2\n\tConciseGeneratorMethod,\n\tStaticConciseGeneratorMethod,\n\t// END generators\n\tConciseMethod,\n\tStaticConciseMethod,\n\tClassMembersInitializerFunction,\n\tClassStaticInitializerFunction,\n\t// END concise methods 2\n\tInvalid,\n\n\tLastFunctionKind = ClassStaticInitializerFunction,\n}\n\nconst FUNCTIONS_TYPES: FunctionKind[][][] = [\n\t[\n\t\t// SubFunctionKind::kNormalFunction\n\t\t[// is_generator=false\n\t\t\tFunctionKind.NormalFunction,\n\t\t\tFunctionKind.AsyncFunction\n\t\t],\n\t\t[// is_generator=true\n\t\t\tFunctionKind.GeneratorFunction,\n\t\t\tFunctionKind.AsyncGeneratorFunction\n\t\t],\n\t],\n\t[\n\t\t// SubFunctionKind::kNonStaticMethod\n\t\t[// is_generator=false\n\t\t\tFunctionKind.ConciseMethod,\n\t\t\tFunctionKind.AsyncConciseMethod\n\t\t],\n\t\t[// is_generator=true\n\t\t\tFunctionKind.ConciseGeneratorMethod,\n\t\t\tFunctionKind.AsyncConciseGeneratorMethod\n\t\t],\n\t],\n\t[\n\t\t// SubFunctionKind::kStaticMethod\n\t\t[// is_generator=false\n\t\t\tFunctionKind.StaticConciseMethod,\n\t\t\tFunctionKind.StaticAsyncConciseMethod\n\t\t],\n\t\t[// is_generator=true\n\t\t\tFunctionKind.StaticConciseGeneratorMethod,\n\t\t\tFunctionKind.StaticAsyncConciseGeneratorMethod\n\t\t],\n\t]\n];\n\nexport enum SubFunctionKind {\n\tNormalFunction,\n\tNonStaticMethod,\n\tStaticMethod,\n}\n\nexport enum StaticFlag {\n\tNotStatic,\n\tStatic\n};\n\n\nexport function functionKindForImpl(subFunctionKind: SubFunctionKind, flags: ParseFunctionFlag): FunctionKind {\n\treturn FUNCTIONS_TYPES[subFunctionKind]\n\t[(flags & ParseFunctionFlag.IsGenerator) != 0 ? 1 : 0]\n\t[(flags & ParseFunctionFlag.IsAsync) != 0 ? 1 : 0];\n}\n\nexport function functionKindFor(isGenerator: boolean, isAsync: boolean): FunctionKind {\n\treturn FUNCTIONS_TYPES[SubFunctionKind.NormalFunction][isGenerator ? 1 : 0][isAsync ? 1 : 0];\n}\n\nexport function methodKindFor(isStatic: boolean, isGenerator: boolean, isAsync: boolean): FunctionKind {\n\treturn FUNCTIONS_TYPES[isStatic ? SubFunctionKind.StaticMethod : SubFunctionKind.NonStaticMethod][isGenerator ? 1 : 0][isAsync ? 1 : 0];\n}\n\nexport enum FunctionSyntaxKind {\n\tAnonymousExpression,\n\tNamedExpression,\n\tDeclaration,\n\tAccessorOrMethod,\n\tWrapped,\n\n\tLastFunctionSyntaxKind = Wrapped,\n};\n\n\n\nexport function isArrowFunction(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.ArrowFunction, FunctionKind.AsyncArrowFunction);\n}\n\nexport function isModule(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.Module, FunctionKind.AsyncModule);\n}\n\nexport function isAsyncModule(kind: FunctionKind) {\n\treturn kind == FunctionKind.AsyncModule;\n}\n\nexport function isAsyncGeneratorFunction(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.AsyncConciseGeneratorMethod, FunctionKind.AsyncGeneratorFunction);\n}\n\nexport function isGeneratorFunction(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.AsyncConciseGeneratorMethod, FunctionKind.StaticConciseGeneratorMethod);\n}\n\nexport function isAsyncFunction(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.AsyncArrowFunction, FunctionKind.AsyncGeneratorFunction);\n}\n\nexport function isResumableFunction(kind: FunctionKind) {\n\treturn isGeneratorFunction(kind) || isAsyncFunction(kind) || isModule(kind);\n}\n\nexport function isConciseMethod(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.AsyncConciseMethod, FunctionKind.StaticAsyncConciseGeneratorMethod)\n\t\t|| isInRange(kind, FunctionKind.ConciseGeneratorMethod, FunctionKind.ClassStaticInitializerFunction);\n}\n\nexport function isStrictFunctionWithoutPrototype(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.GetterFunction, FunctionKind.AsyncArrowFunction)\n\t\t|| isInRange(kind, FunctionKind.AsyncConciseMethod, FunctionKind.StaticAsyncConciseGeneratorMethod)\n\t\t|| isInRange(kind, FunctionKind.ConciseGeneratorMethod, FunctionKind.ClassStaticInitializerFunction);\n}\n\nexport function isGetterFunction(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.GetterFunction, FunctionKind.StaticGetterFunction);\n}\n\nexport function isSetterFunction(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.SetterFunction, FunctionKind.StaticSetterFunction);\n}\n\nexport function isAccessorFunction(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.GetterFunction, FunctionKind.StaticSetterFunction);\n}\n\nexport function isDefaultConstructor(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.DefaultBaseConstructor, FunctionKind.DefaultDerivedConstructor);\n}\n\nexport function isBaseConstructor(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.BaseConstructor, FunctionKind.DefaultBaseConstructor);\n}\n\nexport function isDerivedConstructor(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.DefaultDerivedConstructor, FunctionKind.DerivedConstructor);\n}\n\nexport function isClassConstructor(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.BaseConstructor, FunctionKind.DerivedConstructor);\n}\n\nexport function isClassMembersInitializerFunction(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.ClassMembersInitializerFunction, FunctionKind.ClassStaticInitializerFunction);\n}\n\nexport function isConstructable(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.NormalFunction, FunctionKind.DerivedConstructor);\n}\n\nexport function isStatic(kind: FunctionKind) {\n\tswitch (kind) {\n\t\tcase FunctionKind.StaticGetterFunction:\n\t\tcase FunctionKind.StaticSetterFunction:\n\t\tcase FunctionKind.StaticConciseMethod:\n\t\tcase FunctionKind.StaticConciseGeneratorMethod:\n\t\tcase FunctionKind.StaticAsyncConciseMethod:\n\t\tcase FunctionKind.StaticAsyncConciseGeneratorMethod:\n\t\tcase FunctionKind.ClassStaticInitializerFunction:\n\t\t\treturn true;\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\nexport function bindsSuper(kind: FunctionKind) {\n\treturn isConciseMethod(kind) || isAccessorFunction(kind) || isClassConstructor(kind);\n}\n\nexport function isAwaitAsIdentifierDisallowed(kind: FunctionKind) {\n\t// 'await' is always disallowed as an identifier in module contexts. Callers\n\t// should short-circuit the module case instead of calling this.\n\treturn !isModule(kind) && (isAsyncFunction(kind) || kind == FunctionKind.ClassStaticInitializerFunction);\n}\n\nexport function functionKind2String(kind: FunctionKind): string {\n\treturn FunctionKind[kind];\n}\n\nexport type ClassInfo = {\n\textends?: ExpressionNode;\n\tpublicMembers: (MethodDefinition | PropertyDefinition)[],\n\tprivateMembers: (MethodDefinition | PropertyDefinition)[],\n\tstaticElements: (MethodDefinition | PropertyDefinition | AccessorProperty | StaticBlock)[],\n\tinstanceFields: (MethodDefinition | PropertyDefinition | AccessorProperty)[],\n\tconstructor: MethodDefinition | undefined,\n\n\thasSeenConstructor: boolean;\n\thasStaticComputedNames: boolean;\n\thasStaticElements: boolean;\n\thasStaticPrivateMethods: boolean;\n\thasStaticBlocks: boolean;\n\thasInstanceMembers: boolean;\n\trequiresBrand: boolean;\n\tisAnonymous: boolean;\n\thasPrivateMethods: boolean,\n\n\tcomputedFieldCount: number;\n\n\thomeObjectVariable?: VariableDeclarator;\n\tstaticHomeObjectVariable?: VariableDeclarator;\n};\n\nexport function createClassInfo(): ClassInfo {\n\treturn {\n\t\tpublicMembers: [],\n\t\tprivateMembers: [],\n\t\tstaticElements: [],\n\t\tinstanceFields: [],\n\t\t'constructor': undefined,\n\n\t\thasSeenConstructor: false,\n\t\thasStaticComputedNames: false,\n\t\thasStaticElements: false,\n\t\thasStaticPrivateMethods: false,\n\t\thasStaticBlocks: false,\n\t\thasInstanceMembers: false,\n\t\trequiresBrand: false,\n\t\tisAnonymous: false,\n\t\thasPrivateMethods: false,\n\n\t\tcomputedFieldCount: 0,\n\t};\n}\n\nexport enum FunctionNameValidity {\n\tFunctionNameIsStrictReserved = 'FunctionNameIsStrictReserved',\n\tSkipFunctionNameCheck = 'SkipFunctionNameCheck',\n\tFunctionNameValidityUnknown = 'FunctionNameValidityUnknown'\n};\n\nexport enum ObjectLiteralPropertyKind {\n\tCONSTANT = 'CONSTANT',\t// Property with constant value (compile time).\n\tCOMPUTED = 'COMPUTED',\t// Property with computed value (execution time).\n\tMATERIALIZED_LITERAL = 'MATERIALIZED_LITERAL', // Property value is a materialized literal.\n\tGETTER = 'GETTER',\n\tSETTER = 'SETTER',\t\t// Property is an accessor function.\n\tPROTOTYPE = 'PROTOTYPE',\t// Property is __proto__.\n\tSPREAD = 'SPREAD'\n}\nexport class ObjectLiteralProperty {\n\tstatic Kind = ObjectLiteralPropertyKind;\n}\n\nexport enum ClassLiteralPropertyKind {\n\tMETHOD = 'METHOD',\n\tGETTER = 'GETTER',\n\tSETTER = 'SETTER',\n\tFIELD = 'FIELD'\n}\n\nexport class ClassLiteralProperty {\n\tstatic Kind = ClassLiteralPropertyKind;\n}\n\nexport function classPropertyKindFor(kind: PropertyKind): ClassLiteralPropertyKind {\n\tswitch (kind) {\n\t\tcase PropertyKind.AccessorGetter:\n\t\t\treturn ClassLiteralPropertyKind.GETTER;\n\t\tcase PropertyKind.AccessorSetter:\n\t\t\treturn ClassLiteralPropertyKind.SETTER;\n\t\tcase PropertyKind.Method:\n\t\t\treturn ClassLiteralPropertyKind.METHOD;\n\t\tcase PropertyKind.ClassField:\n\t\t\treturn ClassLiteralPropertyKind.FIELD;\n\t}\n\tthrow new Error(`unexpected property kind: ${kind}`);\n}\n\nexport enum VariableMode {\n\tConst = 'Const',\n\tPrivateMethod = 'PrivateMethod',\n\tPrivateGetterOnly = 'PrivateGetterOnly',\n\tPrivateSetterOnly = 'PrivateSetterOnly'\n}\n\nexport function getVariableMode(kind: ClassLiteralPropertyKind): VariableMode {\n\tswitch (kind) {\n\t\tcase ClassLiteralPropertyKind.FIELD:\n\t\t\treturn VariableMode.Const;\n\t\tcase ClassLiteralPropertyKind.METHOD:\n\t\t\treturn VariableMode.PrivateMethod;\n\t\tcase ClassLiteralPropertyKind.GETTER:\n\t\t\treturn VariableMode.PrivateGetterOnly;\n\t\tcase ClassLiteralPropertyKind.SETTER:\n\t\t\treturn VariableMode.PrivateSetterOnly;\n\t}\n}\n\nexport enum VariableDeclarationContext {\n\tStatementListItem,\n\tStatement,\n\tForStatement\n};\n\nexport enum AllowLabelledFunctionStatement {\n\tAllowLabelledFunctionStatement,\n\tDisallowLabelledFunctionStatement,\n};\n"]}
1
+ {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../src/expressions/v8/enums.ts"],"names":[],"mappings":"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","sourcesContent":["import { AccessorProperty, MethodDefinition, PropertyDefinition, StaticBlock } from '../api/class/class.js';\nimport { ExpressionNode } from '../api/expression.js';\nimport { VariableDeclarator } from '../api/statement/declarations/declares.js';\nimport { PositionMark } from './inline.js';\nimport { Token } from './token.js';\n\nexport function isInRange(num: number, start: number, end: number) {\n\treturn num >= start && num <= end;\n}\n\nexport enum ParsingArrowHeadFlag { CertainlyNotArrowHead, MaybeArrowHead, AsyncArrowFunction }\nexport enum PropertyKind {\n\tValue, Shorthand, ShorthandOrClassField,\n\tAssign, Method, ClassField, AccessorGetter, AccessorSetter,\n\tSpread, NotSet\n}\nexport function isAccessor(kind: PropertyKind) {\n\treturn kind === PropertyKind.AccessorGetter || kind === PropertyKind.AccessorSetter;\n}\n\nexport enum PropertyPosition {\n\tObjectLiteral,\n\tClassLiteral\n}\n\nexport class PropertyKindInfo {\n\tname: string;\n\tposition = PropertyPosition.ClassLiteral;\n\tfuncFlag = ParseFunctionFlag.IsNormal;\n\tkind = PropertyKind.NotSet;\n\tisComputedName = false;\n\tisPrivate = false;\n\tisStatic = false;\n\tisRest = false;\n\n\trangeStart: PositionMark;\n\n\tparsePropertyKindFromToken(token: Token): boolean {\n\t\t// This returns true, setting the property kind, iff the given token is\n\t\t// one which must occur after a property name, indicating that the\n\t\t// previous token was in fact a name and not a modifier (like the \"get\" in\n\t\t// \"get x\").\n\t\tswitch (token) {\n\t\t\tcase Token.COLON:\n\t\t\t\tthis.kind = PropertyKind.Value;\n\t\t\t\treturn true;\n\t\t\tcase Token.COMMA:\n\t\t\t\tthis.kind = PropertyKind.Shorthand;\n\t\t\t\treturn true;\n\t\t\tcase Token.RBRACE:\n\t\t\t\tthis.kind = PropertyKind.ShorthandOrClassField;\n\t\t\t\treturn true;\n\t\t\tcase Token.ASSIGN:\n\t\t\t\tthis.kind = PropertyKind.Assign;\n\t\t\t\treturn true;\n\t\t\tcase Token.LPAREN:\n\t\t\t\tthis.kind = PropertyKind.Method;\n\t\t\t\treturn true;\n\t\t\tcase Token.MUL:\n\t\t\tcase Token.SEMICOLON:\n\t\t\t\tthis.kind = PropertyKind.ClassField;\n\t\t\t\treturn true;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\t\treturn false;\n\t}\n\n}\n\nexport type FunctionInfo = { rest?: boolean };\n\nexport enum PreParserIdentifierType {\n\tNullIdentifier,\n\tUnknownIdentifier,\n\tEvalIdentifier,\n\tArgumentsIdentifier,\n\tConstructorIdentifier,\n\tAwaitIdentifier,\n\tAsyncIdentifier,\n\tNameIdentifier,\n\tPrivateNameIdentifier\n}\n\nexport enum FunctionBodyType {\n\tEXPRESSION,\n\tBLOCK,\n}\n\nexport enum ParseFunctionFlag {\n\tIsNormal = 0,\n\tIsGenerator = 1 << 0,\n\tIsAsync = 1 << 1\n}\n\nexport enum FunctionKind {\n\n\t// BEGIN constructable functions\n\tNormalFunction,\n\tModule,\n\tAsyncModule,\n\t// BEGIN class constructors\n\t// BEGIN base constructors\n\tBaseConstructor,\n\t// BEGIN default constructors\n\tDefaultBaseConstructor,\n\t// END base constructors\n\t// BEGIN derived constructors\n\tDefaultDerivedConstructor,\n\t// END default constructors\n\tDerivedConstructor,\n\t// END derived constructors\n\t// END class constructors\n\t// END constructable functions.\n\t// BEGIN accessors\n\tGetterFunction,\n\tStaticGetterFunction,\n\tSetterFunction,\n\tStaticSetterFunction,\n\t// END accessors\n\t// BEGIN arrow functions\n\tArrowFunction,\n\t// BEGIN async functions\n\tAsyncArrowFunction,\n\t// END arrow functions\n\tAsyncFunction,\n\t// BEGIN concise methods 1\n\tAsyncConciseMethod,\n\tStaticAsyncConciseMethod,\n\t// BEGIN generators\n\tAsyncConciseGeneratorMethod,\n\tStaticAsyncConciseGeneratorMethod,\n\t// END concise methods 1\n\tAsyncGeneratorFunction,\n\t// END async functions\n\tGeneratorFunction,\n\t// BEGIN concise methods 2\n\tConciseGeneratorMethod,\n\tStaticConciseGeneratorMethod,\n\t// END generators\n\tConciseMethod,\n\tStaticConciseMethod,\n\tClassMembersInitializerFunction,\n\tClassStaticInitializerFunction,\n\t// END concise methods 2\n\tInvalid,\n\n\tLastFunctionKind = ClassStaticInitializerFunction,\n}\n\nconst FUNCTIONS_TYPES: FunctionKind[][][] = [\n\t[\n\t\t// SubFunctionKind::kNormalFunction\n\t\t[// is_generator=false\n\t\t\tFunctionKind.NormalFunction,\n\t\t\tFunctionKind.AsyncFunction\n\t\t],\n\t\t[// is_generator=true\n\t\t\tFunctionKind.GeneratorFunction,\n\t\t\tFunctionKind.AsyncGeneratorFunction\n\t\t],\n\t],\n\t[\n\t\t// SubFunctionKind::kNonStaticMethod\n\t\t[// is_generator=false\n\t\t\tFunctionKind.ConciseMethod,\n\t\t\tFunctionKind.AsyncConciseMethod\n\t\t],\n\t\t[// is_generator=true\n\t\t\tFunctionKind.ConciseGeneratorMethod,\n\t\t\tFunctionKind.AsyncConciseGeneratorMethod\n\t\t],\n\t],\n\t[\n\t\t// SubFunctionKind::kStaticMethod\n\t\t[// is_generator=false\n\t\t\tFunctionKind.StaticConciseMethod,\n\t\t\tFunctionKind.StaticAsyncConciseMethod\n\t\t],\n\t\t[// is_generator=true\n\t\t\tFunctionKind.StaticConciseGeneratorMethod,\n\t\t\tFunctionKind.StaticAsyncConciseGeneratorMethod\n\t\t],\n\t]\n];\n\nexport enum SubFunctionKind {\n\tNormalFunction,\n\tNonStaticMethod,\n\tStaticMethod,\n}\n\nexport enum StaticFlag {\n\tNotStatic,\n\tStatic\n};\n\n\nexport function functionKindForImpl(subFunctionKind: SubFunctionKind, flags: ParseFunctionFlag): FunctionKind {\n\treturn FUNCTIONS_TYPES[subFunctionKind]\n\t[(flags & ParseFunctionFlag.IsGenerator) != 0 ? 1 : 0]\n\t[(flags & ParseFunctionFlag.IsAsync) != 0 ? 1 : 0];\n}\n\nexport function functionKindFor(isGenerator: boolean, isAsync: boolean): FunctionKind {\n\treturn FUNCTIONS_TYPES[SubFunctionKind.NormalFunction][isGenerator ? 1 : 0][isAsync ? 1 : 0];\n}\n\nexport function methodKindFor(isStatic: boolean, isGenerator: boolean, isAsync: boolean): FunctionKind {\n\treturn FUNCTIONS_TYPES[isStatic ? SubFunctionKind.StaticMethod : SubFunctionKind.NonStaticMethod][isGenerator ? 1 : 0][isAsync ? 1 : 0];\n}\n\nexport enum FunctionSyntaxKind {\n\tAnonymousExpression,\n\tNamedExpression,\n\tDeclaration,\n\tAccessorOrMethod,\n\tWrapped,\n\n\tLastFunctionSyntaxKind = Wrapped,\n};\n\n\n\nexport function isArrowFunction(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.ArrowFunction, FunctionKind.AsyncArrowFunction);\n}\n\nexport function isModule(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.Module, FunctionKind.AsyncModule);\n}\n\nexport function isAsyncModule(kind: FunctionKind) {\n\treturn kind == FunctionKind.AsyncModule;\n}\n\nexport function isAsyncGeneratorFunction(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.AsyncConciseGeneratorMethod, FunctionKind.AsyncGeneratorFunction);\n}\n\nexport function isGeneratorFunction(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.AsyncConciseGeneratorMethod, FunctionKind.StaticConciseGeneratorMethod);\n}\n\nexport function isAsyncFunction(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.AsyncArrowFunction, FunctionKind.AsyncGeneratorFunction);\n}\n\nexport function isResumableFunction(kind: FunctionKind) {\n\treturn isGeneratorFunction(kind) || isAsyncFunction(kind) || isModule(kind);\n}\n\nexport function isConciseMethod(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.AsyncConciseMethod, FunctionKind.StaticAsyncConciseGeneratorMethod)\n\t\t|| isInRange(kind, FunctionKind.ConciseGeneratorMethod, FunctionKind.ClassStaticInitializerFunction);\n}\n\nexport function isStrictFunctionWithoutPrototype(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.GetterFunction, FunctionKind.AsyncArrowFunction)\n\t\t|| isInRange(kind, FunctionKind.AsyncConciseMethod, FunctionKind.StaticAsyncConciseGeneratorMethod)\n\t\t|| isInRange(kind, FunctionKind.ConciseGeneratorMethod, FunctionKind.ClassStaticInitializerFunction);\n}\n\nexport function isGetterFunction(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.GetterFunction, FunctionKind.StaticGetterFunction);\n}\n\nexport function isSetterFunction(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.SetterFunction, FunctionKind.StaticSetterFunction);\n}\n\nexport function isAccessorFunction(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.GetterFunction, FunctionKind.StaticSetterFunction);\n}\n\nexport function isDefaultConstructor(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.DefaultBaseConstructor, FunctionKind.DefaultDerivedConstructor);\n}\n\nexport function isBaseConstructor(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.BaseConstructor, FunctionKind.DefaultBaseConstructor);\n}\n\nexport function isDerivedConstructor(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.DefaultDerivedConstructor, FunctionKind.DerivedConstructor);\n}\n\nexport function isClassConstructor(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.BaseConstructor, FunctionKind.DerivedConstructor);\n}\n\nexport function isClassMembersInitializerFunction(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.ClassMembersInitializerFunction, FunctionKind.ClassStaticInitializerFunction);\n}\n\nexport function isConstructable(kind: FunctionKind) {\n\treturn isInRange(kind, FunctionKind.NormalFunction, FunctionKind.DerivedConstructor);\n}\n\nexport function isStatic(kind: FunctionKind) {\n\tswitch (kind) {\n\t\tcase FunctionKind.StaticGetterFunction:\n\t\tcase FunctionKind.StaticSetterFunction:\n\t\tcase FunctionKind.StaticConciseMethod:\n\t\tcase FunctionKind.StaticConciseGeneratorMethod:\n\t\tcase FunctionKind.StaticAsyncConciseMethod:\n\t\tcase FunctionKind.StaticAsyncConciseGeneratorMethod:\n\t\tcase FunctionKind.ClassStaticInitializerFunction:\n\t\t\treturn true;\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n\nexport function bindsSuper(kind: FunctionKind) {\n\treturn isConciseMethod(kind) || isAccessorFunction(kind) || isClassConstructor(kind);\n}\n\nexport function isAwaitAsIdentifierDisallowed(kind: FunctionKind) {\n\t// 'await' is always disallowed as an identifier in module contexts. Callers\n\t// should short-circuit the module case instead of calling this.\n\treturn !isModule(kind) && (isAsyncFunction(kind) || kind == FunctionKind.ClassStaticInitializerFunction);\n}\n\nexport function functionKind2String(kind: FunctionKind): string {\n\treturn FunctionKind[kind];\n}\n\nexport type ClassInfo = {\n\textends?: ExpressionNode;\n\tpublicMembers: (MethodDefinition | PropertyDefinition)[],\n\tprivateMembers: (MethodDefinition | PropertyDefinition)[],\n\tstaticElements: (MethodDefinition | PropertyDefinition | AccessorProperty | StaticBlock)[],\n\tinstanceFields: (MethodDefinition | PropertyDefinition | AccessorProperty)[],\n\tconstructor: MethodDefinition | undefined,\n\n\thasSeenConstructor: boolean;\n\thasStaticComputedNames: boolean;\n\thasStaticElements: boolean;\n\thasStaticPrivateMethods: boolean;\n\thasStaticBlocks: boolean;\n\thasInstanceMembers: boolean;\n\trequiresBrand: boolean;\n\tisAnonymous: boolean;\n\thasPrivateMethods: boolean,\n\n\tcomputedFieldCount: number;\n\n\thomeObjectVariable?: VariableDeclarator;\n\tstaticHomeObjectVariable?: VariableDeclarator;\n};\n\nexport function createClassInfo(): ClassInfo {\n\treturn {\n\t\tpublicMembers: [],\n\t\tprivateMembers: [],\n\t\tstaticElements: [],\n\t\tinstanceFields: [],\n\t\t'constructor': undefined,\n\n\t\thasSeenConstructor: false,\n\t\thasStaticComputedNames: false,\n\t\thasStaticElements: false,\n\t\thasStaticPrivateMethods: false,\n\t\thasStaticBlocks: false,\n\t\thasInstanceMembers: false,\n\t\trequiresBrand: false,\n\t\tisAnonymous: false,\n\t\thasPrivateMethods: false,\n\n\t\tcomputedFieldCount: 0,\n\t};\n}\n\nexport enum FunctionNameValidity {\n\tFunctionNameIsStrictReserved = 'FunctionNameIsStrictReserved',\n\tSkipFunctionNameCheck = 'SkipFunctionNameCheck',\n\tFunctionNameValidityUnknown = 'FunctionNameValidityUnknown'\n};\n\nexport enum ObjectLiteralPropertyKind {\n\tCONSTANT = 'CONSTANT',\t// Property with constant value (compile time).\n\tCOMPUTED = 'COMPUTED',\t// Property with computed value (execution time).\n\tMATERIALIZED_LITERAL = 'MATERIALIZED_LITERAL', // Property value is a materialized literal.\n\tGETTER = 'GETTER',\n\tSETTER = 'SETTER',\t\t// Property is an accessor function.\n\tPROTOTYPE = 'PROTOTYPE',\t// Property is __proto__.\n\tSPREAD = 'SPREAD'\n}\nexport class ObjectLiteralProperty {\n\tstatic Kind = ObjectLiteralPropertyKind;\n}\n\nexport enum ClassLiteralPropertyKind {\n\tMETHOD = 'METHOD',\n\tGETTER = 'GETTER',\n\tSETTER = 'SETTER',\n\tFIELD = 'FIELD'\n}\n\nexport class ClassLiteralProperty {\n\tstatic Kind = ClassLiteralPropertyKind;\n}\n\nexport function classPropertyKindFor(kind: PropertyKind): ClassLiteralPropertyKind {\n\tswitch (kind) {\n\t\tcase PropertyKind.AccessorGetter:\n\t\t\treturn ClassLiteralPropertyKind.GETTER;\n\t\tcase PropertyKind.AccessorSetter:\n\t\t\treturn ClassLiteralPropertyKind.SETTER;\n\t\tcase PropertyKind.Method:\n\t\t\treturn ClassLiteralPropertyKind.METHOD;\n\t\tcase PropertyKind.ClassField:\n\t\t\treturn ClassLiteralPropertyKind.FIELD;\n\t}\n\tthrow new Error(`unexpected property kind: ${kind}`);\n}\n\nexport enum VariableMode {\n\tConst = 'Const',\n\tPrivateMethod = 'PrivateMethod',\n\tPrivateGetterOnly = 'PrivateGetterOnly',\n\tPrivateSetterOnly = 'PrivateSetterOnly'\n}\n\nexport function getVariableMode(kind: ClassLiteralPropertyKind): VariableMode {\n\tswitch (kind) {\n\t\tcase ClassLiteralPropertyKind.FIELD:\n\t\t\treturn VariableMode.Const;\n\t\tcase ClassLiteralPropertyKind.METHOD:\n\t\t\treturn VariableMode.PrivateMethod;\n\t\tcase ClassLiteralPropertyKind.GETTER:\n\t\t\treturn VariableMode.PrivateGetterOnly;\n\t\tcase ClassLiteralPropertyKind.SETTER:\n\t\t\treturn VariableMode.PrivateSetterOnly;\n\t}\n}\n\nexport enum VariableDeclarationContext {\n\tStatementListItem,\n\tStatement,\n\tForStatement\n};\n\nexport enum AllowLabelledFunctionStatement {\n\tAllowLabelledFunctionStatement,\n\tDisallowLabelledFunctionStatement,\n};\n"]}
package/v8/factory.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/expressions/v8/factory.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tAccessorProperty, ClassBody, ClassDeclaration, ClassExpression,\n\tMetaProperty, MethodDefinition, MethodDefinitionKind, PrivateIdentifier,\n\tPropertyDefinition, StaticBlock, Super\n} from '../api/class/class.js';\nimport { Decorator } from '../api/class/decorator.js';\nimport { CallExpression } from '../api/computing/call.js';\nimport { DebuggerStatement } from '../api/computing/debugger.js';\nimport { NewExpression } from '../api/computing/new.js';\nimport { RestElement } from '../api/computing/rest.js';\nimport { ReturnStatement } from '../api/computing/return.js';\nimport { SpreadElement } from '../api/computing/spread.js';\nimport {\n\tCatchClauseNode, ThrowStatement, TryCatchNode\n} from '../api/computing/throw.js';\nimport { YieldExpression } from '../api/computing/yield.js';\nimport { ArrayExpression, ArrayPattern } from '../api/definition/array.js';\nimport { BindExpression } from '../api/definition/bind.js';\nimport {\n\tArrowFunctionExpression, AssignmentPattern, FunctionDeclaration, FunctionExpression\n} from '../api/definition/function.js';\nimport { MemberExpression } from '../api/definition/member.js';\nimport {\n\tObjectExpression, ObjectPattern, Property\n} from '../api/definition/object.js';\nimport { ExpressionStatement } from '../api/definition/statement.js';\nimport {\n\tIdentifier, Literal, TaggedTemplateExpression, TemplateLiteral, ThisExpression\n} from '../api/definition/values.js';\nimport {\n\tDeclarationExpression, ExpressionNode, SourceLocation\n} from '../api/expression.js';\nimport { ImportAttribute } from '../api/module/common.js';\nimport {\n\tExportAllDeclaration, ExportDefaultDeclaration,\n\tExportNamedDeclaration, ExportSpecifier\n} from '../api/module/export.js';\nimport {\n\tImportDeclaration, ImportDefaultSpecifier, ImportExpression,\n\tImportNamespaceSpecifier, ImportSpecifier\n} from '../api/module/import.js';\nimport {\n\tAssignmentExpression, AssignmentOperator\n} from '../api/operators/assignment.js';\nimport { AwaitExpression } from '../api/operators/await.js';\nimport { BinaryExpression, BinaryOperator } from '../api/operators/binary.js';\nimport { ChainExpression } from '../api/operators/chaining.js';\nimport { SequenceExpression } from '../api/operators/comma.js';\nimport { GroupingExpression } from '../api/operators/grouping.js';\nimport { LogicalExpression, LogicalOperator } from '../api/operators/logical.js';\nimport { PipelineExpression } from '../api/operators/pipeline.js';\nimport { ConditionalExpression } from '../api/operators/ternary.js';\nimport { UnaryExpression, UnaryOperator } from '../api/operators/unary.js';\nimport { UpdateExpression, UpdateOperator } from '../api/operators/update.js';\nimport { Program, ProgramSourceType } from '../api/program.js';\nimport { BlockStatement } from '../api/statement/control/block.js';\nimport { EmptyStatement } from '../api/statement/control/empty.js';\nimport { IfStatement } from '../api/statement/control/if.js';\nimport {\n\tDefaultExpression, SwitchCase, SwitchStatement\n} from '../api/statement/control/switch.js';\nimport {\n\tBreakStatement, ContinueStatement, LabeledStatement\n} from '../api/statement/control/terminate.js';\nimport { WithStatement } from '../api/statement/control/with.js';\nimport {\n\tVariableDeclarationNode, VariableDeclarator\n} from '../api/statement/declarations/declares.js';\nimport {\n\tForAwaitOfNode, ForDeclaration, ForInNode, ForNode, ForOfNode\n} from '../api/statement/iterations/for.js';\nimport { DoWhileNode, WhileNode } from '../api/statement/iterations/while.js';\nimport type { NodeFactory, SourcePositionFactory } from './node.js';\n\n\nexport class ExpressionNodeSourcePosition implements SourcePositionFactory {\n\tprivate newLineRegex = new RegExp('\\n', 'g');\n\n\tconstructor(private source: string) { }\n\n\tprivate getLineNumber(index: number, defaultValue: number) {\n\t\treturn this.source.substring(0, index).match(this.newLineRegex)?.length ?? defaultValue;\n\t}\n\n\tprivate getColumnNumber(index: number) {\n\t\tconst end = this.source.lastIndexOf('\\n', index);\n\t\tif (end === -1) {\n\t\t\treturn index;\n\t\t}\n\t\treturn index - end - 1;\n\t}\n\n\tpublic createSourcePosition(range?: [number, number]): SourceLocation | undefined {\n\t\tif (!range || !this.source) {\n\t\t\treturn;\n\t\t}\n\t\tconst startLine = this.getLineNumber(range[0], 1);\n\t\tconst endLine = this.getLineNumber(range[1], startLine);\n\t\tconst startColumn = this.getColumnNumber(range[0]);\n\t\tconst endColumn = this.getColumnNumber(range[1]);\n\t\treturn {\n\t\t\tstart: { line: startLine, column: startColumn },\n\t\t\tend: { line: endLine, column: endColumn },\n\t\t};\n\t}\n\n}\n\nexport class ExpressionNodeFactory implements NodeFactory {\n\n\tconstructor(private rangeFactory?: SourcePositionFactory) { }\n\n\tcreateDebuggerStatement(range?: [number, number]): DebuggerStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new DebuggerStatement(range, loc);\n\t}\n\n\tcreateSuper(range?: [number, number]): Super {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new Super(range, loc);\n\t}\n\tcreateThis(range?: [number, number]): ThisExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ThisExpression(range, loc);\n\t}\n\tcreateNull(range?: [number, number]): Literal<null> {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new Literal(null, undefined, undefined, undefined, range, loc);\n\t}\n\tcreateTrue(range?: [number, number]): Literal<true> {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new Literal(true, undefined, undefined, undefined, range, loc);\n\t}\n\tcreateFalse(range?: [number, number]): Literal<false> {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new Literal(false, undefined, undefined, undefined, range, loc);\n\t}\n\tcreateVoidZero(argument: ExpressionNode, range?: [number, number]): UnaryExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new UnaryExpression('void', argument, range, loc);\n\t}\n\tcreateEmptyStatement(range?: [number, number]): EmptyStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new EmptyStatement(range, loc);\n\t}\n\tcreateExpressionStatement(list: ExpressionNode[], range?: [number, number]): ExpressionNode {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ExpressionStatement(list, range, loc);\n\t}\n\tcreateCatchClause(block: BlockStatement, identifier?: ExpressionNode, range?: [number, number]): CatchClauseNode {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new CatchClauseNode(block, identifier, range, loc);\n\t}\n\tcreateTryStatement(tryBlock: BlockStatement, catchBlock?: ExpressionNode, finallyBlock?: ExpressionNode, range?: [number, number]): TryCatchNode {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new TryCatchNode(tryBlock, catchBlock, finallyBlock, range, loc);\n\t}\n\tcreateThrowStatement(exception: ExpressionNode, range?: [number, number]): ThrowStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ThrowStatement(exception, range, loc);\n\t}\n\n\tcreateBlock(statements: ExpressionNode[], range?: [number, number]): BlockStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new BlockStatement(statements, range, loc);\n\t}\n\tcreateIfStatement(condition: ExpressionNode, thenStatement: ExpressionNode, elseStatement?: ExpressionNode, range?: [number, number]): IfStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new IfStatement(condition, thenStatement, elseStatement, range, loc);\n\t}\n\tcreateDoStatement(condition: ExpressionNode, body: ExpressionNode, range?: [number, number] | undefined): DoWhileNode {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new DoWhileNode(condition, body, range, loc);\n\t}\n\tcreateClassDeclaration(body: ClassBody, decorators: Decorator[], id: Identifier, superClass?: ExpressionNode, range?: [number, number]): ClassDeclaration {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ClassDeclaration(body, decorators, id, superClass, range, loc);\n\t}\n\tcreateFunctionDeclaration(formals: DeclarationExpression[], bodyBlock: BlockStatement, isAsync: boolean, isGenerator: boolean, name: Identifier, range?: [number, number]): FunctionDeclaration {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new FunctionDeclaration(formals, bodyBlock, isAsync, isGenerator, name, range, loc);\n\t}\n\tcreateFunctionExpression(formals: DeclarationExpression[], bodyBlock: BlockStatement, isAsync: boolean, isGenerator: boolean, range?: [number, number]): FunctionExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new FunctionExpression(formals, bodyBlock, isAsync, isGenerator, undefined, range, loc);\n\t}\n\tcreateWhileStatement(condition: ExpressionNode, body: ExpressionNode, range?: [number, number] | undefined): WhileNode {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new WhileNode(condition, body, range, loc);\n\t}\n\tcreateSwitchStatement(tag: ExpressionNode, cases: SwitchCase[], range?: [number, number] | undefined): SwitchStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new SwitchStatement(tag, cases, range, loc);\n\t}\n\tcreateCaseBlock(test: ExpressionNode, block: BlockStatement, range?: [number, number] | undefined): SwitchCase {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new SwitchCase(test, block, range, loc);\n\t}\n\tcreateDefaultClause(block: BlockStatement, range?: [number, number] | undefined): DefaultExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new DefaultExpression(block, range, loc);\n\t}\n\tcreateWithStatement(object: ExpressionNode, body: ExpressionNode, range?: [number, number]): WithStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new WithStatement(object, body, range, loc);\n\t}\n\tcreateForStatement(body: ExpressionNode, initializer: ExpressionNode, cond: ExpressionNode, next: ExpressionNode, range?: [number, number] | undefined): ForNode {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ForNode(body, initializer, cond, next, range, loc);\n\t}\n\tcreateForOfStatement(initializer: ForDeclaration, enumerable: ExpressionNode, body: ExpressionNode, range?: [number, number] | undefined): ForOfNode {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ForOfNode(initializer, enumerable, body, range, loc);\n\t}\n\tcreateForAwaitOfStatement(left: ForDeclaration, right: ExpressionNode, body: ExpressionNode, range?: [number, number] | undefined): ForAwaitOfNode {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ForAwaitOfNode(left, right, body, range, loc);\n\t}\n\tcreateForInStatement(initializer: ForDeclaration, enumerable: ExpressionNode, body: ExpressionNode, range?: [number, number]): ForInNode {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ForInNode(initializer, enumerable, body, range, loc);\n\t}\n\tcreateVariableDeclaration(id: DeclarationExpression, init?: ExpressionNode, range?: [number, number]): VariableDeclarator {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new VariableDeclarator(id, init, range, loc);\n\t}\n\tcreateVariableStatement(variables: VariableDeclarator[], kind: 'let' | 'var' | 'const', range?: [number, number]): VariableDeclarationNode {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new VariableDeclarationNode(variables, kind, range, loc);\n\t}\n\tcreateContinueStatement(label?: Identifier, range?: [number, number]): ContinueStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ContinueStatement(label, range, loc);\n\t}\n\tcreateBreakStatement(label?: Identifier, range?: [number, number]): BreakStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new BreakStatement(label, range, loc);\n\t}\n\tcreateReturnStatement(argument?: ExpressionNode, range?: [number, number]): ReturnStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ReturnStatement(argument, range, loc);\n\t}\n\tcreateLabeledStatement(expression: Identifier, result: ExpressionNode, range?: [number, number]): LabeledStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new LabeledStatement(expression, result, range, loc);\n\t}\n\tcreateAssignmentPattern(left: DeclarationExpression, right: ExpressionNode, range?: [number, number]): AssignmentPattern {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new AssignmentPattern(left, right, range, loc);\n\t}\n\tcreateSpreadElement(argument: ExpressionNode, range?: [number, number]): SpreadElement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new SpreadElement(argument, range, loc);\n\t}\n\tcreateCommaListExpression(expressions: ExpressionNode[], range?: [number, number] | undefined): SequenceExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new SequenceExpression(expressions, range, loc);\n\t}\n\tcreateTemplateExpression(quasis: string[], expressions: ExpressionNode[], range?: [number, number]): TemplateLiteral {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new TemplateLiteral(quasis, expressions, range, loc);\n\t}\n\tcreateTaggedTemplateExpression(tag: ExpressionNode, quasis: string[], expressions: ExpressionNode[], range?: [number, number]): TaggedTemplateExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new TaggedTemplateExpression(tag, quasis, expressions, range, loc);\n\t}\n\tcreateNewExpression(className: ExpressionNode, parameters?: ExpressionNode[], range?: [number, number]): NewExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new NewExpression(className, parameters, range, loc);\n\t}\n\tcreateObjectBindingPattern(properties: (Property | RestElement)[], range?: [number, number] | undefined): ObjectPattern {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ObjectPattern(properties, range, loc);\n\t}\n\tcreateObjectLiteralExpression(properties: Property[], range?: [number, number]): ObjectExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ObjectExpression(properties, range, loc);\n\t}\n\tcreateArrayBindingPattern(elements: (DeclarationExpression | null)[], range?: [number, number]): ArrayPattern {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ArrayPattern(elements, range, loc);\n\t}\n\tcreateArrayLiteralExpression(elements: (ExpressionNode | SpreadElement | null)[], range?: [number, number]): ArrayExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ArrayExpression(elements, range, loc);\n\t}\n\tcreateAssignment(operator: AssignmentOperator, left: ExpressionNode, right: ExpressionNode, range?: [number, number]): AssignmentExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new AssignmentExpression(operator, left, right, range, loc);\n\t}\n\tcreateRestElement(argument: DeclarationExpression, range?: [number, number]): RestElement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new RestElement(argument, range, loc);\n\t}\n\tcreateArrowFunction(params: DeclarationExpression[], body: ExpressionNode | ExpressionNode[], expression: boolean, async: boolean, range?: [number, number]): ArrowFunctionExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ArrowFunctionExpression(params, body, expression, async, range, loc);\n\t}\n\tcreatePropertyDeclaration(key: ExpressionNode, value: DeclarationExpression | ExpressionNode, kind: 'init' | 'get' | 'set', method: boolean, shorthand: boolean, computed: boolean, range?: [number, number]): Property {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new Property(key, value, kind, method, shorthand, computed, range, loc);\n\t}\n\tcreateIdentifier(name: string, range?: [number, number]): Identifier {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new Identifier(name, range, loc);\n\t}\n\tcreatePropertyAssignment(object: ExpressionNode, property: ExpressionNode, computed: boolean, optional?: boolean, range?: [number, number]): MemberExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new MemberExpression(object, property, computed, optional, range, loc);\n\t}\n\tcreatePipelineExpression(left: ExpressionNode, right: ExpressionNode, params?: (ExpressionNode | '?' | '...?')[], range?: [number, number]): PipelineExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new PipelineExpression(left, right, params, range, loc);\n\t}\n\tcreateCallExpression(callee: ExpressionNode, params: ExpressionNode[], optional?: boolean, range?: [number, number]): CallExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new CallExpression(callee, params, optional, range, loc);\n\t}\n\tcreateBindExpression(object: ExpressionNode, property: ExpressionNode, computed: boolean, optional?: boolean, range?: [number, number]): BindExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new BindExpression(object, property, computed, optional, range, loc);\n\t}\n\tcreateChainExpression(expression: ExpressionNode, range?: [number, number]): ChainExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ChainExpression(expression, range, loc);\n\t}\n\tcreateLogicalExpression(operator: LogicalOperator, left: ExpressionNode, right: ExpressionNode, range?: [number, number],): LogicalExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new LogicalExpression(operator, left, right, range, loc);\n\t}\n\tcreateConditionalExpression(test: ExpressionNode, alternate: ExpressionNode, consequent: ExpressionNode, range?: [number, number]): ConditionalExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ConditionalExpression(test, alternate, consequent, range, loc);\n\t}\n\tcreateYieldExpression(delegate: boolean, argument?: ExpressionNode, range?: [number, number]): YieldExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new YieldExpression(delegate, argument, range, loc);\n\t}\n\tcreateMetaProperty(meta: Identifier, property: Identifier, range?: [number, number]): MetaProperty {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new MetaProperty(meta, property, range, loc);\n\t}\n\tcreateProgram(sourceType: ProgramSourceType, body: ExpressionNode[], range?: [number, number]): Program {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new Program(sourceType, body, range, loc);\n\t}\n\tcreateClassExpression(body: ClassBody, decorators: Decorator[], id?: Identifier, superClass?: ExpressionNode, range?: [number, number]): ClassExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ClassExpression(body, decorators, id, superClass, range, loc);\n\t}\n\tcreateClassStaticBlockDeclaration(body: ExpressionNode[], range?: [number, number]): StaticBlock {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new StaticBlock(body, range, loc);\n\t}\n\tcreateMethodSignature(kind: MethodDefinitionKind, key: ExpressionNode | PrivateIdentifier, value: FunctionExpression, decorators: Decorator[], computed: boolean, isStatic: boolean, range?: [number, number]): MethodDefinition {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new MethodDefinition(kind, key, value, decorators, computed, isStatic, range, loc);\n\t}\n\tcreatePropertySignature(key: ExpressionNode | PrivateIdentifier, decorators: Decorator[], computed: boolean, isStatic: boolean, value?: ExpressionNode, range?: [number, number]): PropertyDefinition {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new PropertyDefinition(key, decorators, computed, isStatic, value, range, loc);\n\t}\n\tcreateClassBody(body: (MethodDefinition | PropertyDefinition | AccessorProperty | StaticBlock)[], range?: [number, number]): ClassBody {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ClassBody(body, range, loc);\n\t}\n\tcreateNamespaceExportDeclaration(specifiers: ExportSpecifier[], declaration?: DeclarationExpression, source?: Literal<string>, assertions?: ImportAttribute[], range?: [number, number]): ExportNamedDeclaration {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ExportNamedDeclaration(specifiers, declaration, source, assertions, range, loc);\n\t}\n\tcreateExportSpecifier(local: Identifier, exported: Identifier, range?: [number, number]): ExportSpecifier {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ExportSpecifier(local, exported, range, loc);\n\t}\n\tcreateImportSpecifier(local: Identifier, imported: Identifier, range?: [number, number]): ImportSpecifier {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ImportSpecifier(local, imported, range, loc);\n\t}\n\tcreateImportDeclaration(source: Literal<string>, specifiers?: (ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier)[], assertions?: ImportAttribute[], range?: [number, number]): ImportDeclaration {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ImportDeclaration(source, specifiers, assertions, range, loc);\n\t}\n\tcreateImportNamespaceSpecifier(local: Identifier, range?: [number, number]): ImportNamespaceSpecifier {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ImportNamespaceSpecifier(local, range, loc);\n\t}\n\tcreateImportDefaultSpecifier(local: Identifier, range?: [number, number]): ImportDefaultSpecifier {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ImportDefaultSpecifier(local, range, loc);\n\t}\n\tcreateImportExpression(source: Literal<string>, attributes?: ExpressionNode, range?: [number, number]): ImportExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ImportExpression(source, attributes, range, loc);\n\t}\n\tcreateAssertEntry(key: Identifier | Literal<string>, value: Literal<string>, range?: [number, number]): ImportAttribute {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ImportAttribute(key, value, range, loc);\n\t}\n\tcreateExportDefault(declaration: FunctionDeclaration | ClassDeclaration | ExpressionNode, range?: [number, number],): ExportDefaultDeclaration {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ExportDefaultDeclaration(declaration, range, loc);\n\t}\n\tcreateExportAllDeclaration(source: Literal<string>, exported?: Identifier, assertions?: ImportAttribute[], range?: [number, number]): ExportAllDeclaration {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ExportAllDeclaration(source, exported, assertions, range, loc);\n\t}\n\tcreateInfixExpression(op: AssignmentOperator | LogicalOperator | BinaryOperator, left: ExpressionNode, right: ExpressionNode, range?: [number, number]): AssignmentExpression | LogicalExpression | BinaryExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\tswitch (op) {\n\t\t\tcase '=':\n\t\t\tcase '+=':\n\t\t\tcase '-=':\n\t\t\tcase '**=':\n\t\t\tcase '/=':\n\t\t\tcase '%=':\n\t\t\tcase '<<=':\n\t\t\tcase '>>=':\n\t\t\tcase '>>>=':\n\t\t\tcase '&=':\n\t\t\tcase '^=':\n\t\t\tcase '|=':\n\t\t\tcase '&&=':\n\t\t\tcase '||=':\n\t\t\tcase '??=':\n\t\t\t\treturn new AssignmentExpression(op, left, right, range, loc);\n\t\t\tcase '&&':\n\t\t\tcase '||':\n\t\t\tcase '??':\n\t\t\t\treturn new LogicalExpression(op, left, right, range, loc);\n\t\t\tcase '**':\n\t\t\tcase '*':\n\t\t\tcase '/':\n\t\t\tcase '%':\n\t\t\tcase '+':\n\t\t\tcase '-':\n\t\t\tcase '<':\n\t\t\tcase '<=':\n\t\t\tcase '>':\n\t\t\tcase '>=':\n\t\t\tcase 'in':\n\t\t\tcase 'instanceof':\n\t\t\tcase '==':\n\t\t\tcase '!=':\n\t\t\tcase '===':\n\t\t\tcase '!==':\n\t\t\tcase '<<':\n\t\t\tcase '>>':\n\t\t\tcase '>>>':\n\t\t\tcase '&':\n\t\t\tcase '^':\n\t\t\tcase '|':\n\t\t\tcase '>?':\n\t\t\tcase '<?':\n\t\t\tcase '<=>':\n\t\t\t\treturn new BinaryExpression(op, left, right, range, loc);\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Not Supported Operator: ${op}`);\n\t\t}\n\t}\n\tcreateUnaryExpression(operator: UpdateOperator | UnaryOperator | 'await', expression: ExpressionNode, range?: [number, number]): UpdateExpression | UnaryExpression | AwaitExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\tswitch (operator) {\n\t\t\tcase '++':\n\t\t\tcase '--':\n\t\t\t\treturn new UpdateExpression(operator, expression, true, range, loc);\n\t\t\tcase '+':\n\t\t\tcase '-':\n\t\t\tcase '!':\n\t\t\tcase '~':\n\t\t\tcase 'typeof':\n\t\t\tcase 'void':\n\t\t\tcase 'delete':\n\t\t\t\treturn new UnaryExpression(operator, expression, range, loc);\n\t\t\tcase 'await':\n\t\t\t\treturn new AwaitExpression(expression, range, loc);\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`${operator} is not prefix operator`);\n\t\t}\n\t}\n\tcreateUpdateExpression(operator: UpdateOperator, argument: ExpressionNode, prefix: boolean, range?: [number, number]): UpdateExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new UpdateExpression(operator, argument, prefix, range, loc);\n\t}\n\tcreateAwaitExpression(argument: ExpressionNode, range?: [number, number]): AwaitExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new AwaitExpression(argument, range, loc);\n\t}\n\tisIdentifier(node?: ExpressionNode): node is Identifier {\n\t\treturn node instanceof Identifier || node?.type === 'Identifier';\n\t}\n\tisObjectExpression(node?: ExpressionNode): node is ObjectExpression {\n\t\treturn node instanceof ObjectExpression || node?.type === 'ObjectExpression';\n\t}\n\tisArrayExpression(node?: ExpressionNode): node is ArrayExpression {\n\t\treturn node instanceof ArrayExpression || node?.type === 'ArrayExpression';\n\t}\n\tisObjectPattern(node?: ExpressionNode): node is ObjectPattern {\n\t\treturn node instanceof ObjectPattern || node?.type === 'ObjectPattern';\n\t}\n\tisArrayPattern(node?: ExpressionNode): node is ArrayPattern {\n\t\treturn node instanceof ArrayPattern || node?.type === 'ArrayPattern';\n\t}\n\tisAssignmentPattern(node?: ExpressionNode): node is AssignmentPattern {\n\t\treturn node instanceof AssignmentPattern || node?.type === 'AssignmentPattern';\n\t}\n\tisPattern(node?: ExpressionNode): boolean {\n\t\treturn this.isObjectPattern(node) || this.isArrayPattern(node) || this.isAssignmentPattern(node);\n\t}\n\tcanBePattern(node?: ExpressionNode): node is (ObjectExpression | ArrayExpression) {\n\t\treturn this.isObjectExpression(node) || this.isArrayExpression(node);\n\t}\n\tisProperty(node?: ExpressionNode): node is Property {\n\t\treturn node instanceof Property || node?.type === 'Property';\n\t}\n\tisMemberExpression(node?: ExpressionNode): node is MemberExpression {\n\t\treturn node instanceof MemberExpression || node?.type === 'MemberExpression';\n\t}\n\tisPropertyOrMemberExpression(node?: ExpressionNode): node is (Property | MemberExpression) {\n\t\treturn this.isProperty(node) || this.isMemberExpression(node);\n\t}\n\tisEmptyStatement(node: ExpressionNode): node is EmptyStatement {\n\t\treturn node instanceof EmptyStatement || node?.type === 'EmptyStatement';\n\t}\n\tisSequenceExpression(node: ExpressionNode): node is SequenceExpression {\n\t\treturn node instanceof SequenceExpression || node?.type === 'SequenceExpression';\n\t}\n\tisSuper(node: ExpressionNode): node is Super {\n\t\treturn node instanceof Super || node?.type === 'Super';\n\t}\n\tisAssignmentExpression(node: ExpressionNode): node is AssignmentExpression {\n\t\treturn node instanceof AssignmentExpression || node?.type === 'AssignmentExpression';\n\t}\n\tisGroupingExpression(node: ExpressionNode): node is GroupingExpression {\n\t\treturn node instanceof GroupingExpression || node?.type === 'GroupingExpression';\n\t}\n\tisSpreadElement(node: ExpressionNode): node is SpreadElement {\n\t\treturn node instanceof SpreadElement || node?.type === 'SpreadElement';\n\t}\n\n}\n"]}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/expressions/v8/factory.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\tAccessorProperty, ClassBody, ClassDeclaration, ClassExpression,\n\tMetaProperty, MethodDefinition, MethodDefinitionKind, PrivateIdentifier,\n\tPropertyDefinition, StaticBlock, Super\n} from '../api/class/class.js';\nimport { Decorator } from '../api/class/decorator.js';\nimport { CallExpression } from '../api/computing/call.js';\nimport { DebuggerStatement } from '../api/computing/debugger.js';\nimport { NewExpression } from '../api/computing/new.js';\nimport { RestElement } from '../api/computing/rest.js';\nimport { ReturnStatement } from '../api/computing/return.js';\nimport { SpreadElement } from '../api/computing/spread.js';\nimport {\n\tCatchClauseNode, ThrowStatement, TryCatchNode\n} from '../api/computing/throw.js';\nimport { YieldExpression } from '../api/computing/yield.js';\nimport { ArrayExpression, ArrayPattern } from '../api/definition/array.js';\nimport { BindExpression } from '../api/definition/bind.js';\nimport {\n\tArrowFunctionExpression, AssignmentPattern, FunctionDeclaration, FunctionExpression\n} from '../api/definition/function.js';\nimport { MemberExpression } from '../api/definition/member.js';\nimport {\n\tObjectExpression, ObjectPattern, Property\n} from '../api/definition/object.js';\nimport { ExpressionStatement } from '../api/definition/statement.js';\nimport {\n\tIdentifier, Literal, TaggedTemplateExpression, TemplateLiteral, ThisExpression\n} from '../api/definition/values.js';\nimport {\n\tDeclarationExpression, ExpressionNode, SourceLocation\n} from '../api/expression.js';\nimport { ImportAttribute } from '../api/module/common.js';\nimport {\n\tExportAllDeclaration, ExportDefaultDeclaration,\n\tExportNamedDeclaration, ExportSpecifier\n} from '../api/module/export.js';\nimport {\n\tImportDeclaration, ImportDefaultSpecifier, ImportExpression,\n\tImportNamespaceSpecifier, ImportSpecifier\n} from '../api/module/import.js';\nimport {\n\tAssignmentExpression, AssignmentOperator\n} from '../api/operators/assignment.js';\nimport { AwaitExpression } from '../api/operators/await.js';\nimport { BinaryExpression, BinaryOperator } from '../api/operators/binary.js';\nimport { ChainExpression } from '../api/operators/chaining.js';\nimport { SequenceExpression } from '../api/operators/comma.js';\nimport { GroupingExpression } from '../api/operators/grouping.js';\nimport { LogicalExpression, LogicalOperator } from '../api/operators/logical.js';\nimport { PipelineExpression } from '../api/operators/pipeline.js';\nimport { ConditionalExpression } from '../api/operators/ternary.js';\nimport { UnaryExpression, UnaryOperator } from '../api/operators/unary.js';\nimport { UpdateExpression, UpdateOperator } from '../api/operators/update.js';\nimport { Program, ProgramSourceType } from '../api/program.js';\nimport { BlockStatement } from '../api/statement/control/block.js';\nimport { EmptyStatement } from '../api/statement/control/empty.js';\nimport { IfStatement } from '../api/statement/control/if.js';\nimport {\n\tDefaultExpression, SwitchCase, SwitchStatement\n} from '../api/statement/control/switch.js';\nimport {\n\tBreakStatement, ContinueStatement, LabeledStatement\n} from '../api/statement/control/terminate.js';\nimport { WithStatement } from '../api/statement/control/with.js';\nimport {\n\tVariableDeclarationNode, VariableDeclarator\n} from '../api/statement/declarations/declares.js';\nimport {\n\tForAwaitOfNode, ForDeclaration, ForInNode, ForNode, ForOfNode\n} from '../api/statement/iterations/for.js';\nimport { DoWhileNode, WhileNode } from '../api/statement/iterations/while.js';\nimport type { NodeFactory, SourcePositionFactory } from './node.js';\n\n\nexport class ExpressionNodeSourcePosition implements SourcePositionFactory {\n\tprivate newLineRegex = new RegExp('\\n', 'g');\n\n\tconstructor(private source: string) { }\n\n\tprivate getLineNumber(index: number, defaultValue: number) {\n\t\treturn this.source.substring(0, index).match(this.newLineRegex)?.length ?? defaultValue;\n\t}\n\n\tprivate getColumnNumber(index: number) {\n\t\tconst end = this.source.lastIndexOf('\\n', index);\n\t\tif (end === -1) {\n\t\t\treturn index;\n\t\t}\n\t\treturn index - end - 1;\n\t}\n\n\tpublic createSourcePosition(range?: [number, number]): SourceLocation | undefined {\n\t\tif (!range || !this.source) {\n\t\t\treturn;\n\t\t}\n\t\tconst startLine = this.getLineNumber(range[0], 1);\n\t\tconst endLine = this.getLineNumber(range[1], startLine);\n\t\tconst startColumn = this.getColumnNumber(range[0]);\n\t\tconst endColumn = this.getColumnNumber(range[1]);\n\t\treturn {\n\t\t\tstart: { line: startLine, column: startColumn },\n\t\t\tend: { line: endLine, column: endColumn },\n\t\t};\n\t}\n\n}\n\nexport class ExpressionNodeFactory implements NodeFactory {\n\n\tconstructor(private rangeFactory?: SourcePositionFactory) { }\n\n\tcreateDebuggerStatement(range?: [number, number]): DebuggerStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new DebuggerStatement(range, loc);\n\t}\n\n\tcreateSuper(range?: [number, number]): Super {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new Super(range, loc);\n\t}\n\tcreateThis(range?: [number, number]): ThisExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ThisExpression(range, loc);\n\t}\n\tcreateNull(range?: [number, number]): Literal<null> {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new Literal(null, undefined, undefined, undefined, range, loc);\n\t}\n\tcreateTrue(range?: [number, number]): Literal<true> {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new Literal(true, undefined, undefined, undefined, range, loc);\n\t}\n\tcreateFalse(range?: [number, number]): Literal<false> {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new Literal(false, undefined, undefined, undefined, range, loc);\n\t}\n\tcreateVoidZero(argument: ExpressionNode, range?: [number, number]): UnaryExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new UnaryExpression('void', argument, range, loc);\n\t}\n\tcreateEmptyStatement(range?: [number, number]): EmptyStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new EmptyStatement(range, loc);\n\t}\n\tcreateExpressionStatement(list: ExpressionNode[], range?: [number, number]): ExpressionNode {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ExpressionStatement(list, range, loc);\n\t}\n\tcreateCatchClause(block: BlockStatement, identifier?: ExpressionNode, range?: [number, number]): CatchClauseNode {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new CatchClauseNode(block, identifier, range, loc);\n\t}\n\tcreateTryStatement(tryBlock: BlockStatement, catchBlock?: ExpressionNode, finallyBlock?: ExpressionNode, range?: [number, number]): TryCatchNode {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new TryCatchNode(tryBlock, catchBlock, finallyBlock, range, loc);\n\t}\n\tcreateThrowStatement(exception: ExpressionNode, range?: [number, number]): ThrowStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ThrowStatement(exception, range, loc);\n\t}\n\n\tcreateBlock(statements: ExpressionNode[], range?: [number, number]): BlockStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new BlockStatement(statements, range, loc);\n\t}\n\tcreateIfStatement(condition: ExpressionNode, thenStatement: ExpressionNode, elseStatement?: ExpressionNode, range?: [number, number]): IfStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new IfStatement(condition, thenStatement, elseStatement, range, loc);\n\t}\n\tcreateDoStatement(condition: ExpressionNode, body: ExpressionNode, range?: [number, number] | undefined): DoWhileNode {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new DoWhileNode(condition, body, range, loc);\n\t}\n\tcreateClassDeclaration(body: ClassBody, decorators: Decorator[], id: Identifier, superClass?: ExpressionNode, range?: [number, number]): ClassDeclaration {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ClassDeclaration(body, decorators, id, superClass, range, loc);\n\t}\n\tcreateFunctionDeclaration(formals: DeclarationExpression[], bodyBlock: BlockStatement, isAsync: boolean, isGenerator: boolean, name: Identifier, range?: [number, number]): FunctionDeclaration {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new FunctionDeclaration(formals, bodyBlock, isAsync, isGenerator, name, range, loc);\n\t}\n\tcreateFunctionExpression(formals: DeclarationExpression[], bodyBlock: BlockStatement, isAsync: boolean, isGenerator: boolean, range?: [number, number]): FunctionExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new FunctionExpression(formals, bodyBlock, isAsync, isGenerator, undefined, range, loc);\n\t}\n\tcreateWhileStatement(condition: ExpressionNode, body: ExpressionNode, range?: [number, number] | undefined): WhileNode {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new WhileNode(condition, body, range, loc);\n\t}\n\tcreateSwitchStatement(tag: ExpressionNode, cases: SwitchCase[], range?: [number, number] | undefined): SwitchStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new SwitchStatement(tag, cases, range, loc);\n\t}\n\tcreateCaseBlock(test: ExpressionNode, block: BlockStatement, range?: [number, number] | undefined): SwitchCase {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new SwitchCase(test, block, range, loc);\n\t}\n\tcreateDefaultClause(block: BlockStatement, range?: [number, number] | undefined): DefaultExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new DefaultExpression(block, range, loc);\n\t}\n\tcreateWithStatement(object: ExpressionNode, body: ExpressionNode, range?: [number, number]): WithStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new WithStatement(object, body, range, loc);\n\t}\n\tcreateForStatement(body: ExpressionNode, initializer: ExpressionNode, cond: ExpressionNode, next: ExpressionNode, range?: [number, number] | undefined): ForNode {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ForNode(body, initializer, cond, next, range, loc);\n\t}\n\tcreateForOfStatement(initializer: ForDeclaration, enumerable: ExpressionNode, body: ExpressionNode, range?: [number, number] | undefined): ForOfNode {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ForOfNode(initializer, enumerable, body, range, loc);\n\t}\n\tcreateForAwaitOfStatement(left: ForDeclaration, right: ExpressionNode, body: ExpressionNode, range?: [number, number] | undefined): ForAwaitOfNode {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ForAwaitOfNode(left, right, body, range, loc);\n\t}\n\tcreateForInStatement(initializer: ForDeclaration, enumerable: ExpressionNode, body: ExpressionNode, range?: [number, number]): ForInNode {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ForInNode(initializer, enumerable, body, range, loc);\n\t}\n\tcreateVariableDeclaration(id: DeclarationExpression, init?: ExpressionNode, range?: [number, number]): VariableDeclarator {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new VariableDeclarator(id, init, range, loc);\n\t}\n\tcreateVariableStatement(variables: VariableDeclarator[], kind: 'let' | 'var' | 'const', range?: [number, number]): VariableDeclarationNode {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new VariableDeclarationNode(variables, kind, range, loc);\n\t}\n\tcreateContinueStatement(label?: Identifier, range?: [number, number]): ContinueStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ContinueStatement(label, range, loc);\n\t}\n\tcreateBreakStatement(label?: Identifier, range?: [number, number]): BreakStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new BreakStatement(label, range, loc);\n\t}\n\tcreateReturnStatement(argument?: ExpressionNode, range?: [number, number]): ReturnStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ReturnStatement(argument, range, loc);\n\t}\n\tcreateLabeledStatement(expression: Identifier, result: ExpressionNode, range?: [number, number]): LabeledStatement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new LabeledStatement(expression, result, range, loc);\n\t}\n\tcreateAssignmentPattern(left: DeclarationExpression, right: ExpressionNode, range?: [number, number]): AssignmentPattern {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new AssignmentPattern(left, right, range, loc);\n\t}\n\tcreateSpreadElement(argument: ExpressionNode, range?: [number, number]): SpreadElement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new SpreadElement(argument, range, loc);\n\t}\n\tcreateCommaListExpression(expressions: ExpressionNode[], range?: [number, number] | undefined): SequenceExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new SequenceExpression(expressions, range, loc);\n\t}\n\tcreateTemplateExpression(quasis: string[], expressions: ExpressionNode[], range?: [number, number]): TemplateLiteral {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new TemplateLiteral(quasis, expressions, range, loc);\n\t}\n\tcreateTaggedTemplateExpression(tag: ExpressionNode, quasis: string[], expressions: ExpressionNode[], range?: [number, number]): TaggedTemplateExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new TaggedTemplateExpression(tag, quasis, expressions, range, loc);\n\t}\n\tcreateNewExpression(className: ExpressionNode, parameters?: ExpressionNode[], range?: [number, number]): NewExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new NewExpression(className, parameters, range, loc);\n\t}\n\tcreateObjectBindingPattern(properties: (Property | RestElement)[], range?: [number, number] | undefined): ObjectPattern {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ObjectPattern(properties, range, loc);\n\t}\n\tcreateObjectLiteralExpression(properties: Property[], range?: [number, number]): ObjectExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ObjectExpression(properties, range, loc);\n\t}\n\tcreateArrayBindingPattern(elements: (DeclarationExpression | null)[], range?: [number, number]): ArrayPattern {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ArrayPattern(elements, range, loc);\n\t}\n\tcreateArrayLiteralExpression(elements: (ExpressionNode | SpreadElement | null)[], range?: [number, number]): ArrayExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ArrayExpression(elements, range, loc);\n\t}\n\tcreateAssignment(operator: AssignmentOperator, left: ExpressionNode, right: ExpressionNode, range?: [number, number]): AssignmentExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new AssignmentExpression(operator, left, right, range, loc);\n\t}\n\tcreateRestElement(argument: DeclarationExpression, range?: [number, number]): RestElement {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new RestElement(argument, range, loc);\n\t}\n\tcreateArrowFunction(params: DeclarationExpression[], body: ExpressionNode | ExpressionNode[], expression: boolean, async: boolean, range?: [number, number]): ArrowFunctionExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ArrowFunctionExpression(params, body, expression, async, range, loc);\n\t}\n\tcreatePropertyDeclaration(key: ExpressionNode, value: DeclarationExpression | ExpressionNode, kind: 'init' | 'get' | 'set', method: boolean, shorthand: boolean, computed: boolean, range?: [number, number]): Property {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new Property(key, value, kind, method, shorthand, computed, range, loc);\n\t}\n\tcreateIdentifier(name: string, range?: [number, number]): Identifier {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new Identifier(name, range, loc);\n\t}\n\tcreatePropertyAssignment(object: ExpressionNode, property: ExpressionNode, computed: boolean, optional?: boolean, range?: [number, number]): MemberExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new MemberExpression(object, property, computed, optional, range, loc);\n\t}\n\tcreatePipelineExpression(left: ExpressionNode, right: ExpressionNode, params?: (ExpressionNode | '?' | '...?')[], range?: [number, number]): PipelineExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new PipelineExpression(left, right, params, range, loc);\n\t}\n\tcreateCallExpression(callee: ExpressionNode, params: ExpressionNode[], optional?: boolean, range?: [number, number]): CallExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new CallExpression(callee, params, optional, range, loc);\n\t}\n\tcreateBindExpression(object: ExpressionNode, property: ExpressionNode, computed: boolean, optional?: boolean, range?: [number, number]): BindExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new BindExpression(object, property, computed, optional, range, loc);\n\t}\n\tcreateChainExpression(expression: ExpressionNode, range?: [number, number]): ChainExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ChainExpression(expression, range, loc);\n\t}\n\tcreateLogicalExpression(operator: LogicalOperator, left: ExpressionNode, right: ExpressionNode, range?: [number, number],): LogicalExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new LogicalExpression(operator, left, right, range, loc);\n\t}\n\tcreateConditionalExpression(test: ExpressionNode, alternate: ExpressionNode, consequent: ExpressionNode, range?: [number, number]): ConditionalExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ConditionalExpression(test, alternate, consequent, range, loc);\n\t}\n\tcreateYieldExpression(delegate: boolean, argument?: ExpressionNode, range?: [number, number]): YieldExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new YieldExpression(delegate, argument, range, loc);\n\t}\n\tcreateMetaProperty(meta: Identifier, property: Identifier, range?: [number, number]): MetaProperty {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new MetaProperty(meta, property, range, loc);\n\t}\n\tcreateProgram(sourceType: ProgramSourceType, body: ExpressionNode[], range?: [number, number]): Program {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new Program(sourceType, body, range, loc);\n\t}\n\tcreateClassExpression(body: ClassBody, decorators: Decorator[], id?: Identifier, superClass?: ExpressionNode, range?: [number, number]): ClassExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ClassExpression(body, decorators, id, superClass, range, loc);\n\t}\n\tcreateClassStaticBlockDeclaration(body: ExpressionNode[], range?: [number, number]): StaticBlock {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new StaticBlock(body, range, loc);\n\t}\n\tcreateMethodSignature(kind: MethodDefinitionKind, key: ExpressionNode | PrivateIdentifier, value: FunctionExpression, decorators: Decorator[], computed: boolean, isStatic: boolean, range?: [number, number]): MethodDefinition {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new MethodDefinition(kind, key, value, decorators, computed, isStatic, range, loc);\n\t}\n\tcreatePropertySignature(key: ExpressionNode | PrivateIdentifier, decorators: Decorator[], computed: boolean, isStatic: boolean, value?: ExpressionNode, range?: [number, number]): PropertyDefinition {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new PropertyDefinition(key, decorators, computed, isStatic, value, range, loc);\n\t}\n\tcreateClassBody(body: (MethodDefinition | PropertyDefinition | AccessorProperty | StaticBlock)[], range?: [number, number]): ClassBody {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ClassBody(body, range, loc);\n\t}\n\tcreateNamespaceExportDeclaration(specifiers: ExportSpecifier[], declaration?: DeclarationExpression, source?: Literal<string>, assertions?: ImportAttribute[], range?: [number, number]): ExportNamedDeclaration {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ExportNamedDeclaration(specifiers, declaration, source, assertions, range, loc);\n\t}\n\tcreateExportSpecifier(local: Identifier, exported: Identifier, range?: [number, number]): ExportSpecifier {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ExportSpecifier(local, exported, range, loc);\n\t}\n\tcreateImportSpecifier(local: Identifier, imported: Identifier, range?: [number, number]): ImportSpecifier {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ImportSpecifier(local, imported, range, loc);\n\t}\n\tcreateImportDeclaration(source: Literal<string>, specifiers?: (ImportSpecifier | ImportDefaultSpecifier | ImportNamespaceSpecifier)[], assertions?: ImportAttribute[], range?: [number, number]): ImportDeclaration {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ImportDeclaration(source, specifiers, assertions, range, loc);\n\t}\n\tcreateImportNamespaceSpecifier(local: Identifier, range?: [number, number]): ImportNamespaceSpecifier {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ImportNamespaceSpecifier(local, range, loc);\n\t}\n\tcreateImportDefaultSpecifier(local: Identifier, range?: [number, number]): ImportDefaultSpecifier {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ImportDefaultSpecifier(local, range, loc);\n\t}\n\tcreateImportExpression(source: Literal<string>, attributes?: ExpressionNode, range?: [number, number]): ImportExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ImportExpression(source, attributes, range, loc);\n\t}\n\tcreateAssertEntry(key: Identifier | Literal<string>, value: Literal<string>, range?: [number, number]): ImportAttribute {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ImportAttribute(key, value, range, loc);\n\t}\n\tcreateExportDefault(declaration: FunctionDeclaration | ClassDeclaration | ExpressionNode, range?: [number, number],): ExportDefaultDeclaration {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ExportDefaultDeclaration(declaration, range, loc);\n\t}\n\tcreateExportAllDeclaration(source: Literal<string>, exported?: Identifier, assertions?: ImportAttribute[], range?: [number, number]): ExportAllDeclaration {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new ExportAllDeclaration(source, exported, assertions, range, loc);\n\t}\n\tcreateInfixExpression(op: AssignmentOperator | LogicalOperator | BinaryOperator, left: ExpressionNode, right: ExpressionNode, range?: [number, number]): AssignmentExpression | LogicalExpression | BinaryExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\tswitch (op) {\n\t\t\tcase '=':\n\t\t\tcase '+=':\n\t\t\tcase '-=':\n\t\t\tcase '**=':\n\t\t\tcase '/=':\n\t\t\tcase '%=':\n\t\t\tcase '<<=':\n\t\t\tcase '>>=':\n\t\t\tcase '>>>=':\n\t\t\tcase '&=':\n\t\t\tcase '^=':\n\t\t\tcase '|=':\n\t\t\tcase '&&=':\n\t\t\tcase '||=':\n\t\t\tcase '??=':\n\t\t\t\treturn new AssignmentExpression(op, left, right, range, loc);\n\t\t\tcase '&&':\n\t\t\tcase '||':\n\t\t\tcase '??':\n\t\t\t\treturn new LogicalExpression(op, left, right, range, loc);\n\t\t\tcase '**':\n\t\t\tcase '*':\n\t\t\tcase '/':\n\t\t\tcase '%':\n\t\t\tcase '+':\n\t\t\tcase '-':\n\t\t\tcase '<':\n\t\t\tcase '<=':\n\t\t\tcase '>':\n\t\t\tcase '>=':\n\t\t\tcase 'in':\n\t\t\tcase 'instanceof':\n\t\t\tcase '==':\n\t\t\tcase '!=':\n\t\t\tcase '===':\n\t\t\tcase '!==':\n\t\t\tcase '<<':\n\t\t\tcase '>>':\n\t\t\tcase '>>>':\n\t\t\tcase '&':\n\t\t\tcase '^':\n\t\t\tcase '|':\n\t\t\tcase '>?':\n\t\t\tcase '<?':\n\t\t\tcase '<=>':\n\t\t\t\treturn new BinaryExpression(op, left, right, range, loc);\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`Not Supported Operator: ${op}`);\n\t\t}\n\t}\n\tcreateUnaryExpression(operator: UpdateOperator | UnaryOperator | 'await', expression: ExpressionNode, range?: [number, number]): UpdateExpression | UnaryExpression | AwaitExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\tswitch (operator) {\n\t\t\tcase '++':\n\t\t\tcase '--':\n\t\t\t\treturn new UpdateExpression(operator, expression, true, range, loc);\n\t\t\tcase '+':\n\t\t\tcase '-':\n\t\t\tcase '!':\n\t\t\tcase '~':\n\t\t\tcase 'typeof':\n\t\t\tcase 'void':\n\t\t\tcase 'delete':\n\t\t\t\treturn new UnaryExpression(operator, expression, range, loc);\n\t\t\tcase 'await':\n\t\t\t\treturn new AwaitExpression(expression, range, loc);\n\t\t\tdefault:\n\t\t\t\tthrow new Error(`${operator} is not prefix operator`);\n\t\t}\n\t}\n\tcreateUpdateExpression(operator: UpdateOperator, argument: ExpressionNode, prefix: boolean, range?: [number, number]): UpdateExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new UpdateExpression(operator, argument, prefix, range, loc);\n\t}\n\tcreateAwaitExpression(argument: ExpressionNode, range?: [number, number]): AwaitExpression {\n\t\tconst loc = this.rangeFactory?.createSourcePosition(range);\n\t\treturn new AwaitExpression(argument, range, loc);\n\t}\n\tisIdentifier(node?: ExpressionNode): node is Identifier {\n\t\treturn node instanceof Identifier || node?.type === 'Identifier';\n\t}\n\tisObjectExpression(node?: ExpressionNode): node is ObjectExpression {\n\t\treturn node instanceof ObjectExpression || node?.type === 'ObjectExpression';\n\t}\n\tisArrayExpression(node?: ExpressionNode): node is ArrayExpression {\n\t\treturn node instanceof ArrayExpression || node?.type === 'ArrayExpression';\n\t}\n\tisObjectPattern(node?: ExpressionNode): node is ObjectPattern {\n\t\treturn node instanceof ObjectPattern || node?.type === 'ObjectPattern';\n\t}\n\tisArrayPattern(node?: ExpressionNode): node is ArrayPattern {\n\t\treturn node instanceof ArrayPattern || node?.type === 'ArrayPattern';\n\t}\n\tisAssignmentPattern(node?: ExpressionNode): node is AssignmentPattern {\n\t\treturn node instanceof AssignmentPattern || node?.type === 'AssignmentPattern';\n\t}\n\tisPattern(node?: ExpressionNode): boolean {\n\t\treturn this.isObjectPattern(node) || this.isArrayPattern(node) || this.isAssignmentPattern(node);\n\t}\n\tcanBePattern(node?: ExpressionNode): node is (ObjectExpression | ArrayExpression) {\n\t\treturn this.isObjectExpression(node) || this.isArrayExpression(node);\n\t}\n\tisProperty(node?: ExpressionNode): node is Property {\n\t\treturn node instanceof Property || node?.type === 'Property';\n\t}\n\tisMemberExpression(node?: ExpressionNode): node is MemberExpression {\n\t\treturn node instanceof MemberExpression || node?.type === 'MemberExpression';\n\t}\n\tisPropertyOrMemberExpression(node?: ExpressionNode): node is (Property | MemberExpression) {\n\t\treturn this.isProperty(node) || this.isMemberExpression(node);\n\t}\n\tisEmptyStatement(node: ExpressionNode): node is EmptyStatement {\n\t\treturn node instanceof EmptyStatement || node?.type === 'EmptyStatement';\n\t}\n\tisSequenceExpression(node: ExpressionNode): node is SequenceExpression {\n\t\treturn node instanceof SequenceExpression || node?.type === 'SequenceExpression';\n\t}\n\tisSuper(node: ExpressionNode): node is Super {\n\t\treturn node instanceof Super || node?.type === 'Super';\n\t}\n\tisAssignmentExpression(node: ExpressionNode): node is AssignmentExpression {\n\t\treturn node instanceof AssignmentExpression || node?.type === 'AssignmentExpression';\n\t}\n\tisGroupingExpression(node: ExpressionNode): node is GroupingExpression {\n\t\treturn node instanceof GroupingExpression || node?.type === 'GroupingExpression';\n\t}\n\tisSpreadElement(node: ExpressionNode): node is SpreadElement {\n\t\treturn node instanceof SpreadElement || node?.type === 'SpreadElement';\n\t}\n\n}\n"]}